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.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) すべての行にそのマクロが必要です。もっとエレガントなものはありますか?