Markdown 到 LaTeX:Overleaf 学习笔记

发布于:2025-05-26 ⋅ 阅读:(41) ⋅ 点赞:(0)

Markdown 到 LaTeX:Overleaf 学习笔记

过去常用 Markdown 写笔记和博客,对于日常记录确实方便。但遇到论文或格式要求高的复杂文档,Markdown 就显得力不从心了。

因此,我最近开始学习 LaTeX。它的语法是比 Markdown 复杂些,但排版效果专业且出色得多。相较于 Word 容易出现格式问题、需要频繁操作鼠标,LaTeX 通过代码精确控制,排版稳定,尤其适合复杂文档。起初可能会担心 LaTeX 语法出错难改,但好在现在有 AI 大模型的辅助,查错纠错也方便了不少。

这篇博文整理了我学习过程中的一些 LaTeX 基础用法,都是些入门的实践。希望能为想从 Markdown 进阶、追求更好排版效果的你提供一个简单的参考。下面,就让我们一起看看 Overleaf (LaTeX) 的一些基础操作和技巧吧。

有任何问题请与我联系:wangk227@ahut.edu.cn

创建第一个文档

Overleaf 是一个在线的 LaTeX 编辑器,非常好用,可以让我们专注于内容创作,而不用太担心复杂的安装和配置。

登录 Overleaf

打开 Overleaf ( https://www.overleaf.com/ ) 并登录。
在这里插入图片描述

创建新项目 (New Project)

  1. 登录后,你会看到项目仪表板。
    在这里插入图片描述

  2. (可选) 点击底部的Click here to use Overleaf in Chinese,如果你习惯使用中文。

  3. 点击左上角的 “New Project” (新建项目) 按钮。

  4. 选择 “Blank Project” (空白项目)。

  5. 给你的项目起一个名字,比如 “我的第一篇论文”。

调整中文编译环境

将编辑器(Code Editor)中的代码更换为下面内容:

\documentclass{ctexart}

\title{我的第一个文档}
\author{你的名字} % 请在这里写上你的名字
\date{\today}

\begin{document}

\maketitle

你好,世界!

\end{document}

接着需要更改 LaTeX 编译器

在 Overleaf 界面的左上角,找到并点击 “Menu” (菜单) 按钮。

在下拉菜单中,找到 “Settings” (设置) 部分,下面会有一个 “Compiler” (编译器) 的选项。点击它。

在这里插入图片描述

从列表中选择 XeLaTeX

回到主界面,再次点击点击 “Recompile” (重新编译) 按钮。显示如下界面:

在这里插入图片描述

  • 左侧 (File Tree/文件列表): 这里显示你项目中的所有文件和文件夹。默认情况下,你会有一个名为 main.tex 的主文件。
  • 中间 (Source Code Editor/源代码编辑器): 这是你编写 LaTeX 代码的地方。main.tex 文件会自动在这里打开。
  • 右侧 (PDF Preview/PDF预览): 这里会显示你代码编译后的 PDF 文稿。Overleaf 通常会自动编译,你也可以手动点击上方的 “Recompile” (重新编译) 按钮。

代码解释

  • \documentclass{ctexart}:
    • \documentclass 是每个 LaTeX 文档的起始命令,告诉 LaTeX 文档的类型。
    • ctexart 是一个专门为中文排版设计的文档类(基于标准 article 类),它内置了对中文的良好支持。使用它,我们通常不需要再额外加载很多与中文相关的宏包。
  • \title{我的第一个文档}: 设置文档的标题。
  • \author{你的名字}: 设置文档的作者。请把 “你的名字” 替换成你自己的名字。
  • \date{\today}: 设置文档的日期为当前编译的日期。\today 是一个会自动更新的命令。
  • \begin{document}: 这个命令标志着文档正文内容的开始。所有你希望显示在最终 PDF 上的内容(除了标题、作者等由特殊命令生成的部分)都应该放在它之后。
  • \maketitle: 这个命令会根据你之前用 \title, \author, \date 设置的信息,在文档的开头生成一个格式化的标题块。
  • 你好,世界!: 这是我们想在 PDF 中看到的实际文字内容。
  • \end{document}: 这个命令标志着文档正文内容的结束。它之后的所有内容都会被忽略。

[!tip]

建议把自动编译打开,如下图所示,这样就可以实时预览了。

在这里插入图片描述

添加文档结构和基本内容

添加章节 (Sections)

学术论文通常会分成多个章节。在 LaTeX 中,最常用的创建主要章节的命令是 \section{章节标题}ctexart 文档类会自动为这些章节编号(例如 1, 2, 3…)并调整它们的格式。

在上述代码基础上,我们添加修改一些内容:

\documentclass{ctexart}

\title{我的第一个文档}
\author{你的名字} % 请在这里写上你的名字
\date{\today}

\begin{document}

\maketitle

你好,世界!

\section{我的第一章}

这里是第一章的一些内容。我们开始学习如何在 LaTeX 中组织文本。
LaTeX 会自动处理段落的格式,比如首行缩进。

这是第一章的第二个段落。只需要在源代码中用一个或多个空行隔开,
就能形成新的段落。

\end{document}

预览如下:

在这里插入图片描述

基本文本格式化 (Text Formatting)

在 LaTeX 中,有专门的命令来实现这些效果:

  • 加粗 (Bold): 使用 \textbf{需要加粗的文字} 命令。textbf 是 “text bold font” 的缩写。
  • 斜体 (Italics): 使用 \textit{需要斜体的文字} 命令。textit 是 “text italic font” 的缩写。
    • 关于中文斜体: 对于中文字符,\textit 命令的效果可能不是传统意义上向右倾斜的“斜体”,而常常会显示为“楷体”或者一种特定的倾斜宋体,这取决于 ctexart 或你(如果将来设置的话)指定的 CJK 字体的设计。它仍然起到强调的作用,但视觉上可能和西文的斜体有所不同。

这些命令可以嵌套使用,也可以用在文档的任何正文部分。

让我们修改之前的例子,加入一些格式化:

\documentclass{ctexart}

\title{我的第一个文档}
\author{你的名字} % 请确保这里是你的名字
\date{\today}

\begin{document}

\maketitle

\section{我的第一章}

这里是第一章的一些内容。我们开始学习如何在 LaTeX 中组织文本。
LaTeX 会自动处理段落的格式,比如 \textbf{首行缩进}。

这是第一章的第二个段落。只需要在源代码中用一个或多个空行隔开,
就能形成新的段落。我们可以尝试一些 \textit{强调的文字},看看效果如何。
同时,我们也可以 \textbf{\textit{既加粗又使用楷体(或斜体)}}。

\end{document}

预览如下:

在这里插入图片描述

创建列表和添加注释

在论文和报告中,列表是一种非常常用的信息组织方式。LaTeX 提供了简单易用的命令来创建不同类型的列表。同时,学会如何在代码中添加注释也是一个好习惯。

创建列表 (Lists)

LaTeX 主要支持两种类型的列表:无序列表(用项目符号标记)和有序列表(用数字或字母标记)。

  • 无序列表 (Itemized Lists): 使用 itemize 环境。列表中的每一项都以 \item 开头。

    \begin{itemize}
        \item 这是第一个项目符号点。
        \item 这是第二个项目符号点。
        \item 你可以有很多项。
    \end{itemize}
    
  • 有序列表 (Enumerated Lists): 使用 enumerate 环境。同样,列表中的每一项也以 \item 开头,LaTeX 会自动为它们编号。

    \begin{enumerate}
        \item 这是第一点。
        \item 这是第二点。
        \item LaTeX 会自动处理编号。
    \end{enumerate}
    

你也可以在一个列表中嵌套另一个列表!

添加注释 (Comments)

当你编写 LaTeX 代码时,有时可能想为自己添加一些注释或提醒,或者暂时去掉某段代码而不删除它。这时就可以使用注释。

在 LaTeX 中,百分号 % 用来表示注释。从 % 开始到该行末尾的所有内容都会被 LaTeX 编译器忽略,不会出现在最终的 PDF 文档中。

示例

% 这是一个注释行,它不会被编译。
\documentclass{ctexart}

\title{我的第一个文档}
\author{你的名字} % 请确保这里是你的名字
\date{\today}

\begin{document}

\maketitle

\section{我的第一章}

这里是第一章的一些内容。我们开始学习如何在 LaTeX 中组织文本。
LaTeX 会自动处理段落的格式,比如 \textbf{首行缩进}。

这是第一章的第二个段落。只需要在源代码中用一个或多个空行隔开,
就能形成新的段落。我们可以尝试一些 \textit{强调的文字},看看效果如何。
同时,我们也可以 \textbf{\textit{既加粗又使用楷体(或斜体)}}。

\section{列表和注释示例} % 新增一个章节来放列表

下面是一个无序列表的例子:
\begin{itemize}
    \item 苹果
    \item 香蕉
    \item 橙子 % 我们也可以在 \item 后面加注释
\end{itemize}

接下来是一个有序列表:
\begin{enumerate}
    \item 首先,学习基础。
    \item 其次,动手练习。 % 这是非常重要的一步
    \item 最后,学以致用。
\end{enumerate}

% 下面这行代码被注释掉了,所以不会显示:
% \subsection{一个被注释掉的小节}

\end{document}

效果如下:

在这里插入图片描述

插入数学公式

LaTeX 最强大的功能之一就是它无与伦比的数学公式排版能力。无论多复杂的公式,LaTeX 都能优雅地呈现。对于撰写论文,尤其是理工科或经济学等领域的论文,数学公式的输入至关重要。

LaTeX 中有两种主要的数学模式:

  1. 行内公式 (Inline Math): 公式嵌入在普通文本行内。

    • 使用一对美元符号 $...$ 将公式括起来。
    • 例如:著名的质能方程是 $E=mc^2$
  2. 陈列公式 (Display Math): 公式单独成行,通常居中显示。

    • 使用 \[ ... \] 将公式括起来(这是不带编号的居中公式)。
    • 例如:\[ E=mc^2 \]
    • 提示: 对于论文中需要引用的公式,我们将来会学习使用 equation 环境来生成带编号的公式,但现在我们先掌握基础的显示方式。)

[!note]

一些常用的数学符号和命令:

  • 上标 (Superscript): 使用 ^ 符号。如果上标内容超过一个字符,需要用花括号 {}括起来。
    • 例子:$x^2$ (显示 x 2 x^2 x2),$y^{10}$ (显示 y 10 y^{10} y10)
  • 下标 (Subscript): 使用 _ 符号。如果下标内容超过一个字符,也需要用花括号 {}括起来。
    • 例子:$a_1$ (显示 a 1 a_1 a1),$x_{ij}$ (显示 x i j x_{ij} xij)
  • 分数 (Fraction): 使用 \frac{分子}{分母} 命令。
    • 例子:$\frac{1}{2}$ (显示 1 2 \frac{1}{2} 21),\[ \frac{x+y}{x-y} \] (显示 x + y x − y \frac{x+y}{x-y} xyx+y)
  • 希腊字母 (Greek Letters): 直接用其英文拼写前加反斜杠 \。首字母大写则得到大写希腊字母。
    • 例子:$\alpha$ ( α \alpha α), $\beta$ ( β \beta β), $\Sigma$ ( Σ \Sigma Σ), $\Delta$ ( Δ \Delta Δ), $\pi$ ( π \pi π)
  • 平方根 (Square Root): 使用 \sqrt{表达式} 命令。
    • 例子:$\sqrt{2}$ ( 2 \sqrt{2} 2 ),$\sqrt{x^2+y^2}$ ( x 2 + y 2 \sqrt{x^2+y^2} x2+y2 )
  • 常用的数学函数名:\sin, \cos, \ln, \log 等,在数学环境中直接使用这些命令会得到正体的函数名,并能自动处理间距。
    • 例子:$\sin x$ ( sin ⁡ x \sin x sinx),$\ln N$ ( ln ⁡ N \ln N lnN)

[!tip]

  • 在数学模式中,普通的英文字母会被认为是变量并以斜体显示,单词之间的空格会被忽略。如果要在公式中插入普通文本,需要特殊命令(我们以后会讲)。
  • ctexart 文档类通常已经为基础的数学排版做好了准备 (它会加载 amsmath 宏包,这是一个非常强大的数学公式宏包)。

来看一个示例:

% 这是一个注释行,它不会被编译。
\documentclass{ctexart}

\title{我的第一个文档}
\author{你的名字} % 请确保这里是你的名字
\date{\today}

\begin{document}

\maketitle

\section{我的第一章}

这里是第一章的一些内容。我们开始学习如何在 LaTeX 中组织文本。
LaTeX 会自动处理段落的格式,比如 \textbf{首行缩进}。

这是第一章的第二个段落。只需要在源代码中用一个或多个空行隔开,
就能形成新的段落。我们可以尝试一些 \textit{强调的文字},看看效果如何。
同时,我们也可以 \textbf{\textit{既加粗又使用楷体(或斜体)}}。

\section{列表和注释示例}

下面是一个无序列表的例子:
\begin{itemize}
    \item 苹果
    \item 香蕉
    \item 橙子 % 我们也可以在 \item 后面加注释
\end{itemize}

接下来是一个有序列表:
\begin{enumerate}
    \item 首先,学习基础。
    \item 其次,动手练习。 % 这是非常重要的一步
    \item 最后,学以致用。
\end{enumerate}

\section{数学公式初步} % 新增一个章节来放数学公式

行内公式的例子:一个二次方程的一般形式是 $ax^2 + bx + c = 0$。
其中判别式是 $\Delta = b^2 - 4ac$。当 $\Delta \ge 0$ 时,方程有实数解。

下面是一个陈列公式(不带编号):
\[
x_{1,2} = \frac{-b \pm \sqrt{b^2-4ac}}{2a}
\]

我们再来看一个包含希腊字母和分数的例子:圆的面积是 $A = \pi r^2$,周长是 $C = 2\pi r$。
球的体积公式是:
\[
V = \frac{4}{3}\pi R^3
\]
这里 $R$ 是球的半径。

\end{document}

效果如下:

在这里插入图片描述

数学公式的输入是 LaTeX 的精髓之一,一开始可能会觉得符号命令有点多,但用熟了之后就会非常高效和方便。

插入图片 (Figures)

学术论文几乎离不开图片、图表等视觉元素。LaTeX 提供了强大的功能来插入和管理这些图形。

1. graphicx 宏包

要在 LaTeX 中插入图片,我们通常需要使用 graphicx 宏包。这个宏包提供了 \includegraphics 命令。很多现代的文档类(包括 ctexart)在加载 amsmath 等常见宏包时,往往也会间接或直接地让 graphicx 的功能可用,或者 graphicx 本身就是一个非常标准的宏包,可以直接加载。为保险起见,我们可以在导言区(\documentclass 之后,\begin{document} 之前)明确地包含它:\usepackage{graphicx}

2.上传图片到 Overleaf

  • 在 Overleaf 项目的左侧文件列表区域,你可以直接从你的电脑拖拽一张图片文件(比如 .jpg, .png, .pdf 格式的图片都可以)到这里。
  • 或者,点击文件列表上方的 “Upload” (上传) 按钮,然后选择你要上传的图片文件。

如下图所示:

在这里插入图片描述

3. \includegraphics 命令

插入图片的核心命令是 \includegraphics[选项]{图片文件名}

一些常用的选项:

  • width=<长度>: 指定图片的宽度,例如 width=5cmwidth=0.8\textwidth (表示文本宽度的80%)。
  • height=<长度>: 指定图片的高度。
  • scale=<比例>: 指定图片的缩放比例,例如 scale=0.5 (缩小到50%)。
  • angle=<角度>: 指定图片的旋转角度(顺时针)。

通常我们只设置 widthheightscale 中的一个,让图片保持原始的宽高比。

4. figure 环境:让图片“浮动”并添加标题

直接使用 \includegraphics 会将图片插入到当前位置,这有时会破坏页面布局。为了更好地控制图片的位置、给图片添加标题 (caption) 和编号,并方便以后交叉引用,我们应该将 \includegraphics 命令放置在 figure 环境中。

figure 环境是一个“浮动体”(float),意味着 LaTeX 会尝试为它找到一个合适的位置(比如页面的顶部、底部,或者单独的一页),而不是严格按照它在源代码中出现的顺序。

\begin{figure}[htbp] % 位置参数,下面解释
    \centering % 命令,使图片在其环境内居中显示
    \includegraphics[width=0.6\textwidth]{图片文件名} % 替换为你的图片文件名和期望的宽度
    \caption{这里是图片的标题文字}
    \label{fig:mylabel} % 用于交叉引用,我们以后会详细讲
\end{figure}
  • \begin{figure}[htbp]\end{figure}: 定义了图片环境。
    • [htbp] 是位置参数,告诉 LaTeX 可以尝试将图片放在:
      • h (here): 尽量放在当前代码所在的位置。
      • t (top): 放在页面的顶部。
      • b (bottom): 放在页面的底部。
      • p (page): 放在一个专门的浮动体页面(只包含图片和表格等)。
        LaTeX 会按照这个顺序尝试,[htbp] 是一个常用的组合,给予 LaTeX 较大的灵活性。
  • \centering: 使环境中的内容(这里是图片)居中显示。
  • \caption{这里是图片的标题文字}: 为图片添加标题。LaTeX 会自动为图片编号(例如 “图 1”,“图 2”)。
  • \label{fig:mylabel}: 为图片设置一个标签,方便在正文中交叉引用,例如 “如图 \ref{fig:mylabel} 所示…”。我们将在后续课程中学习交叉引用。fig: 是一个常用的前缀,表示这是一个图片标签。

让我们看一个完整的示例:

假设你已经上传了一张名为 sample-image.jpg 的图片到你的 Overleaf 项目中。

\documentclass{ctexart}
\usepackage{graphicx} % 明确加载 graphicx 宏包

\title{我的第一个文档}
\author{你的名字}
\date{\today}

\begin{document}

\maketitle

\section{包含图片的章节}

这是一个普通的段落。下面我们来尝试插入一张图片。
如图 \ref{fig:myfirstimage} 所示,这是一张示例图片。
(注意:现在 \ref 可能显示为问号,因为我们还没讲交叉引用的完整流程,先不用管它)

\begin{figure}[htbp]
    \centering
    \includegraphics[width=0.7\textwidth]{sample-image.jpg} % 请确保文件名与你上传的一致!
    \caption{这是一张居中显示的示例图片,宽度为文本宽度的70\%。}
    \label{fig:myfirstimage}
\end{figure}

图片后面的段落。LaTeX 会自动处理图片和文字的排版。
你可能会发现图片并不一定严格出现在你代码中插入的位置,
这就是浮动体的特性。

\end{document}

效果如下:

在这里插入图片描述

创建简单的表格 (Tables)

和图片一样,表格也是学术论文中展示数据和信息的常用方式。在 LaTeX 中创建表格有多种方法,我们先从基础的 tabular 环境开始。

1. tabular 环境:定义表格内容和结构

实际的表格内容和列格式是在 tabular 环境中定义的。其基本语法是:

\begin{tabular}{<列格式说明>}
    % 表格内容
\end{tabular}
  • <列格式说明> (Column Specifiers): 这里定义了表格有多少列以及每一列的对齐方式。

    • l: 该列内容左对齐。
    • c: 该列内容居中对齐。
    • r: 该列内容右对齐。
    • |: 在列之间添加一条垂直线。
    • 例如:{lccr} 表示一个四列表格,第一列左对齐,第二、三列居中,第四列右对齐。{|l|c|r|} 表示三列,左右和列间都有竖线。
  • 表格内容:

    • 在每一行中,不同单元格的内容用 & 分隔。
    • 每一行以 \\ 结束。
    • \hline 命令用于在行与行之间或表格的顶部/底部添加水平线。

2. table 环境:让表格“浮动”并添加标题

figure 环境类似,为了更好地控制表格的位置、给表格添加标题和编号,并方便以后交叉引用,我们通常会将 tabular 环境放置在 table 环境中。

table 环境也是一个“浮动体”。

\begin{table}[htbp] % 位置参数,与 figure 类似
    \centering % 命令,使表格在其环境内居中显示
    \begin{tabular}{<列格式说明>}
        \hline % 表格顶部的水平线
        % 表头行
        表头1 & 表头2 & 表头3 \\
        \hline % 表头和数据之间的水平线
        % 数据行
        数据1a & 数据2a & 数据3a \\
        数据1b & 数据2b & 数据3b \\
        % 更多数据行...
        \hline % 表格底部的水平线
    \end{tabular}
    \caption{这里是表格的标题文字}
    \label{tab:mylabel} % 用于交叉引用,我们以后会详细讲
\end{table}
  • \centering: 使 tabular(即表格本身)在其外部的 table 环境中居中。
  • \caption{...}: 为表格添加标题,LaTeX 会自动编号(例如 “表 1”,“表 2”)。
  • \label{tab:mylabel}: 为表格设置标签,方便交叉引用。tab: 是一个常用的前缀。

让我们看一个完整的示例:

\documentclass{ctexart}
\usepackage{graphicx} % 虽然这个例子没用图片,但通常文档会同时有图片和表格

\title{我的第一个文档}
\author{你的名字}
\date{\today}

\begin{document}

\maketitle

\section{包含表格的章节}

这是一个普通的段落。下面我们来尝试创建一个简单的表格。
如表 \ref{tab:myfirsttable} 所示,这是一个简单的三列表格。
(注意:现在 \ref 可能显示为问号,我们后续会学习交叉引用)

\begin{table}[htbp]
    \centering
    \caption{一个简单的学生成绩表示例}
    \label{tab:myfirsttable}
    \begin{tabular}{|l|c|r|} % 定义三列:左对齐、居中、右对齐,列间有竖线
        \hline
        姓名 (Name) & 数学 (Math) & 语文 (Language) \\ % 表头行
        \hline
        张三 (Zhang San) & 90 & 85 \\
        李四 (Li Si)     & 78 & 92 \\
        王五 (Wang Wu)   & 85 & 80 \\
        \hline
    \end{tabular}
\end{table}

表格后面的段落。LaTeX 会自动处理表格和文字的排版。

\end{document}

效果如下:

在这里插入图片描述

关于更复杂的表格:
LaTeX 创建表格的功能非常强大。对于更美观或更复杂的表格(例如合并单元格、固定列宽、调整行间距、无竖线的出版级表格),可能需要使用一些额外的宏包(如 booktabsmultirowmulticolumnarraytabularx 等)。先掌握基础的 tabulartable 环境,以后有需要可以再深入学习这些高级技巧。

交叉引用 (Cross-Referencing)

在写论文时,我们经常需要引用文档中的其他部分,比如“参见第 3 节”、“如图 2 所示”、“如表 1 所示”或“根据公式 (5)”等等。手动管理这些编号和页码非常繁琐且容易出错。LaTeX 的交叉引用功能可以自动处理这一切,即使你增删章节、图片或调整顺序,所有引用编号都会自动更新。

1. \label{<唯一标签>} 命令

要引用某个部分,首先需要给它一个独一无二的“标签”(label)。我们使用 \label{<唯一标签>} 命令。

  • 对于章节/小节等: 通常将 \label{...} 放在 \section{...}\subsection{...} 命令之后。
    • 例如:\section{引言}\label{sec:intro}
  • 对于图片 (figure 环境): 通常将 \label{...} 放在 \caption{...} 命令之后,但在 \end{figure} 之前。
    • 例如:\caption{我的图片}\label{fig:myfigure}
  • 对于表格 (table 环境): 同样,通常将 \label{...} 放在 \caption{...} 命令之后,但在 \end{table} 之前。
    • 例如:\caption{我的表格}\label{tab:mytable}
  • 对于公式: 我们稍后学习带编号的公式时会讲如何为公式添加标签。

<唯一标签> 是你为这个引用点起的名字,它在整个文档中必须是唯一的。通常建议使用一些有意义的前缀,比如:
* sec: 用于章节 (sections)
* fig: 用于图片 (figures)
* tab: 用于表格 (tables)
* eq: 用于公式 (equations)

2. \ref{<唯一标签>}\pageref{<唯一标签>} 命令

设置好标签后,你就可以在文档的任何地方引用它了:

  • \ref{<唯一标签>}: 会在该位置插入对应标签的编号(比如章节号、图片号、表格号)。
  • \pageref{<唯一标签>}: 会在该位置插入对应标签所在的页码。

3. 编译次数

为了让 LaTeX 正确解析所有的标签和引用,通常需要编译多次(至少两次):

  • 第一次编译: LaTeX 收集所有 \label 的信息(标签名及其对应的编号和页码),并将这些信息写入一个辅助文件(通常是 .aux 文件)。此时,文档中的 \ref 可能会显示为问号 ??
  • 第二次编译: LaTeX 读取 .aux 文件中的信息,并将正确的编号替换掉 ??
  • 有时甚至需要第三次编译: 如果第二次编译后,由于插入了编号导致文本布局或页码发生变化,可能需要再编译一次以确保所有引用都更新到最新状态。

Overleaf 通常会自动处理多次编译的过程。 你点击 “Recompile” 后,它可能会在后台默默地编译几次,直到所有引用都稳定下来。但如果看到问号,多点几次 “Recompile” 通常能解决。

4. 防止换行:~ (波浪号/非断行空格)

当你在文本中写 “图 \ref{fig:myfigure}” 时,为了避免 “图” 字在一行末尾,而编号 “1” 换到下一行开头(这样很难看),我们通常在 “图”、“表”、“第” 等字和 \ref 命令之间使用一个波浪号 ~~ 在 LaTeX 中代表一个“非断行空格”。

  • 例如:图~\ref{fig:myfigure}表~\ref{tab:mytable}第~\ref{sec:method}节

让我们看一个综合示例:

\documentclass{ctexart}
\usepackage{graphicx}

\title{交叉引用示例}
\author{你的名字}
\date{\today}

\begin{document}

\maketitle

\section{引言}\label{sec:introduction}
欢迎阅读本文档。在本节中,我们将介绍主要内容。
稍后我们会在第~\ref{sec:methods}节(第~\pageref{sec:methods}页)讨论研究方法。
我们也会展示一张图片,如图~\ref{fig:sample}所示,以及一个表格,如表~\ref{tab:sampledata}所示。

\section{研究方法}\label{sec:methods}
这里详细描述研究方法。这一节非常重要。

\subsection{数据收集}\label{ssec:datacollection}
正如在引言(第~\ref{sec:introduction}节)中提到的,数据收集是关键步骤。

\section{结果展示}\label{sec:results}

\begin{figure}[htbp]
    \centering
    % 请确保你项目中有一张名为 'sample-image.jpg' 的图片,或者替换成你自己的图片名
    \includegraphics[width=0.5\textwidth]{sample-image.jpg}
    \caption{一个示例图片,用于演示交叉引用。}
    \label{fig:sample}
\end{figure}

\begin{table}[htbp]
    \centering
    \caption{示例数据表}
    \label{tab:sampledata}
    \begin{tabular}{|l|c|}
        \hline
        类别 & 数值 \\
        \hline
        A & 10 \\
        B & 20 \\
        \hline
    \end{tabular}
\end{table}

在结果展示(第~\ref{sec:results}节)中,我们看到了图~\ref{fig:sample}和表~\ref{tab:sampledata}。
这张图片位于第~\pageref{fig:sample}页。

\end{document}

效果如下:

在这里插入图片描述

在这里插入图片描述

带编号的数学公式及其引用

在学术论文中,重要的公式通常需要编号,并在正文中引用这些编号。我们之前学习了用 \[ ... \] 来创建不带编号的陈列公式。现在我们来学习如何创建带编号的公式。

1. equation 环境

要创建带自动编号的单行公式,我们使用 equation 环境:

\begin{equation}
    % 你的数学公式放在这里
\end{equation}

LaTeX 会自动为 equation 环境中的公式生成一个编号,并显示在公式的右侧(或根据文档类的设置在其他位置)。

2. 为公式添加标签 \label{eq:<唯一标签>}

和章节、图片、表格一样,为了能引用这个公式,我们需要在 equation 环境内部给它一个标签:

\begin{equation}
    E = mc^2 \label{eq:einstein}
\end{equation}

这里,eq:einstein 就是这个公式的唯一标签。建议使用 eq: 作为公式标签的前缀。

3. 引用公式编号 \ref{...}\eqref{...}

  • \ref{eq:<唯一标签>}: 会插入公式的编号,例如 1
  • \eqref{eq:<唯一标签>}: 同样会插入公式的编号,但它会自动在编号两侧加上括号,例如 (1)。这个命令由 amsmath 宏包提供,通常推荐使用 \eqref 来引用公式,因为它更符合排版习惯。

amsmath 宏包: amsmath 是一个非常强大的用于高级数学排版的宏包,它提供了 equation 环境以及 \eqref 命令等许多有用的功能。好消息是,ctexart 文档类通常会自动加载 amsmath,或者与之高度兼容,所以你很可能可以直接使用这些功能。如果万一遇到 \eqref 未定义的错误,可以在导言区明确添加 \usepackage{amsmath}

让我们看一个示例:

\documentclass{ctexart}
\usepackage{graphicx}
\usepackage{amsmath} % ctexart 通常已包含或兼容,如果 \eqref 报错则取消此行注释

\title{带编号公式和引用示例}
\author{你的名字}
\date{\today}

\begin{document}

\maketitle

\section{引言}\label{sec:introduction}
在物理学中,有许多著名的公式。例如,爱因斯坦的质能方程,见公式~\eqref{eq:einstein}。
我们将在后续推导中用到二次方程的求根公式,如公式~\eqref{eq:quadratic_formula}所示。

\section{重要公式}\label{sec:formulas}

下面是著名的质能守恒定律:
\begin{equation}
    E = mc^2 \label{eq:einstein}
\end{equation}
其中 $E$ 代表能量,$m$ 代表质量,$c$ 代表光速。

对于一个二次方程 $ax^2+bx+c=0$ (其中 $a \neq 0$),其解可以用下面的求根公式给出:
\begin{equation}
    x_{1,2} = \frac{-b \pm \sqrt{b^2-4ac}}{2a} \label{eq:quadratic_formula}
\end{equation}
这个公式在很多领域都有应用。

我们可以通过公式~\eqref{eq:einstein}和公式~\eqref{eq:quadratic_formula}来理解一些基本原理。

\end{document}

效果如下:

在这里插入图片描述

关于更复杂的公式排版:
amsmath 宏包还提供了许多其他强大的环境用于排版更复杂的数学结构,例如:

  • align: 用于排版多行对齐的公式。
  • gather: 用于组合多行居中的公式。
  • multline: 用于排版过长的、需要折行的单行公式。

这些我们可以以后根据需要再学习。目前,掌握 equation 环境和 \eqref 的使用是基础。

生成目录、图目录和表目录

对于较长的文档,如论文,拥有目录、图目录和表目录能够帮助读者快速了解文档结构并找到他们感兴趣的内容。LaTeX 可以非常方便地自动生成这些列表。

1. 生成命令

  • 目录 (Table of Contents): 使用 \tableofcontents 命令。
    LaTeX 会自动收集所有章节命令(如 \chapter(在 ctexbookctexrep 中)、\section\subsection\subsubsection 等)的标题和页码,并生成目录。
  • 图目录 (List of Figures): 使用 \listoffigures 命令。
    LaTeX 会自动收集所有 figure 环境中 \caption 命令定义的图片标题和页码,并生成图目录。
  • 表目录 (List of Tables): 使用 \listoftables 命令。
    LaTeX 会自动收集所有 table 环境中 \caption 命令定义的表格标题和页码,并生成表目录。

2. 放置位置

这些命令通常放置在文档的开头部分,在 \maketitle 命令之后,但在第一个实际章节(例如 \section{引言})之前。对于更复杂的文档结构(如书籍类 ctexbook),它们可能属于“前置内容”(front matter)的一部分。

让我们看一个示例:

我们将基于之前的代码,在 \maketitle 之后加入这三个命令。

\documentclass{ctexart}
\usepackage{graphicx}
% \usepackage{amsmath} % ctexart 通常已包含或兼容

\title{包含目录的综合示例}
\author{你的名字}
\date{\today}

\begin{document}

\maketitle

\newpage % 可选:在标题页后另起一页开始目录
\tableofcontents % 生成目录
\listoffigures % 生成图目录
\listoftables % 生成表目录
\newpage % 可选:在目录列表后另起一页开始正文

\section{引言}\label{sec:introduction}
欢迎阅读本文档。在本节中,我们将介绍主要内容。
稍后我们会在第~\ref{sec:methods}节(第~\pageref{sec:methods}页)讨论研究方法。
我们也会展示一张图片,如图~\ref{fig:sample}所示,以及一个表格,如表~\ref{tab:sampledata}所示。
此外,爱因斯坦的质能方程见公式~\eqref{eq:einstein}。

\section{研究方法}\label{sec:methods}
这里详细描述研究方法。

\subsection{数据收集}\label{ssec:datacollection}
数据收集是关键步骤。

\section{结果展示}\label{sec:results}

\begin{figure}[htbp]
    \centering
    % 请确保你项目中有一张名为 'sample-image.jpg' 的图片,或者替换成你自己的图片名
    \includegraphics[width=0.5\textwidth]{sample-image.jpg}
    \caption{一个示例图片。} % 确保每个图表都有 caption
    \label{fig:sample}
\end{figure}

\begin{table}[htbp]
    \centering
    \caption{示例数据表。} % 确保每个图表都有 caption
    \label{tab:sampledata}
    \begin{tabular}{|l|c|}
        \hline
        类别 & 数值 \\
        \hline
        A & 10 \\
        B & 20 \\
        \hline
    \end{tabular}
\end{table}

在结果展示(第~\ref{sec:results}节)中,我们看到了图~\ref{fig:sample}和表~\ref{tab:sampledata}。

\section{重要公式}\label{sec:formulas}

下面是著名的质能守恒定律:
\begin{equation}
    E = mc^2 \label{eq:einstein}
\end{{equation}

对于一个二次方程 $ax^2+bx+c=0$ (其中 $a \neq 0$),其解可以用下面的求根公式给出:
\begin{equation}
    x_{1,2} = \frac{-b \pm \sqrt{b^2-4ac}}{2a} \label{eq:quadratic_formula}
\end{equation}
我们可以通过公式~\eqref{eq:einstein}和公式~\eqref{eq:quadratic_formula}来理解一些基本原理。

\end{document}

效果如下:

在这里插入图片描述

参考文献 (Bibliography)

撰写学术论文时,规范地引用参考文献并生成参考文献列表是至关重要的一环。手动管理参考文献非常耗时且容易出错。LaTeX 提供了强大的文献管理工具,通常通过 BibTeX 或更现代的 biblatex 包来实现。对于中文和更灵活的格式需求,biblatex 通常是更好的选择,并且与 ctex 宏集配合良好。

1. biblatex 宏包和 .bib 文件

  • biblatex 宏包: 这是一个功能强大且高度可定制的参考文献管理宏包。我们需要在导言区加载它。
  • .bib 文件: 这是一个纯文本数据库文件,你将所有的参考文献条目以特定的格式存储在里面。每个条目都有一个唯一的引用键 (citation key),方便你在正文中引用。你可以给这个文件起任何名字,例如 myreferences.bib

2. .bib 文件中的条目格式

.bib 文件由一系列的条目 (entries) 组成,每条代表一篇参考文献。常见的条目类型有:

  • @article: 用于期刊文章。
    @article{einstein1905,
        author    = {Albert Einstein},
        title     = {Zur Elektrodynamik bewegter K{\"o}rper},
        journal   = {Annalen der Physik},
        volume    = {322},
        number    = {10},
        pages     = {891--921},
        year      = {1905},
        DOI       = {10.1002/andp.19053221004}
    }
    
  • @book: 用于书籍。
    @book{knuth1986,
        author    = {Donald E. Knuth},
        title     = {The TeXbook},
        publisher = {Addison-Wesley},
        year      = {1986},
        series    = {Computers and Typesetting},
        volume    = {A}
    }
    
  • @inproceedings@conference: 用于会议论文。
  • @phdthesis@mastersthesis: 用于学位论文。
  • 等等…

每个条目都以 @类型{引用键, ...} 开始,花括号内是该文献的详细信息,如作者 (author),标题 (title),年份 (year) 等。引用键 (如 einstein1905, knuth1986) 是你在正文中引用该文献时使用的唯一标识符。

3. LaTeX 文档中的设置和命令 (使用 biblatex)

在你的主 .tex 文件中:

  • 加载 biblatex 宏包: 在导言区(\documentclass之后,\begin{document}之前)加入:

    \usepackage[backend=biber, style=numeric]{biblatex}
    
    • backend=biber: biber 是推荐与 biblatex 配合使用的处理程序,功能比传统的 BibTeX 更强大。Overleaf 默认支持 biber
    • style=numeric: 这是参考文献的显示样式。numeric 样式会在正文中显示为数字(如 [1], [2]),并在参考文献列表中按引用顺序列出。其他常用样式有 authoryear (作者-年份,如 Einstein 1905)、alphabetic 等。我们先从 numeric 开始。
  • 指定 .bib 文件: 同样在导言区,告诉 biblatex 你的参考文献数据库在哪里:

    \addbibresource{myreferences.bib} % 将 myreferences.bib 替换为你的 .bib 文件名
    
  • 在正文中引用文献: 使用 \cite{引用键} 命令。

    • 例如:爱因斯坦在他的著名论文 \cite{einstein1905} 中提出了...
  • 打印参考文献列表: 在你希望显示参考文献列表的地方(通常在文档末尾,但在 \end{document} 之前),使用:

    \printbibliography
    

    可以给它一个标题,例如:

    \printbibliography[title={参考文献}]
    

4. 编译过程

使用 biblatexbiber 时,编译过程稍微复杂一些:

  1. 编译你的 .tex 文件 (例如用 XeLaTeX)。
  2. 运行 biber 处理 .bib 文件和引用信息。
  3. 再次编译你的 .tex 文件 (一到两次),以确保引用和参考文献列表都正确生成。

Overleaf 通常会自动处理这个多步骤的编译过程。 当你点击 “Recompile” 时,如果它检测到 biblatex 的使用,它会自动运行 biber 并进行必要的多次 LaTeX 编译。

让我们看一个完整的示例:

第一步:创建 .bib 文件

  1. 在 Overleaf 的左侧文件列表中,点击 “New File” (新建文件) 按钮。

  2. 将文件命名为 myreferences.bib (或者你喜欢的其他名字,但要与 \addbibresource 中的一致)。

  3. 将以下内容复制粘贴到 myreferences.bib 文件中:

    @article{einstein1905,
        author    = {Albert Einstein},
        title     = {Zur Elektrodynamik bewegter K{\"o}rper},
        journal   = {Annalen der Physik},
        volume    = {322},
        number    = {10},
        pages     = {891--921},
        year      = {1905},
        DOI       = {10.1002/andp.19053221004}
    }
    
    @book{knuth1986,
        author    = {Donald E. Knuth},
        title     = {The TeXbook},
        publisher = {Addison-Wesley},
        year      = {1986}
    }
    
    % 一个中文示例 (注意作者名格式,如果是中文名直接写)
    @article{gao2020example,
      author       = {高行健 and 李明},
      title        = {关于LaTeX排版技术在中文科技论文中的应用研究},
      journal      = {计算机应用与软件},
      year         = {2020},
      volume       = {37},
      number       = {5},
      pages        = {100--105},
      keyword      = {LaTeX, 中文排版, 科技论文}
    }
    

第二步:修改主 .tex 文件

\documentclass{ctexart}
\usepackage{graphicx}

% --- BibLaTeX 设置 ---
\usepackage[backend=biber, style=numeric, sorting=none]{biblatex} % sorting=none 按引用顺序
\addbibresource{myreferences.bib} % 确保文件名一致
% --------------------

\title{包含参考文献的示例}
\author{你的名字}
\date{\today}

\begin{document}

\maketitle

\tableofcontents
\listoffigures
\listoftables
\newpage

\section{引言}\label{sec:introduction}
LaTeX 是一个强大的排版工具,由 Donald Knuth 开发的 TeX 系统演化而来 \cite{knuth1986}。
它在学术界被广泛用于撰写论文和书籍。
爱因斯坦在 1905 年发表了多篇重要论文,其中一篇是关于狭义相对论的 \cite{einstein1905}。
对于中文科技论文的排版,也有相关的研究 \cite{gao2020example}。

\section{另一个章节}\label{sec:another}
我们可以在这里再次引用 Knuth 的书 \cite{knuth1986}。
也可以引用不存在的文献 \cite{nonexistentkey},看看会发生什么 (通常会显示引用键并给出警告)。

% ... (你之前的图片、表格、公式等内容可以放在这里) ...

\newpage % 在参考文献列表前另起一页
\printbibliography[title={参考文献}] % 打印参考文献列表,并自定义标题

\end{document}

效果如下:

在这里插入图片描述

添加摘要 (Abstract)

大多数学术论文和学位论文在正文开始前都需要一段摘要 (Abstract),简要概述论文的主要内容、方法、结果和结论。

LaTeX 提供了 abstract 环境来排版摘要:

\begin{abstract}
    这里是你的摘要内容...
\end{abstract}

abstract 环境通常放置在 \maketitle 命令之后,以及目录 (\tableofcontents) 和正文的第一个章节 (\section\chapter) 之前。ctexart 文档类支持这个环境,并会以合适的格式显示摘要。

让我们在之前的示例中加入摘要:

\documentclass{ctexart}
\usepackage{graphicx}
\usepackage[backend=biber, style=numeric, sorting=none]{biblatex}
\addbibresource{myreferences.bib} % 确保你有这个 .bib 文件和其中的条目

\title{包含摘要和参考文献的综合示例}
\author{你的名字}
\date{\today}

\begin{document}

\maketitle

% --- 摘要 ---
\begin{abstract}
本文档旨在演示如何使用 LaTeX 排版包含多种元素的学术文档,
包括章节、图片、表格、数学公式、参考文献以及目录和摘要等。
我们重点介绍了 \texttt{ctexart} 文档类和 \texttt{biblatex} 宏包的基本用法,
并通过具体示例展示了交叉引用和自动列表生成的功能。
希望本文能为 LaTeX初学者提供有益的指导。
\end{abstract}
% ------------

\newpage % 摘要后另起一页开始目录
\tableofcontents
\listoffigures
\listoftables
\newpage

\section{引言}\label{sec:introduction}
LaTeX 是一个强大的排版工具 \cite{knuth1986}。
爱因斯坦的著名论文 \cite{einstein1905} 也是科学文献的典范。
中文排版研究 \cite{gao2020example} 同样重要。

% ... (你之前的其他章节、图片、表格、公式等内容) ...

\newpage
\printbibliography[title={参考文献}]

\end{document}

效果如下:

在这里插入图片描述

一些更复杂的排版功能可以在需要时再学习,这篇博客总结了一些基本的用法,足够日常使用。


网站公告

今日签到

点亮在社区的每一天
去签到