latex表格手把手超详细教程(table, tabular, multirow, multicolumn)
最近寫論文要用latex,實(shí)驗(yàn)部分需要畫表格,于是百度看了兩個(gè)多小時(shí)的博客,一無所獲,全都寫的亂七八糟的,越看越煩躁,于是谷歌五分鐘,就學(xué)會(huì)了怎么畫表格,下面是我最終畫出來的表格:
接著我將講解如何從零開始繪制一張latex表格,參考LaTeX tables - Tutorial with code examples
先畫一張最簡單的表格
繪制Latex表格需要用到 table 和 tabular 環(huán)境。其中 table 環(huán)境里寫表格的標(biāo)題(caption)、表格的偏移之類的。 tabular 環(huán)境則是繪制表格的內(nèi)容。一個(gè)簡單的表格繪制代碼如下所示:
\documentclass{article}\begin{document}\begin{table}[h!]\begin{center}\caption{Your first table.}\begin{tabular}{l|c|r} % <-- Alignments: 1st column left, 2nd middle and 3rd right, with vertical lines in between\textbf{Value 1} & \textbf{Value 2} & \textbf{Value 3}\\$\alpha$ & $\beta$ & $\gamma$ \\\hline1 & 1110.1 & a\\2 & 10.1 & b\\3 & 23.113231 & c\\\end{tabular}\end{center} \end{table}\end{document}首先是 table 環(huán)境部分,\begin{center}讓表格居中,\caption{Your first table.}寫表格的標(biāo)題。
然后是 tabular 環(huán)境部分,\begin{tabular}{l|c|r}這里面的{l|c|r},包含了三個(gè)字母,代表了表格總共有三列,第一列靠左偏移,第二列居中,第三列靠右偏移。豎線代表列之間用線分隔開來,如果想要左右兩邊都用線包圍起來,應(yīng)該改成{|l|c|r|}。接下來就是正式的表格繪制部分。
latex里的表格是一行行來繪制的,每一行里面用&來分隔各個(gè)元素,用\\來結(jié)束當(dāng)前這一行的繪制。代碼中\(zhòng)textbf{Value 1} & \textbf{Value 2} & \textbf{Value 3}\\繪制表格的第一行,是三個(gè)加粗的字符串。第二行$\alpha$ & $\beta$ & $\gamma$ \\則是三個(gè)希臘字符。
接著是\hline,它的作用是畫一整條橫線,注意如果想畫一條只經(jīng)過部分列的橫線,則可以用cline{a-b},代表的是畫一條從第a列到第b列的橫線。
至此就畫完了表頭部分,接下來填充表格數(shù)據(jù),這個(gè)很簡單,看代碼即可。
簡單的表格畫完了,但是完全不能滿足需求,我需要用到的是一個(gè)更復(fù)雜的表格形式,一個(gè)表格單元占據(jù)了多個(gè)行或者列。
表格單元占據(jù)多個(gè)行或者列
這里需要用到multirow和multicolumn,首先要引入相關(guān)的包:
%... \usepackage{multirow} % Required for multirows \begin{document} %...multirow和multicolumn的格式如下:
\multirow{NUMBER_OF_ROWS}{WIDTH}{CONTENT}NUMBER_OF_ROWS代表該表格單元占據(jù)的行數(shù),WIDTH代表表格的寬度,一般填 * 代表自動(dòng)寬度,CONTENT則是表格單元里的內(nèi)容。
\multicolumn{NUMBER_OF_COLUMNS}{ALIGNMENT}{CONTENT}NUMBER_OF_COLUMNS代表該表格單元占據(jù)的列數(shù),ALIGNMENT代表表格內(nèi)容的偏移(填l,c或者r),CONTENT則是表格單元里的內(nèi)容。
一個(gè)multirow的例子
%...\begin{table}[h!]\begin{center}\caption{Multirow table.}\label{tab:table1}\begin{tabular}{l|S|r}\textbf{Value 1} & \textbf{Value 2} & \textbf{Value 3}\\$\alpha$ & $\beta$ & $\gamma$ \\\hline\multirow{2}{*}{12} & 1110.1 & a\\ % <-- Combining 2 rows with arbitrary with (*) and content 12& 10.1 & b\\ % <-- Content of first column omitted.\hline3 & 23.113231 & c\\4 & 25.113231 & d\\\end{tabular}\end{center} \end{table}%...主要是這一句代碼\multirow{2}{*}{12} & 1110.1 & a\\,使得內(nèi)容為 12 的這一個(gè)表格單元占據(jù)了兩行。注意的是,下一行的第一個(gè)位置,由于已經(jīng)被 12 這個(gè)單元給占據(jù)了,因此第二行的代碼是& 10.1 & b\\,這里第一個(gè)位置沒有寫東西,如果寫了東西會(huì)使得這一行超過3列,表格錯(cuò)位。
一個(gè)multicolumn的例子
%...\begin{table}[h!]\begin{center}\caption{Multicolumn table.}\label{tab:table1}\begin{tabular}{l|S|r}\textbf{Value 1} & \textbf{Value 2} & \textbf{Value 3}\\$\alpha$ & $\beta$ & $\gamma$ \\\hline\multicolumn{2}{c|}{12} & a\\ % <-- Combining two cells with alignment c| and content 12.\hline2 & 10.1 & b\\3 & 23.113231 & c\\4 & 25.113231 & d\\\end{tabular}\end{center} \end{table}%...這里主要是這一句代碼\multicolumn{2}{c|}{12} & a\\,使得內(nèi)容為 12 的這一個(gè)表格單元占據(jù)了兩列。所以這一行接下來只能填一個(gè)元素a。注意這里的ALIGNMENT寫的是c|代表表格內(nèi)容居中,表格右側(cè)有豎線而左側(cè)沒有。
結(jié)合multirow與multicolumn
可以看到我所需要畫的表格中,內(nèi)容為Model的這個(gè)表格單元需要同時(shí)占據(jù)兩行和兩列,這是最復(fù)雜的。其實(shí)只需要把\multirow{NUMBER_OF_ROWS}{WIDTH}{CONTENT}的CONTENT寫成multicolumn就可以了。
%...\begin{table}[h!]\begin{center}\caption{Multirow and -column table.}\label{tab:table1}\begin{tabular}{l|S|r}\textbf{Value 1} & \textbf{Value 2} & \textbf{Value 3}\\$\alpha$ & $\beta$ & $\gamma$ \\\hline\multicolumn{2}{c|}{\multirow{2}{*}{1234}} & a\\ % <-- Multicolumn spanning 2 columns, content multirow spanning two rows\multicolumn{2}{c|}{} & b\\ % <-- Multicolumn spanning 2 columns with empty content as placeholder\hline3 & 23.113231 & c\\4 & 25.113231 & d\\\end{tabular}\end{center} \end{table}%...最主要的語句\multicolumn{2}{c|}{\multirow{2}{*}{1234}} & a\\使得內(nèi)容為1234的表格單元占據(jù)了2行兩列,所以當(dāng)前這一行右邊只能再寫一個(gè)元素a了,然后注意的是下一行是\multicolumn{2}{c|}{} & b\\用一個(gè)空的multicolumn來代表前兩個(gè)位置空置,然后填剩下的一個(gè)元素b。
我的表格實(shí)例代碼
\begin{table*}[t] \centering \caption{MAP scores of teacher model, different student models with 4 widths and three baseline models with different length of binary codes on CIFAR-10 and SUN datasets.} \label{table1} \begin{tabular}{|c|c|c|c|c|c|c|c|c|c|c|c|} \hline \multicolumn{2}{|c|}{\multirow{2}{*}{Model}} &\multirow{2}{*}{FLOPs}&\multirow{2}{*}{Params} & \multicolumn{4}{c|}{CIFAR-10}&\multicolumn{4}{c|}{SUN}\\ \cline{5-12}\multicolumn{2}{|c|}{} & & & 12bits & 24bits & 32bits & 48bits & 12bits & 24bits & 32bits & 48bits \\ \hline\multicolumn{2}{|c|}{Teacher} &4.12G &25.56M &0.87841 &0.89512 &0.9014 &0.90601 &0.83587 &0.85736 &0.86297 &0.87103\\ \hline%0.25x----------------- \multirow{4}{*}{$0.25\times$} & Stu-1 & 0.15G & 1.03M & 0.70746 & 0.73458 & 0.74909 & 0.75833 & 0.69618 & 0.76631 & 0.78075 & 0.78787 \\ \cline{2-12}\multirow{4}{*}{} & Stu-2 &0.19G &1.08M &0.7629 &0.79111 &0.80039 &0.80519 &0.73539 &0.79714 &0.80753 &0.81195\\ \cline{2-12}\multirow{4}{*}{} & Stu-3 &0.26G &1.43M &0.84684 &0.86443 &0.87384 &0.88268 &0.79284 &0.83442 &0.84350 &0.84353\\ \cline{2-12}\multirow{4}{*}{} & Stu-4 & 0.29G &1.99M &0.85901 &0.87269 &0.8836 &0.88728 &0.81997 &0.84620 &0.85041 &0.85036\\ \hline \end{tabular} \label{table_MAP} \end{table*}這里我用\begin{table*}[t]有一個(gè)星號(hào),是為了讓表格寬度與頁面等寬而不是二分之一寬。
latex的基本畫法就差不多這樣了,如果還有更高的需求,最好去谷歌查詢,因?yàn)榘俣瘸鰜淼牟┛蛯懙膶?shí)在太爛了,排版混亂,不知所云,看了也是浪費(fèi)時(shí)間。
總結(jié)
以上是生活随笔為你收集整理的latex表格手把手超详细教程(table, tabular, multirow, multicolumn)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ assert() 详解
- 下一篇: 学习笔记——C语言实现单链表的基本操作: