
1. 学术文档制备的范式转移:从字处理到排版编程
在学术界、出版界及高精尖技术文档领域,文档制备工具的选择远非简单的软件偏好问题,而是关乎信息架构、长期维护成本及知识呈现精度的根本性决策。长期以来,文档处理领域存在着两种截然不同的哲学:以 Microsoft Word 为代表的“所见即所得”(WYSIWYG - What You See Is What You Get)模式,以及以 LaTeX 为代表的“所见即所想”(WYSIWYM - What You See Is What You Mean)模式。本章将深入剖析这两种模式的内在逻辑,并论证为何 LaTeX 在特定领域仍具有不可替代的统治地位。
1.1 排版哲学的二元对立
“所见即所得”工具降低了文档创作的准入门槛。用户在屏幕上直接操作视觉元素,调整字体、间距和版式。然而,这种直观性在处理长篇复杂文档时往往转化为巨大的维护负担。研究表明,当文档长度超过 50 页,或包含大量交叉引用、数学公式及图表时,Word 的格式稳定性会显著下降。微小的局部调整(如插入一张图片)可能引发多米诺骨牌效应,导致整篇文档的排版错乱。
相比之下,LaTeX 采用了一种基于标记语言(Markup Language)的编程范式。用户编写的是包含内容与逻辑指令的纯文本源代码(.tex),通过编译器渲染生成最终的 PDF 文档。这种“内容与格式分离”的设计哲学带来了以下核心优势:
- 逻辑结构优先: 作者只需定义“这是章节标题”、“这是参考文献”,具体的视觉呈现(如字号、字体、缩进)由预定义的文档类(Document Class)统一控制。这确保了即便是在数千页的巨著中,格式的一致性也能得到数学级的保证。
- 排版算法的优越性: LaTeX 内置了极高精度的断行与断页算法(如 Knuth-Plass 算法),能够自动处理连字符、单词间距调整及孤行控制,其排版质量——尤其是数学公式的呈现——被公认为达到了印刷工业的最高标准。
- 版本控制的兼容性: 由于源文件是纯文本,LaTeX 项目可以完美集成 Git 等版本控制系统,支持差异比对(Diff)、分支管理及多人协作开发,这在二进制格式的 Word 文档中是极难实现的。
1.2 成本收益分析与适用场景
选择 LaTeX 并非没有代价。其陡峭的学习曲线要求用户记忆指令、理解编译逻辑,并具备一定的调试能力。这种“先苦后甜”的特性决定了其适用人群的特殊性。
| 维度 | Microsoft Word | LaTeX |
|---|---|---|
| 学习曲线 | 极低,即开即用 | 高,需掌握语法与编译逻辑 |
| 排版质量 | 依赖用户手动调整,易不一致 | 自动化,出版级精度 |
| 公式处理 | 鼠标点击或快捷键,效率较低 | 纯文本代码,极快且美观 |
| 参考文献 | 需插件(如 EndNote),易出错 | BibTeX/BibLaTeX 自动管理,极其稳定 |
| 适用场景 | 商业信函、短篇报告、非技术文档 | 学术论文、博士学位论文、书籍、技术手册 |
| 协作模式 | 批注与修订(Track Changes) | 实时云端协作(Overleaf)或 Git 版本控制 |
对于只需要撰写一两页简单商业信函的用户,Word 无疑是效率之选;但对于需要撰写包含数百个公式、引用上百篇文献的博士论文的研究者而言,LaTeX 的自动化特性所节省的时间成本将远远超过其初期的学习投入。
2. Overleaf :LaTeX 的云端进化
传统 LaTeX 工作流要求用户在本地计算机上安装庞大的 TeX 发行版(如 TeX Live, MiKTeX,体积常超 5GB)并配置编辑器。环境配置的复杂性(如宏包缺失、字体路径错误)曾是阻碍新手入门的最大障碍。Overleaf 平台的出现通过“云端容器化”技术彻底解决了这一痛点,将 LaTeX 转型为一种 SaaS(软件即服务)体验。
2.1 核心架构与功能特性
Overleaf 提供了一个基于浏览器的完整 LaTeX 开发环境,其核心价值主张在于消除环境差异与增强协作。
- 零配置环境: 所有项目运行在 Overleaf 维护的云端服务器上,预装了 TeX Live 的完整宏包库。用户无需担心本地缺少某个宏包或编译器版本不兼容的问题。这种环境的一致性对于跨操作系统(Windows/macOS/Linux)的团队协作至关重要。
- 实时协作(Real-time Collaboration): 类似于 Google Docs,Overleaf 支持多名用户同时编辑同一个.tex 文件。系统能够处理并发写入冲突,并提供即时的光标位置同步。这对于导师修改学生论文或多国学者共同撰写稿件是革命性的功能。
- 所见即所想的实时预览: 虽然 LaTeX 本质是非 WYSIWYG 的,但 Overleaf 采用了双栏布局(左侧代码,右侧 PDF),并通过后台自动编译(Auto Compile)技术,实现了近似实时的预览效果,极大降低了新手对“盲写代码”的恐惧感。
2.2 账户分级与资源限制详解
为了维持服务器成本与服务质量,Overleaf 设置了严格的资源配额体系。理解这些限制对于选择合适的方案至关重要。
| 功能指标 | 免费版 (Free Plan) | 标准版 (Standard) | 专业版 (Professional) |
|---|---|---|---|
| 项目总数 | 无限 (Unlimited) | 无限 | 无限 |
| 受邀协作者 | 每项目 人 (仅限注册用户) | 每项目0 人 | 无限 |
| 编译超时限制 | 60 秒 | 240 秒 | 240 秒 |
| 编译服务器性能 | 基础性能 | 优先分配高速服务器 | 优先分配高速服务器 |
| 版本历史 | 最近 24 小时 | 完整历史记录 | 完整历史记录 |
| 高级集成 | 无 | GitHub, Dropbox, Mendeley, Zotero | 包含所有集成 |
| 离线工作 | 仅下载 Zip | 可通过 Git 同步到本地编辑 | 可通过 Git 同步到本地编辑 |
深度解析:
- 协作者限制的规避与风险: 免费版虽然限制“受邀协作者”(Email Invite)为 人,但用户可以通过开启“链接分享”(Link Sharing)功能,将编辑链接发送给多人。这种方式允许无限人数编辑,但安全性较低(任何持有链接者均可修改),且无法精确控制权限。
- 编译超时(Timeout)是硬伤: 免费版 60 秒的编译限制是最大的技术瓶颈。当文档包含大量高分辨率图片、复杂的 TikZ 矢量绘图或极其庞大的参考文献库时,编译过程极易超时导致失败。这是迫使重度用户升级付费版或转向本地编译的主要原因。
- 版本控制的重要性: 标准版提供的完整历史记录(Full Project History)和 Git 集成对于长期项目(如学位论文)至关重要,它允许用户回溯到数月前的任意版本,充当了“后悔药”的角色。
3. LaTeX 文档的解剖学结构
掌握 LaTeX 的关键在于理解其严格的文档结构。一个标准的 LaTeX 文件并非杂乱无章的文字堆砌,而是由具有特定功能的代码块组成的有机体。
3.1 宏观架构:导言区与正文区
每一个 LaTeX 文档在逻辑上都分为两个绝对独立的区域:
-
导言区(The Preamble):
- 范围: 从
\documentclass开始,直到\begin{document}之前。 - 功能: 这是文档的“控制中心”。在这里,作者定义文档的整体类型(如文章、书、幻灯片)、页面尺寸、页边距、加载功能扩展包(Packages)以及定义自定义命令。导言区的内容绝不会直接出现在最终的 PDF 页面上,但它决定了页面呈现的一切规则。
- 典型代码:
\documentclass[12pt, a4paper]{article} % 设定文档类、字号、纸张 \usepackage[utf8]{inputenc} % 设定输入编码 \usepackage{graphicx} % 加载图片支持 \title{文档标题} % 设定元数据 - 范围: 从
-
正文区(The Body):
- 范围: 被包裹在
\begin{document}和\end{document}之间的部分。 - 功能: 这是文档的“内容容器”。所有的文字、公式、图表代码都必须放置于此。任何写在
\end{document}之后的内容都会被编译器无视。
- 范围: 被包裹在
3.2 语法基石:命令与环境
LaTeX 的语法由两个基本单元构成:命令(Commands)和环境(Environments)。
- 命令(Commands): 以反斜杠
\开头,后跟命令名称。命令可以接受参数。- 必需参数: 用花括号
{}包裹。例如\textbf{加粗},必须告诉 LaTeX 加粗什么内容。 - 可选参数: 用方括号
[]包裹,通常位于命令名和必需参数之间。例如\documentclass[12pt]{article},其中12pt是可选的,若不写则默认10pt。 - 无参命令: 如
\newpage(换页)、\today(今日日期),直接执行动作或插入特定内容。
- 必需参数: 用花括号
- 环境(Environments): 用于处理具有特定格式的大段内容。所有环境都必须成对出现。
- 语法:
\begin{name}... \end{name}。 - 示例:
equation环境用于公式,itemize环境用于列表,center环境用于居中对齐。 - 嵌套规则: 环境可以嵌套,但必须像洋葱皮一样严格对应,不能交叉。例如
\begin{A} \begin{B}... \end{B} \end{A}是合法的,而\begin{A} \begin{B}... \end{A} \end{B}将导致致命编译错误。
- 语法:
3.3 文档类的选择策略
\documentclass 是文档的第一行代码,它决定了整个文件的排版骨架。
| 文档类 (Class) | 适用场景 | 结构特征 | 备注 |
|---|---|---|---|
article |
期刊论文、短篇报告、作业 | 最高层级为 \section |
无章节(Chapter)概念,紧凑排版 |
report |
硕士/博士学位论文、长篇技术报告 | 最高层级为 \chapter |
默认单面打印,章节起始页换页 |
book |
出版书籍 | 包含 \part和 \chapter |
默认双面打印,奇偶页页眉不同 |
beamer |
学术演讲幻灯片 | 基于 frame环境 |
替代 PowerPoint,支持动态覆盖 |
ctexart/ctexbook |
中文文档 | 预设中文支持 | 针对中文排版优化的 article/book 变体 |
4. 文本格式化与页面布局
虽然 LaTeX 提倡结构化写作,但在实际撰写中,作者仍需对文本进行精细的格式控制。
4.1 字体样式与字号控制
LaTeX 提供了语义化和视觉化两套字体控制命令。推荐使用语义化命令,以便于全局样式的统一修改。
- 字重与样式:
- 加粗:
\textbf{text}(Text Bold Face) - 斜体:
\textit{text}(Text Italic)。注意:在中文排版中,由于汉字斜体视觉效果不佳,通常使用\emph{text},在 ctex 宏包下默认渲染为楷体以示强调。 - 下划线:
\underline{text} - 等宽字体:
\texttt{text}(Typewriter),常用于排版代码片段或文件名。 - 小型大写字母:
\textsc{text}(Small Caps),常用于人名或首字母缩写。
- 加粗:
- 字号调整:LaTeX 的字号是相对的。在
documentclass[12pt]{article}中设定了基准字号为2pt 后,以下命令会基于基准按比例缩放:
\tiny < \scriptsize < \footnotesize < \small < \normalsize (基准) < \large < \Large < \LARGE < \huge < \Huge2
4.2 列表系统的构建
结构化的列表是技术文档的基石。LaTeX 原生支持三种列表模式,均支持多层嵌套。
- 无序列表 (Unordered List):使用 itemize 环境。默认符号为圆点(bullet),第二层为破折号。
\begin{itemize} \item 核心论点一 \item 核心论点二 \end{itemize} - 有序列表 (Ordered List):使用 enumerate 环境。默认生成., 2., 3. 编号。进阶技巧: 通过加载
usepackage{enumitem},可以轻松自定义编号格式。例如begin{enumerate}[label=(alph*)]将生成 (a), (b), (c) 格式的编号,这在编写试卷选择题时极其实用。 - 描述列表 (Description List):使用 description 环境,用于名词解释或定义。
\begin{description} \item[编译器] 将源代码转换为可执行文件的程序。 \item[解释器] 直接执行源代码的程序。 \end{description}
4.3 特殊字符的转义处理
LaTeX 预留了若干字符作为指令标记,如果需要在正文中直接显示这些字符,必须使用反斜杠进行转义(Escape)。
| 特殊字符 | LaTeX 功能含义 | 正文输出代码 |
|---|---|---|
% |
注释引导符 | \% |
$ |
数学模式界定符 | \$ |
& |
表格列分隔符 | \& |
_ |
数学下标 | \_ |
{ } |
参数界定符 | \{ \} |
# |
宏参数 | \# |
\ |
命令引导符 | \textbackslash |
^ |
数学上标 | \textasciicircum |
~ |
不可断行空格 | \textasciitilde |
5. 数学排版:理工科的核心生产力
数学公式排版是 LaTeX 的灵魂。其基于逻辑描述的输入方式,使得作者可以像书写代码一样构建复杂的数学结构,而无需像在 Word 中那样频繁点击鼠标寻找符号。
5.1 数学模式的两种形态
LaTeX 严格区分文本模式(Text Mode)与数学模式(Math Mode)。任何数学符号必须进入数学模式才能被正确渲染。
- 行内公式 (Inline Mode):
- 场景: 公式嵌入在段落文字流中,与正文混排。
- 语法: 使用一对美元符号
$... $或\(... \)。 - 排版特征: 也就是“压缩模式”。为了不破坏行间距,巨算符(如求和
\sum、积分\int)的上下限会被移动到符号右侧,分式\frac的字号会被强制缩小。 - 示例:
根据 $E=mc^2$ 可知...
- 行间公式 (Display Mode):
- 场景: 公式独占一行,居中显示,用于强调重要推导。
- 语法:
- 无编号:
\[... \]或\begin{equation*}... \end{equation*}。 - 自动编号:
\begin{equation}... \end{equation}。
- 无编号:
- 排版特征: 符号完全展开,积分号和求和号的上下限垂直居中,分式保持正常大小,视觉冲击力强。
5.2 核心数学符号表详解
进行数学排版前,务必在导言区加载美国数学会提供的宏包:\usepackage{amsmath} 和 \usepackage{amssymb}。
5.2.1 希腊字母与重音
| 符号 | 代码 | 符号 | 代码 | 符号 | 代码 |
|---|---|---|---|---|---|
| \alpha | \alpha |
\theta | \theta |
\Phi | \Phi |
| \beta | \beta |
\lambda | \lambda |
\Psi | \Psi |
| \gamma | \gamma |
\pi | \pi |
\Omega | \Omega |
| \Delta | \Delta |
\sigma | \sigma |
\partial | \partial |
(注意:大写希腊字母通常只需将命令首字母大写,如 \Gamma。小写命令首字母大写无效的,通常是因为该字母与拉丁字母同形,如大写 Alpha 就是 A)
5.2.2 常用运算符与关系符
| 类别 | 符号 | 代码 | 说明 |
|---|---|---|---|
| 基础运算 | \times | \times |
乘号(非字母 x) |
| \div | \div |
除号 | |
| \pm | \pm |
加减号 | |
| 集合论 | \in | \in |
属于 |
| \cup | \cup |
并集 | |
| \cap | \cap |
交集 | |
| \subset | \subset |
子集 | |
| 逻辑与关系 | \neq | \neq |
不等于 |
| \leq | \leq |
小于等于 | |
| \geq | \geq |
大于等于 | |
| \forall | \forall |
任意 | |
| \exists | \exists |
存在 | |
| \rightarrow | \rightarrow |
推出/右箭头 |
5.2.3 复杂结构:上下标、分式与根号
- 上标与下标: 使用
^和_。- 单个字符:
x^2 - 多个字符(必须用花括号包裹):
x^{2\alpha},a_{i,j}。初学者常犯错误是写成x^2\alpha,导致 alpha 掉下来变成普通乘法。
- 单个字符:
- 分式:
\frac{分子}{分母}。- 嵌套分式:
\frac{a}{\frac{b}{c}}。
- 嵌套分式:
- 根号:
\sqrt{x}。- n 次根:
\sqrt[n]{x}。
- n 次根:
5.3 矩阵与多行公式对齐
矩阵排版:
使用 amsmath 包提供的专用环境,无需手动画格子。
pmatrix: 圆括号矩阵\begin{pmatrix} a & b \\ c & d \end{pmatrix}bmatrix: 方括号矩阵\begin{bmatrix} a & b \\ c & d \end{bmatrix}vmatrix: 行列式(竖线)\begin{vmatrix} a & b \\ c & d \end{vmatrix}
代码段
A = \begin{bmatrix}
& x & x^2 \\
& y & y^2 \\
& z & z^2
\end{bmatrix}
语法要点: & 分隔列,\\ 分隔行。
多行对齐(Alignment):
推导公式时,需要等号对齐。严禁使用空格强行对齐!应使用 align 环境。
代码段
\begin{align}
f(x) &= (x+a)(x+b) \label{eq:step1} \\
&= x^2 + (a+b)x + ab \label{eq:step2}
\end{align}
解析: & 符号放在等号之前,表示对齐锚点。每行末尾用 \\ 换行。align 环境默认给每一行都编号。若某一行不需要编号,在行末添加 \notag 指令。若所有行都不需要编号,使用 align* 环境。
6. 图形元素与浮动体机制
在 Word 中,图片被视为字符,随光标移动。而在 LaTeX 中,图片和表格被设计为“浮动体”(Floats)。这是一种智能排版机制:用户只提供内容,而 LaTeX 引擎根据页面剩余空间、美学规则(如避免页面仅剩一行文字)自动决定将图表放置在当前页顶部、底部或单独一页。
6.1 插入图片的标准流程
要在文档中插入图片,必须在导言区加载 \usepackage{graphicx}。
代码段
\begin{figure}[htbp]
\centering
\includegraphics[width=0.8\textwidth]{images/result_graph.png}
\caption{实验结果对比图}
\label{fig:results}
\end{figure}
代码详解:
\begin{figure}[...]:声明这是一个浮动体环境。- 位置参数
[htbp]:这是给 LaTeX 的建议列表,按优先级排序:h(here): 尽量放在代码所在位置。t(top): 页面顶部。b(bottom): 页面底部。p(page): 单独一页存放浮动体。!(override): 忽略部分内置的美学参数(如“单页图片占比上限”),强制尝试放置。常用组合为[h!]或[htbp]。
\centering:使图片居中,否则默认左对齐。\includegraphics[options]{filename}:核心指令。width=0.8\textwidth:强烈推荐使用相对宽度而非绝对单位(如 5cm)。这意味着图片宽度永远占据文本版心宽度的 80%,无论纸张大小如何变化,图片比例始终协调。
\caption{...}:自动生成图注(如“图:实验结果...”)。\label{...}:生成内部索引锚点,用于交叉引用。注意:Label 必须放在 Caption 之后,否则引用编号会出错。
6.2 子图排版 (Subfigures)
科研论文常需要将多张小图并排展示(如 (a) 图,(b) 图)。现代 LaTeX 推荐使用 subcaption 宏包(即 subfigures 环境)。
代码段
\usepackage{subcaption}...
\begin{figure}[h!]
\centering
\begin{subfigure}[b]{0.45\textwidth}
\includegraphics[width=\textwidth]{img_a.png}
\caption{条件 A}
\end{subfigure}
\hfill % 弹性空格,将两图推向两侧
\begin{subfigure}[b]{0.45\textwidth}
\includegraphics[width=\textwidth]{img_b.png}
\caption{条件 B}
\end{subfigure}
\caption{不同条件下的微观结构对比}
\end{figure}
7. 表格数据的表达
表格是 LaTeX 中最令初学者头痛的部分,因为其语法繁琐且不够直观。但一旦掌握,其生成的表格(尤其是学术三线表)具有极高的专业度。
7.1 基础表格语法
最基本的表格由 tabular 环境构建。
代码段
\begin{table}[t]
\centering
\caption{基础数据表}
\begin{tabular}{|l|c|r|} % 列格式定义
\hline
姓名 & 年龄 & 分数 \\ \hline
Alice & 24 & 95 \\
Bob & 22 & 88 \\ \hline
\end{tabular}
\end{table}
列格式说明:
l: 左对齐 (Left)c: 居中 (Center)r: 右对齐 (Right)|: 竖线边框。注:现代排版审美极力反对在表格中使用竖线。
7.2 专业三线表 (Booktabs)
学术出版界普遍认为,竖线会割裂数据的横向阅读流。因此,推荐使用 booktabs 宏包制作“三线表”。
代码段
\usepackage{booktabs}...
\begin{table}[h]
\centering
\begin{tabular}{lcc}
\toprule % 粗顶线
模型 & 准确率 (\%) & 召回率 (\%) \\
\midrule % 细中线
SVM & 85.2 & 78.4 \\
ResNet & 92.1 & 89.5 \\
\bottomrule % 粗底线
\end{tabular}
\end{table}
这种表格仅在头部和底部有粗线,中间有细分隔线,不仅美观,而且不仅数据层次分明 。
7.3 复杂表格与工具推荐
对于包含合并单元格(\multirow, \multicolumn)的复杂表格,手写代码极易出错。强烈建议使用 TablesGenerator (https://www.tablesgenerator.com/)。这是一个在线可视化编辑器,用户像在 Excel 中一样操作表格,然后一键复制生成的 LaTeX 代码到 Overleaf 中。
8. 参考文献与引用管理
手动管理参考文献是论文写作的噩梦:格式繁多(APA, IEEE, MLA)、排序复杂、修改困难。LaTeX 通过建立独立的文献数据库,彻底自动化了这一过程。
8.1 数据库构建:BibTeX 文件
用户需创建一个扩展名为 .bib 的纯文本文件(如 ref.bib),其中存储了文献的元数据。
代码段
@article{vaswani2017attention,
title={Attention is all you need},
author={Vaswani, Ashish and others},
journal={Advances in neural information processing systems},
volume={30},
year={2017}
}
@book{knuth1984texbook,
title={The TeXbook},
author={Knuth, Donald Ervin},
year={1984},
publisher={Addison-Wesley}
}
提示: 几乎所有学术数据库(Google Scholar, IEEE Xplore, Web of Science)都提供 "Export to BibTeX" 功能,直接复制即可。
8.2 BibTeX 与 BibLaTeX 的技术抉择
目前存在两种主流的引用处理后端:
-
BibTeX (传统标准):
- 优点: 兼容性极好,所有老牌期刊模板都支持。
- 缺点: 对非拉丁字符(如中文作者名)支持差,样式定制极难(需编程逆波兰表达式)。
- 用法:
\bibliographystyle{plain} % 设定样式 \bibliography{ref} % 导入 ref.bib - 引用命令:
\cite{key}
-
BibLaTeX (现代推荐):
- 优点: 原生支持 UTF-8(完美处理中文文献),样式定制简单,功能极其强大(支持多套参考文献、按章节引用)。
- 缺点: 部分老旧期刊投稿系统可能不支持。
- 用法:
\usepackage[style=ieee, backend=biber]{biblatex} \addbibresource{ref.bib} ... \printbibliography % 在需要打印参考文献的地方- 建议: 在 Overleaf 上从零开始写论文时,首选 BibLaTeX。
9. 本地化与中文排版解决方案
早期的 LaTeX 中文支持极其繁琐(需要 CJK 宏包和字体生成)。得益于 ctex 宏集和 XeLaTeX 引擎的普及,现在在 Overleaf 上撰写中文文档已变得轻而易举。
9.1 标准中文配置方案
要在 Overleaf 上完美编译中文,必须遵循“引擎+宏包”的双重配置:
-
设置编译器 (Compiler):在 Overleaf 项目页面的左上角 "Menu" -> "Settings" -> "Compiler" 中,必须选择 XeLaTeX。原因: 传统的 pdfLaTeX 不支持 UTF-8 字符集,而 XeLaTeX 直接支持 Unicode 和调用系统字体,是处理中日韩文字的标准引擎3。
-
使用 ctex 宏包或文档类:
-
方案 A (推荐 - 整体接管): 直接使用
ctexart(对应 article),ctexrep(对应 report),ctexbook(对应 book) 文档类。代码段\documentclass{ctexart} \begin{document} 你好,LaTeX!这里可以无缝混排 English。 \end{document}优势: 自动将 "Abstract" 翻译为 "摘要","Table of Contents" 翻译为 "目录",并预设了符合中文排版习惯的行距和首行缩进 。
-
方案 B (插件模式): 如果必须使用期刊提供的特定英文模板(如
IEEEtran),则加载ctex宏包。
\documentclass{IEEEtran} \usepackage{ctex} \begin{document} -
9.2 字体配置与繁体支持
Overleaf 的服务器基于 Linux,并没有预装 Windows 的“宋体/黑体”。ctex 宏包会自动调用服务器上开源的 Fandol 字体系列(FandolSong, FandolHei)。
如果需要繁体中文或特定字体,可以使用 xeCJK 宏包进行底层配置:
代码段
\usepackage{xeCJK}
\setCJKmainfont{Noto Serif CJK SC} % 设置谷歌开源宋体
\setCJKsansfont{Noto Sans CJK SC} % 设置谷歌开源黑体