1. 项目缘起一个看似简单却常被忽略的痛点如果你在学术写作中用过 Overleaf大概率遇到过这个场景论文主体洋洋洒洒图表公式一应俱全但到了参考文献部分一旦涉及中文文献麻烦就来了。引用标记\cite{xxx}编译出来可能是个问号“?”或者干脆在最终的 PDF 里找不到对应的条目。更常见的是文献列表里中文作者名、期刊名变成了乱码或者拼音与汉字混杂显得极不专业。这问题看似是个“小毛病”但在追求严谨的学术写作中却是实打实的“硬伤”。我最初也以为这只是个编码问题随便搜个教程改改就能解决。但实际操作下来才发现从.bib文件编码、编译引擎选择到biblatex宏包配置再到字体支持环环相扣任何一个环节没处理好都可能前功尽弃。网上很多教程要么过于简略只给命令不说原理要么场景单一无法覆盖你遇到的具体问题。所以这篇内容不是另一个“三步解决 Overleaf 中文引用”的速成帖。我想和你系统性地梳理一遍在 Overleaf 这个云端 LaTeX 环境中优雅且正确地处理中文参考文献的完整链路。我们会从问题的根源讲起然后一步步搭建一个健壮的解决方案最后分享几个我踩过坑才总结出来的实战技巧。无论你是刚开始接触 LaTeX 的研究生还是需要处理大量中外文混合文献的科研工作者这套方法都能让你少走弯路。2. 乱码从何而来理解 LaTeX 的文本处理流程要解决问题得先理解问题出在哪个环节。Overleaf 本质上是一个运行在服务器端的 LaTeX 编译环境。当你点击“编译”时背后发生了一系列事情而中文乱码通常发生在“文本输入”和“编译处理”的衔接处。2.1 核心冲突UTF-8 编码与 pdflatex 的默认假设现代操作系统和文本编辑器包括 Overleaf 的在线编辑器默认使用 UTF-8 编码来保存包含中文的文本。UTF-8 是一种变长编码一个中文字符通常由 3 到 4 个字节表示。然而LaTeX 的传统编译引擎pdflatex在设计之初主要面向西文文本其底层默认假设文本是 ASCII 或 Latin-1 等单字节编码。当它遇到 UTF-8 编码的多字节字符时如果未经过正确声明和配置它就无法正确识别这些字节序列从而将其解释为多个独立的、无意义的拉丁字符这就是我们看到乱码的根本原因。一个常见的误解有人认为在.bib文件里把中文转成\text{中文}或者\CJK{中文}之类的命令就能解决。这其实是在回避编码问题而且会让.bib文件变得难以阅读和维护更不利于从文献管理软件如 Zotero, JabRef导出。我们的目标应该是让 LaTeX 原生地、正确地理解 UTF-8 编码的中文。2.2 编译引擎的选择XeLaTeX 与 LuaLaTeX 的优势既然pdflatex对 UTF-8 支持不佳那么换用原生支持 Unicode 的现代编译引擎就是最直接的思路。这就是XeLaTeX和LuaLaTeX。XeLaTeX 它直接使用操作系统或项目中的字体文件通过fontspec宏包来调用对 TrueType/OpenType 字体支持非常好。因为直接处理 Unicode 文本所以对 UTF-8 编码的中文支持是天然的。它的编译路径相对简单清晰。LuaLaTeX 在 XeLaTeX 的基础上内嵌了 Lua 脚本引擎功能更强大在处理复杂排版如非拉丁文字、复杂表格和动态内容时更有优势。它同样原生支持 UTF-8。对于中文参考文献处理两者都是优秀的选择通常更推荐 XeLaTeX因为其生态成熟问题更少。在 Overleaf 中你可以通过菜单栏左上角的“菜单”Menu按钮在“编译器”Compiler选项中进行切换默认是pdflatex你需要手动改为XeLaTeX或LuaLaTeX。注意 切换编译器通常是解决中文问题的第一步也是必须的一步。但仅仅切换编译器往往还不够你需要确保整个文档环境包括.bib文件和宏包都适配了这个新引擎。2.3.bib文件本身的陷阱你的参考文献数据库通常是一个.bib文件是问题的重灾区。请检查以下几点编码确认 首先确保你的.bib文件是以UTF-8 无 BOM格式保存的。在 Overleaf 中由于是网页编辑器新建文件默认就是 UTF-8这一点通常没问题。但如果你是从本地用其他编辑器如 Windows 记事本创建并上传的就需要特别注意。Windows 记事本默认的“UTF-8”编码实际上是“带 BOM 的 UTF-8”这个额外的字节序标记有时会干扰 LaTeX 编译。建议使用专业的文本编辑器如 VS Code, Sublime Text或文献管理软件来生成和保存.bib文件。条目格式 确保中文信息被正确地放在字段里。例如article{王2023示例, author {王小明 and 李华}, title {一项关于中文参考文献处理技术的研究}, journal {中文软件学报}, year {2023}, volume {10}, number {2}, pages {100-110} }字段值如title,journal,author中的中文直接写入即可不要加\text{}或\CJK{}包裹。特殊字符转义 LaTeX 有一些保留字符如,%,$,#,_,{,}。如果在文献的title或author字段中出现了这些字符虽然中文文献中不常见需要进行转义。例如要写成\。但中文字符本身不需要转义。3. 构建健壮的解决方案从文档类到参考文献样式理解了原理我们就可以搭建一个完整的解决方案了。下面我将以一个支持中英文混合参考文献的论文模板为例分步说明。3.1 文档类与引擎配置在 Overleaf 中新建一个项目或打开你的主文档通常是main.tex。在文档开头进行如下配置% !TeX program xelatex % 这一行是 Overleaf 的魔法注释用于指定编译器虽然不是必须但建议加上 \documentclass[12pt, a4paper]{article} % 根据你的需要选择 article, report, book 等 % 1. 引入核心宏包fontspec 是 XeLaTeX/LuaLaTeX 管理字体的基石 \usepackage{fontspec} % 2. 设置中英文字体 % 设置西文字体如拉丁字母、数字 \setmainfont{Times New Roman} % 或你喜欢的其他英文字体如 TeX Gyre Termes % 设置中文字体。Overleaf 服务器通常预装了部分中文字体如 % Noto Serif CJK SC (思源宋体简体) % Noto Sans CJK SC (思源黑体简体) % FandolSong (Fandol 宋体一个轻量级字体) % 你可以选择一个可用的。 \setCJKmainfont{Noto Serif CJK SC} % 设置中文主字体为思源宋体简体 % 3. 引入处理中文排版和标点的宏包 \usepackage{xeCJK} % 提供更精细的中文排版控制如标点压缩、禁则处理 \usepackage[UTF8]{ctex} % 这是一个强大的中文解决方案合集。在 XeLaTeX 下它主要提供了中文标点、章节标题汉化等便利功能。 % 注意使用 ctex 宏包或文档类如 \documentclass[UTF8]{ctexart}是另一种更集成的方案。 % 这里我们采用模块化配置以便更清晰地理解每个部分的作用。 % 4. 引入参考文献管理宏包 biblatex \usepackage[backendbiber, stylegb7714-2015, gbnamefmtlowercase]{biblatex} % 参数解释 % backendbiber: 指定使用 biber 作为后端处理程序。Biber 对 UTF-8 和多语言支持比传统的 BibTeX 好得多是配合 biblatex 的现代选择。 % stylegb7714-2015: 指定参考文献样式为中国国家标准 GB/T 7714-2015。这是中文论文最常用的格式。 % gbnamefmtlowercase: 将作者名中的大写字母转换为小写符合中文习惯如“Einstein A”会处理为“Einstein A”而非“EINSTEIN A”。 % 其他常用样式stylenumeric数字编号 styleapa心理学等常用 styleieee工程类常用。 % 5. 指定 .bib 数据库文件 \addbibresource{references.bib} % 假设你的 .bib 文件名为 references.bib关键点解析fontspec\setCJKmainfont是让 XeLaTeX 找到并渲染中文字体的关键。你需要知道 Overleaf 服务器上可用的中文字体名称。使用biblatexbiber而非传统的bibtex是因为前者对 Unicode 和多语言文献混排的支持是革命性的。bibtex在处理复杂中文时常常力不从心。ctex宏包不是必须的但它解决了很多中文排版中的细节问题如正确的省略号、破折号以及“图”、“表”、“参考文献”等标签的汉化强烈推荐。3.2 编写.bib文件在你的 Overleaf 项目中新建一个名为references.bib的文件。将你的参考文献条目以 UTF-8 编码保存进去。示例如下article{liu2021deep, author {刘伟 and 张晨 and 王芳}, title {基于深度学习的自然语言处理技术综述}, journal {计算机研究与发展}, year {2021}, volume {58}, number {1}, pages {1-15} } inproceedings{smith2020efficient, author {Smith, John and 陈涛}, title {Efficient Algorithms for Large-Scale Data Analysis}, booktitle {Proceedings of the International Conference on Data Science}, year {2020}, pages {205-212} } book{knuth1984tex, author {Knuth, Donald E.}, title {The {\TeX}book}, publisher {Addison-Wesley}, year {1984}, address {Reading, Massachusetts} }注意第二篇smith2020efficient是中外作者混排biblatex-gb7714-2015样式能很好地处理这种格式。3.3 在文中引用与生成文献列表在你的主文档正文中使用\cite{}命令进行引用可以引用多个用逗号分隔\begin{document} \title{关于 Overleaf 处理中文参考文献的研究报告} \author{你的名字} \maketitle \section{引言} 近年来中文科研成果日益增多在写作中正确引用中文文献至关重要 \cite{liu2021deep}。同时国际学术交流也要求我们能妥善处理混合文献 \cite{smith2020efficient, knuth1984tex}。 % 打印参考文献列表 % 参数可以是 section, chapter, 这里用 title参考文献 来设置标题 \printbibliography[title参考文献] \end{document}3.4 编译流程关键步骤这是最容易出错的一步。在 Overleaf 上正确的编译顺序是确保编译器设置正确 点击左上角“菜单” - “编译器”选择XeLaTeX。首次编译或修改引用后点击“编译”按钮。这步会运行xelatex生成.aux等辅助文件其中包含了引用信息。然后Overleaf 通常需要你手动触发biber。点击“菜单” - “编译器”下方找到“Biber”并选择它作为编译器然后再次点击“编译”。这一步会让biber读取.aux和.bib文件生成格式化后的参考文献数据.bbl文件。最后将编译器切换回XeLaTeX再点击“编译”1到2次。这一步是为了将biber处理好的参考文献数据正确插入到最终 PDF 中并解析交叉引用。简化流程 在 Overleaf 项目中你可以在根目录创建一个名为latexmkrc的文件没有后缀内容为$pdf_mode 1; $xelatex xelatex -synctex1 -interactionnonstopmode -file-line-error %O %S; $bibtex_use 2; $biber biber --bblencodingutf8 -u -U --output_safechars %O %S; $clean_full_ext %R.bbl %R.bcf %R.run.xml %R-blx.bib;然后在“菜单” - “编译器”中选择“LaTeXmk”。latexmk是一个自动化工具它会自动判断需要运行xelatex、biber还是xelatex你只需要点击一次“编译”即可。这是最推荐的方式。4. 进阶问题与精细化调整解决了基本问题后你可能会遇到一些更具体的情况。4.1 处理作者名中的“等”与“et al.”GB/T 7714-2015 标准规定中文文献作者超过3个时用“等”代替西文文献用“et al.”。biblatex-gb7714-2015样式默认已经实现了这个规则。但有时你可能需要微调。强制显示所有作者 在加载biblatex时使用maxnames和minnames选项。例如maxnames99, minnames1会显示所有作者如果不超过99个。自定义“等”和“et al.”的格式 这需要更深入的biblatex宏编程对于大多数情况默认样式已经足够。4.2 双语参考文献中英文条目混排的排序默认情况下biblatex按照引用顺序sortingnone或作者-年份sortingnyt等方式排序。对于中英文混排的列表有时我们希望中文文献和英文文献分开排序或者全部按拼音/字母顺序混合排序。混合排序推荐biblatex-gb7714-2015样式默认的排序方式通常能较好地处理混合文献它会将中文作者名转换为拼音后进行排序取决于你的.bib文件中的author字段是汉字还是拼音。为了最佳效果建议在.bib文件中将中文作者名写成汉字让biber去处理转换。分开排序 如果需要严格将中文文献和英文文献分成两部分并在各自内部排序实现起来比较复杂。一种思路是定义两个refsection分别引用中英文文献然后分别打印\printbibliography。但这会改变引用标签如 [1], [2]的连续性通常不推荐。4.3 解决特定字体缺失或警告如果你在编译日志中看到关于字体缺失的警告比如Font ... not found说明你指定的\setCJKmainfont中的字体名称在 Overleaf 服务器上不存在。查看可用字体 在 Overleaf 项目中你可以编译一个简单的文档来列出字体\documentclass{article} \usepackage{fontspec} \begin{document} \fontspec{Noto Serif CJK SC} 思源宋体 \\ \fontspec{Noto Sans CJK SC} 思源黑体 \\ \fontspec{FandolSong} Fandol 宋体 \\ \end{document}用 XeLaTeX 编译看哪些字体能正常显示。通常Noto Serif CJK SC和Noto Sans CJK SC是可用的。使用备用字体链 你可以指定一个字体族如果第一个找不到就尝试第二个。\setCJKmainfont{Source Han Serif SC}[ Extension .otf, UprightFont *-Regular, BoldFont *-Bold, ItalicFont *-Regular, % 中文通常无斜体用正体替代 BoldItalicFont *-Bold ]Source Han Serif SC是思源宋体的另一种名称。这种语法提供了更精细的控制。4.4 与 Overleaf 特定功能的结合Git 与历史版本Overleaf 集成了 Git这对于参考文献管理是个福音。你可以将references.bib文件纳入版本控制。这样每次你通过 Zotero 或其他工具更新.bib文件并同步到 Overleaf 后都能清晰地看到更改记录比如新增或修改了哪些条目方便协作和回溯。5. 实战避坑指南与经验总结根据我多次处理这个问题的经验以下是一些容易踩坑的地方和对应的解决方案坑编译后引用标记是 [?]文献列表为空或乱码。排查步骤检查编译器 确认已切换到 XeLaTeX 或 LuaLaTeX。检查.bib文件路径和名称 确保\addbibresource{references.bib}中的文件名和项目中的文件名完全一致包括大小写。检查是否运行了 biber 查看编译日志。如果日志中只有xelatex的运行记录没有biber的那么参考文献一定无法生成。务必按第3.4节的流程确保biber被正确执行。使用latexmk是最省心的。检查.bib文件语法 一个简单的逗号缺失或括号不匹配都可能导致biber解析失败。Overleaf 的日志会给出错误行号仔细检查。坑中文显示为方框或错误字体。解决 这几乎肯定是字体问题。确认\setCJKmainfont{}中指定的字体名称正确且在 Overleaf 上可用。尝试改用Noto Serif CJK SC或FandolSong。坑作者名中的“和”与“and”处理不当。注意 在.bib文件的author字段中不同作者之间用and连接无论中英文。例如author {张三 and 李四 and Wang, John}。biblatex样式会根据文献语言自动在输出时将其转换为“和”或“and”。坑从学术网站如知网、谷歌学术直接导出的.bib条目编码错误。经验 很多中文网站导出的.bib文件编码可能是 GBK 或 GB2312。在导入 Overleaf 前务必用本地文本编辑器如 VS Code将其转换为UTF-8 无 BOM编码。VS Code 右下角可以点击当前编码如“GB2312”并选择“通过编码保存” - “UTF-8”。推荐工作流本地管理 使用 Zotero 或 JabRef 等文献管理软件并为其安装 Better BibTeX 等插件可以配置其始终导出 UTF-8 编码的.bib文件。Overleaf 同步 将 Overleaf 项目与 GitHub 仓库关联。然后在本地用 Git 管理你的 LaTeX 项目目录将 Zotero 导出的.bib文件放在该目录下。更新文献后commit push到 GitHubOverleaf 会自动同步。这是最专业和高效的方式。先测试后写作 在开始正式写作前先建立一个最小的测试文档包含一两条中英文文献把编译、引用、显示整个流程跑通。然后再将这个配置应用到你的主项目中可以避免在写作中途被参考文献问题打断思路。处理 Overleaf 中的中文参考文献核心在于建立一条完全支持 Unicode 的编译流水线UTF-8 编码的源文件 XeLaTeX/LuaLaTeX 引擎 正确的中文字体 biblatex/biber 参考文献系统。只要这四个环节打通剩下的就是样式微调和细节打磨。希望这份详细的梳理能帮你彻底解决这个“小”问题让你在 Overleaf 上书写学术论文时更加得心应手。