使用 LaTeX 编写论文

前言

临近毕设,学院里提供了毕业设计报告的 LaTeX 模板,于是决定离开简单的 Markdown ,开始使用 LaTeX 进行写作。以下就是我使用过程中的一些记录。

样例项目

我对学院提供的旧 LaTeX 模板进行了较多的修改,使其符合了学院方面的最新格式要求,并且修复了设置字号时行间距不正确等等错误,可以直接使用或者用于参考学习:

浙江大学计算机科学与技术、软件工程专业本科毕业设计开题报告 LaTeX 模板

其中的 install-fonts.sh 可以用于从 Windows 分区获取需要的字体并进行安装。

安装 LaTeX

在 Arch Linux 上安装 LaTeX(TeXLive)较为简单,可以参考 Arch Wiki 安装对应的软件包。

也可以直接执行以下命令进行安装,这样基本不会在使用时遇到无法找到常用宏包的情况。

1
sudo pacman -S texlive-most texlive-langchinese

构建文档

xeCJK 是提供 LaTeX 中文支持的宏包,并且依赖于 XeLaTeX,因此,我们需要使用 xelatex 命令进行构建。

LaTeX 在构建交叉索引时需要多次运行,才能最终解析所有的引用,并且期间需要 BibTeX 对参考文献数据库进行处理。因此,一般的手动构建命令是:

1
2
3
4
xelatex main
bibtex main
xelatex main
xelatex main

不同于部分网页上给出的示例,这些命令都可以接受不带后缀名的参数,并且有时写出后缀名可能会阻碍多文件等情况下的正确构建。

对于子目录和多文件使用引用的情况,在主文件中应该使用 \include 而非 \input,否则会需要其他处理。

为了简化构建步骤,实际上应当使用 latexmk,它会根据需要自动调用各种命令。因此之前的手动构建步骤可以被以下命令替代:

1
latexmk -xelatex main

了解 LaTeX 和解决问题

LaTeX 有很多历史问题带来的不同,也有多重相似但不同的工具选择,因此网上提供的解决方案不一定可以工作,需要自己试验。

可以通过 ShareLaTeX 提供的文档 获得对 LaTeX 的初步了解。但是,这份文档中提到的引用等高级特性的使用可能与我们的方式不同。

推荐使用 TeX - LaTeX Stack Exchange 作为解决问题时的主要信息来源。

可以通过 texdef 命令查看 LaTeX 中命令的定义。例如:

1
texdef -t xelatex -s -c csbachelor \thebibliography

零碎知识

  • \\:换行,不新建段落。可选参数可以控制空白长度。
  • \par:创建段落。\parskip\parindent 将生效。部分命令需要对段落才能生效,因此可能需要在最后一段文字最后加上 \par
  • \:一个空格。
  • ~:一个 NBSP,不会被分行打断,常用于类似 图~1 这样的场景。
  • \hspace{1em}:一个 1 em 长度的空格。
  • \renewcommand:修改命令定义。
  • \setlength:修改长度变量。
  • \setcounter:修改计数器。

结语

LaTeX 十分强大,并且作为纯文本格式依然比 Word 文档等更加清晰、明确、可靠。但是,整个 LaTeX 环境也正因为它的高自由度和复杂,在许多方面缺乏一致性,这给使用者带来了不少困难。

总体来说,在经过大量的学习和尝试之后,我依然认为 LaTeX 是一个优秀的排版工具。它可以让使用者在一次配置之后获得强大的功能,并且在写作过程中始终保持工作在纯文本层面上。

关于各种命令和功能的常见用法,读者可以继续参考我在文章开头提到过的 报告模板,我也会在写作毕业设计论文时继续更新。