Latex 语法快速入门教程
- LaTeX中最重要的是排版顺序,编译的时候会安装宏包加载顺序+命令顺序 来应用设置
- 实践是学会LaTeX应用最好的方法,语法用来做参考即可,学会使用AI辅助
\documentclass{...} % 1. 文档类型
% 2. 导言区加载宏包
\usepackage{...}
% 3. 页面布局 & 全局长度设置
\geometry{...} % 页边距
\setlength{\parindent}{...}
\setlength{\parskip}{...}
\onehalfspacing % 行距
% 4. 自定义命令/颜色/长度
\definecolor{mycolor}{RGB}{255,100,0}
% 5. 正文开始
\begin{document}
...
\end{document}1. 前置准备工作
一个 LaTeX 文档是一个以 .tex 结尾的文本文件,可以使用任意的文本编辑器编辑,比如 Notepad,但对于大多数人而言,使用一个合适的 LaTeX 编辑器会使得编辑的过程容易很多.在编辑的过程中你可以标记文档的结构.完成后你可以进行编译——这意味着将它转化为另一种格式的文档.它支持多种格式,但最常用的是 PDF 文档格式.
- 渲染引擎的选择 对于中文用户,推荐使用 XeTeX 以获得 Unicode 支持.
- 编辑器的选择
在 LaTeX 的世界里,宏包(Package) 的概念非常类似于编程语言中的 “库”(Library)、“插件”(Plugin) 或者 Python 中的 import。早期的 LaTeX 中,处理中文需要非常复杂的配置,而 ctex 的出现将这些复杂的底层逻辑封装了起来,让你可以像写英文文档一样自然地书写中文。
调用包就像是Python一样,先import然后自然就会启用包内的函数
2. 文档结构
在每一行的末尾加上%,就可以添加注释,编译后注释的内容不会出现在文档中
2.1 基本结构
- 一个最简单的LateX源代码文件
\documentclass[a4paper,12pt]{article}
\begin{document}
Hello world! Welcome to \LaTeX
\end{document}- 命令:以反斜线
\开头,其后的花括号内{}是命令的必选参数,方括号内[]是命令的可选参数 - 环境:由一对命令
\begin和\end组成。在 LaTeX 源代码中,document环境中的内容对应文档正文;此前的部分(从\documentclass行开始)称为导言区,可调用宏包或进行文档格式设置。
article 文档类型适合较短的文章,比如期刊文章和短篇报告.其他文档类型包括 report(适用于更长的多章节的文档,比如博士生论文),proc(会议论文集),book 和 beamer.方括号内的文本指定了一些选项——示例中它设置纸张大小为 A4,主要文字大小为 12pt.
\begin{document} 和 \end{document} 命令将你的文本内容包裹起来.任何在 \begin{document} 之前的文本都被视为前导命令,会影响整个文档.任何在 \end{document} 之后的文本都会被忽视.
空行不是必要的,但它可以让长的文档更易读.
- 一个最简单的中文LaTex源代码
\documentclass{article}
\usepackage{ctex} %中文支持
\begin{document}
你好,世界!欢迎来到\LaTeX!
\end{document}\usepackage{ctex}:调用 ctex 宏包,使得 LaTeX 支持 Unicode 字符,并可以方便地使用中文.- 注释:在 LaTeX 中,通过 % 进行注释;VSCode 或 Overleaf 中,注释或取消注释的快捷键为 Ctrl+ /
2.2 添加文档标题
\maketitle 命令可以给文档创建标题.你需要指定文档的标题.如果没有指定日期,就会使用现在的时间,作者是可选的.
写好标题之后输入制作命令即可
\title{My First Document}
\author{My Name}
\date{\today}
\maketitle\today是插入当前时间的命令.你也可以输入一个不同的时间,比如\date{November 2013}article文档的正文会紧跟着标题之后在同一页上排版.report会将标题置为单独的一页.
2.3 空格、换行与换页
- 空格:LaTeX 会忽略多余的空格,但一个空格会被保留.
- 换行:在 LaTeX 中,换行需要使用两个以上的空格,或者使用
\\命令. - 换页:使用
\newpage命令.
\documentclass{article}
\usepackage{ctex}
\begin{document}
\title{My First Document}
\author{My Name}
\date{\today}
\maketitle
滚滚常见东逝水,
浪花淘尽英雄。
是非成败转头空。\\
青山依旧在、几度夕阳红。
\newpage
下一页
\end{document}2.4 段落章节
如果需要的话,你可能想将你的文档分为章(Chatpers)、节(Sections)和小节(Subsections).下列分节命令适用于 article 类型的文档:
section{...}subsection{...}subsubsection{...}paragraph{...}subparagraph{...}
花括号内的文本表示章节的标题.对于 report 和 book 类型的文档还支持
\chapter{...}的命令.
\section{Introduction}
This is the introduction.
\section{Methods}
\subsection{Stage 1}
The first part of the methods.
\subsection{Stage 2}
The second part of the methods.
\section{Results}
Here are my results.2.5 创建标签和目录
你可以对任意章节命令创建标签,这样他们可以在文档的其他部分被引用.使用 \label{labelname} 对章节创建标签.然后输入 \ref{labelname} 或者 \pageref{labelname} 来引用对应的章节.
就像是
# 标签一样,quarto中可用,markdown中也有
在 \subsection{Stage 1} 下面另起一行,输入 \label{sec1}.→ 在 Results 章节输入 Referring to section \ref{sec1} on page \pageref{sec1}.
\section{Methods}
\subsection{Stage 1}
\label{sec1} The first part of the methods.
\subsection{Stage 2}
The second part of the methods.
\section{Results}
Here are my results. Referring to section \ref{sec1} on page \pageref{sec1}
\end{document}目录生成
使用\tableofcontents 生成目录,放在\begin{document}中表示目录在文章内容部分进行生成,会自动收集文档中的 章节、节、小节 信息,还可以控制目录的深度内容等
% 控制目录深度,只显示到subsection
\setcounter{tocdepth}{2} % 0: part, 1: section, 2: subsection, 3: subsubsection
% 控制章节编号深度
\setcounter{secnumdepth}{3} % 3: subsubsection也编号
\begin{document}
% 生成目录
\tableofcontents
\newpage
% 不编号章节,但加入目录
\section*{致谢} % * 表示不编号
\addcontentsline{toc}{section}{致谢} % 手动加入目录感谢所有帮助的人。
% 不编号章节,也不加入目录
\section*{附录}
附录内容,这一章不在目录中。
\end{document}2.6 特殊字符
部分字符在LaTeX中有特殊用途,直接输入这些字符得不到对应的符号
若要输入对应的符号,需要以反斜线的形式输入,类似编程语言里的”转义”符号
\#
\$
\%
\&
\{ \}
\_2.7 常用字体命令
在 LaTeX 中,字体的常用命令主要分为 字体样式(style)、字体族(family)、字体大小(size) 和 特殊强调(emphasis)
- 字体样式(最常用)
| 命令 | 效果 | 示例 | 显示 |
|---|---|---|---|
\textbf{} |
粗体 | \textbf{Hello} |
Hello |
\textit{} |
斜体 | \textit{Hello} |
Hello |
\textsl{} |
倾斜体 | \textsl{Hello} |
Hello |
\texttt{} |
打字机字体 | \texttt{Hello} |
Hello |
\underline{} |
下划线 | \underline{Hello} |
Hello |
\emph{} |
强调(通常为斜体) | \emph{Hello} |
Hello |
- 字体族(Font Family)
| 命令 | 类型 | 示例 |
|---|---|---|
\textrm{} |
Roman(衬线) | \textrm{Hello} |
\textsf{} |
Sans serif(无衬线) | \textsf{Hello} |
\texttt{} |
等宽字体 | \texttt{Hello} |
- 字体大小
| 命令 | 大小 |
|---|---|
\tiny |
极小 |
\scriptsize |
脚注 |
\footnotesize |
小 |
\small |
略小 |
\normalsize |
正常 |
\large |
大 |
\Large |
更大 |
\LARGE |
很大 |
\huge |
巨大 |
\Huge |
最大 |
要用{}包裹作用范围
- 字体组合
\textbf{\textit{粗体斜体}}
\textsf{\Large 无衬线大字体}
\underline{\textbf{带下划线粗体}}- 字体颜色和标注
在 LaTeX 中,如果想给 字体设置颜色或做标注(高亮),最常用的是 xcolor 宏包
- 现在导言区加载宏包
\usepackage{xcolor}
- 设置字体颜色
\textcolor{red}{红色文字},并且可以自定义颜色
# 先自定义颜色
\definecolor{mycolor}{RGB}{255,100,0}
# 然后调用
\textcolor{mycolor}{自定义颜色}- 文字背景高亮
\colorbox{yellow}{高亮文字}
2.8 段落格式和页面布局
- 行间距
| 命令 | 效果 |
|---|---|
\singlespacing |
单倍行距 |
\onehalfspacing |
1.5倍行距 |
\doublespacing |
双倍行距 |
也可以使用\linespread{1.3} 精准控制
局部行距:
\begin{spacing}{1.5}
这里是1.5倍行距
\end{spacing}- 段间距
LaTeX默认无段落间距,有首行缩进
在 LaTeX 中,并不是普通的数字或命令,而是一个 length 类型的寄存器(length register),它存储的是长度值.不能直接用 = 来赋值,因为 LaTeX 的长度有单位(pt、em、cm 等),需要使用专门的命令来处理
- LaTeX 把所有长度都用寄存器存起来,通过命令统一管理
- 这样修改不会破坏内部机制,保证兼容性
| 变量 | 含义 |
|---|---|
\parindent |
段首缩进 |
\parskip |
段落间距 |
\baselineskip |
行间距 |
\textwidth |
正文宽度 |
\textheight |
正文高度 |
\tabcolsep |
表格列间距 |
\arraystretch |
表格行距倍率 |
常见的单位
| 单位 | 含义 |
|---|---|
pt |
point |
mm |
毫米 |
cm |
厘米 |
in |
英寸 |
em |
当前字体 M 宽 |
ex |
当前字体 x 高 |
1em = 当前字体中大写字母 M 的宽度;1ex = 当前字体小写字母 x 的高度
| LaTeX | CSS |
|---|---|
\setlength{\parskip}{1em} |
p { margin-bottom: 1em; } |
\setlength{\parindent}{2em} |
p { text-indent: 2em; } |
\setlength{\textwidth}{16cm} |
body { width: 16cm; } |
- 页面布局
在 LaTeX 中,页面布局(Page Layout)就是控制文档纸张大小、正文宽度、高度、页边距、页眉页脚等整体排版尺寸的部分
常用宏包 geometry
- 可以先加载包 (
\usepackage{geometry}) - 然后通过命令来设置
\geometry{}
3. 图片排版
在 LaTeX 中,载入图片主要靠 graphicx 宏包。你可以控制图片大小、位置、旋转、居中、加标题等
- 宏包载入
在导言区加入\usepackage{graphicx}
- 插入图片基本语法
\includegraphics[选项]{文件名}
- 文件名 可以带或不带扩展名(LaTeX 会自动识别常用格式 .pdf、.png、.jpg)
| 选项 | 说明 |
|---|---|
width=... |
设置宽度,例如 0.5\textwidth 表示宽度为正文宽度的一半 |
height=... |
设置高度,例如 5cm |
scale=... |
按比例缩放,例如 scale=0.8 |
angle=... |
旋转角度,例如 angle=90 旋转90° |
- 图片放置的浮动机制
有点类似
Quarto中的block
\begin{figure}[h]
\centering
\includegraphics[width=0.5\textwidth]{images/example.png}
\caption{图片标题}
\label{fig:example}
\end{figure}- 图片不是强制在当前位置显示,而是 LaTeX 会根据页面布局、文字段落自动调整位置
- [h]、[t]、[b] 参数就是控制浮动位置
\caption{}给图片加标题,LaTeX 自动编号 “图 1”、“图 2”\label{}+\ref{}可以在正文中引用图片编号
| 特性 | Markdown | LaTeX (figure) |
|---|---|---|
| 插入方式 |  |
\begin{figure}...\end{figure} |
| 浮动 | ❌ 图片固定位置 | ✅ LaTeX 自动浮动 |
| 自动编号 | ❌ | ✅ \caption{} + \label{} |
| 文中引用 | ❌ | ✅ \ref{} |
| 目录支持 | ❌ | ✅ List of Figures |
| 并排 / 缩放 /旋转 | ❌ 很有限 | ✅ 灵活控制 |
4. 表格排版
在 LaTeX 里,表格本质上是一种特殊的盒子布局,每个单元格都是一个盒子(box),所有单元格组成行,然后多行组成表格。
- 最常用:tabular / tabularx / longtable
- 辅助:multirow / multicolumn
基本用法
\begin{tabular}{列格式}
单元格1 & 单元格2 & 单元格3 \\
单元格4 & 单元格5 & 单元格6 \\
\end{tabular}| 原因 | 说明 |
|---|---|
| 多层嵌套 | 表格有行列、单元格边框、跨行跨列,需要同时计算每一行列的大小和对齐。 |
| 宽度自动计算 | 每列宽度可以自动适应内容,也可以固定,LaTeX 需要在排版时计算每列宽度。 |
| 文字换行 | 默认 l/c/r 不换行,文字过长会溢出,需要 p{width} 或 tabularx 手动控制换行。 |
| 边框和间距 | 表格横竖线、单元格间距、上下留白、线条粗细都要控制,否则内容挤在一起。 |
| 跨页表格 | 对于长表格,需要 longtable 或 supertabular 处理分页,同时保持标题行。 |
| 对齐问题 | 数字、文字、公式可能需要不同对齐方式,尤其数学公式在表格中比图片复杂。 |
论文中常用的三线表格,使用的是booktabs宏包,然后使用宏包进行划线写表即可
\documentclass{article}
\usepackage{booktabs} % 三线表宏包
\usepackage{array} % 对齐宏包,可选
\begin{document}
\begin{table}[h]
\centering
\caption{实验数据对比}
\begin{tabular}{l c r} % l=左 c=中 r=右
\toprule
方法 & 精度(\%) & 时间(s) \\
\midrule
方法A & 92.5 & 12.3 \\
方法B & 94.1 & 15.8 \\
方法C & 91.8 & 11.9 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}高级的用法就是在Table环境中叠加tabular环境
\begin{table}[htbp]
\centering
\caption{Chinese Universities Ranked in the Top 50 in QS in 2024}
\label{tab:Univ-rank-2024}
\begin{tabular}{@{}ccc@{}}
\toprule
Rank & University Name & Location \\ \midrule
17 & Peking University & China (Mainland) \\
25 & \textbf{Tsinghua University} & China (Mainland) \\ \bottomrule
\end{tabular}
\end{table}- LaTeX 的“浮动体(float)”,用来管理整个表格块的位置,一般包含标题,位置,标签等,会根据排版自动调整位置,防止表格和正文冲突
- 可以选择 [h] [t] [b] [p] 来控制浮动位置
tabular环境,纯粹的“表格内容排版环境”,只负责把文字、数字排成行列,画线等
5. 交叉引用与超链接
5.1 超链接
在 LaTeX 中实现交叉引用(Cross-referencing)和超链接(Hyperlinks),主要依赖两个核心宏包:hyperref 和 cleveref
- 核心宏包配置
在导言区(\begein{document}之前)确保已经加载了以下宏包。注意加载顺序:hyperref 通常建议放在最后(除了 cleveref 需要在它之后),以避免与其他宏包冲突。
hyperref 宏包涉及的链接遍布目录、引用、脚注、索引、参考文献等元素,这使得它与其它宏包发生冲突的可能性大大增加,因此习惯上将 hyperref 宏包放在其它宏包之后调用
\documentclass{article} % 或 report, book 等
% 1. 加载 hyperref 宏包 (必须)
% 建议放在大多数宏包之后,但在 cleveref 之前
\usepackage[colorlinks=true, linkcolor=blue, citecolor=red, urlcolor=magenta]{hyperref}
% 2. 加载 cleveref 宏包 (强烈推荐,用于智能交叉引用)
% 必须放在 hyperref 之后
\usepackage[capitalise]{cleveref} - colorlinks=true: 去掉链接周围的方框,直接给文字上色(更美观)
- linkcolor=blue: 内部链接(如章节、公式引用)的颜色。
- citecolor=red: 参考文献引用的颜色。
- urlcolor=magenta: 网址的颜色。
- 常见的场景
- 链接到外部网站
- 链接到文档内部章节/公式
- 链接到本地文件
- 链接到外部网站(External URLs)
% 1. 直接显示网址
\url{https://www.google.com}
% 输出效果:https://www.google.com (蓝色可点击文字)
% 2. 自定义链接文字 你希望显示“点击这里”或其他文字,而不是长长的网址
\href{https://www.overleaf.com}{访问 Overleaf 在线编辑器}
% 输出效果:访问 Overleaf 在线编辑器 (蓝色可点击文字,指向官网)
% 3. 邮件链接
\href{mailto:support@example.com}{联系技术支持}- 链接到文档内部(Internal Cross-References)
这需要配合 标签使用。hyperref 会自动将标准的 \(\ref{}\) 变成可点击的链接,但你也可以自定义链接文字。
%1. 标准引用(自动变链接)
\section{方法论}\label{sec:method}
% 在文档其他地方:
详见第 \ref{sec:method} 节。
% 输出效果:详见第 2 节 (数字"2"是可点击的,点击跳转至"方法论")自定义文字跳转到内部标签 (\hyperref)
\hyperref[sec:method]{查看方法论部分}
% 输出效果:查看方法论部分 (整句话可点击,跳转至 sec:method 标签处)如果加载了 cleveref 宏包,推荐使用 \cref,它会自动添加“第 x 节”、“图 x”等前缀并生成链接
\cref{sec:method}
% 输出效果:第 2 节 (自动识别是 section,并生成链接)- 链接到本地文件(Local Files)
可以链接到同一文件夹下的 PDF、图片或数据文件
% 链接到同目录下的 data.pdf
\href{file:data.pdf}{下载原始数据 (PDF)}
% 链接到同目录下的 image.png (不同操作系统路径分隔符可能不同,Linux/Mac用 /, Windows有时需用 \\)
\href{file:./images/plot.png}{查看高清原图}5.2 交叉引用
基础交叉引用(\label和\ref)
这个是LaTeX的原生功能,配合 hyperref 会自动变成可点击的链接。
\label{name}: 在需要被引用的位置(如章节标题后、图片环境内、公式后)打标签\ref{name}: 引用该标签的编号\pageref{name}: 引用该标签所在的页码。
\section{引言}\label{sec:intro}
这是引言部分。
详见 \ref{sec:method} 节的方法,或者跳转到第 \pageref{eq:main} 页的公式。6. 数学公式排版
在LaTex中编写数学公式是最强大的功能,也是LaTex出现的初衷,LaTeX 的数学模式排版精美,自动处理间距、字体和符号,非常适合学术论文和技术报告。
LaTeX分为两种数学模式
- 行内公式(嵌入在文字中)
- 行间公式(独立成行,居中显示)
这个类似于Markdown中的行内公式和行间公式,只不过Markdown的行间公式需要用$$包裹起来,而LaTeX则用\begin{equation}和\end{equation}包裹起来
6.1 常用的数学元素
运算符号
| 描述 | 代码 | 显示 | 描述 | 代码 | 显示 |
|---|---|---|---|---|---|
| 加减乘除 | + - \times \div |
$ + - $ | 求和 | \sum |
$ $ |
| 积分 | \int |
$ $ | 极限 | \lim |
$ $ |
| 无穷大 | \infty |
$ $ | 偏导 | \partial |
$ $ |
| 梯度 | \nabla |
$ $ | 点乘/叉乘 | \cdot \times |
$ $ |
关系符
| 代码 | 显示 | 代码 | 显示 | 代码 | 显示 |
|---|---|---|---|---|---|
= |
$ = $ | \neq |
$ $ | \approx |
$ $ |
< > |
$ < > $ | \leq \geq |
$ $ | \equiv |
$ $ |
\in |
$ $ | \subset |
$ $ | \cup \cap |
$ $ |
希腊字母
| 代码 | 显示 | 代码 | 显示 | 代码 | 显示 |
|---|---|---|---|---|---|
\alpha |
$ $ | \beta |
$ $ | \gamma |
$ $ |
\delta |
$ $ | \epsilon |
$ $ | \theta |
$ $ |
\lambda |
$ $ | \mu |
$ $ | \pi |
$ $ |
\sigma |
$ $ | \omega |
$ $ | \Delta |
$ $ |
\Omega |
$ $ | \Phi |
$ $ | \Psi |
$ $ |
6.2 高级环境
多行公式对齐
使用 align* 环境(需要 amsmath 包),& 表示对齐点,\\ 表示换行。
\begin{align*}
f(x) &= (x+a)(x-b) \\
&= x^2 + (a-b)x - ab
\end{align*}分段函数
f(x) =
\begin{cases}
x^2 & \text{if } x \geq 0 \\
-x & \text{if } x < 0
\end{cases}6.3 带编号的数学公式
在 LaTeX 中,给数学公式添加自动编号非常简单。核心原则是:不要使用 $$ ... $$,而是使用专门的“带星号”和“不带星号”的环境
- 不带星号 (equation, align):自动编号
- 带星号 (equation, align):不编号
\begin{equation}
a^2 + b^2 = c^2 \label{eq:pythagoras}
\end{equation}
正如公式 \eqref{eq:pythagoras} 所示...7. 参考文献管理
LaTeX 中的参考文献管理主要依赖 BibTeX 或更现代的 BibLaTeX 工具。核心流程是:创建一个 .bib 数据库文件 →→ 在 LaTeX 主文件中引用→→ 编译生成参考文献列表。
第一步:创建 .bib 文件
创建一个后缀为 .bib 的文件(例如 refs.bib),用于存储所有文献信息。每条文献以 @类型{引用键, …} 的格式编写
@article{einstein1905,
author = {Albert Einstein},
title = {Zur Elektrodynamik bewegter Körper},
journal = {Annalen der Physik},
volume = {322},
number = {10},
pages = {891--921},
year = {1905}
}
@book{knuth1984,
author = {Donald E. Knuth},
title = {The TeXbook},
publisher = {Addison-Wesley},
year = {1984}
}
@misc{latex_project,
author = {{The LaTeX Project}},
title = {LaTeX: A document preparation system},
howpublished = {\url{https://www.latex-project.org}},
year = {2023}
}注意:引用键 (如 einstein1905) 是你在文中用来引用该文献的唯一标识符。
Zotero (免费、开源、最强推荐)
- 右键点击文献(或整个集合) -> 导出条目 (Export Items)。
- 格式选择 Better BibTeX (需安装插件) 或标准的 BibTeX。
- 保存为 .bib 文件。
安装 Better BibTeX 插件后,可以设置自动同步。当你修改 Zotero 库时,它会自动更新你 LaTeX 项目文件夹里的 .bib 文件,无需手动导出。
第二步:在 LaTeX 主文件中调用
在 .tex 文件中,你需要做两件事:
- 在正文中需要引用的地方使用
- 在文档末尾(\end{document} 之前)指定 bibliograph 样式和数据库文件
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{hyperref} % 推荐:让参考文献链接可点击
\begin{document}
相对论是物理学的基石 \cite{einstein1905}。
TeX 系统的创始人是 Knuth \cite{knuth1984}。
更多详情请参考 \cite{latex_project}。
% 设置参考文献样式 (见下文详解)
\bibliographystyle{plain}
% 指定 .bib 文件名 (不需要写 .bib 后缀)
\bibliography{refs}
\end{document}第三步:正确的编译顺序 (关键!)
为了让引用编号和参考文献列表正确生成,通常需要编译 4 次(或者使用自动化脚本):
pdflatex main.tex(第一次编译,记录引用信息到.aux文件)bibtex main.aux(运行 BibTeX,生成.bbl文件)pdflatex main.tex(第二次编译,插入参考文献数据)pdflatex main.tex(第三次编译,修正交叉引用编号)
现代编辑器提示:如果你使用 Overleaf、TeXShop、VS Code (LaTeX Workshop) 或 TeXworks,它们通常有一个 “Build” (构建) 按钮,会自动执行上述所有步骤,无需手动输入命令。
原生的 bibtex 功能较老,处理 UTF-8 中文支持较差,且样式定制困难。biblatex + biber 是现代 LaTeX 的标准解决方案。
8. LaTeX自定义命令和环境
在 LaTeX 中,自定义命令(Commands)和环境(Environments)是提高写作效率、保持文档风格统一的核心技巧。通过它们,你可以将复杂的格式封装成简单的指令。
这些定义通常放在文档的导言区(
\begin{document}之前)
8.1 自定义命令(\newcommand)
这是最常用的功能,用于创建简短的宏来替代重复输入的代码
基本语法
\newcommand{\<命令名>}[<参数个数>][<默认值>]{<定义内容>}<命令名>:必须以\开头,且不能与现有命令重名(如\newcommand{\section}{...}会报错)[<参数个数>]:可选,默认为 0。最大支持 9 个参数[<默认值>]:可选,仅当有参数时可用,指定第一个参数的默认值<定义内容>:命令的具体实现,参数用 #1, #2, … 表示
场景A:简化常用符号
% 定义
\newcommand{\vect}[1]{\mathbf{#1}}
\newcommand{\expect}[1]{\mathbb{E}\left[#1\right]}
% 使用
$\vect{v}$ 和 $\expect{X^2}$场景 B:带默认参数的命令
% 更实用的范数定义 (自动调整括号大小)
\newcommand{\Norm}[1]{\left\| #1 \right\|}
% 使用
$\Norm{A}$ % 输出 ||A||场景 C:格式化文本块
\usepackage{xcolor}
\newcommand{\kw}[1]{\textbf{\textcolor{blue}{#1}}}
% 使用
这是一个 \kw{重要} 的概念。8.2 自定义环境 (\newenvironment)
当你需要一段固定的开头和结尾代码包裹内容时(如特殊的框、定理、注释),使用自定义环境。
基本语法
\newenvironment{<环境名>}[<参数个数>][<默认值>]
{<开始部分代码>}
{<结束部分代码>}<开始部分代码>:在\begin{<环境名>}之后立即执行<结束部分代码>:在\end{<环境名>}之前立即执行
场景A:创建一个彩色提示框
\usepackage{xcolor}
\usepackage{framed} % 或者 tcolorbox 包更强大
\newenvironment{mybox}
{\begin{framed}\colorlet{framecolor}{yellow}\begin{color}{yellow}\vspace{2mm}}
{\vspace{2mm}\end{color}\end{framed}}
% 使用
\begin{mybox}
这是一段放在黄色框里的文字。
\end{mybox}如果你想修改 LaTeX 原有的命令(例如改变章节标题的格式,或修改 的文字),必须使用 \renewcommand
9. LaTeX 自定义宏包和文档类:内容与格式分离
将内容(Content)与格式(Format)彻底分离,是 LaTeX 相对于 Word 等所见即所得编辑器的最大优势,也是专业排版的核心理念。
实现这一目标的终极手段就是:自定义文档类(.cls)和自定义宏包(.sty)
- 文档类 (.cls):定义文档的整体结构(如:这是论文、书籍还是幻灯片?章节如何划分?页边距多大?)
- 宏包 (.sty):定义文档的具体功能与样式细节(如:数学符号定义、特定的定理环境、颜色方案、特殊的列表格式)
- 主文件 (.tex):只包含内容和逻辑结构(\chapter, \section, \cite),几乎不包含任何排版指令
类似与Python中的类,函数包等这种操作,开始有了架构,而不是单纯的一篇tex文章
my-project/
├── main.tex # 【内容层】只写文字和逻辑引用
├── mythesis.cls # 【结构层】定义页面布局、章节样式、字体大小
├── mysettings.sty # 【功能层】定义数学命令、定理环境、颜色、图表格式
├── chapters/ # 内容分块
│ ├── intro.tex
│ └── method.tex
└── references.bib # 参考文献数据库
最好的方式还是在实践中学习,上述只是入门语法,后续要多练习,多模仿,多善用AI,多使用结构化思维