![从一个 tex 文件生成两个不同的 pdf?](https://linux22.com/image/319092/%E4%BB%8E%E4%B8%80%E4%B8%AA%20tex%20%E6%96%87%E4%BB%B6%E7%94%9F%E6%88%90%E4%B8%A4%E4%B8%AA%E4%B8%8D%E5%90%8C%E7%9A%84%20pdf%EF%BC%9F.png)
有没有办法通过一次运行 pdflatex 自动生成两个不同的 pdf 文件?
我想制作同一篇文档的德文版和英文版。我知道如何定义充当开关的命令(例如\germanenglish
),我可以像
\germanenglish{Deutscher Text}{english text}
然而,目前最好的解决方案是在序言中定义一个命令来切换开关。然而,更方便的方法是让 latex 生成
filename_de.tex
filename_en.tex
只需单击一下。
答案1
感谢评论,我能够按如下方式解决问题:
\ProvidesPackage{altlang}[2015/09/20 Alternative Languages Package]
\RequirePackage{xstring}
\RequirePackage{etoolbox}
\newtoggle{alternativelanguage}
\togglefalse{alternativelanguage}
\IfSubStr*{\jobname}{\secondlang}{%
\toggletrue{alternativelanguage}%
}{%
\togglefalse{alternativelanguage}%
}
\newcommand{\lang}[2]{\iftoggle{alternativelanguage}{#2}{#1}}
\newcommand{\producealternativelanguage}{%
\iftoggle{alternativelanguage}{}{%
\StrBefore*{\jobname}{\firstlang}[\substrbefore]
\StrBehind*{\jobname}{\firstlang}[\substrbehind]
\edef\myjobname{\substrbefore\secondlang\substrbehind}
\def\space{ }
\immediate\write18{pdflatex --jobname=\myjobname\space \jobname.tex}
}
}
\endinput
用法:
%% file myfile_de.tex
...
\newcommand{\firstlang}{_de}
\newcommand{\secondlang}{_en}
\usepackage{altlang}
...
\producealternativelanguage
\begin{document}
\lang{deutscher Text}{english text}
\end{document}
%% pdflatex-ing with shell-escape being enabled
%% will produce myfile_de.tex and myfile_en.tex