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.bib からの bibtex 引用を組み込みながら、fudge.txt を fudge.pdf に変換します。どうすればいいですか?コマンドラインは次のようなものです

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 に答える