一次编译多个项目

一次编译多个项目

我寻找一种同时(重新)编译多个不同项目的方法(假设所有项目都单独编译且不会出错)。在这里,我介绍了背景和问题。

上下文:

我有一个主题,例如“科学”,并为它写了几个项目(文章、论文)。它们都共享同一个模板目录,其中包含骨架主文件、“设置”文件夹、“文章”文件夹、“图像”文件夹和“词汇”文件夹,设置如下:

/my/path/Topic/TeX-Template/
        Settings/
              packages.sty
              settings.sty
              macros.sty
        /Images/
              image.ewm.eps
        Vocabulary/
              vocabulary.sty
        Articles/
        topic-main.tex
        topic-corpus.tex
  • words.sty 是项目特定宏的集合,即 \newcommand{\technicaltermA}{技术术语 A}。
  • topic-main.tex 包含文档的基础(\documentclass{...} 等)
  • topic-corpus.tex 包含项目的骨架(由 \intput{./file.tex} 行组织)。
  • Articles 目录为空,它将包含项目的部分文件,以及输入的 topic-corpus.tex

然后,我的 $PATH 中包含一个小脚本“topic.sh”,其内容是:

cp -a $TOPIC/*tex .
cp -a $TOPIC/Articles
ln -s $TOPIC/Settings 
ln -s $TOPIC/Images
ln -s $TOPIC/Vocabulary

当然,我创建了一个指向 /my/path/Topic/Topic-Template 的 bash 变量 $TOPIC

一旦我创建了一个在其中执行脚本的 NewProject 文件夹,我就将“topic-”文件重命名为“newprojectname-”。

我在 Sciences 文件夹中有许多项目,例如 ScienceA、ScienceB 和 ScienceC。它们都已正确编译。

现在的问题是:我需要纠正出现在所有项目中的术语“技术术语 A”,该术语由来自vocabulary.sty的“\technicaltermA”宏提供。因此,我修改了宏。

我如何应用修正全部一次编译多个项目,而不必进入每个文件夹并手动编译?这需要程序跳转到每个文件夹,并使用其自己的 -main.tex 文件编译每个项目。

(编辑:<dt>删除...)

答案1

这不是 tex 问题,而是一般的编译问题。本质上,您必须在每个目录中编写一个 makefile,说明每个 *-main.tex 是如何编译的。然后,您必须编写一个根 makefile,在每个子目录中执行 make,如下所示:

.PHONY: all default clean realclean ...

default:
    @for i in `ls | egrep "(Sciences)|(Arts)|..."`; do { $(MAKE) default -C $$i; } done
...

是的,这很繁琐。但如果您提供了正确的依赖项,make 将处理其余部分。

相关内容