LaTeX 教程
LaTeX 简介
LaTeX 是基于 TeX 引擎的专业排版系统,由 Leslie Lamport 开发。它采用纯文本编写文档,编译输出 PDF,让作者专注内容而不用关注排版细节,擅长数学公式、参考文献处理,是理工科学术论文、技术文档的主流排版工具。
宏包: LaTeX 的扩展能力库,使用 \usepackage{宏包名} 在导言区加载,用来补充原生不具备的功能,如中文渲染、公式、插图等。
LaTeX 特点
- 高质量排版:LaTeX 以其专业的排版质量而闻名,尤其擅长处理复杂的数学公式和参考文献。能自动调整文档格式,生成符合出版标准的高质量排版效果。
- 基于标记语言:LaTeX 采用纯文本的标记语言格式,用户通过输入特定的命令和标签来定义文档的结构和格式。例如,通过
\section{}定义章节,通过\textbf{}定义粗体。 - 跨平台支持:LaTeX 是跨平台的,支持 Windows、macOS 和 Linux 等操作系统。生成的文档通常为 PDF 格式,且在不同平台上具有一致的展示效果。
- 适合学术写作:LaTeX 非常适合用于撰写学术论文、书籍、技术文档、报告等,尤其是包含大量数学公式、参考文献和复杂排版需求的文档。它对文献管理、公式输入和排版效果有极好的支持。
- 自动化文档管理:LaTeX 在长文档、书籍或论文中提供了强大的自动化功能,例如自动编号、自动生成目录、交叉引用、自动排版公式等。它能够自动处理文献引用、参考文献列表等,非常适合需要精准格式的文档。
LaTeX 与 Word 的区别
| 特性 | LaTeX | Microsoft Word |
|---|---|---|
| 排版质量 | 专业级排版,尤其擅长处理复杂公式和长文档。 | 适合简单文档,复杂排版需要手动调整。 |
| 学习曲线 | 需要学习基本语法,初期上手较难。 | 所见即所得,易于上手。 |
| 自动化程度 | 自动处理编号、交叉引用、目录生成等。 | 需要手动调整编号和格式。 |
| 数学公式支持 | 强大的数学公式排版能力,支持复杂符号和结构。 | 公式编辑功能有限,复杂公式难以处理。 |
| 跨平台支持 | 完全跨平台,文档在不同系统上表现一致。 | 跨平台支持较好,但格式可能因版本不同而有所变化。 |
| 文档结构 | 内容与格式分离,便于维护和协作。 | 内容与格式混合,长文档维护较困难。 |
| 扩展性 | 通过宏包扩展功能,支持自定义命令和环境。 | 功能扩展依赖于插件,灵活性较低。 |
LaTeX 工作流程
- 编写 LaTeX 源代码:使用纯文本编辑器编写
.tex文件,内容包含文档结构、文本和命令。 - 编译 LaTeX 源代码:使用 LaTeX 编译器(如 pdflatex、xelatex、lualatex 等)编译源代码,生成 PDF 文件。
- 预览 PDF 文件:使用 PDF 阅读器预览编译后的 PDF 文件,内容会根据源代码自动排版。
- 修改源代码:根据需要修改 LaTeX 源代码,重复编译和预览步骤,直到满意为止。

基础语法
LaTeX文档基础结构
一份完整LaTeX文档分为三部分:文档类声明、导言区、正文区。
- 文档类:定义整篇文档类型(文章、报告、书籍)
- 导言区:放在
\begin{document}之前,加载宏包、全局配置 - 正文区:
\begin{document}与\end{document}之间,所有正文内容 %为注释符号,该行后续内容不会参与编译
\documentclass{article}
% 导言区:加载宏包
\usepackage{ctex} % 中文支持宏包
\usepackage{amsmath} % 数学公式宏包
\begin{document}
你好,LaTeX!
这是一份最小示例文档。
\end{document}
你好,LaTeX!
这是一份最小示例文档。
常用文档类:
article:短篇文章、会议论文report:课程报告、学位报告,支持分章节book:书籍排版
文档结构与排版
文档结构与排版主要解决文档的「骨架」问题:标题怎么排、章节怎么分、目录怎么生成、页面编辑和页眉页脚怎么设置。这些内容只需设置一次,全文自动生效,这正是 LaTeX 处理长文档的核心优势。
标题作者与日期
三步走:在导言区声明信息,在正文区调用 \maketitle 渲染。
\documentclass{ctexart}
\title{论文标题} % 标题(必填,想渲染标题区就必须定义)
\author{张三 \and 李四} % 作者,\and 分隔多位作者
\date{\today} % 日期:\today 自动当天;{} 空参数表示不显示
\begin{document}
\maketitle % 在这里渲染标题区(居中的标题、作者、日期)
\end{document}

| 命令 | 作用 | 常用写法 |
|---|---|---|
\title{...} | 声明标题 | 标题中可用 \\ 手动换行 |
\author{...} | 声明作者 | 张三 \and 李四;\thanks 可加脚注注明单位 |
\date{...} | 声明日期 | \today 当天;固定日期手写;{} 隐藏 |
\maketitle | 渲染标题区 | 放在正文区开头 |
章节命令与自动编号
章节是结构化文档的基本单位,LaTeX 用一组命令表达层级,编号全部自动。
| 命令 | 层级 | 适用文档类 |
|---|---|---|
\part{...} | 部分(0 级,编号独立) | article / report / book |
\chapter{...} | 章(1 级,独立起页) | 仅 report / book |
\section{...} | 节(article 中的1级) | 全部 |
\subsection{...} | 小节(2级) | 全部 |
\subsubsection{...} | 小小节(3级) | 全部 |
\paragraph{...} | 带标题的段落(不编号) | 全部 |
两件事最能体现「自动」的价值:一是中间插入新章节,后面编号自动顺延;二是命令加星号(如 \section*{...})表示不编号、不进目录。
实例:章节与脚注
\documentclass{ctexart}
\begin{document}
\section{引言} 这是引言的内容。所有章节的编号都由 LaTeX 自动生成。
\subsection{研究背景} 这里介绍研究背景\footnote{这是一条脚注,编号与排版都是自动的。}。
\subsection{研究意义} 这里说明研究意义。
\section{方法}
\subsection{数据采集}
\subsubsection{样本选择} 层级编号到 subsubsection 为第三层。
\subsection{模型设计}
\section{结论}
\end{document}
\footnote{脚注内容} 在所在位置打上编号,把内容排到本页底部,编号全文连续,因此脚注里不可以再嵌套 \footnote。
目录生成
目录只需要一个命令:\tableofcontents,它会扫描全文的章节命令,自动生成带页码的目录。
实例:生成目录
\documentclass{ctexart}
\begin{document}
\tableofcontents
% 目录单独成页,正文从下一页开始
\newpage
\section{引言}
引言内容。
\subsection{研究背景}
这里介绍研究背景。
\section{方法}
方法内容。
\section{结论}
结论内容。
\end{document}

目录页码靠
.aux文件传递,所以新增章节后目录不会立刻正确,再编译一遍就即可。
想控制目录深度,可在导言区设置:\setcounter{tocdepth}{2} 表示只收录到 subsection;配合 \setcounter{secnumdepth}{2} 可以同时控制正文里编号到第几层。
页面设置:geometry 宏包
页边距、纸张大小这些页面参数,统一交给 geometry 宏包管理。
实例:常用页面设置
% 写法一:选项直接跟在宏包名前的方括号里(选项少时最常用)
\usepackage[a4paper, margin=2.5cm]{geometry}
% 写法二:先加载,再用 \geometry 集中设置(选项多时更清晰)
\usepackage{geometry}
\geometry{
a4paper, % 纸张:A4
margin=2.5cm, % 四边页边距统一 2.5 厘米
includefoot % 页脚算进版心,避免页脚「悬」在页边距外
}
A4 页面,四边边距均为 2.5 cm。
版心区域(由 geometry 宏包控制,实际效果见编译后的 PDF)。
两种写法效果完全相同,任选其一。注意宏包选项永远写在方括号 [] 里——把选项写进花括号 {} 是新手高频错误。
| 选项 | 含义 | 示例 |
|---|---|---|
| margin | 四边统一边距 | margin=2.5cm |
| top / bottom / left / right | 单独控制某一边 | left=3cm,right=3cm |
| a4paper / a5paper / letterpaper | 纸张规格 | a4paper |
| landscape | 横向页面 | 横向幻灯片或宽表 |
| textwidth / textheight | 直接指定版心宽高 | textwidth=15cm |
国内论文常用「奇偶页对称装订」:加
bindingoffset=1cm可以给装订边额外留出1厘米。
页眉页脚:fancyhdr 宏包
fancyhdr 把页眉和页脚各分成左、中、右三个槽位,你想放什么就填什么。
| 命令 | 控制的槽位 |
|---|---|
\fancyhead[L]{...} | 页眉左侧 |
\fancyhead[C]{...} | 页眉中间 |
\fancyhead[R]{...} | 页眉右侧 |
\fancyfoot[L]{...} | 页脚左侧 |
\fancyfoot[C]{...} | 页脚中间 |
\fancyfoot[R]{...} | 页脚右侧 |
实例:经典学术页眉页脚
\documentclass{ctexart}
\usepackage[a4paper, margin=2.5cm]{geometry}
\usepackage{fancyhdr}
\pagestyle{fancy} % 启用 fancyhdr 页面风格
\fancyhf{} % 先清空全部槽位,避免残留默认页码
\fancyhead[L]{\nouppercase\leftmark} % 页眉左侧:当前一级章节名
\fancyhead[R]{第 \thepage 页} % 页眉右侧:页码
\fancyfoot[C]{ LaTeX 引导教程} % 页脚中间:自定义文字
\renewcommand{\headrulewidth}{0.4pt} % 页眉下方横线的粗细
\begin{document}
\section{页面布局}
正文与页面的距离由geometry宏包控制,包括页边距、纸张、页眉页脚区域。
合理的页面边距能让文档更易读,学术文档通常要求上下2.5厘米、左右2.5厘米左右。
页面布局参数一旦在导言区设置好,全文自动生效,不需要逐页调整
\section{页眉页脚}
faneyhdr把页眉和页脚各分成左、中、右三个槽位,可以自由组合内容。
页眉常放章节名与页码,页脚常放页码或文档名,学术期刊的模板都有严格规定。
页码1会随页面自动递增,交叉引用里的页码也由它提供。
\end{document}

\markright与\leftmark是两个「动态书签」,LaTeX 在排版每一页时会自动记录当前所在的章节,写入对应的书签;页码随之自动更新。
| 命令 | 作用 | 使用建议 |
|---|---|---|
\newpage | 结束当前页,从新页继续 | 日常最推荐这个 |
\clearpage | 换页并先输出所有未处理的浮动图表 | 章节收尾、文档末尾用它更保险 |
\linebreak | 在此处强制断行并两端对齐 | 少用,交给LaTeX自动断行 |
\pagebreak | 建议在此处换页(可与 \nopagebreak 对比体会) | 少用 |
不要频繁手动
\newpage去「对齐」页面——让 LaTeX 自动分页,文档改起来才不会全盘错位。手动换页只用于结构性断点,比如目录后、章节间。
小结
| 功能 | 命令 / 宏包 | 所属位置 |
|---|---|---|
| 标题区 | \title / \author / \maketitle | 导言区声明,正文渲染 |
| 章节 | \section / \subsection / \subsubsection | 正文区 |
| 脚注 | \footnote{...} | 正文区(通常紧跟文字) |
| 目录 | \tableofcontents | 导言之后,正文之前 |
| 页面边距 | geometry 宏包 | 导言区 |
| 页眉页脚 | fancyhdr 宏包 | 导言区 |
文字格式与列表
文字格式与列表可处理正文的「血肉」:字体样式怎么切换、字号怎么调、三种列表环境怎么用、对齐方式怎么控制。 原则依旧:这些是语义命令,你告诉 LaTeX「这是强调」,具体长什么样由文档类决定。
字体样式
常用样式一共五种,都是「命令 + 花括号」的形式,作用于括号内的文字。
| 效果 | 命令 | 说明 |
|---|---|---|
| 加粗 | \textbf{...} | bold face |
| 斜体 | \textit{...} | 中文会自动映射为楷体 |
| 下划线 | \underline{...} | 正式排版中慎用,欧美习惯用斜体代替 |
| 等宽 | \texttt{...} | typewriter,代码、命令、文件名专用 |
| 强调 | \emph{...} | 智能强调:正文里变斜体,斜体里变正体 |
实例:字体样式
\documentclass{ctexart}
\begin{document}
\textbf{加粗文字}、\textit{斜体文字}、\underline{下划线文字}、\texttt{等宽文字}。
中文强调用 \emph{重点},英文强调用 \emph{emphasis}。
组合使用:\textbf{加粗且\textit{斜体}},\texttt{代码里也可以\textbf{加粗}}。
\end{document}

注意输出里的一个细节:中文的「斜体」实际显示为楷体——汉字没有斜体传统,ctex自动用楷体承担「倾斜」的强调职能,这是正确的本地化处理。 \emph 与 \textit 的区别在于「智能」:在已经是斜体的文字里,\emph 会自动切换回正体,产生对比强调;写论文时优先用 \emph。
不要用下划线强调内容——那是打字机时代的遗产。学术排版中强调用斜体或加粗就够了。
字号调整
西文字号是一组「声明型」命令,从 \tiny 到 \Huge 共十级,以 \normalsize 为基准按比例缩放。
| 由小到大 | 命令 |
|---|---|
| 1–5级(小) | \tiny、\scriptsize、\footnotesize、\small、\normalsize |
| 6–10级(大) | \large、\Large、\LARGE、\huge、\Huge |
实例:字号与中文字号
\documentclass{ctexart}
\begin{document}
{\tiny tiny 脚注级}、{\scriptsize scriptsize}、{\footnotesize footnotesize}、{\small small}、正文默认 \normalsize。
{\large large}、{\Large Large}、{\LARGE LARGE}、{\huge huge}、{\Huge Huge}。
% 中文论文更常用「号数」直接指定:\zihao{号数}
中文字号:{\zihao{5}五号(正文常用)}、{\zihao{-4}小四(论文正文)}、{\zihao{4}四号(节标题)}。
\end{document}

字号命令是「开关」不是「范围」——写 \large 之后的所有文字都会变大,直到分组结束。所以务必用花括号包住:{\large 大字},后面的小字才不受影响。
中文文档建议直接用 \zihao{号数};数字前加减号表示「小几号」,\zihao{-4} 就是大名鼎鼎的「小四」——国内高校论文正文的标配字号。
三种列表环境
列表是 LaTeX 里最常用的「环境」(\begin 与 \end 成对出现),三种环境对应三种语义。
| 环境 | 用途 | 标签 |
|---|---|---|
| itemize | 并列要点,无顺序 | 圆点、短横线等符号 |
| enumerate | 有顺序的步骤 | 1. 2. 3. 编号 |
| description | 词条解释 | 自定义词条名 |
实例:三种列表与嵌套
\documentclass{ctexart}
\begin{document}
无序列表 itemize:
\begin{itemize}
\item 第一项
\item 第二项
\begin{itemize}
\item 嵌套的子项,符号自动变化
\item 又一个子项
\end{itemize}
\end{itemize}
有序列表 enumerate:
\begin{enumerate}
\item 安装发行版
\item 选择编辑器
\item 编译第一个文档
\end{enumerate}
描述列表 description:
\begin{description}
\item[LaTeX] 一套基于 TeX 的排版系统
\item[宏包] 即插即用的功能扩展包
\end{description}
\end{document}
无序列表 itemize:
- 第一项
- 第二项
- 嵌套的子项,符号自动变化
- 又一个子项
有序列表 enumerate:
- 安装发行版
- 选择编辑器
- 编译第一个文档
描述列表 description:
LaTeX 一套基于 TeX 的排版系统
宏包 即插即用的功能扩展包
默认列表表不需要任何额外设置;深层自动缩进,符号逐级变化(圆点、短横线、星号……),最多可嵌套四层。
默认列表的行间距宽松,论文里常需要紧凑版本,enumitem 宏包提供精细控制。
实例:enumitem 定制列表
\documentclass{ctexart}
\usepackage{enumitem} % 导入宏包
\begin{document}
\begin{itemize}[label=\textsquare, noitemsep] % 方块标签 + 去掉条目间额外间距
\item 紧凑的无序列表
\end{itemize}
\begin{enumerate}[label=(\alph*)] % 编号样式改为 (a) (b) (c)
\item 第一点
\item 第二点
\end{enumerate}
\end{document}
- □ 紧凑的无序列表
- (a) 第一点
- (b) 第二点
对齐方式
正文默认两端对齐(justified),这是排印长文档的标准做法,不需要任何设置。
需要局部改变对齐时,用三个环境:center、flushleft、flushright。
实例:居中与右对齐
\documentclass{ctexart}
\begin{document}
正文默认两端对齐,最后一行靠左,这是排版学的标准做法。
\begin{center}
居中的文字\\
第二行仍然居中
\end{center}
\begin{flushright}
右对齐的文字\\
署名常用右对齐
\end{flushright}
\end{document}

| 写法 | 特点 | 适用场合 |
|---|---|---|
\begin{center}...\end{center} | 环境形式,自带上下间距 | 正文中独立成段的居中 |
\centering | 声明命令,不额外加间距 | 图表浮动体内部,第8篇见 |
\begin{flushright}...\end{flushright} | 右对齐环境 | 署名、日期 |
小结
| 需求 | 命令 | 易错点 |
|---|---|---|
| 加粗/斜体/等宽 | \textbf / \textit / \texttt | 命令只作用于花括号内 |
| 强调 | \emph | 中文映射为楷体 |
| 改字号 | \large ... 或 \zihao{n} | 忘记花括号导致后面全变大 |
| 列表 | itemize / enumerate / description | 嵌套时 \begin \end 必须成对 |
| 居中 | center 环境或 \centering | 两者行间行为不同 |
数学公式与符号
数学排版是LaTeX皇冠上的明珠,也是大多数人选择它的第一理由。 本篇覆盖数学公式的地基:行内与行间公式、上下标、分数、根号、希腊字母与常用符号表。
文中每个「写法 效果」对照均为实时渲染,你在文档中看到的效果,就是 LaTeX 排出来的样子。
行内公式与行间公式
公式只有两种存在形态:嵌在句子里的行内公式,用一对 $ 包住;独立成行居中的行间公式,用 \[ 和 \] 包住。
\documentclass{ctexart}
\usepackage{amsmath}
\usepackage{amssymb}
\begin{document}
一元二次方程 $ax^2 + bx + c = 0$ 的求根公式为
\[
x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a},
\]
其中判别式 $\Delta = b^2 - 4ac$ 决定根的个数。
\end{document}

| 形态 | 写法 | 效果 | 什么时候用 |
|---|---|---|---|
| 行内公式 | $...$ | 与文字同高,嵌在句中 | 简单、被句子引用的公式 |
| 行间公式 | \[...\] | 独立成行、居中、字号更大 | 重要公式、复杂公式 |
两个习惯要避免:一是用旧式
$$...$$写行间公式,它对间距的控制有缺陷,统一用\[...\];二是一个句子被行间公式打断后,行间公式前不要有空行——公式还在句子里,没有分段。
上下标
^ 是上标,_ 是下标,都只作用于紧随其后的一个字符或一个花括号组。
| 写法 | 渲染结果 |
|---|---|
x^2 | |
a_{ij} | |
2^{n+1} | |
x_i^2 | |
x^{i^2} | |
e^{-t} |
对比第四、五行的写法:x_i^2 是「第 i 个 x 的平方」,x^{i^2} 是「x 的 次方」——花括号决定了作用的范围,差之毫厘谬以千里。
上下标多于一个字符就必须加花括号。
\hat{x}10会被排成 (x加帽子,后面直接跟数字10,不是上标),正确写法是\hat{x}^{10},最终排版为 。
分数与根号
\frac{分子}{分母} 生成分数,\sqrt{被开方数} 生成根号,n 次根写成 \sqrt[n]{...}。
| 写法 | 渲染结果 |
|---|---|
\frac{a+b}{c} | |
\frac{1}{1+\frac{1}{x}} | |
\sqrt{2} | |
\sqrt[3]{x^2+1} | |
(\frac{a}{b}) | |
\left(\frac{a}{b}\right) |
最后一对值得专门记:普通括号不会随着内容长高,\left( 与 \right) 让括号自动适配内容高度,包分数、包矩阵时必用。
行内公式里的分数会被自动压缩(分母下移、字号变小),如果嫌它太小,把 \frac 换成 \dfrac(display frac),分数就会保持行间的大小。
希腊字母
希腊字母的命令就是「反斜杠 + 英文名」,大小写靠命令首字母控制。
小写希腊字母
| 命令 | 效果 | 命令 | 效果 |
|---|---|---|---|
\alpha | \beta | ||
\gamma | \delta | ||
\epsilon | \varepsilon | ||
\theta | \lambda | ||
\mu | \pi | ||
\sigma | \omega | ||
\phi | \varphi |
大写希腊字母
| 命令 | 效果 | 命令 | 效果 |
|---|---|---|---|
\Gamma | \Delta | ||
\Sigma | \Omega |
注意两点:大写命令仅首字母大写(
\Sigma不是\SIGMA);\epsilon与\varepsilon、\phi与\varphi是同一字母的两种字形,数学惯例各有用途,论文里保持统一即可。
常用符号速查
高频符号按用途分三张表,效果列均为实时渲染。
| 命令 | 效果 | 命令 | 效果 |
|---|---|---|---|
\times | \div | ||
\pm | \mp | ||
\cdot | \leq | ||
\geq | \neq | ||
\approx | \equiv | ||
\ll | \gg |
| 命令 | 效果 | 命令 | 效果 |
|---|---|---|---|
\in | \notin | ||
\subset | \subseteq | ||
\cup | \cap | ||
\emptyset | \infty | ||
\forall | \exists | ||
\Rightarrow | \Leftrightarrow |
| 命令 | 效果 | 命令 | 效果 |
|---|---|---|---|
\partial | \nabla | ||
\to | \mapsto | ||
\mathrm{d}x | \hat{x} | ||
\bar{x} | \vec{x} |
大运算符:求和、积分、极限
\sum、\int、\lim 是三个最常用的大运算符,配合上下标使用。
\sum_{i=1}^n i = \frac{n(n+1)}{2} \\[1em]
\int_{0}^{\infty} e^{-x^2} \mathrm{d}x = \frac{\sqrt{\pi}}{2} \\[1em]
\lim_{n\to\infty} \left(1+\frac{1}{n}\right)^n = e
行间公式里,求和号的上下标位于符号正上/正下方;放进行内公式时会自动压缩到侧边。若在行内也想保持「上下」形态,外面套一层 \displaystyle 即可。
两个必备宏包:amsmath 与 amssymb
amsmath 和 amssymb 是数学排版的「官方扩展库」,写公式前建议加载。
| 宏包 | 提供什么 |
|---|---|
| amsmath | 更多公式环境(align 等,第7篇)、\dfrac / \tfrac、公式编号控制 |
| amssymb | 扩展数学符号,如 \mathbb 空心字体 |
数学里常用的字体效果命令也来自这两个宏包:
| 写法 | 效果 |
|---|---|
\mathbb{R} | |
\mathcal{F} | |
\vec{v} | |
\mathrm{e}^{\mathrm{i}\pi} |
最后一行是个排版细节:自然对数的底e、虚数单位i,如果直接写,会被当作变量排成斜体;用
\mathrm{}包住排成正体,才符合出版规范。 公式里不要出现中文和全角标点。$\(\alpha\)+\(\beta\)$这样用输入法打出来的全角加号、Unicode希腊字母,都是错误用法——公式内容必须用命令输入,中文说明放在$之外。
综合示例:真实文档编译
把本篇内容放进一份完整文档里编译:
\documentclass{ctexart}
\usepackage{amsmath} % 数学公式增强宏包,公式排版标配
\usepackage{amssymb}
\begin{document}
一元二次方程 $ax^2 + bx + c = 0$ 的求根公式为
\[
x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a},
\]
其中判别式 $\Delta = b^2 - 4ac$ 决定根的个数。
数学中最优美的公式当属欧拉公式
\[
\mathrm{e}^{\mathrm{i}\pi} + 1 = 0,
\]
它把五个最重要的常数联系在了一起。
\end{document}

小结
| 需求 | 写法 |
|---|---|
| 行内公式 | $...$ |
| 行间公式 | \[...\] |
| 上下标 | \(\hat{x}\){10}、a_{ij}(多字符必须花括号) |
| 分数/根号 | \frac{a}{b}、\sqrt[n]{x} |
| 自适应括号 | \left( \right) |
| 行内大分数 | \dfrac{a}{b} |
| 正体字符 | \mathrm{e} |
数学公式进阶
上一篇解决了单行公式,这一篇处理「大块头」:矩阵、方程组、多行推导和公式编号。
它们全部来自 amsmath 宏包——这也是为什么所有数学文档的导言区都该有一行 \usepackage{amsmath}。
矩阵:matrix 家族
矩阵用环境表示:& 分隔列,\\ 换行,环境名决定外层的括号样式。
| 环境 | 外层样式 | 典型用途 |
|---|---|---|
matrix | 无括号 | 拼接数据块 |
pmatrix | 圆括号 () | 普通矩阵 |
bmatrix | 方括号 [] | 系数矩阵、线性代数 |
Bmatrix | 大括号 {} | 集合表示 |
vmatrix | 单竖线 | | | 行列式 |
Vmatrix | 双竖线 || || | 范数 |
pmatrix(圆括号矩阵)
\[
\begin{pmatrix}
1 & 2 \\
3 & 4
\end{pmatrix}
\]
bmatrix(方括号矩阵)
\[
\begin{bmatrix}
1 & 0 \\
0 & 1
\end{bmatrix}
\]
vmatrix(行列式)
\[
\begin{vmatrix}
a & b \\
c & d
\end{vmatrix}
= ad - bc
\]
实例:带省略号的 n 阶矩阵
\[
\begin{pmatrix}
a_{11} & \cdots & a_{1n} \\
\vdots & \ddots & \vdots \\
a_{n1} & \cdots & a_{nn}
\end{pmatrix}
\]
三种省略号各司其职:\cdots 横向、\vdots 纵向、\ddots 斜向。矩阵元素多时,务必用省略号而不是把几十个元素全部敲进去。
行内公式中放不下大矩阵时,可以用 smallmatrix 环境,它会压缩行距与字号。
多行推导:align 环境
align 是数学推导的主力环境:多行公式按 & 标记的位置对齐,每行自动编号。
实例:两行推导
\begin{align}
(a+b)^2 &= a^2 + 2ab + b^2 \\
&= a^2 + b^2 + 2ab
\end{align}
规则只有两条:& 放在「对齐锚点」处(通常是等号前),它会把前后分成两列;\\ 换行。每行都会自动获得编号。
实例:定积分计算
\begin{align}
\int_0^1 x^2 \,\mathrm{d}x
&= \left[ \frac{x^3}{3} \right]_0^1 \notag \\[2pt]
&= \frac{1}{3}
\end{align}
这里出现了两个新写法:\notag 让某一行不编号(推导中间行不需要编号时用它);\\ 后面的 [2pt] 微调行距,可省略。
不需要任何编号时,用带星号的
align*环境——这与章节命令\section*的逻辑一致:星号等于「不编号、不进目录」。
方程组与分段函数:cases 环境
cases 环境专门生成左侧一个大括号的分组结构,方程组和分段函数的标准写法。
实例:二元一次方程组
\[
\begin{cases}
x + y = 5 \\
2x - y = 1
\end{cases}
\]
实例:分段函数
\[
f(x) =
\begin{cases}
-x, & x < 0 \\
x, & x \ge 0
\end{cases}
\]
分段函数里 & 的作用变了:把「函数值」和「成立条件」分成两列,第二列条件会自动与右侧对齐。
公式编号与引用
行间公式 \[...\] 不编号;需要被引用的公式,用 equation 环境,它会自动编号。
实例:编号与引用
\documentclass{ctexart}
\usepackage{amsmath}
\begin{document}
由式 \eqref{eq:pyth} 可知,直角三角形的斜边满足
\begin{equation}\label{eq:pyth}
a^2 + b^2 = c^2,
\end{equation}
而等差数列的前 $n$ 项和为
\begin{equation}\label{eq:sum}
S_n = \frac{n(a_1 + a_n)}{2}.
\end{equation}
\end{document}
由式(1)可知,直角三角形的斜边满足
而等差数列的前 项和为
两个公式分别自动编号为 (1)、(2),引用时用 \eqref{key} 得到带括号的编号。
三步记住:equation 负责编号,\label{key} 打标签,\eqref{key} 引用(自动带括号)。
标签的取名建议【类型:内容】,如 eq:pyth、eq:sum——公式多了以后,eq:3 这种名字会降低文档的可读性。
引用显示
??说明 aux 还没更新,再编译一遍。
超长公式折行:split 环境
一个公式长得超过版心宽度时,放进 equation 里再用 split 折行——整段保持同一个编号。
\begin{equation}
\begin{split}
\sum_{i=1}^n (x_i - \bar{x})(y_i - \bar{y})
&= \sum_{i=1}^n x_i y_i - n\bar{x}\bar{y} \\
&= \frac{1}{n}\sum_{i=1}^n x_i y_i - \bar{x}\bar{y}
\end{split}
\end{equation}
split 与 align 的区别:align 是多个公式,各编各的;split 是一个公式拆成几行,共享一个编号。split 必须住在 equation(或 \[...\])里面。
常见公式错误排查
数学模式的报错占了新手报错的一大半,高频错误如下:
| 错误写法 | 问题 | 正确写法 |
|---|---|---|
文本中直接用 \alpha | 数学命令只能用于数学模式 | |
_ 或 ^ 后面缺内容 | 补上: | |
\dfrac | 没加载 amsmath 却用 \dfrac | 导言区 \usepackage{amsmath} |
\a & b \\ c & d | 普通行间公式里乱用 & | & 只属于 matrix、align 等环境 |
| 公式里中文说明 | 字体与断行全乱 | 说明文字放到 外,或用 \text{中文} |
align 里忘了 \\ | 多行挤成一行 | 每行末尾(最后一行除外)加 \\ |
其中 \text{...} 由 amsmath 宏包提供,这里单独说明:当需要在数学公式内部嵌入少量文本(例如条件说明「当 (x>0) 时」、物理单位等场景),使用 \text{} 包裹文本,可保持文字为正体,并维持合理字符间距。
小结
| 需求 | 环境 / 命令 |
|---|---|
| 矩阵 | pmatrix / bmatrix / vmatrix(&分列,\\换行) |
| 多行推导(每行编号) | align,星号版不编号 |
| 方程组 / 分段函数 | cases |
| 单个编号公式 | equation + \label |
| 引用公式编号 | \eqref{key} |
| 长公式折行 | equation 内嵌 split |
插图与表格
图表是论文的骨架件。本篇讲四件事:插图命令与浮动体、基础表格、学术标准的三线表、合并单元格。
LaTeX 对图表的管理哲学与编号一致:你只管放内容和起标题,位置、编号、引用全部自动。
插图:graphicx 宏包
插图只需要两条命令:导言区加载 graphicx,正文里 \includegraphics 放图片文件。
| 常用选项 | 含义 | 示例 |
|---|---|---|
| width | 宽度,可用相对值 | width=0.8\textwidth(版心宽的 80%) |
| height | 高度 | height=5cm |
| scale | 缩放倍数 | scale=0.5 |
| angle | 旋转角度 | angle=90 |
文件名建议不带扩展名:写
sin而不是sin.png,LaTeX 会自动按当前编译器支持的格式查找(XeLaTeX 支持 PDF、PNG、JPG 等),换格式不用改源码。
💡 控制图片大小时优先用
width=\textwidth的比例值,而不是 scale —— 前者保证图片永远不超出版心,后者在不同字号设置下可能意外溢出。
浮动体:figure 环境
图片不该直接躺在正文流里,标准做法是放进 figure 浮动体环境。
实例:标准插图
\documentclass{ctexart}
\usepackage{graphicx} % 插图必备宏包
\begin{document}
正弦函数 $y = \sin x$ 的图像如图~\ref{fig:sin} 所示。
\begin{figure}[htbp] % 浮动体环境,位置参数见下表
\centering % 图片在浮动体内居中
\includegraphics[width=0.6\textwidth]{sin}
\caption{正弦函数曲线} % 图题,编号自动生成
\label{fig:sin} % 标签,供 \ref 引用
\end{figure}
\end{document}

图 1:正弦函数曲线
「我的图片怎么跑到别的地方去了?」——这不是 bug,是浮动机制在起作用:LaTeX 会为每张图选择不产生大空隙的位置。真需要钉死位置时,用 float 宏包的
[H]参数(大写,表示 here 且不许动)。
| 参数 | 含义 | 优先级说明 |
|---|---|---|
| h | here,就在源码位置 | 只是建议,版面放不下时 LaTeX 会自行调整 |
| t | top,本页顶部 | 学术论文最常见的选择 |
| b | bottom,本页底部 | 常与 t 搭配 |
| p | float page,独立浮动页 | 图表多时自动集中成附录页 |
| !(如 [!h]) | 放宽排版约束 | 强烈要求时叠加使用 |
基础表格:tabular 环境
表格的语法骨架与矩阵一样:& 分列,\\ 换行,列格式在环境参数里声明。
实例:带全边框的表格
\documentclass{ctexart}
\begin{document}
\begin{tabular}{|l|c|r|} % 列格式:左对齐、居中、右对齐,竖线分隔
\hline % 顶部横线
姓名 & 年龄 & 得分 \\ % & 分列,\\ 换行
\hline
张三 & 20 & 92 \\
李四 & 21 & 88 \\
\hline % 底部横线
\end{tabular}
\end{document}
| 列格式符号 | 含义 |
|---|---|
| l/c/r | 该列左对齐 / 居中 / 右对齐 |
| | | 在该位置画竖线 |
| p{2cm} | 固定列宽,单元格内自动换行 |
学术标准:booktabs 三线表
翻开任何一本正规出版物,表格都是「三条横线、零条竖线」——这叫三线表,由 booktabs 宏包提供。
实例:三线表
\documentclass{ctexart}
\usepackage{booktabs} % 三线表专用宏包
\begin{document}
\begin{tabular}{lccc} % 三线表不使用任何竖线
\toprule % 顶线,最粗
算法 & 准确率 & 召回率 & F1 \\
\midrule % 中线,较细
模型 A & 0.91 & 0.88 & 0.89 \\
模型 B & 0.93 & 0.90 & 0.91 \\
\bottomrule % 底线,最粗
\end{tabular}
\end{document}
💡 期刊和毕业论文的格式规范几乎都要求三线表。日常作业里用
|和\hline带全边框表格没有问题,但投稿前请务必改成booktabs。
合并单元格:multirow 与 multicolumn
复杂表头需要合并:横向合并用 \multicolumn(LaTeX 内置),纵向合并用 \multirow(需要加载 multirow 宏包)。
实例:双层表头
\documentclass{ctexart}
\usepackage{booktabs}
\usepackage{multirow} % 纵向合并单元格
\begin{document}
\begin{tabular}{lcc}
\toprule
\multirow{2}{*}{数据集} & \multicolumn{2}{c}{准确率} \\
\cmidrule(lr){2-3} % 只在第2~3列画部分横线
& 训练集 & 测试集 \\
\midrule
MNIST & 0.99 & 0.98 \\
CIFAR-10 & 0.95 & 0.91 \\
\bottomrule
\end{tabular}
\end{document}

| 命令 | 语法 | 说明 |
|---|---|---|
\multirow | \multirow{行数}{宽度}{内容} | 纵向跨行,跨的行里对应位置留空 |
\multicolumn | \multicolumn{列数}{列格式}{内容} | 横向跨列,需要重写该格的列格式 |
\cmidrule | \cmidrule(lr){2-3} | 部分横线,(lr) 表示两端留一点空隙,更精致 |
表格标题与整体浮动
表格同样住在浮动体里,环境是 table,其余套路与 figure 完全一致。
实例:带编号的表格
\begin{table}[htbp]
\centering
\caption{实验结果对比} % 表题(惯例在表格上方)
\label{tab:result}
\begin{tabular}{lcc}
\toprule
数据集 & 训练集 & 测试集 \\
\midrule
MNIST & 0.99 & 0.98 \\
CIFAR-10 & 0.95 & 0.91 \\
\bottomrule
\end{tabular}
\end{table}
表 1:实验结果对比
两条不成文的惯例:表题放表格上方,图题放图片下方;图表标签前缀分别用
tab:和fig:,引用时一眼就能认出类型。 表格比版心宽时有两个急救方案:整个 tabular 外套\resizebox{\textwidth}{!}{...}等比例缩放;或用tabularx宏包自动分配列宽。
小结
| 需求 | 命令 / 环境 |
|---|---|
| 插图 | \includegraphics[width=0.8\textwidth]{文件名} |
| 图表浮动体 | figure / table + [htbp] + \centering + \caption + \label |
| 表格骨架 | tabular,& 分列、\\ 换行 |
| 三线表 | booktabs:\toprule \midrule \bottomrule |
| 合并单元格 | \multirow、\multicolumn |
| 部分横线 | \cmidrule(lr){2-3} |
交叉引用与文献管理
长文档的两大自动化利器:交叉引用(章节、图表、公式之间互相指向)和参考文献管理(BibTeX)。 它们的共同哲学:编号永远是自动的,你只负责起一个「标签名」。
标签与引用:\label 与 \ref
交叉引用三步走:在被引用处用 \label{标签} 打标签,在引用处用 \ref{标签}(或 \pageref、\eqref)获取编号。
| 命令 | 输出什么 | 典型搭配 |
|---|---|---|
\label{key} | 无输出,给前面的对象打标签 | 紧跟 \section、\caption、equation |
\ref{key} | 编号数字(如 3、1.2) | 第\ref{sec:method}节 |
\eqref{key} | 带括号编号(如 (1)) | 式\eqref{eq:loss}(公式专用) |
\pageref{key} | 所在页码 | 见第\pageref{sec:method}页 |
\label必须紧跟被引用的命令之后、写在同一个环境层级里——\section{方法}\label{sec:method}是正确姿势;若把\label写到下一段去,引用到的就是错误的对象。公式的\label要写在 equation 环境内部。
实例:章节、公式、图片互引
\documentclass{ctexart}
\usepackage{amsmath, graphicx}
\begin{document}
\section{方法}\label{sec:method}
本节介绍模型结构,损失函数见式\eqref{eq:loss},
实验分析见第\ref{sec:result} 节。
\begin{equation}\label{eq:loss}
L = \sum_{i=1}^n \left( y_i - \hat{y}_i \right)^2
\end{equation}
\section{实验结果}\label{sec:result}
方法(第\ref{sec:method} 节)的损失由式\eqref{eq:loss} 度量,
曲线形态见图\ref{fig:sin}。
\begin{figure}[htbp]
\centering
\includegraphics[width=0.5\textwidth]{sin}
\caption{正弦曲线}
\label{fig:sin}
\end{figure}
\end{document}
1 方法
本节介绍模型结构,损失函数见式 (1),实验分析见第 2 节。
2 实验结果
方法(第 1 节)的损失由式 (1) 度量,曲线形态见图 1。

图 1:正弦函数曲线
章节公式图片交叉引用的编译效果: 所有引用都自动取到了正确编号。之后不管插入多少新章节、新公式,编号与引用会自动更新——这是 Word 里「手动改编号改到崩溃」的终极解药。
标签命名建议「前缀:内容」,常用的前缀约定如下。
| 前缀 | 对象 | 示例 |
|---|---|---|
| sec: | 章节 | \label{sec:method} |
| fig: | 图 | \label{fig:sin} |
| tab: | 表 | \label{tab:result} |
| eq: | 公式 | \label{eq:loss} |
| chap: | 章(report/book) | \label{chap:intro} |
超链接:hyperref 宏包
加载 hyperref 后,所有 \ref、\cite、\url 自动变成可点击的链接,并在 PDF 里生成侧边书签栏。
实例:hyperref 常用配置
\usepackage[colorlinks=true, linkcolor=blue, % 正文引用:蓝色
citecolor=blue, urlcolor=blue]{hyperref}
% colorlinks=true 用颜色标记链接(默认红框很难看)
% 三个参数分别控制:内部引用 / 文献引用 / 网址的颜色
\url{https://uniresearch.uniplore.com/} % 网址排版:自动断行、可点击
配置后,文档中的引用、网址都会变成可点击的超链接。
hyperref 几乎永远应该是导言区最后一个加载的宏包——它要等所有其他宏包就位后才能正确改造文档,放早了会莫名冲突。
参考文献:BibTeX 工作流
参考文献的正确姿势不是在文末手写列表,而是:文献信息存进 .bib 数据库,正文用 \cite 引用,BibTeX 程序自动生成格式化的文献列表。
先看文献数据库长什么样——每条文献是一个「条目」。
实例:refs.bib 文献数据库
@article{alexnet2012, % 条目类型:期刊论文
author = {Krizhevsky, Alex and Sutskever, Ilya and Hinton, Geoffrey E.},
title = {ImageNet Classification with Deep Convolutional Neural Networks},
journal = {Communications of the ACM},
year = {2017},
volume = {60},
pages = {84--90}
}
@book{goodfellow2016, % 条目类型:图书
author = {Goodfellow, Ian and Bengio, Yoshua and Courville, Aaron},
title = {Deep Learning},
publisher = {MIT Press},
year = {2016}
}
花括号里第一项是引用键(如 alexnet2012),正文里 \cite{alexnet2012} 就靠它找到这条文献;键名随意,但全文唯一。
| 条目类型 | 对应文献 | 关键字段 |
|---|---|---|
@article | 期刊论文 | author、title、journal、year |
@inproceedings | 会议论文 | author、title、booktitle、year |
@book | 图书 | author/editor、title、publisher、year |
@phdthesis | 博士论文 | author、title、school、year |
@misc / @online | 网页、报告等 | title、url、note、year |
正文侧只有两条命令,放在文档末尾:
实例:引用与生成文献列表
\documentclass{ctexart}
\begin{document}
深度学习的突破源于 AlexNet~\cite{alexnet2012},
系统教材可参考~\cite{goodfellow2016}。
\bibliographystyle{plain} % 文献样式: plain 数字序号风格
\bibliography{refs} % 文献数据库文件(不带 .bib 扩展名)
\end{document}
深度学习的突破源于 AlexNet[2],系统教材可参考[1]。
参考文献
[1] Goodfellow I, Bengio Y, Courville A. Deep Learning[M]. MIT Press, 2016.
[2] Krizhevsky A, Sutskever I, Hinton G E. ImageNet Classification with Deep Convolutional Neural Networks[J]. Communications of the ACM, 2017, 60: 84-90.
引用处自动出现 [1], [2],文末自动生成按引用顺序排列的文献列表——你没写过一行格式。
为什么要编译四遍
加了 BibTeX 之后,完整的编译变成四步,文件之间形成一条流水线。
| 步骤 | 命令 | 作用 |
|---|---|---|
| 1 | xelatex main | 生成 main.aux,记录正文引用了哪些键 |
| 2 | bibtex main | 读 .aux 与 refs.bib,生成 main.bbl 文献列表 |
| 3 | xelatex main | 把 .bbl 内容排进文档 |
| 4 | xelatex main | 引用编号稳定,显示正确 |
引用显示「??」的原因就藏在这条流水线里:没跑 bibtex、或跑完没再编译两遍。Overleaf 会自动帮你跑完全部步骤,本地推荐用 latexmk -pdf main.tex 一键代劳。
BibLaTeX:更现代的选择
BibTeX 是 1985 年的老库;后继者 biblatex(配合程序 biber)在中文场景下更值得了解。
| 维度 | BibTeX | biblatex + biber |
|---|---|---|
| 诞生时间 | 1985 | 2009 起 |
| Unicode / 中文 | 支持有限 | 原生 UTF-8 |
| 样式定制 | 需写 .bst 文件,门槛高 | LaTeX 语法,直观 |
| 中文国标 | 需配置,较繁琐 | biblatex-gb7714-2015 宏包直接支持 |
| 适用建议 | 老模板、期刊指定时用 | 新项目、中文论文优先 |
实例:biblatex 基本用法
\usepackage[backend=biber, style=numeric]{biblatex} % backend 指定 biber
\addbibresource{refs.bib} % 注意带 .bib 扩展名
\begin{document}
深度学习的突破源于 AlexNet~\cite{alexnet2012}。
\printbibliography[title=参考文献] % 文档末尾打印参考文献
\end{document}
深度学习的突破源于 AlexNet[1]。
参考文献
[1] Krizhevsky A, Sutskever I, Hinton G E. ImageNet Classification with Deep Convolutional Neural Networks[J]. Communications of the ACM, 2017, 60: 84-90.
命令从 bibtex 换成 biber,其余编译流水线完全相同。写中文毕业论文时,装上 biblatex-gb7714-2015 宏包、把 style 换成 gb7714-2015,即可满足国标著录格式。
小结
| 需求 | 命令 |
|---|---|
| 打标签 | \label{前缀:名字}(紧跟被引用对象) |
| 引用编号 / 页码 / 公式 | \ref、\pageref、\eqref |
| 超链接 | hyperref(最后加载) |
| 引用文献 | \cite{键名},文献存 .bib 数据库 |
| 生成文献列表 | BibTeX:\bibliography;biblatex:\printbibliography |
| 一键编译 | latexmk -pdf main.tex |
常用宏包与技巧
前几个章节用到的宏包已经不少,本篇做个系统收口:宏包速查、自定义命令、代码排版、多文件工程、latexmk与排错心法。 掌握这些「工具箱」内容,你就从会写LaTeX进化到会管理LaTeX项目。
常用宏包速查
宏包用 \usepackage[选项]{宏包名} 加载,全部放在导言区。
| 宏包 | 用途 | 本系列出现 |
|---|---|---|
| geometry | 页面边距与纸张 | LaTeX文档结构与排版 |
| fancyhdr | 页眉页脚 | LaTeX文档结构与排版 |
| amsmath / amssymb | 数学公式增强 / 扩展符号 | LaTeX数学公式基础、LaTeX数学公式进阶 |
| graphicx | 插图 | LaTeX插图与表格 |
| booktabs / multirow | 三线表 / 纵向合并单元格 | LaTeX插图与表格 |
| enumitem | 列表定制 | LaTeX文字格式与列表 |
| xcolor | 颜色定义 | 本章节介绍 |
| listings | 代码排版 | 本章节介绍 |
| hyperref | 超链接与书签 | LaTeX交叉引用与文献管理 |
| biblatex | 参考文献(现代方案) | LaTeX交叉引用与文献管理 |
| float | 图表强制定位 [H] | LaTeX插图与表格 |
本地环境提示
File 'xxx.sty' not found时,用tlmgr install xxx安装(TeX Live),MiKTeX则会自动下载。Overleaf自带几乎所有宏包,无此烦恼。
自定义命令:\newcommand
当同样的内容写了三遍以上,就该定义命令了。\newcommand{命令名}[参数个数][定义]。
实例:三种自定义命令
% 无参数:把长命令缩短
\newcommand{\R}{\mathbb{R}} % 以后写 $\R$ 就是 $\mathbb{R}$
% 一个参数:封装固定格式
\newcommand{\email}[1]{\texttt{#1}} % #1 表示第一个参数
% 带默认值的可选参数:[参数个数][默认值]
\newcommand{\vecn}[2][n]{x_1, \dots, x_{#1}}
% 用法: $\vecn$ 得到 $x_1,\dots,x_n$
% $\vecn[5]$ 得到 $x_1,\dots,x_5$
\begin{document}
定义在 $\R$ 上的函数,向量 $\vecn$ 与 $\vecn[5]$。
联系邮箱 \email{uniresearch@email.uniplore.com}。
\end{document}
定义在 上的函数,向量 与 。
联系邮箱 uniresearch@email.uniplore.com。
| 命令 | 用途 | 注意 |
|---|---|---|
\newcommand | 定义新命令 | 命令名不能与已有命令冲突 |
\renewcommand | 重定义已有命令 | 改造默认样式时用,慎改基础命令 |
\newenvironment | 定义新环境 | 语法同上,给出开始与结束代码 |
自定义环境的语法一并认识一下:
实例:自定义「注意」环境
\newenvironment{note}
{\par\medskip\noindent\textbf{注意:}\itshape} % 开始代码
{\par\medskip} % 结束代码
\begin{note}
这里的内容会自动以「注意:」开头并排成斜体。
\end{note}
**注意:**这里的内容会自动以「注意:」开头并排成斜体。
代码排版:listings 宏包
技术文档里贴代码,用 listings 宏包,语言高亮、行号、边框全自动。
实例:带高亮和行号的代码块
\documentclass{ctexart}
\usepackage{listings} % 代码排版宏包
\usepackage{xcolor} % 颜色支持
\lstset{ % 全局代码样式设置
basicstyle=\ttfamily\small, % 等宽字体、稍小字号
keywordstyle=\color{blue}, % 关键字蓝色
commentstyle=\color{gray}, % 注释灰色
stringstyle=\color{purple}, % 字符串紫色
numbers=left, % 行号在左侧
numberstyle=\tiny\color{gray},
showstringspaces=false, % 不显示字符串内空格标记
frame=single % 单线边框
}
\begin{document}
\begin{lstlisting}[language=Python, caption=计算斐波那契数列]
# 计算第 n 项斐波那契数(中文注释测试)
def fib(n):
if n < 2:
return n
return fib(n - 1) + fib(n - 2)
print(fib(10)) # 输出 55
\end{lstlisting}
\end{document}
Listing 1: 计算斐波那契数列
# 计算第 n 项斐波那契数(中文注释测试)
def fib(n):
if n < 2:
return n
return fib(n - 1) + fib(n - 2)
print(fib(10)) # 输出 55
lstlisting 是「原样环境」:内部内容不做任何LaTeX解释,&、% 都不用转义。caption 同样自动编号(Listing 1)。常见语言名有 Python、C、Java、HTML、SQL、bash 等,不指定 language 则纯文本着色。
listings 对 UTF-8 中文的支持依赖编译器:XeLaTeX 下中文注释正常;老引擎(latex/pdfLaTeX)下会乱码。中文文档请坚持用 XeLaTeX 编译。
多文件工程:\input 与 \include
文档超过几百行就该拆文件——main.tex 只做骨架,内容分而治之。
实例:main.tex 骨架
\documentclass{ctexart}
\usepackage{amsmath, graphicx, booktabs, hyperref}
\begin{document}
\input{chapters/intro} % 引言(文件名不带 .tex)
\input{chapters/method} % 方法
\input{chapters/result} % 实验
\input{chapters/conclusion}% 结论
\bibliographystyle{plain}
\bibliography{refs}
\end{document}
两条命令看着相似,行为有明确分工:
| 对比项 | \input{文件} | \include{文件} |
|---|---|---|
| 能否嵌套 | 可以(子文件里再input) | 不可以 |
| 是否强制换页 | 不换页 | 每个文件前强制 \clearpage |
配合 \includeonly | 不支持 | 支持,只编译指定章节(提速利器) |
| 适用粒度 | 任意片段(宏定义、图表、封面) | 章级大块内容 |
常见坑:
\include会强制换页,用它拼「同一页的几个小节」会发现莫名分页——小片段一律用\input。
latexmk:一键编译
第9篇的四遍编译流水线,手动敲四条命令很折磨人,latexmk全自动代劳。
$ latexmk -xelatex main.tex # XeLaTeX 引擎编译,自动跑所有遍数
$ latexmk -xelatex -C main.tex # 连中间文件一起清理
$ latexmk -xelatex -c main.tex # 连PDF一起保留,清理附属文件
latexmk 会自动判断:有 bibtex、目录引用有变动就多编译几遍,直到所有编号稳定。编辑器里配置「构建命令」为 latexmk -xelatex main.tex。
排错心法
LaTeX 报错信息以叹号开头、附带行号,格式固定,看懂前几行就够了。
! Undefined control sequence.
l.42 \section{方法}
l.42指出出错行——本例第42行把\section拼成了\secton。修这一处,后面一串连锁错误往往一起消失。
| 报错信息 | 含义 | 处理 |
|---|---|---|
| Undefined control sequence | 命令不存在:拼写错误或缺宏包 | 对照行号查拼写;确认宏包已加载 |
| Missing $ inserted | 数学命令出现在文本模式 | 把 $\alpha$ 等放进 $ 内 |
File xxx not found | 找不到文件或宏包 | 检查路径;tlmgr install xxx |
| Runaway argument | 环境没闭合(少了 \end) | 对照行号补 \end{...} |
| LaTeX Error: Environment xxx undefined | 用了未定义的环境 | 检查环境拼写与宏包 |
| ! Emergency stop | 编译彻底中止 | 往上翻日志找第一个错误 |
| Reference undefined(警告) | 引用是 ?? | 多编译一遍 |
永远只修日志里的第一个错误——后面的错误多半是第一个错误的连锁反应。修完重编译,比一口气改十处靠谱得多。
小结
| 需求 | 方案 |
|---|---|
| 减少重复输入 | \newcommand 定义命令与环境 |
| 贴代码 | listings + \lstset 全局样式 |
| 大文档拆分 | \input(片段) / \include(章级) |
| 一键编译 | latexmk -xelatex |
| 排错 | 读日志第一个 ! 错误的行号 |
排版一篇完整论文
本篇把前十篇的知识全部装配起来:用多文件工程,从零排版一篇带摘要、公式、图表和参考文献的完整小论文。 建议照着做一遍——看会了不等于写会了,完整走过一次流程,LaTeX 就真正属于你。
项目结构
先规划目录:骨架与内容分离,每章一个文件。
paper/
├── main.tex # 骨架:导言区 + 按顺序组装各章节
├── refs.bib # 参考文献数据库
├── figures/
│ └── fit.png # 插图
└── sections/
├── abstract.tex # 摘要
├── intro.tex # 引言
├── method.tex # 方法
├── result.tex # 实验结果
└── conclusion.tex# 结论
main.tex:项目骨架
骨架文件只做三件事:加载宏包、声明标题、按顺序组装。
实例:main.tex
\documentclass[12pt, a4paper]{ctexart}
% -------- 页面与基础宏包 --------
\usepackage{geometry}
\geometry{margin=2.5cm}
\usepackage{amsmath, amssymb} % 数学
\usepackage{graphicx} % 插图
\usepackage{booktabs, multirow} % 三线表
\usepackage[colorlinks=true, linkcolor=blue,
citecolor=blue, urlcolor=blue]{hyperref}
% -------- 标题信息 --------
\title{基于最小二乘法的周期信号拟合研究}
\author{UniResearch}
\date{\today}
\begin{document}
\maketitle
\input{sections/abstract} % 摘要
\input{sections/intro} % 引言
\input{sections/method} % 方法
\input{sections/result} % 实验结果
\input{sections/conclusion} % 结论
\bibliographystyle{plain}
\bibliography{refs} % 参考文献
\end{document}
基于最小二乘法的周期信号拟合研究
UniResearch
2026 年 8 月 20 日
摘要 本文研究周期信号的参数化建模方法,基于最小二乘准则推导了正弦模型 的估计流程,并在合成数据上验证了方法的有效性。实验表明,低噪声条件下拟合相对误差低于 1%。
关键词: 最小二乘法;周期信号;参数估计
各章节内容
每个文件就是一段普通正文,以摘要和引言为例。
实例:sections/abstract.tex
\begin{abstract}
本文研究周期信号的参数化建模方法,基于最小二乘准则推导了正弦模型
$y = A\sin(\omega x + \varphi) + c$ 的估计流程,
并在合成数据上验证了方法的有效性。
实验表明,低噪声条件下拟合相对误差低于 1\%。
\medskip
\noindent\textbf{关键词:}最小二乘法;周期信号;参数估计
\end{abstract}
摘要 本文研究周期信号的参数化建模方法,基于最小二乘准则推导了正弦模型 的估计流程,并在合成数据上验证了方法的有效性。实验表明,低噪声条件下拟合相对误差低于 1%。
关键词: 最小二乘法;周期信号;参数估计
实例:sections/intro.tex
\section{引言}\label{sec:intro}
周期信号广泛存在于通信、振动分析与生物医学工程等领域,
对这类信号进行参数化建模是滤波、预测与压缩的共同基础~\cite{oppenheim1997}。
经典的最小二乘法为模型参数估计提供了系统化的求解框架~\cite{bjorck1996}。
本文的组织如下:第~\ref{sec:method} 节建立模型并给出求解步骤,
第~\ref{sec:result} 节报告实验结果,第~\ref{sec:conclusion} 节总结全文。
1 引言
周期信号广泛存在于通信、振动分析与生物医学工程等领域,对这类信号进行参数化建模是滤波、预测与压缩的共同基础[2]。经典的最小二乘法为模型参数估计提供了系统化的求解框架[1]。
本文的组织如下:第 2 节建立模型并给出求解步骤,第 3 节报告实验结果,第 4 节总结全文。
方法部分放公式,实验部分放图表,套路你已经全部见过。
实例:sections/method.tex(公式部分)
\section{方法}\label{sec:method}
考虑如下正弦模型:
\begin{equation}\label{eq:model}
y = A \sin(\omega x + \varphi) + c,
\end{equation}
其中 $A$ 为振幅,$\omega$ 为角频率,$\varphi$ 为初相位,$c$ 为直流分量。
参数估计的目标是最小化残差平方和
\begin{equation}\label{eq:loss}
S(A, \omega, \varphi, c)
= \sum_{i=1}^n \left( y_i - A \sin(\omega x_i + \varphi) - c \right)^2 .
\end{equation}
对于固定的 $\omega$,式\eqref{eq:loss} 关于其余参数是线性最小二乘问题,
可由正规方程直接求解。
实例:sections/result.tex(图表部分)
\section{实验结果}\label{sec:result}
在 $[0, 2\pi]$ 上等间隔采样 $n = 200$ 个点生成合成数据,
并加入标准差为 $0.05$ 的高斯噪声。
拟合曲线与带噪声采样点的对比如图\ref{fig:fit} 所示,
不同噪声水平下的误差指标见表\ref{tab:err}。
\begin{figure}[htbp]
\centering
\includegraphics[width=0.65\textwidth]{figures/fit}
\caption{拟合曲线(实线)与带噪声采样点(散点)}
\label{fig:fit}
\end{figure}
\begin{table}[htbp]
\centering
\caption{不同噪声水平下的均方根误差}
\label{tab:err}
\begin{tabular}{lccc}
\toprule
噪声标准差 & 0.01 & 0.05 & 0.10 \\
\midrule
RMSE & 0.011 & 0.053 & 0.104 \\
相对误差 & 1.1\% & 5.3\% & 10.4\% \\
\bottomrule
\end{tabular}
\end{table}
\end{section}
3 实验结果
在 上等间隔采样 个点生成合成数据,并加入标准差为 0.05 的高斯噪声。拟合曲线与带噪声采样点的对比如图 1 所示,不同噪声水平下的误差指标见表 1。

图 1:拟合曲线(实线)与带噪声采样点(散点)
表 1:不同噪声水平下的均方根误差
refs.bib 里是两条文献数据,正文用 \cite{oppenheim1997}、\cite{bjorck1996} 引用(完整写法见第9篇)。
编译与效果
多文件项目只需编译 main.tex,\input 会自动展开。带文献的完整流程:
$ cd paper
$ latexmk -xelatex main.tex # 一键完成(推荐)
# 或者手动四步:xelatex -> bibtex -> xelatex -> xelatex
第一页效果(标题区、摘要与关键词、引言的引用编号):
\title{基于最小二乘法的周期信号拟合研究}
\author{UniResearch}
\date{\today}
\begin{abstract}
本文研究周期信号的参数化建模方法,基于最小二乘准则推导了正弦模型
$y = A\sin(\omega x + \varphi) + c$ 的估计流程,
并在合成数据上验证了方法的有效性。
实验表明,低噪声条件下拟合相对误差低于 1\%。
\medskip
\noindent\textbf{关键词:}最小二乘法;周期信号;参数估计
\end{abstract}
\section{引言}\label{sec:intro}
周期信号广泛存在于通信、振动分析与生物医学工程等领域,
对这类信号进行参数化建模是滤波、预测与压缩的共同基础~\cite{oppenheim1997}。
经典的最小二乘法为模型参数估计提供了系统化的求解框架~\cite{bjorck1996}。
本文的组织如下:第~\ref{sec:method} 节建立模型并给出求解步骤,
第~\ref{sec:result} 节报告实验结果,第~\ref{sec:conclusion} 节总结全文。
基于最小二乘法的周期信号拟合研究
UniResearch
2026 年 8 月 20 日
摘要
本文研究周期信号的参数化建模方法,基于最小二乘准则推导了正弦模型 的估计流程,并在合成数据上验证了方法的有效性。实验表明,低噪声条件下拟合相对误差低于 1%。
关键词: 最小二乘法;周期信号;参数估计
1 引言
周期信号广泛存在于通信、振动分析与生物医学工程等领域,对这类信号进行参数化建模是滤波、预测与压缩的共同基础[2]。经典的最小二乘法为模型参数估计提供了系统化的求解框架[1]。
本文的组织如下:第 2 节建立模型并给出求解步骤,第 3 节报告实验结果,第 4 节总结全文。
第二页效果(公式编号与引用、浮动图、三线表、结论与参考文献):
\section{方法}\label{sec:method}
考虑如下正弦模型:
\begin{equation}\label{eq:model}
y = A \sin(\omega x + \varphi) + c,
\end{equation}
其中 $A$ 为振幅,$\omega$ 为角频率,$\varphi$ 为初相位,$c$ 为直流分量。
参数估计的目标是最小化残差平方和
\begin{equation}\label{eq:loss}
S(A, \omega, \varphi, c)
= \sum_{i=1}^n \left( y_i - A \sin(\omega x_i + \varphi) - c \right)^2 .
\end{equation}
对于固定的 $\omega$,式\eqref{eq:loss} 关于其余参数是线性最小二乘问题,
可由正规方程直接求解;$\omega$ 则在区间 $[\omega_{\min}, \omega_{\max}]$ 上网格搜索确定,
最终取使 $S$ 最小的参数组合。
\section{实验结果}\label{sec:result}
在 $[0, 2\pi]$ 上等间隔采样 $n = 200$ 个点生成合成数据,
并加入标准差为 $0.05$ 的高斯噪声。
拟合曲线与带噪声采样点的对比如图~\ref{fig:fit} 所示,
不同噪声水平下的误差指标见表~\ref{tab:err}。
\begin{figure}[htbp]
\centering
\includegraphics[width=0.65\textwidth]{figures/fit}
\caption{拟合曲线(实线)与带噪声采样点(散点)}
\label{fig:fit}
\end{figure}
\begin{table}[htbp]
\centering
\caption{不同噪声水平下的均方根误差}
\label{tab:err}
\begin{tabular}{lccc}
\toprule
噪声标准差 & 0.01 & 0.05 & 0.10 \\
\midrule
RMSE & 0.011 & 0.053 & 0.104 \\
相对误差 & 1.1\% & 5.3\% & 10.4\% \\
\bottomrule
\end{tabular}
\end{table}
\section{结论}\label{sec:conclusion}
本文将正弦拟合分解为「网格搜索 + 线性最小二乘」两步,
流程简单、求解稳定。
后续工作将把方法推广到多分量谐波信号,
并研究频率初值的自动估计。
\begin{thebibliography}{9}
\bibitem{bjorck1996}
Åke Björck. \textit{Numerical Methods for Least Squares Problems}. SIAM, 1996.
\bibitem{oppenheim1997}
Alan V. Oppenheim and Alan S. Willsky. \textit{Signals and Systems}. Prentice Hall, 2 edition, 1997.
\end{thebibliography}
2 方法
考虑如下正弦模型:
其中 为振幅, 为角频率, 为初相位, 为直流分量。
参数估计的目标是最小化残差平方和
对于固定的 ,式 (2) 关于其余参数是线性最小二乘问题,可由正规方程直接求解; 则在区间 [ω_min, ω_max] 上网格搜索确定,最终取使 最小的参数组合。
3 实验结果
在 上等间隔采样 个点生成合成数据,并加入标准差为 0.05 的高斯噪声。拟合曲线与带噪声采样点的对比如图 1 所示,不同噪声水平下的误差指标见表 1。

图 1:拟合曲线(实线)与带噪声采样点(散点)
表 1:不同噪声水平下的均方根误差
4 结论
本文将正弦拟合分解为「网格搜索 + 线性最小二乘」两步,流程简单、求解稳定。后续工作将把方法推广到多分量谐波信号,并研究频率初值的自动估计。
参考文献
[1] Åke Björck. Numerical Methods for Least Squares Problems. SIAM, 1996.
[2] Alan V. Oppenheim and Alan S. Willsky. Signals and Systems. Prentice Hall, 2 edition, 1997.
检查几个「自动化痕迹」:引言里的(^1)(^2)与文末文献一一对应;图和表都有自己的编号,正文引用「图1」「表1」全部正确;公式(1)(2)被\eqref引用为带括号的形式。
修改任何一处引用或编号,重跑一次
latexmk,所有编号自动更新——这就是十篇内容换来的一份「再也不用手动核对编号」的文档。
真实世界:从模板开始
实际写论文,你不该从零搭骨架——期刊和学校都提供现成模板。
| 模板来源 | 去哪找 | 特点 |
|---|---|---|
| Overleaf模板库 | Overleaf → Templates | 数千个学位论文、期刊、海报模板,一键打开 |
| 期刊官网 | 期刊 Author Guidelines 页面 | 投稿指定格式,务必以此为准 |
| 学校学位论文模板 | 学校图书馆 / GitHub 搜索「[校名] + thesis」 | 满足校内格式审查 |
| GitHub | 搜索 awesome-latex 等合集 | 社区维护的模板与资源汇总 |
全局的心法一句话: 只往占位符里填内容,不动模板结构。 模板里那些看不懂的导言区设置,是别人调好的格式,删改一处可能全盘崩坏。
小结
| 环节 | 本篇的实践 |
|---|---|
| 工程组织 | main.tex 骨架 + sections/分章 + figures/图片 |
| 导言区 | geometry、amsmath、graphicx、booktabs、hyperref |
| 正文要素 | 摘要、章节、公式、图表、交叉引用、文献 |
| 编译 | latexmk -xelatex 一键完成 |
| 效率建议 | 真实投稿用官方模板,只填内容不改结构 |