问题:编辑器中键入的生僻字,编译后的PDF中无法正常显示
最近初入Latex,论文编写采用 vscode+latexlive 配置,在编写过程中遇到的生僻字,在 vscode 编写时能正常键入,而在 pdf 预览时却发生错误,显示为一个带方框的 F。
\documentclass[UTF8]{ctexart}
% 此处仅展示部分代码
\usepackage{ctex}
...
\title{其他中文 劼}
\date{\today}
...
上述仅展示了部分 latex 代码,其他中文可以正常显示,而“劼”却无法正常显示。如下所示
于是在网上查找了相关方法如下
仓颉造字
将“劼”字拆分为“吉”和“力”,进行缩放拼凑,具体参见xelatex的生僻字处理-pagx-ChinaUnix博客。更改代码如下
\title{其他中文 \hbox{\scalebox{0.6}[1]{吉}\kern-.2em\scalebox{0.6}[1]{力}}
可以得到一个显示相对正常的完整汉字,其中缩放比例和相对位置均可调节,怎么好看怎么来。
字库调整
从问题本身可以看到,win10 系统实际上可以正常键入“劼”字,而在PDF中却无法正常显示,可能是因为默认字库不含这个字。
我们打开 windows设置 - 搜索“字体” - 筛选条件选择“中文简体” - 选择任意字体(此处以楷体举例) - 键入“劼”字。可以发现是能够正常显示的(如果仍然不能,可以自行查找可行字体并下载,系统新字体的下载此处不做介绍)
接下来,需要在 latex 中选择这个字体进行显示。在此之前,需要查看调用这个字体时,需要声明字体的名称。
管理员身份打开命令行,如下键入,便能在D盘中产生一个 zhfont.txt 文件,其中会列写出所有字体名字。
C:\WINDOWS\system32>fc-list -f "%{family}\n" :lang=zh >d:zhfont.txt
可以找到我们想要的楷体。其中每一行代表一种字体,逗号隔开表示该字体不同的名称/形式。例如楷体,我们可以选择 "KaiTi" 或 "楷体",而 "FandolSong" 只有一个名称可用。
回到 latex 编辑中,对于需要的文字,指定特定的字体 {\CJKfontspec{字体名称} 生僻字}
\usepackage{xeCJK} % 声明中文包
\author{其他中文{\CJKfontspec{楷体} 劼}}
这样,生僻字就可以正常显示了,此处 “其他中文” 为默认字体,而 “劼” 为楷体。如果有格式要求,可以参照同样的方法,指定为格式相近的字体即可