texlive:个人“texmf.cnf”

texlive:个人“texmf.cnf”

我想知道向中添加个人配置的官方方法是什么texmf.cnf

出于这个原因,我特意想添加我自己的设置: 避免 LaTeX 控制台/日志输出中的换行符

但答案告诉你要修改/usr/local/texlive/2017/texmf.cnf,也就是不对。 每次安装新版本的 texlive、每次重新安装 texlive、每次购买新机器、每次清除系统磁盘时,您都必须修改texmf.cnf

所有个人配置都应位于用户的主目录下。

我听说过环境变量 TEXMFCNF,并在网上搜索如何使用它,但我还没有找到它到底起什么作用以及如何使用它来解决我遇到的特定问题。

答案1

环境变量TEXMFCNF告诉 TeX(或者更确切地说,kpathseaTeX 在典型发行版中使用的库)在哪里查找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因此,对于如何在用户主目录中维护本地文件的问题,答案是:

  1. texmf.cnf在主目录的某个位置(例如)创建一个名为的文件~/tex_config_dir。将您想要的任何配置更改放入此文件中。

  2. 在您的 shell 配置(.bashrc.zshrc您使用的任何配置)中的某个位置,将环境变量设置TEXMFCNF为指向该目录,以冒号结尾。例如:

    export TEXMFCNF='~/tex_config_dir:'
    
  3. 在任何新的 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 设置为特定文件夹,但通常我认为没有必要。

相关内容