LaTex 寫演示文稿 - Beamer 入門 之 彩色表格


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM