使用 \multicolumn 换行

使用 \multicolumn 换行

我想在 . 内换行(并居中)文本,\multicolumn并且Tabularxtabilary换行列外的文本\multicolumn{}。我还想定义非行定义的列宽\multicolumn{}。有什么想法吗?

例子:

% Unwrapped example
\begin{tabular}{l*{7}{c}}
Team              & P &\multicolumn{2}{c}{Points Collected bssss} & L & F  & \multicolumn{2}{c}{Points Collected blablabl} \\
\hline
Manchester United & 6 & 4 & 0 & 2 & 10 & 5 & 12  \\
Celtic            & 6 & 3 & 0 & 3 &  8 & 9 &  9  \\
Benfica           & 6 & 2 & 1 & 3 &  7 & 8 &  7  \\
FC Copenhagen     & 6 & 2 & 1 & 3 &  5 & 8 &  7  \\
\end{tabular} 

答案1

您可以使用新的列类型:

\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}

在包的帮助下array

完整代码:

\documentclass{article}

\usepackage{array}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}

\begin{document}
    % Unwrapped example
\begin{tabular}{l*{7}{c}}
Team              & P &\multicolumn{2}{C{1.5cm}}{Points Collected bssss} & L & F  & \multicolumn{2}{C{1.5cm}}{Points Collected blablabl} \\
\hline
Manchester United & 6 & 4 & 0 & 2 & 10 & 5 & 12  \\
Celtic            & 6 & 3 & 0 & 3 &  8 & 9 &  9  \\
Benfica           & 6 & 2 & 1 & 3 &  7 & 8 &  7  \\
FC Copenhagen     & 6 & 2 & 1 & 3 &  5 & 8 &  7  \\
\end{tabular} 

\end{document}

在此处输入图片描述

您可以根据自己的喜好使用m{#1}或者b{#1}代替。p{#1}

答案2

问题中关于 中不会发生换行的说法\multicolumn是不正确的。无论是在主表序言中还是在 中指定, par-mode 列类型( p、 )等中都会发生换行。如果您使用将列类型更改为 ,则它将是单行,因为不支持换行。X\multicolum\multicolumncc

唯一的复杂之处在于要知道宽度应该是多少,这里 X 单元格跨越了两个 X 列,因此设置\hsize为正常宽度的两倍X \hsize加上额外的空间以考虑列分隔和同样跨越的规则。我添加了规则以使跨越单元格和默认列之间的对齐更加清晰。

在此处输入图片描述

\documentclass{article}

\usepackage{tabularx}

\begin{document}

\begin{tabularx}{6cm}{|c|X|X|}

a& zzz zzzz zzzzz & yyy yyy yyyy yyy yyy y\\
b& \multicolumn{2}{>{\hsize=\dimexpr 2\hsize+2\tabcolsep+\arrayrulewidth}X|}{
qqq qqqq qqqq qqqq qqqq qqqq qqqq qqqq qqqq qqqq qqqq qqq qq qq q q q qqqq qq}\\
c& zzz zzzz zzzzz z z zzz zzzzz & yyy yyy yyyy yyy yyy yyyy yyyy y yyyyy yyy yy y y \\
\end{tabularx}
\end{document}

答案3

要使换行列具有固定宽度,并且右对齐或居中,您需要定义它们,例如使用array包和\newcolumntype

下面的代码显示了左L,右R和居中C列的可能定义,并将其应用于C您的 MWE:

\documentclass{article}
\usepackage{array}
\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}

\begin{document}
\begin{tabular}{l*{7}{c}}
Team              & P &\multicolumn{2}{C{2cm}}{Points Collected bssss} & L & F  & \multicolumn{2}{C{2cm}}{Points Collected blablabl} \\
\hline
Manchester United & 6 & 4 & 0 & 2 & 10 & 5 & 12  \\
Celtic            & 6 & 3 & 0 & 3 &  8 & 9 &  9  \\
Benfica           & 6 & 2 & 1 & 3 &  7 & 8 &  7  \\
FC Copenhagen     & 6 & 2 & 1 & 3 &  5 & 8 &  7  \\
\end{tabular}    
\end{document}

输出

相关内容