CJK

CJK

CJK:中日韓統一表意文字(CJK Unified Ideographs) 目的是要把分別來自中文、日文、韓文、越文,本質、意義相同、形狀一樣或稍異的表意文字(主要為漢字,但也有仿漢字如日本國字、韓國獨有漢字、越南的喃字)於ISO 10646及Unicode標準內賦予相同編碼。 《CJK統一漢字編碼字元集》— 國家標準 GB13000.1 是完全等同於國際標準《通用多八位編碼字元集 (UCS)》 ISO 10646.1。《GB13000.1》中最重要的也經常被採用的是其雙位元組形式的基本多文種平面。在這65536個碼位的空間中,定義了幾乎所有國家或地區的語言文字和符號。其中從0x4E00到 0x9FA5 的連續區域包含了 20902 個來自中國(包括台灣)、日本、韓國的漢字,稱為 CJK (Chinese Japanese Korean) 漢字。CJK 是《GB2312-80》、《BIG5》等字元集的超集。

簡介

CJK 是 Werner Lemberg 的出色工作。CJK 是中文(Chinese)、日文(Japanese)、韓文(Korean)三國文字的縮寫。顧名思義,它能夠支持這三種文字。實際上,CJK 能夠支持在 LaTeX 中使用包括中文、日文、韓文在內的多種亞洲雙位元組文字。

與國內較為普遍使用的中文 LaTeX 擴展 CCT 相比較,CJK 與 LaTeX 結合得更為緊密。LaTeX 輸出的 DVI 檔案就是標準的 DVI 檔案,可以直接瀏覽而無須象 CCT 那樣要先用 patchdvi 進行預處理。(CCT 是在 emTeX 上開發的,和 emTeX 結合的較好,但由於 emTeX 版本較老,無法使用一些 TeX 和 LaTeX 的新功能,如用 pdfTeX、pdfLaTeX 生成 PDF 檔案,以及用 LaTeX2Html 將中文 LaTeX 檔案轉換為 HTML 檔案)

CJK 作為一個 LaTeX2e 宏包,其對字型的定義遵照 NFSS(新字型選擇框架)。這樣就無須對 DVI 檔案做特殊的處理就可以直接在任何 DVI Viewer 中預覽和列印,也可直接用 dvips 等工具進行轉換。CJK 可以自定義多種字型,可以使用多種字型檔,包括 TrueType 字型檔、Type1 字型檔等。由於使用的是輪廓字型檔,因而 CJK 生成的 PS 檔案和 PDF 檔案效果要好於 CCT。

相關

國家標準 GB13000.1 是完全等同於國際標準《通用多八位編碼字元集 (UCS)》 ISO 10646.1。《GB13000.1》中最重要的也經常被採用的是其雙位元組形式的基本多文種平面。在這65536個碼位的空間中,定義了幾乎所有國家或地區的語言文字和符號。其中從0x4E00到 0x9FA5 的連續區域包含了 20902 個來自中國(包括台灣)、日本、韓國的漢字,稱為 CJK (Chinese Japanese Korean) 漢字。CJK 是《GB2312-80》、《BIG5》等字元集的超集。

安裝

CJK 安裝起來比較困難的原因主要在於如何設定正確的字型和安裝正確的字型檔。CJK 支持許多字型檔方式,這是它的一個優點,但同時也容易使一個新手迷惑。而且許多設定都必須手工完成,這要求你對計算機和 TeX 都比較了解。

目前在 CJK 中常用的字型檔有 TrueType 和 Type1 兩種。前者的安裝相對簡單,而且可以利用中文 Windows 中的字型檔,減少占用的硬碟空間。我們製作安裝包 CJK Setup for Win32 可以自動完成這一部分的設定工作。

如果你想使用 Type1 字型檔,就必須在生成 Type1 字型檔的同時生成相應的 tfm、afm 和 enc 檔案,還有字型的 map 檔案。Unix/Linux 下的工具 gbpfb (作者:陳向陽,gbpfb 可以在 TurboLinux 中文版中找到)可以完成這一部分工作。我們也提供了在 Windows 下使用的相應版本 gbkfonts (作者:energy)。gbkfonts 不僅能生成所需的檔案,同時還將這些檔案按照 CJK 所要求的目錄方式放置好。你只需把整個目錄拷貝到你的 localtexmf 目錄下,然後將 map 檔案的名字加入 dvips 的配置檔案 config.ps 中即可。

由於兩種方式字型檔使用相同的檔案名稱,因而容易造成衝突。建議不要同時使用。

使用簡介

CJK 的使用比較簡單。首先在檔案的頭部(\documentclass 之後)加上:

\usepackage{CJK}

然後在正文中(\begin{document} 到 \end{document})需要使用中文的地方使用:

\begin{CJK*}{GBK}{song}

……

中文或者英文

……

\end{CJK*}

這樣中間的中文部分就會以宋體來排版。常用的其他字型還有:fs(仿宋)、kai(楷體)、hei(黑體)、li(隸書)、you(幼圓)。命令中的 GBK 是指中文內碼,還可以用 GB 和 BIG5(繁體字),前提是相應的字型檔設定是正確的。CJK Setup for Win32 中已經設定好了 GB 和 GBK。

如果在中間想要改變中文字型,就可以使用:

\CJKfamily{GBK}{fs}

來改為仿宋字型。改變中文字型的大小使用和英文相同的命令,也就是說中文和它附近的英文大小始終都是一致的。

以上所說都是針對使用 TrueType 字型檔的。如果 Type1 字型檔生成時使用了 -c 參數,也就是說是 compact 模式的,那么用法是一樣的。而 Type1 字型檔更常用的一種方式是不使用 -c 參數生成的,稱作 pmC 模式。則相應的 CJK 命令中要加上 [pmC] 參數:

\begin{CJK*}[pmC]{GB}{song}

……

\end{CJK*}

使用說明

很多人被 LaTeX 的各種檔案,字型搞的頭昏腦脹(我就曾經是其中一個). 其實 LaTeX+CJK 處理漢字的過程很簡單。是這樣的: 首先你編輯了一個檔案 example.tex,裡面有如下內容: \documentclass{article}\usepackage{CJK}\begin{CJK}{GBK}{song}\begin{document}您\end{CJK}\end{document}用戶在命令行敲入 "latex example.tex". 一個跟 "tex" 一模一樣只不過叫做 "latex"的程式啟動了。它其實就是 TeX, LaTeX 和 TeX 其實是同一個程式。在有些系統下 latex 是一個腳本,裡面只有幾行字。比如我的 Linux 版本就是這樣: #!/bin/shtest -f "`kpsewhich latex.fmt`" || fmtutil --byfmt latexexec tex -fmt=latex "$@"TeX 發現自己是用叫做 "latex" 的命令啟動的。或者腳本里明顯指明了需要"latex"格式,它就去讀入一個宏包叫做 latex.fmt. 這個檔案一般在 $TEXMF/web2c. 以後我們就進入了 LaTeX 的世界,看到了?LaTeX 只是 TeX 的一種特殊情況(一種“格式”)。所以如果你能明白 TeX, LaTeX 給你的很多條條框框你都可以不遵守。 LaTeX 發現用戶使用了 CJK 宏包,在 \begin{CJK}{GBK}{song} 時,CJK 宏包把從現在開始一直到 \end{CJK} 的內容里的中文都變成了一些奇怪的TeX命令。這些命令根據不同的漢字轉換不同的字型。它發現“您”,它就會把字型設定為 gbksong51, 然後取裡面的第115個字元。 為了達到這個目的,它把我們的漢字“您”變成了 "\C19/song/m/n/10/51 s", \C19/song/m/n/10/51 表示用 GBK 編碼(C19) 的 song 體,粗細為 medium(m), 而不是 bold, 形狀為upright(n), 而不是 italic, 大小是 10pt, 子集號碼 51. 這個描述會被 C19song.fd 這個字型描述檔案映射為gbksong51. 因為 C19song.fd 里有這樣一行: \DeclareFontShape{C19}{song}{m}{n}{<-> CJK * gbksong}{}所以 "\C19/song/m/n/10/51" 這個命令就會把字型設定為 "gbksong51 at 10pt"(TeX術語). 後面接著一個"s", "s" 的 ASCII 碼是 115, 正好是 “您” 在這個子集中的索引號。

LaTeX 繼續處理文檔的其它部分,就象處理其它任何英語檔案一樣……最後生成了 dvi 檔案。 用戶用 dvips 生成 PostScript 檔案。dvips 找到 config.ps 配置,讀取裡面的字型映射檔案列表,列表里有一個檔案叫做 cjk.map, 它就去讀取 cjk.map. cjk.map 指出:gbksong51 這個字型的圖像(glyph)應該從Type1字型檔 gbksong51.pfb 里得到…… dvips 把這些信息存到一張表里備用。 dvips 開始讀取 dvi 檔案,發現裡面要求使用 gbksong51 這個字型,並且輸出一個 "s" 對應的字元。它就下載(download,PostScript術語) gbksong51.pfb 到生成的 PostScript 檔案 example.ps, 然後在合適的位置放上對“您”索引: s. 現在你用一個文本編輯器,比如 VIM, 打開 example.ps 就可以看到裡面有如下內容: %%BeginFont: SimSun51%!FontType1-1.0: SimSun 2.10%%Creator: ttf2pfb, $Id: ttf2pfb.c,v 1.2 2002/07/27 12:58:58 wy Exp $%%CreationDate: Sun Jul 28 17:44:29 2002%%VMusage: 030000 030000...............%%Page: 1 1TeXDict begin 1 0 bop 639 523 a Fb(s)1926 8991 y Fa(1)peop end%%Trailer....而你用 gsview 打開檔案就看到了“您”。發現沒有?"SimSun51" 就是插入Type1字型的開始處, 而"(s)" 就是說“輸出字元串s”。這個字型里的"s"看起來就是“您”。而那個SimSun51,就是所謂的PostScript 字型名字。你的文檔就是這樣生成的。 從這個分析你可以看出,TeX 在本質上處理漢字是沒有任何問題的,因為經過 CJK 的轉化,漢字被轉成了和英文字元一樣的“盒子”。我們只要按照 TeX 的規則來處理這些盒子就可以實現與英文完全同樣的功能。

相關搜尋

熱門詞條

聯絡我們