Latex論文表格畫法及相關技巧總結


最近畫了很多計算機會議和論文的表格,因此特意在這裏做一個記錄,以滿足未來畫基本表格的需要,節省時間。

1 基本表格畫法

  • \begin{table}[htbp] 表示表格的開始。中括號中的 htbp 表示的是表格的浮動格式。當然這個基本參數不僅僅只是對錶格有用。需要注意的是,一般使用 [htb] 這樣的組合,這樣組合的意思就是Latex會盡量滿足排在前面的浮動格式,就是 h-t-b 這個順序,讓排版的效果儘量好。
    • [h] 表示將表格放在當前位置。
    • [t] 表示將表格放置在頁面的頂部。
    • [b] 表示將表格放置在頁面的底部。
    • [p] 將表格放置在一隻允許有浮動對象的頁面上。
  • \caption{my table} 表示表格的標題,該設置可以放在 \begin{tabular} \end{tabular} 環境的前後,使得表格的標題顯示在表格的上面或下面。\label{table1} 表示表格名字,用於正文中引用表格。
  • 若要插入跨欄圖表, 可以用浮動環境 table*\begin{table}[htbp] 變成 \begin{table*}[htbp]\end{table} 變成 \end{table*}
  • \begin{tabular}[位置]{列}\begin{tabular*}{寬度}[位置]{列} 設置表格環境參數格式。
    • \begin{tabular}{|c|c|c|} 。一個 c 表示有一列,格式爲居中顯示,這是列必選參數。通過添加 | 來表示是否需要繪製豎線。|| 表示畫二條緊相鄰的豎直線。
      • l 表示該列左對齊。
      • c 表示該列居中對齊。
      • r 表示該列右對齊。
    • 如果只需要某幾列的寬度發生改變,可以使用 p{寬度} (以 cm 爲單位或以 pt 爲單位或 0.2\textwidth)來代替 c 參數,但是表格中的文字是默認左對齊的。因此此時可以添加 p{寬度}<{\centering} 來改變文本對齊方式,但此時需要添加包 \usepackage{array} 。在這裏 \centering 參數可以被 \raggedleft\raggedright 替換,分別表示爲左對齊和右對齊。
    • 也可以使用 tabular*\begin{tabular*}{寬度}[位置]{列})環境參數,如上的 {寬度} 可以設置爲 {10cm},表示整個表格的寬度爲 10cm。但由於設置了表格的整體寬度,爲了使表格對齊,需要使用表達式 @{\extracolsep{\fill}} ,但畫正式表格一般 不推薦 使用這種表格方式(比較複雜,感覺一般用於畫類似三線表格的圖表中),可以通過命令調整整個表格的縮放。
    • \begin{tabular}[位置]{cc}[位置] 中的參數是位置可選參數,該參數表示表格相對於外部文本行基線的位置,又稱爲垂直定位參數。一般爲默認不設置,表示表格按照外部文本行的基線垂直居中。t表示表格頂部與當前外部文本行的基線重合。b 表示表格底部與當前外部文本行的基線重合。
  • 可用 \setlength{\tabcolsep}{1pt} 來調整表格的列間距離 (十分推薦)
  • 可用 \renewcommand\arraystretch{1.5} 來調整表格行間距,意思是將每一行的高度變爲原來的1.5倍 (十分推薦)
  • 如果表格太大,可以使用 \scalebox{1.5} 來對錶格進行縮放,意思是將表格的大小變爲原來的1.5倍 (十分推薦),使用的時候需要添加包 \usepackage{graphicx}

基本表格畫法如下:

\documentclass{article}

\begin{document} 
\begin{table}[htbp]
\caption{my table}
\label{table1}  %表格名字,用於正文中引用表格
\centering  
\begin{tabular}{|c|c|c|}
\hline
(1,1) & (1,2) & (1,3) \\ 
\hline
(2,1) & (2,2) & (2,3) \\
\hline
(3,1) & (3,2) & (3,3) \\
\hline
(4,1) & (4,2) & (4,3) \\
\hline
\end{tabular}
\end{table}
\end{document}

其實現效果如下:
在這裏插入圖片描述
使用 **\setlength{\tabcolsep}{1pt}{表格}**來調整表格的列間距離,如下所示:

\documentclass{article}

\begin{document} 

\begin{table}[htbp]
\caption{my table}
\centering
\setlength{\tabcolsep}{5mm}{
\begin{tabular}{|c|c|c|}
\hline
(1,1) & (1,2) & (1,3) \\ 
\hline
(2,1) & (2,2) & (2,3) \\
\hline
(3,1) & (3,2) & (3,3) \\
\hline
(4,1) & (4,2) & (4,3) \\
\hline
\end{tabular}}
\end{table}

\end{document}

其實現效果如下:
在這裏插入圖片描述
使用 \renewcommand\arraystretch{1.5} 來調整表格行間距,如下所示:

\documentclass{article}

\begin{document} 

\begin{table}[htbp]
\caption{my table}
\centering
\renewcommand\arraystretch{1.5}{
\setlength{\tabcolsep}{5mm}{
\begin{tabular}{|c|c|c|}
\hline
(1,1) & (1,2) & (1,3) \\ 
\hline
(2,1) & (2,2) & (2,3) \\
\hline
(3,1) & (3,2) & (3,3) \\
\hline
(4,1) & (4,2) & (4,3) \\
\hline
\end{tabular}}}
\end{table}

\end{document}

其實現效果如下:
在這裏插入圖片描述
使用 \scalebox{1.5} 來對錶格進行縮放,如下所示:

\documentclass{article}
\usepackage{graphicx} %需要添加的包

\begin{document} 

\begin{table}[htbp]
\caption{my table}
\centering
\scalebox{1.5}{
\renewcommand\arraystretch{1.5}{
\setlength{\tabcolsep}{5mm}{
\begin{tabular}{|c|c|c|}
\hline
(1,1) & (1,2) & (1,3) \\ 
\hline
(2,1) & (2,2) & (2,3) \\
\hline
(3,1) & (3,2) & (3,3) \\
\hline
(4,1) & (4,2) & (4,3) \\
\hline
\end{tabular}}}}
\end{table}

\end{document}

其實現效果如下:
在這裏插入圖片描述
使用 p{寬度}<{\centering} 情況如下所示:

\documentclass{article}
\usepackage{array} %需要添加的包

\begin{document} 

\begin{table}[htbp]
\caption{my table}
\centering  
\begin{tabular}{|p{1cm}<{\centering}|p{2cm}<{\centering}|p{3cm}<{\centering}|}
\hline
(1,1) & (1,2) & (1,3) \\ 
\hline
(2,1) & (2,2) & (2,3) \\
\hline
(3,1) & (3,2) & (3,3) \\
\hline
(4,1) & (4,2) & (4,3) \\
\hline
\end{tabular}
\end{table}

\end{document}

其實現效果如下:
在這裏插入圖片描述
使用 \begin{tabular*}{寬度}[位置]{列} 情況如下所示:

\documentclass{article}
\usepackage{array} %需要添加的包

\begin{document} 

\begin{table}[htbp]
\caption{my table}
\centering
\def\temptablewidth{0.6\textwidth}
{\rule{\temptablewidth}{1pt}}  %根據使用情況靈活設置,線的粗細
\begin{tabular*}{\temptablewidth}{@{\extracolsep{\fill}}ccccc}
\hline
&(1,1)&(1,2)&(1,3)&\\ 
\hline
&(2,1)&(2,2)&(2,3)&\\
\hline
&(3,1)&(3,2)&(3,3)&\\
\hline
&(4,1)&(4,2)&(4,3)&\\
\hline
\end{tabular*}
{\rule{\temptablewidth}{1pt}}
\end{table}

\end{document} 

其實現效果如下:
在這裏插入圖片描述

2 合併表格畫法

如下是表格中一些橫線的畫法(Tips: 如下表格中的(1,1)代表該格子在整個表格中的位置,有助於我們畫表格):

  • \hline:這條命令只能位於第一行前面或緊接在行結束命令\的後面,表示在剛結束的那一行畫一根水平的直線,橫線的寬度與表格的寬度相同,放在一起的兩條水平\hline命令就會畫出兩條間隔很小的水平線。
  • \cline{n-m}:這條命令在一行中可以出現多次。該命令從第n列的左邊開始,畫一條到第m列右邊結束的水平線,對應前面的列數。
\documentclass{article}
\begin{document} 

\begin{table}[htbp]
\caption{my table}
\centering
\renewcommand\arraystretch{1.5}{
\setlength{\tabcolsep}{5mm}{
\begin{tabular}{|c|c|c|}
\hline
(1,1) & (1,2) & (1,3) \\ 
\hline
(2,1) & (2,2) & (2,3) \\
\cline{2-3}
(3,1) & (3,2) & (3,3) \\
\cline{1-1} \cline{3-3}
(4,1) & (4,2) & (4,3) \\
\hline
\end{tabular}}}
\end{table}

\end{document}

其實現效果如下所示:
在這裏插入圖片描述
爲了得到合併的格子,可以通過命令 \multicolumn\multirow 進行合併單元格。需要引入包 \usepackage{multirow} 。其一般的參數使用方法如下。更詳細可以參考LaTex表格繪製的小技巧

  • \multicolumn{參數1}{參數2}{參數3}
    • 參數1 表示要將整個單元格分成多少列
    • 參數2 表示對齊方式
    • 參數3 表示這個單元格的內容
  • \multirow{參數1}{參數2}{參數3}
    • 參數1 表示要將整個單元格分成多少行
    • 參數2 表示對齊方式
    • 參數3 表示這個單元格的內容

\multicolumn{2}{|c|}{multi col} 指的是這個單元格佔兩列,表格中的內容居中表示,填充內容爲multi col,並在該單元格左右畫倆條豎線(原始的 tabular 中設置的 |c| 的兩邊的豎線會消失)。
\multirow{2}*{multi row} 指的是這個單元格佔兩行,填充內容爲multi row,參數2 是文本所在列的寬度。它可以用*取代,表示用文本的自然寬度作爲列的寬度,當使用*的時候不需要打括號。
\multicolumn{2}{c|}{\multirow{2}{*}{multi col row}} 指的是這個單元格佔兩行,同時也佔兩列。如果 \multirow 前面沒有 \multicolumn 的話,默認就是隻佔一列。注意:對應未填入的格子需要進行填充。若爲多行單列,只需要把該位置空出來即可。當爲多行多列的時候,下一行需要使用類似 \multicolumn{2}{c}{} 的語句對多列進行填充。

\documentclass{article}
\usepackage{multirow}
\begin{document} 

\begin{table}[htbp]
\caption{my table}
\centering
\renewcommand\arraystretch{1.5}{
\setlength{\tabcolsep}{5mm}{
\begin{tabular}{|c|c|c|c|c|c|}
\hline
\multicolumn{2}{|c|}{\multirow{2}*{multi col row}} &\multicolumn{3}{|c|}{multi col} & \multirow{2}{*}{multi row}\\ 
\cline{3-5}
\multicolumn{2}{|c|}{} & (2,3) & (2,4) & (2,5) & \\
\hline
\multirow{3}{*}{multi row} & (3,2) & (3,3) & (3,4) & (3,5) & (3,6)\\
\cline{2-6}
 & (4,2) & (4,3) & (4,4) & (4,5) & (4,6)\\
\cline{2-6}
 & (5,2) & (5,3) & (5,4) & (5,5) & (5,6)\\
\hline
\end{tabular}}}
\end{table}

\end{document}

其實現效果如下:
在這裏插入圖片描述

若要使用斜線表頭,需要使用 \diagbox 命令,需要添加包 \usepackage{diagbox}\diagbox[innerwidth=3.3cm]{A}{B}} 中的 [innerwidth=3.3cm] 取決於列寬度的大小。

\documentclass{article}
\usepackage{multirow}
\usepackage{diagbox} 
\begin{document} 

\begin{table}[htbp]
\caption{my table}
\centering
\renewcommand\arraystretch{1.5}{
\setlength{\tabcolsep}{5mm}{
\begin{tabular}{|c|c|c|c|c|c|}
\hline
\multicolumn{2}{|c|}{\multirow{2}*{\diagbox[innerwidth=3.3cm]{A}{B}}} &\multicolumn{3}{c|}{multi col} & \multirow{2}{*}{multi row}\\ 
\cline{3-5}
\multicolumn{2}{|c|}{} & (2,3) & (2,4) & (2,5) & \\
\hline
\multirow{3}{*}{multi row} & (3,2) & (3,3) & (3,4) & (3,5) & (3,6)\\
\cline{2-6}
 & (4,2) & (4,3) & (4,4) & (4,5) & (4,6)\\
\cline{2-6}
 & (5,2) & (5,3) & (5,4) & (5,5) & (5,6)\\
\hline
\end{tabular}}}
\end{table}

\end{document}

其實現效果如下所示:
在這裏插入圖片描述

3 靈活實現表格

因爲有些需求,需要在論文模板中靈活實現一個表格,但能實現就行。~~~ / / / ( ^ v ^ ) \ \ \~~~。

\documentclass{article}
\usepackage{multirow}
\usepackage{diagbox}
\usepackage{graphicx}
\usepackage{booktabs}
\begin{table*}[t]
	\setlength{\abovecaptionskip}{0.cm}
	\setlength{\belowcaptionskip}{-0.cm}
	\caption{Average search time (s)}
	\label{TAB1}
	\centering
	\scalebox{0.85}{
		\begin{tabular}{c|c|c|c|c|c|c|c|c|c|c|c|c|c}
			\cline{2-13}
			\multirow{2}*{}&\multicolumn{2}{c|}{\multirow{2}*{\# of people}}& \multicolumn{10}{c|}{Date}& \\
			\cline{4-13}
			&\multicolumn{2}{c|}{}&2016/2/8&2016/2/16&2016/3/10&2016/3/18&2016/4/6&2016/4/22&2016/5/11&2016/5/15&2016/6/2&2016/6/25\\
			\cline{2-13}
			&\multirow{2}*{5000}&Random&0&0&0&0&0&0&0&0&0&0\\
			\cline{3-13}
			&\multicolumn{1}{c|}{}&Our&0&0&0&0&0&0&0&0&0&0\\
			\cline{2-13}
			&\multirow{2}*{6000}&Random&0&0&0&0&0&0&0&0&0&0\\
			\cline{3-13}
			&\multicolumn{1}{c|}{}&Our&0&0&0&0&0&0&0&0&0&0\\
			\cline{2-13}
			&\multirow{2}*{7000}&Random&0&0&0&0&0&0&0&0&0&0\\
			\cline{3-13}
			&\multicolumn{1}{c|}{}&Our&0&0&0&0&0&0&0&0&0&0\\
			\cline{2-13}
			\specialrule{0em}{1pt}{2pt}
			\hline
			\specialrule{0em}{1pt}{1pt}
			\cline{2-13}
			&\multirow{2}*{8000}&Random&0&0&0&0&0&0&0&0&0&0\\
			\cline{3-13}
			&\multicolumn{1}{c|}{}&Our&0&0&0&0&0&0&0&0&0&0\\
			\cline{2-13}
			&\multirow{2}*{9000}&Random&0&0&0&0&0&0&0&0&0&0\\
			\cline{3-13}
			&\multicolumn{1}{c|}{}&Our&0&0&0&0&0&0&0&0&0&0\\
			\cline{2-13}
			&\multirow{2}*{10000}&Random&0&0&0&0&0&0&0&0&0&0\\
			\cline{3-13}
			&\multicolumn{1}{c|}{}&Our&0&0&0&0&0&0&0&0&0&0\\
			\cline{2-13}
		\end{tabular}
	}
\end{table*}

其實現效果如下:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章