Pandoc:如何才能不转义 YAML 元数据中的反斜杠?

d12*_*2bb 5 latex yaml pandoc

Pandoc 可以在 Markdown 中使用 YAML 标头,或者对所有源类型使用默认值或元数据文件,其中可以存储要在模板中使用的变量。是否可以在这些元数据变量中不转义反斜杠和 LaTeX 命令?

例如,我的 YAML 标头中有这一行:phone: +49\,123\,456789。转换时,Pandoc 会转义反斜杠,因此它变成+49\textbackslash,123\textbackslash,456789. 这是不需要的,因为我希望 LaTeX 解释\,并将其转换为薄空间。

我还尝试将其包装在''或作为块 with |,因此 YAML 本身不会转义任何内容,但这似乎是 Pandoc 本身进行转换,而不是 YAML 解释器。

最小可重复示例

src.md:

Some text
Run Code Online (Sandbox Code Playgroud)

默认值.yaml:

Some text
Run Code Online (Sandbox Code Playgroud)

tpl.tex:

template: ./tpl.tex
metadata:
  phone: +49\,123\,456789
Run Code Online (Sandbox Code Playgroud)

输出pandoc --defaults defaults.yaml src.md --to latex

Phone number: $phone$

Markdown body:
$body$
Run Code Online (Sandbox Code Playgroud)

应该:

Phone number: +49\textbackslash,123\textbackslash,456789

Markdown body:
Some text
Run Code Online (Sandbox Code Playgroud)

tar*_*leb 3

元数据总是会被转义;最简单的方法是做你想做的事,定义一个变量而不是元数据。

---
variables:
  phone: +49\,123\,456789
---
Run Code Online (Sandbox Code Playgroud)

与元数据值相反,变量被逐字插入到模板中。