google code-beautifer

星期日, 12月 30, 2007

設定(X)Emacs中文環境參數

1.1 版

前言


在已完善中文化的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)?

    • Printer

      • Ps Lpr Command (預設值: )
      • Ps Lpr Switches (預設值: )
      • Ps Print Region Function (預設值: direct-ps-print-region-function)


  • 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)


Emacs 22.1.5 在Linux環境相關的重要變數跟上面winodws環境舊版是一樣的,不過有些變數預設值有綁定正確的值。

  • Printer

    • Ps Lpr Command (預設值: lpr)
    • Ps Lpr Switches (預設值: )
    • Ps Print Region Function (預設值: nil)

  • 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)


更動編碼及偏好


有時候需要存檔需要換跟編輯工作環境不同的編碼。參見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 內建中文輸入法

沒有留言: