5

我正在尝试为 pandoc 编写 Makefile。我希望能够键入make filename.ext,并且 Makefile 将自动从 编译filename.txtfilename.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)在每一行都需要该宏。还有什么更优雅的吗?

4

1 回答 1

7
pandoc -s --smart --bibliography $*.bib -f markdown -o $@ $<
于 2012-09-10T06:18:09.293 回答