Я пытаюсь создать makefile, управляющий генерацией презентаций лучей, которые формируются путем добавления частей (слайдов), которые охватывают разные темы. Я хочу иметь возможность указать в make-файле части и их порядок, которые могут меняться для разных презентаций.makefile определяющий порядок входных файлов латекса
Например, у меня могут быть разные .tex-файлы со слайдами на разные темы, например topicA topicB и topicC. Затем на каком-то этапе я могу сделать презентацию, где мне нужен PDF-файл, содержащий сначала слайды, касающиеся topicA, а затем те, которые указаны в topicB, а в другое время я могу сделать еще одну презентацию, где сначала хочу слайды на topicC и затем те на topicA. Я хотел бы контролировать порядок и темы для включения в презентацию в make-файле.
Решение, которое я пытаюсь реализовать, состоит в том, что у вас есть верхний латексный файл (например, top.tex), который в конце будет иметь команду (скажем, «\ slidesorder»), содержимое которой будет представлять собой серию \ input's with имена файлов со слайдами включенных тем.
В общем, у меня есть:
- top.tex (основной файл латексный, что ближе к концу есть команда \ slidesorder)
- topicA.tex, topicB.tex и topicX.tex (файлы латексные с горками по каждой теме)
Тогда я написал следующий Makefile, который не работает правильно:
ROOT = top
SLIDES := topicB topicA topicC
TO_INCL := $(foreach V,$(SLIDES),\input{$(V)})
all: $(ROOT).pdf
${ROOT}.pdf: ${ROOT}.tex $(SLIDES:=.tex)
echo "\newcommand{\slidesorder}{$(TO_INCL)} \input{$(ROOT)}" | pdflatex
Идея состоит в том, что, изменяя содержимое переменной SLIDES, я получаю разные презентации из тех же источников слайдов. Мои знания о Latex и Make очень ограничены, поэтому любая помощь очень ценится.
Просто для уточнения: если вы делали это вручную, вы бы добавить строку " \ newcommand {\ slidesorder} \ input {topicB.tex} \ input {topicA.tex} \ input {topicC.tex} "в' top.tex', а затем введите «pdflatex top.tex», правильно? – Beta
Да, это было бы так, но моя цель - иметь папку с источниками слайдов (файлы .tex), а затем у меня будут разные папки для разных конкретных презентаций, которые я буду делать на основе части этих слайдов, каждая с его собственный make-файл, который будет создавать конкретную презентацию, выдав соответствующий \ newcommand. Вышеприведенный код упрощает этот сценарий только для лучшей иллюстрации моей проблемы с make-файлом. Если я добавлю строку \ newcommand в top.tex, все будет работать отлично. – user3177839
ОК, от первого ответа на [этот пост] (http://stackoverflow.com/questions/9487303/shell-escape-backslash-in-variable) Я узнал, что проблема заключается не в make-файле, а в обратном скелете в оболочке! – user3177839