表格中的列和行填充

表格中的列和行填充

你们如何控制表格中的列填充?

更新

澄清一下,我正在寻找一种控制垂直和水平填充的方法。因此,如果我有一个简单的表格,如下面的代码片段所示,我可以填充列并使它们看起来不那么...丑陋。:P

\begin{tabular}{|l|l|}
    \hline
    column 1 & column 2 \\ 
    \hline
    I really would like this less & crammed\\
    \hline
\end{tabular}

我尝试使用该命令\vspace,但它在垂直线上留下了空隙。

答案1

tabular使用没有包的默认环境booktabs,并在环境之前和之后添加:

\bgroup
\def\arraystretch{1.5}%  1 is the default, change whatever you need
\begin{tabular}{|c|...}
...
\end{tabular}
\egroup

并且还使用列类型c而不是 l,如果您希望列之间有更多的水平空间,那么使用\setlength\tabcolsep{<whatever length>}

答案2

以下建议适用于tabular—— array类似结构,并且大多数过去适用于文本和数学模式,包括*matrix环境

垂直填充

使用@Herbert的答案可以以全局方式进行垂直填充。也就是说,<factor>使用以下方法重新定义数组拉伸因子

\renewcommand{\arraystretch}{<factor>}

然而,顾名思义,这是一个因素而不是长度。因此,很难提供一个足够的因子来添加(比如说)15pt每行的上方/下方。还有其他选项可用于此目的。

垂直填充也可以手动进行,也可以按行进行,使用可选参数结束一行tabular\\[<len>]其中<len>是任何熟悉的 TeX 长度。最后一种替代方法是使用设置\extrarowheight提供的长度array包裹

以下示例展示了上述三种可能性:

\documentclass{article}

\usepackage[landscape]{geometry}
\usepackage{array}

\begin{document}

% =========== FACTOR approach ===========
{\renewcommand{\arraystretch}{2}%
\begin{tabular}{|l|l|}
  \hline
  column 1 & column 2 \\
  \hline
  I really would like this less & crammed \\
  \hline
\end{tabular}} \quad
% =========== LENGTH approaches ===========
\begin{tabular}{|l|l|}
  \hline
  column 1 & column 2 \\[4ex]
  \hline
  I really would like this less & crammed \\[5pt]
  \hline
\end{tabular} \quad
{\setlength{\extrarowheight}{20pt}%
\begin{tabular}{|l|l|}
  \hline
  column 1 & column 2 \\
  \hline
  I really would like this less & crammed \\
  \hline
\end{tabular}}

\end{document}

在此处输入图片描述

请注意,“因子”方法比“长度”方法分布得更均匀。这是意料之中的。但是,如果需要,也可以组合使用这些技术。此外,使用\\[<len>]提供“底部填充”,而设置 则\extrarowheight添加“顶部填充”。最后,请注意示例中的分组:\renewcommand\setlength通过将 放在 内而成为本地的{...}。也就是说, / 的值/长度\arraystretch\extrarowheight组末尾重置之前恢复为原始值。


水平填充

存在类似的列水平填充方法。使用tabularx或者tabulary可能被认为是基于因子的,以及使用\extracolsep{\fill}。然而,这些都与固定宽度表有关,第一个在@cmhughes的回答中得到解决。以下是用法描述tabulary,取自TeX FAQ 条目固定宽度表格

软件包tabulary... 提供了一种“平衡”表格列所占空间的方法。软件包定义了列规范CLRJ分别给出了居中、左对齐、右对齐和完全对齐的空间共享列版本。软件包检查每列“自然”的长度(即在一张宽度无限的纸上),并相应地为每列分配空间。

基于长度的方法可以包括使用“列说明符”为每列添加单独的长度@{...}。此外,修改长度\tabcolsep(或者\arraycolsep如果您使用的是array)将对所有列执行此操作,因此更通用。最后,该包还提供了一种使用和array在列条目之前和之后插入内容的方法。以下是一些示例:>{<before>}<{<after>}

\documentclass{article}

\usepackage[landscape]{geometry}
\usepackage{array}

\begin{document}

% =========== FACTOR approach ===========
\begin{tabular*}{500pt}{@{\extracolsep{\fill}}|l|l|}
  \hline
  column 1 & column 2 \\
  \hline
  I really would like this less & crammed \\
  \hline
\end{tabular*}

\bigskip

% =========== LENGTH approaches ===========
\begin{tabular}{|@{\hspace{2em}}l@{}|l@{\qquad}|}
  \hline
  column 1 & column 2 \\
  \hline
  I really would like this less & crammed \\
  \hline
\end{tabular} \quad
{\setlength{\tabcolsep}{2em}
\begin{tabular}{|l|l|}
  \hline
  column 1 & column 2 \\
  \hline
  I really would like this less & crammed \\
  \hline
\end{tabular}}

\medskip

\begin{tabular}{|>{\hspace{1pc}}l|l<{\hspace{-2pt}}|}
  \hline
  column 1 & column 2 \\
  \hline
  I really would like this less & crammed \\
  \hline
\end{tabular}

\end{document}

在此处输入图片描述

当然,如果所有列都应该具有相同的说明符,则使用“多列说明符”*{<num>}{<col spec>}是更好的选择。

在上面的例子中,geometry已加载以适应可能较宽的显示器。


替代填充方法

另一种调节垂直填充的方法是插入所谓的(垂直)支柱,形式为零宽度规则(例如)。例如,使用在 之前\rule{0pt}{2em}stuff插入一个2em支柱stuff,从而增加包含 的单元格的垂直高度。类似地,可以使用 将支柱置于基线以下stuff来实现\rule[-1em]{0pt}{1em}stuff单元格下方的填充。1em

通过零高度支柱进行水平填充也是如此。

答案3

这是一个老问题,但我遇到了同样的问题,所有这些解决方案似乎都太复杂了,不符合我的需要,即关于水平填充. 寻找与上述建议类似的快速解决方案垂直填充( \arraystretch),我发现\setlength{tabcolsep}他是一个很好的候选人。

将其应用于示例,它将是:

\setlength{\tabcolsep}{0.5em} % for the horizontal padding
{\renewcommand{\arraystretch}{1.2}% for the vertical padding
\begin{tabular}{|l|l|}
    \hline
    column 1 & column 2 \\ 
    \hline
    I really would like this less & crammed\\
    \hline
\end{tabular}
}

不同之处如下:

在此处输入图片描述

答案4

tabularx可能对你也有用。来自文档

定义了一个新的环境 tabularx,它采用与 tabular* 相同的参数,但修改某些列的宽度而不是列间空间,以设置具有所要求的总宽度的表。

下面是 MWE-请注意不同的宽度规格,250pt\textwidth,以及结果。

\documentclass{report}

\usepackage{tabularx}

\begin{document}

\begin{table}
 \centering
\begin{tabularx}{250pt}{|c|X|c|X|}
 \hline
 \multicolumn{2}{|c|}{Multicolumn entry}                 &   THREE   &   FOUR    \\\hline
    one                 &  The width of 
                            this column depends     
                            on the width of the table   &  three    &           \\\hline
\end{tabularx}
\end{table}

\begin{table}
 \centering
\begin{tabularx}{\textwidth}{|c|X|c|X|}
 \hline
 \multicolumn{2}{|c|}{Multicolumn entry}                 &   THREE   &   FOUR    \\\hline
    one                 &  The width of 
                            this column depends     
                            on the width of the table   &  three    &           \\\hline
\end{tabularx}
\end{table}

\end{document}

在此处输入图片描述

相关内容