Latex 语法快速入门教程

Latex最基础的语法,包括如何使用Latex编写数学公式、插入图片、表格等。适合入门学习
Important

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 文档格式.

Note
  • 渲染引擎的选择 对于中文用户,推荐使用 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 生成目录,会自动收集文档中的 章节、节、小节 信息


% 控制目录深度,只显示到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 最大
Note

要用{}包裹作用范围

  1. 字体组合

  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环境,纯粹的“表格内容排版环境”,只负责把文字、数字排成行列,画线等