背景
TeX 中使用中文, 通常最简单的方法都是使用 CTeX 和 XeLaTeX.
只要在源文件中加上一行 \usepackage{ctex}
然后用 xelatex
编译就好.
但是古老以来就有个问题: CTeX 使用的 Fandol 字体对于生僻字支持不好. 对于名字中有生僻字的人就很不友好. 名字有时就显示为一个方框里面有一个 F.
article 解决方法
首先我们需要找一个支持生僻字的字体. Google 的 noto 字体就可以, 还算漂亮. 我觉得 Serif 比 Sans Serif 更漂亮.
Ubuntu 18.04
系统已经包含了 Noto 字体
$ fc-list | grep "Noto.*CJK SC"
/usr/share/fonts/opentype/noto/NotoSerifCJK-Bold.ttc: Noto Serif CJK SC:style=Bold
/usr/share/fonts/opentype/noto/NotoSerifCJK-SemiBold.ttc: Noto Serif CJK SC,Noto Serif CJK SC SemiBold:style=SemiBold,Regular
/usr/share/fonts/opentype/noto/NotoSansCJK-Black.ttc: Noto Sans CJK SC,Noto Sans CJK SC Black:style=Black,Regular
/usr/share/fonts/opentype/noto/NotoSerifCJK-Regular.ttc: Noto Serif CJK SC:style=Regular
/usr/share/fonts/opentype/noto/NotoSansCJK-Light.ttc: Noto Sans CJK SC,Noto Sans CJK SC Light:style=Light,Regular
/usr/share/fonts/opentype/noto/NotoSerifCJK-ExtraLight.ttc: Noto Serif CJK SC,Noto Serif CJK SC ExtraLight:style=ExtraLight,Regular
/usr/share/fonts/opentype/noto/NotoSansCJK-Bold.ttc: Noto Sans Mono CJK SC,Noto Sans Mono CJK SC Bold:style=Bold,Regular
/usr/share/fonts/opentype/noto/NotoSerifCJK-Light.ttc: Noto Serif CJK SC,Noto Serif CJK SC Light:style=Light,Regular
/usr/share/fonts/opentype/noto/NotoSansCJK-Thin.ttc: Noto Sans CJK SC,Noto Sans CJK SC Thin:style=Thin,Regular
/usr/share/fonts/opentype/noto/NotoSansCJK-Bold.ttc: Noto Sans CJK SC,Noto Sans CJK SC Bold:style=Bold,Regular
/usr/share/fonts/opentype/noto/NotoSerifCJK-Black.ttc: Noto Serif CJK SC,Noto Serif CJK SC Black:style=Black,Regular
/usr/share/fonts/opentype/noto/NotoSerifCJK-Medium.ttc: Noto Serif CJK SC,Noto Serif CJK SC Medium:style=Medium,Regular
/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc: Noto Sans CJK SC,Noto Sans CJK SC Regular:style=Regular
/usr/share/fonts/opentype/noto/NotoSansCJK-DemiLight.ttc: Noto Sans CJK SC,Noto Sans CJK SC DemiLight:style=DemiLight,Regular
/usr/share/fonts/opentype/noto/NotoSansCJK-Medium.ttc: Noto Sans CJK SC,Noto Sans CJK SC Medium:style=Medium,Regular
/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc: Noto Sans Mono CJK SC,Noto Sans Mono CJK SC Regular:style=Regular
所以在 TeX 文件中, 在
\usepackage{ctex}
之后加上
\setCJKmainfont[ItalicFont=Noto Sans CJK SC Bold, BoldFont=Noto Serif CJK SC Black]{Noto Serif CJK SC}
就好了
如果你的系统没有 noto 字体
在 这里 可以下载. 对于 Linux 系统, 应当下载 Subset OTF.
下载后解压, 应当看到有一堆 otf.
NotoSansSC-Black.otf NotoSansSC-Bold.otf NotoSansSC-DemiLight.otf NotoSansSC-Light.otf NotoSansSC-Medium.otf NotoSansSC-Regular.otf NotoSansSC-Thin.otf
假设包含生僻字的 tex 文件在 dir/
, 复制这些文件到 dir/
下 (当然, 实际上不用全部复制).
在 TeX 文件中, 在
\usepackage{ctex}
之后加上
\setCJKmainfont[BoldFont=NotoSansSC-Bold.otf]{NotoSansSC-Regular.otf}
即可.
如果你的上级对字体有要求
请 windows 或者 mac 的朋友帮你编译吧
beamer 解决方法
beamer 默认使用 sans 字体, 因此在 \usepackage{ctex}
之后加
\setCJKsansfont[BoldFont=NotoSansSC-Bold.otf]{NotoSansSC-Regular.otf}