如何创建具有固定列宽的表格

如何创建具有固定列宽的表格

我输入了以下代码:

\begin{tabular} {l{4cm} l{5cm}}
hello & foo\\
hello & bar\\
\end{tabular}

它给了我一个错误:

! LaTeX 错误:数组 arg 中的非法字符。

请参阅 LaTeX 手册或 LaTeX Companion 了解解释。输入 H 可立即获得帮助。...

                                               l.199 \begin{tabular} {l{4cm} l{5cm}}

为什么不起作用?我正在尝试制作一个表格,表格的文本左对齐,单元格宽度固定。如果我只指定{ll},它就可以工作,但如果指定宽度,它就会给出错误。

答案1

标准列类型为lcrp分别代表left alignedcenteredright alignmentparbox

只有p- 类型可以有宽度参数,即p{somewidth},可以用任何尺寸/知道来width指定。TeXLaTeX

-类型p有效地\parbox允许包装文本和内容,这在l等类型中是不可能的(直接)实现的,例如itemizeenumerate列表。

例如,该array包提供了m用于垂直(“中间”)对齐的类型。除此之外,array还具有\newcolumntype允许定义其他列类型的宏,但是,基于现有的“基本”类型,即r、或lcp

tabularx包提供了X列类型并siunitx允许使用S列类型。

下面是一个显示宽度效果的小示例代码:

\begin{tabular}{|p{4cm}|p{6cm}|}将提供一个宽度为 的表格4cm + 5cm + 4\tabcolsep + 3\arrayrulewidth,因为每列都有左右\tabcolsep空间,后者默认为6pt;并且有三个|,因此3\arrayrulewidth添加了长度。

总体来说,甚至p{4cm}p{5cm}会比预想的还要宽9cm

\documentclass{article}



\begin{document}

\begin{tabular}{|p{4cm}|p{5cm}|}
\hline
foo & bar
\end{tabular}

\begin{tabular}{|@{}p{4cm}@{}|@{}p{5cm}@{}|}
\hline
foo & bar
\end{tabular}


{%
 \renewcommand{\arrayrulewidth}{0pt}%
 \begin{tabular}{@{}p{4cm}@{}@{}p{5cm}@{}}
   foo & bar
 \end{tabular}
}

\end{document}

答案2

序言中的这个解决方法解决了这个问题。您可以简单地使用C{width}居中条目。如果偏爱 raggedright 或 raggedleft,请将 C 替换为 L 或 R。

\usepackage{array}
\newcommand{\PreserveBackslash}[1]{\let\temp=\\#1\let\\=\temp}
\newcolumntype{C}[1]{>{\PreserveBackslash\centering}p{#1}}
\newcolumntype{R}[1]{>{\PreserveBackslash\raggedleft}p{#1}}
\newcolumntype{L}[1]{>{\PreserveBackslash\raggedright}p{#1}}

相关内容