未定义的控制序列 pdftex_strcmp fontspec

未定义的控制序列 pdftex_strcmp fontspec

我正在尝试在 CentOs 机器上使用 latex。我已在 Windows 机器上运行它。我安装了 texlive-*。我正在使用fontspec并最终将其从我的 Windows 机器复制到/usr/share/texmf/tex/xelatex/fontspec

然后我遇到了一个问题,它说我缺少expl3软件包。所以我把整个 l3kernel 文件夹从我的 windows 机器复制到/usr/share/texmf/tex/latex/l3kernel

我在此文件中遇到的问题/usr/share/texmf/tex/latex/l3kernel/expl3-code.tex 是:

! Undefined control sequence.
\__str_if_eq_x:nn #1#2->\pdftex_strcmp:D
                                     {#1}{#2}
l.221   }

The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.

我正在执行:xelatex test.tex。但test.tex在这行失败:

\usepackage{fontspec}

我已经搜索了一个多小时,但仍然不知道发生了什么。我读到的最接近的答案是,也许通过运行 xelatex,我没有按照以下说明运行 pdftex 包:这个答案

更新 我刚看到我有 texlive 2007。我认为当时没有包含 pdftex 包?我正在寻找如何将 texlive 至少更新到 2011。

答案1

正如 egreg 所说,您应该删除您的发行版包并用独立的 texlive 安装替换它。

之后,您可以随时更新软件包,而不必等待打包者完成。您可以使用出色的 tlmgr 程序来搜索软件包 - 通常不会由 linux 发行版 texlive 软件包捆绑。您可以选择安装哪些软件包:仅安装您需要的软件包、全部或选定的软件包集。如果您没有管理员权限,您可以在 $HOME 上进行本地安装。

这确实是一种获取 TeX 的更好方法,你的发行版打包程序显然在 2007 年就决定,他正在浪费时间为 CentOS 制作软件包,所以放弃了这种方法。

安装描述这里 不要忘记使用 yum 卸载你的 texlive 2007 包,否则可能会发生冲突。

答案2

对于那些在使用字体规范包时遇到困难的人来说,如果您不断收到“未定义的控制序列”错误,这就是我发现的解决方法!

就我而言,几个小时后我发现问题不是 Lyx 或序言中的定义。问题的根源是 MiKTeX。有时您需要更新您尝试使用的软件包,以便做到这一点:

  1. 转至 MiKTeX 更新
  2. 更新源 -> 我想要从...获取软件包 使用最近的软件包存储库 -> 下一步
  3. 选择您发现导致错误的 fontspec 包或包 -: 下一步
  4. 软件包将被更新 -> 打开 lyx 并在解决这些糟糕的错误后再次享受生活 ;)

相关内容