如何使用Texlive运行Ctex编写的模板?

这篇文章是转载的,转载自:在 TeXLive 中使用 CJK 宏包编译 GBK 编码的中文文档 | 极客斋 (chennanzhang.github.io)

为什么要研究“如何使用TexLive运行Ctex编写的模板”?

源于我最近遇到的问题,一个Latex幻灯片模板使用的是Ctex模板,这个模板只能在Ctex下运行,而我的笔记本安装的是TexLive,(当然网上也有文章写 如何一台笔记本同时安装texLive和Ctex,重要的是如何避免两个软件发生冲突。如果直接贸然安装这两个软件,会发现不管什么版本的模板,都运行不了。)

自然而然的,想到如何用TexLive运行Ctex编写的模板?TexLive和Ctex编写的模板之间差别是什么?如何建立二者的桥梁?毕竟TexLive的使用范围更加广泛,Overleaf上使用的也是TexLive。如果能找到二者的桥梁,那么以后遇到这样的问题,可以直接在自己计算机的TexLive上运行,甚至更一般的,可以在Overleaf上运行。

如何找到这篇文章的?

最初看Windows11 环境下Texlive2022安装CJK宏包这篇文章时,需要下载文章中提到的“gbkfongts.zip”,第一次遇到这个词真的很陌生,不知道什么意思,也不知道它可以用来做什么,点开文章中的超级连接,来到了这个页面:CJK+GBK中字体生成器,需要下载,还需要积分,我没有积分,没有办法下载。(后来突然想起可以使用Taobao来下载CSDN的文件),在没办法下载的时候就想,博主可以做到,我也可以检索到。于是在biying中键入“CJK+GBK中字体生成器”,就看到了在 TeXLive 中使用 CJK 宏包编译 GBK 编码的中文文档这篇文章。

为什么想要转载这篇文章?

首先这篇文章值得转载,其次,希望之后遇到这个问题的时候,可以快速的找到解决这个问题的办法。最后,原文章的链接可能会由于各种原因失效(毕竟原文章中给出的一些超级链接已经失效)。

目录

一、背景介绍

二、gbkfonts 下载

三、生成中文字体和配置文件

四、让 dvips 使用 Type1 中文字体

五、让 pdflatex 使用 TTF 中文字体

六、让 dvipdfm 使用 Type1 中文字体

七、最后给个文档例子


一、背景介绍

在一些中文 LaTeX 社区总会有人拿出祖传的文档模板,在 TeXLive 中进行编译,然后发现不能进行编译。这些文档有一些特点:

  • 文档使用 GBK 编码;
  • 使用 latex →→ dvips →→ ps2pdf 、latex →→ dvipdfm(x) 或 pdflatex 进行编译;
  • 裸用 CJK 宏包进行中文支持,文档中充斥了 \begin{CJK*}{GBK}{song} 这样的代码。

这种模板是一种比较古老的中文支持方式,这种代码在目前流行的 TeX 发行版如 TeXLive 或 MiKTeX (非 CTEX 套装)中通常是无法正常编译的。对于拿着这种代码的提问,社区里的回答通常是:“换现代的中文编译方式:xelatex + ctex 宏集 + UTF-8 文件编码”。这个回答当然是没错的。对于需要经常使用 LaTeXLATE​X 来编写文档的人来说,更新知识,使用现代的引擎和中文支持方式来处理问题是必要的,但对于只拿 LaTeXLATE​X 用一次完成一个任务的人,让他去从头学习一些新知识显然不太现实。而且,如果这个任务还规定了必须使用这种祖传模板,他又在使用这种模板时遇到了问题,向别人求助时给出的这种代码会让有心帮忙的人也爱莫能助。今天我在整电脑文件时突然发现了多年以前下载的 gbkfonts,这个程序可以为 TeXLive 配置一些中文字体以供这种古老的中文支持方式使用,于是我试着配置了一下,并把配置过程记录在这里。

、gbkfonts 下载

gbkfonts 是基于energy的源程序,由王垠改进的用来从 TTF 汉字字体生成 TeX 使用的汉字 Type1 字体转换软件,同时还可以生成很多 TeX 系统程序需要的配置文件。

下载链接:【免费】gbkfonts.zip资源-CSDN文库

(来源:gbkfonts+texmf

三、生成中文字体和配置文件

收集好需要进行转换的 TTF 字体,我们假定其都已经安装在 Windows 系统中,即 C:\Windows\Fonts\ 下,将 gbkfonts.zip 在任意位置解压缩,用文本编辑器打开 go.bat 文件,可以看到文件内容如下:

1
2
3
4
gbkfonts -c -gbk c:/winnt/fonts/simsun.ttf  song
gbkfonts -c -gbk c:/winnt/fonts/simhei.ttf  hei
gbkfonts -c -gbk c:/winnt/fonts/simkai.ttf  kai
gbkfonts -c -gbk c:/winnt/fonts/simfang.ttf fs

这个程序编写之际 Windows 版本大概还是 Win2000,所以指向系统路径还是C:/winnt,这里我们将其替换为 Win10 的系统路径。同时,应注意到新的中易宋体的文件采用的是 simsun.ttc 格式,因此需要一并修改为:

1
2
3
4
gbkfonts -c -gbk c:/windows/fonts/simsun.ttc  song
gbkfonts -c -gbk c:/windows/fonts/simhei.ttf  hei
gbkfonts -c -gbk c:/windows/fonts/simkai.ttf  kai
gbkfonts -c -gbk c:/windows/fonts/simfang.ttf fs

 值得注意的是:本文提供的gbkfonts.zip文件中已经修改为了Win10的系统路径,因此无需修改go.bat文件。具体自己可以下载gbkfonts.zip文件,然后用文本编辑器打开 go.bat 文件。

这其中,songheikaifs 即为字体族名称,也就是 CJK 环境的第二个参数。当然,这个文件还可以继续补充其他字体,只要依照相似的格式继续列在后面,并且,如果在 gbkfonts.ini 中没有该字体的相关信息,也需要在 gbkfonts.ini 中依样补充。考虑我们只是为了能编译古老的模板,而这类模板一般不会出现这四类以外的字体,所以也就不考虑另外增添字体了。

文件修改完成之后,双击或命令行运行 go.bat,然后就可以去泡杯茶耐心地进行等待了,转换字体需要一段的时间。一段时间后,该文件夹下将新增五个文件夹和若干配置文件。这些文件需要我们放置到系统本地 TDS (TDS 概念介绍下进行配置。

  • 将 ./fonts 下全部内容复制到 texmf-local/fonts 下
  • 将 ./tex 下全部内容复制到 texmf-local/tex 下
  • 将 ./dvipdfm 下全部内容复制到 texmf-local/dvipdfm 下
  • 将 ./dvips 下全部内容复制到 texmf-local/dvips 下
  • 将 ./cjk.map 复制到 texmf-local/fonts/map/dvips 下

四、让 dvips 使用 Type1 中文字体

latex→→dvips→→ps2pdf 这是历史最为古老的编译链。dvips 是依靠 texmf-dist/dvips/config/config.ps 来知道字体信息的。一般不要改动系统的这个文件,而是应该将其复制到本地 TDS 相应路径,即 texmf-local/dvips/config/config.ps,用文本编辑器打开,在文件末尾添加一句:

1
p +cjk.map

保存文件后,在命令行内运行:

1
texhash

至此,dvips 即可使用中文 type1 字体。

五、让 pdflatex 使用 TTF 中文字体

将系统 TDS texmf-var/fonts/map/pdftex/updmap/pdftex.map 复制到 texmf-local/fonts/map/pdftex/pdftex.map,将生成的 ./pdftex/config/gbk*.map 的文件内容添加到 pdftex.map 文件的末尾。然后将生成的 ./dvips/chinese/下所有内容复制到 texmf-local/fonts/enc/pdftex 下(这一步我不确定是不是有必要)。最后在命令行内运行:

1
texhash

至此,pdflatex 可以使用 TTF 字体编译中文文件。

六、让 dvipdfm 使用 Type1 中文字体

这一步的配置有些问题让我至今还没有搞懂。将生成的 ./cid-x.map 复制到 texmf-local/dvipdfm/local/config/ 下,将 texmf-dist/dvipdfmx/dvipdfmx.cfg 复制到 texmf-local/dvipdfm/ 下,修改该文件,将原配置的 218 行 %f cid-x.map 取消注释,或在文件末尾添加

1
f cid-x.map

保存文件后,在命令行中运行:

1
texhash

按说,到此应该是将 dvipdfm(x) 配置成功,但在命令行运行

1
dvipdfmx filename.dvi 

会给出 Warning:

1
dvipdfmx:warning: Glyph "index0x1BB7" not available in font "simsun.ttc".

在生成的 pdf 文件中没有任何汉字字形。

可是将修改后的 texmf-local/fonts/map/pdftex/pdftex.map 重命名后,刷新文件名数据库后再次运行 dvipdfmx 时,居然好了,文件没有任何问题。Type1 中文字体嵌入文件中,但很显然,pdflatex 编译时将无法使用 TTF 字体,而是使用了 Type3 点阵字体。总之,现在我做不到在一种配置下能使这两个驱动都正常使用 Type1 或 TTF 中文字体。算了,反正我也不准备应用这种中文支持方式。这只是在帮忙解决问题的时候临时编译测试使用。

七、最后给个文档例子

接下来给出一个古老模板裸用 CJK 进行中文支持的例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
\documentclass{article}
\usepackage{CJK}
\begin{CJK}{GBK}{song}
\title{我的一篇中文文档}
\author{拿了橘子跑啊}
\end{CJK}
\date{\today}
\begin{document}
\begin{CJK*}{GBK}{song}
\maketitle
中文折腾起来还是很费劲的。
\end{CJK*}
\end{document}

推荐阅读:

Latex之安装宏包_latex 怎么安装bbm宏包-CSDN博客 

Latex之安装GBK字体_latex font gbk38-CSDN博客

Windows11 环境下Texlive2022安装CJK宏包,实现对GBK编码中文latex文件的编辑_latex cjk-CSDN博客

LaTex支持中文的三种方式_latex 编译中文-CSDN博客 

Latex中文utf-8编码的三种方式_latex的documentclass utf8-CSDN博客

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值