我如何继续使用 pageslts 和 tikz?

我如何继续使用 pageslts 和 tikz?

我最近对 ​​TeX Live 安装进行了更新,似乎导致两个软件包不兼容:pagesltstikz。以下文档无法编译:

\documentclass{article}
\usepackage{pageslts}
\usepackage{tikz}
\begin{document}
  \pagenumbering{arabic}
  abc
\end{document}

我收到的错误是:

! Undefined control sequence.
\@currname ->\@nil

l.10 \begin{document}

可以通过在tikz加载之前加载来解决此问题pageslts。但是,这需要我加载tikz自定义类和包文件,因为我pageslts在那里使用。如果可能的话,我想避免这样做,因为我的大多数文档都不需要 TikZ,而且我宁愿在不需要时不加载它。

显然,一种方法是创建类/包选项,允许我指定何时需要 TikZ。但是,我想知道这是否是最好的方法,或者是否有更好的解决方案。

现在,pageslts这给我带来了很大的麻烦——这是我发现的第二个必须先加载的包。(至少第一种情况给了我一个有点帮助的错误信息。)

因此,如果有一个很好的替代品pageslts,我会很有兴趣了解它,因为这个包似乎突然变得相当挑剔,而且不再与其他任何东西相处融洽!

答案1

该错误出现在 的第 115-119 行pageslts.sty,其中在循环\@currname中使用\@for,留下 的定义\@currname,这是意料之外的。

\@currname如果我将的三个出现位置改为\next,问题就消失了。

当然,\listfiles第 111 行的出现也是错误的,但这无关紧要,只是令人讨厌。


该宏\@currname用于在程序包加载期间,用于创建堆栈,以便正确地将的状态重置@为字母或“其他字符”。 它还被重新用作循环\listfiles的占位符\@for,但在这种情况下这不是问题,因为\listfiles仅在作业结束时处理。 类似的用法是错误的,因为它显然会干扰程序包加载。 如果您在测试文件的开头pageslts添加,您会得到\errorcontextlines=100

! Undefined control sequence.
\@currname ->\@nil 

\@pushfilename ...ef \@currnamestack {{\@currname 
                                                  }{\@currext }{\the \catcod...

\@onefilewithoptions #1[#2][#3]#4->\@pushfilename 
                                                  \xdef \@currname {#1}\glob...

\reserved@a ...ds[{}][{2007/11/11}]\@pkgextension 
                                                  \relax 
<argument> ...uirePackage {pdftexcmds}[2007/11/11]
                                                  \expandafter \ifx \csname ...

\@secondoftwo #1#2->#2

\@begindocumenthook ...base}[2009/07/12]\fi \fi }}
                                                   \pgfsys@atbegindocument \...

\document ...ent \@firstofone \@begindocumenthook 
                                                  \ifdim \topskip <1sp\globa...
l.5 \begin{document}

说明问题出在处理的时候\RequirePackage{pdftexcmds}

答案2

这确实是一个错误。感谢您报告此问题!截至 2015 年 8 月 17 日的版本 1.2e(应该很快就会发布加拿大运输安全局,已于 2015-08-17 21:24 CEST 提交)使用\next,如建议的那样egreg 的回答,并且不再包含\listfiles。(示例文件仍然包含\listfiles,因为可以预料,示例可能出现的问题可能与使用其他软件包的旧版本或新版本有关。)请求的atveryend日期已过时之后2015/08/01,因为在此日期之前没有新版本,并且下一个版本(无论是 2015/08/18 还是 2016/01/01)肯定会修复此问题。 - 我将此答案标记为“社区维基”,upvotes并且accepted answer(以我的拙见)应该转到egreg 的回答

相关内容