LaTeX 提供了许多工具来创建和定制表格,在本系列中,我们将使用 tabular 和 tabularx 环境来创建和定制表。
基础表格
要创建表,只需指定环境 /begin{tabular}{列选项}:
/begin{tabular}{c|c}
Release &Codename // /hline
Fedora Core 1 &Yarrow //
Fedora Core 2 &Tettnang //
Fedora Core 3 &Heidelberg //
Fedora Core 4 &Stentz //
/end{tabular}

在上面的示例中,花括号中的 ”{c|c}” 表示文本在列中的位置。下表总结了位置参数及其说明。
| 参数 | 位置 |
|---|---|
c |
将文本置于中间 |
l |
将文本左对齐 |
r |
将文本右对齐 |
p{宽度} |
文本对齐单元格顶部 |
m{宽度} |
文本对齐单元格中间 |
b{宽度} |
文本对齐单元格底部 |
m{宽度}和b{宽度}都要求在最前面指定数组包。
使用上面的例子,让我们来详细讲解使用的要点,并描述你将在本系列中看到的更多选项:
| 选项 | 意义 |
|---|---|
& |
定义每个单元格,这个符号仅用于第二列 |
// |
这将终止该行并开始一个新行 |
| |
指定表格中的垂直线(可选) |
/hline |
指定表格中的水平线(可选) |
*{数量}{格式} |
当你有许多列时,可以使用这个,并且是限制重复的有效方法 |
|| |
指定表格中垂直双线 |
定制表格
学会了这些选项,让我们使用这些选项创建一个表。
/begin{tabular}{*{3}{|l|}}
/hline
/textbf{Version} &/textbf{Code name} &/textbf{Year released} //
/hline
Fedora 6 &Zod &2006 // /hline
Fedora 7 &Moonshine &2007 // /hline
Fedora 8 &Werewolf &2007 //
/hline
/end{tabular}

管理长文本
如果列中有很多文本,那么它的格式就不好处理,看起来也不好看。
下面的示例显示了文本的格式长度,我们将在导言区中使用 blindtext,以便生成示例文本。
/begin{tabular}{|l|l|}/hline
Summary &Description // /hline
Test &/blindtext //
/end{tabular}

正如你所看到的,文本超出了页面宽度;但是,有几个选项可以克服这个问题。
- 指定列宽,例如
m{5cm} - 利用
tablarx环境,这需要在导言区中引用tablarx宏包。
使用列宽管理长文本
通过指定列宽,文本将被折行为如下示例所示的宽度。
/begin{tabular}{|l|m{14cm}|} /hline
Summary &Description // /hline
Test &/blindtext // /hline
/end{tabular}/vspace{3mm}

使用 tabularx 管理长文本
在我们利用表格之前,我们需要在导言区中加上它。tabularx 方法见以下示例:/begin{tabularx}{宽度}{列选项}。
/begin{tabularx}{/textwidth}{|l|X|} /hline
Summary & Tabularx Description// /hline
Text &/blindtext // /hline
/end{tabularx}

请注意,我们需要处理长文本的列在花括号中指定了大写 X。
合并行合并列
有时需要合并行或列。本节描述了如何完成。要使用 multirow 和 multicolumn,请将 multirow 添加到导言区。
合并行
multirow 采用以下参数 /multirow{行的数量}{宽度}{文本},让我们看看下面的示例。
/begin{tabular}{|l|l|}/hline
Release &Codename // /hline
Fedora Core 4 &Stentz // /hline
/multirow{2}{*}{MultiRow} &Fedora 8 //
&Werewolf // /hline
/end{tabular}

在上面的示例中,指定了两行,* 告诉 LaTeX 自动管理单元格的大小。
合并列
multicolumn 参数是 {multicolumn{列的数量}{单元格选项}{位置}{文本},下面的示例演示合并列。
/begin{tabular}{|l|l|l|}/hline
Release &Codename &Date // /hline
Fedora Core 4 &Stentz &2005 // /hline
/multicolumn{3}{|c|}{Mulit-Column} // /hline
/end{tabular}

使用颜色
可以为文本、单个单元格或整行指定颜色。此外,我们可以为每一行配置交替的颜色。
在给表添加颜色之前,我们需要在导言区引用 /usepackage[table]{xcolor}。我们还可以使用以下颜色参考 LaTeX Color 或在颜色前缀后面添加感叹号(从 0 到 100 的阴影)来定义颜色。例如,gray!30。
/definecolor{darkblue}{rgb}{0.0, 0.0, 0.55}
/definecolor{darkgray}{rgb}{0.66, 0.66, 0.66}
下面的示例演示了一个具有各种颜色的表,/rowcolors 采用以下选项 /rowcolors{起始行颜色}{偶数行颜色}{奇数行颜色}。
/rowcolors{2}{darkgray}{gray!20}
/begin{tabular}{c|c}
Release &Codename // /hline
Fedora Core 1 &Yarrow //
Fedora Core 2 &Tettnang //
Fedora Core 3 &Heidelberg //
Fedora Core 4 &Stentz //
/end{tabular}

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

你可以看到,在合并行中,只有第一行能显示颜色。想要解决这个问题,需要这样做:
/begin{tabular}{|l|l|}/hline
/rowcolor{darkblue}/textsc{/color{white}Release} &/textsc{/color{white}Codename} // /hline
/rowcolor{gray!10}Fedora Core 4 &Stentz // /hline
/rowcolor{gray!40}&Fedora 8 //
/rowcolor{gray!40}/multirow{-2}{*}{Multi-Row} &Werewolf // /hline
/end{tabular}

让我们讲解一下为解决合并行替换颜色问题而实施的更改。
- 第一行从合并行上方开始
- 行数从
2更改为-2,这意味着从上面的行开始读取 /rowcolor是为每一行指定的,更重要的是,多行必须具有相同的颜色,这样才能获得所需的结果。
关于颜色的最后一个注意事项是,要更改列的颜色,需要创建新的列类型并定义颜色。下面的示例说明了如何定义新的列颜色。
/newcolumntype{g}{>{/columncolor{darkblue}}l}
我们把它分解一下:
/newcolumntype{g}:将字母g定义为新列{>{/columncolor{darkblue}}l}:在这里我们选择我们想要的颜色,并且l告诉列左对齐,这可以用c或r代替。
/begin{tabular}{g|l}
/textsc{Release} &/textsc{Codename} // /hline
Fedora Core 4 &Stentz //
&Fedora 8 //
/multirow{-2}{*}{Multi-Row} &Werewolf //
/end{tabular}/

横向表
有时,你的表可能有许多列,纵向排列会很不好看。在导言区加入 rotating 包,你将能够创建一个横向表。下面的例子说明了这一点。
对于横向表,我们将使用 sidewaystable 环境并在其中添加表格环境,我们还指定了其他选项。
/centering可以将表格放置在页面中心/caption{}为表命名/label{}这使我们能够引用文档中的表
/begin{sidewaystable}
/centering
/caption{Sideways Table}
/label{sidetable}
/begin{tabular}{ll}
/rowcolor{darkblue}/textsc{/color{white}Release} &/textsc{/color{white}Codename} //
/rowcolor{gray!10}Fedora Core 4 &Stentz //
/rowcolor{gray!40} &Fedora 8 //
/rowcolor{gray!40}/multirow{-2}{*}{Multi-Row} &Werewolf //
/end{tabular}/vspace{3mm}
/end{sidewaystable}

列表和表格
要将列表包含到表中,可以使用 tabularx,并将列表包含在指定的列中。另一个办法是使用表格格式,但必须指定列宽。
用 tabularx 处理列表
/begin{tabularx}{/textwidth}{|l|X|} /hline
Fedora Version &Editions // /hline
Fedora 32 &/begin{itemize}[noitemsep]
/item CoreOS
/item Silverblue
/item IoT
/end{itemize} // /hline
/end{tabularx}/vspace{3mm}

用 tabular 处理列表
/begin{tabular}{|l|m{6cm}|}/hline
Fedora Version &Editions /// /hline
Fedora 32 &/begin{itemize}[noitemsep]
/item CoreOS
/item Silverblue
/item IoT
/end{itemize} /// /hline
/end{tabular}

总结
LaTeX 提供了许多使用 tablar 和 tablarx 自定义表的方法,你还可以在表环境 (/begin/table) 中添加 tablar 和 tablarx 来添加表的名称和定位表。
LaTeX 宏包
所需的宏包有如下这些:
/usepackage{fullpage}
/usepackage{blindtext} % add demo text
/usepackage{array} % used for column positions
/usepackage{tabularx} % adds tabularx which is used for text wrapping
/usepackage{multirow} % multi-row and multi-colour support
/usepackage[table]{xcolor} % add colour to the columns
/usepackage{rotating} % for landscape/sideways tables
额外的知识
这是一堂关于表的小课,有关表和 LaTex 的更多高级信息,请访问 LaTex Wiki

via: https://fedoramagazine.org/latex-typesetting-part-2-tables/
作者:Earl Ramirez 选题:lujun9972 译者:Chao-zhi 校对:wxy
本文由 LCTT 原创编译,Linux中国 荣誉推出

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/linux/50055.html