从HTML转换为Markdown时,阻止Pandoc转义单引号

时间:2018-12-08 00:21:14

标签: pandoc

如果我将单引号'从HTML转换为Markdown,则会自动转义:

 % echo "'" | pandoc -f html -t markdown
 \'

我希望其输出时不带斜杠,因为这样会使带有收缩的文本难以阅读。

我认为这可能是由于“ all_symbols_escapable”选项引起的,但是即使我将其关闭,它仍然会发生:

% echo "'" | pandoc -f html -t markdown-all_symbols_escapable
\'

但这对markdown_strict来说不是问题,

% echo "'" | pandoc -f html -t markdown_strict
'

有什么建议吗?我想使用默认的Pandoc markdow,并对其选项进行了调整,如果其他人不希望这样做,则将其报告为错误。

1 个答案:

答案 0 :(得分:2)

转义与pandoc的smart扩展名有关。该扩展名在适当时将单引号转换为印刷正确的开/闭单引号或撇号。当查看仅使用ASCII字符的HTML输出时,这一点变得最清楚:

% echo "'hello'" | pandoc -f markdown -t html --ascii
<p>&lsquo;hello&rsquo;</p>

% echo "let's" | pandoc -f markdown -t html --ascii
<p>let&rsquo;s</p>

可以通过转义字符逐个禁用引号的智能处理方式

% echo "let\'s" | pandoc -f markdown -t html --ascii
<p>let's</p>

或通过禁用智能扩展程序进行降价:

% echo "let's" | pandoc -f markdown-smart -t html --ascii
<p>let's</p>

因此,每当pandoc在HTML中看到一个'字符时,它都假定该字符是故意在更正确的单引号上选择的,因此可以确保在读取时不会以“智能”方式对其进行处理。从Markdown回来。

因此,解决方案是告诉pandoc它应该忽略这些细节,并将Markdown编写为好像不会受到引号的智能处理:

% echo "'" | pandoc -f html -t markdown-smart
'

使用markdown_strict时, smart 扩展名已被禁用,这就是您在这种情况下获得所需行为的原因。