arraystretch 增加时的垂直空间分布

arraystretch 增加时的垂直空间分布

当我增加表格的 arraystretch 时,文本顶部和底部之间的垂直空间分布不均匀。

这是为什么?我该怎么做才能使其均匀分布?

代码-

\documentclass[12pt]{article}
\renewcommand\arraystretch{10}

\begin{document}
\begin{tabular}{c}
\hline
This is a one row one column table.\\\hline
\end{tabular}
\end{document}

这是空间分布-

空间分布

答案1

这是众所周知的。我不知道具体原因,但我知道两种可能的解决方案:

  • makecell包定义了一个\setcellgapes命令,它允许您定义要添加到单元格的高度和深度。这些是通过命令添加的\makegapedcells(不适用于m列,如@Zarko 所述)。
  • cellspace包定义了一个最小单元格内容与其顶部或底部之间的垂直间距:\cellspacetoplimit\cellspacebottomlimit。它们应用于以字母为前缀的说明符的列中的单元格S(或者C如果您加载siunitx)。

演示:

\documentclass[12pt, landscape]{article}
\usepackage[margin=2cm]{geometry}
\usepackage{array, makecell, cellspace}
\setlength{\cellspacetoplimit}{13.2ex}
\setlength{\cellspacebottomlimit}{13.2ex}

\begin{document}

{\renewcommand\arraystretch{10}
\begin{tabular}{c}
\hline
This is a one row one column table.\\\hline
\end{tabular}}
\qquad
{\setcellgapes{13.2ex}\makegapedcells
\begin{tabular}{c}
\hline
This is a one row one column table.\\\hline
\end{tabular}
}
\qquad
\begin{tabular}{Sc}
\hline
This is a one row one column table.\\\hline
\end{tabular}

\end{document} 

在此处输入图片描述

答案2

不对称的原因是拉丁字母的高度通常大于深度,因此文本行的基线通常位于基线上方,30% 的空间位于基线下方。

因此,如果您使用双倍行距,您会看到相同的情况\baselinestretch,行的高度和深度会增加,因此通常顶行上方的空间会比最后一行下方的空间增加更多。

在表格中,表格行一个堆叠在另一个之上并且没有间距,并且通过添加\strut0 宽度规则来实现均匀间距,该规则将高度和深度设置为正常基线间距。\arraystretch通过简单地乘以支柱的尺寸来工作,因此由于其高度大于其深度,支柱的高度会获得更多的额外空间。

array包添加了一个额外的功能\addtorowheight,可以增加支柱的高度,您可以复制其内部结构以发出命令来增加深度,但实际上,如果您使用乘数来获得正确的深度,您总是可以通过添加(减去)来修复高度。所以

在此处输入图片描述

\documentclass[12pt]{article}
\usepackage{array,booktabs}
\renewcommand\arraystretch{25}
\setlength\extrarowheight{-5pt}

\begin{document}
\begin{tabular}{c}
\hline
This is a one row one column table.\\\hline
\end{tabular}
\end{document}

相关内容