禁忌环境下X[m]的垂直对齐问题

禁忌环境下X[m]的垂直对齐问题

我学了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表示相对对齐的基线位于中间。它不表示单元格内容位于中间。在表格单元格中,tbm类似于对齐参数tb或 的默认值(中间)\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}

在此处输入图片描述

相关内容