光阴冢 赛博空间的自留地

LaTeX 论文排版笔记

文件组织

这次我用了单个的 Tex 文件进行编译,因此不算是结构化的写作。但是目录下面分了两个文件夹figurescodes 两个文件夹作为放置图片和代码文件用的。这样也避免了大段的代码插进文档里导致的不清晰以及不同步。cumcmthesis.cls 就是这次用的模板。实际上是根据 Github 上的开源模板 CUMCMThesis 做了微调改的。

Tips

enumerateitemize 环境

直接编译出来的列表并不对齐,总是顶格开始陈列。所以使用一个宏包:enumitem。

在模板中加入:

1
2
3
4
\RequirePackage{enumitem}
% 设置列表环境
\setlist[itemize]{fullwidth,itemindent=2em}
\setlist[enumerate]{fullwidth,itemindent=2em,label=(\arabic*)}

(~~啊居然没有 LaTeX 的高亮 (-̇᷇̂ᴥ ̇᷇̂-)~~支持的,我太傻了)好像 highlight.js 真的没有。。。

这里也可以顺便定义一下有序列表的样式,是希腊字母还是数字之类的。

Table 环境

  • 普通 Table 使用 \hline 可以画横线,在 {cc} 区域,c 代表居中,可以用 | 来画竖线。 另外 [!htbp] 部分可以设置浮动对象的放置优先规则。\\ 来换行。& 来对齐。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    \begin{table}[!htbp]
      \begin{tabular}{cc}
        \hline
        $a_{ij}$                         & 第i个节点到第j个巡警平台的最短距离        \\
        $x_{ij}$                         & 第i个节点是否由第j个巡警平台管辖          \\
        $P$                              & 巡警平台所构成的集合                      \\
        $V$                              & A区所有节点所构成的集合                   \\
      \end{tabular}
    \end{table}
    
  • 长表格 如果表格很长,需要跨页,则先使用宏包 longtable, 并将 tabular 换为 longtable 即可。

  • 三线表 使用 booktabs 宏包,可以有 \toprule 等命令,方便地做出三线表。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    
    \begin{table}[!htbp]
      \centering
      \begin{tabular}{cc}
        \toprule[1pt]
        \makebox[0.3\textwidth][c]{符号} &
        \makebox[0.4\textwidth][c]{意义} \\
        \midrule[0.5pt]
        $a_{ij}$                         & 第i个节点到第j个巡警平台的最短距离        \\
        $x_{ij}$                         & 第i个节点是否由第j个巡警平台管辖          \\
        $P$                              & 巡警平台所构成的集合                      \\
        $V$                              & A区所有节点所构成的集合                   \\
        \bottomrule[1pt]
      \end{tabular}
    \end{table}
    

插入图表

使用 graphicx 宏包。

可以像下面一样设置图片后缀名优先级。

1
\DeclareGraphicsExtensions{.pdf,.eps,.jpg,.png}

可以像下面一样设置图片搜索路径。

1
2
\graphicspath{{figures/}{figure/}{pictures/}%
  {picture/}{pic/}{pics/}{image/}{images/}}

浮动对象的 ref 和 label

对于浮动对象,比如表格和图片,由于可能并不紧挨着上下文的,因此有必要在上下文中设置链接链接到对应的图标。这个时候 \ref\label 就很有用。 一般像这样定义一个浮动对象的名字:(例如这里设置 label 为 fig1)

1
2
3
4
5
\begin{figure}[!htbp]
  \centering
  \includegraphics[width=1\textwidth]{m}
  \caption{$m$ 关于时间的变化曲线}\label{fig1}
\end{figure}

之后就可以在正文中使用 \ref{fig1} 来获取这个图片的编号。如 Figure \ref{fig1}

简单的参考文献

如果针对比较简单的参考文献,那么使用非常复杂的配置也没有什么必要(其实是我还没学)。

所以可以使用比较简单的 \cite\bibitem

使用以下语句定义:

1
2
3
4
5
\begin{thebibliography}{9}
  \bibitem{gvdc}张建辉与张峰, 月球软着陆轨道优化方法比较研究. 工程数学学报, 2012(03): 第355-­365页.
  \bibitem{lixt}赵钧, 航天器轨道动力学. 2011, 哈尔滨工业大学出版社:哈尔滨. 第148-­152页.
  \bibitem{jiuu}孙泽洲等, 嫦娥三号探测器的技术设计与成就. 中国科学:技术科学, 2014(04): 第331-­343页.
\end{thebibliography}

之后就可以在正文中引用:

1
………类似这样的。\cite{gvdc}

插入代码

使用 listings 宏包。 插入代码文件。这样就可以分别修改,并只需重新编译就可以了。

下面的表示插入当前目录下 code 文件夹里面的 chasing_method.m 文件,语法高亮遵循 Matlab 的语法。

1
\lstinputlisting[language=Matlab]{code/chasing_method.m}

设置目录深度

1
\setcounter{secnumdepth}{3}