LaTeX 字体的基础配置

本文将介绍如何简单的配置LaTeXxelatex编译时,可参考的一种字体配置方案。


很多情况下LaTeX默认的字体配置并不令人满意或者符合特定的场景需求,会有字体配置的需求。而pdflatex的编译方式要指定满意的字体是比较复杂的,xelatex相对来说比较简单,它能够调用系统安装的字体。以下的内容都是针对使用xelatex编译时的参考方案。

作为一个中国人,文档里面出现中文和英文的现象并不少见。要指定英文字体比较容易,使用fontspec宏包可以实现。如果要同时指定中文的使用字体,可以使用xeCJK宏包。由于中文字体的特别,中国的TeX组织开发了该宏包。以下展示一个比较完整的字体设置方案。要编译成功需要安装相应的字体,可以用这个思路换成你需要的字体。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
\PassOptionsToPackage{no-math}{fontspec} %在改变西文字体时不改变数学字体
\documentclass{ctexbook} %已调用xeCJK宏包
\usepackage{fontspec} %[no-math]
\usepackage{amsmath,amsthm}
\usepackage{unicode-math}
\setmainfont{Source Serif Pro} %指定西文正文字体,即衬线字体
\setsansfont{Source Sans Pro} %指定西文无衬线字体,常用于标题目录等位置
\setmonofont{Source Code Pro} %指定西文等宽字体,常用于代码展示等位置
\setmathfont[
Extension =.otf, %采用otf字体
Path=fonts/, %指定字体所在路径,缺省的话会自动查找系统和字体和发行版本所带的字体
BoldFont = XITSMath-Bold, %指定粗体
StylisticSet = 8
]{XITSMath-Regular} %指定数学字体

\setCJKmainfont[ %衬线中文字体设定
Extension=.otf,
Path=fonts/,
UprightFont= *-Regular, %右上字体
BoldFont= *-Bold, %加粗字体
ItalicFont= *-Regular, %斜体
BoldItalicFont= *-Bold, %斜体加粗
ItalicFeatures= FakeSlant, %斜体是为斜,不要在需要查重的pdf文件中使用中文斜体,会导致查重有问题。
BoldItalicFeatures= FakeSlant]{NotoSerifCJKsc}

\setCJKsansfont[ %无衬线中文字体设定
Extension=.otf,
Path=fonts/,
UprightFont= *-Regular,
BoldFont= *-Bold,
ItalicFont= *-Regular,
BoldItalicFont= *-Bold,
ItalicFeatures= FakeSlant,
BoldItalicFeatures= FakeSlant]{NotoSansCJKsc}

\setCJKmonofont[ %等宽中文字体设定
Extension=.otf,
Path=fonts/,
UprightFont= *-Regular,
BoldFont= *-Bold,
ItalicFont= *-Regular,
BoldItalicFont= *-Bold,
ItalicFeatures= FakeSlant,
BoldItalicFeatures= FakeSlant]{NotoSansMonoCJKsc}

\begin{document}
$\hbar ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxuy$

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxuy 中文衬线字体

\textbf{ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxuy 中文衬线字体加粗}

\textit{ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxuy 中文衬线字体伪斜}

\sffamily ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxuy 中文字体

\textbf{ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxuy 中文字体}

\textit{ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxuy 中文字体}

\ttfamily ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxuy 中文字体

\textbf{ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxuy 中文字体}

\textit{ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxuy 中文字体}

\end{document}

指定了普通场合所需的几个字体后,还需要个别其它字体可以通过以下方法设定以及调用。

1
2
3
4
5
6
7
8
\newfontfamily\useSomeEnFont{Source Serif Pro} 
\newCJKfontfamily\useSomeZhFont{宋体}
\normalfont\useSomeZhFont\useSomeEnFont

{\useSomeEnFont Source Serif Pro font}
{\useSomeZhFont 这里是宋体}
%% 使用新的一组字体
{\normalfont 西文用Source Serif Pro font, 中文用宋体。}

Welcome to my other publishing channels