我在这里找到了这小段代码,它创建了一种新的列类型。但是,当我将它应用到我的表格时,只有左列是垂直对齐的。右边的列完全没有受到影响。
\usepackage{array}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash} m{#1} }
下面,我设置了我的表格并使用了这个新的列类型L
。但是,正如您可能看到的,只有第一列受到影响。
\begin{center}
\noindent\begin{tabular}{ | L{\dimexpr 0.4\linewidth-2\tabcolsep} | L{\dimexpr 0.4\linewidth-2\tabcolsep} | }
\hline
\multicolumn{1}{|c|}{\textbf{Header}} & \multicolumn{1}{c|}{\textbf{Header}} \\[2ex] \hline
TEXT
&
MORE TEXT \\[3ex]
\hline
TEXT
&
MORE TEXT \\[3ex]
\hline
\end{tabular}
\end{center}\break
我如何使两列都受到影响?
答案1
中的显式间距\\[3ex]
会影响垂直对齐。请\renewcommand\arraystretch
改用。
\documentclass{article}
\usepackage{array}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash} m{#1} }
\begin{document}
\renewcommand\arraystretch{1.3}
\begin{tabular}{ | L{\dimexpr 0.4\linewidth-2\tabcolsep} | L{\dimexpr 0.4\linewidth-2\tabcolsep} | }
\hline
TEXT TEXT TEXT TEXT TEXT
TEXT TEXT TEXT TEXT TEXT
TEXT TEXT TEXT TEXT TEXT
TEXT TEXT TEXT TEXT TEXT
&
MORE TEXT \\
\hline
TEXT
&
MORE TEXT MORE TEXT MORE TEXT
MORE TEXT MORE TEXT MORE TEXT
MORE TEXT MORE TEXT MORE TEXT
MORE TEXT MORE TEXT MORE TEXT \\
\hline
\end{tabular}
\end{document}
答案2
我认为对列说明符的含义存在误解m{}
。不是将单元格中的文本垂直居中。相反,文本的基线位于文本的垂直中心。然后同一行中所有单元格的基线都对齐。看起来垂直\\[3ex]
空间被添加到最后一列的文本下方。因此那里的基线位于该空间(即整个单元格)的垂直中心。这样文本就保持在顶部。即使您p{}
对第一列使用,第一个单元格仍将垂直居中,因为它的基线(在本例中为文本的底部)将与第二个单元格的基线对齐。
尝试一下这个实验:L{1mm}
在右侧添加一列并保持空白。现在,即使您将前两列更改为p{}
列,它们仍会垂直居中。
\noindent\begin{tabular}{ | p{2cm} | p{3cm} | L{1pt}}
\hline
\multicolumn{1}{|c|}{\textbf{Header}} & \multicolumn{1}{c|}{\textbf{Header}} \\[2ex] \hline
TEXT
&
MORE TEXT & \\[3ex]
\hline
TEXT
&
MORE TEXT & \\[3ex]
\hline
\end{tabular}