LaTeX 完成 Scientific Papers 的一些说明-表格,子图与引用

王 茂南 2019年7月8日07:23:02
评论
1 21668字阅读72分13秒
摘要这一篇会介绍关于 LaTeX 来完成论文写作的一些小的技巧, 和一些小的方法。

简介

这一部分会介绍一下关于 LaTeX 来完成论文写作的一些方式。之前介绍过 LaTeX 的一些基本的使用方式,这里主要是介绍使用他来完成科学类文章的写作。主要参考资料是 GitHub 上一个仓库里的内容,链接会放在下面。

更多资料

 

表格的绘制

在说绘制表格之前, 简单说明几个问题:

  • hline:表示横线
  • toprule:表示三线表的表头的横线(这个与后面两个三线表的都需要使用booktabs
  • midrule:表示三线表中间的横线
  • bottomrule:表示三线表最后的横线

我们可以使用 booktabs 绘制出很漂亮的表格,下面看一个简单的例子。这个例子演示一下三线表的绘制, 这种表格在写 paper 的时候会经常被使用到.

  1. \documentclass{article}
  2. \usepackage{booktabs}
  3. \begin{document}
  4. % --
  5. \begin{table}
  6.     \centering
  7.     \begin{tabular}{lcccc}
  8.         \toprule
  9.         & \multicolumn{4}{c}{Data} \\ \cmidrule(lr){2-5}
  10.         DoS Types & Correct &  Wrong & Total & Accuracy \\
  11.         \midrule
  12.         back & 0 & 359 & 359 & 0.00\% \\
  13.         land & 7 & 0 & 7 & 100.00\% \\
  14.         neptune & 4616 & 41 & 4657 & 99.12\% \\
  15.         pod & 36 & 5 & 41 & 87.80\% \\
  16.         smurf & 652 & 13 & 665 & 98.05\% \\
  17.         teardrop & 12 & 0 & 12 & 100\% \\
  18.         mailbomb & 0 & 293 & 293 & 0.00\% \\
  19.         apache2 & 72 & 665 & 737 & 9.77\% \\
  20.         processtable & 135 & 550 & 685 & 19.71\% \\
  21.         udpstorm & 0 & 2 & 2 & 0.00\% \\
  22.         \bottomrule
  23.     \end{tabular}
  24.     \caption{The Model1 for DoS Attack}
  25.     \label{tab-label}
  26. \end{table}
  27. \end{document}

简单做一下说明, 上面的我们需要修改的是 {lcccc} 这里后面四个 c 表示后面(也就是 Data 部分)的数据居中表示, multicolumn{4} 表示的是 Data4 列。最终绘制的表格如下所示:

LaTeX 完成 Scientific Papers 的一些说明-表格,子图与引用

基础三线表

上面的三线表还是有点进阶的感觉, 我们这里来看一下最最基础的三线表的样子.

  1. \begin{table}
  2.   \centering
  3.   \begin{tabular}{llcc}
  4.       \toprule % 顶部的那个横线
  5.       Variable & Description &  Mean & Std. Deviation \\
  6.       \midrule % 中间那条线
  7.       age & Age in years & 54.4 & 9.07 \\
  8.       sex & Sex (1 = male; 0 = female) & 0.68 & - \\
  9.       oldpeak & ST depression induced by exercise relative to rest & 1.04 & 1.16 \\
  10.       \bottomrule % 最下面那条线
  11.   \end{tabular}
  12.   \caption{The Detailed Descriptions of Variables}
  13.   \label{tab-label-1}
  14. \end{table}

最后绘制出的形状如下图所示:

LaTeX 完成 Scientific Papers 的一些说明-表格,子图与引用

 

表格行合并

上面的表格我们讲了一下如何进行多列合并的操作, 下面我们来看一下如何进行多行的合并. 多行的合并使用 multirow 来完成相应的操作.

LaTeX 完成 Scientific Papers 的一些说明-表格,子图与引用

下面是对应的代码。在使用之前,我们需要引入相应的 package,及 multirow 这个 package。

  1. \usepackage{multirow}

接着就是对于表格的绘制, 简单的说明一下, 我们会把 \multirow 写在我们合并的起始行, 然后后面括号跟合并的行数, 后面的行空着就行.

  1. \begin{table}
  2.     \centering
  3.     \begin{tabular}{ccc}
  4.     \toprule
  5.     \multicolumn{2}{c}{Predict label} & \multirow{2}{*}{Example} \\ \cmidrule(r){1-2}
  6.     traditional model & our model & \\
  7.     \midrule
  8.     5 & 6 & aaaaaaaa \\
  9.     8 & 9 & bbbbbbbb \\
  10.     11 & 12 & ccccccc \\
  11.     \bottomrule
  12.     \end{tabular}
  13. \end{table}

参考资料: Combine and reduce rows in a table

 

多行多列合并的表格

下面看一个稍微复杂一些的表格。里面同时有「多行合并」,也有「多列合并」。 同时包含多行和多列的合并。下面的内容来自这个链接: latex的table总结。我们直接来看代码:

  1. \begin{table}
  2.     \centering
  3.     \begin{tabular}{|c|c|c|c|c|}
  4.         \hline
  5.         \multirow{2}{*}{Multi-Row} & % 合并多行
  6.         \multicolumn{2}{c|}{Multi-Column} & % 合并多列
  7.         \multicolumn{2}{c|}{\multirow{2}{*}{Multi-Row and Col}} \\ % 同时合并多行和多列
  8.         \cline{2-3} % 绘制2-3格的横线
  9.         & column-1 & column-2 & \multicolumn{2}{c|}{} \\ % 这里的multicolumn为了画右侧的边框线
  10.         \hline % 画一条横线
  11.         label-1 & label-2 & label-3 & label-4 & label-5 \\
  12.         \hline % 画一条横线
  13.     \end{tabular}
  14. \end{table}

简单介绍一下上面表格中的参数. 主要注意一下下面hline和cline的使用.

  1. \multirow{2}{*}{Multi-Row}, \multirow是跨列功能,第一个参数2,表示跨两列,第二个参数*,表示系统自动调整文字,最后一个参数即是要填入的文字,跨列需注意的是,使用\multirow指令的那一列表格,到了要撰写下一列表格时,被跨列直接留空,不可填字(填了之后就会知道为什么了)
  2. \multicolumn{2}{c|}{Multi-Column}, \multicolumn是跨行功能,第一个参数2,表示跨两行,第二个参数c|,表示文字置中,并在栏位右边画一条直线框,最后一个参数即是要填入的文字
  3. \hline, 表示画出一整条从左至右横线
  4. \cline{2-3}, 表示画出一条在第2栏位到第3栏位的横线段,其他栏位将不会有横线段

下面是最终绘制出来的表格的结果.

LaTeX 完成 Scientific Papers 的一些说明-表格,子图与引用

 

表格中某个元素居中

有的时候, 我们可能会有下面的需求, 我们表格中的某一列是左对齐的, 但是我们希望其中的header部分是居中的, 这个时候我们可以使用multicolumn来进行操作. 下面是一个简单的例子.

  1. % 没有居中的形式
  2. \begin{table}
  3.     \centering
  4.     \begin{tabular}{lccc}
  5.         \toprule
  6.         \multirow{2}{*}{Model} & \multicolumn{3}{c}{Data} \\ \cmidrule(lr){2-4}
  7.         & Training Set &  Test Set &  Accuracy \\
  8.         \midrule
  9.         SVM & 300 & 200 & 84.00\% \\
  10.         C4.5 & 300 & 200 & 77.52\% \\
  11.         \bottomrule
  12.     \end{tabular}
  13.     \caption{The Comparision of Modeling Results}
  14.     \label{tab-label-1}
  15. \end{table}
  16. % 居中的形式
  17. \begin{table}
  18.     \centering
  19.     \begin{tabular}{lccc}
  20.         \toprule
  21.         \multicolumn{1}{c}{\multirow{2}{*}{Model}} & \multicolumn{3}{c}{Data} \\ \cmidrule(lr){2-4} % 注意看这一行的第一个是怎么写的
  22.         & Training Set &  Test Set &  Accuracy \\
  23.         \midrule
  24.         SVM & 300 & 200 & 84.00\% \\
  25.         C4.5 & 300 & 200 & 77.52\% \\
  26.         \bottomrule
  27.     \end{tabular}
  28.     \caption{The Comparision of Modeling Results}
  29.     \label{tab-label-1}
  30. \end{table}

下面是有居中和没有居中的例子(代码里我省略了几行的内容, 不影响最后要说明的问题), 和两者的对比.

LaTeX 完成 Scientific Papers 的一些说明-表格,子图与引用

 

设置表格的宽度

有的时候我们需要让我们表格的宽度与文章某一栏的宽度是一样的,这个时候最简单的方法就是使用 resizebox 来调整表格的大小,如下所示:

  1. % 直接使用 resize 对 table 进行放缩
  2. \begin{table}[]
  3.     \caption{}
  4.     \label{tab:my-table}
  5.     \resizebox{\columnwidth}{!}{%
  6.         \begin{tabular}{cc}
  7.         \hline
  8.         \multirow{2}{*}{Network} & \multirow{2}{*}{Records} \\
  9.          &  \\ \hline
  10.         4-way & 1221 \\
  11.         3-way & 21 \\ \hline
  12.         \end{tabular}%
  13.     }
  14. \end{table}

最终的效果如下图所示,可以看到虽然 resizebox 可以调整表格的宽度,但是同时也会改变字体的大小:

LaTeX 完成 Scientific Papers 的一些说明-表格,子图与引用

那有没有办法既不会使得字体大小改变,又可以让表格的宽度到指定的宽度呢。答案是有的,我们只需要在表格的列与列之间添加空白即可,使用 extracolsep 添加空白,如下所示:

  1. % 添加 whitespace 来达到适当的宽度
  2. \begin{table}[]
  3.     \caption{}
  4.     \label{tab:my-table}
  5.     \begin{tabular*}{0.99\linewidth}{@{\extracolsep{\fill}}cc}
  6.     \hline
  7.     \multirow{2}{*}{Network} & \multirow{2}{*}{Records} \\
  8.      &  \\ \hline
  9.     4-way & 1221 \\
  10.     3-way & 21 \\ \hline
  11.     \end{tabular*}%
  12. \end{table}

最终的效果如下所示,可以看到即改变了表格的宽度,也没有改变表格中字体的大小:

LaTeX 完成 Scientific Papers 的一些说明-表格,子图与引用

 

表格的手动换行与对齐

有的时候, 当有的表格单元格中的内容较多, 内容较长的时候, 我们可以选择手动进行换行, 虽然不是很优雅, 需要自己调整换行的位置, 但是也是一个很不错的方式.

在表格的单元格中, 我们需要借助makecell才能够完成换行. 我们下面看一个简单的例子.

  1. \begin{table}
  2.   \centering
  3.   \begin{tabular}{llcc}
  4.       \toprule % 顶部的那个横线
  5.       Variable & Description &  Mean & Std. Deviation \\
  6.       \midrule % 中间那条线
  7.       age & Age in years & 54.4 & 9.07 \\
  8.       sex & Sex (1 = male; 0 = female) & 0.68 & - \\
  9.       oldpeak & \makecell{ST depression induced by exercise relative to rest \\ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} & 1.04 & 1.16 \\
  10.       \bottomrule % 最下面那条线
  11.   \end{tabular}
  12.   \caption{The Detailed Descriptions of Variables}
  13.   \label{tab-label-1}
  14. \end{table}

可以看到最后一行的第二列(descriptions)部分是进行了换行的.

LaTeX 完成 Scientific Papers 的一些说明-表格,子图与引用

参考资料How to add a forced line break inside a table cell

但是, 此时我们有发现了一个问题, 这个时候那个cell是居中的, 我们希望他可以左对齐, 与其他的cell是一样的, 这个时候只需要加上makecell[l]{...}即可. 我们看一下下面的这个例子. 这里代码基本是和上面的是一样的, 就是加了一个l.

  1. \begin{table}
  2.   \centering
  3.   \begin{tabular}{llcc}
  4.       \toprule % 顶部的那个横线
  5.       Variable & Description &  Mean & Std. Deviation \\
  6.       \midrule % 中间那条线
  7.       age & Age in years & 54.4 & 9.07 \\
  8.       sex & Sex (1 = male; 0 = female) & 0.68 & - \\
  9.       oldpeak & \makecell[l]{ST depression induced by exercise relative to rest \\ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX} & 1.04 & 1.16 \\
  10.       \bottomrule % 最下面那条线
  11.   \end{tabular}
  12.   \caption{The Detailed Descriptions of Variables}
  13.   \label{tab-label-1}
  14. \end{table}

我们看一下最后编译之后的效果, 这样会比一开始的要整齐一些:

LaTeX 完成 Scientific Papers 的一些说明-表格,子图与引用

参考资料: How to left align text in a table with \makecell

 

表格的自动换行

有的时候, 我们需要表格中的内容可以自动换行, 这里需要注意的是, Only the p - type can have a width argument. 关于自动换行的参考资料见: How to create a table with fixed column widths

我们看一个简单的例子:

  1. \begin{table}[htbp!]
  2.     % 我提取的特征与其他人提取的特征
  3.     \centering
  4.     \begin{tabular}{|p{2cm}|p{5cm}p{2cm}p{2cm}|}
  5.         \toprule
  6.         Attack Types & Important Features in cite &  Numbers of Important Features in cite & The Same Important Feature \\
  7.         \midrule
  8.         DoS & 3, 4, 5, 6, 8, 23, 29, 36, 38, 39, 40 & 11 & 9 \\
  9.         Probe & 2, 3, 4, 5, 6, 12, 29, 32, 33, 34, 35, 36, 37, 40 & 14 & 11 \\
  10.         R2L & 1, 2, 3, 5, 6, 10, 12, 14, 16, 24, 32, 33, 35, 36, 37, 38, 39, 41 & 18 & 9 \\
  11.         U2R & 3, 5, 6, 10, 14, 17, 32, 33 & 8 & 6 \\
  12.         \bottomrule
  13.     \end{tabular}
  14.     \caption{Performances of The Model}
  15.     \label{tab5-ModelExplain-1}
  16. \end{table}

最终的效果如下图所示:

LaTeX 完成 Scientific Papers 的一些说明-表格,子图与引用

 

长表格自动换页

有的时候,我们会遇到表格过长,一页装不下的问题,这个时候就需要使用长表格的自动换页。同时,我们在自动换页的时候,希望表头和表尾的横线可以在每一页都出现。下面就看一个小例子,可以实现上面的功能,即长表格的自动换页和表头的自动重复。代码如下:

  1. \documentclass{article}
  2. \usepackage{longtable}
  3. \begin{document}
  4. \begin{longtable}{|c|c|r|r|r|r|}
  5. \caption{caption}
  6. \label{table:label} \\ % add \\ command to tell LaTeX to start a new line
  7. % Appear table header at the first page as well
  8. \hline
  9. line1 & line2 & $t_1$ & $t_{12}$ & $t_2$ & $r$(\%)\\
  10. \hline
  11. \endfirsthead
  12. % Appear the table header at the top of every page
  13. \hline
  14. line1 & line2 & $t_1$ & $t_{12}$ & $t_2$ & $r$(\%)\\
  15. \hline
  16. \endhead
  17. % Appear \hline at the bottom of every page
  18. \hline
  19. \endfoot
  20. % data begins here
  21. 10 & 2 & 0:22:00 & 9:46:00 & 2:00:00 & 80.49 \\
  22. 204 & 205 & 2:01:00 & 2:57:00 & 1:11:00 & 47.97 \\
  23. % 这里复制粘贴更多的数据, 使其可以超出一页的范围
  24. \hline
  25. \end{longtable}
  26. \end{document}

效果如下图所示, 虽然有些不清楚, 不过总之是可以实现分页的. 关于这个有几个点是需要主要的:

  • 这里 longtable 外面不能再嵌套其他的table,否则不能实现分页;
  • 注意在 label 后面需要有双斜杠(看一下上买的注释);
  • 请查看上面代码的注释, 为了实现换页之后还有表头, 我们需要在前面加不一样的内容.
LaTeX 完成 Scientific Papers 的一些说明-表格,子图与引用

长表实现指定宽度

我们使用 longtable 的时候是无法使用 resizebox 来调整表格宽度的。为了调整表格宽度,我们可以使用 p 标签来进行指定。例如下面的例子:

  1. \begin{longtable}{|p{.05\textwidth}|p{.05\textwidth}|p{.05\textwidth}|}
  2. \end{longtable}

但是直接使用 p 标签,表格的内容是无法居中的。如果我们想要使得表格内容可以居中,我们需要自己定义一个样式,后面使用自己的样式即可(将 p 改为大写的 P 即可):

  1. \newcolumntype{P}[1]{>{\centering\arraybackslash}p{#1}}
  2. \begin{longtable}{|P{.05\textwidth}|P{.05\textwidth}|P{.05\textwidth}|}
  3. \end{longtable}

 

 

表格种内容的对齐

参考资料: How can I left-justify a paragraph cell in a table?

我们需要使用 array 的宏包:

  1. \usepackage{array}

接着可以使用raggedright, raggedleft, centering来完成左对齐, 右对齐和居中. 我们可以看一下下面的这个例子.

  1. \begin{table}
  2.      \begin{center}
  3.      \label{pntable}
  4.      \begin{tabular}{|p{2cm}<{\raggedright}|>{\centering}p{6.5cm}|p{3cm}<{\raggedleft}|}
  5.      \hline
  6.      \textbf{Integer} & \textbf{Partitions} & \textbf{Number of partitions} \\ \hline
  7.      1 & 1 & 1 \\ \hline
  8.      2 & 2, 1+1 & 2 \\ \hline
  9.      3 & 3, 2+1, 1+1+1 & 3 \\ \hline
  10.      \end{tabular}
  11.      \end{center}
  12.      \caption{All the partitions of $n \in \{1,\ldots,3\}$}
  13. \end{table}

最终的结果如下图所示:

LaTeX 完成 Scientific Papers 的一些说明-表格,子图与引用

绘制 cmidrule 长度为1

我们有的时候, 绘制三线表的时候, 需要上面cmidrule的宽度是一, 但是直接写\cmidrule(lr){1}是不行的, 我们需要写成\cmidrule(lr){1-1}. 下面我们看一个例子.

  1. % 三线表cmidrule长度为1
  2. \begin{table}
  3.     \caption{Test}
  4.     \label{tab4-Summary-1}
  5.     \setlength{\tabcolsep}{3pt}
  6.     \centering
  7.     \begin{tabular}{lllllll}
  8.     \toprule % 表格顶部的线
  9.         \textbf{AAA} & \multicolumn{5}{c}{\textbf{BBB}} & \textbf{CCC} \\ \cmidrule(lr){1-1}\cmidrule(lr){2-6}\cmidrule(lr){7-7}
  10.         \centering
  11.         No. 1-3 & No. 1-14 & No. 15-28 & No. 29-42 & No. 43-56 & No. 57-70 & No. 1-11 \\
  12.         \midrule % 划线
  13.         1 & 2 & 3 & 4 & 5 & 6 & 7 \\
  14.         1 & 2 & 3 & 4 & 5 & 6 & 7 \\
  15.         1 & 2 & 3 & 4 & 5 & 6 & 7 \\
  16.         1 & 2 & 3 & 4 & 5 & 6 & 7 \\
  17.         1 & 2 & 3 & 4 & 5 & 6 & 7 \\
  18.     \bottomrule % 表格底部的线
  19.     \end{tabular}
  20. \end{table}

最终的效果如下所示:

LaTeX 完成 Scientific Papers 的一些说明-表格,子图与引用

参考资料\cmidrule one column wide

 

表格中内容加上 item (表格单元格内实现排序)

我们可以在表格中的内容加上类似于item的效果. 首先我们需要在最开始加上下面的内容.

  1. % 设置表格参数
  2. \newcommand{\tabitem}{~~\llap{\textbullet}~~}
  3. \usepackage{booktabs}

我们可以对上面的内容进行简单的修改, 从而控制item之后缩进的大小. 比如下面的例子, 我们使得其缩进的更多一些, 这样看起来可以整齐一些.

当然, 下面表格的内容, 我们用到了上面提到的cell内换行和对齐的技巧.

  1. \newcommand{\tabitem}{~~~~~~\llap{\textbullet}~~} % 关于表格中序号
  2. \begin{table}
  3.   \centering
  4.   \begin{tabular}{llcc}
  5.       \toprule % 顶部的那个横线
  6.       Variable & Description &  Mean & Std. Deviation \\
  7.       \midrule % 中间那条线
  8.       age & Age in years & 54.4 & 9.07 \\
  9.       cp & \makecell[l]{Chest pain type: \\
  10.       \tabitem Value 1: typical angina \\
  11.       \tabitem Value 2: atypical angina \\
  12.       \tabitem Value 3: non-anginal pain \\
  13.       \tabitem Value 4: asymptomatic} & 0.97 & 1.03 \\
  14.       sex & Sex (1 = male; 0 = female) & 0.68 & - \\
  15.       \bottomrule % 最下面那条线
  16.   \end{tabular}
  17.   \caption{The Detailed Descriptions of Variables}
  18.   \label{tab-label-1}
  19. \end{table}

下面是最终的显示效果.

LaTeX 完成 Scientific Papers 的一些说明-表格,子图与引用

 

我们再来看一下更加麻烦的问题, 就是如果 item 中的内容过长, 还需要换行, 暂时我没有想到什么太好的方法, 只能再换行之后再手动加上空格, 就像下面这样.

  1. \begin{table}
  2.   \centering
  3.   \begin{tabular}{llcc}
  4.       \toprule % 顶部的那个横线
  5.       Variable & Description &  Mean & Std. Deviation \\
  6.       \midrule % 中间那条线
  7.       age & Age in years & 54.4 & 9.07 \\
  8.       cp & \makecell[l]{Chest pain type: \\
  9.       \tabitem Value 1: typical angina \\
  10.       \tabitem Value 2: atypical angina \\
  11.       \tabitem Value 3: non-anginal pain \\
  12.       \tabitem Value 4: asymptomatic} & 0.97 & 1.03 \\
  13.       sex & Sex (1 = male; 0 = female) & 0.68 & - \\
  14.       restecg & \makecell[l]{Resting electrocardiographic results: \\
  15.       \tabitem Value 0: normal \\
  16.       \tabitem Value 1: having ST-T wave abnormality (T wave inversions \\ ~~~~~~\llap~~ and/or ST elevation or depression of > 0.05 mV) \\
  17.       \tabitem Value 2: showing probable or definite left ventricular hypertrophy \\ ~~~~~~\llap~~ by Estes' criteria} & 0.53 & 0.52 \\
  18.       \bottomrule % 最下面那条线
  19.   \end{tabular}
  20.   \caption{The Detailed Descriptions of Variables}
  21.   \label{tab-label-1}
  22. \end{table}

我们来看一下最终的效果, 这里注意我们红色箭头指的位置, 那里换行之后是有缩进的.

LaTeX 完成 Scientific Papers 的一些说明-表格,子图与引用

 

下面我们再来看一个完整的例子, 我们还可以用item来达到不一样的表格的效果.

  1. \documentclass{article}
  2. \usepackage[utf8]{inputenc}
  3. \usepackage{graphicx}
  4. \usepackage{ctex}
  5. \usepackage{geometry} % 设置页边距
  6. \geometry{a4paper,scale=0.8}
  7. % 设置表格参数
  8. \newcommand{\tabitem}{~~\llap{\textbullet}~~}
  9. \usepackage{booktabs}
  10. % 开始绘制表格
  11. \begin{document}
  12. \begin{table}
  13.     \caption{Test}
  14.     \label{tab4-Summary-1}
  15.     \setlength{\tabcolsep}{3pt}
  16.     \centering
  17.     \begin{tabular}{lllllll}
  18.     \toprule % 表格顶部的线
  19.         \textbf{AAA} & \multicolumn{5}{c}{\textbf{BBB}} & \textbf{CCC} \\ \cmidrule(lr){1-1}\cmidrule(lr){2-6}\cmidrule(lr){7-7}
  20.         \centering
  21.         No. 1-3 & No. 1-14 & No. 15-28 & No. 29-42 & No. 43-56 & No. 57-70 & No. 1-11 \\
  22.         \midrule % 划线
  23.         \tabitem 1 & \tabitem 1 & \tabitem 2 & \tabitem 3 & \tabitem 4 & \tabitem 5 & \tabitem 6 \\
  24.         \tabitem 2 & \tabitem 1 & \tabitem 2 & \tabitem 3 & \tabitem 4 & \tabitem 5 & \tabitem 6 \\
  25.         \tabitem 3 & \tabitem 1 & \tabitem 2 & \tabitem 3 & \tabitem 4 & \tabitem 5 & \tabitem 6 \\
  26.                    & \tabitem 1 & \tabitem 2 & \tabitem 3 & \tabitem 4 & \tabitem 5 & \tabitem 6 \\
  27.                    & \tabitem 1 & \tabitem 2 & \tabitem 3 & \tabitem 4 & \tabitem 5 & \tabitem 6 \\
  28.                    & \tabitem 1 & \tabitem 2 & \tabitem 3 & \tabitem 4 & \tabitem 5 & \\
  29.                    & \tabitem 1 & \tabitem 2 & \tabitem 3 & \tabitem 4 & \tabitem 5 & \\
  30.     \bottomrule % 表格底部的线
  31.     \end{tabular}
  32. \end{table}
  33. \end{document}

最终的效果如下所示:

LaTeX 完成 Scientific Papers 的一些说明-表格,子图与引用

参考资料: How to use itemize in Table environment

 

文章作者信息

我们有的时候需要作者信息像下面这个样子.

LaTeX 完成 Scientific Papers 的一些说明-表格,子图与引用

首先是一个作者可以对应多个机构 (这个参考Adding more than one author with different affiliation)

  1. \usepackage{authblk}
  2. \author[1]{Author A\thanks{A.A@university.edu}}
  3. \author[1]{Author B\thanks{B.B@university.edu}}
  4. \author[1]{Author C\thanks{C.C@university.edu}}
  5. \author[1,2]{Author D\thanks{D.D@university.edu}}
  6. \author[2]{Author E\thanks{E.E@university.edu}}
  7. \affil[1]{Department of Computer Science, \LaTeX\ University}
  8. \affil[2]{Department of Mechanical Engineering, \LaTeX\ University}
  9. \renewcommand\Authands{ and }

除了上面的信息之外, 我们还需要添加邮件的信息, 这一部分参考Custom positions of author names, affiliations and emails in LaTeX article

下面的写法可以使得邮件是两行的.

  1. \affil[ ]{\textit{e-mail: wangmaonan@bupt.edu.cn, zkf\_bupt@163.com, luodan@bupt.edu.cn,}}
  2. \affil[ ]{\textit{qing0991@163.com, xjwang@bjut.edu.cn}}

 

LaTeX 绘制子图

利用 subfloat 来绘制子图

我们利用 subfig 包结合 subfloat 来创建子图。我们看一下下面的例子,将图片放置为 2*2 的子图。同时说明一下如何写图片标题以及引用图片。

  1. \documentclass{article}
  2. \usepackage{subfig} % 子图
  3. \begin{document}
  4. \begin{figure}[htbp!]
  5.     \centering
  6.     \subfloat[A]{
  7.         \includegraphics[width=0.47\textwidth]{image/ldct/straight.png}
  8.         \label{fig:ldct_straight}
  9.     }
  10.     \subfloat[B]{
  11.         \includegraphics[width=0.47\textwidth]{image/ldct/straight_ratio.png}
  12.         \label{fig:ldct_straight_ratio}
  13.     }
  14.     \quad
  15.     \subfloat[C]{
  16.         \includegraphics[width=0.47\textwidth]{image/ldct/right.png}
  17.         \label{fig:ldct_right}
  18.     }
  19.     \subfloat[D]{
  20.         \includegraphics[width=0.47\textwidth]{image/ldct/right_ratio.png}
  21.         \label{fig:ldct_right_ratio}
  22.     }
  23.     \caption{数据说明;
  24.     图~\ref{fig:ldct_straight} 表示 A;
  25.     图~\ref{fig:ldct_straight_ratio} 表示 B;
  26.     图~\ref{fig:ldct_right} 表示 C;
  27.     图~\ref{fig:ldct_right_ratio} 表示 D}
  28.     \label{ldct}
  29. \end{figure}
  30. % 引用
  31. 图片 \ref{ldct},子图 \ref{fig:ldct_straight}.
  32. \end{document}

最终的效果如下所示,包含子图和如何进行引用。

LaTeX 完成 Scientific Papers 的一些说明-表格,子图与引用

 

将 subfloat 中的 caption 居中

如果我们想要使得 subfloat 中的 caption 居中,只需要加上\captionsetup[subfloat]{justification=centering} 即可,下面是完整的一个例子:

  1. \begin{figure}[H]
  2.     \centering
  3.     \captionsetup[subfloat]{justification=centering} % 这个是重点
  4.     \subfloat[A]{
  5.         \includegraphics[width=0.47\textwidth]{Snipaste_2021-11-29_21-34-03.png}
  6.         \label{fig:1}
  7.     }
  8.     \subfloat[B]{
  9.         \includegraphics[width=0.47\textwidth]{Snipaste_2021-11-29_21-39-30.png}
  10.         \label{fig:2}
  11.     }
  12.     \caption{测试 captionsetup}
  13. \end{figure}

 

 

使用 subfigure 绘制子图

接下来看一下如何使用 subfigure 来进行子图的创建。但是我们还是推荐使用上面的方式,也就是 subfigsubfloat 的方式来进行绘制。

  1. \documentclass{article}
  2. \usepackage{subfigure}
  3. \usepackage{graphicx}
  4. \usepackage{caption,setspace}
  5. \begin{document}
  6. \begin{figure*}[htbp!]
  7.     \centering
  8.     \subfigure[Explanation for DoS]{
  9.         \includegraphics[width=4.16in]{DoSAttack.png} % 二分类模型的解释, DoS攻击的数据
  10.         \label{fig5-Binary-1:1}
  11.     }
  12.     \quad    %用 \quad 来换行
  13.     \subfigure[Explanation for Normal]{
  14.         \includegraphics[width=4.16in]{Normal.png} % 二分类模型的解释, Normal数据
  15.         \label{fig5-Binary-1:2}
  16.     }
  17.     \caption{Specific Data Explanation}
  18.     \label{fig5-Binary-1}
  19. \end{figure*}
  20. Fig.~\ref{fig5-Binary-1}
  21. Fig.~\ref{fig5-Binary-1:1}
  22. Fig.~\ref{fig5-Binary-1:2}
  23. \end{document}

最终的效果如下图所示, 我们可以对子图进行引用.

LaTeX 完成 Scientific Papers 的一些说明-表格,子图与引用

在这里需要注意一个问题, 我们一定要在label前面使用caption, 否则label是无法引用的. Always place the \label after (or within) the caption.

 

公式的书写

关于公式的书写,首先建议使用工具mathpix完成latex代码生成,工具链接将图像(数学公式)转换为LaTeX–Mathpix,进行粘贴即可。

注意公式书写需要package,amsmath. 下面看一个例子. 使用latex生成公式的时候是自动带上标号的,这个很是方便。

  1. \documentclass{article}
  2. \usepackage{amsmath}
  3. \begin{equation}
  4.     F \text { -Score }=\frac{2 * \text { Recall } * \text { Precision }}{\text { Recall }+\text { Precision }}
  5. \end{equation}

最终效果如下所示:

LaTeX 完成 Scientific Papers 的一些说明-表格,子图与引用

一些常用的数学公式

这里介绍一些常用的latex的数学公式, 可以方便查找和进行使用. 可以参考链接: 常用数学符号的 LaTeX 表示方法

分式

  1. \frac{N}{M}
LaTeX 完成 Scientific Papers 的一些说明-表格,子图与引用

连加

  1. \sum_{i \in (1,100)}^{100}
LaTeX 完成 Scientific Papers 的一些说明-表格,子图与引用

上划线与下划线

其中\qquad表示空格

  1. \overline{\phi_{i}(f, x)} \qquad \underline{\phi_{i}(f, x)}
LaTeX 完成 Scientific Papers 的一些说明-表格,子图与引用

 

m行n列图片插入(子图插入)-子图

这一篇介绍一下关于LaTeX中子图的插入, 即我们希望插入n行m列的图片。主要参考链接如下: LaTeX中m行n列图片排版方法

我们使用subfigure包来完成排版。下面看一个简单的例子。下面会产生一个2*2的图片。

  1. \usepackage{subfigure}
  2. \begin{figure}[htbp!]
  3.     \centering
  4.     \subfigure[dst\_host\_serror\_rate Distribution]{
  5.         \includegraphics[width=2in]{dataDistribution1.png}
  6.     }
  7.     \subfigure[srv\_serror\_rate Distribution]{
  8.     \includegraphics[width=2in]{dataDistribution2.png}
  9.     }
  10.     \quad    %用 \quad 来换行
  11.     \subfigure[wrong\_fragment Distribution]{
  12.         \includegraphics[width=2in]{dataDistribution3.png}
  13.     }
  14.     \subfigure[wrong\_fragment Distribution]{
  15.         \includegraphics[width=2in]{dataDistribution3.png}
  16.     }
  17.     \caption{The disturbition of Data}
  18.     \label{fig5-Distribution-1}
  19. \end{figure}

最终的效果如下所示:

LaTeX 完成 Scientific Papers 的一些说明-表格,子图与引用

在这里需要注意一个问题, 我们一定要在label前面使用caption, 否则label是无法引用的. Always place the \label after (or within) the caption.

 

交叉引用

这里介绍关于LaTeX中交叉引用的实现. 主要参考链接(这一份参考资料很不错): 在 LaTeX 中使用交叉引用.

这里会包含引用章节, 引用图标, 引用数学公式等.

引用章节

下面简单说明一下引用章节的内容, 我们需要在section后面加上label, 来使得可以被引用.

  1. \documentclass{article}
  2. \usepackage[utf8]{inputenc}
  3. \usepackage{ctex} % 对于中文的显示
  4. \usepackage{booktabs}
  5. \begin{document}
  6. % 引用章节
  7. \section{123}
  8. \subsection{abc} \label{abc}
  9. \subsection{def}
  10. 这里引用subsection\{abc\}的内容, \ref{abc}.
  11. \end{document}

我们看一下最终的效果.

LaTeX 完成 Scientific Papers 的一些说明-表格,子图与引用

 

论文的引用

关于论文的引用, 在LaTeX指南信息中也做了简单的介绍, 在这里再做以下详细的说明.

我们需要将参考文献写在ref.bib文件中, 同时上面的bibliographystyle是可以有不同的选项的.

  1. % 参考文献
  2. \bibliographystyle{unsrt}
  3. \bibliography{ref} % 存文字的名字

下面简单介绍一下bibliographystyle的一些选项和不同的作用.

  • plain,按字母的顺序排列,比较次序为作者、年度和标题
  • unsrt,样式同plain,只是按照引用的先后排序
  • alpha,用作者名首字母+年份后两位作标号,以字母顺序排序
  • abbrv,类似plain,将月份全拼改为缩写,更显紧凑:
  • ieeetr,国际电气电子工程师协会期刊样式:
  • acm,美国计算机学会期刊样式:
  • siam,美国工业和应用数学学会期刊样式:
  • apalike,美国心理学学会期刊样式:

也就是我们要想使用按照引用的出现顺序进行标号, 我们就要使用unsrt的格式.

 

文献 cite, citet,citep 的区别

引用的时候有三种写法,分别是 citecitetcitep

  1. \begin{itemize}
  2.     \item cite, \cite{liang2019deep}
  3.     \item citet, \citet{liang2019deep}
  4.     \item citep, \citep{liang2019deep}
  5. \end{itemize}

他们的效果分别如下所示:

LaTeX 完成 Scientific Papers 的一些说明-表格,子图与引用

 

引用多处文献

参考资料: latex中同一处引用多篇文献

正常情况我们编译以后的正文引用处显示的是[1][2][3], 但是我们希望文献显示为[1,2,3], 可以使用下面的方法进行实现.

  1. \usepackage{cite}
  2. \cite{bibtex1,bibtex2,bibtex3}

 

引用链接

有的时候, 我们引用的内容不是论文, 而是一些在线的内容, 这个时候我们可以使用下面的格式进行引用. 只需要在bib文件中按下面格式进行书写即可.

  1. @misc{workprocessNatter,
  2.   author = {Elisabeth Natter},
  3.   title = {{Effects of Globalization on Human Resources Management}},
  4.   howpublished = "\url{https://smallbusiness.chron.com/effects-globalization-human-resources-management-61611.html}",
  5.   year = {2018},
  6.   note = "[Online; accessed 14-November-2018]"
  7. }

参考文献How to add a URL to a LaTeX bibtex file?

 

参考文献加上页码

这里的内容我们在LaTeX的一些小技巧中首先进行了说明, 但是我感觉这个和引用有关系, 所以在这里也加上相同的内容.

有的时候, 我们在引用参考文献的时候, 需要加上页码. 我们可以使用\citep[p.~66]{参考文献}来进行引用.

  1. Project managers must allow time for the team to develop the common work practices using special tools that can facilitate this process \citep[p.~66]{schwalbe2008information}

最后的效果如下图所示.

LaTeX 完成 Scientific Papers 的一些说明-表格,子图与引用

我们也可以引用一段范围内的页码, 如下所示:

  1. Project managers must allow time for the team to develop the common work practices using special tools that can facilitate this process \citep[p.~66--80]{schwalbe2008information}.

最终的效果如下图所示:

LaTeX 完成 Scientific Papers 的一些说明-表格,子图与引用

参考文献: Referencing page number with only one reference

 

脚注及相关操作

这里的内容我们在LaTeX的一些小技巧中首先进行了说明, 但是我感觉这个和引用有关系, 所以在这里也加上相同的内容.

我们在这里对latex添加脚注进行相应的说明. 会分为三个部分:

  • 最基础的脚注添加
  • 脚注添加url
  • 引用相同的内容

下面我们就从第一个开始说起. 对于最基础的脚注的添加. 这里加了label是为了后面引用的时候可以进行使用.

  1. This is a test of footnote\footnote{\label{note1}basic footnote test}.

最终的效果如下图所示:

LaTeX 完成 Scientific Papers 的一些说明-表格,子图与引用

 

接下来, 我们来看一下我们希望引用链接时候的情况.

  1. \usepackage{url}
  2. This is a test of footnote\footnote{\label{note1}\url{https://en.wikipedia.org/wiki/Uncertainty_avoidance}}.

最终的结果如下所示:

LaTeX 完成 Scientific Papers 的一些说明-表格,子图与引用

参考文献: latex, how to put superscript and link to URL downpage

 

我们再看最后的一种情况, 我们有一个相同的内容(例如链接), 要在文章的不同位置进行脚注. 如果直接按照上面的方式进行书写, 会出现两个相同的脚注. 所以我们需要使用下面的方式.

  1. \usepackage{url}
  2. % 引用脚注使用(在usepackage处进行使用)
  3. \makeatletter
  4. \newcommand\footnoteref[1]{\protected@xdef\@thefnmark{\ref{#1}}\@footnotemark}
  5. \makeatother
  6. This is a test of footnote\footnote{\label{note11}\url{https://en.wikipedia.org/wiki/Uncertainty_avoidance}}.
  7. This is another footnote\footnote{\label{note22}another one}.
  8. We have areference to first footnote\footnoteref{note11}.
  9. We have areference to second footnote\footnoteref{note22}.

最终的结果显示如下所示:

LaTeX 完成 Scientific Papers 的一些说明-表格,子图与引用

参考文献: Reference different places to the same footnote

 

引用公式

这里我们来说一下公式的引用, 其实原理都是差不多的, 只需要定义一下label即可. 我们可以简单来看一下例子. 注意, 引用公式使用\eqref{eq}, 使用eqref会自动在数字外面加上括号, 下面就是没有括号的情况.

  1. \begin{equation} \label{part3_eq2}
  2.     x^{\prime}
  3. \end{equation}
  4. % 上面定义了Label, 下面就可以引用
  5. This is \ref{part3_eq2}.

最终的结果如下图所示:

LaTeX 完成 Scientific Papers 的一些说明-表格,子图与引用

LaTeX手动换行

参考资料1: Allow line break, but without inserting a dash

参考资料2: Underscore makes text go past end of line into margins

我们使用\allowbreak或是\linebreak来进行分行, 同时使用这个时不会有连字符. 下面简单看两个例子.

  1. long\allowbreak word
  2. long\linebreak word

同时, 在latex中, 若出现了_的时候, 就不能自动换行. 我们可以使用下面的方式进行换行.

  1. \renewcommand\_{\textunderscore\allowbreak} % 使得_可以换行

 

  • 微信公众号
  • 关注微信公众号
  • weinxin
  • QQ群
  • 我们的QQ群号
  • weinxin
王 茂南
  • 本文由 发表于 2019年7月8日07:23:02
  • 转载请务必保留本文链接:https://mathpretty.com/10747.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: