Latex 语法快速入门教程
LaTeX中最重要的是排版顺序,编译的时候会安装宏包加载顺序+命令顺序 来应用设置
\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 生成目录,会自动收集文档中的 章节、节、小节 信息
% 控制目录深度,只显示到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 |
最大 |
要用{}包裹作用范围
- 字体组合
- 字体颜色和标注
在 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环境,纯粹的“表格内容排版环境”,只负责把文字、数字排成行列,画线等