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

Stopping Pandoc from escaping single quotes when converting from HTML to Markdown

如果我将单引号 ' 从 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 并调整选项,或者如果它不是其他人所期望的,则将其报告为错误。

转义与 pandoc 的 smart 扩展有关。此扩展在适当时将单引号转换为印刷正确的 opening/closing 单引号或撇号。当查看仅使用 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 中看到一个 ' 字符时,它就会假设这个字符是有意选择的,而不是更正确的单引号,从而确保它不会被处理"smart" 从 Markdown 回读时的方式。

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

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

smart 扩展在使用 markdown_strict 时已被禁用,这就是为什么您在那种情况下得到了期望的行为。