我正在使用“aps”文档类撰写一篇论文,并且正在努力适应环境cases
——这对我来说通常非常有效。在我的其中一节中,我提出了两个我想要收集为“案例”的方程式:
\documentclass[aps,preprint,a4paper]{revtex4-1}
\usepackage{amsmath}
\newcommand{\delay}[1]{\mathcal{D}_{#1}}
\newcommand{\filter}{\mathcal{F}}
\begin{document}
\begin{equation}
\begin{cases}
s_1 =& \filter \delay{3} p_2' - \filter p_1, \\
s_1' =& \filter \delay{2'} p_3 - \filter p_1'.
\end{cases}
\label{eq:definition-s1}
\end{equation}
\end{document}
我希望这能正常工作,并且两个方程式与大开括号垂直对齐......但似乎布局是错误的: 这里我们看到括号相对于方程明显向上移动了。
知道为什么以及如何解决这个问题吗?
非常感谢您抽出时间,干杯!
答案1
这个问题肯定是由于你在文档中设置了双倍行距。下面的例子确实显示了这个问题:
\documentclass{article}
\usepackage{amsmath}
\usepackage{setspace}
\usepackage{etoolbox}
\newcommand{\filter}{\mathcal{F}}
\newcommand{\delay}[1]{\mathcal{D}_{#1}}
\begin{document}
\begin{equation}
\begin{cases}
s_1 =& \filter \delay{3} p_2' - \filter p_1, \\
s_1' =& \filter \delay{2'} p_3 - \filter p_1'.
\end{cases}
\label{eq:definition-s1}
\end{equation}
\doublespacing
\begin{equation}
\begin{cases}
s_1 =& \filter \delay{3} p_2' - \filter p_1, \\
s_1' =& \filter \delay{2'} p_3 - \filter p_1'.
\end{cases}
\label{eq:definition-s2}
\end{equation}
\makeatletter
\patchcmd{\env@cases}{1.2}{0.72}{}{}
\makeatother
\begin{equation}
\begin{cases}
s_1 =& \filter \delay{3} p_2' - \filter p_1, \\
s_1' =& \filter \delay{2'} p_3 - \filter p_1'.
\end{cases}
\label{eq:definition-s3}
\end{equation}
\end{document}
公式 1 正常,公式 2 在 范围内\doublespacing
,并显示问题。公式 3 是修复后的结果。魔法常数 0.72 为 1.2/1.667(1.2 是\arraystretch
使用的cases
,1.667
是\baselinestretch
双倍行距 使用的 )。
以下是对整个文档执行此操作的方法:
\documentclass{article}
\usepackage{amsmath}
\usepackage[doublespacing]{setspace}
\usepackage{etoolbox}
\newcommand{\filter}{\mathcal{F}}
\newcommand{\delay}[1]{\mathcal{D}_{#1}}
\makeatletter
\patchcmd{\env@cases}{1.2}{0.72}{}{}
\makeatother
\begin{document}
\begin{equation}
\begin{cases}
s_1 =& \filter \delay{3} p_2' - \filter p_1, \\
s_1' =& \filter \delay{2'} p_3 - \filter p_1'.
\end{cases}
\label{eq:definition-s1}
\end{equation}
\end{document}
您可能还想修复矩阵中的垂直间距:
\makeatletter
\patchcmd{\env@cases}{1.2}{0.72}{}{}
\pretocmd\env@matrix{\renewcommand{\arraystretch}{0.6}}{}{}
\makeatother
使用revtex4-1
正确的补丁应该会略有不同:
\documentclass[
aps,
preprint,
a4paper,
]{revtex4-1}
\usepackage{amsmath}
\usepackage{etoolbox}
\newcommand{\filter}{\mathcal{F}}
\newcommand{\delay}[1]{\mathcal{D}_{#1}}
\makeatletter
\preprintsty@sw{%
\patchcmd{\env@cases}{1.2}{0.72}{}{}%
\pretocmd\env@matrix{\renewcommand{\arraystretch}{0.6}}{}{}%
}{}
\makeatother
\begin{document}
\begin{equation}
\begin{cases}
s_1 =& \filter \delay{3} p_2' - \filter p_1, \\
s_1' =& \filter \delay{2'} p_3 - \filter p_1'.
\end{cases}
\qquad
\begin{bmatrix}
abc \\
def
\end{bmatrix}
\label{eq:definition-s1}
\end{equation}
\end{document}
这样,修补程序仅在preprint
活动时才会完成。
答案2
作为一种解决方法,您可以改用array
环境。
\documentclass{article}
\newcommand{\filter}{\mathcal{F}}
\newcommand{\delay}{\mathcal{D}}
\begin{document}
\begin{equation}
\bigg\{
\begin{array}{@{}ccc@{}}
s_1 &=& \filter \delay{3} p_2' - \filter p_1, \\
s_1' &=& \filter \delay{2'} p_3 - \filter p_1'.
\end{array}
\label{eq:definition-s1}
\end{equation}
\end{document}