【发布时间】:2021-06-09 13:55:55
【问题描述】:
我在一个目录中有一些 tex 文件,其中一些被进一步组织到子目录中。
input/
|
|-- one.tex
|-- two.tex
|-- sub1/
| |
| |-- three.tex
|
|-- four.tex
|
|-- sub2/
| |
| |-- five.tex
|
|-- six.tex
然后我在这些 tex 文件中的每一个上运行 pdflatex 以在输出目录中创建一个具有相同目录结构(可能使用 mkdir -p)的相应 pdf 文件(在其名称后附加一个 "_out" 而没有扩展名) .
output/
|
|-- one_out.pdf
|-- two_out.pdf
|-- sub1/
| |
| |-- three_out.pdf
|
|-- four_out.pdf
|
|-- sub2/
| |
| |-- five_out.pdf
|
|-- six_out.pdf
如果修改了任何tex文件,我需要使用make更新相应的pdf文件。
有谁知道如何做到这一点?
我做了类似的事情,但它只处理一个文件(第一个)。
SOURCE_DIR := input
BUILD_DIR := output
TEX_FILES := $(shell find $(SOURCE_DIR) -type f -name "*.tex")
PDF_FILES := $(patsubst $(SOURCE_DIR)/%.tex, $(BUILD_DIR)/%.pdf, $(TEX_FILES))
.PHONY: all
all: $(PDF_FILES)
# $< are inp files and $@ are out files
$(BUILD_DIR)/%.pdf: $(SOURCE_DIR)/%.tex
pdflatex -jobname=$(addsuffix _out,$(basename $@)) $<
PS:使用其他工具可能有更简单的方法来做到这一点(我也很高兴知道它们!)但我正在寻找一种使用 gnu 完成此操作的方法)make 作为一种方法更好地了解它。
【问题讨论】: