Pandoc:在自定义乳胶序言中使用变量

Pandoc: use variables in custom latex preamble

我有文件 test.md,其中包含:

---
footertext: some text for the footer
headertext: this is in the header
---

here is the text body.

文件 format.tex 包含:

\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhead[L]{$headertext$}
\fancyfoot[L]{$footertext$}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
\setlength{\headsep}{0.25in}

我运行命令:

pandoc -H format.tex test.md -o test.pdf

你可以看到我想做什么。我试图让文本 "this is in the header" 显示在页眉中,但它没有,它只显示字符串 "headertext"(页脚也有同样的问题)。

我做错了什么?

编辑:好的,我想我明白了。显然,变量仅在模板中可用,在包含的开始或结束代码块(如我正在使用的)或 md 本身中不可用。那么新的问题:这是为什么?它不直观、不方便且记录不完整。

您可以轻松修改pandoc模板。使用

访问默认模板
pandoc -D latex > new_template.latex

在序言中粘贴您 format.tex 的内容。如果要将此模板用于多个文档,则应在使用前使用 $if$ 检查变量是否存在:

\usepackage{fancyhdr}
\pagestyle{fancy}
$if(headertext)$\fancyhead[L]{$headertext$}$endif$
$if(footertext)$\fancyfoot[L]{$footertext$}$endif$
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
\setlength{\headsep}{0.25in}

然后编译:

pandoc test.md -o test.pdf --template=new_template.latex