![阵列中的垂直间距为双倍行距](https://linux22.com/image/260136/%E9%98%B5%E5%88%97%E4%B8%AD%E7%9A%84%E5%9E%82%E7%9B%B4%E9%97%B4%E8%B7%9D%E4%B8%BA%E5%8F%8C%E5%80%8D%E8%A1%8C%E8%B7%9D.png)
双倍间距似乎会弄乱数组内部的垂直间距。例如,下面的括号延伸得太高。有没有办法让数组内容在括号内垂直居中?
\documentclass{article}
\usepackage[doublespacing]{setspace}
\begin{document}
$\left\{ \begin{array}{c} abcde \\ abcde \end{array} \right\}$
\end{document}
随着行距的增加,问题变得更加明显。例如,比较第一行上方的空间与第二行下方的空间:
\documentclass{article}
\begin{document}
\renewcommand\arraystretch{3}
$\left\{\begin{array}{c} abcde \\ abcde \end{array} \right\}$
\end{document}
答案1
最简单的(用 MWE 测试过,我没有尝试你的论文课程)是添加
\renewcommand\arraystretch{0.7}
该文件的序言。
答案2
我真的会避免在行内使用这种怪物。正如您所看到的,它不仅会弄乱间距,而且阅读时眼睛也会模糊。请smallmatrix
改用 a。
\documentclass{article}
\usepackage{amsmath}
\usepackage[doublespacing]{setspace}
\begin{document}
Lorem ipsum and you know $\left\{
\begin{smallmatrix} abcde \\ abcde \end{smallmatrix}
\right\}$
oh and a small matrix. I'm getting better at making up stupid sentences (or I
was until the last one).
$\left\{
\begin{array}{c} abcde \\ abcde \end{array}
\right\}$
It might speak for itself.
\end{document}
答案3
我可以通过手动删除第一个数组行之前的空格来获得我想要的输出,如下所示。但是,此解决方案需要根据行距的任何变化重新计算要删除的空格量。
\documentclass{article}
\usepackage[doublespacing]{setspace}
\begin{document}
$\left\{
\begin{array}{c} \\[-2.3em]
abcde \\ abcde
\end{array}
\right\}$
\end{document}
答案4
我采用了 Hendrik Vogt 的解决方案这里如下。(他对这个问题也有更清晰的讨论。)
\documentclass{article}
\usepackage[doublespacing]{setspace}
\usepackage{amsmath,etoolbox}
\makeatletter
\newif\ifcenter@asb@\center@asb@false
\def\center@arstrutbox{%
\setbox\@arstrutbox\hbox{$\vcenter{\box\@arstrutbox}$}%
}
\newcommand*{\CenteredArraystretch}[1]{%
\ifcenter@asb@\else
\pretocmd{\@mkpream}{\center@arstrutbox}{}{}%
\center@asb@true
\fi
\renewcommand{\arraystretch}{#1}%
}
\makeatother
\CenteredArraystretch{1}
\begin{document}
$\left\{ \begin{array}{c} abcde \\ abcde \end{array} \right\}$
\end{document}