Since many users of Emacs/Xemacs find problems with Chinese input, 
please find attached a short article written by me sometime before on 
how to improve improve it.

Best!
-- 
| This message was re-posted from debian-chinese-gb@lists.debian.org
| and converted from gb2312 to big5 by an automatic gateway.
Title: Addition to Input Method

改进Linux下Emacs/XEmacs的输入法

在Linux下最常用的两种编辑器是vi和Emacs/Xemacs,而后者不仅是一个编辑器,还是一个集成环境,在Emacs/Xemacs里几乎可以做所有你想做的。更好的事是它自带了多语种处理环境MULE(多语种环境扩展),可以方便地编辑、显示汉语文件。

Emacs/Xemacs中文输入简介

为了输入中文,需要首先设置语言环境。这可以选择菜单Mule上的Set language envronment,再选Chinese-GB或其他所需的语言环境即可。

下一步是选择输入法:从Mule菜单上选择Select input method或用键盘Ctrl-x Ctrl-m Ctrl-\。Ctrl-x表示同时按Ctrl键和x键,余同。如果想暂时切换到英文输入状态,可以用键盘Ctrl-\,再按Ctrl-\则回到中文输入状态。

如果不知道中文输入法的名称,可以从Mule菜单上选择Describe language suport,看该语言环境(如Chinese-GB)提供哪些输入法,或在按盘Ctrl-x Ctrl-m Ctrl-\后,只输入chinese,让Emacs/Xeamcs提供所有的选项。

中文标点符号输入的麻烦

遗憾的是,其中的中文输入法因为没有输入中文标点符号的功能,在Emacs/Xemacs里使用起来很不方便。要输入中文标点时,必须选择专门的标点输入法chinese-punct或全角输入法chinese-qj,这意味着要按Ctrl-x Ctrl-m Ctrl-\六次键,还要输入输入法的名称,切换回原输入法时还得这样做,非常麻烦。有趣的是,在名为chinese-py-punct的输入法里也没有找到输入中文标点的输入办法。

造成这个问题的根源似乎在于Mule的中文输入法出自中文Xterm上的输入法。因为在CXterm下切换输入法只用按一个功能键如F1,非常方便。所以其他输入法没有增加标点输入功能的必要。

解决办法

笔者刚接触到Emacs/Xemacs时就遇到这个问题,在中国自由软件库站点提供的Linux新闻组中20000多条信息中搜索很久,也没有找到解决这个问题的好办法,只好自己去摸索。也许行家早久找到解决办法了,只是由于某种原因,初学者无缘得识。现将笔者的解决办法提出来供大家参考,希望能省去后来者的重复劳动,更希望有关商家在发行版中做相应修改,省去用户的麻烦。

解决的思路其实极其简单,即在输入法的词典中增加标点符号的词条,使得在中文输入状态下击标点符号键时Mule的有关程序可以转换为中文的标点符号。我们需要有关的lisp源程序,如全拼输入法chinese-py-punct对应的lisp程序名是py-punct.el,对该程序作所需修改后,存盘,选择菜单Emacs-lisp上的Byte-compile this file重新编译该文件。用该文件替换系统中的旧文件即可。

例如Xemacs下的py-punct.el文件,在(quail-define-rules这行下面,加入如下几行,即可实现大部分的中文标点输入:

("\""	[""" "“" "”" "″"])
("$"	["¥" "$" "¢" "£"])
("%"	["%" "‰"])
("'"	["'" "‘" "’" "′"])
("("	["("])
(")"	[")"])
("+"	["+" "=" "≠"])
(","	[","])
("."	["。"])
(":"	[":" "∶" "∷"])
(";"    [";"]) 
("<"	"<〈《")
(">"	[">" "〉" "》"])
("/"    ["?" "×" "÷"])
("@"	["·" "." "°"])
("^"	["…"])
("_"	["_" "-" "ˉ" "—"])
("!"    ["!"])
("\134"   ["、"])

    

当然,每个人可以根据自己的习惯自行定义,增减对应的中文标点。这正是自由软件与公开源代码的好处。应该注意的是,其他输入法的格式可能不同,读者做相应调整即可。


bruce
Last modified: Wed Apr 12 08:16:05 CST 2000

回复