2020-06-30 05:01:24 +08:00
[#]: collector: (lujun9972)
2021-02-18 15:38:35 +08:00
[#]: translator: (Chao-zhi)
2020-06-30 05:01:24 +08:00
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (LaTeX typesetting part 2 (tables))
[#]: via: (https://fedoramagazine.org/latex-typesetting-part-2-tables/)
[#]: author: (Earl Ramirez https://fedoramagazine.org/author/earlramirez/)
2021-02-18 16:44:07 +08:00
LaTex 排版( 2) : 表格
2020-06-30 05:01:24 +08:00
======
![][1]
2021-02-18 16:44:07 +08:00
LaTeX 提供了许多工具来创建和定制表格,在本系列中,我们将使用 tabular 和 tabularx 环境来创建和定制表。
2020-06-30 05:01:24 +08:00
2021-02-18 16:44:07 +08:00
### 基础表格
2020-06-30 05:01:24 +08:00
2021-02-18 16:44:07 +08:00
要创建表,只需指定环境 `\begin{tabular}{列选项}`
2020-06-30 05:01:24 +08:00
```
\begin{tabular}{c|c}
2021-02-18 16:44:07 +08:00
Release & Codename \\ \hline
Fedora Core 1 & Yarrow \\
Fedora Core 2 & Tettnang \\
Fedora Core 3 & Heidelberg \\
Fedora Core 4 & Stentz \\
2020-06-30 05:01:24 +08:00
\end{tabular}
```
![Basic Table][2]
2021-02-18 16:44:07 +08:00
在上面的示例中,花括号中的”{c|c}”表示文本在列中的位置。下表总结了位置参数及其说明。
2020-06-30 05:01:24 +08:00
2021-02-18 16:44:07 +08:00
参数 | 位置
|:---:|:---
c | 将文本置于中间
l | 将文本左对齐
r | 将文本右对齐
p{width} | 文本对齐单元格顶部
m{width} | 文本对齐单元格中间
b{width} | 文本对齐单元格底部
2020-06-30 05:01:24 +08:00
2021-02-18 16:44:07 +08:00
> m{width} 和 b{width} 都要求在最前面指定数组包。
2020-06-30 05:01:24 +08:00
2021-02-18 16:44:07 +08:00
使用上面的例子,让我们来详细讲解使用的要点,并描述您将在本系列中看到的更多选项
2020-06-30 05:01:24 +08:00
2021-02-18 16:44:07 +08:00
选项 | 意义
|:-:|:-|
& | 定义每个单元格,这个符号仅用于第二列
\ | 这将终止该行并开始一个新行
\| | 指定表格中的垂直线(可选)
\hline | 指定表格中水平线(可选)
*{num}{form} | 当您有许多列时,可以使用这个,并且是限制重复的有效方法
\|\| | 指定表格中垂直双线
2020-06-30 05:01:24 +08:00
2021-02-18 16:44:07 +08:00
### 定制表格
2020-06-30 05:01:24 +08:00
2021-02-18 16:44:07 +08:00
学会了这些选项,让我们使用这些选项创建一个表。
2020-06-30 05:01:24 +08:00
```
\begin{tabular}{*{3}{|l|}}
\hline
2021-02-18 16:44:07 +08:00
\textbf{Version} & \textbf{Code name} & \textbf{Year released} \\
2020-06-30 05:01:24 +08:00
\hline
2021-02-18 16:44:07 +08:00
Fedora 6 & Zod & 2006 \\ \hline
Fedora 7 & Moonshine & 2007 \\ \hline
Fedora 8 & Werewolf & 2007 \\
2020-06-30 05:01:24 +08:00
\hline
\end{tabular}
```
![Customise Table][3]
2021-02-18 16:44:07 +08:00
### 管理长文本
2020-06-30 05:01:24 +08:00
2021-02-18 16:44:07 +08:00
如果列中有很多文本,那么它的格式就不好处理,看起来也不好看。
2020-06-30 05:01:24 +08:00
2021-02-18 16:44:07 +08:00
下面的示例显示了文本的格式长度,我们将在导言区中使用 “blindtext”, 以便生成示例文本。
2020-06-30 05:01:24 +08:00
```
\begin{tabular}{|l|l|}\hline
2021-02-18 16:44:07 +08:00
Summary & Description \\ \hline
Test & \blindtext \\
2020-06-30 05:01:24 +08:00
\end{tabular}
```
![Default Formatting][4]
2021-02-18 16:44:07 +08:00
正如您所看到的,文本超出了页面宽度;但是,有几个选项可以克服这个问题。
2020-06-30 05:01:24 +08:00
2021-02-18 16:44:07 +08:00
* 指定列宽,例如 m{5cm}
* 利用 TABLARX 环境,这需要在导言区中引用 TABLARX 宏包。
2020-06-30 05:01:24 +08:00
2021-02-18 16:44:07 +08:00
#### 使用列宽管理长文本
2020-06-30 05:01:24 +08:00
2021-02-18 16:44:07 +08:00
通过指定列宽,文本将被包装为如下示例所示的宽度。
2020-06-30 05:01:24 +08:00
```
\begin{tabular}{|l|m{14cm}|} \hline
2021-02-18 16:44:07 +08:00
Summary & Description \\ \hline
Test & \blindtext \\ \hline
2020-06-30 05:01:24 +08:00
\end{tabular}\vspace{3mm}
```
![Column width][5]
2021-02-18 16:44:07 +08:00
#### 使用 tabularx 管理长文本
2020-06-30 05:01:24 +08:00
2021-02-18 16:44:07 +08:00
在我们利用表格之前, 我们需要在导言区中加上它。TABLARX 方法见以下示例
2020-06-30 05:01:24 +08:00
2021-02-18 16:44:07 +08:00
`\begin{tabularx}{宽度}{列选项}`
2020-06-30 05:01:24 +08:00
2021-02-18 16:44:07 +08:00
```
2020-06-30 05:01:24 +08:00
\begin{tabularx}{\textwidth}{|l|X|} \hline
2021-02-18 16:44:07 +08:00
Summary & Tabularx Description\\ \hline
Text & \blindtext \\ \hline
2020-06-30 05:01:24 +08:00
\end{tabularx}
```
![Tabularx][6]
2021-02-18 16:44:07 +08:00
请注意, 我们需要处理长文本的列在花括号中指定了大写“X”。
2020-06-30 05:01:24 +08:00
2021-02-18 16:44:07 +08:00
### 合并行合并列
2020-06-30 05:01:24 +08:00
2021-02-18 16:44:07 +08:00
有时需要合并行或列。本节描述了如何完成。要使用 multirow 和 multicolumn, 请将 multirow 添加到导言区。
2020-06-30 05:01:24 +08:00
2021-02-18 16:44:07 +08:00
#### 合并行
2020-06-30 05:01:24 +08:00
2021-02-18 16:44:07 +08:00
Multirow 采用以下参数`\multirow{行的数量}{宽度}{文本}`,让我们看看下面的示例。
2020-06-30 05:01:24 +08:00
```
\begin{tabular}{|l|l|}\hline
2021-02-18 16:44:07 +08:00
Release & Codename \\ \hline
Fedora Core 4 & Stentz \\ \hline
\multirow{2}{*}{MultiRow} & Fedora 8 \\
& Werewolf \\ \hline
2020-06-30 05:01:24 +08:00
\end{tabular}
```
![MultiRow][7]
2021-02-18 16:44:07 +08:00
在上面的示例中,指定了两行,'*'告诉LaTeX自动管理单元格的大小。
2020-06-30 05:01:24 +08:00
2021-02-18 16:44:07 +08:00
#### 合并列
2020-06-30 05:01:24 +08:00
2021-02-18 16:44:07 +08:00
Multicolumn 参数是 `{Multicolumn{列的数量}{单元格选项}{位置}{文本}` ,下面的示例演示 Multicolumn。
2020-06-30 05:01:24 +08:00
```
\begin{tabular}{|l|l|l|}\hline
2021-02-18 16:44:07 +08:00
Release & Codename & Date \\ \hline
Fedora Core 4 & Stentz & 2005 \\ \hline
\multicolumn{3}{|c|}{Mulit-Column} \\ \hline
2020-06-30 05:01:24 +08:00
\end{tabular}
```
![Multi-Column][8]
2021-02-18 16:44:07 +08:00
### 使用颜色
2020-06-30 05:01:24 +08:00
2021-02-18 16:44:07 +08:00
可以为文本、单个单元格或整行指定颜色。此外,我们可以为每一行配置交替的颜色。
2020-06-30 05:01:24 +08:00
2021-02-18 16:44:07 +08:00
在给表添加颜色之前,我们需要在导言区引用 `\usepackage[table]{xcolor}` 。我们还可以使用以下颜色参考 [LaTeX Color][9] 或在颜色前缀后面添加感叹号( 从0到100的阴影) 来定义颜色。例如, `gray!30`
2020-06-30 05:01:24 +08:00
```
\definecolor{darkblue}{rgb}{0.0, 0.0, 0.55}
\definecolor{darkgray}{rgb}{0.66, 0.66, 0.66}
```
2021-02-18 16:44:07 +08:00
下面的示例演示了一个具有各种颜色的表,`\rowcolors` 采用以下选项`\rowcolors{起始行颜色}{偶数行颜色}{奇数行颜色}`。
2020-06-30 05:01:24 +08:00
```
\rowcolors{2}{darkgray}{gray!20}
\begin{tabular}{c|c}
2021-02-18 16:44:07 +08:00
Release & Codename \\ \hline
Fedora Core 1 & Yarrow \\
Fedora Core 2 & Tettnang \\
Fedora Core 3 & Heidelberg \\
Fedora Core 4 & Stentz \\
2020-06-30 05:01:24 +08:00
\end{tabular}
```
![Alt colour table][10]
2021-02-18 16:44:07 +08:00
除了上面的例子,`\rowcolor` 可以用来指定每一行的颜色,这个方法在有合并行时效果最好。以下示例显示将 `\rowColors` 与合并行一起使用的影响以及如何解决此问题。
2020-06-30 05:01:24 +08:00
![Impact on multi-row][11]
2021-02-18 16:44:07 +08:00
你可以看到,在合并行中,只有第一行能显示颜色。想要解决这个问题,需要这样做:
2020-06-30 05:01:24 +08:00
```
\begin{tabular}{|l|l|}\hline
2021-02-18 16:44:07 +08:00
\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
2020-06-30 05:01:24 +08:00
\end{tabular}
```
![Multi-row][12]
Let us discuss the changes that were implemented to resolve the multi-row with the alternate colour issue.
* The first row started above the multi-row
* The number of rows was changed from 2 to -2, which means to read from the line above
* \rowcolor was specified for each row, more importantly, the multi-rows must have the same colour so that you can have the desired results.
One last note on colour, to change the colour of a column you need to create a new column type and define the colour. The example below illustrates how to define the new column colour.
```
```
\newcolumntype{g}{& amp;gt;{\columncolor{darkblue}}l}
```
```
Let’ s break it down
* \newcolumntype{g}: defines the letter _g_ as the new column
* {> {\columncolor{darkblue}}l}: here we select our desired colour, and _l_ tells the column to be left-justified, this can be subsitued with _c_ or _r_
```
```
\begin{tabular}{g|l}
\textsc{Release} & amp;amp;\textsc{Codename} \\\ \hline
Fedora Core 4 & amp;amp;Stentz \\\
& amp;amp;Fedora 8 \\\
\multirow{-2}{*}{Multi-Row} & amp;amp;Werewolf \\\
\end{tabular}\
```
```
![Column Colour][13]
### Landscape table
There may be times when your table has many columns and will not fit elegantly in portrait. With the _rotating_ package in preamble you will be able to create a sideways table. The below example demonstrates this.
For the landscape table, we will use the _sidewaystable_ environment and add the tabular environment within it, we also specified additional options.
* \centering to position the table in the centre of the page
* \caption{} to give our table a name
* \label{} this enables us to reference the table in our document
```
```
\begin{sidewaystable}
\centering
\caption{Sideways Table}
\label{sidetable}
\begin{tabular}{ll}
\rowcolor{darkblue}\textsc{\color{white}Release} & amp;amp;\textsc{\color{white}Codename} \\\
\rowcolor{gray!10}Fedora Core 4 & amp;amp;Stentz \\\
\rowcolor{gray!40} & amp;amp;Fedora 8 \\\
\rowcolor{gray!40}\multirow{-2}{*}{Multi-Row} & amp;amp;Werewolf \\\
\end{tabular}\vspace{3mm}
\end{sidewaystable}
```
```
![Sideways Table][14]
### List and tables
To include a list into a table you can use tabularx and include the list in the column where the _X_ is specified. Another option will be to use tabular but you must specify the column width.
### List in tabularx
```
```
\begin{tabularx}{\textwidth}{|l|X|} \hline
Fedora Version & amp;amp;Editions \\\ \hline
Fedora 32 & amp;amp;\begin{itemize}[noitemsep]
\item CoreOS
\item Silverblue
\item IoT
\end{itemize} \\\ \hline
\end{tabularx}\vspace{3mm}
```
```
![List in tabularx][15]
### List in tabular
```
```
\begin{tabular}{|l|m{6cm}|}\hline
Fedora Version & amp;amp;Editions \\\ \hline
Fedora 32 & amp;amp;\begin{itemize}[noitemsep]
\item CoreOS
\item Silverblue
\item IoT
\end{itemize} \\\ \hline
\end{tabular}
```
```
![List in tabular][16]
### Conclusion
LaTeX offers many ways to customise your table with tabular and tabularx, you can also add both tabular and tabularx within the table environment (\begin\table) to add the table name and to position the table.
### LaTeX packages
The packages used in this series are.
```
```
\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
```
```
### Additional Reading
This was an intermediate lesson on tables; for more advanced information about tables and LaTex in general, you can go to [LaTeX Wiki][17]
![][13]
--------------------------------------------------------------------------------
via: https://fedoramagazine.org/latex-typesetting-part-2-tables/
作者:[Earl Ramirez][a]
选题:[lujun9972][b]
2021-02-18 15:38:35 +08:00
译者:[Chao-zhi](https://github.com/Chao-zhi)
2020-06-30 05:01:24 +08:00
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT ](https://github.com/LCTT/TranslateProject ) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://fedoramagazine.org/author/earlramirez/
[b]: https://github.com/lujun9972
[1]: https://fedoramagazine.org/wp-content/uploads/2020/06/latex-series-816x345.png
[2]: https://fedoramagazine.org/wp-content/uploads/2020/06/image-13.png
[3]: https://fedoramagazine.org/wp-content/uploads/2020/06/image-23.png
[4]: https://fedoramagazine.org/wp-content/uploads/2020/06/image-10.png
[5]: https://fedoramagazine.org/wp-content/uploads/2020/06/image-11.png
[6]: https://fedoramagazine.org/wp-content/uploads/2020/06/image-12.png
[7]: https://fedoramagazine.org/wp-content/uploads/2020/06/image-15.png
[8]: https://fedoramagazine.org/wp-content/uploads/2020/06/image-16.png
[9]: https://latexcolor.com
[10]: https://fedoramagazine.org/wp-content/uploads/2020/06/image-17.png
[11]: https://fedoramagazine.org/wp-content/uploads/2020/06/image-18.png
[12]: https://fedoramagazine.org/wp-content/uploads/2020/06/image-19.png
[13]: https://fedoramagazine.org/wp-content/uploads/2020/06/image-24.png
[14]: https://fedoramagazine.org/wp-content/uploads/2020/06/image-20.png
[15]: https://fedoramagazine.org/wp-content/uploads/2020/06/image-21.png
[16]: https://fedoramagazine.org/wp-content/uploads/2020/06/image-22.png
[17]: https://en.wikibooks.org/wiki/LaTeX/Tables