![动态导入 tex 文件](https://linux22.com/image/286706/%E5%8A%A8%E6%80%81%E5%AF%BC%E5%85%A5%20tex%20%E6%96%87%E4%BB%B6.png)
我如何动态导入 tex 文件?
我实际上在一个文件夹中有数百个 .tex 文件,所有这些文件都有多个版本。我无法将它们移出此文件夹。
前任:
ver1file1.tex
ver2file1.tex
...
ver8file1.tex
...
ver8file100.tex
我希望能够设置一个环境变量或传递一个命令行参数,以便 latex 能够动态加载特定版本的所有文件。
例子:
pdflatex ver1
or
EXPORT LATEX_VER=ver1
只在主 latex 文件中导入下列内容。
ver1file1
ver1file2
...
ver1file100
下面是我到目前为止尝试过的一个例子,但我无法获得我基本上想要有 2 个 .tex 文件,file1.tex
并且file2.tex
。我希望能够接受定义要导入的文件名称的命令行参数。
主文本
\import{c:\path}{aux}
\import{c:\path}{\dynavar} % should load variable from commandline + added string ex: ver1file1
辅助文本
%accept a command line argument
\ifdefined\myflag
\newcommand\dynavar[1]{\emph{#1}}
\else
\newcommand\dynavar[1]{defaultval}
\fi
\expandafter\def\expandafter\dynavar\expandafter{\dynavar { }file1}
答案1
以下是我建议的一个小模型:
\documentclass{article}
\usepackage{filecontents,multido}
\begin{filecontents*}{dynavar.tex}
\makeatletter
\@ifundefined{dynavar}{%
\newcommand{\dynavar}{defaultval}%
\typeout{No command-line value specified for \string\dynavar. Using 'defaultval'.}%
}{}
\makeatother
\end{filecontents*}
% ========== You would not need this
\begin{filecontents*}{ver1file1.tex}
ver1file1
\end{filecontents*}
\begin{filecontents*}{ver1file2.tex}
ver1file2
\end{filecontents*}
% ========== You would not need this
\begin{document}
\input{dynavar}
\multido{\i=1+1}{2}{% Update '2' to (say) '100' if you have 100 files
File \texttt{\dynavar file\i}: \endgraf \input{\dynavar file\i}\endgraf}
\end{document}
你可以使用以下方式调用上述文件
pdflatex \def\dynavar{ver1} \input{main}
运行ver1
文件。或者
pdflatex main.tex
如果你想让它运行defaultval
这些文件。使用\def\dynavar{ver1}
“命令行”选项,你将获得输出
答案2
答案3
(刚刚意识到这个解决方案没有利用海报所指定的命令行输入)
另一个解决方案是创建一个 tex 文件,使用\input
命令仅输入特定版本的文件。例如,您可以创建一个名为 的文件ver1files.tex
,其中包含以下几行:
\input{./ver1file1.tex}
\input{./ver1file2.tex}
\input{./ver1file3.tex}
...
\input{./ver1file100.tex}
ver1
然后,在您的主 LaTeX 文档中,您只需输入文件即可轻松输入所有文件ver1files.tex
,如下所示:
\input{./ver1files.tex}
您可以创建一个ver2files.tex
包含\input
所有ver2
文件的命令,等等,适用于所有版本。
请注意,LaTeX 允许您\input
像这样“嵌套”命令。也就是说,您\input
的主 LaTeX 文件中有一个,它输入一个包含其他\input
命令的文件。这可以用 来做\input
。但是,您不能将这种类型的嵌套用于\include
命令。
ver1file1.tex
如果您的主 LaTeX 文件与您的等文件不在同一文件夹中ver1files.tex
,请确保更新命令中的路径\input
以指向这些文件的实际位置。我在这里仅使用了“./”(当前目录)作为快速示例。