Pandoc:在自定义乳胶前导码中使用变量

时间:2015-08-01 17:35:45

标签: format pandoc

我的文件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

你可以看到我想做的事。我正在尝试获取文本"这是在标题"要显示在标题中,但它没有,它只显示字符串" headertext" (同样的页脚问题)。

我做错了什么?

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

1 个答案:

答案 0 :(得分:1)

您可以轻松修改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