文档类与宏包:article、report 与 book
每个 LaTeX 文档的第一行都是文档类声明,它决定了整篇文档的骨架。「文档类 → 宏包 → 自定义命令」的三层结构贯穿所有后续学习:文档类定版式层级,宏包加功能,自定义命令统一风格。本文把三者的分工、常用选项与实战选择讲清楚,帮你避免「用书籍类写两页作业」这类方向性错误,也为后面所有章节的宏包用法打地基。
一、三大基础文档类
LaTeX 自带三个最常用的文档类,它们预设了不同的章节层级与页面布局。选择哪个取决于文档的篇幅与正式程度,而不是「看起来更高级」——用最重的类排最轻的文档,是新手最常做的无用功。选错文档类的代价是后面所有版式调整都在与默认值对抗——你每修一处,默认行为就在别处还回来一笔。
| 文档类 | 典型用途 | 章节层级 | 页面布局 |
|---|---|---|---|
| article | 课程论文、短报告、讲义 | 无章,从节开始 | 单面为主 |
| report | 实验报告、较厚的学位论文 | 含章 | 双面为主 |
| book | 书籍、厚学位论文 | 含部分与章 | 双面,章独立起页 |
最直观的差别是:最轻的那个文档类没有「章」的层级,页眉页脚也最简单;支持「章」的两个文档类中,书籍类还自动生成每章独立起页与前言、后记结构。普通课程论文用轻量类即可,硬要上书籍类会导致每节都另起一页,纸张浪费且阅读感断裂。中文用户通常直接用对应的中文版本,章节自动本地化为「第一章」。
三类文档类的选择有一条隐藏准则:看你最终的交付物。打印装订的正式文件倾向书籍类,屏幕阅读与轻量提交倾向文章类,实验记录与中期报告夹在中间用报告类。交付场景决定了版式诉求,版式诉求决定文档类,而不是反过来。
\documentclass[12pt, a4paper, twoside]{ctexbook}
\begin{document}
\chapter{绪论}
本章介绍研究背景。
\end{document}
二、文档类常用选项
选项写在文档类后的方括号里,多个选项逗号分隔。下面这组覆盖九成场景,记住它们就能应对大多数格式要求。需要多个选项时不要分行写——LaTeX 的方括号只认同一行内的内容,换行会导致选项解析错误。
| 选项 | 作用 | 常用值 |
|---|---|---|
| 字号基准 | 正文基础字号 | 三档可选,中文常用最大档 |
| 纸张尺寸 | 页面大小 | A4 |
| 单双面 | 是否双面排版 | 论文常用双面 |
| 草稿模式 | 显示断行问题与缺图占位 | 调试断行时开启 |
| 横向排版 | 页面旋转 | 海报、宽表时用 |
一个实用提醒:草稿模式会显示溢出框与缺图占位,是检查断行问题的好工具;正式提交前记得改回正常模式,否则 PDF 里会留着调试框。另外,选项只对「这一处声明」生效,宏包若需要同样的选项要单独再写一遍——初学者常误以为文档类选项会自动传给所有宏包。
补充一个细节:字号基准有三档,中文文档常用最大档。多数学位论文格式要求恰好与最大档默认值接近,从这一档出发微调行距最省事。
三、宏包的加载与冲突排查
宏包在导言区加载。宏包名、选项、加载顺序都可能引发问题,三条原则请记牢:先加载核心宏包再加载扩展;同一宏包只加载一次且选项统一;可选参数放在方括号里而不是花括号里。第三条尤其常见:把选项写进花括号时,宏包收不到选项而按默认值工作,行为与预期不符却不报错,排查起来最折磨人。
常见冲突类型有两类。第一类是功能重叠:某个新宏包完全覆盖旧宏包的能力,旧的就没必要再加载。第二类是真正的选项冲突,日志报「宏包选项冲突」错误,典型起因是某模板内部已用一组选项加载过某宏包,你又写了另一组选项。修法是合并为一次加载、统一参数。更多报错链条见「编译排错」一章。判断冲突前先通读模板自带的导言区,弄清它已经加载了什么,再决定自己还要加什么。
\usepackage{amsmath} % 数学排版基础,先加载
\usepackage{graphicx} % 插图
\usepackage[hidelinks]{hyperref} % 超链接,通常最后加载
加载顺序有一条经验法则:与页面输出相关的超链接宏包通常放最后,因为它要 hook 所有交叉引用;数学与图形宏包靠前。顺序不是玄学,多数冲突日志会直接写明哪两个宏包打架。
一个高效的自查方法:导言区按「基础设施—内容工具—输出增强」三段式排列。基础设施是字体与版式,内容工具是数学、图表与代码,输出增强是超链接与书签。段落之间用注释行隔开,加载冲突时一眼就能看出哪个段落的顺序有问题。这份有序导言区本身也值得存成模板复用——下一章讲自定义文件时会把这一步制度化。
四、自定义命令与环境
当同一段结构反复出现,就该抽象成命令了。自定义命令让文档风格统一,也把修改成本从「全局替换一百处」降为「改一处定义」。它还有一种隐性收益:命令名本身就是语义标注——用 \eg 比每次手写「例如」更能提醒你这里在举例,写作时思维也更清晰。命令化的内容还便于团队协作:统一命令意味着统一术语,审稿人改一个定义,全文同步更新。
\documentclass{ctexart}
\newcommand{\eg}{例如} % 简写命令
\newcommand{\usecase}[1]{\textbf{用例:#1}} % 带一个参数
\newenvironment{note}{\begin{quote}\small}{\end{quote}}
\begin{document}
\eg,这是一个自定义命令:\usecase{自动高亮}。
\end{document}
注意:所有自定义命令与环境都必须写在导言区(正文起点之前),放在正文结束命令之后会被完全忽略。此外,定义新命令不能与已有命令同名,否则报「命令已定义」错误;想覆盖旧命令有专门的重定义命令。判断抽象时机的经验:某段结构出现第三次就做成命令,出现在五篇以上文档里就做成自己的样式文件。把宏包与自定义命令沉淀为个人样式文件的做法,配合本站Obsidian 指南的资料库结构,能形成随时间增值的写作资产。命令命名建议用短而可读的名字,太长敲起来累,太短容易与宏包命令撞车。养成「前缀化」的命名习惯(如个人命令统一以某字母开头),能从根上避免重定义错误。
五、扩展文档类与选型建议
除三大基础类外,还有几类常见选择,列出来供你按需取用。它们要么针对特定语言生态,要么针对特定交付场景,选型逻辑与三大类相同:先看交付要求,再看功能匹配。
| 文档类或套件 | 用途 |
|---|---|
| 三大类的中文版 | 中文本地化 |
| 演示文稿类 | 幻灯片 |
| 进阶书籍类 | 高度可定制的书籍 |
| 院校学位论文模板 | 各校自建,优先使用 |
| 期刊类 | 投稿专用,勿改版式 |
两条建议:其一,写学位论文优先用学校官方模板,哪怕它某些地方不合理,返修成本也远低于自造模板;其二,投稿期刊类模板时遵守「不改版式」的学术惯例——期刊要的是内容,版式由它的生产流程接管。选定文档类后,字体与行距是版式调优的第一个抓手,见本站字体字号一章。写作层面的结构组织方法,可参阅本站论文写作指南。
文档类的选择看起来是技术决策,实则是项目管理决策:它决定了后续所有版式工作的坐标系。第一次选对,后面省下的调整时间足够再写一章;选错则每改一处都像在泥地上盖楼。
六、同一份内容在不同文档类之间的迁移
写作中途想换文档类(比如课程论文扩展成学位论文)是常见诉求。好消息是正文几乎不用改:章节命令、列表、公式、图片在三大类之间通用。真正需要调整的是三类东西:
| 需要调整 | 原因 | 动作 |
|---|---|---|
| 章节起点 | 轻量类没有章命令 | 节标题升级为章 |
| 前言后记结构 | 书籍类才有专门环境 | 补摘要、致谢的结构命令 |
| 页眉页脚 | 各类默认样式不同 | 按新类重新设置或交给模板 |
迁移的推荐顺序:先新建目标文档类的空壳编译通过,再逐章复制正文,每复制一章编译一次。这样做能把「不兼容」限定在单章范围内,而不是面对一份全篇报错的文档。中文文档注意同时检查章节标题的本地化是否生效——切换文档类后个别本地化开关需要重新打开。迁移完成后,旧文档类若有特殊设置(如自定义页眉),需要在新类里重新实现一遍。
