我有一个名为 的源文件2011-05-27_Myfilename.tex
,我想从中创建一个名为 的 PDF 文件Myfilename.pdf
。
可以从 .tex 文件本身内部进行配置吗?
(似乎可以
pdflatex -jobname=Myfilename.tex 2011-05-27_Myfilename.tex
但是,由于涉及许多不同的文件,因此更容易有一个像output=Myfilename
LaTeX 源代码中的选项。)
答案1
恐怕您无法在 LaTeX 源中更改输出名称:\jobname
原语可以读取但不能更改。您可以安排双文件解决方案,允许一个 LaTeX 文件“调用”另一个文件,但我不确定这是否能解决您的问题。
答案2
jobname
您可以在主文件的最开始处(甚至在之前)指定附加参数(例如) \documentclass
:
%& -job-name=newfilenameialwayswanted
它稍微取决于您的编译器,但它应该可以工作。
补充说明:如果您使用 IDE,这可能会导致文件打开热键出现麻烦(他们尝试打开的文件将不存在),在这种情况下,您可以寻找“输出配置文件”(TeXnicCenter 名称)之类的选项 - 您也可以通过这种方式更改文件名。
因此,没有完全方便的方法从源更改输出文件名,但这是可能的。
答案3
您可以按照如下方式操作。
\documentclass[preview,border=12pt]{standalone}
\usepackage{filecontents}
\begin{filecontents*}{template.tex}
\documentclass[preview,border=12pt]{standalone}
\begin{document}
Hello World
\end{document}
\end{filecontents*}
\usepackage{pgffor,graphicx}
\foreach \outputfilename in {a,b,c}{\immediate\write18{pdflatex -jobname=\outputfilename\space template}}
\begin{document}
The files we created automatically are:
\foreach \outputfilename in {a,b,c}{\fbox{\includegraphics[scale=2]{\outputfilename}}\endgraf}
\end{document}
答案4
虽然没有完全回答 OP 的问题,并且查看了似乎表明可以通过多文件解决方案实现可能性的已接受答案,但我想提供这样一种多文件解决方案替代方案来管理此类问题。如果使用VimTeX,很容易pdf
从同一.tex
文件的编译过程工作流中创建不同命名的文件作为输出。
这里是该插件作者提供的一个示例。
大致来说,有一个外部的student.tex
and professor.tex
(可能具有不同定义的变量/命令/宏,从而控制如何排版)。这两个文件都指向\input{main.tex}
同一个文件 —— 所有三个文件都位于同一个文件夹中。
一旦设置student.tex
好professor.tex
,就几乎不需要继续更新它们。现在所有工作都可以在 中进行main.tex
。
在 Vim 中打开 时main.tex
,插件会自动要求用户指定调用文件 --student.tex
或professor.tex
。做出选择后,在发出相当于 [\ll
在 VimTeX 中 ] 编译命令的命令时,会发生编译,并根据所做的选择,输出student.pdf
或professor.pdf
。
请参阅下面的示例(由插件作者提供):
% main.tex
\begin{document}
Hello World! \person
\end{document}
% professor.tex
\documentclass{minimal}
\newcommand{\person}{from professor}
\input{main.tex}
% student.tex
\documentclass{minimal}
\newcommand{\person}{from student}
\input{main.tex}