![当单元格高度被 \arraystretch 拉伸时,如何垂直居中单元格内容?](https://linux22.com/image/283764/%E5%BD%93%E5%8D%95%E5%85%83%E6%A0%BC%E9%AB%98%E5%BA%A6%E8%A2%AB%20%5Carraystretch%20%E6%8B%89%E4%BC%B8%E6%97%B6%EF%BC%8C%E5%A6%82%E4%BD%95%E5%9E%82%E7%9B%B4%E5%B1%85%E4%B8%AD%E5%8D%95%E5%85%83%E6%A0%BC%E5%86%85%E5%AE%B9%EF%BC%9F.png)
\documentclass[preview,border=12pt,varwidth]{standalone}
\renewcommand\arraystretch{5}
\begin{document}
\begin{tabular}{|c|c|}\hline
Time & Monday \\\hline
16:00-16:30 &\\\hline
16:30-17:00 &\\\hline
\end{tabular}
\end{document}
当单元格高度被拉伸时,如何使单元格内容垂直居中\arraystretch
?
答案1
\documentclass[12pt]{article}
\usepackage[thinlines]{easytable}
\begin{document}
\begin{TAB}(r,1cm,2cm)[5pt]{|c|c|}{|c|c|c|}% (rows,min,max)[tabcolsep]{columns}{rows}
Time & Monday \\
16:00--16:30 & f \\
16:30--17:00 & f
\end{TAB}
\end{document}
答案2
为了代替\arraystretch
,我在第 1 列的每一行的开头添加了一个自制的支柱。
\documentclass[preview,border=12pt,varwidth]{standalone}
\usepackage{array}
%\renewcommand\arraystretch{5}
\def\mystrut{\rule[-6ex]{0ex}{14ex}}
\begin{document}
\begin{tabular}{|!{\mystrut}c|c|}\hline
Time & Monday \\\hline
16:00-16:30 &\\\hline
16:30-17:00 &\\\hline
\end{tabular}
\end{document}
为了解释发生了什么,\mystrut
这只是一个零宽度规则,从基线以下 6ex 延伸到基线以上 8ex(高度为 14ex)。通过将其放置在文本中,它会在文本上方和下方创建大量空间。我可以手动将其添加到表格的每一行,这需要额外的工作。为了避免这种情况,我使用了包!{}
的功能array
来实现结果(感谢 David Carlisle)。此!
功能会自动在表格的每一行上执行括号内的参数(同时保留\tabcolsep
,与 不同@{}
)。
为了演示\mystrut
此上下文中的内容,我在下面创建了一个几乎相同的宏,\visiblestrut
将其定义为 ,{\rule[-6ex]{1ex}{14ex}}
使其宽度为 1ex(而不是 0),然后手动将其放置在单词 之前Monday
。结果如下。您可以看到,正是这样一个支柱在实际文本的上方和下方创建了空间。