我必须将 texmf.cnf 放在哪里,因为我的 ubuntu 16.LTS 中没有名为 /tex/2016 的目录,但有四个目录:texmf-config、texmf-dist、texmf-var、texmf-local,感谢您的回答
答案1
答案取决于几个问题:
有关该主题的更多信息在这里的问题中;维基教科书材料在这里;这里是有关 kpathsea 的几个资源之一, 和参见此处的 TeX Live 文档。
不应
locate
盲目使用并任意更改文件。例如,Ubuntu 将其系统范围的配置存储在/etc/texmf/web2c/texmf.cnf
但通过使用其自己的一些 TeX 框架 (tex-common) 的脚本来管理它,如果安装了 texinfo 包或 lilypond 或 frescobaldi,即使安装了 vanilla TeXLive 2016(或 install-tl-ubuntu,它将符号链接放在 /opt 中,但不会更改下面的位置),也会出现这些脚本。/etc/texmf/web2c/texmf.cnf
使用 vanilla TL 或同等版本不一定能找到该文件kpsewhich -var-value TEXMFCNF
(如下所示),但使用 Ubuntu 打包版本时应该能找到它。但我还没有运行sudo dpkg --configure tex-common
。因此,如果您拥有 TeX Live 的 Ubuntu 软件包版本,或者安装了 texinfo、lilypond 或 frescobaldi,即使您在 Ubuntu 上拥有 vanilla TL 或同等版本,
locate
也会至少显示以下内容:$ locate texmf.cnf /etc/texmf/web2c/texmf.cnf
如果你有 vanilla TL 或者类似产品,你可能会得到这个:
$ locate texmf.cnf /usr/local/texlive/2016/texmf.cnf /usr/local/texlive/2016/texmf-dist/web2c/texmf.cnf
或这个:
$ locate texmf.cnf /etc/texmf/web2c/texmf.cnf /usr/local/texlive/2016/texmf.cnf /usr/local/texlive/2016/texmf-dist/web2c/texmf.cnf
中的文件
/etc/texmf/web2c
由 Ubuntu 管理,不应更改,因为它将被覆盖。文件中是这么说的。可能存在不同的方法来添加或更改 Ubuntu 打包框架中的配置,但使用主目录中的本地更改允许 deja-dup 对其进行备份(参见下面的第 3 点),并允许您在系统升级、发行版更改等过程中保持个人更改的持久性。
如果您使用的是 TL2016 或同等版本,则中的文件
/usr/local/texlive/2016/texmf-dist/web2c/texmf.cnf
是主文件,不应更改。文件中也说明了这一点。一可以如果您有 vanilla TL 或同等产品,请修改网站范围的选项
/usr/local/texlive/2016/texmf.cnf
。对此的详细回答是这里的问题。如果您想要 下的本地 texmf.cnf 文件
$HOME
,请执行以下操作:a. 通过 获取TEXMFCONFIG 的值
kpsewhich -var-value TEXMFCONFIG
。b.
web2c
如果子目录不存在,则在该父目录下创建一个子目录。例如,如果父目录如下$HOME/.texlive2016/texmf-config
使用
mkdir -p $HOME/.texlive2016/texmf-config/web2c
c. 将本地的 texmf.cnf 放在子目录中
web2c
。d. 在您的
.profile
代码片段中执行类似下面的操作。使用美元符号和括号的变量替换将括号内的命令结果作为右值,并将其分配给变量名称。(编辑)下面的代码片段已被修改,以防止出现错误,例如,在更改发行版或重新安装后,当找不到 kpsewhich 时:## Find local config file, if needed testpg=kpsewhich if which "$testpg" 2> /dev/null; then temp=$(kpsewhich -var-value TEXMFCONFIG) if [ -e "$temp/web2c/texmf.cnf" ] ; then export TEXMFCNF=$temp/web2c: fi else echo "kpsewhich not found" fi
现在
kpsewhich -a texmf.cnf
应该找到你的本地文件,例如:$ kpsewhich -a texmf.cnf /home/username/.texlive2016/texmf-config/web2c/texmf.cnf /usr/local/texlive/2016/texmf.cnf /usr/local/texlive/2016/texmf-dist/web2c/texmf.cnf
这是答案的扩展诺伯特·普莱宁。