为了与问答格式保持一致:
我在 Ubuntu Lucid 上,安装了冻结的 TexLive 2011。texdef
不幸的是,当我运行帮助中的一个示例(我安装了xspace
)时,我得到了:
$ texdef -t latex -l -p xspace
:
Compile error: Undefined control sequence.
问题是什么?
编辑:
此处讨论的版本:
$ texdef --version
texdef: Version 1.6 -- 2012/05/02
$ grep -A3 'ProvidesPackage' `kpsewhich currfile.sty`
\ProvidesPackage{currfile}[%
2012/05/06
v0.6
Provides the file path elements of the current input file]
答案1
此问题已在 2012 年 5 月 15 日起的 v1.7b 中修复加拿大运输安全局并从Bitbucket Mercurial 存储库包括一个TDS ZIP 文件便于安装。还有一个错误追踪器可以在此报告问题。报告问题之前,请确保您拥有最新发布的版本。
同样的情况也发生在currfile
:加拿大运输安全局,Bitbucket Mercurial 存储库。
答案2
值得庆幸的是,texdef
这是一个 Perl 脚本 - 因此我print $_
向 texpipe 添加了 一个,以观察结果 - 并且 texing 过程在以下位置崩溃:
! Undefined control sequence.
l.42 \currfile@realmainfilefalse
! Extra \fi.
l.53 \fi\fi
由于texdef
取决于currfile
,这一定是错误的来源——事实上,存在一些不匹配的定义:
$ grep -i '20..\|ifcurrfile@abspath' `kpsewhich currfile-abspath.sty`
2012/05/06
\newif\ifcurrfile@abspath@windows
\ifcurrfile@abspath@windows
$ grep -i '20..\|ifcurrfile@abspath' `kpsewhich currfile.sty`
2012/05/06
\RequirePackage{filehook}[2011/01/09]
\ifcurrfile@abspath
\ifcurrfile@abspath
\ifcurrfile@abspath
\ifcurrfile@abspath
\ifcurrfile@abspath
\ifcurrfile@abspath
\@namedef{[email protected]}{2011/01/09}%
$ grep 'ifcurrfile@' `kpsewhich currfile-abspath.sty`
\newif\ifcurrfile@abspath
\ifcurrfile@abspath
$ grep 'ifcurrfile@' `kpsewhich currfile.sty`
\let\ifcurrfile@realmainfile\relax
\expandafter\ifx\csname ifcurrfile@realmainfile\endcsname\relax
\ifcurrfile@abspath
\ifcurrfile@abspath
\ifcurrfile@realmainfile
\ifcurrfile@abspath
\ifcurrfile@abspath
\ifcurrfile@abspath
\ifcurrfile@realmainfile
\ifcurrfile@abspath
\ifcurrfile@fink
这两个方法似乎可以解决问题:
sed -i 's/ifcurrfile@abspath@windows/ifcurrfile@abspath/' `kpsewhich currfile-abspath.sty`
sed -i 's_\\let\\ifcurrfile@realmainfile_\\newif\\ifcurrfile@realmainfile\n\\let\\ifcurrfile@realmainfile_' `kpsewhich currfile.sty`
现在我可以愉快地运行示例命令行了:
$ texdef -t latex -l -p xspace
Defined by file 'xspace.sty':
\xspace
\xspaceaddexceptions
\xspaceremoveexception