LaTex 排版 (2):表格
![](https://linuxstory.org/wp-content/uploads/2024/06/113655fm74zku5x1xy7h5j-800x345.png)
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
自定義表的方法,你還可以在表環境 (begintable
) 中添加 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
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive