问题
I have exhausted my research and tried many methods to no effect and am hoping I'm overlooking some kind of simple solution:
I am using a Jekyll site to produce HTML files for e-mail and need to use HTML entities for special characters (such as em-dashes and smart quotes) in order to avoid improper symbol interpretation (the content-type/charset is at times stripped out of the e-mail head due to complexities I won't get into here.)
My problem is that parsing my Markdown appears to convert all of my written HTML entities into the special characters when output as HTML, and I am unable to escape with common methods. When I type ’
into markdown to produce a right curly quote it is converted to the ’
symbol within my HTML (instead of retaining ’
in my HTML). If I try to escape it with back-ticks it will not convert &rsquo
in the HTML but it places it within <code>
tags which cause it to render as ’
and not ’
. Is there a way to retain typed-out HTML entities for special characters or -- even better -- convert special characters into to HTML entities (in the HTML) when parsed?
I am using the Kramdown markdown parser with Jekyll. I have even gone as far as specifying the entity_output
option in Kramdown to : as_input
without success. Any help is much appreciated!
回答1:
As the docs state:
--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
So lets try those options:
$ 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]
Notice that I have Kramdown version 1.11 and Ruby version 1.9. if you have earlier versions, then things may not work properly.
回答2:
In your _config.yml you can configure kramdown to leave html entities as they are written in your code with :
kramdown:
entity_output: :as_input
See documentation.
来源:https://stackoverflow.com/questions/37355233/retain-html-entities-when-parsing-markdown