![如果远程文件存在则包含它,否则包含本地文件](https://linux22.com/image/263868/%E5%A6%82%E6%9E%9C%E8%BF%9C%E7%A8%8B%E6%96%87%E4%BB%B6%E5%AD%98%E5%9C%A8%E5%88%99%E5%8C%85%E5%90%AB%E5%AE%83%EF%BC%8C%E5%90%A6%E5%88%99%E5%8C%85%E5%90%AB%E6%9C%AC%E5%9C%B0%E6%96%87%E4%BB%B6.png)
这是我的 tex 文件所在的路径:
/home/me/documents/foo.tex
我这里也有一个导入文件:
/home/me/texmf/tex/latex/personal/bar.tex
但是出于安全目的,我也将其包含在本地:
/home/me/documents/bar.tex
当我将其输入到我的 tex 文件中时,例如:
\input{bar}
我注意到本地文件已在远程文件(LaTeX 个人目录)上使用
我的问题是: 我该如何处理以下声明?
- 如果远程文件存在,则将其包含在本地文件上。
- 如果远程文件为无,则包含本地文件。
答案1
TeX 的文件搜索策略可以配置,请参阅texmf.cnf
TeX Live。示例为pdflatex
:
TEXINPUTS.pdflatex = .;$TEXMF/tex/{latex,generic,}//
默认TEXMF
设置为:
TEXMF = {$TEXMFCONFIG,$TEXMFVAR,$TEXMFHOME,!!$TEXMFSYSCONFIG,!!$TEXMFSYSVAR,!!$TEXMFLOCAL,!!$TEXMFDIST}
或者更简短地说,首先使用当前目录,然后使用主 texmf 树、本地 texmf 树,最后使用分发树。
当然,可以通过更改或覆盖条目来更改搜索顺序,例如
TEXINPUTS=/my/documents:
然后首先搜索目录,然后由于尾随冒号而应用配置/my/documents/
的正常搜索。TEXINPUT
但是,搜索是基于目录的,单个文件的搜索顺序无法更改。在您的例子中,您有主 TeX 文件和目录中的foo.tex
其他文件bar.tex
相同的目录/home/me/documents/
。第一个文件应该在那里找到,但后者应该先在其他地方找到:
/home/me/texmf/tex/latex/personal/bar.tex
因此改变搜索顺序不会有帮助,因为foo.tex
也不应该在其他地方首先找到。
但是,在这种情况下,文件的父目录存在差异,可以在此用来区分两个版本:
\InputIfFileExists{personal/bar.tex}{%
% File personal/bar.tex exists and is read
}{%
% File personal/bar.tex is not found, try bar.tex
\input{bar.tex}%
}