![latex 条件包含输入文件](https://linux22.com/image/406401/latex%20%E6%9D%A1%E4%BB%B6%E5%8C%85%E5%90%AB%E8%BE%93%E5%85%A5%E6%96%87%E4%BB%B6.png)
我有以下乳胶文件结构(有充分理由),我想在和中使用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