Pandoc可以在导入的Markdown文件中使用Metadata.yaml中的变量吗?

时间:2016-07-23 07:26:58

标签: pdf latex markdown pandoc

我在将变量放入模板时遇到了很多麻烦。我有一个LaTeX模板,我想使用Markdown文件作为内容。最终结果应该是PDF。

metadata.yaml:

---
varnameone:  'large heading'
varnametwo:  'baz'
varnamethree:
- threeone: textone
- threetwo: texttwo
---

template.tex:

\documentclass[12t, A4]{extarticle}
\usepackage{Styles.sty} 

\begin{document}

\import{chapters/}{chapter1.md} % MD-file probably not possible. So how?
\import{chapters/}{chapter2.md}
\import{chapters/}{chapter3.md}

\end{document}

chapter1.md:

# This is a $varnameone$

Lorem ipsum foo bar.

## Subheading
Lorem ipsum foo bar with a $varnametwo$ and more.

\if[varnametwo == 'baz']
Lorem ipsum foo bar with a $varnamethree.threetwo$ and more.
\endif 

Jade-style indentation would be even simpler:
if varnametwo == 'baz'
    Lorem ipsum foo bar with a $varnamethree.threetwo$ and more.

这就是事情:我更喜欢内容的Markdown文件,因为它们是最容易编辑的(不是那么技术人员)。我知道Pandoc了解它们,但我如何在其中获取这些变量? 这甚至可能吗?

我最后甚至想让服务器批量生成具有不同元数据文件的文件,或者,如果可能的话,使用JSON数组而不是yaml文件。有谁知道这是否可能?

1 个答案:

答案 0 :(得分:3)

Pandoc变量只能用于pandoc templates,而不能用于文档本身。为此,您应该查看preprocessor like gpppandoc filter like this one或其他脚本/模板解决方案。

同样,pandoc模板有一个放置文档文本的$body$变量。您使用模板呈现文档,而不是相反(当您尝试使用\import{chapters/}{chapter1.md}时,这是一个LaTeX命令,因此无法导入markdown)。但是在Mac / Linux上,您可以运行:pandoc -o foo.pdf chapter*.md来连接所有markdown文件,然后再将它们传递给pandoc。