zl程序教程

您现在的位置是:首页 >  其他

当前栏目

LaTex 排版 (2):表格

2023-04-18 14:45:49 时间

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

基础表格

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

  1. egin{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}” 表示文本在列中的位置。下表总结了位置参数及其说明。

参数 位置
c 将文本置于中间
l 将文本左对齐
r 将文本右对齐
p{宽度} 文本对齐单元格顶部
m{宽度} 文本对齐单元格中间
b{宽度} 文本对齐单元格底部

m{宽度} 和 b{宽度} 都要求在最前面指定数组包。

使用上面的例子,让我们来详细讲解使用的要点,并描述你将在本系列中看到的更多选项:

选项 意义
& 定义每个单元格,这个符号仅用于第二列
\ 这将终止该行并开始一个新行
| 指定表格中的垂直线(可选)
hline 指定表格中的水平线(可选)
*{数量}{格式} 当你有许多列时,可以使用这个,并且是限制重复的有效方法
|| 指定表格中垂直双线

定制表格

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

  1. egin{tabular}{*{3}{|l|}}
  2. hline
  3. extbf{Version} & extbf{Code name} & extbf{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. egin{tabular}{|l|l|}hline
  2. Summary &Description \ hline
  3. Test &lindtext \
  4. end{tabular}

 

Default Formatting

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

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

使用列宽管理长文本

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

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

 

Column Width

使用 tabularx 管理长文本

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

  1. egin{tabularx}{ extwidth}{|l|X|} hline
  2. Summary & Tabularx Description\ hline
  3. Text &lindtext \ hline
  4. end{tabularx}

 

Tabularx

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

合并行合并列

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

合并行

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

  1. egin{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

MultiRow

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

合并列

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

  1. egin{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}

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

  1. owcolors{2}{darkgray}{gray!20}
  2. egin{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

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

 

Impact on multi-row

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

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

 

Multi-row

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

  • 第一行从合并行上方开始
  • 行数从 2 更改为 -2,这意味着从上面的行开始读取
  • owcolor 是为每一行指定的,更重要的是,多行必须具有相同的颜色,这样才能获得所需的结果。

关于颜色的最后一个注意事项是,要更改列的颜色,需要创建新的列类型并定义颜色。下面的示例说明了如何定义新的列颜色。

  1. ewcolumntype{g}{>{columncolor{darkblue}}l}

我们把它分解一下:

  • ewcolumntype{g}:将字母 g 定义为新列
  • {>{columncolor{darkblue}}l}:在这里我们选择我们想要的颜色,并且 l 告诉列左对齐,这可以用 c 或 r 代替。
  1. egin{tabular}{g|l}
  2. extsc{Release} & extsc{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. egin{sidewaystable}
  2. centering
  3. caption{Sideways Table}
  4. label{sidetable}
  5. egin{tabular}{ll}
  6. owcolor{darkblue} extsc{color{white}Release} & extsc{color{white}Codename} \
  7. owcolor{gray!10}Fedora Core 4 &Stentz \
  8. owcolor{gray!40} &Fedora 8 \
  9. owcolor{gray!40}multirow{-2}{*}{Multi-Row} &Werewolf \
  10. end{tabular}vspace{3mm}
  11. end{sidewaystable}

 

Sideways Table

列表和表格

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

用 tabularx 处理列表

  1. egin{tabularx}{ extwidth}{|l|X|} hline
  2. Fedora Version &Editions \ hline
  3. Fedora 32 &egin{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. egin{tabular}{|l|m{6cm}|}hline
  2.         Fedora Version &Editions \ hline
  3.     Fedora 32 &egin{itemize}[noitemsep]
  4.         item CoreOS
  5.         item Silverblue
  6.         item IoT
  7.     end{itemize} \ hline
  8. end{tabular}

 

List in tabular

总结

LaTeX 提供了许多使用 tablar 和 tablarx 自定义表的方法,你还可以在表环境 (egin able) 中添加 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