LaTeX的几个标准文档类(article / book)都是不支持直接显示中文的。所以如果需要显示中文,需要进行特殊的设置。目前最广泛也最靠谱的解决方案就是用CTeX宏集,除此以外也有一些其他解决方案。
由于很多中文字体没有内置,需要指定,所以我更推荐使用自定义的方式来指定字体文件,可参考LaTeX语法、工具及模板大全(持续更新ing…)中的字体一节。
文章目录
1. 中文显示支持方案
1. CTeX宏集
CTeX官网:CTEX – 中文科技排版
CTeX宏集手册:https://mirrors.ibiblio.org/CTAN/language/chinese/ctex/ctex.pdf
包含更多本文未提及的进阶使用教程。我个人来说比较推荐有什么需求就来这里面翻翻应该怎么写。
所有源文件须保存为UTF-8编码。
推荐使用 XeLaTeX 或 LuaLaTeX 编译。
1. 直接使用CTeX文档类
以ctexart文档类为例,直接将article类改成ctexart类就能显示中文了,MRE见:https://github.com/PolarisRisingWar/learn-latex/blob/main/chinese_support/ctexart_example.tex
ctexbeamer的MRE:https://github.com/PolarisRisingWar/learn-latex/blob/main/chinese_support/ctexbeamer_example.tex
常用的特殊选项:
- 编码:指定文件的编码格式。
ctex
包默认使用UTF-8编码。 - 自动加粗:
AutoFakeBold=2
,启用自动伪加粗功能,数字表示加粗的程度。这对于某些中文字体没有粗体版本时非常有用。
2. 使用宏包
一般情况下直接引入ctex包(\usepackage{ctex}
)即可,MRE见:https://github.com/PolarisRisingWar/learn-latex/blob/main/chinese_support/ctex.tex
在比如别人的英文论文模版下需要显示中文时一般不会需要开启heading,需要的话就:\usepackage[heading = true]{ctex}
3. 命令
\ctexset
\ctexset命令允许你对文档的中文格式进行详细的设置。这个命令非常强大,可以用来调整章节标题的格式、字体、间距等属性。
\ctexset 的参数是一组由逗号分隔的选项列表,列表中的选项通常是一个 ⟨key⟩=⟨value⟩
格式的定义。例如设置摘要与参考文献标题名称就可以使用:
2. cctart
不建议使用,已经非常古老了,overleaf似乎已经无法支持。如果模版里面用了cctart,建议改用ctexart
3. cctbase
略,待补。
4. CJKutf8宏包
支持pdflatex
\usepackage{CJKutf8}
然后用\begin{CJK*}{UTF8}{gbsn}
和\end{CJK*}
包裹需要写中文的片段
2. 中文数字:zhnumber包
\usepackage{zhnumber}
命令在LaTeX中用于引入zhnumber
宏包。ctex宏集已经默认引入zhnumber包。
这个宏包主要用于将数字转换为中文数字表示,支持多种中文数字格式,包括简体中文、繁体中文,以及一些特殊的计数方式(如财务数字表示等)。这对于撰写中文文档时非常有用,尤其是当你需要在文档中以中文形式表示章节编号、页码、日期等信息时。
主要功能
- 数字转换:将阿拉伯数字转换为中文数字。
- 日期转换:将阿拉伯数字表示的日期转换为中文日期表示。
- 计数器格式化:可以将LaTeX中的计数器(如章节编号、页码等)以中文形式显示。
使用示例
-
基本数字转换
使用
\zhnumber
命令可以将数字转换为中文数字。例如:\usepackage{zhnumber} ... \zhnumber{123}
这将输出“一二三”。
-
日期表示
zhnumber
宏包还提供了转换日期格式的命令,例如:\usepackage{zhnumber} ... \zhtoday
假设今天是2024年2月17日,
\zhtoday
会输出“二〇二四年二月十七日”。 -
计数器格式化
请参考我写的另一篇博文:LaTeX中的计数器counter
注意事项
- 使用
zhnumber
宏包之前,需要确保你的LaTeX系统已经安装了该宏包。如果未安装,可以通过TeX发行版(如TeX Live、MiKTeX等)的包管理器进行安装。 zhnumber
宏包在处理中文数字时非常灵活,但具体使用时可能需要根据文档的具体需求调整命令或参数。它提供了多种选项来满足不同的格式化需求。
通过使用zhnumber
宏包,可以在LaTeX文档中更方便地处理中文数字表示,使文档看起来更贴合中文习惯。