运行 tlmgr update --all 后(我有一段时间没有运行它了)此代码(来自 dtx 文件所有版本的 REVTeX 4(版本 4.2 即将推出!)):
\expandafter\ifx\csname package@font\endcsname\@undefined\else
\expandafter\RequirePackage\expandafter{\csname package@font\endcsname}%
\fi
给出
This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017) (preloaded format=latex 2017.12.21) 22 DEC 2017 16:56
entering extended mode
restricted \write18 enabled.
%&-line parsing enabled.
**foo.tex
(./foo.tex
LaTeX2e <2017-04-15>
Babel <3.15> and hyphenation patterns for 84 language(s) loaded.
! Missing \endcsname inserted.
<to be read again>
\package@font
l.3 \fi
?
如果我在旧版 TeXLive 安装下运行,则不会发生此错误,直到运行更新后才遇到此错误。我如何找出问题所在?
谢谢,马克
答案1
这次测试
\expandafter\ifx\csname package@font\endcsname\@undefined
永远不会测试为真,因为\csname ljhgjghlj\encdname
返回 csname \let
,所以\relax
你总是这样做
\RequirePackage\expandafter{\csname package@font\endcsname}%
即使它没有被定义,在这种情况下你就会遇到错误。