latex 条件包含输入文件

latex 条件包含输入文件

我有以下乳胶文件结构(有充分理由),我想在和中使用main.tex序言other_main.tex

|-main.tex
|-subsections
     |-preamble.tex
     |-input1.tex
|-other_main
     |-other_main.tex

然而,问题是 preamble 输入了input1.tex。为了main.tex进行编译,preamble.tex 需要使用

\input{subsections/input1}

而要other_main.tex进行编译,preamble.tex需要使用

\input{../subsections/input1}

我尝试过的方法:使用versions包含以下文件的包:

序言.tex

\begin{main}
    \input{subsections/input1}
\end{main}

\begin{other}
    \input{../subsections/input1}
\end{other}

输入1.tex

\newcommand{\hi}{hi}

主文本

\documentclass{article}


\usepackage{versions}
\includeversion{main}
\excludeversion{other}

\input{preamble}

\begin{document}
    \hi
\end{document}

但我收到了! Undefined control sequence. \hi错误。


我可以使用不同的输入位置进行复制preamble.tex,但这并不可取,因为前言的内容可能会随着时间而改变。

有办法解决这个问题吗?提前谢谢!

答案1

路径是相对于 latex 的工作目录,而不是文档,因此一种可能性是从同一工作目录处理第二个文档,但使用

pdflatex other-main/other-main.tex

那么你需要为两者设置相同的路径。

或者(更好,因为它更易于移植)是只使用 \input{preamble} (或者更好地将文件重命名为preamble.sty并使用\usepackage{preamble}

然后安排preamble.tex两个文档的输入路径。

您可以通过将 TEXINPUTS 环境变量设置为

/path/to/main//:

其中main是包含目录main.tex//表示递归搜索任何子目录,尾随:表示搜索所有标准位置。

或者简单地将 preamble.tex 放在你本地的 texmf 树中,这样它就可以在任何地方找到,通常是在 ~/texmf/tex/latex

相关内容