Contributed by Edward G.J. Lee <[email protected]>
Last Update: 2003年 4月30日 周三 03時25分52秒 CST
在讓 ConTeXt 使用 Big-5 中文前, 至少要能在英文環境運作。
# cd ${TEXMF}/web2c
# texexec --make en metafun
為了和 CJK 和 dvipdfmx 配合, 請先安裝 chinese/CJK 和 print/dvipdfmx, 採用 CJK standard encoding vector,這樣一來, 字型方面的資料就可以共用了。
修改檔案:
1. ${TEXMF}/tex/context/config/cont-usr.tex
如果沒有這個檔,請將 ../base/cont-usr.ori 拷貝一份成 cont-usr.tex。 在 \protect \endinput 之前加入下列資料:
% 將 Poorman 的對應,轉成 CJK 的對應
\defineucharmapping{BIG5}#1#2%
{\unicodeposition=#1
\advance\unicodeposition -161
\multiply\unicodeposition 157
\advance\unicodeposition #2
\advance\unicodeposition-\ifnum#2>160 98\else64\fi
\dorepositionunicode}
% for Big-5 CJK standard encoding vector
\def\currentucharmapping{BIG5}
% font alias。這樣就不必更動原來的字型設定了
\definefontsynonym [b5song] [arb5sung] [encoding=big5]
\definefontsynonym [b5songsl] [arb5sungs] [encoding=big5]
\definefontsynonym [b5kai] [arb5kai] [encoding=big5]
\definefontsynonym [b5kaisl] [arb5kais] [encoding=big5]
2. ${TEXMF}/tex/context/base/font-chi.tex
將某行只有 \SimChi 改成 \TraChi。
改好後重新執行:
# cd ${TEXMF}/web2c/
# texec --make en
前置處理 script
由於「許、功」的問題,必須前置處理,以下是改自王佑中先生的 clatex 的 perl script。
#!/usr/bin/env perl # # Process Big-5 Traditional Chinese ConTeXt file. # Usage: chcont.pl tex file(NO tex extension) # By Edward G.J. Lee <[email protected]> 2003.04.24 # Inspire heavily from wycc's([email protected]) clatex. # $one = 161; $two = 254; open(CONT,">$ARGV[0].cont"); if ($ARGV[0] =~/(.*)\.tex$/) { -r $ARGV[0] || die " file $ARGV[0] not found\n"; open(INFILE,"<$ARGV[0]"); } else { -r "$ARGV[0].tex" || die "file $ARGV[0].tex not found\n"; open(INFILE,"<$ARGV[0].tex"); } while(<INFILE>) { &trans_print($_); } close(CONT); system "texexec ${ARGV[0]}.cont"; sub trans_print { local($s) = @_; local($i,$c,$nc,$ordc,$ordc1); for($i=0;$i<length($s);$i++) { $c = substr($s,$i,1); $ordc = ord($c); if (($ordc>=$one)&&($ordc<=$two)) { $nc = substr($s,$i+1,1); if ($nc =~/[\\{}\^_]/) { $ordc1 = ord($nc); print CONT "\\uc{$ordc}{$ordc1}"; } else { print CONT $c,$nc; } $i++; } else { print CONT $c; } } }
測試:
\usemodule[chinese]
\starttext
\completecontent
%\setupindenting[medium]
\setupwhitespace[10pt]
\chapter{桃花源記}
\ConTeXt\ 中文測試。
\section{桃花源記前段}
晉太元中,武陵人,捕魚為業,緣溪行,忘路之遠近;忽逢桃花林,夾岸數百步,
中無雜樹,芳草鮮美,落英繽紛,漁人甚異之。復前行,欲窮其林。林盡水源,
便得一山。山有小口,彷彿若有光,便捨船,從口入。
初極狹,纔通人;復行數十步,豁然開朗。土地平曠,屋舍儼然。有良田、美池、
桑、竹之屬,阡陌交通,雞犬相聞。其中往來種作,男女衣著,悉如外人;黃髮、
垂髫,並怡然自樂。見漁人,乃大驚,問所從來;具答之,便要還家,設酒、殺雞、
作食。村中聞有此人,咸來問訊。自云:「先世避秦時亂,率妻子邑人來此絕境,
不復出焉;遂與外人閒隔。」問今是何世;乃不知有漢,無論魏、晉。此人一一
為具言所聞,皆歎惋。餘人各復延至其家,皆出酒食。停數日,辭去。此中人語
云:「不足為外人道也。」
既出,得其船,便扶向路,處處誌之。及郡下,詣太守,說如此,太守即遣人隨
其往,尋向所誌,遂迷不復得路。南陽劉子驥,高尚士也,聞之,欣然規往,未
果,尋病終。後遂無問津者。
\chapter{將進酒}
君不見,黃河之水天上來,奔流到海不復回。
君不見,高堂明鏡悲白髮,朝如青絲暮成雪。
人生得意須盡歡,莫使金樽空對月。
天生我材必有用,千金散盡還復來。
烹羊宰牛且為樂,會須一飲三百杯。
岑夫子,丹丘生,將進酒,君莫停。
與君歌一曲,請君為我側耳聽。
鐘鼓饌玉不足貴,但願長醉不願醒。
古來聖賢皆寂寞,惟有飲者留其名。
陳王昔時宴平樂,斗酒十千恣讙謔。
主人何為言少錢,徑須沽取對君酌。
五花馬 千金裘,呼兒將出換美酒。
與爾同消萬古愁。
\chapter{許功開的問題}
許功開。這些有問題的字元要避開。
也就是說,要前置處理這些字元。
\stoptext
# chcont.pl cont-b5 ==> 千萬不要加副檔名,切記!
這樣會產生 cont-b5.dvi
# dvipdfmx cont-b5 ==> 產生不內嵌字型且可 copy&paste 的 pdf 檔。
這裡沒有用到 pdftex 嵌入 TTF 的功能,原因是他不僅嵌入整個 subfont 檔案會變得很大,而且又沒有 copy&paste&search 的功能。