冻结的 TexLive 2011 中 texdef (currfile) 存在错误

冻结的 TexLive 2011 中 texdef (currfile) 存在错误

为了与问答格式保持一致:

我在 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

相关内容