Latex 语法快速入门教程

Latex最基础的语法,包括如何使用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 基本结构

  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} 之后的文本都会被忽视.

空行不是必要的,但它可以让长的文档更易读.

  1. 一个最简单的中文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)

  1. 字体样式(最常用)
命令 效果 示例 显示
\textbf{} 粗体 \textbf{Hello} Hello
\textit{} 斜体 \textit{Hello} Hello
\textsl{} 倾斜体 \textsl{Hello} Hello
\texttt{} 打字机字体 \texttt{Hello} Hello
\underline{} 下划线 \underline{Hello} Hello
\emph{} 强调(通常为斜体) \emph{Hello} Hello
  1. 字体族(Font Family)
命令 类型 示例
\textrm{} Roman(衬线) \textrm{Hello}
\textsf{} Sans serif(无衬线) \textsf{Hello}
\texttt{} 等宽字体 \texttt{Hello}
  1. 字体大小
命令 大小
\tiny 极小
\scriptsize 脚注
\footnotesize
\small 略小
\normalsize 正常
\large
\Large 更大
\LARGE 很大
\huge 巨大
\Huge 最大
注记

要用{}包裹作用范围

  1. 字体组合
\textbf{\textit{粗体斜体}}
\textsf{\Large 无衬线大字体}
\underline{\textbf{带下划线粗体}}
  1. 字体颜色和标注

在 LaTeX 中,如果想给 字体设置颜色或做标注(高亮),最常用的是 xcolor 宏包

  1. 现在导言区加载宏包

\usepackage{xcolor}

  1. 设置字体颜色

\textcolor{red}{红色文字},并且可以自定义颜色

# 先自定义颜色
\definecolor{mycolor}{RGB}{255,100,0}


# 然后调用
\textcolor{mycolor}{自定义颜色}
  1. 文字背景高亮

\colorbox{yellow}{高亮文字}

2.8 段落格式和页面布局

  1. 行间距
命令 效果
\singlespacing 单倍行距
\onehalfspacing 1.5倍行距
\doublespacing 双倍行距

也可以使用\linespread{1.3} 精准控制

局部行距:

\begin{spacing}{1.5}
这里是1.5倍行距
\end{spacing}
  1. 段间距

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; }
  1. 页面布局

在 LaTeX 中,页面布局(Page Layout)就是控制文档纸张大小、正文宽度、高度、页边距、页眉页脚等整体排版尺寸的部分

常用宏包 geometry

  1. 可以先加载包 (\usepackage{geometry})
  2. 然后通过命令来设置\geometry{}

3. 图片排版

在 LaTeX 中,载入图片主要靠 graphicx 宏包。你可以控制图片大小、位置、旋转、居中、加标题等

  1. 宏包载入

在导言区加入\usepackage{graphicx}

  1. 插入图片基本语法

\includegraphics[选项]{文件名}

  • 文件名 可以带或不带扩展名(LaTeX 会自动识别常用格式 .pdf、.png、.jpg)
选项 说明
width=... 设置宽度,例如 0.5\textwidth 表示宽度为正文宽度的一半
height=... 设置高度,例如 5cm
scale=... 按比例缩放,例如 scale=0.8
angle=... 旋转角度,例如 angle=90 旋转90°
  1. 图片放置的浮动机制

有点类似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)
插入方式 ![title](file) \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 手动控制换行。
边框和间距 表格横竖线、单元格间距、上下留白、线条粗细都要控制,否则内容挤在一起。
跨页表格 对于长表格,需要 longtablesupertabular 处理分页,同时保持标题行。
对齐问题 数字、文字、公式可能需要不同对齐方式,尤其数学公式在表格中比图片复杂。

论文中常用的三线表格,使用的是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),主要依赖两个核心宏包:hyperrefcleveref

  1. 核心宏包配置

在导言区(\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: 网址的颜色。
  1. 常见的场景
  • 链接到外部网站
  • 链接到文档内部章节/公式
  • 链接到本地文件
  1. 链接到外部网站(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}{联系技术支持}
  1. 链接到文档内部(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,并生成链接)
  1. 链接到本地文件(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 次(或者使用自动化脚本):

  1. pdflatex main.tex (第一次编译,记录引用信息到 .aux 文件)
  2. bibtex main.aux (运行 BibTeX,生成 .bbl 文件)
  3. pdflatex main.tex (第二次编译,插入参考文献数据)
  4. 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,多使用结构化思维