我正在尝试为 pandoc 编写 Makefile。我希望能够键入make filename.ext
,并且 Makefile 将自动从 编译filename.txt
为filename.ext
. 文件名可以是任何名为 .txt 的文件。这部分很容易。例如,我有一组规则,例如:
%.pdf: %.txt
pandoc -s --smart -f markdown -o $@ $<
%.html: %.txt
pandoc -s --smart --bibliography $(bib) -f markdown -t html --standalone -o $@ $<
%.docx: %.txt
pandoc -s --smart --bibliography references.bib -f markdown -t docx -o $@ $<
%.tex: %.txt
pandoc -s --smart --bibliography references.bib -o $@ $<
但是,我还想从名为filename.bib
. 因此,如果我键入make fudge.pdf
,pandoc 会将 fudge.txt 转换为 fudge.pdf,同时合并来自 fudge.bib 的 bibtex 引用。我该怎么做呢?命令行类似于
pandoc -s --smart --bibliography filename.bib -f markdown -o $@ $<
...但我不知道如何从 fudge.txt 获取 fudge.bib 而不做这样的事情:
pandoc -s --smart --bibliography $(subst .txt,.bib,$<) -f markdown -o $@ $<
这将起作用,但是a)我想首先对文件 *.bib 进行一些预处理(即生成它并添加缺少的引用)并且b)在每一行都需要该宏。还有什么更优雅的吗?