1978年,为了解决解决当时学术出版里公式排版不美观的问题,计算机科学家Donald Knuth开发了一个排版系统,并给他命名为TeX(发音接近 “tech”),它的功能强大,但写起来很繁琐
而我们要学的LaTeX(读作"Lay-tech"或 “Lah-tech”)是一个基于TeX的排版系统,它由Leslie Lamport在 1980年开发,目的是让普通人更容易使用TeX
可以这样理解:
- TeX就像汇编语言,底层、强大,但复杂
- LaTeX就像高级语言,在 TeX 上加了封装,更易用
LaTeX在现代被广泛使用,用于生成高质量的文档,尤其擅长处理包含数学公式、科学符号和复杂排版的内容
所以学点吧,学点总没错
注意:LaTeX的命令是大小写敏感的!
为何选择LaTeX?
与我们熟知的Word这类“所见即所得”(WYSIWYG) 的编辑器不同,LaTeX 是一种**“所见即所想” (WYSIWYM)** 的排版系统
-
Word (所见即所得)
我们的编辑界面就是最终的页面,自由度高,上手简单
但缺点在于,手动调整格式容易出现细节不一致(如行距、字体混乱),且对于学术论文中的公式、图表、参考文献的自动编号和交叉引用支持不佳
-
LaTeX (所见即所想)
我们负责撰写内容并用代码写排版指令,例如
\section{引言}就是告诉LaTeX“这里是一个一级标题,内容是引言”我们无需关心它具体用什么字体、多大字号、距离页边距多少,编译器会根据预设的规范,自动生成一篇格式精美、高度一致的文档
这种模式赋予了LaTeX无与伦比的优势,特别是在学术写作领域:
- 规范与专业:自动处理编号、格式,确保全文样式统一,版面专业
- 强大的数学公式支持:被公认为数学公式排版的行业标准
- 自动化管理:目录、图表列表、参考文献等都能自动生成和更新
- 结构化写作:强迫作者专注于内容和逻辑,而非琐碎的格式调整
同一篇文章,虽然Word和LaTeX最终都能实现类似的效果,但LaTeX的排版更加专业好用
另外,关于LaTeX的读音,虽然百科上的推荐发音是"拉泰赫",但读成"拉泰克斯"也是可以的,读音不重要
Overleaf
何为overleaf
对于初学者,安装和配置本地LaTeX环境可能比较繁琐,因此,本教程将以Overleaf为核心工具
Overleaf是一个强大的在线LaTeX编辑器:
- 零配置:无需在本地安装任何软件,注册账号即可使用
- 实时预览:左侧编写代码,右侧实时显示生成的PDF效果
- 模板丰富:提供大量期刊、论文、简历、幻灯片等高质量模板
- 协作方便:可以像谷歌文档一样与他人在线协作
我们完全可以把它当成长期的LaTeX工具使用
如何使用?
-
访问Overleaf官网 或者Overleaf中文官网 并注册一个免费账户
-
登录后,点击左上角的 “New Project”,我们可以选择创建一个"Blank Project"(空白项目)、“Example Project”(示例项目)或从"Templates"(模板)中选择一个开始
如果我们已经有本地项目,也可以选择"Upload project"(上传项目)
-
进入编辑器界面,我们会看到:
- 左侧:文件列表(可以上传图片、创建
.bib文件等) - 中间:源代码编辑区,我们将在这里编写LaTeX代码
- 右侧:点击编译,实时预览生成的PDF文档
可以点击两个区域之间的箭头
- 左侧:文件列表(可以上传图片、创建
-
中间写好之后,点击右边区域上方的"重新编译"按钮,稍等片刻即可看见文档
如果因为语法等错误编译失败,则会看见修复建议和原始错误日志
-
点击左上角叶子状图标,可以进行设置,包括编译器种类、Tex版本、自动补全、主题等等
LaTeX编译器
overleaf支持很多不同的LaTeX编译器引擎,大部分语法在他们中都是一样的
pdfLaTeX
传统的LaTeX引擎,最常见,历史最久
优点:
- 稳定、兼容性最好
- 生态最丰富,几乎所有宏包都支持
缺点:
- 不支持Unicode → 中文、Emoji、现代字体用起来很麻烦
- 字体只能用TeX内置机制,必须事先安装TeX字体集(比如fandol),否则会报错
XeLaTeX
基于Unicode,专门为现代字体设计的引擎
优点:
- 原生支持Unicode → 直接输入中文没问题
- 可以调用系统字体(比如Windows的宋体、Mac的苹方、Linux的思源黑体等),不需要fandol
- 字体控制能力强(比如
\setmainfont{Times New Roman})
缺点:
- 编译速度比pdfLaTeX慢一些
- 个别宏包兼容性稍差,但大部分现在都支持了
LuaLaTeX
和XeLaTeX类似,也支持Unicode,底层基于Lua脚本引擎
优点:
- 同样支持系统字体
- 更灵活:可以用Lua脚本扩展TeX功能(比如处理复杂语言、图形、自动化排版)
缺点:
- 和XeLaTeX一样,速度比pdfLaTeX慢
- Lua机制比较复杂,对新手不太友好
LaTeX文档的基本结构
每一个LaTeX文档都由两部分组成:导言区和正文区
我们先给出一个完整的示例,看不懂没关系,先尝尝咸淡:
% --- 导言区开始 ---
\documentclass[12pt, a4paper]{ctexart} % 定义文档类型和基本设置
\usepackage{amsmath} % 加载宏包,以使用更多功能
\usepackage{graphicx}
\usepackage[colorlinks, citecolor=blue]{hyperref}
\title{第一个LaTeX 文档} % 设置标题
\author{作者名字}
\date{\today} % 日期, \today 会自动生成当天日期
% --- 导言区结束 ---
% --- 正文区开始 ---
\begin{document}
\maketitle % 显示标题、作者和日期
正文内容
\end{document}
% --- 正文区结束 ---
编译结果:
导言区
这是从\documentclass开始到\begin{document}之前的部分,我们在这里进行全局设置
文档类型 (\documentclass)
此命令用于定义文档的全局类型,例如是文章、书籍还是幻灯片
它必须 .tex文件中的第一个命令
格式
\documentclass[参数]{文档类型名称}
{类型名称} (必填)
这是文档的根本类型,决定了是否有章节、标题页的默认格式等
| 类型 | 中文版本 | 适用场景 | 特点 |
|---|---|---|---|
article |
ctexart |
短小文档 如期刊文章、课程作业、报告 |
无\chapter命令,章节较简单,适合短篇文档 |
report |
ctexrep |
中长篇文档 如毕业论文、研究报告 |
有\chapter命令,章节层次更丰富 |
book |
ctexbook |
书籍排版 | 支持书籍格式,如封面、目录、章节分页 |
beamer |
ctexbeamer |
幻灯片/演示文稿 | 专门用于制作演示文稿,支持动画、主题切换 |
[参数] (选填)
这些参数用于对文档的基础样式进行微调,多个参数之间用逗号隔开
-
字体大小
控制正文文字大小,也会影响章节标题、页眉页脚等
选项 含义 10pt正文字体 10 磅(默认) 11pt正文字体 11 磅 12pt正文字体 12 磅 -
纸张大小
决定页面尺寸和默认页边距
选项 尺寸 a4paper210mm × 297mm letterpaper8.5in × 11in b5paper176mm × 250mm a5paper148mm × 210mm -
排版方式
决定奇偶页布局差异,主要用于打印装订
选项 含义 oneside单面排版,左右页边距相同(默认 article)twoside双面排版,奇偶页左右页边距不同(默认 book) -
分栏
控制正文是单栏还是多栏
选项 含义 onecolumn单栏正文(默认) twocolumn双栏正文,适合学术论文或期刊 -
其他常用选项
选项 含义 openright新章从奇数页开始(适合 book)openany新章可从任意页开始 titlepage文档使用单独的标题页 draft显示超长行标记,图形不渲染(调试用) final正式排版(默认)
示例
\documentclass[12pt, a4paper, oneside]{ctexart}
这行代码定义了整个文档的基础框架:
-
{ctexart}将文档类型设置为中文文章,这意味着我们可以直接输入中文,并使用
\section、\subsection等命令 -
[12pt, a4paper, oneside]12pt:将文档的默认字体大小设置为12磅a4paper:将排版的纸张设置为A4尺寸oneside:采用单面排版模式
即:该命令声明了我们要创建的是一份字体大小为12pt、在 A4 纸上进行单面排版的中文文章
宏包 (\usepackage)
宏包(Package)可以理解为 LaTeX 的“插件”或“扩展库”
通过加载宏包,我们可以使用更多强大的命令和功能,例如插入图片、设置页边距、生成带链接的目录等
宏包通常在导言区(\documentclass 之后,\begin{document} 之前)加载
格式
\usepackage[可选参数]{宏包名称}
{宏包名称} (必填)
这是宏包的核心标识,用于指定需要加载的宏包
可以一次性加载多个无参数的宏包,用逗号隔开,例如\usepackage{amsmath, graphicx}
常用宏包:
| 宏包名称 | 主要功能与用途 |
|---|---|
| ctex | 中文支持的核心宏包,当使用ctexart等文档类型时,该宏包会被自动加载 |
| amsmath | 美国数学学会(AMS)宏包,提供更丰富的数学公式环境,如多行公式、矩阵等 |
| amssymb | AMS宏包,提供更多数学符号,如 \mathbb (黑板粗体)、\checkmark (对勾) |
| amsthm | AMS宏包,用于定义专业的定理、引理、定义等环境 |
| graphicx | 提供\includegraphics 命令,是插入图片(如 JPG, PNG, PDF)的必备宏包 |
| geometry | 便捷地设置页面布局,如页边距、纸张方向、页眉页脚距离等 |
| hyperref | 自动为文档内的引用(目录、公式、参考文献)创建可点击的PDF超链接,极大提升电子文档的交互性 |
| xcolor | 提供颜色支持,可以定义和使用颜色来修饰文本、表格背景等 |
| fancyhdr | 用于自定义页眉和页脚,可以添加章节名、页码、校徽等复杂信息 |
| listings | 用于插入带语法高亮的代码块,是撰写技术文档的利器 |
[可选参数] (选填)
用于对所加载的宏包进行配置。每个宏包都有一套独立的参数
注意:在LaTeX中,当一个选项是布尔型(true/false)时,只写选项名就默认等价于true
这里分别介绍几个常用宏包的参数
-
geometry这个宏包专门用于精细控制页面尺寸和边距
选项 功能说明 left=2.5cm、right=2.5cm分别设置左、右页边距 top=3cm、bottom=3cm分别设置上、下页边距 margin=1in将上、下、左、右所有页边距统一设置为1英寸 a4paper、b5paper设定纸张尺寸 landscape设置为横向排版(默认为 portrait纵向)showframe在页面上显示布局的辅助线框,方便调试页边距设置 -
hyperref这个宏包用于生成PDF的超链接和书签
选项 功能说明 colorlinks=true使用彩色文本作为链接,而非默认的带边框样式。强烈推荐设置 linkcolor=black设置内部链接(如目录、章节引用 \ref)的颜色citecolor=blue设置文献引用( \cite)的链接颜色urlcolor=cyan设置网址链接( \url)的颜色bookmarks=true在PDF阅读器侧边栏中生成可点击的书签 pdfstartview=FitH设置PDF打开时的默认视图为“适合页宽” -
xcolor这个宏包用于在文档中使用颜色
选项 功能说明 dvipsnames加载dvips预定义的68种颜色名称(如 Goldenrod)svgnames加载SVG预定义的151种颜色名称(如 AliceBlue)x11names加载X11预定义的317种颜色名称(如 LightSteelBlue)加载这些选项后,就可以直接通过名称使用颜色,例如
\textcolor{Goldenrod}{这是金麒麟色的文字} -
ctex当手动加载
\usepackage{ctex}时,可以填选选项 功能说明 UTF8明确指定源文件编码为UTF-8(现在通常是默认设置,无需手动指定) fontset=adobe设置中文字体集为Adobe字体(需要系统安装相应字体) fontset=windows在Windows系统下,设置中文字体集为系统自带字体(如宋体、黑体等)
示例
\usepackage{amsmath, amssymb}
\usepackage[a4paper, margin=2.5cm, showframe]{geometry}
\usepackage{graphicx}
\usepackage[colorlinks, citecolor=blue, linkcolor=black, bookmarks=true]{hyperref}
这段代码在导言区加载并配置了一系列常用的宏包:
-
\usepackage{amsmath, amssymb}通过逗号分隔的方式,同时加载了
amsmath和amssymb两个宏包他们为文档提供了强大的数学公式排版能力和丰富的数学符号支持
-
\usepackage[a4paper, margin=2.5cm, showframe]{geometry}加载了
geometry宏包,并传入了三个参数:a4paper: 确保页面尺寸是基于 A4 纸张计算的margin=2.5cm: 将页面的上、下、左、右所有页边距统一设置为 2.5 厘米showframe: 在生成的PDF上绘制辅助线框,方便我们检查页边距设置是否符合预期。
-
\usepackage{graphicx}加载了
graphicx宏包这一行代码本身不产生任何效果,但它使得我们可以在正文部分使用
\includegraphics命令来插入图片 -
\usepackage[...]{hyperref}加载了
hyperref宏包,并通过一系列参数对其进行了详细配置:colorlinks: 使链接以彩色文本显示citecolor=blue: 文献引用链接为蓝色linkcolor=black: 内部跳转链接(如目录)为黑色bookmarks=true: 会在生成的 PDF 文件中创建书签,方便快速导航
正文区
在导言区完成文档的全局设置后,正文区(document环境)用于撰写具体内容。
正文环境:document
所有希望在最终PDF中显示的内容,都必须放在\begin{document}和\end{document}之间
\begin{document}和\end{document}中的document 并不是一个可选参数或用户自定义的名字,它是 LaTeX 固定的环境名称,用于标识正文的开始,不是可选的,不能改动!
| 命令 / 符号 | 功能说明 |
|---|---|
\begin{document} |
正文开始标志 必须在导言区(包括所有 \usepackage命令)之后使用 |
\end{document} |
正文结束标志 编译器会忽略此命令之后的所有内容 |
注释
单行注释
使用符号%,从%开始到行尾的内容都会被忽略,不会出现在最终PDF里
- 注释的一行是源代码的一行,而不是LaTeX文章的一行
- 使用快捷键
ctrl+/能快速注释选中行
多行注释
LaTeX没有内置的多行注释符号,如果想要多行注释,最简单的方式是连续多行都写%
也可以使用下面的方式:
\iffalse
这几行内容都会被忽略
即使有多行
LaTeX 也不会处理
\fi
\iffalse表示“如果条件为假”,LaTeX会跳过它和\fi 之间的内容,相当于把里面的东西忽略掉
示例
\begin{document}
% 作者的所有可见内容、命令和环境都写在这里。
% 这一行是注释,不会显示在PDF中
...
\end{document}
文档内容排版
在设置好文档的框架(导言区)后,我们就可以开始在正文环境中填充实际内容了
这部分将介绍如何组织文本结构、设置样式以及创建列表
段落、间距与分页
LaTeX会自动处理文本的排版,但我们有时也需要手动控制换行和分页
命令操作
注意:
- 在行中的命令最好左右加上空格
- 在行间的命令最好上下隔开空行
| 操作 | 实现方式 | 说明 |
|---|---|---|
| 开始新段落 | 在代码中留出一个或多个空行 | 这新段落会自动应用首行缩进 |
| 强制换行 | \\ 或 \newline |
在当前位置中断该行内容 从下一行开始它不属于新段落,因此没有首行缩进 |
| 禁止换行 | ~ |
这是非换行空格 放在两个词之间以确保它们不会因换行而分开 比如 Dr.~Smith |
| 制造水平空格 | \quad |
产生一个当前字号的全角宽度 (1em) 的空格 |
\qquad |
产生当前字号的两倍全角宽度的空格 | |
\hspace{长度} |
产生一个指定长度的水平空格,如\hspace{1cm} |
|
\hfill |
弹性空格,会自动填充所在行所有可用的水平空间 可用于实现左右对齐 |
|
| 制造垂直空行 | \vspace{长度} |
产生一个指定高度的垂直空白,如\vspace{5mm} |
\smallskip, \medskip, \bigskip |
三个预设的、有弹性的垂直空白,尺寸由小到大 | |
| 强制分页 | \newpage |
立即结束当前页面,将后续内容移至新的一页 |
| 局部取消缩进 | \noindent |
段落开头不缩进 注意要和正文之间有空格/换行符 |
| 全局取消缩进 | \setlength{\parindent}{0pt} |
- |
| 局部进行缩进 | \hspace*{2em}段落\\ |
和上一条命令结合可以做到指定行才缩进 |
| 左对齐 | \begin{flushleft}...\end{flushleft} |
- |
| 居中对齐 | \begin{center}...\end{center} |
- |
| 右对齐 | \begin{flushright}...\end{flushright} |
- |
示例
这是第一段的文字,一直写下去直到行尾自动换行
这是第二段的文字,因为它和第一段之间有一个空行,所以它会首行缩进
现在要强制换行了\\这一句紧接着上一句,但是没有缩进
\begin{center}
这是一段居中的文字
\end{center}
\noindent 这一行虽然换行了,却没有首行缩进
\noindent 开头 \quad 我远离了前面的字 \qquad 我更远离了 \hspace{2cm} 还是我比较远一点
左边内容→弹性 \hfill 弹性←右边内容
小空行:
\smallskip
中空行:
\medskip
大空行:
\bigskip
自定义空行:
\vspace{2cm}
到这里是两厘米空行
要另起一页了
\newpage
这是新的一页
编译结果:
文本样式
LaTeX 提供了一系列命令来改变局部文本的字体样式
命令
| 命令 | 效果 | 英文说明 |
|---|---|---|
\textbf{...} |
加粗文本 | Bold Face |
\textit{...} |
意大利斜体 | Italic |
\textsl{...} |
倾斜文本 | Slanted |
\textsc{...} |
小型大写字母 | Small Caps |
\textup{...} |
直立体 | Upright (用于在斜体环境中恢复正常字体) |
\underline{...} |
下划线 | Underline |
\texttt{...} |
等宽字体/打字机体 | typewriter |
\textnormal{...} |
正常文本 | 恢复到当前文档的默认字体 |
他们之间可以互相嵌套,比如:\underline{\textbf{\textit{示例文本}}}
示例
\noindent
这是一段普通的文本,其中包含 \textbf{加粗} 和 \textit{斜体}\\
这是正常字母:ABC\\
这是小型大写字母\textsc{abc}\\
请注意 \textsl{倾斜} 与 \textit{意大利斜体} 的细微差别\\
\underline{\textbf{\textit{既要下划线又要斜体还要加粗就这样}}}\\
特殊字符
在 LaTeX 中,许多键盘上的符号被用作特殊命令,因此不能直接输入。这一节将介绍如何正确地输入这些特殊字符,以及其他一些常用的排版符号。
英文引号
英文的弯引号‘ ’和“ ”与键盘上直接打出的直引号'和"是不同的
在 LaTeX 中,输入正确的弯引号需要使用特定的按键
| 功能 | 输入方式 | 渲染效果 |
|---|---|---|
| 英文单引号 (左) | ` (反单引号) | ‘ |
| 英文单引号 (右) | ’ (单引号) | ’ |
| 英文双引号 (左) | `` (两个反单引号) | “ |
| 英文双引号 (右) | ’’ (两个单引号) | ” |
保留字符
以下字符在LaTeX中有特殊含义,因此不能直接在文本中输入
要显示它们本身,必须在前面加上反斜杠 \ 来进行转义
| 符号 | 输入命令 | 说明 |
|---|---|---|
| # | \# |
宏定义参数符号 |
| $ | \$ |
数学模式切换符号 |
| % | \% |
注释符号 |
| & | \& |
对齐符号(用于表格、矩阵等) |
| _ | \_ |
下标符号(数学模式) |
| { | \{ |
命令参数或分组的开始 |
| } | \} |
命令参数或分组的结束 |
| ^ | \^{} |
上标符号(数学模式) |
| ~ | \~{} |
非换行空格或字母重音 |
| \ | \textbackslash |
命令引导符,也就是反斜杠 |
常见货币与版权符号
| 符号 | 输入命令 | 备注 |
|---|---|---|
| € | \texteuro |
需要 textcomp 宏包 |
| £ | \pounds |
无需特殊宏包 |
| ¥ | \textyen |
需要 textcomp 宏包 (在 ctex 环境下有时可直接输入) |
| © | \copyright |
版权符号 |
| ® | \textregistered |
注册商标符号 |
| ™ | \texttrademark |
商标符号 |
| ° | \textdegree |
度数符号 (文本模式) |
破折号与连字号
| 类型 | 输入 | 渲染效果 | 用途 |
|---|---|---|---|
| 连字号 (Hyphen) | - (一个 -) |
- | 用于连接复合词,如state-of-the-art。 |
| En 短破折号 (En-dash) | -- (两个 -) |
– | 用于表示数值、日期范围,如pages 10–20 |
| Em 长破折号 (Em-dash) | --- (三个 -) |
— | 用于分隔句子——功能类似中文的破折号 |
URL和文件路径
网址和文件路径中经常包含_、%、&等特殊字符,直接输入会导致编译错误
处理这个问题的最佳方法是使用url或hyperref宏包提供的\url{}命令,还可以生成可点击的链接
| 功能 | 命令 | 示例与说明 |
|---|---|---|
| 网址/路径 | \url{...} |
\url{https://www.example.com/test_path?q=query%20space} • 自动处理特殊字符 • 允许在合适的位置断行 |
字母重音与变音符号
在输入一些非英语单词(如法语、德语)时,需要为字母添加重音符号
虽然现代的XeLaTeX编译器通常支持直接输入这些字符,但使用命令还是好一些
| 效果 | 命令 |
|---|---|
| à | \`a |
标题、作者与日期
这些信息构成了文档的“标题块”,通常显示在文档的最开始
它们在导言区被定义,然后在正文区通过一个命令显示出来
命令详解
| 命令 | 作用 | 使用区域 |
|---|---|---|
\title{文档标题} |
定义文档的主标题 | 导言区 |
\author{作者姓名} |
定义文档的作者 | 导言区 |
\date{日期} |
定义文档的日期 可留空 \date{}不显示日期,或使用\today自动生成当天日期 |
导言区 |
\maketitle |
将以上三个命令定义的信息生成并显示在文档中 | 正文区 |
\title{...}、\author{...}、\date{...}这三个命令在\begin{document}之前被调用,它们只是将内容“暂存”起来,并不会直接显示任何东西
进入\begin{document}环境后,\maketitle命令被调用,它会读取之前暂存的标题、作者和日期信息,并按照ctexart文档类型预设的、规范的格式将它们排版输出
示例
\documentclass[12pt]{ctexart}
\title{噢耶,构构的文档}
\author{张顺三}
\date{\today}
\begin{document}
\maketitle
文档的正文
\end{document}
编译结果:
章节与目录
对于结构化的长文档,章节是必不可少的
LaTeX通过简单的命令即可创建带自动编号的章节,并基于这些章节信息自动生成目录
命令详解
| 命令 | 层级 | 适用文档类型 |
|---|---|---|
\chapter{章标题} |
章 | book, report |
\section{节标题} |
节(一级标题) | article, report, book |
\subsection{小节标题} |
小节(二级标题) | article, report, book |
\subsubsection{小小节标题} |
小小节(三级标题) LaTeX默认只有三级标题,到此为止 |
article, report, book |
\tableofcontents |
- | 所有 |
\tableofcontents命令会在其所在位置插入一个完整的目录
LaTeX会自动扫描全文的章节命令来生成此目录
在Overleaf中,目录的更新是自动的;在本地环境中,有时需要编译两次才能正确生成
示例
\documentclass{ctexart}
\title{噢耶,构构的文档}
\author{张顺三}
\date{\today}
\begin{document}
\maketitle
\tableofcontents
\section{引言}
第一部分的正文内容
\subsection{研究背景}
第一部分第一节的正文内容
\subsubsection{地点调研}
第一部分第一节第一点的正文内容
\section{实验方法}
第二部分的正文内容
\end{document}
编译结果:
摘要与关键词
摘要(Abstract)是学术文章开头不可或缺的部分,它简要概括了文章的核心内容
在article和ctexart等文档类型中,LaTeX提供了专门的abstract环境来排版摘要
环境与命令
| 环境 / 命令 | 功能说明 |
|---|---|
\begin{abstract}...\end{abstract} |
摘要环境 放置在此环境中的文本会被自动格式化为摘要样式(通常会带有“摘要”标题,并采用稍窄的页边距) |
\textbf{关键词:} |
关键词并没有标准的独立命令,通常的做法是在摘要内容的末尾,手动换行并使用粗体命令来添加关键词列表 |
示例
\documentclass{ctexart}
\author{笔者}
\title{摘要的示例}
\begin{document}
\maketitle % 先显示标题
\begin{abstract}
\noindent 本文旨在提供一个关于如何在 LaTeX 中创建摘要和关键词的完整示例,通过使用 \texttt{abstract} 环境,我们可以轻松地生成符合学术规范的摘要部分
\vspace{1ex} % 在摘要和关键词之间增加一点垂直距离
\noindent\textbf{关键词:} LaTeX;摘要;关键词;学术写作
\end{abstract}
\section{引言}
正文内容
\end{document}
编译结果:
\begin{abstract}...\end{abstract}环境会自动在文档标题下方生成一个居中的摘要标题,并将环境内的文本以特定格式进行排版
在摘要正文结束后,我们使用\vspace{1ex} 增加了一个小间距,然后用\noindent取消了接下来的行缩进,并通过\textbf{关键词:} 创建了加粗的关键词标题
列表环境
列表是组织和呈现条目式信息的有效方式
LaTeX提供了多种列表环境,它们都以\begin{...}开始,以\end{...}结束
列表中的每个项目都由\item命令开始
环境详解
| 环境名称 | 列表类型 | 特点 |
|---|---|---|
itemize |
无序列表 | 各项默认使用•(实心圆点)作为项目符号 |
enumerate |
有序列表 | 各项自动编号,默认使用1.,2.,3. … 作为项目符号 |
description |
描述列表 | 各项使用\item[标签]自定义标签,标签会加粗显示,适合术语解释 |
任何列表环境都可以嵌套在另一个列表的\item中,形成多级列表
示例
\section{水果分类}
\begin{description}
\item[常见水果(描述列表)] 这是一些常见的水果:
\begin{enumerate}
\item 苹果(有序列表)
\item 香蕉
\end{enumerate}
\item[不常见水果(描述列表)] 这是一些不常见的水果:
\begin{itemize}
\item 榴莲(无序列表)
\item 蛇皮果
\end{itemize}
\end{description}
编译结果:
最外层是一个description列表,用\item[常见水果]和\item[不常见水果]创建了两个带自定义粗体标签的条目
在常见水果条目内部,嵌套了一个enumerate环境,创建了带自动编号1.和2.的有序列表
在不常见水果条目内部,嵌套了一个itemize环境,创建了带•符号的无序列表
脚注
脚注用于在页面底部对正文内容进行补充说明、注释或提供引文来源
LaTeX 提供了完善的自动化支持,可以自动编号和定位
命令
| 命令 | 作用与说明 |
|---|---|
\footnote{脚注内容} |
它会在命令所在的位置插入一个上标数字, 并将花括号 {}中的脚注内容自动放置在当前页面的底部 |
\footnotemark[编号] |
只生成上标数字标记,但不生成页面底部的脚注文本 用于 \footnote命令无法正常工作的特殊环境编号可以省略,也可以加上来指定脚注 |
\footnotetext[编号]{脚注内容} |
只生成页面底部的脚注文本,不生成上标标记 通常与 \footnotemark配对使用编号可以省略,省略时自动递增 |
编号规则
默认编号规则
使用\footnote{}:
LaTeX会自动给每个脚注分配连续编号(从 1 开始),编号会根据出现顺序递增
第一条脚注\footnote{内容 A}
第二条脚注\footnote{内容 B}
使用\footnotemark + \footnotetext:
如果不指定编号,\footnotemark会自动使用下一个可用编号,对应的\footnotetext默认使用同一个编号
文字\footnotemark % 自动分配编号 1
\footnotetext{脚注内容} % 编号 1
下一个脚注会自动编号2:
字1\footnotemark
\footnotetext{脚注内容1}
字2\footnotemark
\footnotetext{脚注内容2}
一定要在每个标记后紧跟内容(也就是mark+text成对出现),不然footnotetext无法识别新的编号:
字1\footnotemark
字2\footnotemark
\footnotetext{脚注内容1}
\footnotetext{脚注内容2}
\footnotemark使用时,会让当前页脚计数器footnote的值加1
当我们连续两次使用\footnotemark但还没有用\footnotetext,LaTeX会把两次标记都绑定到当前计数器值,因此两个标记都显示为2
手动指定编号
可以在方括号[]里指定编号,编号不会按顺序递增,而是使用我们指定的数字
第一次引用\footnotemark[1]
第二次引用\footnotemark[5]
\footnotetext[1]{脚注内容1}
\footnotetext[5]{脚注内容5}
多次引用同一脚注
第一次引用\footnotemark[1],第二次引用同一脚注\footnotemark[1]
\footnotetext[1]{脚注内容}
特别注意
\footnotemark不增加编号计数,除非与\footnotetext配合
\footnote{}会同时生成标记和内容,计数自动递增
手动编号要小心,避免与自动编号冲突
示例1:常规用法
\LaTeX \footnote{发音为 /`laːtɛx/} 是一种高质量的排版系统
这个系统基于 TeX\footnote{TeX 是排版引擎,而 \LaTeX 是基于 TeX 的宏包}
编译结果:
这里使用的\LaTeX是一个比较好玩的命令,会显示LaTeX的logo
示例2:在表格等特殊环境中使用
在tabular环境中,直接使用\footnote 会出错,此时需要\footnotemark和\footnotetext 的组合
表格在后面会讲到:创建表格
\begin{table}[h]
\centering
\caption{在表格中使用脚注}
\begin{tabular}{|l|c|}
\hline
项目 & 预测数值\footnotemark[1] \\
拨款博丽神社 & 999999999\footnotemark[2] \\
\hline
\end{tabular}
\end{table}
\footnotetext[1]{此数值为初步估算}
\footnotetext[2]{此数值为完全虚构}
编译结果:
插入图片
在 LaTeX 中插入图片通常分为三步:
- 加载宏包
- 上传图片
- 使用
figure环境和\includegraphics命令
图片通常被放置在浮动体(figure)环境中,这允许 LaTeX 自动寻找页面上最合适的位置放置图片,避免产生难看的大片空白
准备工作
加载宏包
在导言区必须导入graphicx包:
\usepackage{graphicx}
上传图片
在Overleaf的左侧文件列表中,点击 “Upload” 按钮,上传我们的图片文件
请确保图片文件与.tex文件在同一目录下或在子目录中(此时引用需写明路径,如images/logo.png)
figure环境
这是包裹图片及其相关信息(如标题)的容器,下面我们一步步解析构成figure环境的各个命令
\begin{figure}[位置建议符]
**这个命令标志着一个figure浮动环境的开始,注意b
方括号[]中的位置建议符是可选的,我们通过它向LaTeX建议我们希望图片出现的位置
常用的建议符有:
| 参数 | 英文含义 | 说明 | 常用组合示例 | 说明 |
|---|---|---|---|---|
h |
here | 尽可能把浮动体放在当前位置(代码所在位置附近) | [h] |
单独使用时可能不生效,因为LaTeX仍然会遵循排版规则 |
t |
top | 尝试把浮动体放在页面顶部 | [t] |
浮动体优先放在页面顶部 |
b |
bottom | 尝试把浮动体放在页面底部 | [b] |
浮动体优先放在页面底部 |
p |
page | 将浮动体放在一个只包含浮动体的专门页面 | [p] |
适合大量图表或大表格 |
! |
override | 忽略部分限制,强制LaTeX尽量遵守指定位置 | [!h] |
例如[!ht],让LaTeX尽量放在当前位置或顶部 |
H |
here absolutely | 强制浮动体出现在当前位置,不允许浮动(需float宏包) |
[H] |
完全固定位置,不浮动 |
我们可以将这些建议符组合使用,例如[htbp],这会告诉LaTeX:
优先尝试放在这里(h),如果不行就放在页顶(t),再不行就放在页底(b),最差的情况就单独放一页(p)
\centering
此命令会使其环境内的内容(在这里就是我们的图片)在页面上水平居中显示
它独占一行,不需要花括号
\includegraphics
这是实际插入图片文件的命令,通常放在figure环境内部
格式:
\includegraphics[可选参数]{图片文件名}
| 可选参数 | 功能说明 |
|---|---|
width=8cm |
指定图片的显示宽度为8厘米 |
width=0.5\textwidth |
指定图片的显示宽度为当前文本区域宽度的50% 这是一种更灵活、更推荐的方式,因为它会自动适应不同页面设置 |
height=6cm |
指定图片的显示高度 |
scale=0.5 |
将图片缩放至原始尺寸的50% |
angle=45 |
将图片逆时针旋转45度 |
\caption{图片标题}
这个命令会为我们的图片生成一个带自动编号的标题(例如"图1: 公司Logo")
LaTeX会自动管理编号,我们完全无需担心顺序问题,只需要在花括号{}中写入图片的描述即可
\label{标签名}
该命令为图片设置一个独一无二的标签,用于在正文中进行交叉引用,标签本身不会在文档中显示任何内容
为了便于管理,我们推荐使用fig:作为图片标签的前缀,也就是写成\label{fig:标签名}
设置好标签后,我们就可以在文中的任何地方使用\ref{fig:标签名}来引用这张图片的编号
\end{figure}
这个命令标志着figure环境的结束
示例
\documentclass{ctexart}
\usepackage{graphicx}
\begin{document}
\section{公司简介}
如图 \ref{fig:logo} 所示,这是我们公司的Logo,可爱捏
\begin{figure}[htbp]
\centering
\includegraphics[width=0.4\textwidth]{2.png}
\caption{公司 Logo}
\label{fig:logo}
\end{figure}
\end{document}
编译结果:
(确保1.png文件已上传至当前Overleaf项目中,注意文件路径)
-
\begin{figure}[htbp]开始一个图片浮动环境,并建议LaTeX将其放置在当前位置、页面顶部或底部
-
\centering命令
\includegraphics输出的图片将会在可用宽度内居中 -
\includegraphics[width=0.4\textwidth]{logo.png}{logo.png}: 指定要插入的图片文件[width=0.4\textwidth]: 将该图片的显示宽度设置为页面文本宽度的 40%
-
\caption{公司 Logo}在图片下方生成带编号的标题
-
\label{fig:logo}为该图赋予一个唯一的标签
fig:logo
在正文中,如图 \ref{fig:logo} 所示 这句话在编译后会自动变成 “如图 1 所示”,实现了自动引用
创建表格
与图片类似,表格通常被放置在一个叫table的浮动环境中,以便排版和添加标题
而表格的实际内容则由tabular环境构建
对于复杂表格,使用在线表格生成器(如 TablesGenerator.com )可以大大提高效率!
环境与命令
table环境
table环境是表格的浮动容器,其作用和用法与figure环境几乎完全相同,它允许LaTeX自动寻找最佳位置放置表格,其中\begin{table}[htbp],\centering,\caption{}和\label{}命令的用法也完全一致
为了区分,我们最好使用tab:作为表格标签的前缀,例如\label{tab:my-data}
tabular环境
它就类似图片的\includegraphics,是构建表格内容的主体,所有的文本、数字和分隔线都在这个环境中定义
一般也放在table环境中
\begin{tabular}{列格式定义}
这个命令标志着表格实际内容的开始
它有一个必须填写的参数{列格式定义},由一组特殊的字符构成,用于定义表格有多少列以及每一列的对齐方式
| 符号 | 含义 | 说明 |
|---|---|---|
l |
left | 定义一个左对齐的列 |
c |
center | 定义一个居中对齐的列 |
r |
right | 定义一个右对齐的列 |
例如,{l|c|r} 表示创建一个三列的表格,第一列左对齐,第二列居中,第三列右对齐,列与列之间用竖线隔开
内容和边框
在 tabular 环境内部,我们使用以下符号和命令来填充内容和绘制线条:
| 命令 | 作用/说明 |
|---|---|
& |
列分隔符,用于分隔同一行的不同列,如果一行有n列,则该行应有n-1个& |
\\ |
行结束符,结束当前行,后续内容将成为新的一行 |
\hline |
水平线命令,绘制贯穿表格所有列的完整水平线,通常放在一行的\\之后,分隔不同的行 |
\cline{i-j} |
局部水平线命令,从第i列左边开始,到第j列右边结束,可精细控制水平线的范围 |
示例
\documentclass{ctexart}
\begin{document}
\section{幻想乡智力表}
\begin{table}[htbp]
\centering
\caption{请输入文本}
\label{tab:table}
\begin{tabular}{|c|c|}
\hline
\textbf{妖精姓名} & \textbf{智商} \\
\hline
大妖精 & 1 \\
\hline
露娜 & 1 \\
\hline
琪露诺 & 9 \\
\cline{2-2}
& 4+5 \\
\hline
\end{tabular}
表格底下也能写字哈哈,到底能多长长长长长长长长长长呢
\end{table}
该表格的编号是:\ref{tab:table}
和图片一样,引用得到的都是编号
\end{document}
编译结果:
-
\begin{table}[htbp] ... \end{table}创建一个表格浮动体
-
\centering,\caption,\label分别使表格居中、添加标题和设置引用标签
tab:table -
\begin{tabular}{|c|c|}-
开始
tabular环境 -
{|c|c|}定义了表格的格式:最外层有竖线,共两列居中对齐(c),列之间都有竖线(|)
-
-
\hline在表格的顶部、标题行下方和底部绘制了完整的水平分割线
-
\textbf{妖精姓名} & \textbf{智商} \\这是表格的标题行,
&分隔了三列的内容,\\结束该行,这里还使用了\textbf命令对标题文字加粗 -
琪露诺 & 9 \\这是第三行数据
-
& 4+5 \\这是第四行数据,注意,因为姓名这一列的内容与上一行相同,所以第一个
&前留空即可 -
\cline{2-2}绘制了一条第2列的水平线
-
\ref{tab:table}引用表格的编号
数学公式
这是LaTeX最强大的功能,也是它在科技写作领域无可替代的原因
准备工作
在开始之前,确保我们在导言区已经加载了amsmath宏包,它是美国数学学会提供的数学公式扩展包
通常,我们还会一并加载amssymb(更多符号)和bm(公式加粗)
\usepackage{amsmath, amssymb, bm}
公式模式
LaTeX提供了多种将文本切换到“数学模式”的方式,主要分为三大类
- 行内
- 无编号行间
- 有编号行间
模式分类
| 模式类型 | 代码实现 | 特点 |
|---|---|---|
| 行内公式 | $...$ |
公式嵌入在普通文本行中 会为了适应行高而适当压缩公式的大小,例如分数会变小 |
| 无编号行间公式 | \[...\] |
公式会单独成行并居中显示 以标准、清晰的尺寸进行排版,但不带自动编号 |
| 有编号行间公式 | \begin{equation}...\end{equation} |
与\[...\]类似,但会自动在公式右侧添加一个带括号的编号可以使用 \label加上标签,文中使用\eqre引用其编号只能写一行公式,要多行必须结合 aligned等环境 |
示例
\documentclass{ctexart}
\usepackage{amsmath}
\begin{document}
\section{勾股定理}
\noindent 勾股定理是一个基本的几何定理,它说明在直角三角形中,两条直角边的平方和等于斜边的平方,即: $a^2 + b^2 = c^2$,这是一个行内公式\\
我们可以将这个关系式单独展示出来,使其更醒目:
\[ a^2 + b^2 = c^2 \]\\
为了方便在后文中引用,我们通常使用带编号的公式环境:
\begin{equation}
a^2 + b^2 = c^2
\label{eq:pythagoras}
\end{equation}\\
根据公式 \eqref{eq:pythagoras}(这个编号是引用的喔),我们可以进行后续的计算
\end{document}
编译结果:
-
$...$$符号使a^2 + b^2 = c^2以行内模式插入文本中 -
\[...\]\[和\]将公式在单独一行中居中显示 -
\begin{equation}...\end{equation}这个环境不仅使公式居中独立显示,还在右侧生成了编号
(1) -
\label{eq:pythagoras}我们在
equation环境内部为这个公式贴上了一个标签eq:pythagoras -
\eqref{eq:pythagoras}在正文中,我们使用
\eqref命令引用该标签,LaTeX自动将其替换为带括号的对应编号(1)
常用数学命令
数学符号和结构是通过反斜杠\开头的命令生成的,下面是几类最常用的命令
上下标、根号与撇(求导)
注意: 上下标内容如果多于一个字符,必须用花括号{}包裹!
| 功能 | 命令 | 示例 | 渲染效果 |
|---|---|---|---|
| 上标 | ^ |
x^{2y} |
$x^{2y}$ |
| 下标 | _ |
a_{ij} |
$a_{ij}$ |
| 多字符上/下标 | ^{...},_{...} |
x^{n+1}, a_{i,j} |
$x^{n+1}, a_{i,j}$ |
| 同时上下标 | _...^... |
x_i^2 |
$x_i^2$ |
| 局部上下标 | \limits |
\sum\limits_{i=1}^n |
$\sum\limits_{i=1}^n$ |
| 根号 | \sqrt{} |
\sqrt{1+x^2} |
$\sqrt{1+x^2}$ |
| n次方根 | \sqrt[n]{} |
\sqrt[4]{16} |
$\sqrt[4]{16}$ |
| 连续根号 | 多重 \sqrt |
\sqrt{\sqrt{x}} |
$\sqrt{\sqrt{x}}$ |
| 撇(导数) | ' |
f''(x) |
$f’’(x)$ |
| 高阶导数 | ^{(n)} |
f^{(3)}(x) |
$f^{(3)}(x)$ |
| 点记号(微分) | \dot{}, \ddot{} |
\dot{x}, \ddot{y} |
$\dot{x}, \ddot{y}$ |
分数
| 功能 | 命令 | 示例 | 渲染效果 |
|---|---|---|---|
| 标准分数 | \frac{}{} |
\frac{1}{x+y} |
$\frac{1}{x+y}$ |
| 行间分数 | \dfrac{}{} |
\dfrac{1}{x+y} |
$\dfrac{1}{x+y}$ |
| 行内小分数 | \tfrac{}{} |
\tfrac{1}{2} |
$\tfrac{1}{2}$ |
| 连续分数 | 嵌套 \frac |
\frac{1}{1+\frac{1}{x}} |
$\frac{1}{1+\frac{1}{x}}$ |
| 二项式系数 | \binom{n}{k} |
\binom{n}{k} |
$\binom{n}{k}$ |
| 组合公式 | \tbinom{n}{k} / \dbinom{n}{k} |
\dbinom{n}{k}, \tbinom{n}{k} |
$\dbinom{n}{k}, \tbinom{n}{k}$ |
常见运算符
| 功能 | 命令 | 示例 | 渲染效果 |
|---|---|---|---|
| 求和 | \sum |
\sum_{i=1}^{n} i |
$\sum_{i=1}^{n} i$ |
| 连乘 | \prod |
\prod_{i=1}^{n} x_i |
$\prod_{i=1}^{n} x_i$ |
| 积分 | \int |
\int_{a}^{b} f(x) \, dx |
$\int_{a}^{b} f(x) , dx$ |
| 二重/三重积分 | \iint, \iiint |
\iint_D f(x,y) \, dxdy |
$\iint_D f(x,y) , dxdy$ |
| 极限 | \lim |
\lim_{x \to \infty} \frac{1}{x} |
$\lim_{x \to \infty} \frac{1}{x}$ |
| 并集 | \bigcup |
\bigcup_{i=1}^{n} A_i |
$\bigcup_{i=1}^{n} A_i$ |
| 交集 | \bigcap |
\bigcap_{i=1}^{n} B_i |
$\bigcap_{i=1}^{n} B_i$ |
| 上确界 | \sup |
\sup_{x \in S} f(x) |
$\sup_{x \in S} f(x)$ |
| 下确界 | \inf |
\inf_{x \in S} f(x) |
$\inf_{x \in S} f(x)$ |
| 绝对值 | \lvert ... \rvert |
\lvert a \rvert |
$\lvert a \rvert$ |
| 范数 | \Vert ... \Vert |
\Vert v \Vert |
$\Vert v \Vert$ |
| 上取整 | \lceil ... \rceil |
\lceil 3.2 \rceil |
$\lceil 3.2 \rceil = 4$ |
| 下取整 | \lfloor ... \rfloor |
\lfloor 3.7 \rfloor |
$\lfloor 3.7 \rfloor = 3$ |
| 点乘 | \cdot |
\vec{a} \cdot \vec{b} |
$\vec{a} \cdot \vec{b}$ |
| 向量叉乘 | \times |
\vec{a} \times \vec{b} |
$\vec{a} \times \vec{b}$ |
省略符
| 横向省略号 | \dots |
1,2,\dots,n |
$1,2,\dots,n$ |
|---|---|---|---|
| 横向居中省略号 | \cdots |
a_1 + a_2 + \cdots + a_n |
$a_1 + a_2 + \cdots + a_n$ |
| 纵向省略符号 | \vdots |
矩阵元素省略 | $\vdots$ |
| 对角线省略符号 | \ddots |
矩阵元素省略 | $\ddots$ |
希腊字母
| 小写 | 命令 | 大写 | 命令 |
|---|---|---|---|
| α | \alpha |
Α | \Alpha(很少用) |
| β | \beta |
Β | \Beta(很少用) |
| γ | \gamma |
Γ | \Gamma |
| δ | \delta |
Δ | \Delta |
| ϵ | \epsilon |
Ε | \Epsilon(很少用) |
| ζ | \zeta |
Ζ | \Zeta(很少用) |
| η | \eta |
Η | \Eta(很少用) |
| θ | \theta |
Θ | \Theta |
| ι | \iota |
Ι | \Iota(很少用) |
| κ | \kappa |
Κ | \Kappa(很少用) |
| λ | \lambda |
Λ | \Lambda |
| μ | \mu |
Μ | \Mu(很少用) |
| ν | \nu |
Ν | \Nu(很少用) |
| ξ | \xi |
Ξ | \Xi |
| ο | o |
Ο | \Omicron(很少用) |
| π | \pi |
Π | \Pi |
| ρ | \rho |
Ρ | \Rho(很少用) |
| σ | \sigma |
Σ | \Sigma |
| τ | \tau |
Τ | \Tau(很少用) |
| υ | \upsilon |
Υ | \Upsilon |
| φ | \phi |
Φ | \Phi |
| χ | \chi |
Χ | \Chi(很少用) |
| ψ | \psi |
Ψ | \Psi |
| ω | \omega |
Ω | \Omega |
关系符
| 功能 | 命令 | 渲染效果 |
|---|---|---|
| 小于等于 | \leq |
$\leq$ |
| 大于等于 | \geq |
$\geq$ |
| 不等于 | \neq |
$\neq$ |
| 近似 | \approx |
$\approx$ |
| 恒等 | \equiv |
$\equiv$ |
| 相似 | \sim |
$\sim$ |
| 成比例 | \propto |
$\propto$ |
| 小于 | < |
$<$ |
| 大于 | > |
$>$ |
| 竖线(用于概率、集合等) | \mid |
$\mid$ |
逻辑符号
| 功能 | 命令 | 渲染效果 |
|---|---|---|
| 全称量词 | \forall |
$\forall$ |
| 存在量词 | \exists |
$\exists$ |
逻辑与集合符号
| 符号 | 命令 | 渲染效果 |
|---|---|---|
| 空集 | \emptyset |
$\emptyset$ |
| 集合元素 | \in |
$\in$ |
| 非集合元素 | \notin |
$\notin$ |
| 并集 | \cup |
$\cup$ |
| 交集 | \cap |
$\cap$ |
| 子集 | \subset |
$\subset$ |
| 真子集 | \subsetneq |
$\subsetneq$ |
括号
| 功能 | 命令 | 说明 |
|---|---|---|
| 固定大小 | ( ), [ ], \{ \} |
尺寸固定,不会随内容变化。输入 {} 需用 \ 转义 |
| 自动缩放 | \left(...\right) |
根据内容自动调整大小,必须成对使用 |
| 方括号缩放 | \left[...\right] |
自动缩放方括号 |
| 大括号缩放 | \left\{...\right\} |
自动缩放大括号 |
| 尖括号 | \langle ... \rangle |
常用于内积 |
| 双竖线符号 | \Vert |
双竖线,常用于范数或矩阵行列式 |
矩阵
在LaTeX中排版矩阵是一项核心功能,amsmath宏包为此提供了一系列功能强大且使用便捷的环境
这些环境可以自动处理元素的对齐和外层括号的样式
无论使用哪种矩阵环境,内部语法都是统一的:
- 使用
&分隔列,即分隔同一行中的元素 - 使用
\\来结束当前行,并开始新的一行
和表格很像吧
矩阵环境
amsmath提供了多种矩阵环境,它们唯一的区别在于最终呈现时外层使用的括号(分隔符)不同
| 环境名称 | 外层括号 | 常见用途 |
|---|---|---|
pmatrix |
( ) (圆括号) |
用于表示标准的矩阵 |
bmatrix |
[ ] (方括号) |
同样用于标准矩阵,在一些文献中更常见,也常用于增广矩阵 |
vmatrix |
` | |
Vmatrix |
‖ ‖ (双竖线) |
专门用于表示矩阵或向量的范数 |
matrix |
(无括号) | 只排列元素,不添加外层括号 当你需要使用特殊的括号(如 { })或根本不需要括号时使用 |
smallmatrix |
(无括号) | 用于在行内创建小型矩阵 例如$A = \begin{smallmatrix} 1 & 0 \ 0 & 1 \end{smallmatrix}$ |
矩阵中的省略号
| 命令 | 方向 | 用途 |
|---|---|---|
\cdots |
水平 (Horizontal) | 用于省略行中的元素 |
\vdots |
垂直 (Vertical) | 用于省略列中的元素 |
\ddots |
对角 (Diagonal) | 用于省略对角线上的元素 |
示例
\documentclass{ctexart}
\usepackage{amsmath}
\begin{document}
\section{矩阵示例}
一个 3x3 的矩阵 A 可以用 \texttt{pmatrix} 表示:
\[
A =
\begin{pmatrix}
1 & 2 & 3 \\
4 & 5 & 6 \\
7 & 8 & 9
\end{pmatrix}
\]
一个 2x2 的行列式可以用 \texttt{vmatrix} 表示:
\[
\det(B) =
\begin{vmatrix}
x & y \\
z & w
\end{vmatrix}
\]
一个 n 阶的单位矩阵 $I_n$ 可以用 \texttt{bmatrix} 和省略号清晰地表示:
\[
I_n =
\begin{bmatrix}
1 & 0 & \cdots & 0 \\
0 & 1 & \cdots & 0 \\
\vdots & \vdots & \ddots & \vdots \\
0 & 0 & \cdots & 1
\end{bmatrix}
\]
\end{document}
编译结果:
矩阵 A:
\begin{pmatrix}和\end{pmatrix}创建了一个外层为圆括号的矩阵环境1 & 2 & 3 \\定义了矩阵的第一行:1,2,3三个元素由&分隔,\\表示此行结束。后续行同理
行列式 det(B):
\begin{vmatrix}和\end{vmatrix}创建了一个外层为单竖线的环境,这正是行列式的标准数学符号
单位矩阵 I_n:
\begin{bmatrix}和\end{bmatrix}创建了一个外层为方括号的环境\cdots被用来表示第一行和第二行中间被省略的0\vdots被用来表示各列中间被省略的0\ddots巧妙地表示了从左上到右下的对角线上被省略的1- 通过这些省略号命令的组合,我们能够清晰地表达任意大小的通用矩阵
多行公式对齐
对于较长的公式推导或一组需要对齐的方程,必须将其拆分为多行以保证清晰可读
amsmath宏包为此提供了多种功能强大的环境,核心控制语法是:
- 使用
&标记对齐点 - 使用
\\换行
哦,还是表格的用法
环境详解
不同的环境主要区别在于编号方式和对齐能力。
| 环境名称 | 编号方式 | 核心特点与用途 |
|---|---|---|
aligned |
整体一个编号 | 本身不产生编号,提供对齐功能 必须嵌套在其他数学环境(如 equation, \[...\])中使用 |
split |
整体一个编号 | 和aligned几乎相同,但长公式换行时编号的位置在公式中间必须嵌套在其他数学环境(如 equation, \[...\])中使用 |
gather |
每行独立编号 | 用于将一组不需要对齐的公式堆叠在一起 每行都会居中并获得一个独立的编号 |
align |
每行独立编号, 可灵活对齐 |
允许像写一个两列的表格一样对齐公式(在&处对齐)每行默认都会获得一个编号 |
align* |
完全无编号 | 是align的无编号版本,功能完全相同,但所有行都不会产生编号 |
控制编号
在align / gather等逐行编号的环境中,如果不希望某一行显示编号,可以在该行的\\之前使用以下命令:
-
\notag -
\nonumber
示例1:aligned环境
\documentclass{ctexart}
\usepackage{amsmath}
\begin{document}
\section{公式推导}
二次展开式的推导过程如下:
\begin{equation}
\label{eq:expand}
\begin{aligned}
(a+b)^2 &= (a+b)(a+b) \\
&= a^2 + ab + ba + b^2 \\
&= a^2 + 2ab + b^2
\end{aligned}
\end{equation}
整个过程由公式 \eqref{eq:expand} 概括
\end{document}
编译结果:
-
\begin{equation}最外层是
equation环境,意味着内部的所有内容,无论有多少行,都将作为一个整体,共享一个编号 -
\begin{aligned}内部的
aligned环境是实际负责对齐工作的 -
&=每一行的
=前面都放置了对齐符&,使得三行公式的等号在垂直方向上对齐(实际是&被对齐了) -
\\在第一行和第二行的末尾用于换行
示例2:align环境
\documentclass{ctexart}
\usepackage{amsmath}
\begin{document}
\section{方程组}
我们有如下一组基本方程:
\begin{align}
a_1 x + b_1 y &= c_1 \label{eq:line1} \\
a_2 x + b_2 y &= c_2 \notag \\
E &= mc^2 \label{eq:emc2}
\end{align}
其中,方程 \eqref{eq:line1} 和 \eqref{eq:emc2} 是最重要的
\end{document}
编译结果:
-
\begin{align}这个环境会默认给每一行分配一个编号
-
&=&同样被放在=前面,使得三行公式的等号对齐 -
\label{eq:line1}我们可以在任意行后面添加
\label以引用这行的编号,而不是在整个环境中 -
\notag在第二行的
\\前,我们加入了\notag命令,阻止LaTeX为这一行生成编号
学术写作
定理类环境
在数理、计算机等学科的写作中,需要频繁使用“定理”、“引理”、“定义”等结构化论述
amsthm 宏包为此提供了标准化的解决方案。
定义新环境:\newtheorem
在使用定理环境前,必须先在导言区用\newtheorem命令进行定义它
\newtheorem{新环境名}[共享环境名]{显示标题}[编号层级]
常用用法:
| 语法 | 说明 |
|---|---|
\newtheorem{环境名}{显示标题} |
定义一个全新的、独立编号的环境 |
\newtheorem{环境名}{显示标题}[编号层级] |
使该环境的编号与某个层级关联 最常用的是 [section],表示编号为[章节号].[定理号],且每章重新从1开始 |
\newtheorem{新环境名}[共享环境名]{显示标题} |
使新环境与某个已定义的环境共享同一个编号序列 |
在正文中使用
| 用法 | 说明 |
|---|---|
\begin{环境名} ... \end{环境名} |
开始一个标准的定理环境 |
\begin{环境名}[自定义标题] ... \end{环境名} |
在方括号中添加的标题,会显示在编号后的括号里 |
\begin{proof} ... \end{proof} |
amsthm 提供的标准证明环境会自动以 证明.开头,并以一个 Q.E.D. 方块□结尾 |
示例
\documentclass{ctexart}
\usepackage{amsthm}
\newtheorem{theorem}{定理}[section] % 定理环境,编号与 section 关联
\newtheorem{lemma}[theorem]{引理} % 引理环境,与 theorem 共享编号
\newtheorem{corollary}[theorem]{推论} % 推论环境,与 theorem 共享编号
\newtheorem{definition}{定义} % 定义环境,独立编号
\begin{document}
\section{主要结果}
我们首先给出一个关键定义:
\begin{definition}
这个定义很关键
\end{definition}
然后是本节的核心定理:
\begin{theorem}[勾股定理] \label{thm:pythagoras}
在一个直角三角形中,两条直角边的平方和等于斜边的平方
\end{theorem}
\begin{proof}
证明过程略
\end{proof}
基于定理 \ref{thm:pythagoras},我们有一个直接的引理
\begin{lemma}
这是一个直接的引理
\end{lemma}
我们还有一个推论:
\begin{corollary}
这是一个推论
\end{corollary}
\end{document}
定义解释:
-
\newtheorem{theorem}{定理}[section]创建了
theorem环境,显示为“定理”,编号格式为[章节号].[定理号](如 1.1, 1.2 …) -
\newtheorem{lemma}[theorem]{引理}&\newtheorem{corollary}[theorem]{推论}创建了
lemma和corollary环境,它们和theorem使用同一个计数器 -
\newtheorem{definition}{定义}创建了
definition环境,它自己独立编号 (如 1, 2, 3 …)
使用解释:
- 第一个
definition显示为 “定义 1” theorem环境因为有[勾股定理],所以显示为 “定理 1.1 (勾股定理)”proof环境自动添加了 “证明.” 和结尾的□符号- 由于
lemma、corollary与theorem共享编号,所以接下来的lemma显示为 “引理 1.2”,corollary显示为“推论1.3”
交叉引用
在LaTeX的手稿修改过程中,章节和图表的编号随时可能变化,要是让我们手动更新这些编号,等死就可以了
好在LaTeX的交叉引用机制就很好解决了这个问题,我们之前也有提到过
其原理是:
- 为想要引用的、带编号的元素(章节、图片、表格、公式等)设置一个独一无二的标签(
\label) - 在需要引用的地方,通过这个标签来提取它对应的编号 (
\ref) 或页码 (\pageref)
核心命令
| 命令 | 作用与说明 |
|---|---|
\label{标签名} |
在一个带编号的元素后面设置一个看不见的标记 标签名在文档中必须是唯一的 |
\ref{标签名} |
在文本中插入该标签对应的元素编号 例如,如果 \label{fig:flow}跟着图2的标题,那么\ref{fig:flow}就会显示为2 |
\eqref{标签名} |
amsmath宏包提供的\ref变体,专用于引用公式它会自动在编号两侧加上括号,例如 (2) |
\pageref{标签名} |
在文本中插入该标签所在的页码 |
推荐的标签规范
为了避免标签名混乱和冲突,强烈推荐使用带前缀的命名方式:
| 元素类型 | 推荐前缀 | 示例 |
|---|---|---|
| 章 (Chapter) | ch: |
\label{ch:background} |
| 节 (Section) | sec: |
\label{sec:methodology} |
| 图片 (Figure) | fig: |
\label{fig:results_chart} |
| 表格 (Table) | tab: |
\label{tab:comparison} |
| 公式 (Equation) | eq: |
\label{eq:main_theorem} |
| 定理 (Theorem) | thm: |
\label{thm:pythagoras} |
示例
\documentclass{ctexart}
\usepackage{amsmath}
\usepackage{graphicx}
\begin{document}
\section{随便写写} \label{sec:intro}
本文介绍一下交叉引用
\begin{equation}
E = mc^2 \label{eq:emc}
\end{equation}
\section{方法}
在章节 \ref{sec:intro} 中,我们已经提出了核心思想。图 \ref{fig:placeholder} +1=2
公式 \eqref{eq:emc}它位于第 \pageref{eq:emc} 页。
\begin{figure}[h]
\centering
\includegraphics[width=0.4\textwidth]{2.png}
\caption{老图}
\label{fig:placeholder}
\end{figure}
\end{document}
编译结果:
定义标签:
- 在
\section{引言}后面,我们用\label{sec:intro}将其标记 - 在
equation环境中,我们用\label{eq:emc}标记了公式 - 在
figure环境的\caption之后,我们用\label{fig:placeholder}标记了图片
引用标签:
章节 \ref{sec:intro}在编译后会显示为 “章节 1”图 \ref{fig:placeholder}会显示为 “图 1”公式 \eqref{eq:emc}会显示为 “公式 (1)”第 \pageref{eq:emc} 页会显示为 “第 1 页”
如果我们在“随便写写”前再增加一个新的章节,那么原“随便写写”的编号会自动变为 2,而代码中所有 \ref{sec:intro}的地方,输出也会自动更新为2,无需任何手动修改
参考文献
BibTeX是LaTeX的标准参考文献管理系统,它将文献数据与排版样式彻底分离,实现了参考文献的完全自动化
工作流程:
- 创建一个
.bib数据库文件,存放所有文献信息 - 在
.tex文档的正文中,用\cite{}命令引用文献 - 在
.tex文档中指定引用的样式和.bib文件的位置 - LaTeX编译器会自动完成文献的排序、格式化和列表生成
工作流程详解
创建.bib数据库文件
在Overleaf左侧文件栏,点击New File新建文件,命名为.bib后缀
这是一个纯文本文件,用于存储文献条目
添加文献条目
我们可以从Google Scholar、知网或各种学术数据库中直接导出BibTeX格式的条目,然后粘贴到.bib文件中
这部分通常不用我们自己写,做个了解就行
条目格式:
@类型{引用密钥,
字段 = {值},
...
}
| 常用类型 | 说明 | 常用字段 | 说明 |
|---|---|---|---|
@article |
期刊文章 | author,title,year |
作者, 标题, 年份 |
@book |
书籍 | journal,volume,pages |
期刊名, 卷, 页码 |
@inproceedings |
会议论文集中的一篇 | publisher,address |
出版社, 地址 |
@phdthesis |
博士论文 | doi,url |
数字对象标识符, 网址 |
示例:
@article{einstein1905,
author = {Albert Einstein},
title = {Zur Elektrodynamik bewegter Körper},
journal = {Annalen der Physik},
year = {1905},
volume = {322},
pages = {891--921},
}
这里的einstein1905就是这篇文献独一无二的引用密钥
在主文档中设置并引用
| 命令 | 作用 | 放置位置 |
|---|---|---|
\bibliographystyle{样式} |
设置参考文献的格式 常用样式有: plain (按字母排序)unsrt (按引用顺序)alpha (作者+年份)abbrv (缩写) |
文档末尾,\bibliography之前 |
\cite{引用密钥} |
在正文中引用一篇或多篇文献 | 正文任意位置 |
\bibliography{文件名} |
指定.bib文件的位置,并在此处生成参考文献列表注意,文件名不用带 .bib后缀 |
文档末尾,\end{document}之前 |
示例
main.tex 文件:
\documentclass{ctexart}
\begin{document}
\section{引言}
引用文献1:\cite{张健2008精确的程序静态分析}
引用文献2:\cite{何伟渔1994语法的静态分析和动态分析}
\bibliographystyle{plain}
\bibliography{text}
\end{document}
references.bib 文件:
@phdthesis{张健2008精确的程序静态分析,
title={精确的程序静态分析},
author={张健 and others},
year={2008}
}
@article{何伟渔1994语法的静态分析和动态分析,
title={语法的静态分析和动态分析},
author={何伟渔},
journal={上海师范大学学报: 哲学社会科学版},
number={3},
pages={100--106},
year={1994}
}
编译结果:
-
在正文中,
\cite{何伟渔1994语法的静态分析和动态分析}和\cite{张健2008精确的程序静态分析}会被LaTeX替换为[1]和[2],因为plain样式是按作者字母排序的,这里我直接使用.bib文件的顺序,就是反着的 -
\bibliography{references}命令会扫描全文,发现只有这两篇文献被引用了 -
LaTeX会自动读取
references.bib文件中这两篇文献的数据,并根据plain样式,在文末生成一个格式化、排序好的参考文献列表,标题都不用写
和所有语言一样,只会语法是远远不够的,一定得多上手编排一些文章进行练习,积累经验!
下面是一些LaTeX练习网站,感兴趣可以看看:
TEXnique :互动式LaTeX编程游戏,需要在限定时间内用LaTeX代码实现它给出的公式
LaTeX.org练习与解答 :LaTeX.org的论坛中有用户分享的练习题和解答,内容涉及数学公式、文档结构等方面