1. 为什么你的Overleaf一加中文就“崩”?
很多朋友第一次在Overleaf里写东西,特别是写论文或者报告,需要加几句中文注释或者引用中文文献的时候,大概率会遇到这么个情况:满怀期待地点下“编译”,结果等来的不是漂亮的PDF,而是一堆让人头皮发麻的红色错误信息。最常见的错误就是跟编码有关,比如“Undefined control sequence”或者直接告诉你某个中文字符它不认识。这时候你可能就懵了,明明在本地用别的软件写得好好的,怎么一到Overleaf就不行了呢?
这里面的核心原因,其实在于Overleaf默认的“工作模式”。Overleaf默认使用的是PDFLaTeX编译器,这个编译器历史悠久、非常稳定,但它有个“老古董”的毛病:它默认处理的不是我们现在通用的UTF-8编码。UTF-8可以说是现代文本编码的绝对主流,它能完美表示几乎全世界所有语言的字符。而PDFLaTeX更习惯处理的是像ASCII这样的老式编码。当你把UTF-8编码的中文字符直接扔给它,它就像看到一个天书一样的乱码,完全无法理解,自然就报错了。
所以,解决这个问题的根本思路,不是去修改你的中文内容,而是要去“升级”Overleaf处理文档的方式。我们需要换一个能看懂UTF-8的“翻译官”,也就是编译器。这就是为什么官方教程和几乎所有经验分享都会首先指向XeLaTeX或LuaLaTeX。它们俩是LaTeX世界里的“现代派”,从设计之初就原生支持UTF-8编码。你只需要在Overleaf的项目设置里,把编译器从默认的PDFLaTeX切换到XeLaTeX或LuaLaTeX,就相当于给系统装上了中文语言包,基础的通路就打通了。
我刚开始用的时候也在这里卡了半天,总觉得是不是自己代码写错了。后来才明白,这就像你用一台只装了英文操作系统的电脑,直接打开一个中文文档,肯定显示乱码。你不是要去改文档,而是要给电脑安装中文字体和支持库。切换编译器就是这“安装”的第一步,也是最关键的一步。做完这一步,至少编译不会报错了,中文也能显示出来了,但这往往只是“万里长征第一步”,更头疼的问题可能还在后面。
2. 从\usepackage{ctex}到精准控制:你的需求远不止“能显示”
按照上一步,我们切换到了XeLaTeX,然后在文档的开头,也就是\documentclass之后,欢天喜地地加上了\usepackage{ctex}。再次编译,果然,中文出来了!你可能觉得大功告成了。但当你仔细看生成的PDF时,新的烦恼来了:你整篇文档的“味道”好像都变了。
最明显的就是图表标题。你明明写的是 \caption{Table 1: This is a sample table.},期望它输出“Table 1: This is a sample table.”。但用了ctex宏包后,它很可能给你显示成“表 1:This is a sample table.”。那个“Table”被自动替换成了中文的“表”,冒号也可能变成了中文的全角冒号。如果你文档里用了\section、\subsection,它们的编号格式(比如“1”、“1.1”)也可能受到影响。更细微的,整个文档的英文字体可能从你熟悉的Computer Modern,变成了某种中文字体(比如宋体)的英文部分,导致英文字母的间距、形态看起来都有些“不对劲”。
为什么会这样?因为\usepackage{ctex}这个简单的命令,实际上是一个“一站式全家桶”解决方案。ctex宏包非常强大,它为了确保中文文档的完美排版,默认会做很多事情:它会设置中文字体(如果你没指定,它会尝试调用系统字体)、它会将文档的某些结构元素(如章节、图表标题的标签)本地化为中文、它会调整中文标点的排版规则(如使用全角标点)。这对于一篇以中文为主的文档来说是极好的,省去了大量手动配置的麻烦。
但我们的场景恰恰相反:文档主体是英文,只有零星几处需要插入中文。这时,ctex宏包默认的“全家桶”行为就有点“用力过猛”了。我们需要的不是对整个文档进行中文化改造,而是一个“外科手术式”的精准支持:在保留原有英文文档一切样式(字体、编号、标点习惯)的前提下,仅仅在需要的地方,具备显示和排版中文的能力。
这就要求我们不能简单地调用ctex宏包,而必须给它加上“参数”,告诉它:“嘿,伙计,冷静点,我只用你的部分功能。” 这就是高级配置的起点。我们需要通过一系列选项,去定制ctex的行为,让它从一个“全自动中文化工具”变成一个“按需启用的中文支持模块”。接下来要讲的scheme、punct等参数,就是实现这种精准控制的开关。
3. 核心武器:ctex宏包的关键参数详解
要让ctex乖乖听话,只做我们想要它做的事,就得深入了解它提供的几个关键配置选项。这些选项以“键值对”的形式放在宏包引用的方括号里。下面我结合自己的踩坑经验,详细说说几个最管用的。
scheme 方案:控制全局的中文化程度 这是最重要的一个选项。它决定了ctex宏包对文档整体结构的干预程度。
scheme=chinese:这是默认值。效果就是前面说的“全家桶”。它会把章节、图表、公式编号的标签(如“Figure”,“Table”)都变成中文(“图”,“表”),非常适合纯中文文档。scheme=plain:这就是我们混排场景的“神器”。设置这个选项后,ctex会尽可能保持L

2348

被折叠的 条评论
为什么被折叠?



