阵列中的垂直间距为双倍行距

阵列中的垂直间距为双倍行距

双倍间距似乎会弄乱数组内部的垂直间距。例如,下面的括号延伸得太高。有没有办法让数组内容在括号内垂直居中?

\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}

相关内容