如何動態匯入 tex 檔?
我基本上在一個資料夾中有數百個 .tex 文件,所有這些文件都有多個版本。我無法將它們移出此資料夾。
前任:
ver1file1.tex
ver2file1.tex
...
ver8file1.tex
...
ver8file100.tex
我希望能夠設定環境變數或傳遞命令列參數,以便 Latex 能夠動態載入特定版本的所有檔案。
例子:
pdflatex ver1
or
EXPORT LATEX_VER=ver1
僅將以下內容匯入主乳膠檔案。
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
以指向這些檔案的實際位置。我只是使用“./”(當前目錄)作為這裡的快速範例。