在 Linux 机器(Linux Mint 11)上全新安装 TeXlive 时,我收到以下错误消息:
! LaTeX Error: File `scalefnt.sty' not found.
但文件在那里:
$ find /usr/ -name 'scalefnt.sty' -print
/usr/share/texmf-texlive/tex/latex/carlisle/scalefnt.sty
为什么pdflatex
没有找到?是不是 TeXLive 安装过程中出了什么 bug?
到目前为止,我已经通过添加如下行解决了这个问题:
export TEXINPUTS=$TEXINPUTS:/usr/share/texmf-texlive/tex/latex/carlisle/
在我的.bashrc
文件中。现在我的文件中有 20 多行这样的代码.bashrc
。一定有更好的方法可以解决这个问题。
-- 更新 -- 运行texhash
并未解决问题。
$ sudo texhash
[sudo] password :
texhash: Updating /usr/local/share/texmf/ls-R...
texhash: Updating /var/lib/texmf/ls-R-TEXMFMAIN...
texhash: Updating /var/lib/texmf/ls-R-TEXLIVE...
texhash: Updating /var/lib/texmf/ls-R...
texhash: Done.
我认为ls-R
中的文件/usr/local/share/
是由创建的texhash
。它是空的。我在kpathsea
文档中找到了如何记录:export TEXMFLOG=/tmp/texmf.log
。运行后,pdflatex
我进入日志:
$ cat /tmp/texmf.log
1309254390 /var/lib/texmf/ls-R
1309254390 /usr/local/share/texmf/ls-R
1309254390 /usr/share/texmf/ls-R
1309254390 /usr/share/texmf-texlive/ls-R
1309254390 /var/lib/texmf/web2c/pdftex/pdflatex.fmt
1309254390 /usr/share/texmf-texlive/tex/latex/base/letter.cls
1309254390 /usr/share/texmf-texlive/tex/latex/base/letter.cls
1309254390 /usr/share/texmf-texlive/tex/latex/base/size10.clo
1309254390 /usr/share/texmf-texlive/tex/latex/base/size10.clo
1309254390 /usr/share/texmf-texlive/tex/generic/babel/babel.sty
1309254390 /usr/share/texmf-texlive/tex/generic/babel/babel.sty
1309254390 /usr/share/texmf-texlive/tex/generic/babel/frenchb.ldf
1309254390 /usr/share/texmf-texlive/tex/generic/babel/frenchb.ldf
1309254390 /usr/share/texmf-texlive/tex/generic/babel/babel.def
1309254390 /usr/share/texmf-texlive/tex/generic/babel/frenchb.cfg
1309254390 /usr/share/texmf-texlive/tex/generic/babel/frenchb.cfg
在我使用的 texlive 设置中,文件/usr/share/texmf/ls-R
和分别/usr/share/texmf-texlive/ls-R
链接至/var/lib/texmf/ls-R-TEXMFMAIN
和/var/lib/texmf/ls-R-TEXLIVE
。
我不明白为什么它不起作用,因为样式文件位于其中一个 ls-R 文件中:
$ grep scalefnt.sty /var/lib/texmf/ls-R-TEXLIVE
scalefnt.sty
这看起来像是 texlive 包安装过程中的一个错误(在 Linux Mint/Ubuntu 中)。
答案1
现代 TeX 发行版使用kpathsea 图书馆找到文件。
如果您的 TeX Live 找不到该文件,请尝试运行texhash
以刷新文件名数据库。在 Linux / Mac 上,运行sudo texhash
。
答案2
我遇到的情况是:在 Ubuntu 11.10 中,我定义了环境变量 TEXMFCN 来指向我的主目录
$TEXMFCNF=$HOME/texmf/web2c
出口TEXMFCNF
由于某种原因,在升级到 14.04 后,bash 对我的设置给出了不同的解释:搜索 latex 包仅有的在我的主目录中。因此,在 .bashrc 中注释掉该行
#$TEXMFCNF=$HOME/texmf/web2c#
# 导出 TEXMFCNF
对我来说很有效。通过包含所有现有文件 texmf.cfn 的路径来定义变量
$TEXMFCNF=/usr/share/texlive/texmf-dist/web2c:/usr/share/texmf/web2c:$HOME/texmf/web2c
出口TEXMFCNF
也有效。