当我增加表格的 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
,行的高度和深度会增加,因此通常顶行上方的空间会比最后一行下方的空间增加更多。
在表格中,表格行一个堆叠在另一个之上并且没有间距,并且通过添加\strut
0 宽度规则来实现均匀间距,该规则将高度和深度设置为正常基线间距。\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}