我最近发现了 breqn 包,并一直在大量使用它。但是,我注意到我的文章的标题部分被这个包弄乱了。具体来说,我的文本的从属部分没有空格,编译器会missing $ inserted
在该\maketitle
行中抛出一个。在构建 MWE 时,我发现 breqn 包导致了这个故障。我该如何解决这个问题?
\documentclass[%
reprint,
amsmath,amssymb,
aps,floatfix
]{revtex4-2}
\usepackage{breqn}
\usepackage{blindtext}
\begin{document}
\title{Sample title}
\author{Aritra Das}
\affiliation{Dept. of Physics, Indian Institute of Technology, Kanpur, Uttar Pradesh 208016, India}
\date{\today}
\maketitle
\section{Introduction}
\blindtext
\end{document}
答案1
很好的发现!
该类revtex4-2
在逗号处于活动状态的设置下加载从属关系,并使用替换文本\active@comma
。但是breqn
以非常不同的方式定义活动逗号,仅在数学模式下有用。
breqn
解决方案当然是不要使用。如果你坚持要这样做:
\documentclass[
reprint,
amsmath,amssymb,
aps,floatfix
]{revtex4-2}
\usepackage{breqn}
\usepackage{blindtext}
%%% let's try and fix the issue
\begingroup\makeatletter
\catcode`,=\active
\global\let\breqn@comma,
\protected\gdef,{\ifmmode\expandafter\breqn@comma\else\expandafter\active@comma\fi}
\endgroup
\begin{document}
\title{Sample title}
\author{Aritra Das}
\affiliation{Dept. of Physics, Indian Institute of Technology, Kanpur, Uttar Pradesh 208016, India}
\date{\today}
\maketitle
\section{Introduction}
$a,b$
\blindtext
\end{document}
另一种解决方法是
\usepackage{etoolbox}
\makeatletter
\patchcmd\affils@present@group
{\frontmatter@affiliationfont}
{\frontmatter@affiliationfont\begingroup\lccode`~=`,\lowercase{\endgroup\let~}\active@comma}
{}{}
\makeatother
当从属关系确实用于排版时,它会为活动逗号分配预期的含义。