我正在尝试 Will Robertson 的回答这个问题无法正确编译。查看日志输出,似乎老的正在加载某个软件包的版本,而不是新的一。
更详细地说,我尝试测试的包(unicode-math
)表示需要几个软件包的最新版本(这里最关键的似乎是fontspec
)所以我下载了它们并把它们放到我的用户 texmf
树。但是,当我编译测试文件时,系统文件被加载。尽管请求文件指定的版本比系统版本提供的版本要晚,和当我这样做的时候
卡普塞维德
fontspec.sty
然后我的版本已返回。
梅威瑟:
TeX Live 2009(TeX Live 2010 有正确版本的软件包,但我的发行版自带的是 2009 版),带有unicode-math
, fontspec
,expl3
,以及xpackages
来自 CTAN(根据 页面unicode-math
)。
test.tex
:
\documentclass{article}
\usepackage{unicode-math}
\begin{document}
\end{document}
两个都
xelatex test.tex
lualatex test.tex
抱怨。稍后在加载某些字体时会出现抱怨,但考虑到fontspec
加载了错误的包,我猜错误就出在那里,而不是 TeX 实际抱怨的时候。要确认位置:
tmp% kpsewhich fontspec.sty
/home/astacey/texmf/tex/latex/bzr/unmodified/fontspec/fontspec.sty
但是 TeX 的输出(稍微压缩了一下):
tmp% xelatex test.tex
This is XeTeX, Version 3.1415926-2.2-0.9995.2 (TeX Live 2009/Debian)
restricted \write18 enabled.
entering extended mode
(./test.tex
...
(/home/astacey/texmf/tex/latex/bzr/unmodified/unicode-math/unicode-math.sty
...
(/home/astacey/texmf/tex/latex/bzr/unmodified/xpackages/xparse.sty)
(/home/astacey/texmf/tex/latex/bzr/unmodified/xpackages/l3keys2e.sty)
(/usr/share/texmf-texlive/tex/xelatex/fontspec/fontspec.sty
...
注意一些软件包正在从我的本地树中被拉出来texmf
,只有这个没有。
答案1
原来,这个问题的答案是,不同的程序向 kpathsea 引擎传递了不同的选项,决定在哪里查找它们的包。由于我调用了xelatex
,所以像 这样的位置的包texmf/tex/xelatex
比树中其他地方的包更受青睐texmf
。当我kpsewhich
在命令行上运行时,它不知道我打算使用,xelatex
所以只是到处寻找。将 fontspec 包移动到 下的目录~/texmf/tex/xelatex
解决了该问题。
我还看到kpsewhich
可以提供选项“-engine X”来使其特定于搜索引擎。
(注意:这个特定于程序的行为似乎覆盖了 Caramdir 在问题评论中提到的按日期选择机制。
而且,这并不能解决所有问题,因为我现在遇到了字体生成问题;我目前正在下载 TL2010,看看是否能一次性解决所有问题。)
答案2
这在某种程度上依赖于 LaTeX 发行版,但碰巧的是,我也在使用 TeXLive 的一个版本。(2007,因为我已经对我的发行版进行过一些升级。)
包文件仅位于本地或用户 texmf-tree 中是不够的。您还必须使用 TeXLive 注册它们。从命令提示符运行texhash
。(在 ubuntu 上,我似乎记得这需要 root 权限,所以这sudo texhash
就是您所需要的。)
假如TeXLive 知道您的用户 texmf-tree 存在,运行此命令应该会导致它扫描该树以及其他地方,并了解它可以在那里找到哪些包。
如果这不起作用,那么 TeXLive 需要知道您的用户 texmf-tree。(我认为如何设置它是一个单独的问题。)或者,您可以运行sudo texhash path_to_user_texmf
。但是,既然您说用户树中的某些包确实被调用了,那么这个问题似乎已经解决了。
答案3
这很奇怪...如果 kpsewhich 返回了 fontspec 的正确路径,我不明白为什么它没有被加载。也许可以尝试将旧版本的包完全移出 texmf 树,这样就只有新版本存在了?
TL2010 即将上市(现已上市这里现在它还在制作中(但正在刻录到 DVD 以供正式发布),希望能缓解这个问题。