前言
在已完善中文化的Linux 系統如Mandriva 2008上跑big5跟utf8中文已不成問題。不過這兩個編碼系統都不夠好。要在Linux上跑CCCII等大字集編碼還有一段路,還是有必要仔細研究一下Emacs對中文設定(X)Emacs中文環境參數,這樣可以用Emacs來作大字集編碼中文的發展測試平台。
這裡針對討論近年來3個版本討論: xEmacs 21.5 及 Emacs22.0.50, Emacs 22.1.5 (支援unicode)。其中 Emacs 22.1.5是在Mandriva 新版(2008)上的測試結果(locale 設定: LANG=zh_TW.UTF-8)。其他是直接引用舊版的測試結果,應該是Windows上的Emacs。我不太確定當初locale 設定,我猜是LANG=zh_TW(意思就是big5)。Emacs以後的23 版的結構應該跟22.1接近,這裡專注在這個版本討論。
基本設定
Mule 在 win32 build 的 xEmacs 21.5 及 Emacs 22.0.50(跟之後) 都有內建。
查看設定值可由選單中選 Edit->MultiLingual "Mule"->Describe CurrentCoding system
( XEmacs 21.5 在 在選單 Options->Advanced (Customize) ->Emacs-> Environment-> I18n->mule
Emacs 22.0.50 在 Options->Customize Emacs->Top level CustomizationGroup -> Environment -> I18n -> mule)
- Coding system for saving this buffer:
- Default coding system (for new files):
兩者預設值都是 ISO8 -- iso-2022-8
Emacs 22.1.5 在這裡就看不到這兩個變數,我猜測是因為支援unicode造成的改版,實際上是否移到別的地方,或者可否自行在起始檔(如.emacs) 加入選項,還待研究。
Emacs 22.1.5相關的重要變數有
- Keyboard Coding Syste (預設值: nil)
- Default Input Method (設定值: chinese-py-punct-b5)
- Current Language Environment (設定值: Chinese-BIG5)
- Utf Translate Cjk Unicode Range (預設值: Cons-cell:
Integer: 11904
Integer: 55203
Cons-cell:
Integer: 65280
Integer: 65519
- Utf Translate Cjk Mode (預設值: t)
- Utf 8 Compose Scripts (預設值: nil)
- Enable Multibyte Characters (預設值: t)
- Selection Coding System (預設值: compound-text-with-extensions)
- Unibyte Display Via Language Environment (預設值: nil)
- Describe Char Unicodedata File (預設值: )
- Leim (預設值: )
XEmacs 21.5 相關的重要變數有
- Current Language Environmen
- Default Input Method
Emacs 22.0.50相關的重要變數有
- Keyboard Coding Syste (預設值: cp950)
- Default Input Method (預設值: chinese-py-punct-b5)
- Current Language Environment (預設值: Chinese-BIG5)
- Utf Translate Cjk Unicode Range (預設值: )
- Utf Translate Cjk Mode (預設值: t)
- Utf 8 Compose Scripts (預設值: nil)
- Enable Multibyte Characters (預設值: t)
- Selection Coding System (預設值: utf-16le-dos)
- Unibyte Display Via Language Environment (預設值: nil)
- Describe Char Unicodedata File (預設值: )
- Leim (預設值: )
列印設定
另外值得關心的是列印的參數:
在winodws環境下
Emacs 22.0.50 在 Options->Customize Emacs->Top level Customization Group->WP
(21.5 在 在選單 Options->Advanced (Customize)->Emacs->WP)
下的重要變數有下面幾組
- Lpr
- Ps Print
- Font
- Ps Font Family (預設值: )Courier
- Ps Font Size (預設值: Landscape Text Size: 7
Portrait Text Size: 8.5)
- Ps Header Font Family: (預設值: Helvetica)
- Ps Header Font Size: (預設值: Landscape Header Size: 10
Portrait Header Size: 12)
- Ps Header Title Font Size: (預設值: Landscape Header Title Size: 12
Portrait Header Title Size: 14)
- Ps Footer Font Family: (預設值: Helvetica)
- Ps Footer Font Size: (預設值: Landscape Footer Size: 10
Portrait Footer Size: 12)
- Ps Auto Font Detect: (預設值: on)
- Ps Multibyte Buffer (預設值: nil)
- ps-mule-font-info-database-default (預設值: ps-mule-font-info-database-latin) STANDARD. (mismatch)?
- Ps Font Family (預設值: )Courier
- Printer
- Ps Lpr Command (預設值: )
- Ps Lpr Switches (預設值: )
- Ps Print Region Function (預設值: direct-ps-print-region-function)
- Ps Lpr Command (預設值: )
- Font
- Printing Utilities
- Pr Gv Command (預設值: gsview32.exe)
- Pr Gs Command (預設值: gswin32.exe)
- Pr Gs Switche (預設值: )
- Pr Gs Device (預設值: mswinpr2)
- Pr Print Using Ghostscript (預設值: nil)
- Pr Ps Utility (預設值: mpage)
- Pr Gv Command (預設值: gsview32.exe)
Emacs 22.1.5 在Linux環境相關的重要變數跟上面winodws環境舊版是一樣的,不過有些變數預設值有綁定正確的值。
- Printer
- Ps Lpr Command (預設值: lpr)
- Ps Lpr Switches (預設值: )
- Ps Print Region Function (預設值: nil)
- Ps Lpr Command (預設值: lpr)
- Printing Utilities
- Pr Gv Command (預設值: gv)
- Pr Gs Command (預設值: gs)
- Pr Gs Switche (預設值: -q -dNOPAUSE -I/usr/share/ghostscript/5.10)
- Pr Gs Device (預設值: uniprint)
- Pr Print Using Ghostscript (預設值: nil)
- Pr Ps Utility (預設值: mpage)
- Pr Gv Command (預設值: gv)
更動編碼及偏好
有時候需要存檔需要換跟編輯工作環境不同的編碼。參見uft8 中文Linux 環境用 emacs處理Big5文件。這時執行
M-X prefer-coding-system
可以改 utf-8 或其他utf 系列的編碼,特別是針對Big Endian (BE)/LE 的差距。參見Linux 的Palm及Zaurus Big5/Unicode同步解決方案
要在工作環境強迫emacs存成 Big5檔可在 ~/custom.el 加入
(set-buffer-file-coding-system 'big5)
一但在 ~/custom.el 加入
(set-default-coding-systems 'big5)或
(prefer-coding-system 'big5)或
(setup-chinese-big5-environment)或
(set-language-environment 'chinese-big5)
其中之一,他就會連帶設定
(set-keyboard-coding-system 'big5)
(set-terminal-coding-system 'big5)
Priority order for recognizing coding systems when reading files:
若設定(setup-chinese-big5-environment)
或(set-language-environment 'chinese-big5)
1. big5
2. cn-gb-2312
3. iso-2022-7bit
4. raw-text
5. iso-8859-1
6. ctext
7. iso-2022-lock
8. shift_jis
若設定 (prefer-coding-system 'big5)
1. big5
2. iso-2022-7
3. raw-text
4. ctext
5. iso-2022-lock
若設定 (set-default-coding-systems 'big5)
1. iso-2022-7
2. raw-text
3. ctext
4. iso-2022-lock
Emacs中文輸入
Emacs-mule 內建Quail 支持中文輸入,即使在沒有裝中文輸入法的情況下,依然能輸入中文。
參見emacs-mule 內建中文輸入法
沒有留言:
張貼留言