LaTeX 如何查找包文件?

LaTeX 如何查找包文件?

在 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

也有效。

相关内容