breqn 软件包不兼容

breqn 软件包不兼容

编辑:为了清楚地了解这篇文章所问的问题,我把具体问题放在了文章的开头。

我想了解breqn.sty(v0.98a) 与 TexLive2009 中其他软件包不兼容的技术细节。这些不兼容性似乎在 TexLive 的后续版本中消失了,我想知道已经做了哪些更改来修复这些不兼容性?最后,下面引用的模糊且无用的错误消息意味着什么?


上述问题的背景如下:

在运行 TexLive 2009 的 amd64 linux 系统上,我发现该包breqn(v0.98a)必须是最后加载的包,否则会干扰某些其他包的加载,特别是listings(v1.4),xcolor(v2.11),以及graphicx(v1.0f)。

下面,我提供了一个生成错误的示例文档。

\documentclass{article}
\usepackage{breqn}
\usepackage{listings}
\begin{document}
Null.
\end{document}

使用以下方式编译本文档时产生的输出(包括错误消息)pdflatex是:

This is pdfTeX, Version 3.1415926-1.40.10 (TeX Live 2009/Debian)
entering extended mode
(./breqn.tex
LaTeX2e <2009/09/24>
Babel <v3.8l> and hyphenation patterns for english, usenglishmax, dumylang, nohyphenation, loaded.
(/usr/share/texmf-texlive/tex/latex/base/article.cls
Document Class: article 2007/10/19 v1.4h Standard LaTeX document class
(/usr/share/texmf-texlive/tex/latex/base/size10.clo))
(/usr/share/texmf-texlive/tex/latex/mh/breqn.sty
(/usr/share/texmf-texlive/tex/latex/mh/flexisym.sty
(/usr/share/texmf-texlive/tex/latex/mh/cmbase.sym)
(/usr/share/texmf-texlive/tex/latex/mh/mathstyle.sty))
(/usr/share/texmf-texlive/tex/latex/graphics/keyval.sty)
(/usr/share/texmf-texlive/tex/latex/tools/calc.sty))
(/usr/share/texmf-texlive/tex/latex/listings/listings.sty
! Missing number, treated as zero.
<to be read again> 
                   ^
l.44 \lst@InputCatcodes

?

breqn.sty当我在运行 MacTeX-2011 的 mac osx 10.6 系统上编译相同的代码时,无论何时加载,代码都会顺利编译而不会出现错误。

以下摘录自breqn手动的(第 6.1 节)确实指定了可能发生此类不兼容性:

由于它突破了 LaTeX 2ε 环境下的可能性,因此breqn当与其他包结合使用时,该包往往会破坏其他包,或者当存在任何内部重叠区域时,包本身也会出现故障;在某些情况下,成功使用可能取决于包的加载顺序。

答案1

breqn软件包已从 TeX Live 2009 中的版本彻底修订为 TeX Live 2010 中的版本(与 TeX Live 2011 中的版本相同)。

这个错误的原因是过早flexisym.sty更改了类别代码,因此所需的语法不再合法:要使其正常工作,必须具有类别代码 7 而不是 12。^\catcode`\^^@listings^

软件包的较新版本breqnflexisym延迟了文档开头的类别代码更改,因此软件包仍可以使用符号。这显然是和^^中的一个缺陷,但它解释了为什么最后加载可能会解决问题。breqnflexisymbreqn

答案2

该问题需要仔细追踪(因为我没有旧的分布,所以很难准确追踪)。

listings但是,根据您提供的错误消息,错误可能首先追溯到包中。

\lst@InputCatcodes如果文件存在,则调用该宏listings.cfg。您可以检查分布以查看是否存在差异吗?

相关内容