Windows11 环境下Texlive2022安装CJK宏包,实现对GBK编码中文latex文件的编辑

您所在的位置:网站首页 中文字体安装包 Windows11 环境下Texlive2022安装CJK宏包,实现对GBK编码中文latex文件的编辑

Windows11 环境下Texlive2022安装CJK宏包,实现对GBK编码中文latex文件的编辑

2024-01-02 11:00| 来源: 网络整理| 查看: 265

目录 摘要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版本,内容主要如下图所示 《控制理论与应用》期刊Latex中文模板使用CJK宏包情况

遇到的问题一: 在安装好Texlive2022和TexStudio后,直接在TexStudio中打开中文期刊模板,文档里面的中文字体全部变成乱码,该解决方法主要需要进行以下两步操作: (1)修改编码格式为GBK,同时保存文件格式也要保存为GBK编码,不能是UTF8编码; (2)编辑器要选择latex编辑器,不能选择pdflatex编辑器。遇到问题二: 在调好编码后,重新打开期刊模板,能正常显示中文字体,但是安装网上的教程,先用latex编辑器编辑,再选择Dvi-PDF命令实现PDF的生成,并无法生成PDF文件,显示如下错误: 在这里插入图片描述

本文主要是解决以上第二个问题。在查找了许多资料后,才弄明白整个过程,没有一篇教程能够仔细清楚地讲明白我所要解决问题的方法。主要解决过程如下。

2、Texlive编辑中文实现原理 2.1、Tex文档编译流程

Tex编译文档主要有以下三种流程,编写CJK宏包时,一般使用的是下面的两种。 ![[1f94cbb1097117ac04468872539acb6.jpg]]

2.2、具体流程介绍

这一部分可以参考一个博主里的内容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当前用户文件夹路径,后续生成的字体相关文件都要安装在本文件夹下,才有效果。 ![[Pasted image 20230325230740.png]] 我的电脑里,安装的Texlive当前用户文件夹路径在’C:/Users/25614/texmf’,但其实顺着这个路径去找,会发现一开始并没有这个文件夹,所以此时需要我们去自己创建,后面Tex编译的时候就会顺着之前系统配置好的路径依次寻找相关字体,所以这一步至关重要。 ![[Pasted image 20230326155636.png]] (2)生成我们需要安装的字体,下载gbkfonts.zip并解压后,文本编辑器打开go.bat Windows批处理文件,注意由于我们需要修改内容并保存,所以提前修改文件的属性,给予可以修改的权限: ![[Pasted image 20230326160651.png]] 打开文件后里面内容具体如下: ![[Pasted image 20230326160347.png]] 由于以上路径还是在Windows比较老的版本下的字体存放路径,此时我们要修改成我们自己电脑里相应的字体存放的位置,我的修改成如下形式,并保存: ![[Pasted image 20230326160131.png]] 之后,双击go.bat Windows批处理文件,就会开始生成四种字体的各种文件,最后如下所示: ![[Pasted image 20230325225802.png]] (3)将以上文件放置到对应的当前用户文件夹下,即最开始创建的’C:/Users/25614/texmf’的文件夹。这一步可以参照我们安装在电脑里的texlive路径文件夹树来进行建立,具体为:

查看…/gbkfongts/fonts文件下的文件,发现有.tfm文件和.pfb文件(在type1里面),参照D:/texlive/2022/texmf-dist/fonts(我的Texlive安装路径)里面相关文件夹树的建立,将…/gbkfongts/fonts下的文件复制到C:/Users/25614/texmf/fonts,修改chinese文件夹为cjk,最后情况如下图所示,注意其中的文件路径。此时我们就完成了.tfm和.pfb文件的安装。其中,.afm文件是因为生成了,参照D:/texlive/2022/texmf-dist/fonts下也有,就也复制了进去,具体作用还没弄懂。 在这里插入图片描述将cjk.map文件复制到相应位置,参照D:/texlive/2022/texmf-dist/fonts/map/dvips,将…/gbkfongts文件夹中的cjk.map复制到C:/Users/25614/texmf/fonts/map/dvips/cjk,如图所示: 在这里插入图片描述将.fd文件复制到相应位置,参照D:/texlive/2022/texmf-dist/fonts/tex/latex,将…/gbkfonts/gbkfonts/tex/latex/CJK/GB下生成的.fd文件复制到C:/Users/25614/texmf/tex/latex/cjk/GBK,如图所示: 在这里插入图片描述config.ps文件,在D:/texlive/2022/texmf-dist/dvips/config文件夹下找到config.ps,并将其复制到C:/Users/25614/texmf/dvips/config文件夹下,同时用文本编辑器打开,在最后一添加p +cjk.map,让dvips知道找cjk.map映射文件。 在这里插入图片描述更新文件配置,在cmd命令行运行texhash,注意这里ls-R文件同样要修改文件属性使得其可以修改,不然就会全部像第一条结果。 在这里插入图片描述

至此,我们就可以通过使用latex->dvi->pdf来实现对CJK宏包GBK中文编码的字体的编译了。

5、结果展示

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3