我想知道向中添加个人配置的官方方法是什么texmf.cnf
。
出于这个原因,我特意想添加我自己的设置: 避免 LaTeX 控制台/日志输出中的换行符
但答案告诉你要修改/usr/local/texlive/2017/texmf.cnf
,也就是不对。 每次安装新版本的 texlive、每次重新安装 texlive、每次购买新机器、每次清除系统磁盘时,您都必须修改texmf.cnf
。
所有个人配置都应位于用户的主目录下。
我听说过环境变量 TEXMFCNF,并在网上搜索如何使用它,但我还没有找到它到底起什么作用以及如何使用它来解决我遇到的特定问题。
答案1
环境变量TEXMFCNF
告诉 TeX(或者更确切地说,kpathsea
TeX 在典型发行版中使用的库)在哪里查找texmf.cnf
文件。(您可以键入以查看将拾取的文件kpsewhich texmf.cnf
的位置。)texmf.cnf
对我来说,默认情况下kpsewhich texmf.cnf
显示/usr/local/texlive/2017/texmf.cnf
。但是如果我设置TEXMFCNF
为其他内容:
% export TEXMFCNF='/tmp'
% kpsewhich texmf.cnf
warning: kpathsea: configuration file texmf.cnf not found in these directories: /tmp.
但是,如果我这样做,export TEXMFCNF='/tmp:'
kpathsea 将首先搜索/tmp
,然后再搜索默认系统目录(如/usr/local/texlive/2017/
或其他)。
所有这些的文档都在kpathsea
手册、章节中路径搜索 > 路径来源 > 配置文件, 和路径搜索 > 路径扩展 > 默认扩展(关于结肠的内容)。
texmf.cnf
因此,对于如何在用户主目录中维护本地文件的问题,答案是:
texmf.cnf
在主目录的某个位置(例如)创建一个名为的文件~/tex_config_dir
。将您想要的任何配置更改放入此文件中。在您的 shell 配置(
.bashrc
或.zshrc
您使用的任何配置)中的某个位置,将环境变量设置TEXMFCNF
为指向该目录,以冒号结尾。例如:export TEXMFCNF='~/tex_config_dir:'
在任何新的 shell 中(例如,重新启动终端后),键入
echo $TEXMFCNF
以确认其设置正确,并kpsewhich texmf.cnf
确认您的配置文件是被拾取的配置文件。尽情享受吧。
答案2
TEXMFCNF
是一个环境变量,说明在哪里可以找到texmf.cnf
。但是有一些怪癖:
TEXMFCNF
并不指向texmf.cnf
其自身,而是指向包含它的目录。它的值
:
最后可以有一个,这意味着如果未找到请继续搜索。
一个示例TEXMFCNF
设置(在类 Unix 系统上)是:
export TEXMFCNF=$HOME/.texlive:
这将搜索$HOME/.texlive/texmf.cnf
(如果在那里找不到,则搜索其他地方)。
我建议使用kpsewhich --all texmf.cnf
来测试你的设置是否成功。
答案3
kpathsea 会查找很多位置texmf.cnf
并且使用它能找到的所有位置:先前的 texmf.cnf 中的值会覆盖后续的 texmf.cnf 中的值。
主要texmf.cnf
位于texlive/2017/texmf-dist/web2c
。这永远不应改变。
中的那个texlive/2017
可用于个人更改(打开它查看注释)。但如果您不信任该位置,您可以使用web2c
其他 texmf 树的文件夹,例如 texmf-local。可以使用 显示所有可能位置的列表kpsewhich -show-path=cnf
。
您还可以使用 texmf.cnf 将变量 TEXMFCNF 设置为特定文件夹,但通常我认为没有必要。