如何正确定义 TEXINPUTS

如何正确定义 TEXINPUTS

本网站(以及网络上的其他地方)有许多关于如何定义 $TEXINPUTS 和其他包含 TeX 搜索的非标准位置的策略的问题。例如,请参阅讨论 这里此处(针对 texmaker)这里 (针对 Texstudio)这里这里 (适用于 MikTeX)这里 (针对 TeXShop)这里 (macOS), 或者 这里。从所有这些讨论(评论中隐藏着很多有用的解释)中,我发现定义变量有很多种不同的方法,并且取决于操作系统、TeX 发行版和程序,什么可行,什么不可行。

我在 macOS 上使用 TeXShop。我在 有一个位置,里面~/custompath/input/有一堆子文件夹graphicsfigures等等,我想让 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}

相关内容