![当通过 apt 安装其他 texlive-* 时,texdoc 会失败](https://linux22.com/image/423817/%E5%BD%93%E9%80%9A%E8%BF%87%20apt%20%E5%AE%89%E8%A3%85%E5%85%B6%E4%BB%96%20texlive-*%20%E6%97%B6%EF%BC%8Ctexdoc%20%E4%BC%9A%E5%A4%B1%E8%B4%A5.png)
我在 Ubuntu 20.04 中正确安装了“texlive2020-20200406.iso”中的 TexLive,并且我用它写了一段时间的报告。最近,我通过终端命令找到了一些软件包,apt search texlive
并安装了其中一些。从那时起,该命令texdoc
就无法再搜索文档了。我确信该命令以前运行良好。
例如:该命令texdoc beamer
之前打开的是‘beameruserguide.pdf’,但现在它在另一路径下打开一个 beamer 示例。
看起来通过安装的软件包apt
覆盖了从“iso”文件安装的软件包的路径。
apt list --installed | grep texlive
给出以下列表:
texlive-base/focal,focal,now 2019.20200218-1 all [installed,automatic]
texlive-binaries/focal,now 2019.20190605.51237-3build2 amd64 [installed,automatic]
texlive-font-utils/focal,focal,now 2019.202000218-1 all [installed,automatic]
texlive-fonts-extra-links/focal,focal,now 2019.202000218-1 all [installed,automatic]
texlive-fonts-extra/focal,focal,now 2019.202000218-1 all [installed]
texlive-fonts-recommended/focal,focal,now 2019.20200218-1 all [installed,automatic]
texlive-lang-chinese/focal,focal,now 2019.20200218-1 all [installed]
texlive-lang-cjk/focal,focal,now 2019.20200218-1 all [installed,automatic]
texlive-lang-japanese/focal,focal,now 2019.20200218-1 all [installed,automatic]
texlive-lang-korean/focal,focal,now 2019.20200218-1 all [installed,automatic]
texlive-lang-other/focal,focal,now 2019.20200218-1 all [installed,automatic]
texlive-latex-base/focal,focal,now 2019.20200218-1 all [installed,automatic]
texlive-latex-extra/focal,focal,now 2019.202000218-1 all [installed,automatic]
texlive-latex-recommended/focal,focal,now 2019.20200218-1 all [installed,automatic]
texlive-pictures/focal,focal,now 2019.20200218-1 all [installed,automatic]
texlive-plain-generic/focal,focal,now 2019.202000218-1 all [installed,automatic]
如果您能帮助我解决这个问题我将非常感激。
补充:路径是通过编辑‘~/.bashrc’设置的,如下所示(从‘.iso’安装后)
export MANPATH=${MANPATH}:/usr/local/texlive/2020/texmf-dist/doc/man
export INFOPATH=${INFOPATH}:/usr/local/texlive/2020/texmf-dist/doc/info
export PATH=${PATH}:/usr/local/texlive/2020/bin/x86_64-linux
加法:命令which texdoc
和echo $PATH
输出:
# which texdoc
/usr/bin/texdoc
(为了更容易阅读我会换行)
# echo $PATH
/home/xiaocy/.local/bin:
/usr/local/sbin:
/usr/local/bin:
/usr/sbin:/usr/bin:
/sbin:
/bin:
/usr/games:
/usr/local/games:
/snap/bin:
/usr/local/texlive/2020/bin/x86_64-linux:
/usr/local/texlive/2020/bin/x86_64-linux:
/usr/local/texlive/2020/bin/x86_64-linux
结论
该问题是由于路径覆盖引起的。修改~/.bashrc
如下~/.profile
内容可以解决这个问题。
export MANPATH=/usr/local/texlive/2020/texmf-dist/doc/man:${MANPATH}
export INFOPATH=/usr/local/texlive/2020/texmf-dist/doc/info:${INFOPATH}
export PATH=/usr/local/texlive/2020/bin/x86_64-linux:${PATH}
我不知道是否可以自己得出这个结论。这个结论是在@daleif(见评论)的帮助下得出的。非常感谢!
答案1
这是一个常见的错误。首先,操作系统从左到右搜索 PATH。(此处路径用冒号分隔)。然后它将每个路径部分附加到函数调用,直到找到第一个。这里有两个 latex 安装:apt 安装和一个通过 ISO 的 TL2020。由于 apt 安装以通过 找到的方式添加了 texlive 内容/usr/bin/
,因此我们需要将 TL2020 部分放在 之前/usr/bin/
。标准方法是确保前置TL2020 路径。
因此使用
export MANPATH=/usr/local/texlive/2020/texmf-dist/doc/man:${MANPATH}
export INFOPATH=/usr/local/texlive/2020/texmf-dist/doc/info:${INFOPATH}
export PATH=/usr/local/texlive/2020/bin/x86_64-linux:${PATH}
不是
export MANPATH=${MANPATH}:/usr/local/texlive/2020/texmf-dist/doc/man
export INFOPATH=${INFOPATH}:/usr/local/texlive/2020/texmf-dist/doc/info
export PATH=${PATH}:/usr/local/texlive/2020/bin/x86_64-linux
此外,请确保还将其添加到.profile
(您需要注销并再次登录以使.profile
编辑生效)。这是因为通过菜单或双击文件启动的任何编辑器都看不到任何与 Bash 相关的内容,因此永远不会看到更改。