![如何正确定义 TEXINPUTS](https://linux22.com/image/472039/%E5%A6%82%E4%BD%95%E6%AD%A3%E7%A1%AE%E5%AE%9A%E4%B9%89%20TEXINPUTS.png)
本网站(以及网络上的其他地方)有许多关于如何定义 $TEXINPUTS 和其他包含 TeX 搜索的非标准位置的策略的问题。例如,请参阅讨论 这里, 此处(针对 texmaker), 这里 (针对 Texstudio), 这里, 这里 (适用于 MikTeX), 这里 (针对 TeXShop), 这里 (macOS), 或者 这里。从所有这些讨论(评论中隐藏着很多有用的解释)中,我发现定义变量有很多种不同的方法,并且取决于操作系统、TeX 发行版和程序,什么可行,什么不可行。
我在 macOS 上使用 TeXShop。我在 有一个位置,里面~/custompath/input/
有一堆子文件夹graphics
,figures
等等,我想让 TeX 访问这些子文件夹,而不必指定显式路径(我知道我可以通过 来做到这一点\def\input@path{...}
)。
暂时,我了解到我可以通过命令行定义变量
export TEXINPUTS=.:~/custompath/input//:
更持久的解决方案应该是TEXINPUTS = .:~/custompath/input//:
添加
~/.bashrc
或者
/usr/local/texlive/YYYY/texmf.cnf
当我从同一命令行窗口运行时,第一种方法 (via export TEXINPUTS=.:~/custompath/input//:
) 确实按预期工作pdflatex
。我明白,由于它是临时的,我不能指望它在 TeXShop 中工作。
但其他方法都没用,放魔法线~/.bashrc
也没用。
当我将其添加到时texmf.cnf
,我就可以从命令行运行
kpsexpand '$TEXINPUTS'
并且确实返回了 .:~/custompath/input//:
但是,编译(再次从命令行pdflatex ~/custompath/testing.tex
)给了我:
`! LaTeX Error: File `testinput.tex' not found.`
不用说,TeXShop 什么都不起作用。
有没有一种万无一失的方法来定义一个由 TeX 搜索的附加位置,无论我是从命令行调用 LaTeX、使用 TeXShop 还是其他前端,它都能始终起作用?我的直觉是答案是否定的,但也许有人可以解释如何让它适用于不同的系统/安装/前端。(当然,我对 TeXShop 特别感兴趣,但似乎其他平台上的人经常遇到类似的问题,所以也许值得为所有场景提供一个权威的答案......)。
MWE 值得拥有testinput.tex
,~/custompath/input/figures/project1/
:)
\documentclass{article}
\begin{document} test document \par
\input{testinput.tex}
%\input{~/custompath/input/figures/project1/testinput.tex} %
\end{document}