我在尝试使用 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
是使逗号成为首选换行点。