【问题标题】:Retain HTML Entities When Parsing Markdown解析 Markdown 时保留 HTML 实体
【发布时间】:2016-05-20 20:21:28
【问题描述】:

我已经用尽了我的研究并尝试了很多方法都没有效果,我希望我忽略了某种简单的解决方案:

我正在使用 Jekyll 站点为电子邮件生成 HTML 文件,并且需要将 HTML 实体用于特殊字符(例如 em-dashes 和智能引号)以避免不正确的符号解释(内容类型/字符集由于复杂性,有时会从电子邮件头中删除。)

我的问题是,当输出为 HTML 时,解析我的 Markdown 似乎会将我所有编写的 HTML 实体转换为特殊字符,并且我无法使用常用方法进行转义。当我在 Markdown 中输入 ’ 以生成右花引号时,它会在我的 HTML 中转换为 符号(而不是在我的 HTML 中保留 ’)。如果我尝试用反引号转义它,它不会在 HTML 中转换 &rsquo,而是将它放在 <code> 标记中,这会导致它呈现为 ’ 而不是 。有没有办法为特殊字符保留输入的 HTML 实体,或者在解析时将特殊字符转换为 HTML 实体(在 HTML 中)?

我正在使用带有 Jekyll 的 Kramdown 降价解析器。我什至将 Kramdown 中的entity_output 选项指定为: as_input,但没有成功。非常感谢任何帮助!

【问题讨论】:

  • 可能是htmlentities.rubyforge.org 之类的东西? (可能需要一些细微的调整,因为我在那里或在 github 页面上看到的所有示例都转换了 - 但我想这可能是一个起点。)

标签: markdown jekyll kramdown


【解决方案1】:

在您的 _config.yml 中,您可以配置 kramdown 以保留 html 实体,因为它们是在您的代码中编写的:

kramdown:
  entity_output: :as_input

documentation

【讨论】:

  • 谢谢,我认为我的部分问题可能是第二个丢失的冒号。干杯!
【解决方案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
&lsquo;foo&rsquo;
<p>&lsquo;foo&rsquo;</p>
$ kramdown --entity-output=symbolic
&lsquo;foo&rsquo;
<p>&lsquo;foo&rsquo;</p>
$ kramdown --entity-output=numeric
&lsquo;foo&rsquo;
<p>&#8216;foo&#8217;</p>
$ kramdown --entity-output=as_char
&lsquo;foo&rsquo;
<p>‘foo’</p>
$ ruby --version
ruby 1.9.3p484 (2013-11-22 revision 43786) [x86_64-linux]

请注意,我有 Kramdown 1.11 版和 Ruby 1.9 版。如果您有早期版本,则可能无法正常工作。

【讨论】:

  • 谢谢,今天再次尝试实体输出的 kramdown 选项似乎按照文档中的说明工作。可能是错字,非常感谢您确认这是正确的方法!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-11
  • 2017-05-27
  • 1970-01-01
  • 2021-07-08
  • 2021-01-24
  • 2015-08-16
相关资源
最近更新 更多