Windows11 环境下Texlive2022安装CJK宏包,实现对GBK编码中文latex文件的编辑 |
您所在的位置:网站首页 › 中文字体安装包 › Windows11 环境下Texlive2022安装CJK宏包,实现对GBK编码中文latex文件的编辑 |
目录
摘要1、主要环境与问题描述1.1、主要环境1.2、问题描述
2、Texlive编辑中文实现原理2.1、Tex文档编译流程2.2、具体流程介绍2.3、总结
3、所需资源下载4、CJK中文包本地安装5、结果展示
摘要
该教程主要是针对在Windows环境下,利用Texlive2022实现对中文GBK编码的latex源文档的编译。在查了许多教程后发现,大部分给出的建议是利用xelatex进行编译中文,但是我遇到的问题是latex源文档中文字体是GBK编码的CJK宏包,无法利用该方法实现中文编译,除非放弃使用该中文模板,直接自己从头编写。因此,我想找到另外一种方法来实现我的目的。经过查找许多资料,发现都描述的不是很清楚,不能完全满足我的需求,所以在综合吸收了许多资料的基础上,以我的需求为目的,记录了整个实现过程。 1、主要环境与问题描述 1.1、主要环境本过程主要环境如下: (1)Windows 11; (2)Texlive2022 + TexStudio; 1.2、问题描述本过程主要想解决的问题是:在Windows 11环境下,基于Texlive2022+Texstudio,实现中文CJK字体包的安装以及中文期刊Late模板的编译。以《控制理论与应用》中文期刊为例。该中文期刊给出的Latex模板是CTex_2.9.2.164_Full版本,内容主要如下图所示 ![]() 本文主要是解决以上第二个问题。在查找了许多资料后,才弄明白整个过程,没有一篇教程能够仔细清楚地讲明白我所要解决问题的方法。主要解决过程如下。 2、Texlive编辑中文实现原理 2.1、Tex文档编译流程Tex编译文档主要有以下三种流程,编写CJK宏包时,一般使用的是下面的两种。 这一部分可以参考一个博主里的内容Latex CJK中文字体安装指南(原理与实现) - 知乎 (zhihu.com),详细地说明了Latex编译CJK宏包的过程,具体如下: 当LaTeX 发现用户使用了 CJK 宏包,即在 \begin{CJK}{GBK}{song} 时,CJK 宏包把从现在开始一直到 \end{CJK} 的内容里的中文都变成了一些奇怪的TeX命令。这些命令根据不同的汉字转换不同的字体。它发现“您”,它就会把字体设置为 gbksong51, 然后取里面的第115个字符。为了达到这个目的,它把我们的汉字“您”变成了 “\C19/song/m/n/10/51 s”, \C19/song/m/n/10/51 表示用 GBK 编码(C19) 的 song 体,粗细为 medium(m), 而不是 bold, 形状为upright(n), 而不是 italic, 大小是 10pt, 子集号码 51. 这个描述会被 C19song.fd 这个字体描述文件映射为gbksong51. 因为 C19song.fd 里有这样一行: \DeclareFontShape{C19}{song}{m}{n}{ CJK * gbksong}{}所以 “\C19/song/m/n/10/51” 这个命令就会把字体设置为 “gbksong51 at 10pt”(TeX术语). 后面接着一个"s", “s” 的 ASCII 码是 115, 正好是 “您” 在这个子集中的索引号。 LaTeX 继续处理文档的其它部分,就像处理其它任何英语文件一样……最后生成了 dvi 文件。 用户用 dvips 生成 PostScript 文件。dvips 找到 config.ps 配置,读取里面的字体映射文件列表,列表里有一个文件叫做 cjk.map, 它就去读取 cjk.map. cjk.map 指出:gbksong51 这个字体的图像(glyph)应该从Type1字体文件 gbksong51.pfb 里得到…… dvips 把这些信息存到一张表里备用。 dvips 开始读取 dvi 文件,发现里面要求使用 gbksong51 这个字体,并且输出一个 “s” 对应的字符。它就下载(download,PostScript术语) gbksong51.pfb 到生成的 PostScript 文件 example.ps, 然后在合适的位置放上对“您”索引。 而你用 TexStudio 打开文件就看到了“您”。发现没有?“SimSun51” 就是插入Type1字体的开始处, 而"(s)" 就是说“输出字符串s”。这个字体里的"s"看起来就是“您”。而那个SimSun51,就是所谓的PostScript 字体名字。你的文档就是这样生成的。 从这个分析你可以看出,TeX 在本质上处理汉字是没有任何问题的,因为经过 CJK 的转化,汉字被转成了和英文字符一样的“盒子”。我们只要按照 TeX 的规则来处理这些盒子就可以实现与英文完全同样的功能。 2.3、总结从以上流程我们可以总结出以下几点,对我们后续安装CJK包具有重要指导意义: (1)需要C19song.fd文件,这里的C19是指CJK宏包规定的GBK编码,还有UTF8(C70), GB(C10), Bg5(C00),这个根据需要要替换相应的C…代码。 (2)dvips要能找到config.ps文件; (3)config.ps文件中要有指向cjk.map映射文件的命令段; (4)要有cjk.map映射文件 (5)要有gbksong*.pfb文件 (6)要有"\C19/song/m/n/10/51"编码信息的存储文件,格式是.tfm文件 3、所需资源下载根据前面的介绍,我们现在可以清晰地知道我们接下来需要哪些准备了,具体而言: (1)首先,我们要知道Texlive当前用户文件夹$TEXMFHOME所在地路径,可以参考textlive中添加自定义包或类 - 简书 (jianshu.com),其中详细说明了$TEXMFHOM的作用,可以用如下命令在cmd中搜索: kpsewhich -expand-var '$TEXMFHOME'这个文件夹路径关乎我们后续安装字体各种相关文件的存放位置。 (2)根据需要安装的字体,按CJK要求,用GBK编码生成以上所有的.map、.fd、.tfm、.pfb等文件,这个可以从这里下载gbkfongts.zip 最后,做好以上准备后,就可以正式进行CJK宏包的安装了。 4、CJK中文包本地安装该部分详细说明从头一步一步安装CJK宏包的全过程。 (1)先查找Texlive当前用户文件夹路径,后续生成的字体相关文件都要安装在本文件夹下,才有效果。 ![]() ![]() ![]() ![]() ![]() 至此,我们就可以通过使用latex->dvi->pdf来实现对CJK宏包GBK中文编码的字体的编译了。 5、结果展示 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |