我想知道是否可以更改默认TEXMFHOME
位置。部分原因是我不喜欢程序用非隐藏文件或目录(例如~/texmf/
)弄乱我的主目录,部分原因是我希望能够手动安装新的 LaTeX 包到我喜欢的任何位置,例如
/software/local-foo/
/software/local-bar/
我知道我可以改变TEXMFHOME
环境变量,但是是否也有一个每个用户配置文件可以改变 LaTeX 和朋友查找文件的位置?
答案1
从问题中无法判断您是否具有主texmf.cnf
文件的管理员权限。如果有,那么这比没有权限要容易得多!
有管理员访问权限
例如,如果您有一台单用户计算机,并且texmf.cnf
对安装目录具有写入权限,则无需设置变量即可完成此操作。您可以使用以下方法找到它的位置kpsewhich texmf.cnf
:我明白了
palladium:~ joseph$ kpsewhich texmf.cnf
/usr/local/texlive/2012/texmf.cnf
然后,您可以编辑此文件(sudo
如果需要)并修改TEXMFHOME
行以指向您想要的位置。
管理员权限不可用
我认为,更常见的情况是,如果您没有管理员权限,那么想要在此处设置内容,这正是您想要按用户设置的原因。在这里,您似乎必须设置至少一个变量。有两种方法。
第一种是直接设置TEXMFHOME
。这显然非常简单,除非您需要做更复杂的事情,否则这是推荐的方法。
第二种方法是将系统设置为使用每个用户texmf.cnf
文件。这可以放在您选择的位置,但您需要使用TEXMFCNF
类似以下内容设置变量
export TEXMFCNF=~/.texmf-config/web2c:
其中:
很重要,因为它使这成为一项附加更改。然后,您可以texmf.cnf
在这个新位置创建一个文件,并在那里添加您想要的任何设置(TEXMFHOME
这只是一种可能)。有关此内容的更多详细信息,请参阅http://people.debian.org/~preining/TeX/TeX-on-Debian/ch2.html#s-sec-user-config-files。
答案2
对于 Unix,符号链接会有所帮助。例如,在我的系统上,TEXMFHOME
设置为/home/alba/texmf
。
% kpsewhich -var-value=TEXMFHOME
/home/alba/texmf
改用/home/alba/Library/program/texmf
:
% ln -s /home/alba/Library/program/texmf /home/alba
% ls -l /home/alba/texmf
lrwxrwxrwx. 1 alba alba 32 30 déc. 15:29 /home/alba/texmf -> /home/alba/Library/program/texmf
该链接不依赖于 shell 环境,不需要管理员访问权限,也不会因软件更新而中断。
答案3
按照上述 Joseph Wright 的解决方案,无需触碰任何“请勿编辑!”文件,您可以:
找到你的
texmf
目录(在 Ubuntu 上应该是/etc/texmf
)导航到
texmf.d
子目录编辑(可能使用
sudo
)该.cnf
文件(同样,在 Ubuntu 上应该是00debian.cnf
)添加新行:TEXMFHOME=/你的/新/路径
请注意,您可以使用局部变量,因此如果您希望每个用户都将其 texmfhome 保存在自己的主目录中,您可以输入:
TEXMFHOME=$HOME/.texmf
- 保存文件并运行
sudo update-texmf
您现在可以检查变量是否已更新
kpsewhich -var-value=TEXMFHOME
*已编辑以反映 StrongBad 的评论(谢谢)