![如何在 Windows 中编写 Makefile 以使用循环编译 Latex 文档](https://linux22.com/image/364841/%E5%A6%82%E4%BD%95%E5%9C%A8%20Windows%20%E4%B8%AD%E7%BC%96%E5%86%99%20Makefile%20%E4%BB%A5%E4%BD%BF%E7%94%A8%E5%BE%AA%E7%8E%AF%E7%BC%96%E8%AF%91%20Latex%20%E6%96%87%E6%A1%A3.png)
我需要编写几个彼此相当接近的文档,即页眉/页脚结构相同,调用一组通用的表单。我编写了一个 Main.tex 文档,其中包含一组 \if\x 1 {我的文档内容}\fi 来控制每个文档的内容。我的变量“x”也用作页眉中的信息。
最小示例:
\documentclass[a4paper,10pt, ,landscape]{article}
\usepackage{fancyhdr}
\usepackage{lastpage}
%\newcommand\x{1}
\rhead{My document \x}
\lhead{Left header}
\chead{version:1.0}
\lfoot{\thepage\ ~of~\pageref{LastPage}}
\cfoot{}
\begin{document}
\if\x 1 {
\include{FrontPage}
\include{FormA}
\include{FormB}
\include{FormC}
}\fi
\if\x 2 {
\include{FrontPage}
\include{FormA}
\include{FormB}
\include{FormB}
}\fi
\if\x 3 {
\include{FrontPage}
\include{FromA}
\include{FromC}
\include{FormC}
}\fi
\end{document}
在 Linux(Ubuntu)上,我编写了一个 makefile:
SHELL = /bin/sh
all:
make tex
make clean
tex:
for number in 1 2 3; do \
echo $$number ; \
pdflatex -no-pdf --jobname=Mydocument-No-$$number "\newcommand\x{$$number} \input{main.tex}" ; \
pdflatex --jobname=Mydocument-No-$$number "\newcommand\x{$$number} \input{main.tex}" ; \
done;\
help:
echo "USAGE: make [all/tex/clean]"
clean:
rm -f *.aux *.dvi *.idx *.ilg *.ind *.log *.nav *.out *.snm *.xdv *.toc *~
它调用我的 main.tex 文件 3 次,将 x 的值发送到我的 latex 文档,并重命名输出。最后我得到了 3 个 pdf。我只需在 Kile 的 Konsole 中写入“make”即可使其工作。
不幸的是,我现在必须在 Windows 下转移这个过程 - 有没有关于如何在 Windows 中编写与我的 makefile 等效的内容的想法?我已经安装了 TeXnicCenter 和 Texmaker。
答案1
我按照 David Carlisle 的建议,通过为 Windows 编写一个 makefile.bat 来解决这个问题:
FOR %%i IN (1,2,3) DO (
echo %%i
pdflatex --jobname=Mydocument-No-%%i "\newcommand\x{%%i} \input{main.tex}"
pdflatex --jobname=Mydocument-No-%%i "\newcommand\x{%%i} \input{main.tex}"
)
DEL *.aux *.log *.backup
我通过双击该文件来运行它。