makefile确定latex输入文件的顺序

makefile确定latex输入文件的顺序,makefile,latex,pdflatex,Makefile,Latex,Pdflatex,我试图用一个makefile来控制beamer演示文稿的生成,这些演示文稿是通过添加涵盖不同主题的部分(幻灯片)形成的。我希望能够在makefile中指定零件及其顺序,这些可以根据不同的演示文稿进行更改 例如,我可能有不同的.tex文件,每个文件都有不同主题的幻灯片,比如topicA topicB和topicC。然后在某个阶段,我可能想做一个演示,其中我需要一个PDF,首先包含有关topicA的幻灯片,然后是topicB上的幻灯片,而在另一个不同的时间,我可能想做另一个演示,首先是topicC上

我试图用一个makefile来控制beamer演示文稿的生成,这些演示文稿是通过添加涵盖不同主题的部分(幻灯片)形成的。我希望能够在makefile中指定零件及其顺序,这些可以根据不同的演示文稿进行更改

例如,我可能有不同的.tex文件,每个文件都有不同主题的幻灯片,比如topicA topicB和topicC。然后在某个阶段,我可能想做一个演示,其中我需要一个PDF,首先包含有关topicA的幻灯片,然后是topicB上的幻灯片,而在另一个不同的时间,我可能想做另一个演示,首先是topicC上的幻灯片,然后是topicA上的幻灯片。我想控制在makefile上演示文稿的顺序和主题

我试图实现的解决方案包括一个顶级latex文件(比如top.tex),最终将有一个命令(比如“\slidesorder”),其内容将是一系列\input,其中包含要包含的主题幻灯片的文件名

总之,我有:

  • tex(靠近末尾的主latex文件具有命令\slideOrder)
  • topicA.tex、topicB.tex和topicX.tex(包含每个主题幻灯片的latex文件)
然后,我编写了以下无法正常工作的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的了解非常有限,因此非常感谢您的帮助。

好的,在发现外壳中反斜杠的问题后,我已经找到了一个有效的解决方案:

ROOT = top

SLIDES := topicB topicA topicC
TO_INCL := $(foreach V,$(SLIDES),\input{$(V)})
TO_PDFLTX := '\\newcommand{\\slidesorder}{'$(TO_INCL)'} \\input{'$(ROOT)'}'

all: $(ROOT).pdf

${ROOT}.pdf:  ${ROOT}.tex $(SLIDES:=.tex) 
    echo $(TO_PDFLTX)| pdflatex

只是想澄清一下:如果你是手工操作,你会在
top.tex
中加上“\newcommand{\slidesorder}\input{topicB.tex}\input{topicA.tex}\input{topicC.tex}”行,然后键入“pdflatex top.tex”,是吗?是的,就是这样,但我的目标是有一个包含幻灯片源的文件夹(即.tex文件)然后,我将为不同的特定演示文稿创建不同的文件夹,我将根据这些幻灯片的一部分进行操作,每个幻灯片都有自己的makefile,它将通过发出适当的\newcommand命令来构建特定演示文稿。上面的代码是这个场景的简化,只是为了更好地说明我的makefile问题。如果我将\newcommand行添加到top.tex,一切都会正常工作。好的,从第一个答案开始,我了解到问题不是makefile,而是shell中的反斜杠转义!