LaTex 排版 (2):表格
LaTeX 提供了許多工具來創(chuàng)建和定制表格,在本系列中,我們將使用 tabular
和 tabularx
環(huán)境來創(chuàng)建和定制表。
基礎(chǔ)表格
要創(chuàng)建表,只需指定環(huán)境 \begin{tabular}{列選項(xiàng)}
:
\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}
Basic Table
在上面的示例中,花括號中的 ”{c|c}” 表示文本在列中的位置。下表總結(jié)了位置參數(shù)及其說明。
參數(shù) | 位置 |
---|---|
c |
將文本置于中間 |
l |
將文本左對齊 |
r |
將文本右對齊 |
p{寬度} |
文本對齊單元格頂部 |
m{寬度} |
文本對齊單元格中間 |
b{寬度} |
文本對齊單元格底部 |
m{寬度}
和b{寬度}
都要求在最前面指定數(shù)組包。
使用上面的例子,讓我們來詳細(xì)講解使用的要點(diǎn),并描述你將在本系列中看到的更多選項(xiàng):
選項(xiàng) | 意義 |
---|---|
& |
定義每個(gè)單元格,這個(gè)符號僅用于第二列 |
\\ |
這將終止該行并開始一個(gè)新行 |
| |
指定表格中的垂直線(可選) |
\hline |
指定表格中的水平線(可選) |
*{數(shù)量}{格式} |
當(dāng)你有許多列時(shí),可以使用這個(gè),并且是限制重復(fù)的有效方法 |
|| |
指定表格中垂直雙線 |
定制表格
學(xué)會了這些選項(xiàng),讓我們使用這些選項(xiàng)創(chuàng)建一個(gè)表。
\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}
Customise Table
管理長文本
如果列中有很多文本,那么它的格式就不好處理,看起來也不好看。
下面的示例顯示了文本的格式長度,我們將在導(dǎo)言區(qū)中使用 blindtext
,以便生成示例文本。
\begin{tabular}{|l|l|}\hline
Summary &Description \\ \hline
Test &\blindtext \\
\end{tabular}
Default Formatting
正如你所看到的,文本超出了頁面寬度;但是,有幾個(gè)選項(xiàng)可以克服這個(gè)問題。
- 指定列寬,例如
m{5cm}
- 利用
tablarx
環(huán)境,這需要在導(dǎo)言區(qū)中引用tablarx
宏包。
使用列寬管理長文本
通過指定列寬,文本將被折行為如下示例所示的寬度。
\begin{tabular}{|l|m{14cm}|} \hline
Summary &Description \\ \hline
Test &\blindtext \\ \hline
\end{tabular}\vspace{3mm}
Column Width
使用 tabularx 管理長文本
在我們利用表格之前,我們需要在導(dǎo)言區(qū)中加上它。tabularx
方法見以下示例:\begin{tabularx}{寬度}{列選項(xiàng)}
。
\begin{tabularx}{\textwidth}{|l|X|} \hline
Summary & Tabularx Description\\ \hline
Text &\blindtext \\ \hline
\end{tabularx}
Tabularx
請注意,我們需要處理長文本的列在花括號中指定了大寫 X
。
合并行合并列
有時(shí)需要合并行或列。本節(jié)描述了如何完成。要使用 multirow
和 multicolumn
,請將 multirow
添加到導(dǎo)言區(qū)。
合并行
multirow
采用以下參數(shù) \multirow{行的數(shù)量}{寬度}{文本}
,讓我們看看下面的示例。
\begin{tabular}{|l|l|}\hline
Release &Codename \\ \hline
Fedora Core 4 &Stentz \\ \hline
\multirow{2}{*}{MultiRow} &Fedora 8 \\
&Werewolf \\ \hline
\end{tabular}
MultiRow
在上面的示例中,指定了兩行,*
告訴 LaTeX 自動管理單元格的大小。
合并列
multicolumn
參數(shù)是 {multicolumn{列的數(shù)量}{單元格選項(xiàng)}{位置}{文本}
,下面的示例演示合并列。
\begin{tabular}{|l|l|l|}\hline
Release &Codename &Date \\ \hline
Fedora Core 4 &Stentz &2005 \\ \hline
\multicolumn{3}{|c|}{Mulit-Column} \\ \hline
\end{tabular}
Multi-Column
使用顏色
可以為文本、單個(gè)單元格或整行指定顏色。此外,我們可以為每一行配置交替的顏色。
在給表添加顏色之前,我們需要在導(dǎo)言區(qū)引用 \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}
下面的示例演示了一個(gè)具有各種顏色的表,\rowcolors
采用以下選項(xiàng) \rowcolors{起始行顏色}{偶數(shù)行顏色}{奇數(shù)行顏色}
。
\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}
Alt colour table
除了上面的例子,\rowcolor
可以用來指定每一行的顏色,這個(gè)方法在有合并行時(shí)效果最好。以下示例顯示將 \rowColors
與合并行一起使用的影響以及如何解決此問題。
Impact on multi-row
你可以看到,在合并行中,只有第一行能顯示顏色。想要解決這個(gè)問題,需要這樣做:
\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}
Multi-row
讓我們講解一下為解決合并行替換顏色問題而實(shí)施的更改。
- 第一行從合并行上方開始
- 行數(shù)從
2
更改為-2
,這意味著從上面的行開始讀取 \rowcolor
是為每一行指定的,更重要的是,多行必須具有相同的顏色,這樣才能獲得所需的結(jié)果。
關(guān)于顏色的最后一個(gè)注意事項(xiàng)是,要更改列的顏色,需要創(chuàng)建新的列類型并定義顏色。下面的示例說明了如何定義新的列顏色。
\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}\
Column Colour
橫向表
有時(shí),你的表可能有許多列,縱向排列會很不好看。在導(dǎo)言區(qū)加入 rotating
包,你將能夠創(chuàng)建一個(gè)橫向表。下面的例子說明了這一點(diǎn)。
對于橫向表,我們將使用 sidewaystable
環(huán)境并在其中添加表格環(huán)境,我們還指定了其他選項(xiàng)。
\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}
Sideways Table
列表和表格
要將列表包含到表中,可以使用 tabularx
,并將列表包含在指定的列中。另一個(gè)辦法是使用表格格式,但必須指定列寬。
用 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}
List in tabularx
用 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}
List in tabular
總結(jié)
LaTeX 提供了許多使用 tablar
和 tablarx
自定義表的方法,你還可以在表環(huán)境 (\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
額外的知識
這是一堂關(guān)于表的小課,有關(guān)表和 LaTex 的更多高級信息,請?jiān)L問 LaTex Wiki