LaTex 使用之关于中文字体的一些问题(针对 ubuntu 系统)
文章目录
0. 基础
一些文件格式
- DVI : 最初 TeX 输出格式,不能嵌入字体和图形。也是后来PS、PDF的中间格式。
- PS : PostScript
- PDF : 文档
一些程序
关于文件格式转换
- dvips : 将 DVI 文件转化为 PS 文件
- ps2pdf : 将 PS 文件转为 PDF 文件
- dvipdf : 将 DVI 转为 PDF 文件
- dvipdfm/dvipdfx : dvipdf 的扩展,支持更多的 pdf 功能和字体
关于 TeX 引擎
- TeX : 最早的 TeX 程序,功能和输出相对单一;ACSII 编码
- ϵ − T e X \epsilon - TeX ϵ−TeX : 对 TeX 的扩展
- pdfTeX : 能够直接输出 PDF 文件,但也保留了输出 DVI 的功能;UTF-8 编码
- LuaTeX : 将 TeX 和脚本语言 Lua 结合起来;UTF-8 编码
- XeTeX : 将 DVI 格式扩充为更为强大的 xdv 格式,可以直接生成 pdf 文件;UTF-8 编码
1. 字体的设置(针对中文)
1.1 一些基础
TeX 中对于字体的设定包含五个方面:
- 字号 (font size):字体的大小
- 字体编码 (font encoding):字体包含的符号,不常用
- 字体族 (font family):字体的类型(如默认的罗马字体族、无衬线字体族、打字机字体族三类)
- 字体形状 (font shape):默认字体形状有直立形状、斜体形状、意大利形状、小型大写形状四类
- 字体系列 (font series):默认字体系列有中等、加粗加宽两类
而对于中文来说,一般主要设定其字体族。在 TeX 中常使用 xeCJK 或 CJK 宏。选择使用中文字体族可以使用如下命令
% windows 常用四种字体族
\CJKfamily{hei} 黑体
\CJKfamily{kai} 楷书
\CJKfamily{song} 宋体
\CJKfamily{fs} 仿宋
% 或使用 ctex 宏包后简化命令
\heiti 黑体
\kaishu 楷书
\songti 宋体
\fangsong 仿宋
\li 隶书
\you 幼圆
以上都是 windows 中预设的 TeX 常用字体,显然有时是不够用的。因此,有时就需要把安装在系统中的一些字体设定为 TeX 可用字体。如何设定,下面有详细描述。先说设定好后,如何使用。
对于中文而言,使用 xeCJK 宏包。字体使用通过如下命令
% 先设置声明
\setCJKmainfont[<可选选项>]{<字体名>} 正文罗马字体族
\setCJKsansfont[<可选选项>]{<字体名>} 无衬线字体族
\setCJKmonofont[<可选选项>]{<字体名>} 打字机字体族
\setCJKfamilyfont{<中文字体族>}[<可选选项>]{<字体名>} 中文字体族设置声明
% 后使用
\CJKfamily{<字体族名>}
说明: xeCJK 宏使用的是 fontspec 对应的中文字体,也就是系统 fontconfig 库所能找到的所有字体。
1.2 自定义字体
1.2.1 使操作系统的 fontconfig 库找到 TeX 附带字体
-
将
/usr/local/texlive/2020/texmf-var/texlive-fontconfig.conf
改名为09-texlive.conf
,复制到系统的/etc/fonts/conf.d/
下,即$ sudo cp /usr/local/texlive/2020/texmf-var/texlive-fontconfig.conf /etc/fonts/conf.d/09-texlive.conf
-
刷新 fontconfig 字体缓存,即
$ sudo fc-cache -fsv
说明:该操作是全局的,系统中其他程序也将可一使用上述配置的字体。
1.2.2 设置 TeX 可以根据字体名找到相应字体
-
设置 TeX 中
/usr/local/texlive/2020/texmf.cnf
配置文件的osfontdir
路径OSFONTDIR = /usr/share/fonts//;/usr/local/share/fonts//;~/.fonts//
注意:在使用字体时,要正确书写字体族名称,而所有字体族名称可以用以下命令列出
fc-list 列出所有(输出显示格式为: 字体族中文名,字体族英文名:变体)
fc-list :lang=zh 列出中文字体
fc-list -f "%{family}\n" 只列出字体族名