Latex中的表格

Latex中的表格

Latex中的表格相关说明

个人认为Latex编辑文档过程中,表格的处理是较为复杂和困难的。本文主要针对latex插入表格的方法进行讲解,主要涉及的内容包括基本语法命令、跨行跨列的单元格的设置、表格大小的设置。

1.1 一个较为复杂的例子:

  • 具体代码
\begin{table}[hp] %%参数: h:放在此处 t:放在顶端 b:放在底端 p:在本页
	\renewcommand\arraystretch{1.2}
	%\setlength{\abovecaptionskip}{0.cm}
	%\setlength{\belowcaptionskip}{-0.cm}
	\centering  % 显示位置为中间
	%%\caption{Parameters description}  % 表格标题
	%%\label{Table1}  % 用于索引表格的标签
	%字母的个数对应列数,|代表分割线
	% l代表左对齐,c代表居中,r代表右对齐
	\textbf{Table 2}~~Parameters description.\\  %%表的标题
	\begin{tabular}{p{45pt}l|lll} %第一列设置宽度为45pt 全为左对齐 没有分割线
		%\setlength{\tabcolsep}{20mm}
		%\hline  % 表格的横线
		\toprule % 顶部线
		Parameters & & Definitions & Value & Source \\%[3pt]只改一行    %%表格第一行标题 % 表格中的内容,用&分开,\\表示下一行
		%\hline  % 表格的横线
		\midrule % 中部线
		$\beta_{1}$   & & xxxxabcdxxx           & 1 &  Estimation \\    %%表格内容
		\multirow{2}[2]{*}{$\alpha_{3}$} & & aaa1 & \multirow{2}[2]{*}{1} &  \multirow{2}[2]{*}{Estimation} \\
		& & bbb2                  &   &             \\
		$d_{1}$       & & xxxxabcdxxx           & 1 &  Estimation \\
		\multirow{3}[2]{*}{$1/\theta(t)$}& $\theta_{0}$ & 1aaa            & 1 &  Estimation \\
		& $\theta_{1}$ & 2bbb            & 1 &  Estimation \\
		& $\theta_{2}$ & 3ccc            & 1 &  Estimation \\
		\bottomrule % 底部线
		%\hline  % 表格的横线
	\end{tabular}
\end{table}
  • 生成表格
    Latex中的表格

1.2 相关说明

  • 完成以上代码的执行需要添加两个宏包:\usepackage{booktabs}\usepackage{multirow}
    • 在不使用宏包{booktabs}时,命令 \toprule\midrule\bottomrule将无法执行,也即不能正常显示表格中的横线;
    • 在不使用宏包{multirow}时,命令\multirow不能正常执行,也即跨行显示单元格显示效果错误;

1.3 命令解释

  1. 关于表格放置的参数
  • h:放在此处;t:放在顶端;b:放在底端;p:在本页
  1. 关于表格内容的对齐方式
  • l:代表左对齐;c:代表居中;r:代表右对齐
  1. 关于表格的列数以及列与列之间是否需要分割线
  • 字母的个数对应列数,|代表分割线
  1. 关于表格的边框(绘制三线表一般用顶部线、中部线和底部线)
  • \hline:表格的横线
  • \toprule:顶部线
  • \midrule:中部线
  • \bottomrule: 底部线
  1. 关于表格中跨行或跨列问题:(\multirow\multicolumn命令都需要用到宏包\usepackage{multirow})
  • \multirow{number_of_rows}{width}{content}:number_of_rows代表该表格单元占据的行数;width代表表格的宽度,一般用*代表自动宽度;content则是表格单元里的内容。
  • \multicolumn{number_of_columns}{alignment}{content}:number_of_columns代表该表格单元占据的列数;alignment代表表格内容的偏移(l,c或r);content则是表格单元里的内容。
  1. 调节行高
  • \renewcommand\arraystretch{1.2}
  1. 调节单列的列宽
  • \begin{tabular}{p{45pt}llll}:设置第一列宽度为45pt
  1. 表格大小调整:(\resizebox{} 命令需要使用宏包\usepackage{graphicx})
  • \resizebox{宽度}{高度}[对象]:宽度和高度可以设置固定值如7mm等,另外宽度也可以使用\textwidth\tabcolsep等进行。
  • 如果宽度或高度值的任一项用!给出,则其代表的选项的长度在被改变大小时会保持原有的宽高比例不变。
    • 例如1:\resizebox{2in}{!}{argument}将对象的宽度改变为2英寸,高度将按比例进行放大或缩小。
    • 例如2:resizebox{2in}{\height}{argument}将对象的高度改变为2英寸,但保持原有高度不变。(\height\width\totalheight\depth可以用来表示对象的原始尺寸)
      具体用法:
\resizebox{h-size}{v-size}{ 
    \begin{tabular} 
    ... 
    \end{tabular} 
}

1.4 一个跨行且跨列的例子

  • 代码:
\begin{table}[htbp]
\centering
\caption{ACO算法与仅对ACO算法的量化策略进行修改得到的压缩效果对比}
\begin{tabular}{cccc}
\cline{1-4}
\multirow{2}{*}{\textbf{Run ID}} & \multirow{2}{*}{\textbf{Dimension}}     & \multicolumn{2}{c}{\textbf{Compression Rate}} \\
                  &                       &   ACO        &   quan\_modified       \\ \cline{1-4}
     ERR174324             & \multicolumn{1}{c|}{8998$\times$96} &   44.2\%        &    27.9\%      \\
       ERR174331           & \multicolumn{1}{c|}{8998$\times$96} &    44.0\%       &   27.5\%       \\
       ERR2438054           & \multicolumn{1}{c|}{5998$\times$146} &     37.7\%      &   36.6\%       \\ \cline{1-4}
\end{tabular}
%\caption{ACO算法与仅对ACO算法的量化策略进行修改得到的压缩效果对比}
\label{tab:quan_result}
\end{table}
  • 生成的表格:
    Latex中的表格
    思考:如何实现部分列加入竖线?观察上面例子中\multicolumn{1}{c|}的使用

参考文章

【1】Latex中表格问题
【2】resizebox 命令
【3】latex表格详细教程(table, tabular, multirow, multicolumn)

上一篇:DataWhale & Pandas(四、分组)


下一篇:pandas 分组学习(利用MovieLens数据集)