前言
临近毕设,学院里提供了毕业设计报告的 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 | 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 是一个优秀的排版工具。它可以让使用者在一次配置之后获得强大的功能,并且在写作过程中始终保持工作在纯文本层面上。
关于各种命令和功能的常见用法,读者可以继续参考我在文章开头提到过的 报告模板,我也会在写作毕业设计论文时继续更新。