Я пытаюсь написать Makefile для pandoc. Я хочу иметь возможность ввести 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, включив цитаты bibtex из fudge.bib. Как мне это сделать? Командная строка примерно такая
pandoc -s --smart --bibliography filename.bib -f markdown -o $@ $<
... но я не могу понять, как получить fudge.bib из fudge.txt, не сделав что-то вроде этого:
pandoc -s --smart --bibliography $(subst .txt,.bib,$<) -f markdown -o $@ $<
Это будет работать, но а) я хочу сначала выполнить некоторую предварительную обработку файла *.bib (а именно, сгенерировать его и добавить отсутствующие ссылки) и б) этот макрос нужен для каждой строки. Есть ли что-нибудь более изящное?