在表格环境中使用 p{width} 定义列宽

在表格环境中使用 p{width} 定义列宽

我正在尝试将表格的最后一列设置为固定宽度,以便第二行的文本可以环绕。我尝试使用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}

在此处输入图片描述

相关内容