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

kda*_*yob 10 pandoc

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

 % echo "'" | pandoc -f html -t markdown
 \'
Run Code Online (Sandbox Code Playgroud)

我希望它不带斜杠输出,因为它使带有收缩的文本更难阅读。

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

% echo "'" | pandoc -f html -t markdown-all_symbols_escapable
\'
Run Code Online (Sandbox Code Playgroud)

然而,对于 markdown_strict 来说,这不是问题:

% echo "'" | pandoc -f html -t markdown_strict
'
Run Code Online (Sandbox Code Playgroud)

有什么建议?我想使用调整了选项的默认 Pandoc 标记,或者如果这不是其他人所期望的,则将其报告为错误。

tar*_*leb 8

转义与 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>
Run Code Online (Sandbox Code Playgroud)

可以通过转义字符来禁用这种对引号的智能处理

% echo "let\'s" | pandoc -f markdown -t html --ascii
<p>let's</p>
Run Code Online (Sandbox Code Playgroud)

或者通过禁用降价的智能扩展:

% echo "let's" | pandoc -f markdown-smart -t html --ascii
<p>let's</p>
Run Code Online (Sandbox Code Playgroud)

因此,每当 pandoc 看到'HTML 中的一个字符时,它都会假设该字符是有意通过更正确的单引号选择的,从而确保在从 Markdown 回读时不会以“智能”方式处理它。

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

% echo "'" | pandoc -f html -t markdown-smart
'
Run Code Online (Sandbox Code Playgroud)

智能使用时,分机已被禁用markdown_strict,这就是为什么你得到了在这种情况下,期望的行为。