当单元格高度被 \arraystretch 拉伸时,如何垂直居中单元格内容?

当单元格高度被 \arraystretch 拉伸时,如何垂直居中单元格内容?
\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。结果如下。您可以看到,正是这样一个支柱在实际文本的上方和下方创建了空间。

在此处输入图片描述

相关内容