解析 Markdown 时保留 HTML 个实体
Retain HTML Entities When Parsing Markdown
我用尽了我的研究并尝试了很多方法都没有效果,我希望我忽略了一些简单的解决方案:
我正在使用 Jekyll 站点为 e-mail 生成 HTML 文件,需要使用 HTML 实体来表示特殊字符(例如 em-dashes 和智能引号)为了避免不正确的符号解释(由于复杂性,content-type/charset 有时会从 e-mail 头部删除。我不会在这里介绍。)
我的问题是,当输出为 HTML 时,解析我的 Markdown 似乎会将我编写的所有 HTML 实体转换为特殊字符,并且我无法使用常用方法进行转义。当我在 markdown 中键入 ’
以生成右弯引号时,它会在我的 HTML 中转换为 ’
符号(而不是在我的 HTML 中保留 ’
).如果我尝试使用 back-ticks 转义它,它不会在 HTML 中转换 &rsquo
而是将它放置在 <code>
标签内,这导致它呈现为 ’
而不是 ’
。有没有办法为特殊字符保留 typed-out HTML 实体,或者——甚至更好——在解析时将特殊字符转换为 HTML 实体(在 HTML 中)?
我在 Jekyll 中使用 Kramdown markdown 解析器。我什至将 Kramdown 中的 entity_output
选项指定为 : as_input
但没有成功。非常感谢任何帮助!
如文档所述:
--entity-output ARG
Defines how entities are output
The possible values are :as_input (entities are output in the same
form as found in the input), :numeric (entities are output in numeric
form), :symbolic (entities are output in symbolic form if possible) or
:as_char (entities are output as characters if possible, only available
on Ruby 1.9).
Default: :as_char
Used by: HTML converter, kramdown converter
所以让我们试试这些选项:
$ kramdown --version
1.11.1
$ kramdown
‘foo’
<p>‘foo’</p>
$ kramdown --entity-output=as_input
‘foo’
<p>‘foo’</p>
$ kramdown --entity-output=symbolic
‘foo’
<p>‘foo’</p>
$ kramdown --entity-output=numeric
‘foo’
<p>‘foo’</p>
$ kramdown --entity-output=as_char
‘foo’
<p>‘foo’</p>
$ ruby --version
ruby 1.9.3p484 (2013-11-22 revision 43786) [x86_64-linux]
请注意,我有 Kramdown 1.11 版和 Ruby 1.9 版。如果您有早期版本,那么事情可能无法正常工作。
在您的 _config.yml 中,您可以将 kramdown 配置为保留 html 实体,因为它们是在您的代码中编写的:
kramdown:
entity_output: :as_input
我用尽了我的研究并尝试了很多方法都没有效果,我希望我忽略了一些简单的解决方案:
我正在使用 Jekyll 站点为 e-mail 生成 HTML 文件,需要使用 HTML 实体来表示特殊字符(例如 em-dashes 和智能引号)为了避免不正确的符号解释(由于复杂性,content-type/charset 有时会从 e-mail 头部删除。我不会在这里介绍。)
我的问题是,当输出为 HTML 时,解析我的 Markdown 似乎会将我编写的所有 HTML 实体转换为特殊字符,并且我无法使用常用方法进行转义。当我在 markdown 中键入 ’
以生成右弯引号时,它会在我的 HTML 中转换为 ’
符号(而不是在我的 HTML 中保留 ’
).如果我尝试使用 back-ticks 转义它,它不会在 HTML 中转换 &rsquo
而是将它放置在 <code>
标签内,这导致它呈现为 ’
而不是 ’
。有没有办法为特殊字符保留 typed-out HTML 实体,或者——甚至更好——在解析时将特殊字符转换为 HTML 实体(在 HTML 中)?
我在 Jekyll 中使用 Kramdown markdown 解析器。我什至将 Kramdown 中的 entity_output
选项指定为 : as_input
但没有成功。非常感谢任何帮助!
如文档所述:
--entity-output ARG Defines how entities are output The possible values are :as_input (entities are output in the same form as found in the input), :numeric (entities are output in numeric form), :symbolic (entities are output in symbolic form if possible) or :as_char (entities are output as characters if possible, only available on Ruby 1.9). Default: :as_char Used by: HTML converter, kramdown converter
所以让我们试试这些选项:
$ kramdown --version
1.11.1
$ kramdown
‘foo’
<p>‘foo’</p>
$ kramdown --entity-output=as_input
‘foo’
<p>‘foo’</p>
$ kramdown --entity-output=symbolic
‘foo’
<p>‘foo’</p>
$ kramdown --entity-output=numeric
‘foo’
<p>‘foo’</p>
$ kramdown --entity-output=as_char
‘foo’
<p>‘foo’</p>
$ ruby --version
ruby 1.9.3p484 (2013-11-22 revision 43786) [x86_64-linux]
请注意,我有 Kramdown 1.11 版和 Ruby 1.9 版。如果您有早期版本,那么事情可能无法正常工作。
在您的 _config.yml 中,您可以将 kramdown 配置为保留 html 实体,因为它们是在您的代码中编写的:
kramdown:
entity_output: :as_input