Overleaf和Latex

单文件编辑

学习视频

Overleaf是一个基于Latex的在线编辑器。其中Latex是一种排版语言,和word不同,是通过写代码的方式来排版语言。Overleaf可以很方便的使用它。

界面介绍

首先我们可以进入Overleaf,官网地址:https://v2.overleaf.com/

首先我们可以创建一个空白项目

image-20260609213028802

工作页面介绍

image-20260609214229066

其中下载的源码可以在上个页面中创建项目是选中upload上传项目源码

image
当我插入图片较多时,编译时间会很慢,甚至可能触发编译超时限制(免费版20s,付费版2min),可以开启这里的草稿模式,加快编译,简化图片加载。

下面按论文写作常用功能分类,整理了一份标签和对应导入包的笔记,采用"先给标签,再给导入包"的形式,方便快速查找和使用。

📁 一、基础结构

这是每份LaTeX文档最基础的部分,不依赖额外宏包,但必须了解。

标签/命令 用途 说明
\documentclass{article} 定义文档类型 常用:article(论文/文章)、report(报告)、book(书籍)。中文写作可使用ctexartctexrepctexbook代替
\title{标题} 设置标题 写在导言区
\author{作者名} 设置作者 写在导言区
\date{\today} 设置日期 \today自动显示编译当天日期
\maketitle 生成标题页 写在\begin{document}之后
\tableofcontents 生成目录 写在标题之后
\section{标题} 一级标题 *可取消编号,如\section*{摘要}
\subsection{标题} 二级标题
\subsubsection{标题} 三级标题
\begin{abstract}...\end{abstract} 摘要环境
\begin{keyword}...\end{keyword} 关键词环境
\textbf{文本} 粗体
\textit{文本} 斜体
\begin{itemize}...\end{itemize} 无序列表 列表项用\item
\begin{enumerate}...\end{enumerate} 有序列表 列表项用\item

🌐 二、中文支持

如果论文中写中文,以下两样缺一不可。

推荐标签:

标签 用途 说明
ctex 中文排版 标准解决方案
XeLaTeX / LuaLaTeX 编译器选择 支持Unicode编码

导入包(导言区):

\documentclass{ctexart}                    % 中文文档类型(推荐)
% 或者在原有文档类基础上:
\usepackage[UTF8]{ctex}                     % 支持中文排版

⚠️ Overleaf 操作提醒:使用中文时,需将 Overleaf 右上角 Compiler 改为 XeLaTeXLuaLaTeX

📐 三、页面与版面设置

标签 导入包 用途
\newgeometry geometry 设置页边距、纸张大小
fancyhdr fancyhdr 设置页眉页脚
\onehalfspacing setspace 设置1.5倍行距
multicol multicol 分栏排版
indentfirst indentfirst 首行缩进(中文写作常用)

导言区导入示例:

\usepackage{geometry}
\geometry{left=2.54cm,right=2.54cm,top=3.09cm,bottom=3.09cm}  % 设置页边距

\usepackage{fancyhdr}
\pagestyle{fancy}
\lhead{页眉左}
\chead{页眉中}
\rhead{页眉右}
\lfoot{}
\cfoot{\thepage}
\rfoot{}
\renewcommand{\headrulewidth}{0.4pt}        % 页眉横线宽度

\usepackage{setspace}
\onehalfspacing                             % 1.5倍行距

\usepackage{indentfirst}
\setlength{\parindent}{2.45em}              % 首行缩进两个汉字长度

🧮 四、数学公式

推荐使用美国数学学会(AMS)提供的宏包组合。

标签 导入包 用途
\begin{equation}...\end{equation} amsmath 带编号的公式环境
\begin{align}...\end{align} amsmath 多行公式对齐环境
\begin{gather}...\end{gather} amsmath 多行居中公式
\label{标签名} + \eqref{标签名} amsmath 公式交叉引用
\notag amsmath 阻止某行公式编号
\tag{自定义编号} amsmath 手动修改公式编号
各种额外数学符号 amssymb 箭头、关系符号、集合符号等
\mathbb{字母} amsfonts 黑板粗体字母(如表示实数集(\mathbb{R}))
\begin{theorem}...\end{theorem} amsthm 定理环境

导言区导入:

\usepackage{amsmath}          % 基础数学排版
\usepackage{amssymb}          % 额外数学符号(已包含 amsfonts,无需单独加载)
\usepackage{amsthm}           % 定理环境(需放在 amsmath 之后)

公式交叉引用示例:

\begin{equation}
a^2 + b^2 = c^2 \label{eq:pythagoras}
\end{equation}
根据公式 \eqref{eq:pythagoras} 可得...   % \eqref 自动加括号

🖼️ 五、图表插入

标签 导入包 用途
\includegraphics[width=0.8\textwidth]{图片文件名} graphicx 插入图片
\begin{figure}[htbp]...\end{figure} —(基础浮体) 图片浮体环境
\caption{标题} caption 控制图表标题样式,支持多语言编号
[H] 位置选项 float 强制图片放在当前位置
subfigure 环境 subcaption 多个子图并排,各自有独立标题
\begin{table}...\end{table} —(基础浮体) 表格浮体环境

导言区导入:

\usepackage{graphicx}        % 插入图片
\usepackage{caption}         % 图表标题样式控制
\usepackage{subcaption}      % 子图功能(不可与 subfig 同时使用)
\usepackage{float}           % 允许用 [H] 强制放置

插入单张图片:

\begin{figure}[htbp]          % h=here, t=top, b=bottom, p=单独一页
    \centering
    \includegraphics[width=0.8\textwidth]{figures/example.png}
    \caption{图片标题}
    \label{fig:example}
\end{figure}

插入并排子图:

\begin{figure}[htbp]
    \centering
    \begin{subfigure}[b]{0.45\textwidth}
        \includegraphics[width=\textwidth]{figures/left.png}
        \caption{左图}
        \label{subfig:left}
    \end{subfigure}
    \hfill
    \begin{subfigure}[b]{0.45\textwidth}
        \includegraphics[width=\textwidth]{figures/right.png}
        \caption{右图}
        \label{subfig:right}
    \end{subfigure}
    \caption{并排子图}
    \label{fig:sidebyside}
\end{figure}

💡 交叉引用:用 \label{标签名} 为图表做标记,用 \ref{标签名} 引用图号。

📊 六、表格

标签 导入包 用途
\begin{tabular}{列格式}...\end{tabular} —(基础命令) 基础表格环境
\toprule\midrule\bottomrule booktabs 三线表专业横线
\multirow{行数}{*}{内容} multirow 纵向合并单元格
\multicolumn{列数}{列格式}{内容} —(基础命令) 横向合并单元格
\makecell[c]{内容} makecell 表格内换行
\resizebox{宽度}{高度}{内容} graphicx 调整表格整体宽度
\renewcommand{\arraystretch}{比例} —(基础命令) 调整表格行高

导言区导入:

\usepackage{booktabs}        % 三线表
\usepackage{multirow}        % 纵向合并单元格
\usepackage{makecell}        % 表格内换行

实用建议:LaTeX 表格手动编辑较繁琐。推荐使用在线生成器 TablesGenerator.com ,在 Excel 中打好表格后复制到该网站,点击 Generate 复制代码即可使用。
另外,我们经常在ref前加~。防止Tabel和编号换行,使其称为不可断空格,绑到一起

📚 七、参考文献

推荐方案对比:

方案 适用场景 推荐包
BibTeX + natbib 初学者入门,格式要求传统 natbib
BibLaTeX + biber 多语言、高级定制需求 biblatex

方案一:BibTeX + natbib(推荐新手)

导言区导入:

\usepackage{natbib}
\bibliographystyle{plainnat}      % 参考文献格式

正文引用:

\cite{引用标识}                    % 普通引用
\citep{引用标识}                   % 括号式引用
\citet{引用标识}                   % 作者+年份式引用

文档末尾生成文献列表:

\bibliography{references}          % references.bib 文件名

创建 .bib 文件,示例条目:

@article{key2025,
    author = {作者名},
    title = {文章标题},
    journal = {期刊名},
    volume = {卷号},
    pages = {页码},
    year = {2025}
}

💡 Overleaf 操作提醒:在 Overleaf 左侧文件列表中新建一个 .bib 文件,将所有 BibTeX 条目粘贴进去;编译顺序为:PDFLaTeX → BibTeX → PDFLaTeX → PDFLaTeX

🔗 八、交叉引用与超链接

标签 导入包 用途
\label{标签名} —(基础命令) 给公式、图表、章节做标记
\ref{标签名} —(基础命令) 交叉引用(仅显示编号)
\pageref{标签名} —(基础命令) 引用所在页码
\autoref{标签名} hyperref 自动添加类型名(如"Figure 1")
\href{URL}{显示文字} hyperref 插入超链接

导言区导入:

\usepackage{hyperref}        % 生成超链接,PDF书签
\usepackage{cleveref}        % 增强交叉引用(需放在 hyperref 之后)

⚠️ 重要提醒hyperref 应放在导言区最后或倒数第二的位置,以免与其他包冲突。

📝 九、其他常用工具包

标签 导入包 用途
\begin{lstlisting}...\end{lstlisting} listings 代码块高亮显示
enumitem enumitem 自定义列表样式(间距、编号格式等)
url url URL网址自动换行(hyperref已自带此功能,无需单独加载)
xcolor xcolor 文本/表格颜色设置
microtype microtype 优化微排版,减少溢行

📌使用 Overleaf 的要点

  1. 先编译看效果——每写完一段内容就点一下 Compile(重新编译),养成习惯比什么都强。右侧预览窗口会即时显示排版结果。

  2. 模板是最快的起点——在 Overleaf 首页点击"New Project"→"Journal Article",选择目标期刊或会议的模板直接套用,比自己从零开始写省很多时间。

  3. 导言区和正文区要分清——\begin{document}之前全是导言区(加载包、写命令),之后全是正文区(写实际内容)。混淆会导致编译报错。

  4. 记住最常用的交叉引用流程——先 \label{fig:example},再 \ref{fig:example}。标签名建议有含义,如 fig: 表示图表、sec:表示章节、eq:表示公式。

  5. 多用注释——在 Overleaf 中选中多行代码,按 Ctrl+/ 可以一键添加 % 注释,暂时屏蔽不用的代码块。

  6. 出错不要慌——LaTeX 报错信息通常会在出问题的那一行附近标出,大部分初学者报错来自:少写了 }}、导言区写入了实际内容、或包和包之间有冲突。

补充多文件操作

🧩 分模块写作 · 速查卡片

场景 用什么命令 一句话说明 会不会强制换页
加载普通子文件(引言、方法等) \input{文件} 直接把子文件内容粘贴到这里 不会
加载完整的一章(想单独编译节省时间) \include{文件} 自动换页,且可以只编译当前章 (新页开始)
希望子文件能单独编译(推荐) subfiles 宏包 主文件和子文件都能编译,非常灵活 由你控制

优先推荐 subfiles:一开始就采用,后期改一个章节时直接点进子文件按 Compile,一秒就看到效果,不用反复编译整篇论文。


📁 一个真实的论文项目结构

my_thesis/                     # Overleaf 项目根目录
├── main.tex                   # 主文件(只有框架)
├── chapters/                  # 分章节的文件夹
│   ├── introduction.tex
│   ├── related_work.tex
│   ├── methodology.tex
│   ├── experiments.tex
│   └── conclusion.tex
├── figures/                   # 图片文件夹
│   └── example.png
└── references.bib             # 参考文献库

🔧 实战 ① 最简单常用:\input (不换页,适合任何部分)

main.tex 内容:

\documentclass[12pt,a4paper]{article}
\usepackage[UTF8]{ctex}   % 中文
\usepackage{graphicx}

\title{我的毕业论文}
\author{你的名字}

\begin{document}

\maketitle
\tableofcontents

% 分模块加载 —— 每个子文件只负责自己的内容
\input{chapters/introduction}
\input{chapters/related_work}
\input{chapters/methodology}
\input{chapters/experiments}
\input{chapters/conclusion}

\bibliographystyle{plain}
\bibliography{references}

\end{document}

子文件示例:chapters/introduction.tex

\section{引言}

这是论文的第一部分。分模块写作的好处是:

\begin{itemize}
    \item 你和导师可以同时编辑不同章节,互不干扰。
    \item 修改一个文件不会意外影响其他部分。
    \item 阅读和维护起来更轻松。
\end{itemize}

图 \ref{fig:overview} 展示了系统架构。
\begin{figure}[htbp]
    \centering
    \includegraphics[width=0.6\textwidth]{figures/example.png}
    \caption{系统总览}
    \label{fig:overview}
\end{figure}

复习提示\input 是最安全、最直观的。除了 \includeonly 优化编译外,90% 的情况都用 \input


⚙️ 实战 ② 加速编译:\include + \includeonly

当论文已经很长(>20页),每次编译都等很久,可以用这个技巧。

修改 main.tex

% 告诉 LaTeX:现在只编译 introduction 和 methodology 这两章
\includeonly{chapters/introduction, chapters/methodology}

\begin{document}
% ... 其他不变 ...
\include{chapters/introduction}    % 注意这里用 \include
\include{chapters/related_work}
\include{chapters/methodology}
\include{chapters/experiments}
\include{chapters/conclusion}
\end{document}

效果:只生成 introductionmethodology 的内容,其他章会被跳过(但页码、引用编号依然连续)。写哪几章就 \includeonly 哪几章。

🚨 注意\include 会自动 换新页。如果不想换页,不要用它加载小节。


🚀 实战 ③ 最强灵活:subfiles 宏包(子文件也可独立编译)

这样可以实现编辑哪个文件是,编译哪个文件。
当编译主文件是会编译全部文件,此时和input方式没有区别

1️⃣ 主文件 main.tex 改动:

\documentclass[12pt,a4paper]{article}
\usepackage[UTF8]{ctex}
\usepackage{graphicx}
\usepackage{subfiles}   % 加载 subfiles 宏包

\begin{document}

\maketitle
\tableofcontents

% 用 \subfile 代替 \input
\subfile{chapters/introduction}
\subfile{chapters/related_work}
\subfile{chapters/methodology}
\subfile{chapters/experiments}
\subfile{chapters/conclusion}

\end{document}

2️⃣ 子文件(例如 chapters/introduction.tex)必须改成这样:

\documentclass[../main.tex]{subfiles}   % 指定主文件路径

\begin{document} % 文档开始

\section{引言}

这里是引言内容。你现在可以 **直接点击 Overleaf 左侧这个文件**,
然后点绿色的 “Recompile” 按钮,它就会单独编译这一章,
生成完整的 PDF(带全文导言区样式)。

\subsection{一个子小节}

即使图片在父文件夹的 figures/ 目录下,也能正常引用:
\begin{figure}[htbp]
    \centering
    \includegraphics[width=0.5\textwidth]{../figures/example.png}
    \caption{注意路径要加 `../`}
    \label{fig:test}
\end{figure}

\end{document}

子文件独立编译的最大好处:你写 introduction.tex 时,不用每次都编译整个 main.tex,节省大量时间。
⚠️ 常见错误:路径中的括号 ( ) 会导致 subfiles 编译失败,所以文件夹名和文件名尽量只用字母

posted @ 2026-06-10 16:24  韩熙隐ario  阅读(76)  评论(0)    收藏  举报