Pandoc:我怎么能不转义 YAML 元数据中的反斜杠?

Pandoc: How can I not escape backslashes in YAML metadata?

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

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

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

最小可重现示例

src.md:

Some text

defaults.yaml:

template: ./tpl.tex
metadata:
  phone: +49\,123\,456789

tpl.tex:

Phone number: $phone$

Markdown body:
$body$

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

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

Markdown body:
Some text

应该是:

Phone number: +49\,123\,456789

Markdown body:
Some text

您可以使用这个 unicode 字符:https://www.compart.com/en/unicode/U+202F

然后

template: ./tpl.tex
metadata:
  phone: +49 123 456789

通过 pandoc --defaults defaults.yaml src.md --to latex -o test.tex 翻译成以下 .tex 文件:

Phone number: +49\,123\,456789

Markdown body:
Some text

元数据将始终被转义;最简单的方法是定义变量而不是元数据。

---
variables:
  phone: +49\,123\,456789
---

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