如果加载了 breqn,则在 revtex4-1 中以逗号分隔的从属关系时会发生错误

如果加载了 breqn,则在 revtex4-1 中以逗号分隔的从属关系时会发生错误

我在尝试使用 breqn 包时遇到错误。

首先,下面的代码片段编译正常,没有任何问题。

\documentclass[aps,prl,twocolumn,floatfix]{revtex4-1}
\usepackage{breqn}
\begin{document}

\title[]{Title}
\author{Name~GivenName}
\affiliation{Department}
\maketitle
ABC
\end{document}

但是,如果我向从属关系添加更多内容(使用逗号),即 \affiliation{Department}\affiliation{Department, University}现在无法编译。为什么?我该如何修复?

我正在使用Texlive2013,已更新至最新版本。

答案1

breqn为活动逗号分配了含义,这通常不会造成任何损害,因为逗号不是活动的。但是,revtex类激活了它,因此活动逗号的含义变成了 分配的含义breqn,这只适用于数学模式,并且绝对不同于类想要的含义。

您可以在处理过程中重新分配正确的含义\maketitle(之后就不需要了)。

\documentclass[aps,prl,twocolumn,floatfix]{revtex4-1}
\usepackage{etoolbox}
\usepackage{breqn}
\usepackage{lipsum} % just for the example

\makeatletter
\preto\maketitle{%
  \begingroup\lccode`~=`,
  \lowercase{\endgroup
  \let\saved@breqn@active@comma~% save breqn active comma
  \let~}\active@comma % set the active comma to what revtex4-1 wants
}
\appto\maketitle{%
  \begingroup\lccode`~=`,
  \lowercase{\endgroup
  \let~}\saved@breqn@active@comma % undo the change
}
\makeatother

\begin{document}
\title[]{Title}
\author{Name~GivenName}
\affiliation{Department, University}
\maketitle

\lipsum

\end{document}

或者,忘记带有主动逗号的业务,然后发出

\makeatletter
\let\cat@comma@active\@empty
\makeatother

而不是那么复杂的代码。该类进行设置的主要目的revtex是使逗号成为首选换行点。

相关内容