2007年7月11日星期三

TeXLive 2007 CJK Chinese HowTO

TeXLive 2007 CJK Chinese HowTO

Yue Wang

 
Attention:
 
In TeXLive 2007, there is no need to use CJK package anymore, XeTeX is good enough to handle Chinese and Open/TrueType fonts. and the key problem of XeTeX, i.e. the font switching problem, is tend to be fixed in the next release of XeTeX. But many old documents are written using macropackages/styles based on CJK or CCT, some of them are still widely used today, so, in some cases it is essential to install these fonts.
 
 
Install TeXLive
_________________
First, install TeXLive.
 
wget ftp://ftp.tsinghua.edu.cn/mirror/CTAN/systems/texlive/Images/texlive2007-live-20070212.iso.zip
unzip texlive2007-live-20070212.iso.zip
mount -o loop texlive2007-live-20070212.iso /mnt
cd /mnt
sudo ./install-tl
 
 
press I to install.

Setup System Path
_________________
Set the path. Take debian GNU/Linux as example, modify your /etc/environment like this and make a reboot:

PATH="/usr/local/texlive/2007/bin/i386-linux:/usr/local/matlab/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/games"
LANG="en_US.UTF-8"
LANGUAGE="en_US.UTF-8"

Copy The Files Needed
_________________
make a dir called font, copy the font here.
mkdir ~/font
cd ~/font
cp /media/sda/windows/Fonts/simhei.ttf .

copy all the files needed.
sudo apt-get install fontforge
cp /usr/local/texlive/2007/texmf-dist/source/latex/CJK/utils/subfonts/* ~/font/
cp /usr/local/texlive/2007/texmf/fonts/sfd/*.sfd ~/font/

 
 
Generate Font
______________
Then, make the font. It is a good way to test how fast your computer is :) it takes me 3 minutes to generate the fonts[Core Duo 2]. 
 
Some one complain that the procedure take them 1 hours to do so, this is because you use the new version of fontforge. so be sure to use fontforge 2005. 

time fontforge -script subfonts.pe simhei.ttf hei Unicode.sfd

create a file name makemap like this:

for i in *.tfm
do
cat >> hei.map << EOF
${i%.tfm} ${i%.tfm} < ${i%.tfm}.pfb
EOF
done


Make map file:
chmod +x makemap
./makemap

create a file name c70hei.fd for CJK package:

% This is c70hei.fd for CJK package.
% created by Edward G.J. Lee
% modify by Yue Wang
\ProvidesFile{c70hei.fd}
\DeclareFontFamily{C70}{hei}{\hyphenchar \font\m@ne}
\DeclareFontShape{C70}{hei}{m}{n}{<-> CJK * hei}{}
\DeclareFontShape{C70}{hei}{bx}{n}{<-> CJKb * hei}{\CJKbold}
\endinput


Copy Fonts into  TEXMF
_________________
create the local directory to save the font
cd ~/.texlive2007
cd texmf-var
mkdir -p fonts/map/dvips/CJK
mkdir -p fonts/tfm/CJK/hei
mkdir -p fonts/type1/CJK/hei
mkdir -p tex/latex/CJK/UTF8
cp ~/font/hei.map fonts/map/dvips/CJK/
cp ~/font/*.tfm fonts/tfm/CJK/hei
cp ~/font/*.pfb fonts/type1/CJK/hei
cp ~/font/c70hei.fd tex/latex/CJK/UTF8


Update The System and Test
_____________________
Just run:
texhash
updmap --enable Map hei.map


create a test file to test your work.

\documentclass{article}
\usepackage{CJKutf8}
\begin{document}
\begin{CJK}{UTF8}{hei}
你好!
\end{CJK}
\end{document}


latex test.tex
xdvi test.dvi
dvipdfm test.dvi
xpdf test.pdf
pdflatex test.pdf
......



Virtual GBK Font(Not Essential)
________________________

The main goal of virtual fonts is to make one font for various encoding systems. We still take simhei as an example to tell the reader how to create one UTF8 font for UTF8 and GBK encodings.

first, Let's suggest that you have finished the task of creating a utf8 heiti font for LaTeX and you are still in the ~/font directory with all the fonts and scripts undeleted. you also copy all the utf8 fonts into your ~/.texlive2007 directory and they are working with no problem.

run these commands. if you do not delete something , *.tfm and uni2sfd.pl are still in your ~/font dir.
perl uni2sfd.pl hei UGBK.sfd gbkhei gbk
mkdir ~/.texlive2007/texmf-var/fonts/tfm/CJK/gbkhei
mv gbkhei*.tfm ~/.texlive2007/texmf-var/fonts/tfm/CJK/gbkhei
mkdir ~/.texlive2007/texmf-var/fonts/vf
mv gbkhei*.vf ~/.texlive2007/texmf-var/fonts/vf
mkdir ~/.texlive2007/texmf-var/tex/latex/CJK/GBK

create a file named c19hei.fd just like the c70hei.fd in
~/.texlive2007/texmf-var/tex/latex/CJK/GBK

% This is c19hei.fd for CJK package.
% created by Edward G.J. Lee
\ProvidesFile{c19hei.fd}
\DeclareFontFamily{C19}{hei}{\hyphenchar \font\m@ne}
\DeclareFontShape{C19}{hei}{m}{n}{<-> CJK * gbkhei}{}
\DeclareFontShape{C19}{hei}{bx}{n}{<-> CJKb * gbkhei}{\CJKbold}
\endinput


make a test file in *GBK* encoding like this:

\documentclass{article}
\usepackage{CJK}
\begin{document}
\begin{CJK}{GBK}{hei}
你好
\end{CJK}
\end{document}


if you are lucky, you will get the good outputs without problem (no texhash or updmap needed)

Use ttf directedly in pdftex/dvipdfmx[not recommended]
----------------------------------------------------
Well, our pdflatex/dvipdfmx can also use ttf directedly.
create ~/.texlive2007/texmf-var/fonts/map/dvipdfm/cid- x.map

gbkhei@UGBK@    UniGB-UCS2-H    :0:simhei.ttf
hei@Unicode@    unicode    :0:simhei.ttf

move the font simhei.ttf to the truetype directory:
mkdir ~/.texlive2007/texmf-var/fonts/truetype
cp simhei.tff ~/.texlive2007/texmf-var/fonts/truetype

 
create the map generating file makemap-enc

for i in hei*.tfm
do
cat >> hei-enc.map << EOF
${i%.tfm} < ${i%.tfm}.enc < simhei.ttf
EOF
done

generate the map:
chmod +x makemap-enc
./makemap-enc

copy all the file needed
cp hei-enc.map ~/.texlive2007/texmf-var/fonts/map/pdftex/CJK/
mkdir -p ~/.texlive2007/texmf-var/fonts/enc/CJK/hei
cp hei*.enc ~/.texlive2007/texmf-var/fonts/enc/CJK/hei

copy the adobe font:
sudo mkdir ~/.texlive2007/texmf-var/fonts/cmap
sudo apt-get install cmap-adobe-*
cp -a /usr/share/fonts/cmap/* ~/.texlive2007/texmf-var/fonts/cmap



test that it works:

The UTF8 encoding test file:

\pdfoutput=1
\pdfmapfile{=hei-enc.map}
\documentclass{article}
\usepackage{CJKutf8}
\begin{document}
\begin{CJK}{UTF8}{hei}
你好
\end{CJK}
\end{document}

The GBK encoding test file(save it in gbk first!):

\pdfoutput=1
\pdfmapfile{=hei-enc.map}
\documentclass{article}
\usepackage{CJK}
\begin{document}
\begin{CJK}{GBK}{hei}
你好
\end{CJK}
\end{document}

Install Ctex macro package
-----------------------------------------

There are two versions of ctex macro package, one for  GBK and one for UTF-8.
First, be sure to install all the chinese fonts using simsun.ttf(If you use
simsun.ttc, break it) simhei.ttf, simli.ttf, simkai.ttf, simfang.ttf,
simyou.ttf just follow the example of simhei before.

then, copy all the macropackages in Liangzi's CTeXLive-2005
sudo mount -o loop  CTeXLive2005  /mnt
cp -a /mnt/2005/texmf-local/tex/latex/ctex ~/.texlive2007/texmf-var/tex/latex
cp -a /mnt/2005/texmf-local/tex/latex/ctexutf8
~/.texlive2007/texmf-var/tex/latex
cp -a /mnt/2005/texmf-local/tex/latex/ccmap ~/.texlive2007/texmf-var/tex/latex

modify all the fd files there.
for those fd file in ctexutf8 directory, use song,fang ... instead of unisong,
unifang, unisongsl,unifangsl....., for those fd files in ctex directory, use
gbksong instead of gbksongsl, gbkfang instead of gbkfangsl....
And dont use \CJKbold , use hei instead.


an example file should like:
in utf8 directory

\ProvidesFile{c70rm.fd}
  [2006/06/09 v0.8 ctex
   font definition file]

\DeclareFontFamily{C70}{rm}{\hyphenchar \font\m@ne}
\DeclareFontShape{C70}{rm}{m}{n}{<-> CJK * song}{}
\DeclareFontShape{C70}{rm}{bx}{n}{<-> CJK * hei}{}
\DeclareFontShape{C70}{rm}{m}{sl}{<-> CJK * song}{}


in ctex directory

\ProvidesFile{c19sf.fd}
  [2006/06/09 v0.8 ctex
   font definition file]
\DeclareFontFamily{C19}{sf}{\hyphenchar \font\m@ne}
\DeclareFontShape{C19}{sf}{m}{n}{<-> CJK * gbkyou}{}
\DeclareFontShape{C19}{sf}{bx}{n}{<-> CJKb * gbkhei}{}
\DeclareFontShape{C19}{sf}{m}{sl}{<-> CJK * gbkyou}{}
\DeclareFontShape{C19}{sf}{bx}{sl}{<-> CJKb * gbkhei}{}
\DeclareFontShape{C19}{sf}{m}{it}{<-> CJK * gbkyou}{}
\DeclareFontShape{C19}{sf}{bx}{it}{<-> CJKb * gbkhei}{}
\endinput


Last,run texhash and test the files.
Utf8 test file

\documentclass{ctexreputf8}
\begin{document}
你好
\end{document}

 GBK test file

\documentclass{ctexrep}
\begin{document}
你好
\end{document}
 





--
一步一步教你从互联网赚钱 http://www.zqzn.com/index.asp?rid=key480769
投资理财 http://li-cai.blogspot.com/

3 条评论:

匿名 说...

Hi to every single one, it's really a nice for me to pay a visit this site, it includes priceless Information.
my web site :: diet that works

匿名 说...

Right here is the right blog for everyone who would like to find out about
this topic. You know a whole lot its almost tough to argue with you
(not that I personally will need to…HaHa). You certainly put a new spin on a subject that's been discussed for many years. Great stuff, just wonderful!
Feel free to surf my page ... perfumes baratos

匿名 说...

Woah! I'm really enjoying the template/theme of this site. It's simple,
yet effective. A lot of times it's tough to get that "perfect balance" between user friendliness and visual appearance. I must say you've done
a awesome job with this. Additionally, the blog loads super
fast for me on Chrome. Exceptional Blog!

Here is my blog post ... Batman Games Online