我已经用尽了我的研究,尝试了许多方法没有效果,我希望我忽略了某种简单的解决方案:
我正在使用Jekyll网站为电子邮件生成HTML文件,并且需要将HTML实体用于特殊字符(例如em-dashes和智能引号),以避免不正确的符号解释(内容类型/字符集)由于我不会进入这里的复杂性,有时会从电子邮件头中删除。)
我的问题是解析我的Markdown似乎在输出为HTML时将我所有写入的HTML实体转换为特殊字符,并且我无法使用常用方法进行转义。当我在markdown中键入’
以生成正确的卷曲引号时,它会转换为HTML中的’
符号(而不是在我的HTML中保留’
)。如果我尝试使用反向标记来转义它,它将不会在HTML中转换&rsquo
,但会将其放在<code>
标记内,这会导致它呈现为’
而不是{{1} }。有没有办法为特殊字符保留输出的HTML实体,或者 - 甚至更好 - 在解析时将特殊字符转换为HTML实体(在HTML中)?
我正在使用Jramyll的Kramdown markdown解析器。我甚至将Kramdown中的’
选项指定为entity_output
但没有成功。非常感谢任何帮助!
答案 0 :(得分:2)
正如文档所述:
--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。如果你有早期版本,那么事情可能无法正常工作。
答案 1 :(得分:2)
在你的_config.yml中,你可以配置kramdown来保留html实体,因为它们是用你的代码写的:
kramdown:
entity_output: :as_input
请参阅documentation。