β

ConTeXt处理中文

知行近思 377 阅读

Github上找到一个Pandoc处理简历的 Repo ,Markdown格式书写,Pandoc转换为HTML,RTF,PDF等格式。转换PDF用的是ConTeXt,中文全部不显示。

Contents

ConTeXt对中文的支持

网上搜到一篇文章,介绍TeX家族对中文的支持:

由于 ConTeXt MkIV 使用近来开发的 LuaTeX 引擎,能容易的使用字体,所以推荐使用。 ConTeXt MkII 使用 pdftex 引擎排版。
MkIV (推荐)
所有模板都是 UTF-8 编码,参照 way2ctx 安装好 ConTeXt Minimals 后,找到 Adobe 的四款字体(AdobeFangsongStd-Regular.otf AdobeHeitiStd-Regular.otf AdobeKaitiStd-Regular.otf AdobeSongStd-Light.otf) 放到某个目录下并设置 好 OSFONTDIR,编译方法见 way2ctx 文档。
所有模板都在 ConTeXt Minimals 2009-09-02 Linux 版编译通过。
使用 Li Yanrui 的 zhfonts.tex - http://ctex-kit.googlecode.com/svn/trunk/templates/ConTeXt-MkIV/zhfonts/
使用 Li Yanrui 的新 zhfonts.tex - http://ctex-kit.googlecode.com/svn/trunk/templates/ConTeXt-MkIV/zhfonts-new/
使用 Li Yanrui 的 t-zhfonts - http://ctex-kit.googlecode.com/svn/trunk/templates/ConTeXt-MkIV/t-zhfonts/
使用 t-simplefonts - http://ctex-kit.googlecode.com/svn/trunk/templates/ConTeXt-MkIV/t-simplefonts/
!!! Sorry, I'm stupid, I have no idea which one is better...

一开始想试zhfonts,在 zhfonts模块的用法 一文中知道了ConTeXt模块路径是 tex\context\third,到此目录看到了simplefonts,于是直接使用simplefonts了。

参考上面引文中simplefonts链接里的test.tex文件,在pandoc-resume的tex模板文件style_chmduquesne.tex里,加入

\usemodule[simplefonts]
\setupsimplefonts[size=11pt]
\setcjkmainfont[AdobeSongStd][regularfont={* Light},italicfont={AdobeKaitiStd Regular},boldfont={AdobeHeitiStd Regular},bolditalicfont={AdobeHeitiStd Regular}]
\setcjksansfont[AdobeKaitiStd][boldfont={AdobeHeitiStd Regular},bolditalicfont={AdobeHeitiStd Regular}]
\setcjkmonofont[SimFang][boldfont={AdobeHeitiStd Regular},bolditalicfont={AdobeHeitiStd Regular}]
% 启用中文断行
\setscript[hanzi]

直接编译可能会报错,因为一些字体的缺失。新安装缺失的字体后可能需要执行  luatools.exe --generate 才能正常识别字体。

simplefonts     > font ''adobesongstd'' not found
simplefonts     > font ''adobesongstd'' not found
simplefonts     > font ''adobesongstd'' not found
simplefonts     > font ''adobesongstd'' not found
simplefonts     > font ''adobesongstd'' not found
simplefonts     > font ''adobesongstd'' not found
simplefonts     > font ''adobesongstd'' not found
simplefonts     > font ''adobesongstd'' not found
simplefonts     > font ''adobesongstd'' not found
colors          > defining > unknown library 'hex'

SImSun字体问题

adobe字体缺失时尝试过直接改为Windows系统字体,但是SimSun会报错:

(bad-fontname-simsun:-1)Invalid TTC index number
mtx-context     | fatal error: return code: 1

CTeX论坛 上说TeXLive2014版本的LuaTex载入SImSun有bug。需要更新到最新版。懒得更新了就把Adobe缺失的字体装上。

make强制编译

pandoc-resume Markdown文件到不必经常修改,修改最频繁的是模板文件,但是make 如果原文件没有变化,是不会执行的。这个时候需要 make clean 后再执行 make。如果不论如何都要强制 make 编译,可以用如下命令:

make -B

参考资料

[1]. TeX家族对中文的支持 http://blog.sina.com.cn/s/blog_5e16f1770100o7ae.html
[2]. zhfonts模块的用法 http://garfileo.is-programmer.com/2011/1/11/zhfonts-usage.23740.html
[3]. LuaTeX载入SimSun失败 http://bbs.ctex.org/forum.php?mod=viewthread&tid=79345
[4]. make强制编译 http://blog.csdn.net/robertsong2004/article/details/43601985


作者:知行近思
知行合一,切问近思
原文地址:ConTeXt处理中文, 感谢原作者分享。

发表评论