将选定的整行置于表格中央

将选定的整行置于表格中央

我知道我可以\multicolumn{}{}{}使表格中单个单元格居中,并且单元格不居中,但是使给定行中的所有单元格居中的最佳方法是什么?

\documentclass{article}
\begin{document}
    \begin{tabular}{*6{l}}
    Name1 & Name2 & Name3 & Name4 & Name5 & Name6\\
    Type1 & Type2 & Type3 & Type4 & Type5 & Type6\\ % <- center this row
    Item1 & Item2 & Item3 & Item4 & Item5 & Item6\\
    Item7 & Item8 & Item9 & Item10 & Item11 & Item12\\
    \end{tabular}
\end{document}

答案1

一种方法是定义一个接受 6 个参数并将它应用于\multicolumn每个参数的宏:

在此处输入图片描述

代码:

\documentclass{article}

\newcommand*{\Mc}[1]{\multicolumn{1}{c}{#1}}%
\newcommand*{\CenterRow}[6]{%
    \Mc{#1}&\Mc{#2}&\Mc{#3}&\Mc{#4}&\Mc{#5}&\Mc{#6}%
}%

\begin{document}
    \begin{tabular}{*6{l}}
    Name1 & Name2 & Name3 & Name4 & Name5 & Name6\\
    \CenterRow{Type1}{Type2}{Type3}{Type4}{Type5}{Type6}\\ % <- center this row
    Item1 & Item2 & Item3 & Item4 & Item5 & Item6\\
    Item7 & Item8 & Item9 & Item10 & Item11 & Item12\\
    \end{tabular}
\end{document}

或者,如果您想保留相同的语法,您可以定义一个接受以 分隔的参数的宏&

笔记:

  • 这会产生与上述相同的结果,但我不确定这可能会导致什么其他问题。

代码:

\documentclass{article}

\newcommand*{\Mc}[1]{\multicolumn{1}{c}{#1}}%

\newcommand*{\CenterRow}[6]{}% Make sure we not overwriting an existing macro
\def\CenterRow #1 & #2 & #3 & #4 & #5 & #6\\{%
    \Mc{#1}&\Mc{#2}&\Mc{#3}&\Mc{#4}&\Mc{#5}&\Mc{#6} \\%
}%

\begin{document}
    \begin{tabular}{*6{l}}
    Name1 & Name2 & Name3 & Name4 & Name5 & Name6\\
    \CenterRow Type1 & Type2 & Type3 & Type4 & Type5 & Type6 \\ % <- center this row
    Item1 & Item2 & Item3 & Item4 & Item5 & Item6\\
    Item7 & Item8 & Item9 & Item10 & Item11 & Item12\\
    \end{tabular}
\end{document}

答案2

对于此类表格,ConTeXt 提供了更漂亮的界面。例如,使用自然表格,您可以使用

\startsetups table:setup
  \setupTABLE[align=flushleft, frame=off]
  \setupTABLE[row][2][align=middle]
\stopsetups

\starttext
  \startTABLE[setups={table:setup}]
    \NC LongName1 \NC LongName2 \NC LongName3 \NC LongName4 \NC LongName5 \NC LongName6\NC\NR
    \NC Type1 \NC Type2 \NC Type3 \NC Type4 \NC Type5 \NC Type6\NC\NR % <- center this row
    \NC Item1 \NC Item2 \NC Item3 \NC Item4 \NC Item5 \NC Item6\NC\NR
    \NC Item7 \NC Item8 \NC Item9 \NC Item10 \NC Item11 \NC Item12\NC\NR
  \stopTABLE
\stoptext

或者如果你不确定要将哪一行居中对齐,请使用

\starttext
\startTEXpage[offset=3mm]
  \bTABLE[align=flushleft, frame=off]
    \bTR 
       \bTD LongName1 \eTD \bTD LongName2 \eTD \bTD LongName3 \eTD \bTD LongName4 \eTD \bTD LongName5 \eTD \bTD LongName6\eTD
    \eTR
    \bTR[align=middle] 
       \bTD Type1 \eTD \bTD Type2 \eTD \bTD Type3 \eTD \bTD Type4 \eTD \bTD Type5 \eTD \bTD Type6\eTD
    \eTR 
    \bTR 
       \bTD Item1 \eTD \bTD Item2 \eTD \bTD Item3 \eTD \bTD Item4 \eTD \bTD Item5 \eTD \bTD Item6\eTD
     \eTR
    \bTR 
       \bTD Item7 \eTD \bTD Item8 \eTD \bTD Item9 \eTD \bTD Item10 \eTD \bTD Item11 \eTD \bTD Item12\eTD
    \eTR
  \eTABLE
\stopTEXpage
\stoptext

这两个都给了

在此处输入图片描述

相关内容