更改每个用户的 TEXMFHOME

更改每个用户的 TEXMFHOME

我想知道是否可以更改默认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 的解决方案,无需触碰任何“请勿编辑!”文件,您可以:

  1. 找到你的texmf目录(在 Ubuntu 上应该是/etc/texmf

  2. 导航到texmf.d子目录

  3. 编辑(可能使用sudo)该.cnf文件(同样,在 Ubuntu 上应该是00debian.cnf)添加新行:

    TEXMFHOME=/你的/新/路径

请注意,您可以使用局部变量,因此如果您希望每个用户都将其 texmfhome 保存在自己的主目录中,您可以输入:

TEXMFHOME=$HOME/.texmf
  1. 保存文件并运行sudo update-texmf

您现在可以检查变量是否已更新

kpsewhich -var-value=TEXMFHOME

*已编辑以反映 StrongBad 的评论(谢谢)

相关内容