我学了tabu
一段时间,但还是无法解决垂直对齐的问题X[m]
。下面是最小的工作示例。
\documentclass{article}
\usepackage[linegoal]{tabu}\tracingtabu=2
\begin{document}
\begin{tabu} to\linewidth{|X[-2.5,c,m]|X[c]|X[c]|} \tabucline-
This is a counterexample. This is a counterexample. This is a counterexample.
This is a counterexample. This is a counterexample. This is a counterexample.
& \texttt X & xyz \\ \tabucline-
\end{tabu}
\end{document}
我想把第二列和第三列的内容垂直居中,但是如果我在tabu的前言部分把m设置在第二列和第三列,即
\begin{tabu} to\linewidth{|X[-2.5,c]|X[c,m]|X[c,m]|}
结果很奇怪,因为第二列和第三列的内容不是垂直居中。
但如果我把 m 放在第一列,即
\begin{tabu} to\linewidth{|X[-2.5,c,m]|X[c]|X[c]|}
那么我想要的结果就来了。
我想知道为什么以及如何解决。
答案1
m
表示相对对齐的基线位于中间。它不表示单元格内容位于中间。在表格单元格中,t
、b
和m
类似于对齐参数t
,b
或 的默认值(中间)\parbox
。
因此,|X[-2.5,c]|X[c,m]|X[c,m]|
您得到的是垂直对齐的顶部、中间、中间单元格,相对于彼此,而不是相对于单元格。如果第 2 列和第 3 列中的内容位于单元格的中间,则第一个单元格内容的顶部必须位于中间,以便对齐 - 导致上方有大量空白。
相反,|X[-2.5,m]|X[c,m]|X[c,m]|
由于行中的所有单元格都有中间对齐方式,因此会为您提供中间对齐方式。
\begin{tabu} to\linewidth{|X[-2.5,c,m]|X[c,m]|X[c,m]|}
\tabucline-
This is a counterexample. This is a counterexample.
This is a counterexample.
This is a counterexample. This is a counterexample.
This is a counterexample.
& \texttt X & xyz \\ \tabucline-
\end{tabu}