如何阻止Pandoc转义下划线以避免超链接失效?
解决Pandoc转义YAML中URL下划线导致链接失效的问题
我之前也踩过Pandoc处理YAML里URL下划线的坑!别慌,这是因为Pandoc默认的Markdown扩展会把下划线当成强调标记来解析,才会搞乱你的URL。下面给你几个亲测有效的解决办法:
方法1:禁用intraword_underscores扩展(最推荐)
Pandoc默认启用了intraword_underscores,这个扩展会把单词(包括URL)中间的下划线识别为强调的起始/结束标记,导致下划线被转义。直接禁用它就行:
在调用Pandoc的命令里,把输入格式指定为markdown-intraword_underscores,比如:
pandoc -f markdown-intraword_underscores -t html your_cv.md -o cv.html
这样URL里的下划线就会被原封不动保留,不会被转义了。
方法2:给YAML中的URL套反引号标记为原始文本
如果不想修改全局的Markdown扩展,可以在YAML字段里把URL用反引号包裹,告诉Pandoc这是原始内容,不要解析:
--- url: `http://your_domain.com/path_with_underscores` ---
然后调用Pandoc时记得启用raw_attribute扩展(多数版本默认已启用),命令可以写成:
pandoc -f markdown+raw_attribute -t html your_cv.md -o cv.html
这样Pandoc会把反引号里的内容直接输出,不会处理下划线。
方法3:在模板里手动处理URL(适合自定义模板场景)
如果你用了自定义HTML模板渲染YAML变量,可以在模板里输出URL时,用Pandoc的原始输出语法。比如把模板里的:
<a href="$url$">My Profile</a>
改成:
<a href="$url${=html}">My Profile</a>
{=html}会告诉Pandoc把这个变量的内容当成原始HTML输出,不做任何转义处理。
为什么你之前试的扩展没用?
tex_math_dollars和tex_subscript都是用来处理LaTeX数学公式和下标语法的,和Markdown里的下划线强调解析完全不相关,所以自然解决不了这个问题啦~
内容的提问来源于stack exchange,提问作者maxpe
相关产品推荐
相关产品推荐

