在LaTex中将文本居中于多行单元格

26

这可能需要通过一个例子来更好地解释。我有以下表格,其中“A”单元格跨越两行,“B”单元格跨越两列。

\begin{table}[htdp]
\begin{tabular}{l|r|r}
\multirow{2}{*}{A} & \multicolumn{2}{c}{B} \\
  & B1 & B2 \\
a & b1 & b2 \\
a & b1 & b2 \\
\end{tabular}
\end{table}
 _ _ _ _ _ _ _ _ _ _ _ _ 
|A      |_ _ _ _B_ _ _ _|
|_ _ _ _|_ _B1_ |_ _B2_ |
|a      |     b1|     b2|
|a      |     b1|     b2|
|a      |     b1|     b2|
|_ _ _ _| _ _ _ |_ _ _ _|

我希望只将"A"单元格中的文本居中,而保留其它列左对齐。期望效果如下:

 _ _ _ _ _ _ _ _ _ _ _ _ 
|   A   |_ _ _ _B_ _ _ _|
|_ _ _ _|_ _B1_ |_ _B2_ |
|a      |     b1|     b2|
|a      |     b1|     b2|
|a      |     b1|     b2|
|_ _ _ _| _ _ _ |_ _ _ _|

我相信这一定很简单,但我似乎无法掌握它。


顺便说一句,感谢您提供了一个清晰的示例,说明您想要实现什么! - DMI
谢谢,戴夫 :-) 我在想第二个表格是否有点显而易见,但我觉得再清楚不过了。 - Paul
4个回答

18

认为你需要使用一个假的\multicolumn来实现:

\multicolumn{1}{c}{\multirow{2}{*}{A}} & \multicolumn{2}{c}B} \\

这篇 FAQ 的链接给予了我灵感。


1
这意味着:! 放错了 \omit。 \multispan -> \omit @multispan。不确定它的含义是什么 :-S - Paul
尝试交换多行/多列的嵌套?(将多列放在外面)。抱歉,我这里没有安装 LaTeX 以进行测试! - DMI
修改答案,将multirow放在multicolumn内部而不是反过来 - 抱歉,我想我把嵌套搞反了! - DMI

16

我遇到了类似的问题,但不得不使用\multirow{指定宽度}{}而不是\multirow{*}{}。在这种情况下,嵌套多行功能于多列中无法正常工作。

我发现使用\multirow{指定宽度}{\centering 文本}可以解决问题。


如果您想要在多行文本中居中对齐,这种方法特别有效,而另一种解决方案只能对齐整个块。谢谢 :) - jevon
我认为你的参数顺序错了。nrows应该在width之前,对吗? - lindhe

7
\multirow{2}{*}{\hfil A}

\hfil会自动计算单元格的宽度并插入半个宽度的空格。

要插入一个完整单元格宽度的空格,从而使单元格右对齐,请使用\hfill。还有\vfil\vfill的类似物。


它以最简单的方式完成了任务。谢谢! - Sooora

1
这可能对某些人有帮助。
\begin{tabular}{|c c | c|c|c|}
\hline
\multicolumn{2}{|c}{\multirow{2}{*}{Modulation}} & \multicolumn{3}{|c|}{M} \\
\cline{3-5}
&  & 2  & 4 & 8 \\
\hline
   \multirow{3}*{\hfil SNR=$\begin{cases}  \\  \\  \end{cases}$}    &  STMA &  xx dB & xx dB & xx dB\\
      &  QTMA    & xx dB & xx dB & xx dB \\
      &  POSTMA & xx dB & xx dB & xx dB\\
\hline
\end{tabular}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接