Beamer 入門 之 彩色表格
本節內容給大家分享如何繪制彩色表格,大致的效果如下:
背景顏色
調整表格顏色可以使用 colortbl 宏包,該宏包提供了可以控制行和列的顏色的命令。該宏包還默認加載了 color 以及 array 宏包所以不需要重復加載。color 宏包用來調整顏色,array宏包用來控制表格相關屬性。
此外如果想實現三線表形式的單元格,可以使用 booktabs 宏包;如果想在單元格內插入斜線,來分隔單元格內容,可以使用 diagbox 宏包,但是由於三線表形式的線性在插入斜線之后並不連續,因此不建議一起使用,如果需要 在單元格內插入斜線的話,其實也就默認了我們需要的並不是三線表。因此表格內橫線使用 \hinle 命令即可。其次實現合並單元格,則需要使用到 multirow 宏包。
單元格插入斜線
使用 \diagbox
命令,后面需要分成多少部分,就加幾個花括號。
如需分成三個個部分就是用
\begin{tabular}{|c|}
\hline
\diagbox{左邊}{中間}{右邊}\\
\hline
\end{tabular}
該宏包還提供了各種更改斜線方向,單元格大小,字體等相關設置,如有需要可自行查看該宏包的說明文件。
更改行、列及單元格顏色
使用 colortbl 宏包
更改列的背景顏色
需要使用到命令
\columncolor[顏色模式]{顏色}[左側懸掛距離][右側懸掛距離]
如果不需要設置懸掛距離,可以直接使用命令 \columncolor{顏色}
而默認的懸掛距離為 \tabcolsep 即單元格列間距。
即背景顏色是填充整個單元格的,如果將其設置成 0 則背景顏色緊貼字體左右兩側。
如果僅設置左側懸掛距離,右側也會與左側距離保持一致。
讓該命令對 某一列產生影響,需要在定義該列位置的命令(l、c、r) 前面使用 >{ } 將對控制列屬性的命令放在花括號內,該種方式是通過 array 宏包實現的,想知道更多相關用法可以自行查看 array 的宏包說明。
而對於顏色,我們可以使用color 宏包提供的顏色命令,也可以通過其他的顏色模式,例如通過使用RGB 值定義顏色。
比如我們要定義一個海藍色的的命令。可以使用以下方法:
\definecolor{Ocean}{RGB}{129,194,234}
即定義了一個海藍色,其名字為 Ocean 使用的時候只需要和一般顏色一樣,使用 \color{Ocean} 注意 LaTeX
是區分大小寫的。
當設置某一列顏色的時候可以使用
\columncolor{Ocean}
也可以使用
\columncolor[RGB]{129,194,234}
因此如果想將對一個二行三列的表格,將第一列設置成紅色,將第三列設置成海藍色,可以使用下面代碼:
\begin{tabular}{>{\columncolor{red}}c c >{\columncolor{Ocean}}c}
元素1&元素2&元素3\\
元素a&元素b&元素c\\
\end{tabular}
當我們需要多次定義這樣的列的樣式的時候,使用這么長的命令肯定不方便,因此我們也可以定義一個自己的 類似於 l c r 一樣的列屬性,使用命令
\newcolumntype{新屬性名稱}{該列相關屬性設置}
如想使用字母 g 作為新的樣式,列左對齊,且背景顏色為 灰度為0.8 的顏色
可以使用:
\newcolumntype{g}{>{\columncolor[gray]{0.8}}l}
使用方法如下:
\begin{tabular}{l r c g}
其中第四列就是我們定義的列的樣式
更改行的背景顏色
行的背景顏色的命令同列的類似:
\rowcolor[顏色模式]{顏色}[左側懸掛距離][右側懸掛距離]
以及\rowcolor{顏色}
使用方法,就是在每一行前面使用該命令,
如: 第一行背景為紅色,第二行背景為海藍色
\begin{tabular}{ccc}
\rowcolor{red}元素1&元素2&元素3\\
\rowcolor{Ocean}元素a&元素b&元素c\\
\end{tabular}
定義單元格背景顏色
其命令與前面的行列背景顏色的定義也是類似的
\cellcolor[顏色模式]{顏色}[左側懸掛距離][右側懸掛距離]
以及\cellcolor{顏色}
使用方法,僅需在對應的單元格使用此命令即可。
實現合並單元格
如果使用單元格合並,以及添加表格的橫豎線條,可能會遇到的有兩個問題:
合並后單元格上下顏色不一致 並且單元格文本內容會被遮蓋掉
如果添加橫線,合並單元格后,並不能消除上下兩個單元格之間的橫線
會出現兩種問題的代碼和效果如下所示:
代碼:
\documentclass{ctexart}
\usepackage{array,multirow,diagbox}%設置表格屬性,合並單元格,單元格內斜線
\usepackage{colortbl}%彩色表格
\newcolumntype{g}{>{\columncolor[gray]{0.8}}l}%定義新的 列類型
\definecolor{Ocean}{RGB}{129,194,234}%定義海藍色
\begin{document}
\begin{table}[htbp]
\centering
\caption{隨隨便便一張表}
\begin{tabular}{|l|g|g|g|g|g|}
\hline
\rowcolor{white}\diagbox{項目}{指標} &指標一&指標二&指標三&指標四&指標五\\\hline%標題行
\multirow{2}{*}{項目A}
&abc123&abc123&abc123&abc123&abc123\\\hline%第一行
\rowcolor{white}
&abc123&abc123&abc123&abc123&abc123\\\hline %第二行
\multirow{2}{*}{項目B}
&abc123&abc123&abc123&abc123&abc123\\\hline%第三行
\rowcolor{white}
&abc123&abc123&abc123&abc123&abc123\\\hline %第四行
\multirow{2}{*}{項目C}
&abc123&abc123&abc123&abc123&abc123\\\hline%第五行
\rowcolor{Ocean}
&abc123&abc123&abc123&abc123&abc123\\\hline %第六行
\end{tabular}
\end{table}
\end{document}
解決單元格合並后字體顯示不全問題
其實這個問題出現的原因是,我們希望奇數行是灰色偶數行是其他顏色(例如白色和海藍色),但是我們只能控制每一列都是灰色,所以只能通過單獨再控制偶數行的顏色來實現效果,但是偶數行改成白色之后,顏色會直接覆蓋掉奇數行合並單元格之后的內容。 所以我們不能從奇數行合並單元格而應該從偶數行合並,因此要從原來的向下合並變成向上合並。 因此我們只需要 \\multirow{2}{*}{文本內容} 命令從奇數行移動到偶數行,並將 2 改為 -2 即改為向上合並。另外需要注意這里面的 * 號,是保持一個默認寬度。
解決列表橫線覆蓋字體問題
由於合並單元格只能合並其中的內容,而我們的橫線是直接再文本上方插入的,因此要想消除某一列的橫線,我們可以用 hhline 宏包提供的hhline命令,具體用法可以參考其紅包說明。
具體用法是使用hhline 宏包,並將奇數行后的hline 改為 \hhline{|~|-----}
該命令后面的 參數使用方法大致如下:
有多少列內容我們就要添加多少列的橫線類型,如果是 ‘-’ 即表示插入橫線,如果是 ‘~’ 即表示為空,因此上面的命令表示為該行第一列單元格下的橫線是空的,后面所有列的單元格下面添加橫線,
第一列需要使用 ‘|~|’ 是因為,如果只使用 ’ ~’ 的話,由於表格的每一列都添加了豎線,第一個單元格為空的橫線,會使兩側豎線變得不連續(間斷的)。因此需要保留兩側豎線,就需要在兩側 添加‘|’ 最終代碼如下:效果見最開始的圖片。
\documentclass{ctexart}
\usepackage{array,multirow,diagbox}
\usepackage{colortbl,hhline}
\newcolumntype{g}{>{\columncolor[gray]{0.8}}l}
\definecolor{Ocean}{RGB}{129,194,234}
\begin{document}
\begin{table}[htbp]
\centering
\caption{隨隨便便一張表}
\begin{tabular}{|l|g|g|g|g|g|}
\hline
\rowcolor{white}\diagbox{項目}{指標} &指標一&指標二&指標三&指標四&指標五\\\hline%標題行
&abc123&abc123&abc123&abc123&abc123\\\hhline{|~|-----} %第一行
\rowcolor{white} \multirow{-2}{*}{項目A} &abc123&abc123&abc123&abc123&abc123\\\hline %第二行
&abc123&abc123&abc123&abc123&abc123\\\hhline{|~|-----} %第三行
\rowcolor{white}\multirow{-2}{*}{項目B} &abc123&abc123&abc123&abc123&abc123\\\hline %第四行
&abc123&abc123&abc123&abc123&abc123\\\hhline{|~|-----}%第五行
\rowcolor{Ocean}\multirow{-2}{*}{項目C} &abc123&abc123&abc123&abc123&abc123\\\hline %第六行
\end{tabular}
\end{table}
\end{document}
定義表格字體顏色
可以在定義列樣式的時候添加顏色選項,即可定義每一列顏色,而定義每行顏色則需要借助其他宏包(例如:tabu 宏包), 但是由於此宏包與本節分享的其他宏包可能沖突,因此不再介紹,有需要的自行查看。
更改列顏色在列樣式前 使用 >{\color{目標顏色}} 具體內容如下:
同是,如果想更改單個單元格的顏色,可以使用 \textcolor{目標顏色}{字體內容} 好處是不會超出頁邊距。
\documentclass{ctexart}
\usepackage{array,colortbl}%需要用到的宏包
\begin{document}
\begin{tabular}{| >{\color{red}} c | c |}
\hline
紅色字體&文本內容\\ \hline
紅色字體&\textcolor{white}{藍色字體}\\ \hline
\end{tabular}
\end{document}
更改表格線形和顏色
使用到兩個主要命令,
添加橫線使用:
\hrule width <寬度> height <高度>
注意:寬度和高度都要有單位,這里面的高度是橫線的粗細
添加豎線使用:
\hrule width <寬度> height <高度>
注意:這里的寬度是指豎線的粗細。
在這兩個命令前面添加 \color{目標顏色} 可以更改 線條顏色
如何用這兩個命令替換掉表格中的線條需要注意以下 幾點:
在表格某一行后插入橫線時,需要使用 \noalign{ <線條命令> } 命令。這樣插入的線條才不會當成第二行的單元格內的內容。
將表格豎線 “|” 換成制定形式的豎線的時候,需要使用 !{ <線條命令>} 具體用法參考array 宏包
因此加入到原來的代碼如下:
\documentclass{ctexart}
\usepackage{array,colortbl}%需要用到的宏包
\begin{document}
\begin{tabular}{ !{\color{cyan}\vrule width 10pt} >{\color{red}} c | c |}
\hline
紅色字體&文本內容\\ \noalign{{\color{green}\hrule height 10pt}}
紅色字體&\textcolor{white}{藍色字體}\\ \hline
\end{tabular}
\end{document}
即:將第一條豎線改為 青色 粗為10 pt 的豎線,因為有表格限定線條長度,所以長度 height 不用設置。
將表格中間的橫線,設置成 綠色 粗為10pt 的橫線,因為表格也有限定的表寬,因此 寬度 width 不用設置。
任何建議,希望可以批評指正,該文內容相關視頻可去 B 站 搜索用戶 joefsong 查看。