2012-09-10 2 views
4

Я пытаюсь написать Makefile для pandoc. Я хочу, чтобы иметь возможность вводить make filename.ext, и Makefile будет автоматически компилироваться с filename.txt до filename.ext. Имя файла может быть любым именем .txt. Эта часть проста. например У меня есть набор правил, как:Makefile для pandoc с файлом ссылок

%.pdf: %.txt 
    pandoc -s --smart -f markdown -o [email protected] $< 

%.html: %.txt 
    pandoc -s --smart --bibliography $(bib) -f markdown -t html --standalone -o [email protected] $< 

%.docx: %.txt 
    pandoc -s --smart --bibliography references.bib -f markdown -t docx -o [email protected] $< 

%.tex: %.txt 
    pandoc -s --smart --bibliography references.bib -o [email protected] $< 

Однако, я также хочу, чтобы добавить цитаты из того же файла под названием filename.bib. Итак, если я наберу make fudge.pdf, pandoc преобразует файл fudge.txt в fudge.pdf, введя ссылки bibtex из fudge.bib. Как мне это сделать? Командная строка что-то вроде

pandoc -s --smart --bibliography filename.bib -f markdown -o [email protected] $< 

... но я не могу понять, как получить fudge.bib от fudge.txt, не делая что-то вроде этого:

pandoc -s --smart --bibliography $(subst .txt,.bib,$<) -f markdown -o [email protected] $< 

Это будет работать, но я хочу сначала выполнить предварительную обработку файла * .bib (а именно, генерировать его и добавить недостающие ссылки), и b) нуждаться в этом макросе в каждой строке. Есть ли что-нибудь более элегантное?

ответ