我想在 . 内换行(并居中)文本,\multicolumn
并且Tabularx
只tabilary
换行列外的文本\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
\multicolumn
c
c
唯一的复杂之处在于要知道宽度应该是多少,这里 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}