目录

  • 摘要
  • 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版本,内容主要如下图所示

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

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

2、Texlive编辑中文实现原理

2.1、Tex文档编译流程

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

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当前用户文件夹路径,后续生成的字体相关文件都要安装在本文件夹下,才有效果。

我的电脑里,安装的Texlive当前用户文件夹路径在’C:/Users/25614/texmf’,但其实顺着这个路径去找,会发现一开始并没有这个文件夹,所以此时需要我们去自己创建,后面Tex编译的时候就会顺着之前系统配置好的路径依次寻找相关字体,所以这一步至关重要。

(2)生成我们需要安装的字体,下载gbkfonts.zip并解压后,文本编辑器打开go.bat Windows批处理文件,注意由于我们需要修改内容并保存,所以提前修改文件的属性,给予可以修改的权限:

打开文件后里面内容具体如下:

由于以上路径还是在Windows比较老的版本下的字体存放路径,此时我们要修改成我们自己电脑里相应的字体存放的位置,我的修改成如下形式,并保存:

之后,双击go.bat Windows批处理文件,就会开始生成四种字体的各种文件,最后如下所示:

(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、结果展示

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

  1. texstudio如何安装cjk宏包_MikTex+TexStudio配置论文写作环境

    MikTex+TexStudio配置论文写作环境 1. 前言 因为写论文需要要倒腾latex,最开始是使用vscode和tex live,结果折腾了好久没安装配置好,去知乎问,发现了一些好看的编辑器, ...

  2. windows环境下pip安装python的包时候提示invalid syntax (转载CSDN)

    刚学python,用pip安装出错,如下图: 检查了一下环境变量,然而并没没问题.在stackowerflow上逛了一圈,找到了解决方法: 在命令行下cd 进对应python的script文件目录,再 ...

  3. Windows11环境下安装Yapi教程

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Windows11环境下安装Yapi教程 目录 一.Yapi 简介 1.Yapi是什么? 2.Yapi的主要功能简介 二.Yapi 安 ...

  4. linux mysql5.6编译_Linux 环境下编译安装MySQL5.6的笔记记录

    一.首先搭建好Linux环境,我这边使用的是redhat enterprise 6.5,并且建议磁盘划分逻辑卷,以便后期的扩容工作. 二.环境搭建好了之后,我们就要去准备MySQL的安装文件,到现在为 ...

  5. ubuntu16.04 在cuda9.0环境下编译安装opencv2.4.13.7

    ubuntu16.04 在cuda9.0环境下编译安装opencv2.4.13.7 安装步骤: 1.安装cuda9.0:https://blog.csdn.net/zhuangwu116/articl ...

  6. centos7环境下MySQL安装教程

    Linux centos7环境下MySQL安装教程 作者:随缘相识-(志同道合) 字体:[增加 减小] 类型:转载 时间:2017-03-17 我要评论 这篇文章主要为大家详细介绍了Linux cen ...

  7. RHEL5.6环境下yum安装MySQL

    RHEL5.6环境下yum安装MySQL记录,2017年2月20日 1.卸载原有的MySQL rpm -qa命令查询是否安装了MySQL [root@localhost mysql]# rpm -qa ...

  8. Windows环境下smarty安装最简明教程 分享

    记得去年写过一个windows+IIS的PHP4安装最简明教程,那天去baidu搜了一下,竟然查到了好几页,这篇文章被很多网站.blog转载,在论坛上的阅读次数截至今日更是让人难以置信的达到1800多 ...

  9. macOS 环境下 Go 安装配置

    macOS 环境下 Go 安装配置 1.下载安装包 2.配置环境变量 1.下载安装包 大家尽量选择 官网 下载,根据自己系统版本和位数选择需要的包 2.配置环境变量 安装完成后,需要我们手动配置一下环 ...

最新文章

  1. 【星球知识卡片】视频分类与行为识别有哪些核心技术,对其进行长期深入学习...
  2. 【NLP】打破BERT天花板:11种花式炼丹术刷爆NLP分类SOTA!
  3. 开发人员必读的11本最具影响力书籍
  4. 判断字符串是否为空--string.Empty、string=、s.length==0
  5. ERROR: Process pool report error: Can‘t pickle
  6. Php中如何记录本报时间,php写日报功能追加
  7. 关于Mysql修改密码的方法汇总
  8. 全球名校AI课程库(36)| 辛辛那提大学 · 离散数学课程『MATH1071 Discrete Math』
  9. Adaboost Random Forests 等机器学习方法 搜索热度
  10. 人机交互(HCI)界面设计(笔记)
  11. B.系数(mod意义下的系数转化+lucas)
  12. Android 开发都有哪些好书值得一读?
  13. 基于小波分解与LSTM的城市轨道短时客流预测
  14. maven打jar包时报update interval of XXX has elapsed or updates are force
  15. 什么是5g卡,5g有啥好的
  16. vite的public目录
  17. VIP服务器间转送文件,vip服务器
  18. NS3 Tutorial 中文版:第四章 概念概述
  19. 生成条形码 code39 和 code 128
  20. 【愚公系列】2021年12月 攻防世界-简单题-REVERSE-001(Hello, CTF)

热门文章

  1. ubuntu16.04下安装QQ教程
  2. 艾永亮:智能玩具无法下沉市场,超级产品玩具难再现
  3. DELL T620服务器硬盘坏,更换硬盘做RAID同步
  4. zk下载文件中文乱码解决方案
  5. CM9源码分析-Settings
  6. 钉钉之最终幻想:No App
  7. 鹏业云计价i20应用技巧之清单计价与定额计价互转应用
  8. 亲测好用的开发工具【1】 RuoYi-MT
  9. .Net5下Console.WriteLine()方法无输出
  10. php超链接字体大小,中国大学MOOC: 设置了超链接的文字颜色会发生变