如何在 Windows 中编写 Makefile 以使用循环编译 Latex 文档

如何在 Windows 中编写 Makefile 以使用循环编译 Latex 文档

我需要编写几个彼此相当接近的文档,即页眉/页脚结构相同,调用一组通用的表单。我编写了一个 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

我通过双击该文件来运行它。

相关内容