我寻找一种同时(重新)编译多个不同项目的方法(假设所有项目都单独编译且不会出错)。在这里,我介绍了背景和问题。
上下文:
我有一个主题,例如“科学”,并为它写了几个项目(文章、论文)。它们都共享同一个模板目录,其中包含骨架主文件、“设置”文件夹、“文章”文件夹、“图像”文件夹和“词汇”文件夹,设置如下:
/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 将处理其余部分。