Beamer 入門 之 彩色表格

  • 背景顏色
  • 單元格插入斜線
  • 更改行、列及單元格顏色
  • 更改列的背景顏色
  • 更改行的背景顏色
  • 定義單元格背景顏色
  • 實現合併單元格
  • 解決單元格合併後字體顯示不全問題
  • 解決列表橫線覆蓋字體問題
  • 定義表格字體顏色
  • 更改表格線形和顏色

本節內容給大家分享如何繪製彩色表格,大致的效果如下:

excel 彩色emoji_bc

背景顏色調整表格顏色可以使用 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}


excel 彩色emoji_背景顏色_02

解決單元格合併後字體顯示不全問題其實這個問題出現的原因是,我們希望奇數行是灰色偶數行是其他顏色(例如白色和海藍色),但是我們只能控制每一列都是灰色,所以只能通過單獨再控制偶數行的顏色來實現效果,但是偶數行改成白色之後,顏色會直接覆蓋掉奇數行合併單元格之後的內容。 所以我們不能從奇數行合併單元格而應該從偶數行合併,因此要從原來的向下合併變成向上合併。 因此我們只需要  \\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{目標顏色}} 具體內容如下:同是,如果想更改單個單元格的顏色,可以使用   好處是不會超出頁邊距。

\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 查看。