跳至主要內容

设置 CTeX 的字体

Bob Yue排版LaTeX大约 3 分钟

本文对中文字体设置给出了一些建议。

注意

本文存在一定的问题,需要大幅修改;且并未根据不同编译器讨论。

前言

撰写中文 LaTeX\LaTeX (.tex) 文档,通常需要考虑普通文本环境下的各类默认字体。

CTeX 自动检测并使用 Windows 下的中易系列字体。

考虑到中易系列字体对标点符号的处理欠佳,字重与英文不搭配;且该系列字体不可商用,应避免使用它们。

对于 LaTeX 文本中五种常用的字形:

配置标识命令\text__类型示例中文
main衬线Roman\text{Roman}宋体类
main Boldbf加粗衬线BoldFace\textbf{BoldFace}粗宋类
main Italicsit手写字体Italics\textit{Italics}楷体类
sanssf无衬线Sans-Serif\textsf{Sans-Serif}黑体类
mono等宽字体Courier New仿宋类

我们将分别使用

方正书宋_GBK
方正小标宋_GBK
方正楷体_GBK
方正黑体_GBK
方正仿宋_GBK

探究

阅读 texlive\2021\texmf-dist\doc\latex\ctex\ctex.pdf4.3 中文字库 的说明:

CTeX 宏集能自动检测用户使用的编译方式和操作系统,选择合适的底层支持和字库……但是 CTeX 仍然提供了一系列选项,供在 CTeX 的自动选择机制因为意外情况失效,或者在用户有特殊需求的情况下使用。

fontset = ⟨adobe|fandol|founder|mac|macnew|macold|ubuntu|windows|none|...⟩ 指定 CTeX 宏集加载的字库。

如果没有指定 fontset 的值,CTeX 宏集将自动检测用户使用的操作系统,配置相应的字体
⟨name⟩ 为自定义的名字。CTeX 宏集将载入名为 ctex-fontset-⟨name⟩.def 的文件作为字体配置文件。因此,请先保证文件的存在。可以在当前工作目录或者本地 TDS 目录树下合适位置建立一个名为 ctex-fontset-⟨name⟩.def 的文件,在这个文件里面自定义中文字体。然后通过使用 fontset=⟨name⟩ 选项来调用它。字体配置文件的具体写法可以参考 CTeX 宏集 fontset 目录下的字体配置文件。

另有

10.4 自定义字体集
4.3 节介绍的用于 fontset 选项的自定义字库文件,类似于 CTeX 宏集的配置文件,也应该与其他本地配置文件一起保存在本地 TDS 目录树下,并可以配合 ctexopts.cfg 等配置文件使用。

这为我们指明了通过修改 CTeX 配置文件的方式,一劳永逸地调整好中文字体。但为了避免可迁移性等问题,我们暂不采用。

解决

.tex 文档头部增加

\usepackage{ctex}
\setCJKmainfont{方正书宋_GBK.TTF}[BoldFont={方正小标宋_GBK.TTF},ItalicFont={方正楷体_GBK.TTF}]
\setCJKsansfont{方正黑体_GBK.TTF}
\setCJKmonofont{方正仿宋_GBK.TTF}

理论上我们可以引用字体的 Full Name,但会存在报错 Font shape undefined 的问题。我们直接引用字体文件名。

务必注意,所引用的 .ttf 文件名,必须与存在于 C:\Windows\Fonts 中的字体文件一致。

上次编辑于:
贡献者: BobYue-01