在使用latex撰写文档时,可能会遇到表格太大超过页面范围,表格太小显示不美观,以及生成跨行表格,表头斜线等问题,以下是一些调整表格的命令。
使用以下的latex命令之前,需要在latex文件中导入包:\usepackage{graphicx}
表格中包含中文字符时,默认的行间距会使得中文字符贴近表格上边线,很不美观,此时,我们可以使用如下命令来调整表格的行间距,让字符位于每一行的中间。
示例:
\begin{table}[h]
\renewcommand{\arraystretch}{0.5}
\caption{XXX}
\label{table1}
\centering
\begin{tabular}{}
...
\end{tabular}
\end{table}
除了表格的行间距,我们还可以通过调整表格的列间距来使得表格在页面上的显示更加美观。
示例:
\begin{table}[h]
\caption{XXX}
\label{table2}
\centering
\setlength{\tabcolsep}{7mm}{
\begin{tabular}{}
...
\end{tabular}
}
\end{table}
虽然使用列间距可以使得表格在页面大小内进行合适的缩放,但这样做的前提是“表格内的内容比较稀疏(更适合用于将窄的表格放宽)”。而像下面的表格,就无法通过调整列间距的方法来改变大小了。
针对上述这种情况,我们可以有以下的处理方式。
latex中的“\resizebox{宽度}{高度}{对象}”命令可以调整对象的宽度和高度为设定值,若宽度或高度中的任意一项为“!”,则表示在改变另一项时,当前项会按照原始宽高比进行缩放。
将表格的整体宽度设定为当前环境宽度,高度按照原始宽高比缩放。
示例:
\begin{table}[h]
\caption{XXX}
\label{table2}
\centering
\resizebox{\linewidth}{!}{
\begin{tabular}{}
...
\end{tabular}
}
\end{table}
将表格的整体宽度设定为页面中一行文字的宽度,高度按照原始宽高比缩放。
示例:
\begin{table}[h]
\caption{XXX}
\label{table2}
\centering
\resizebox{\textwidth}{!}{
\begin{tabular}{}
...
\end{tabular}
}
\end{table}
以图形方式调整单栏形式和双栏形式的表格宽度本质并没有什么不同,只是在表格宽度的依据上有所区别,单栏中依赖“当前环境宽度\linewidth”,而在双栏中则依赖“文本区域宽度\textwidth”。
\hsize: 是latex中定义的长度,当结束一个段落时,它会查看\hsize的当前值,以便将其分成水平方框,是Tex中的原语,不推荐使用;
\textwidth: 是文本区域的全局宽度,可以理解为页面上一整行文字的宽度;
\pagewidth: 整个页面纸张的宽度,包含了页边的宽度,比\textwidth要大;
\linewidth: 这指得是目前环境的宽度,是依赖于上下文的一个宽度值,是一个变量,它表示文本行的当前大小。例如新建了一个box,在这个box中,\linewidth是box中文字的宽度;
\columnwidth: 当前分栏的宽度,单栏文档中和\textwidth是一致的。
单位 | 名称 | 说明 |
---|---|---|
mm | 毫米 | 1 mm = 2.845 pt |
cm | 厘米 | 1 cm= 10 mm= 28.453 pt |
pt | 点 | 1 pt = 0.351 mm |
sp | 定标点 | 65536 sp = 1 pt |
bp | 大点 | 1 bp = 0.353 mm ≈ \approx ≈ 1 pt |
dd | 迪多点 | 1 dd = 0.376 mm = 1.07 pt |
pc | 派卡 | 1 pc = 4.218 mm = 0.166 in = 12 pt |
cc | 西塞罗 | 1 cc= 4.513 mm= 12 dd = 12.84 pt |
in | 英寸 | 1 in = 25.4 mm = 72.27 pt |
ex | ex | 1 ex ≈ \approx ≈ 当前字体中字字符x 的高度 |
em | em | 1 em ≈ \approx ≈ 当前字体中字符 M 的宽度 |
表格的跨行和跨列操作需要用到\multicolumn, \multirow指令,因此需要使用\usepackage{multirow}导入multirow包。
实例:
\begin{table}[h]
\small
\caption{跨行跨列表格}
\centering
\renewcommand{\arraystretch}{1.5}
\setlength{\tabcolsep}{2.7mm}{
\begin{tabular}{|c|c|c|c|c|c|c|}
\hline
\multirow{2}{*}{\textbf{方法}} & \multicolumn{2}{c|}{\textbf{数据集一}} & \multicolumn{2}{c|}{\textbf{数据集二}} & \multicolumn{2}{c|}{\textbf{数据集三}} \\ \cline{2-7}
& \textbf{方法一} & \textbf{方法二} & \textbf{方法三} & \textbf{方法四} & \textbf{方法五} & \textbf{方法六} \\ \hline
\textbf{精度} & 0.4166 & 0.2533 & 0.3229 & 0.1014 & 0.4060 & 0.2410 \\ \hline
\textbf{准确度} & 0.4443 & 0.2285 & 0.3333 & 0.1864 & 0.4457 & 0.2005 \\ \hline
\textbf{错误率} & 0.4113 & 0.2663 & 0.3223 & 0.2003 & 0.4902 & 0.3444 \\ \hline
\textbf{损失} & 0.4116 & 0.2224 & 0.3448 & 0.2223 & 0.5009 & 0.3117 \\ \hline
\textbf{其他} & 0.5188 & 0.3066 & 0.3370 & 0.2225 & 0.5442 & 0.3220 \\ \hline
\textbf{提升} & 11.00 & 4.72 & 10.90 & 10.11 & 1.00 & 3.72 \\ \hline
\end{tabular}
}
\end{table}
命令“\multirow{2}{*}{\textbf{方法}}”中,“\multirow”表示当前单元格需要跨行,参数’2’,表示当前单元格跨2行,参数’*‘表示自动调整表格文字大小,最后的大括号中填写需要跨行显示的单元格文字,此处的"\textbf"命令表示对文字进行加粗显示。跨行命令只需要在第一行填写单元格数据,在后面的行中,对应位置的单元格可以使用’{}'占位,也可以直接空着不写。
命令"\multicolumn{2}{c|}{\textbf{数据集一}}“中,”\multicolumn"表示当前单元格需要跨列,参数’2’,表示跨两列,'c|'表示当前单元格的文字需要居中,并且需要在单元格的右侧画一道竖线。
命令"\hline"表示绘制一条横线。
"\cline{2-3}"表示在第2和第3单元格出绘制横线。
在绘制表格时,有时需要在一个单元格中表示两种含义,这就需要使用表头斜线来进行区分。具体使用如下(需要使用\usepackage{diagbox}包):
\diagbox[optional]{内容1}{内容2}{内容3}...
命令‘\diagbox’表示在当前单元格内使用斜线分割;’[optional]'方括号内是可选参数,具体参数细节可以查看官方文档https://mirrors.tuna.tsinghua.edu.cn/CTAN/macros/latex/contrib/diagbox/diagbox.pdf;大括号内的内容即为单元格内要显示的信息,有多少个大括号,单元格就会被斜线分成多少个区。
示例:
\begin{table}[h]
\small
\caption{斜线表头表格}
\centering
\renewcommand{\arraystretch}{1.5}
\setlength{\tabcolsep}{2.7mm}{
\begin{tabular}{|c|c|c|c|c|c|c|}
\hline
\diagbox{指标}{方法} & \textbf{方法一} & \textbf{方法二} & \textbf{方法三} & \textbf{方法四} & \textbf{方法五} & \textbf{方法六} \\ \hline
\textbf{精度} & 0.4166 & 0.2533 & 0.3229 & 0.1014 & 0.4060 & 0.2410 \\ \hline
\textbf{准确度} & 0.4443 & 0.2285 & 0.3333 & 0.1864 & 0.4457 & 0.2005 \\ \hline
\textbf{错误率} & 0.4113 & 0.2663 & 0.3223 & 0.2003 & 0.4902 & 0.3444 \\ \hline
\textbf{损失} & 0.4116 & 0.2224 & 0.3448 & 0.2223 & 0.5009 & 0.3117 \\ \hline
\textbf{其他} & 0.5188 & 0.3066 & 0.3370 & 0.2225 & 0.5442 & 0.3220 \\ \hline
\textbf{提升} & 11.00 & 4.72 & 10.90 & 10.11 & 1.00 & 3.72 \\ \hline
\end{tabular}
}
\end{table}
参考文章:
表格大小:https://blog.csdn.net/wbl90/article/details/52597429
宽度定义:https://zhuanlan.zhihu.com/p/142826485,https://liam.page/2015/08/17/width-in-latex/
长度单位:https://blog.csdn.net/robert_chen1988/article/details/52739825
表格跨行跨列:https://blog.csdn.net/happygogf/article/details/50963275
斜线表头:https://mirrors.tuna.tsinghua.edu.cn/CTAN/macros/latex/contrib/diagbox/diagbox.pdf