動態導入tex文件

動態導入tex文件

如何動態匯入 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

考慮使用 git 的工作流程。看這裡了解更多。您可以標記每個版本。也就是說,在提交類型之後,

git tag -a "v1" -m "This version has all the bare bones necessary for the project"

然後更多的提交和更多的標籤,那麼你所要做的就是

git checkout -b v4_branch tags/v4

您的工作目錄將變更為您先前標記「v4」時的狀態,並且您將位於名為 v4_branch 的新分支上。讀這裡有關正確檢查標籤的更多資訊(關於最佳方法有一些不同的想法)。

答案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以指向這些檔案的實際位置。我只是使用“./”(當前目錄)作為這裡的快速範例。

相關內容