ubuntu 中 texmf.cnf 的问题

ubuntu 中 texmf.cnf 的问题

我必须将 texmf.cnf 放在哪里,因为我的 ubuntu 16.LTS 中没有名为 /tex/2016 的目录,但有四个目录:texmf-config、texmf-dist、texmf-var、texmf-local,感谢您的回答

答案1

答案取决于几个问题:

  1. 有关该主题的更多信息在这里的问题中维基教科书材料在这里这里是有关 kpathsea 的几个资源之一, 和参见此处的 TeX Live 文档

  2. 不应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。对此的详细回答是这里的问题

  3. 如果您想要 下的本地 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
    

    这是答案的扩展诺伯特·普莱宁

相关内容