Latex下支持中文的方式有多种,其中之一就是应用CJK宏包。当Tex发行版,如MikTex,安装CJK后,可以使用中文。但是,发行版中包含的字体较少,例如MikTex,当安装完CJK-Fonts后,只支持UTF-8编码的宋字体等。为了使用更多的中文字符集及其字体,需要手动安装之。本文主要介绍如何在Windows 7中为MikTex2.9安装GBK字体。

安装额外的字体过程与安装额外的宏包类似,也需要在自建的texmf目录下安装字体文件。关于如何安装额外的宏包可参考以前的博客。只不过安装字体文件更加复杂。

1. 建立字库定义文件*.fd

打开MikTex的安装目录,记为MIKTEXPATH,本文目录为:MIKTEXPATH=E:\Program Files\MikTex2.9\。注意观察MIKTEXPATH下tex\latex和Fonts两个文件夹的目录结构,即MikTex的TDS规则。然后仿照目录MIKTEXPATH\tex\latex\cjk\GB,建目录texmf\tex\latex\cjk\GB(其中texmf是MikTex的本地TDS目录)。仿照MIKTEXPATH\tex\latex\cjk\GB目录下的c19song.fd文件,分别在texmf\tex\latex\cjk\GB目录中建宋体、仿宋、楷体、黑体、隶书、幼圆字体的*.fd文件,分别命名为:c19song.fd, c19fs.fd, c19kai.fd, c19hei.fd, c19li.fd和c19you.fd。以文件c19song.fd为例,其中非注释部分为:

%...
\def\fileversion{4.3.0}
\def\filedate{1999/06/20}
\ProvidesFile{c19song.fd}[\filedate\space\fileversion]
%...
\DeclareFontFamily{C19}{song}{\hyphenchar \font\m@ne}
\DeclareFontShape{C19}{song}{m}{n}{<-> CJK * gbksong}{}
\DeclareFontShape{C19}{song}{bx}{n}{<-> CJKb * gbksong}{\CJKbold}
\DeclareFontShape{C19}{song}{m}{sl}{<-> CJK * gbksongsl}{}
\DeclareFontShape{C19}{song}{bx}{sl}{<-> CJKb * gbksongsl}{\CJKbold}
\DeclareFontShape{C19}{song}{m}{it}{<-> CJK * gbksongsl}{}
\DeclareFontShape{C19}{song}{bx}{it}{<-> CJKb * gbksongsl}{\CJKbold}
\endinput

这些命令的含义现解释如下:

文件中命令\DeclareFontFamily和\DeclareFontShape的定义可以总结为:

\DeclareFontFamily{C19}{#1}{\hyphenchar \font\m@ne}
\DeclareFontShape{C19}{#1}{#2}{#3}{<#4> #5 * gbk#6}{#7}

这些Tex命令中参数,即#1~#7的具体含义如下:

参考MIKTEXPATH\doc\latex\base下文档fntguide.dvi,每种文本字库(text font)都有5个属性,分别是encoding, family, series, shape, size。以上命令\DelareFontShape就是定义这些属性。这里的C19表示CJK所使用的GBK字库的编码(encoding)。参考经典文档clatex.pdf(吴凌云和王磊. "中文LaTeX扩展安装指南" ),七个参数的定义为:

  • #1,字族(family),这里每个*.fd文件定义一种字族,分别取song, fs, kai, hei, li, yuan。例如,对应着CJK环境定义:\begin{CJK*}{GBK}{song};
  • #2,字系(series),这里可以取:m(medium weight)和bx(bold extended),分别表示正常和加粗字体。其中bx对应着latex文档中\bf或\textbf命令的使用字体;
  • #3,字形(shape),这里可以取:n(normal/upright),sl(slant)和it(italic),分别表示正常,倾斜和斜体。例如,it对应着latex文档中\it或\textit命令的使用;
  • #4,适用的字号(size),一般认为所有字号都适用,设置为“-”;
  • #5,这里一般取CJK和CJKb,其中CJKb表示用另外一种字体代替,例如上面的{bx}{n}的字库文件就用{m}{n}的字库文件gbksong代替,只是多了一个操作\CJKbold,用来加粗;
  • #6,字库文件名字,CJK会在gbk#6后面再加上字库的编号,以作为子字库的名字(subfont name)。它们会对应于MiKTeX的*.tfm文件,例如gbksong05.tfm,gbkkaisl02.tfm等,可以参考后面的目录texmf\fonts\tfm\chinese下面的各个子目录文件;
  • #7,CJK生成加粗字体的一种预处理方法:通过平移字模后重叠得到。但效果并不太好,特别是放大后可以看到明显的锯齿痕迹。如果希望用此功能则设置为\CJKbold,否则空着。

建立其它字体的fd文件时,只要将示例中红色“song”的部分换成其它字体的名字即可,如“hei”等。fd文件的作用是给MikTex指出了tfm等文件的名字,建立了两者的连接。因此,下面要做的工作是将tfm等文件放在指定位置。

2. 安装字库文件

接着需要安装字库文件。但安装之前,需要获得字库文件。一般情况下,有两种方式可以获得:(a)从指定网站上下载已经编辑好的字库文件;(b)使用gbkfonts等工具自己制作字库文件。本文使用了第一种方法,即从网络上下载字库文件。

从ftp.ctex.org下载字库文件/pub/tex/fonts/type1/font-chs.zip,解压到font-chs文件夹。然后按照如下方式将解压的文件复制到texmf的子目录下:

  • 将font-chs/fonts/tfm/chinese/下所有子目录和*.tfm文件都拷贝到相应的texmf/fonts/tfm/chinese/目录下。这些是各个字体/字族(song, fs, kai, hei, li, you)的*.tfm文件,分别有gbk#6??.tfm和gbk#6sl??.tfm两种,对应这*.fd文件中的定义。其中#6对应前面所说的参数 #6,而??是这些子字库文件的编号,取十进制01~94;
  • 将font-chs/fonts/afm/chinese/下所有子目录和*.afm文件都拷贝到相应的texmf/fonts/afm/chinese/目录下;
  • 将font-chs/fonts/type1/chinese/下所有子目录和*.pfb文件都拷贝到相应的texmf/fonts/type1/chinese/目录下。与*.tfm相对应的命名规则;
  • 将font-chs/dvips/chinese/map/下的两个*.map文件拷贝到相应的texmf/fonts/map/dvips/chinese/map/下。这两个文件为文本文件,实际上规定了前面*.tfm和*.pfb的对应关系。其中可以从文件gbk-t1.map看到,gbk#6??.tfm文件的字体与gbk#6??.pfb定义的相对应;而gbk-t1sl.map规定,gbk#6sl??.tfm文件的字体是由gbk#6??.pfb定义的字体作一个倾斜操作得到的。

这里说明一下:*.tfm文件只是在latex编译*.tex时使用来确定字符的高和宽等,即一个盒子,得到dvi文件;而当用MiKTeX工具yap打开dvi,或用dvips来将*.dvi文档生成*.ps文件时,会去找相应的*.pfb字库文件;*.afm文件则是pdflatex在编译*.tex 时所使用的定义字符高和宽的文件,并直接生成*.pdf文件。

3. 配置使用环境

进入MiKTeX的命令环境,如果使用WinEdt,则直接点击工具栏的“Command Prompt”图标,进入DOS命令框;或者直接启动CMD,记得使用管理员权限打开。然后执行命令:initexmf --edit-config-file updmap,在打开的文件updmap.cfg中添加两行:
    Map gbk-t1.map
    Map gbk-t1sl.map
保存并关闭这个文件。updmap.cfg文件位于 "C:\Documents and Settings\All Users\Application Data\MiKTeX\2.6\miktex\config"目录下,一般都不直接打开修改,都会通过命令的方式打开修改。

然后在CMD命令框中分别执行命令:
     initexmf -u
     initexmf --mkmaps
     initexmf -u

本文参考了两篇文章:(a)CTEX论坛中的“安装CJK之GBK(MiKTeX 2.6)”;(b)水木社区的“用了半年miktex了, 还是配置不好中文”。

Latex之安装GBK字体相关推荐

  1. 记录一次docker部署tomcat安装GBK字体,容器系统Debian GNU/Linux

    记录一次docker部署tomcat安装GBK字体 docker版本号为:Docker version 20.10.6, build 370c289 下载的官方镜像: tomcat:8.5.32 to ...

  2. Linux安装gbk字体,Linux安装GBK/GB2312程序显示乱码的五种解决方法 - 软件教程网

    不少用户在Linux系统中安装GBK或GB2312的时候遇到了乱码问题,这主要是系统默认语言是uft8所导致,对于该问题可用五种方法进行解决,下面小编就给大家介绍下Linux安装GBK或GB2312程 ...

  3. LaTeX 如何安装一些非免费字体 getnonfreefonts

    LaTeX 如何安装一些非免费字体 getnonfreefonts 在 LaTeX 中,有些字体是可以免费使用的,但是因为这些字体不允许收费分发,所以在本地化的安装里通常没有提前包括它们.本文介绍如何 ...

  4. Latex 环境下“中文字体”的使用

    Latex 环境下"中文字体"的使用 使用CTex自带编辑器WinEdt,在该环境下如何使用中文字体呢?作为一个菜鸟,折腾了好几天,最终基本解决了这个问题.现在整理下,分享给后来者 ...

  5. Ubuntu14.04系统安装Latex及配置中文字体

    使用Latex排版很方便,免去了面对Word出现的各种奇葩问题,但是Latex是外国人编写的一套排版的宏定义,对于有时候中文使用的时候会出现不兼容的问题.例如在Windows下WinEdt就会出现各种 ...

  6. Linux中Debian版中安装中文字体

    转载于https://my.oschina.net/winHerson/blog/176990 本人查找了很多方法后,最后觉得好用的还是链接的这一版,以下内容是根据链接内容的基础加入的许多细节步骤. ...

  7. ubuntu 安装中文字库_Ubuntu安装中文字体及使其生效

    1.安装中文字体 界面操作:系统-->管理-->language support 采用命令:sudo apt-get install language-pack-gnome-zh lang ...

  8. CentOS 7.7 x86-64安装系统字体及美化实录

    我在rMBP上用VMware Fushion 15.1安装了CentOS 7.7的虚拟机,带有gnome界面,打算用于日常的开发工作.但是发现界面实在是太丑陋了,决定趁周末折腾一下,网上研究了一些资料 ...

  9. 查看linux主机是否安装宋体码,Linux 安装宋体字体的简单办法

    1. 今天同事说测试环境(CentOS) 打印有异常,无法将汉字正常打印出来. 2. 开发同事提供的思路是安装上宋体的字体再进行尝试,并且给出了一个解决方案的地址: https://blog.csdn ...

最新文章

  1. 独家 | 图解BiDAF中的单词嵌入、字符嵌入和上下文嵌入(附链接)
  2. 为SharePoint 2010创建Application Page
  3. Scut游戏服务器引擎6.1.5.6发布,直接可运行,支持热更新
  4. Fragment Summary 2/2
  5. Java的子类可以继承父类的静态变量和静态方法吗?
  6. Opencv——霍夫变换以及遇到的一些问题
  7. 数据密集型应用系统设计--数据存储与检索
  8. centos7下给bond网卡配置bridge桥接
  9. Google 编程之夏:海量优质项目,丰厚报酬,你竟然还不知道?
  10. 检查版本是否需要更新的Demo
  11. stopwords怎么用_【技术】怎么用Python画出好看的词云图?
  12. 用计算机解决问题时 首先应该确定程序,算法与程序设计试题带答案
  13. Dorado 7 Ajax 交互处理
  14. Python 四大名著词频画图
  15. 【NOI OJ】4977 怪盗基德的滑翔翼
  16. Wap Push 源码java实现
  17. 【无标题】java学习第二天
  18. HDU 4509 hash
  19. Unity2D:灯光系统
  20. android安装自动打开网页,Android调用系统自带浏览器打开网页的实现方法

热门文章

  1. C++创建桌面应用程序:处理对话框DialogBox
  2. 好消息,个税起征点要提至每月5000了!
  3. ceph修复osd为down的情况
  4. msi和exe安装文件有什么区别
  5. nyoj 541 最强DE 战斗力
  6. 霍金去世-时间有没有尽头?Stephen William Hawking
  7. Leetcode 999. Available Captures for Rook
  8. DO、PO、VO、DTO、BO、POJO概念
  9. 商米科技首次冲刺上市失败:科创属性遭质疑,连年亏损造血难?
  10. c语言把一个文件中的内容复制到另外一个文件中的代码的另外一种写法