我正在尝试为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)在每一行都需要该宏。有什么更优雅的吗?