我正在尝试将表格的最后一列设置为固定宽度,以便第二行的文本可以环绕。我尝试使用p{<width>}
来定义它,但无论我使用什么值,列的宽度都保持不变:
\begin{center}
\begin{tabular}{|l | c | c | c | p{3cm} |}
\hline
& COL1 & COL2 & COL3 \\
\hline
row text aligned to left & row & row & larger text that needs to
wrap \\
\hline
\end{tabular}
\end{center}
我也尝试过\newline
在单元格内部添加,但没有任何变化。
答案1
列定义的数量应该与实际使用的列数一致。
如果列定义号大于实际列号,TeX 会忽略最后的列定义。
如果列定义数低于实际列数,TeX 会给出错误:Extra alignment tab has been changed to \cr
。
c |
因此,正如 TeXnician 已经告诉您的那样,如果您有 4 列,则必须留下。
要使p{...}
列居中,只需将其放在>{\centering\arraybackslash}
其定义之前。
为了方便起见,您还可以定义一种新的列类型并使用它,就像我在 MWE 中的第二个表中所做的那样。
我还稍微增加了行高的重新定义\arraystretch
。
\documentclass{article}
\usepackage{array}
\newcolumntype{C}{>{\centering\arraybackslash}p{2.5cm}}% for convenience you can also define a new column type
\renewcommand*{\arraystretch}{1.2}%... and increase the row height
\begin{document}
If you have 4 columns in total:
\begin{center}
\begin{tabular}{|l | c | c | >{\centering\arraybackslash}p{2.5cm} |}
\hline
& COL1 & COL2 & COL3 \\
\hline
text aligned to left & centered & centered & larger text that needs to
wrap \\
\hline
\end{tabular}
\end{center}
If you have 5 columns in total:
\begin{center}
\begin{tabular}{|l | c | c | c | C |}
\hline
& COL1 & COL2 & COL3 & COL4 \\
\hline
text aligned to left & centered & centered & another cell & larger text that needs to
wrap \\
\hline
\end{tabular}
\end{center}
\end{document}