注册/登录

LaTex 排版 (2):表格

系统 Linux
LaTeX 提供了许多工具来创建和定制表格,在本系列中,我们将使用 tabular 和 tabularx 环境来创建和定制表。

[[383448]]

LaTeX 提供了许多工具来创建和定制表格,在本系列中,我们将使用 tabular tabularx 环境来创建和定制表。

要创建表,只需指定环境 \begin{tabular}{列选项}

  1. \begin{tabular}{c|c}
  2. Release &Codename \\ \hline
  3. Fedora Core 1 &Yarrow \\
  4. Fedora Core 2 &Tettnang \\
  5. Fedora Core 3 &Heidelberg \\
  6. Fedora Core 4 &Stentz \\
  7. \end{tabular}

Basic Table

在上面的示例中,花括号中的 ”{c|c}” 表示文本在列中的位置。下表总结了位置参数及其说明。

学会了这些选项,让我们使用这些选项创建一个表。

  1. \begin{tabular}{*{3}{|l|}}
  2. \hline
  3. \textbf{Version} &\textbf{Code name} &\textbf{Year released} \\
  4. \hline
  5. Fedora 6 &Zod &2006 \\ \hline
  6. Fedora 7 &Moonshine &2007 \\ \hline
  7. Fedora 8 &Werewolf &2007 \\
  8. \hline
  9. \end{tabular}

Customise Table

管理长文本

如果列中有很多文本,那么它的格式就不好处理,看起来也不好看。

下面的示例显示了文本的格式长度,我们将在导言区中使用 blindtext ,以便生成示例文本。

  1. \begin{tabular}{|l|l|}\hline
  2. Summary &Description \\ \hline
  3. Test &\blindtext \\
  4. \end{tabular}

Default Formatting

正如你所看到的,文本超出了页面宽度;但是,有几个选项可以克服这个问题。

  • 指定列宽,例如 m{5cm}
  • 利用 tablarx 环境,这需要在导言区中引用 tablarx 宏包。
  • 使用列宽管理长文本

    通过指定列宽,文本将被折行为如下示例所示的宽度。

    1. \begin{tabular}{|l|m{14cm}|} \hline
    2. Summary &Description \\ \hline
    3. Test &\blindtext \\ \hline
    4. \end{tabular}\vspace{3mm}

    Column Width

    使用 tabularx 管理长文本

    在我们利用表格之前,我们需要在导言区中加上它。 tabularx 方法见以下示例: \begin{tabularx}{宽度}{列选项}

    1. \begin{tabularx}{\textwidth}{|l|X|} \hline
    2. Summary & Tabularx Description\\ \hline
    3. Text &\blindtext \\ \hline
    4. \end{tabularx}

    Tabularx

    请注意,我们需要处理长文本的列在花括号中指定了大写 X

    合并行合并列

    有时需要合并行或列。本节描述了如何完成。要使用 multirow multicolumn ,请将 multirow 添加到导言区。

    multirow 采用以下参数 \multirow{行的数量}{宽度}{文本} ,让我们看看下面的示例。

    1. \begin{tabular}{|l|l|}\hline
    2. Release &Codename \\ \hline
    3. Fedora Core 4 &Stentz \\ \hline
    4. \multirow{2}{*}{MultiRow} &Fedora 8 \\
    5. &Werewolf \\ \hline
    6. \end{tabular}

    MultiRow

    在上面的示例中,指定了两行, * 告诉 LaTeX 自动管理单元格的大小。

    multicolumn 参数是 {multicolumn{列的数量}{单元格选项}{位置}{文本} ,下面的示例演示合并列。

    1. \begin{tabular}{|l|l|l|}\hline
    2. Release &Codename &Date \\ \hline
    3. Fedora Core 4 &Stentz &2005 \\ \hline
    4. \multicolumn{3}{|c|}{Mulit-Column} \\ \hline
    5. \end{tabular}

    Multi-Column

    可以为文本、单个单元格或整行指定颜色。此外,我们可以为每一行配置交替的颜色。

    在给表添加颜色之前,我们需要在导言区引用 \usepackage[table]{xcolor} 。我们还可以使用以下颜色参考 LaTeX Color 或在颜色前缀后面添加感叹号(从 0 到 100 的阴影)来定义颜色。例如, gray!30

    1. \definecolor{darkblue}{rgb}{0.0, 0.0, 0.55}
    2. \definecolor{darkgray}{rgb}{0.66, 0.66, 0.66}

    下面的示例演示了一个具有各种颜色的表, \rowcolors 采用以下选项 \rowcolors{起始行颜色}{偶数行颜色}{奇数行颜色}

    1. \rowcolors{2}{darkgray}{gray!20}
    2. \begin{tabular}{c|c}
    3. Release &Codename \\ \hline
    4. Fedora Core 1 &Yarrow \\
    5. Fedora Core 2 &Tettnang \\
    6. Fedora Core 3 &Heidelberg \\
    7. Fedora Core 4 &Stentz \\
    8. \end{tabular}

    Alt colour table

    除了上面的例子, \rowcolor 可以用来指定每一行的颜色,这个方法在有合并行时效果最好。以下示例显示将 \rowColors 与合并行一起使用的影响以及如何解决此问题。

    Impact on multi-row

    你可以看到,在合并行中,只有第一行能显示颜色。想要解决这个问题,需要这样做:

    1. \begin{tabular}{|l|l|}\hline
    2. \rowcolor{darkblue}\textsc{\color{white}Release} &\textsc{\color{white}Codename} \\ \hline
    3. \rowcolor{gray!10}Fedora Core 4 &Stentz \\ \hline
    4. \rowcolor{gray!40}&Fedora 8 \\
    5. \rowcolor{gray!40}\multirow{-2}{*}{Multi-Row} &Werewolf \\ \hline
    6. \end{tabular}

    Multi-row

    让我们讲解一下为解决合并行替换颜色问题而实施的更改。

  • 第一行从合并行上方开始
  • 行数从 2 更改为 -2 ,这意味着从上面的行开始读取
  • \rowcolor 是为每一行指定的,更重要的是,多行必须具有相同的颜色,这样才能获得所需的结果。
  • 关于颜色的最后一个注意事项是,要更改列的颜色,需要创建新的列类型并定义颜色。下面的示例说明了如何定义新的列颜色。

    1. \newcolumntype{g}{>{\columncolor{darkblue}}l}

    我们把它分解一下:

  • \newcolumntype{g} :将字母 g 定义为新列
  • {>{\columncolor{darkblue}}l} :在这里我们选择我们想要的颜色,并且 l 告诉列左对齐,这可以用 c r 代替。
    1. \begin{tabular}{g|l}
    2. \textsc{Release} &\textsc{Codename} \\ \hline
    3. Fedora Core 4 &Stentz \\
    4. &Fedora 8 \\
    5. \multirow{-2}{*}{Multi-Row} &Werewolf \\
    6. \end{tabular}\

    Column Colour

    有时,你的表可能有许多列,纵向排列会很不好看。在导言区加入 rotating 包,你将能够创建一个横向表。下面的例子说明了这一点。

    对于横向表,我们将使用 sidewaystable 环境并在其中添加表格环境,我们还指定了其他选项。

  • \centering 可以将表格放置在页面中心
  • \caption{} 为表命名
  • \label{} 这使我们能够引用文档中的表
    1. \begin{sidewaystable}
    2. \centering
    3. \caption{Sideways Table}
    4. \label{sidetable}
    5. \begin{tabular}{ll}
    6. \rowcolor{darkblue}\textsc{\color{white}Release} &\textsc{\color{white}Codename} \\
    7. \rowcolor{gray!10}Fedora Core 4 &Stentz \\
    8. \rowcolor{gray!40} &Fedora 8 \\
    9. \rowcolor{gray!40}\multirow{-2}{*}{Multi-Row} &Werewolf \\
    10. \end{tabular}\vspace{3mm}
    11. \end{sidewaystable}

    Sideways Table

    列表和表格

    要将列表包含到表中,可以使用 tabularx ,并将列表包含在指定的列中。另一个办法是使用表格格式,但必须指定列宽。

    用 tabularx 处理列表

    1. \begin{tabularx}{\textwidth}{|l|X|} \hline
    2. Fedora Version &Editions \\ \hline
    3. Fedora 32 &\begin{itemize}[noitemsep]
    4. \item CoreOS
    5. \item Silverblue
    6. \item IoT
    7. \end{itemize} \\ \hline
    8. \end{tabularx}\vspace{3mm}

    List in tabularx

    用 tabular 处理列表

    1. \begin{tabular}{|l|m{6cm}|}\hline
    2.         Fedora Version &Editions \\\ \hline
    3.     Fedora 32 &\begin{itemize}[noitemsep]
    4.         \item CoreOS
    5.         \item Silverblue
    6.         \item IoT
    7.     \end{itemize} \\\ \hline
    8. \end{tabular}

    List in tabular

    LaTeX 提供了许多使用 tablar tablarx 自定义表的方法,你还可以在表环境 ( \begin\table ) 中添加 tablar tablarx 来添加表的名称和定位表。

    LaTeX 宏包

    所需的宏包有如下这些:

    1. \usepackage{fullpage}
    2. \usepackage{blindtext} % add demo text
    3. \usepackage{array} % used for column positions
    4. \usepackage{tabularx} % adds tabularx which is used for text wrapping
    5. \usepackage{multirow} % multi-row and multi-colour support
    6. \usepackage[table]{xcolor} % add colour to the columns
    7. \usepackage{rotating} % for landscape/sideways tables

    额外的知识

    这是一堂关于表的小课,有关表和 LaTex 的更多高级信息,请访问 LaTex Wiki

    责任编辑:庞桂玉 Linux中国
    点赞
    收藏