たまご・たかなバージョン ************************

「たまご」はネットワーク仮名漢字変換サーバを利用し、Mule における日本語・中国語の入力環境を提供するシステムです。「たまご・たかなバージョン」では Wnn V4 の変換サーバを使用しています。

この Info ファイルでは、「たまご」の使い方やカスタマイズの方法について説明します。

「たまご」とは何か
*********

「たまご」は、ネットワーク仮名漢字変換サーバを利用し Mule における日本語・中国語・韓国語などの入力環境を提供するシステムです。最新版は、「たまご・たかなバージョン」3.09 です。Mule は GNU Emacs を拡張し、多国語表示、コード変換などの基本機能を追加したシステムです。

「たまご」は大きく分けると次の 3つの部分から成り立っています。

 1. 入力文字変換系(Input character Translation System, ITS レベル)

     ASCII キーボードからの入力を、仮名/PinYin/ハングル文字に変換する。

 2. 仮名漢字変換部(たかなレベル)

     ネットワーク変換サーバを利用して漢字変換を行う。「たまご・たかなバージョン」では、変換サーバとして Wnn V4.108 以降の JSERVER/CSERVER を使用する。

 3. 日本語編集機能

     日本語特有の正書法に対応した編集機能を提供する。

実際には、最後の日本語編集機能は Mule 本体の方に吸収されており、「たまご」の範囲としては曖昧になっていますが、これらを全部含めて「たまご」と呼びます。日本語編集機能の説明は Mule の Texinfo マニュアルの方にあります。

「たまご」の名前は、「沢山/待たせて/御免なさい。」の各文節の先頭 1音である「た」と「ま」と「ご」を取ったものです。EGG は「たまご」の英訳です。卵は料理の基本材料で、いろいろな料理に使えるので、このことから「たまご」もいろいろな日本語環境を作る材料になりたい、という意味も込められています。また、「たかなバージョン」の「たかな」とは、漬け物のたかなではありません。「たまごよ/かしこく/なーーれ」の略をとって命名されました。

「たまご」では、日本語・中国語・韓国語の入力ができますが、このマニュアルでは主に日本語の入力方法について説明します。中国語の入力においては、かな → PinYin、漢字→ Hanzi と読みかえて下さい。

特徴
==

たまご「たかな」バージョンでは、従来の「たまご」(Nemacs版)にくらべて以下のような特徴を持っています。

  * 日本語・中国語の入力が可能

  * 大文節/小文節変換

  * 逆変換(漢字 → 仮名)

  * V4 jserver が持つ品詞(人名など)での辞書登録

  * 単語を辞書から削除しないで有効/無効にできる

  * 単語の頻度の設定

  * 辞書にコメントを設定する

動作環境
====

「たまご」を動作させるには次のものが必要です。

漢字端末または漢字端末エミュレータ
     漢字を表示するために必要です。中国語文字やハングル文字を使う場合は、それらを表示できる端末または端末エミュレータが必要です。Mule を X Window System で利用する場合は、Mule 独自のウィンドウで漢字やハングル文字の表示ができます。

「たまご」を使うように構築された Mule
     「たまご・たかなバージョン」では、 JSERVER/CSERVER との通信は従来のように Wnn V3 互換ライブラリは使わず、Wnn V4 のライブラリを利用しています。この部分は C 言語で記述されているため、EGG 機能を組み込んで Mule を構築する必要があります。

Wnn Version 4.108 以降
     Wnn 仮名漢字システムは、京都大学数理解析研究所、オムロン株式会社、株式会社アステックの 3者が共同開発したもので、Mule あるいは「たまご」には含まれません。Wnn はフリーソフトウェアであり、X Window System の Version 11 Release 5 などに含まれています。Wnn のインストール、起動については Wnn のマニュアルを見て下さい。「たまご」を使うためには Version 4.108 以降の Wnn が必要です。

「たまご」システム

「たまご」システムは次のファイルから構成されます。

lisp/egg.el
     「たまご」の入力システム変換系

lisp/wnn4-egg.el
     「たまご」の仮名漢字変換部

lisp/egg-keymap.el
     Sun の X11 用の keymap 定義ファイル

lisp/eggrc-v41
     標準スタートアップファイル

man/egg-jp.texinfo
     この texinfo のソースファイル

src/wnn4fns.c
     Wnn の JSERVER と emacs lisp とのインターフェース

バグレポート
======

「たまご」 に関する提案・バグ情報は、以下に示すアドレスのメーリングリストに送ってください。

mule@etl.go.jp
     通常の使用言語は英語

mule-jp@etl.go.jp
     通常の使用言語は日本語

これらのメーリングリストには、必要に応じて Mule がサポートしている *junet* というコード系を用いた多国語テキストを流すことが出来ます。

漢字の入力方法
*******

Mule で「たまご」を動かして漢字を入力するためには、まず第一に Wnn 4.108 がインストールされ、JSERVER が動いている必要があります。そして、Mule が「たまご」の機能を組み込んでコンパイルされていなければなりません。

「たまご」での漢字入力方法には、大きく分けると次の 2種類があります。

 1. 対話式漢字入力方法。

 2. Mule の M-x コマンドによる一括変換方法。

対話式漢字入力法
========

対話式漢字入力とは、キーボードから入力した文字列を変換キーやその他のキー操作によって対話的に漢字に変換する方法です。普段の使用では、ほとんどがこの対話式漢字入力になると思います。

対話式漢字入力では、以下の 4つのモードを移動しながら入力を行います。

透過モード
     変換を一切行なわない。つまり通常の Mule と同じ。

入力文字変換モード
     普通ローマ字仮名変換を行なう。図形文字(graphic character)を入力するとフェンスモードに移る。

フェンスモード
     図形文字の入力と特定の編集コマンドだけが入力可能。特定のコマンド入力によって漢字変換モードに移る。

漢字変換モード
     仮名漢字変換をおこなう。

これらのモードはバッファ毎に設定され、各バッファのモードライン左端に、例えば次のように表示されます(例は漢字変換モードです)。

      [漢]-:-----Mule: *scratch*      (Lisp Interaction) ---All----------

すべてのモード中で、C-^(コマンドspecial-symbol-input) によって特殊記号を含む文字入力を行なうことができます。

 -- Command: special-symbol-input
     メニューによる記号あるいは漢字入力を行なう。ミニバッファに表示されるメニュー中から、まず種類を、つづいて文字を選択する。選択は RET を押すことで確定する。選択方法は次の通り。

     0..9
          カーソルを番号で示される項目に移動

     C-n
          次の候補一覧

     C-p
          前の候補一覧

     C-f
          カーソルを次の候補に移動

     C-b
          カーソルを前の候補に移動

     C-g
          メニュー選択を中止する

     RET
          カーソルのいる項目を選択する

また、部首や画数による漢字入力を行なうこともできます。それぞれ専用のコマンドもありますが、special-symbol-input で部首入力あるいは画数入力を選択して入力することもできます。

 -- Command: busyu-input
     メニューによる部首入力を行なう。メニューの選択方法は special-symbol-input と同じ。

 -- Command: kakusuu-input
     メニューによる画数入力を行なう。メニューの選択方法は special-symbol-input と同じ。

透過モード
-----

「たまご」システムが利用可能な Mule を起動すると、モードラインが次のように表示されます。このときのモードを透過モードといいます。

      [--]-:-----Mule: *scratch*      (Lisp Interaction) ---All----------
       ^^

透過モードでは「たまご」は一切の変換を行ないません。つまり通常の Mule と同様に利用できます。

入力文字変換モード
---------

透過モード中で C-\(コマンド toggle-egg-mode) を入力すると、「たまご」は入力文字変換モードに入ります。モードラインは次のように変わります。

      [あ]-:-----Mule: *scratch*      (Lisp Interaction) ---All----------
       ^^

透過モードに戻るには、もう一度 C-\ を入力します。

C-\ を押しても上記のようにならない場合は、必要な入力文字変換系のモードがロードされていないことが考えられます。必要なモードをロードして下さい。

入力文字変換モードでは、「たまご」はコントロールキーやメタキーが通常の意味を持つと解釈します。つまりカーソル移動などは透過モード時と同様に実行できます。ここで普通の文字(図形文字）を入力すると、カーソルの位置に縦棒 | 2つが現れ、その間に入力文字変換(ふつうはローマ字仮名変換)した文字列が表示されます。この縦棒をフェンスと呼び、この状態をフェンスモードといいます。

例えば、Wnnでおなじみの変換例、「私の名前は中野です」のローマ字表記

     watasinonamaehanakanodesu

を入力すると

     |わたしのなまえはなかのです|

と「かな」に変換されて表示されます。

このモードでの変換の方法は、入力文字変換表を選択することで切り替えることができます(see Input Translation Table)。

 -- Command: toggle-egg-mode
     透過モードと入力文字変換モードの切り替えを行なう。フェンスモード中では、ローマ字仮名入力モードと ASCII 文字入力モードを切り替える。

フェンスモード
-------

フェンスモードでは、図形文字入力とフェンスモード編集コマンドによる編集のみが行なえます。英数字、記号などの通常の図形文字を入力した場合は入力文字変換(ローマ字仮名変換)されて入力されます。その他に、フェンスモードでは以下の編集コマンドが使用できます。

カーソル移動のコマンド：

C-a
     フェンス内の先頭の文字へ移動

C-e
     フェンス内の最後の文字へ移動

C-b
     フェンス内で一文字分前へ

C-f
     フェンス内で一文字分後ろへ

削除・転置を行なうコマンド：

C-d
     一文字削除

C-k
     フェンス内のカーソルから後ろを削除

C-t
     フェンス内の文字の転置

DEL
     直前の文字を削除

変換を行なうコマンド：

SPC あるいは C-@ あるいは C-w
     仮名漢字変換開始

M-h
     フェンス内の文字をひらがなにする(コマンド fence-hiragana)

M-k
     フェンス内の文字をカタカナにする(コマンド fence-katakana)

M-<
     フェンス内の文字を半角文字にする(コマンド fence-hankaku)

M->
     フェンス内の文字を全角文字にする(コマンド fence-zenkaku)

モードの変更等を行なうコマンド：

C-c あるいは C-g
     入力をキャンセルし、フェンスモードから抜ける

C-l または RET
     フェンス内の入力を確定し、フェンスモードから抜ける

C-\
     入力文字変換モードと ASCII 文字モードの切り替え(コマンド toggle-egg-mode)

C-M-h
     ひらがな入力を選択する(コマンド its:select-hiragana)

C-M-k
     カタカナ入力を選択する(コマンド its:select-katakana)

M-q
     小文字入力を選択する(コマンド its:select-downcase)

M-Q
     大文字入力を選択する(コマンド its:select-upcase)

M-z
     全角小文字入力を選択する(コマンド its:select-zenkaku-downcase)

M-Z
     全角大文字入力を選択する(コマンド its:select-zenaku-upcase)

その他：

C-z
     式を評価

C-_
     JIS コード入力(see JIS Input)

フェンスモードを示す方法(縦棒など)は、コマンド set-egg-fence-mode-format で変えることができます。例えば、 (set-egg-fence-mode-format "" "" 'underline) を実行すると、フェンス領域が下線で示されるようになります。

 -- Command: set-egg-fence-mode-format OPEN CLOSE &optional ATTR
     OPEN, CLOSE はそれぞれ領域の始点と終点を示す文字列。 ATTR はフェンス領域に設定される属性(有効かどうかは端末の機能に依る)。標準の状態では、
      (set-egg-fence-mode-format "|" "|"
     nil)
      になっている。

 -- Command: toggle-egg-mode
     透過モードと入力文字変換モードの切り替えを行なう。フェンスモード中では、ローマ字仮名入力モードと ASCII 文字入力モードを切り替える。

フェンスモードでの図形文字入力
...............

フェンスモードでは、q を入力することによって図形文字がそのまま入力できるようになります。このときモード表示は <aa> になります。

また Q を入力すると JIS X0208 文字で図形文字が入力されます。モード表示は<ａ>となります。

これらのモードからは C-q によって元のモードに戻ります。またフェンスモードから抜けた場合にも、同様にもとのモードに戻ります。

また、フェンスモード中で C-\ をタイプしても、英数字や記号文字がそのまま入力できるようになります。もう１度 C-\ を叩くとローマ字仮名モードに戻ります。モード表示は[aa]になります。

漢字変換モード
-------

フェンスモードでは、SPC、C-@、C-w のいづれかによって漢字変換モードに入り、仮名漢字変換が開始されます。モードラインは次のようになります。

      [漢]-:-----Mule: *scratch*      (Lisp Interaction) ---All----------
       ^^

「たまご」は、漢字変換モードに入ったときに初めて JSERVER とのコネクションを開き、

     ホスト vanilla の WNN を起動しました。

というメッセージをミニバッファに表示して、辞書設定を行います。よって、 Mule を起動してから最初の仮名漢字変換だけは多少時間がかかります。また、頻度情報ファイルや個人辞書がない場合はそれらを作成するかどうかを質問します。

もし JSERVER が動いていないと、

     サーバと接続できませんでした。

というエラーメッセージをミニバッファに表示します。この場合、モードは入力文字変換モードのままです。JSERVER を自分で起動するか、Wnn 担当者に起動してもらうかして下さい。

「たまご」からのメッセージはすべて  *Notification*  というバッファに保存されます。このバッファは、M-x select-notification を実行すると選択されます。

 -- Command: select-notification
     バッファを「たまご」の Notification ウィンドウに切り替える。

変換コマンド
......

変換モードでは、「たまご」はフェンス内の文字列を文節に分割し、各文節ごとに変換の候補を表示します。ユーザは、文節への分割の仕方を修正し変換候補中から正しいものを選ぶことで、希望した漢字仮名交じり文を入力できます。カーソルの移動は文節単位で行ないます。

「たまご・たかなバージョン」では大文節・小文節という概念が取り入れられ、文節の操作も、大文節・小文節といった単位で行います。以前のバージョンでいう文節が、「たかなバージョン」では小文節に対応します。大文節は 1つ以上の小文節の列で、接続条件を満たすように定義されています。

     小文節、大文節の例:

     第  ２  回の        小 文節は         お 食べ    下さい
     --  --  ----        -- ------         -- ----    ------
     小  小   小         小   小           小  小       小
     ------------        ---------         -------    ------
         大                 大               大         大

仮名漢字変換モード中では、以下のコマンドを使って変換を行ないます。

カーソル移動のコマンド：

C-a
     先頭の文節へカーソルを移動する

C-e
     最後尾の文節へカーソルを移動する

C-b
     直前の文節へカーソルを移動する

C-f
     直後の文節へカーソルを移動する

文節の切り方を変えるコマンド：

C-i
     カーソル位置の大文節の長さを１字短くする

C-o
     カーソル位置の大文節の長さを１字長くする

M-i
     カーソル位置の小文節の長さを１字短くする

M-o
     カーソル位置の小文節の長さを１字長くする

M-<
     カーソル位置の文節の長さを最大にする(コマンド henkan-saichou-bunsetu)

M->
     カーソル位置の文節の長さを最小にする(コマンド henkan-saishou-bunsetu)

変換の候補を見るためのコマンド：

SPC または C-w
     カーソル位置の大文節の次候補を表示する

C-z
     カーソル位置の小文節の次候補を表示する

C-n
     小/大文節変換中に、小/大文節の次候補を表示する

C-p
     小/大文節変換中に、小/大文節の前候補を表示する

M-s
     カーソル位置の大文節の変換候補一覧をミニバッファに表示し、選択可能にする (コマンド henkan-select-kouho-dai)

M-z
     カーソル位置の小文節の変換候補一覧をミニバッファに表示し、選択可能にする (コマンド henkan-select-kouho-sho)

C-v
     カーソル位置の文節の変換情報を表示する(コマンド henkan-inspect-bunsetu)

変換を確定するコマンド：

C-k
     カーソルのある文節より前を確定し、カーソルを含む文節以降を入力文字変換モードに戻す

C-l または RET
     すべての変換を確定する

C-SPC
     確定文字列の最初の一文字だけ挿入する

仮名変換を行なうコマンド：

M-h
     文節をひらがなにする(コマンド henkan-hiragana)

M-k
     文節をカタカナにする(コマンド henkan-katakana)

モードの変更等を行なうコマンド：

C-c あるいは C-g あるいは DEL
     変換を中止し、入力文字変換モードにもどる

C-h
     漢字変換モードのコマンドを一覧表示する

辞書への登録を行なうコマンド：

C-t
     変換文字列を辞書に登録する

変換の例
....

実際の変換は、以下のように行ないます。

例えばフェンスモードで

     |わたしのなまえはなかたです|

と入力したところで SPC、C-@、C-w のいずれかを押すと漢字変換モードに入って以下のように表示が変わります。

     |私のな 前は 中田です|

これは例ですので、辞書の状況によっては別の変換になる場合もあります。

「たまご」では、大文節を一個の空白で区切り、小文節を - で区切って表示します(区切りを表示する方法は、コマンド set-egg-henkan-mode-formatで変更できます)。

ここでは文節の切り方が間違っているので、“私のな”という文節にカーソルを持っていき、C-i と入力することによってカーソルのある文節を短くします(C-o によってカーソルがある文節を長くすることができます)。

     |私の なまえは 中田です|

さて、2つめの文節を漢字にするために、その文節の他の変換候補を選択します。まず C-f によって 2つめの文節にカーソルを移動してから、SPC または C-n によって次候補を出してみます。

     |私の 名前は 中田です|

変換の候補を選ぶためには、この他にも C-p によって直前の候補に戻る、 M-s, M-z によって ミニバッファ で候補一覧から選ぶなどの方法があります。

さて、実は中田さんではなく中野さんがこの文を入力しているとしましょう。ここで最後の文節にカーソルを移してから C-k をタイプすると、カーソルのある文節の直前までが確定し、残りがひらがなに戻ります。またモードは入力文字変換モードに戻っています(C-c, C-g, DEL のいずれかをタイプすると、フェンスの中のすべての文字がひらがなに戻ります)。

     私の名前は|なかたです|

ここでひらがなを修正し C-w、C-@、SPC のいずれかのコマンドを入力すると、変換候補がこのように表示されます。

     私の名前は|中野です|

この候補で満足な場合には、C-l あるいは RET を入力することによってこの変換が確定します。

     私の名前は中野です

上の例では小文節は出てきませんでしたが、小文節単位で変換することもできます。例えば、「時定数」と入力したくて、フェンスモードで

     |じていすう|

と入れて変換すると、以下のような候補が出てきます。

     |次-定数|

この場合は、先頭の小文節だけが望みのものではないので、C-z を押して小文節単位で次候補を出します。

     |時 定数|

望みの結果になったら C-l か RET で確定します。

文節の区切りを表示する方法は、コマンド set-egg-henkan-mode-format で変更できます。

 -- Command: set-egg-henkan-mode-format OPEN CLOSE KUGIRI-DAI KUGIRI-SHO &optional ATTR1 ATTR2 ATTR3
     変換モードの表示方法を設定する。OPEN, CLOSE はそれぞれ変換の始点、終点を示す文字列あるいは nil。KUGIRI-DAI, KUGIRI-SHO は大文節、小文節の区切りを示す文字列または nil。 ATTR1, ATTR2, ATTR3 はそれぞれ変換区間、大文節区間、小文節区間に設定される属性あるいは nil(有効かどうかは端末の機能に依る)。標準の状態では、

     (set-egg-henkan-mode-format "|" "|" " " "-" nil nil
     nil)
      である。

メニューによる変換候補の選択
..............

漢字変換モードで M-s(henkan-select-kouho-dai) や M-z(henkan-select-kouho-sho) を入力することによってミニバッファを利用したメニューシステムでの変換候補の選択が出来ます。

候補が 1行に入りきらない場合には、C-n で次の候補一覧が、また C-p で前の候補一覧が表示されます。選択したい候補の番号を入力するか、カーソルをその候補に移動して RET を押すと、その候補が選択され候補一覧から抜けます。C-f でカーソルが次候補に、C-b でカーソルが前の候補に移動します。変換を選択することなしに候補一覧の状態から抜けるには C-g を入力します。

メニューからの変換候補選択のコマンド：

0..9
     その番号を持つ候補にカーソルを移動

C-n
     次の候補一覧

C-p
     前の候補一覧

C-f
     カーソルを次の候補に移動

C-b
     カーソルを前の候補に移動

C-g
     メニュー選択を中止する

RET
     カーソルのある項目を選択して、メニュー選択から抜ける

入力変換表の切り替え
==========

入力文字変換モードで、「たまご」は入力文字変換表に基づいてキー入力を変換します。したがってこの表を切り替えることによって、どのような変換が行なわれるかを指定できます。

日本語が入力できる状態、すなわち japanese.el がロードされている状態では、次の 6つの変換表が指定可能です。変換表を自分で作成することもできます (see Input Translation)。

roma-kana
     ひらがな変換。入力をローマ字として解釈し、ひらがなに変換する。モードの表示は [あ] となる。

roma-kata
     カタカナ変換。入力をローマ字として解釈し、カタカナに変換する。モードの表示は [ア] となる。

downcase
     小文字変換。入力変換を行わない。モードの表示は[aa]となる。

upcase
     大文字変換。入力を大文字に変換する。モードの表示は[aA]となる。

zenkaku-downcase
     全角(JIS X0208)小文字変換。入力を全角文字の小文字に変換する。モードの表示は [ａ] となる。

zenkaku-upcase
     全角大文字変換。入力を全角文字の大文字に変換する。モードの表示は [Ａ] となる。

chinese.el がロードされている場合は、次の変換表が指定可能です。

PinYin
     PinYin変換を行なう。モードラインには、中国語文字の `QuanPin' が表示される。

句点や読点、文字 ん がどのように変換されるかを設定するにはより簡単な方法があります(see Kuten and Touten)。

透過モードと入力文字変換モードでの変換表指定
----------------------

透過モードと入力文字変換モードでは、以下のコマンドで変換表を指定することができます。コマンド C-x C-k m を実行するとメニューを用いて変換表を選択できます。変換表によっては、それぞれを直接選択するコマンドがあります。

C-x C-k m
     コマンド its:select-mode-from-menu。変換表名のメニューが表示されるので、変換表を 1つ選択する。デフォルトの変換表以外に、ユーザが追加した変換表も選択可能。C-f, C-b, C-p, C-n で適当な項目にカーソルを移動し、RET を押して選択する。

C-x C-k >
     コマンド its:next-mode。メニュー上で現在使用中の変換表の次にあらわれる変換表を選択する。

C-x C-k <
     コマンド its:previous-mode。メニュー上で現在使用中の変換表の前にあらわれる変換表を選択する。

C-x C-k h
     コマンド its:select-hiragana。ひらがな変換表(roma-kana)を選択する。

C-x C-k k
     コマンド its:select-katakana。カタカナ変換表(roma-kata)を選択する。

C-x C-k q
     コマンド its:select-downcase。小文字変換表(downcase)を選択する。

C-x C-k Q
     コマンド its:select-upcase。大文字変換表(upcase)を選択する。

C-x C-k z
     コマンド its:select-zenkaku-downcase。全角小文字変換表 (zenkaku-downcase)を選択する。

C-x C-k Z
     コマンド its:selct-zenkaku-upcase。全角大文字変換表 (zenkaku-upcase)を選択する。

フェンスモードでの変換表指定
--------------

フェンスモードでは、以下のコマンドで変換表を切り替えられます。

C-M-h
     コマンド its:select-hiragana。ひらがな変換表(roma-kana)を選択する。

C-M-k
     コマンド its:select-katakana。カタカナ変換表(roma-kata)を選択する。

M-q
     コマンド its:select-downcase。小文字変換表(downcase)を選択する。

M-Q
     コマンド its:select-upcase。大文字変換表(upcase)を選択する。

M-z
     コマンド its:select-zenkaku-downcase。全角小文字変換表 (zenkaku-downcase)を選択する。

M-Z
     コマンド its:select-zenaku-upcase。全角大文字変換表 (zenkaku-upcase)を選択する。

句点読点などの変換
---------

句点や読点、文字 ん がどのように変換されるかは、~/.emacs ファイル中などで以下の変数の値を設定することによって指定できます。

 -- Global variable: enable-double-n-syntax
     この変数が t の場合には、nn を ん に変換する。

 -- Global variable: use-kuten-for-period
     この変数が t の場合には、, を 、 に、それ以外の場合は、， に変換する。

 -- Global variable: use-touten-for-comma
     この変数がtの場合には、. を 。 に、それ以外の場合は、． に変換する。

一括変換機能
======

「たまご」は、一括式変換方式として JISコード入力、全角変換、半角変換、ひらがな変換、カタカナ変換、ローマ字ひらがな変換、ローマ字漢字変換、漢字変換を提供しています。

JISコード入力
--------

M-x jis-code-inputによって JIS コード入力が行なえます。また、この機能はフェンスモードでは C-_ に割り当てられています。

M-x jis-code-input と入力すると、ミニバッファに

     JIS code:

とプロンプトが出るので16進コードで JIS コードを入力します。例えば

     JIS code: 3b7a

と入力すると、カーソルの位置に「字」が入力されます(16進数の大文字・小文字の区別はありません)。

 -- Command: jis-code-input
     JIS コードによる直接入力を行う。

全角文字への変換
--------

「たまご」は英数字や記号などの ASCII 文字(いわゆる半角文字)を、それに対応する JIS X0208 文字(いわゆる全角文字)に、一括して変換することができます。このために、以下のコマンドを提供しています。

M-x zenkaku-region
     指定したリージョンの半角文字を全角文字にする

M-x zenkaku-word
     直後の word の半角文字を全角文字にする

M-x zenkaku-paragraph
     直後の paragraph の半角文字を全角文字にする

M-x zenkaku-sentence
     直後の sentence の半角文字を全角文字にする

半角文字への変換
--------

「たまご」は、いわゆる全角文字の英数字や記号などを、一括して半角文字にすることができます(日本語文字など、ASCII 文字に対応するものがない場合は変換されません)。このために、以下のコマンドを提供しています。

M-x hankaku-region
     指定したリージョンの全角文字を半角文字にする。

M-x hankaku-word
     直後の word の全角文字を半角文字にする。

M-x hankaku-paragraph
     直後の paragraph の全角文字を半角文字にする。

M-x hankaku-sentence
     直後の sentence の全角文字を半角文字にする。

ひらがな変換
------

「たまご」はカタカナを一括してひらがなにすることができます(英数字、漢字などはそのままです)。このために、以下のコマンドを提供しています。

M-x hiragana-region
     指定したリージョンのカタカナをひらがなにする。

M-x hiragana-word
     直後の word のカタカナをひらがなにする。

M-x hiragana-paragraph
     直後の paragraph のカタカナをひらがなにする。

M-x hiragana-sentence
     直後の sentence のカタカナをひらがなにする。

カタカナ変換
------

「たまご」はひらがなを一括してカタカナにすることができます(英数字、漢字などはそのままです)。このために、以下のコマンドを提供しています。

M-x katakana-region
     指定したリージョンのひらがなをカタカナにする。

M-x katakana-word
     直後の word のひらがなをカタカナにする。

M-x katakana-paragraph
     直後の paragraph のひらがなをカタカナにする。

M-x katakana-sentence
     直後の sentence のひらがなをカタカナにする。

ローマ字ひらがな変換
----------

「たまご」はローマ字を一括してひらがなにすることができます(全角文字はそのまま、半角数字、記号等は全角になります)。このために、以下のコマンドを提供しています。

M-x roma-kana-region
     指定したリージョンのローマ字をひらがなにする。

M-x roma-kana-word
     直後の word のローマ字をひらがなにする。

M-x roma-kana-paragraph
     直後の paragraph のローマ字をひらがなにする。

M-x roma-kana-sentence
     直後の sentence のローマ字をひらがなにする。

例えばローマ字文字列

     koreharo-majidesu.

は、ひらがな文字列

     これはろーまじです。

に変換されます。

ローマ字漢字変換
--------

「たまご」はローマ字を一括して仮名漢字交じりにすることができます(全角文字はそのまま、半角数字、記号等は全角になります)。このために、以下のコマンドを提供しています。

M-x roma-kanji-region
     指定したリージョンのローマ字を漢字にする。漢字変換モードに入る。

M-x roma-kanji-word
     直後の word のローマ字を漢字にする。漢字変換モードに入る。

M-x roma-kanji-paragraph
     直後の paragraph のローマ字を漢字にする。漢字変換モードに入る。

M-x roma-kanji-sentence
     直後の sentence のローマ字を漢字にする。漢字変換モードに入る。

例えばローマ字文字列

     watashino namaeha nakano desu.

は、

     |私のな 前は 中野です|

になり、漢字変換モードに入ります(リージョン内の空白文字は削除されます)。

漢字変換
----

「たまご」はひらがなを一括して仮名漢字交じりにすることができます。このために、以下のコマンドを提供しています。

M-x henkan-region
C-x SPC
     指定したリージョンのひらがなを漢字にする。漢字変換モードに入る。

M-x henkan-word
     直後の word のひらがなを漢字にする。漢字変換モードに入る。

M-x henkan-paragraph
     直後の paragraph のひらがなを漢字にする。漢字変換モードに入る。

M-x henkan-sentence
     直後の sentence のひらがなを漢字にする。漢字変換モードに入る。

例えばひらがな文字列

     わたしのなまえはなかのです。

は、

     |私のな 前は 中野です|

になり、漢字変換モードに入ります。

逆変換
---

「たまご」は漢字文字列をひらがなに逆変換することができます。逆変換を行なうためには、eggrc で逆変換環境に附属語ファイルと辞書を読み込んでおく必要があります。逆変換のために、以下のコマンドを提供しています。

M-x gyaku-henkan-region
     指定したリージョンの漢字をひらがなにする。変換モードに入る。

M-x gyaku-henkan-word
     直後の word の漢字をひらがなにする。変換モードに入る。

M-x gyaku-henkan-paragraph
     直後の paragraph の漢字をひらがなにする。変換モードに入る。

M-x gyaku-henkan-sentence
     直後の sentence の漢字をひらがなにする。変換モードに入る。

例えば、文字列

     私の名前は中野です

を逆変換すると

     |わたしの なまえは なかのです|

になり、変換モードに入ります。この変換モードは、通常の変換モードと違い、変換前が漢字仮名混じりの文字列、変換後が仮名の文節の列になります。一般に漢字から仮名への変換は、仮名漢字変換と違って候補の数が少ないのでかなりの確率で正しい読みが得られます。

ミニバッファでの漢字入力方法
==============

「たまご」はミニバッファ内での入力文字変換、仮名漢字変換機能を提供しています。普通のバッファ中と同様にコマンド C-\ によって入力文字変換モードになります。モードはミニバッファの先頭に表示されます。

     例:

      [--]J:-----Mule: wnn4-egg.el      (Emacs-Lisp) --- 3%----------
      [あ]Query replace:
      ^^^^

インクリメンタルサーチでの漢字入力方法
===================

インクリメンタルサーチ(isearch)中に漢字文字列を入力するには、 C-k をタイプします。

このモードではミニバッファでストリングの入力を行なうことができるので、通常のミニバッファ中と同様に C-\ で入力文字変換モードになります。漢字入力が終ったら、RET キーを押せばインクリメンタルサーチを再開します。

ハングル入力
******

「たまご」の入力文字変換系の機能を利用して、Mule でハングル文字の入力を行うことができます。ハングル文字のフォントは、X11R5 についています。

ハングル入力を行うには、まず korean.el をロードします。 korean.el は、ハングルの変換表 "hangul" を定義する its-hangul.el を読み込み、「たまご」のメニューに "hangul" を追加します。実際にハングル入力をはじめるには、C-x C-k m でメニューを出し、その中から "hangul" を選択してやります。モードラインは以下のようになります。

      [HG]-:-----Mule: *scratch*      (Lisp Interaction) ---All----------
       ^^

日本語の音節は、/CV/, /CjV/, /CwV/, /n/, /q/, /V/ (Cは子音、Vは母音、nは撥音、qは捉音)のいずれかであり、ローマ字表記から各かな文字への変換の規則にはほとんど重なりがありません。ローマ字仮名変換中に、子音音素を示すローマ字のあと母音音素に対応するローマ字が入力されれば、仮名文字が１つ確定します。また、音節を構成しない音素、たとえば子音を示すローマ字だけが入力された状態での表示は、そのローマ字そのものを用いることが一般的です。

一方ハングルでは、音節を示す記号(音節文字)は子音と母音のどちらかを示す記号(音素文字)の組合せで構成されます。終声子音があるため、１つの音節文字は CV, CVC, CVCC, CVV, CVVC, CVVCCのいずれかの音を示すシンボルの組合せでできています(音価ゼロの子音を示す音素文字があるので、V, VC, VCCなどに対応する音節文字はありません)。また、音素文字から音節文字への変換規則には重なりがあります。たとえば 音素 C1V1, C1V1C2, C2V2 に対応する音節文字 S1, S2, S3 がありえます。

各音素文字を１つのキーに割り付けて入力する場合、各入力ごとに音素文字が表示され、それまでのいくつかの入力をまとめた音節文字が存在する場合にはその文字が表示されることが自然です。ここで C1, V1, C2, V2 という音素が順にキー入力されたとしましょう。C1 と C2 の音を示す音素文字は P1, P2 であるとします。このとき各キーストロークの終了した時点では、P1→S1→S2→S3 のように表示されるべきです。一方 C1V1C2 に対応するような文字が、たまたまない場合に限っては、P1→S1→S1P2→S3 のように表示されなくてはなりません。

これは「たまご」を用いて、次のような変換の定義をすることによって実現できます。

     (its-define-mode "hangul" "HG" t)

     (its-defrule "c"   "p1"  nil "あ")
     (its-defrule "cv"  "s1"  nil "い")
     (its-defrule "cvC" "s2"  nil "う")
     (its-defrule "C"   "p2"  nil "え")
     (its-defrule "CV"  "s3"  nil "お")

このとき c,v,C,V という入力に対して「たまご」は、

      "" --> "あ" --> "い" --> "う" --> "s1s3"

という変換を行ないます。また以下のようにs2に対応する文字がない場合は

     (its-defrule "c"   "p1"  nil "あ")
     (its-defrule "cv"  "s1"  nil "い")
     (its-defrule "C"   "p2"  nil "え")
     (its-defrule "CV"  "s3"  nil "お")

      ""--> "あ" --> "s1" --> "s1え" --> "s1s3"

と変換されます。

辞書管理
****

「たまご」は、辞書の管理のための機能として、辞書登録と辞書編集の２つを提供しています。

辞書登録
====

「たまご」は、バッファ中の文字列を辞書に単語として登録できます。このためにはコマンド toroku-region を用います。

 -- Command: toroku-region START END
     リージョン(START, END)で指定された文字列を辞書に登録します。

例えば、バッファ中の『電子技術総合研究所』という単語を辞書に登録する手順は次のようになります。

 1. 登録文字列をリージョンで指定します。登録する語の先頭(この場合は「電」の字)にカーソルを移動させ、C-SPC を押してマークをセットし、登録する語の最後の次の文字(この場合は「所」の次の文字)までカーソルを進めます。

 2. M-x toroku-region を実行します。

 3. 読みを指定します。ミニバッファに

          辞書登録『電子技術総合研究所』 読み：

     と表示されるので読みをローマ字で入力し(自動的にひらがなに変換する) RET で読みの入力を終了します。

 4. 登録する辞書を指定します。C-f, C-b, C-n, C-p 等を使ってカーソルを登録したい辞書に移動し選択します。

 5. 品詞を指定します。ミニバッファに品詞一覧が表示されます。品詞名は JSERVER が持っている情報を引いてくるので、サイト毎に設定できます。詳しくは各サイトの $WNNLIB/hinsi.data を見てください。

          品詞名:  0.普通名詞/  1.固有名詞/  2.動詞/  3.特殊な動詞/

     品詞名の最後に / がついているものは品詞群を表しています。 C-f でカーソルが右に移動し、C-b でカーソルが左に移動します。また、数字を入力するとその項目にカーソルが移動します。C-n で次の品詞一覧が表示されます。

          品詞名:  0.動詞以外の用言/  1.その他の独立語/

     C-p で前の品詞一覧に戻ります。

     目的の品詞にカーソルを移動し、RET によって品詞を選択します。動詞にはいろいろな種類があるため、例えば「サ行(する)&名詞」を選択するには、まず「動詞」を選択し、次の選択リストから、「サ行(する)&名詞」を探し、選択します。

     例の場合、電子技術総合研究所は固有名詞なので「固有名詞」を選びます。するとさらに

          0./  1.人名  2.地名  3.人名&地名  4.固有名詞

     のようにメニューが出てきます。今度は名前の最後に / がついていないので、それぞれは品詞を表しています。ここでは 3.固有名詞を選び、RET を押せば単語が登録されます。

     なお、品詞ノードが一番上(品詞名: 0.普通名詞/  1.固有名詞  2.動詞  3.特殊な動詞/ ...)でない時には、上の例のように / だけの項目が出ます。その項目を選択すると、一番上のノードに戻ります。

また、漢字変換モードで単語を登録することもできます。この場合は、コマンド toroku-henkan-mode を用います。

 -- Command: toroku-henkan-mode
     漢字変換中の文字列を辞書に登録します。

手順は次のようになります。

 1. 登録文字列を漢字変換して確定する直前の状態にします。例えば『電子技術総合研究所』という単語を登録したい場合は、

          |電子 技術 総合 研究所|

     という状態にします。

 2. C-t(toroku-henkan-mode)を実行します。

 3. ミニバッファに

          [あ]漢字：電子技術総合研究所

     と表示されるので、これでよければそのままRETを押します。もし変更したい場合は編集することができます。

 4. 続いてミニバッファに

          [あ]辞書登録『電子技術総合研究所』 読み：でんしぎじゅつそうごうけんきゅうじょ

     と出てきます。読みは先ほど漢字変換時に入力した読みが自動的に入っています。このままの読みで良ければRETを押します。もし変更したい場合は編集することができます。

 5. この後はtoroku-regionのときと同様で、登録辞書を指定し、品詞を指定すると登録は完了します。

辞書編集
====

「たまご」は、現在使用している辞書の辞書項目を編集できます。編集とは、辞書項目の追加、削除、単語の使用/不使用の切り替えです。編集を行なう場合はコマンド edit-dict-item を使います。

 -- Command: edit-dict-item YOMI
     読み YOMI を持つ辞書項目を編集する。

M-x edit-dict-item を起動し、ミニバッファで項目の読みを指定すると *Nihongo Dictionary Information* というバッファが作られ、その中にその読みを持つ辞書項目の情報が表示されます。たとえば“はな”という読みを持つ項目はこのように表示されます。

      *花            名詞      辞書：基本語彙(pubdic)/14991 頻度：12
      *鼻            名詞      辞書：基本語彙(pubdic)/14993 頻度：4
      *華            名詞      辞書：基本語彙(pubdic)/14992 頻度：1
      *はな          名詞      辞書：基本語彙(pubdic)/14990 頻度：1
      *ハナ          人名      辞書：人名(pubdic)/1806 頻度：0
      *塙            単漢字    辞書：単漢字(pubdic)/1975 頻度：0
      *放            タ行五段  辞書：基本語彙(pubdic)/14994 頻度：2
      *話            サ行五段  辞書：基本語彙(pubdic)/14998 頻度：68
      *離            サ行五段  辞書：基本語彙(pubdic)/14997 頻度：10
      *放            サ行五段  辞書：基本語彙(pubdic)/14996 頻度：4
      *はな          サ行五段  辞書：基本語彙(pubdic)/14995 頻度：1

一行めの“花”について細かく見ましょう。

行頭の“*”はその辞書項目がシステム辞書に登録されていて変更できないことを示しています。変更可能な利用者辞書に登録されている辞書項目の場合は空白が表示されます。次の“花”は辞書項目の見出し語で、その後の「名詞」は辞書項目の品詞です。最後の項目は登録されている辞書の名前、項目番号、頻度です。

この状態では、通常のカーソル移動コマンドの他に以下のコマンドが使用できます。これらを用いて、削除する項目を指定したり項目を追加したりします。

a
     辞書項目を追加します。

d
     カーソルの辞書項目を削除指定します。削除指定された辞書項目は行の先頭に D を表示します。

n
C-n
     カーソルを下に移動します。

p
C-p
     カーソルを上に移動します。

C-u
     辞書項目の使用/不使用を切り替えます。不使用にすると頻度が -1 になります。

q
     編集を終了します。削除は行ないません。

u
     削除指定された辞書項目の削除指定を解除します。

x
     削除指定された辞書項目を実際に削除します。

M-h
     辞書項目の頻度を設定します。

また、辞書にコメントを設定することもできます。コマンド set-dict-comment でメニューから辞書ファイルを選択し、そのあとコメントの文字列を入れます。コメントを設定すると辞書管理などでファイル名のかわりにコメントが使われます。

 -- Command: set-dict-comment
     辞書にコメントを設定する。

自分流の使い方
*******

「たまご」では、使用する辞書や変換サーバを設定したり、入力の変換のしかたを変えたりすることができます。

言語特定ファイル
========

Mule および「たまご」では複数の言語を扱うことができますが、あらかじめ各言語を扱いやすいようにするための設定ファイルを読み込む必要があります。例えば、日本語を使う場合には japanese.el を、中国語を使う場合には chinese.el をロードします。これらにより、各言語に合わせて word や syntax の定義を行なったり、入力文字変換システムの変換表を読み込んだりします。

言語特定ファイルを読み込むには、以下の方法があります。

 1. 必要な言語特定ファイルの読み込みを行なった状態の実行形式ファイルを作る。 Mule 構築時に site-init.el(デフォルトではこのファイルは存在していない)で、(load "japanese")などとして読み込む。詳しくは、 $MULE/INSTALL.Muleを参照のこと。

 2. Mule の起動時に ~/.emacs の中で読み込みを行う (site-init.el で読み込みが行なわれている場合は、~/.emacs で読み込む必要はない)。

 3. 利用者が Mule 使用時に load-library コマンドで読み込む。

通常はsite-init.elで読み込みを行なった状態の実行形式のファイルを作る方法をとります。

さらに Sun で X11 を使用する場合には、次のようにしてファイルを読み込むと Sun のファンクションキーが利用可能となります(see Sun Key map)。

     (load "egg-keymap")

初期設定
====

「たまご」の個人ごとの初期設定は次の 2つのファイルで行います。

Mule の初期設定ファイル (~/.emacs)
     このファイルで変換サーバホストの設定をします。

「たまご」の初期設定ファイル
     仮名漢字変換サーバが使用する辞書を指定します(see Dictionary)。

変換サーバの指定
--------

仮名漢字変換サーバ jserver が動作しているホストの名前は、

 1. 変数 jserver-list

 2. 変数 wnn-host-name

 3. 環境変数 JSERVER

のいずれかに文字列で指定します。優先順位は変数 jserver-list、変数 wnn-host-name、環境変数 JSERVER の順になります。

同様に、cserver が動作しているホストの名前は、

 1. 変数 cserver-list

 2. 変数 cwnn-host-name

 3. 環境変数 CSERVER

のいずれかに文字列で指定します。優先順位は変数 cserver-list、変数 cwnn-host-name、環境変数 CSERVER の順になります。

変数 jserver-list, cserver-list には、複数の変換サーバのリストを設定できます。サーバとの接続に失敗した場合には、リストの次のサーバと接続を試みます。ホストの指定がされていない場合、または nil が指定されている場合はローカルホストが指定されたとみなします。

一旦変換サーバとの通信が確立した後で、変換サーバのホストを変更するには、 M-x set-jserver-host-name, M-x set-cserver-host-name を実行して新しいホストを指定しなくてはなりません。変数 wnn-host-name や cwnn-host-name の値を変えるだけでは変更できません。

 -- Global Variable: jserver-list
     jserver ホスト名を文字列で指定する。複数の変換サーバのリストを設定できる。サーバとの接続に失敗した場合には、リストの次のサーバと接続を試みる。値が nil の場合は、ローカルホストを指定しているものとみなす。

     たとえば、仮名漢字サーバーホストが vanilla で、そのマシンの jserver との接続に失敗した場合には espresso に接続したい場合、 ~/.emacs に次の行を追加すればよい。

          (setq jserver-list '("vanilla" "espresso"))

     2つ以上のホストを指定することも可能である。

 -- Global Variable: cserver-list
     cserver が動いているホスト名を文字列で指定する。それ以外は jserver-list と同じ。

 -- Global Variable: wnn-host-name
     仮名漢字変換サーバホスト名を文字列で指定する。今使っているサーバのホスト名はこの変数に設定される。

 -- Global Variable: cwnn-host-name
     cserver ホスト名を文字列で指定する。それ以外は wnn-host-name と同じ。

 -- Command: set-jserver-host-name HOSTNAME
     現在接続しているサーバがあればクローズし、新たに jserver ホストを HOSTNAME に設定する。また、jserver-list の先頭に HOSTNAME を設定する。サーバへは接続が必要となるまで接続しない

 -- Command: set-cserver-host-name HOSTNAME
     現在接続しているサーバがあればクローズし、新たに cserver ホストを HOSTNAME に設定する。また、cserver-list の先頭に HOSTNAME を設定する。サーバへは接続が必要となるまで接続しない

 -- Command: disconnect-wnn
     仮名漢字変換サーバとのコネクションを解放する。

使用辞書の指定
-------

以下の説明では Mule のシステムディレクトリを $MULE で示します。

「たまご」は変換サーバとの通信を開始すると初期設定ファイルを探索実行して環境設定を行います。

初期設定ファイルの探索はまず egg-startup-file と egg-startup-file-search-path を用いて行います。見つからない場合は egg-default-startup-file と load-path を用いて探索します。

egg-startup-file の標準設定は .eggrc です。サイトで使用する標準初期設定ファイルは $MULE/lisp/eggrc-v41 です。

 -- Global Variable: egg-startup-file
     初期設定ファイルの名前を指定する。標準設定では .eggrc。

 -- Global Variable: egg-startup-file-search-path
     探索を行なうディレクトリのリストを指定する。egg-startup-file がディレクトリを指定していない場合はこの探索パス上のファイルを探す。標準設定では、("~" ".")。

 -- Global Variable: egg-default-startup-file
     サイトで共通に使用する初期設定ファイルを指定する。ファイル名がディレクトリを指定していない場合は load-path 上のファイルを探す。

「たまご」の初期設定ファイルでは、変換サーバが使用する辞書の設定を行います。辞書指定には add-wnn-dict を使います。引数によって、辞書ファイル・頻度ファイルのオープンモードや、パスワードが付いている辞書ファイルを読み書きモードでオープンする場合のパスワードファイルなどが指定できます。なお、辞書指定は正変換用と逆変換用で独立して指定するので、 あらかじめ set-wnn-reverse で、どちらの環境かを指定します。

 -- Function: set-wnn-reverse ARG
     ARG が nil のとき正変換環境、t のとき逆変換環境を指定する。eggrc で、辞書、附属語、パラメータを読み込む環境を指定する。

 -- Function: add-wnn-dict DFILE HFILE PRIORITY DMODE HMODE &optional DPASWD HPASWD
     辞書 DFILE を優先順位 PRIORITYで使用し、この辞書の頻度ファイルに HFILE を指定する。辞書ファイルモード DMODE と 頻度ファイルモード HMODE はそれぞれ non-nil なら読み書きモードでオープンし、nil なら読み込みのみでオープンする。辞書、頻度にパスワードのついたファイルを読み書きモードでオープンしたい場合には、 DPASWD, HPASWD に、パスワードのはいったファイルを指定すればよい。なお、このパスワードファイルはクライアント側にあるファイルなので絶対パスで指定する。ファイルのパス名は $WNNLIB からの相対パス(日本語の場合、デフォルトは /usr/local/lib/wnn/ja_JP) で、ファイル名の先頭に ! をつけるとクライアント側のファイルになる。

          例:
          (add-wnn-dict "pubdic/kihon.dic" "usr/$USER/kihon.h" 5 nil t)

          (add-wnn-dict "usr/$USER/ud" "" 5 t t)

          (add-wnn-dict "pubdic/local.dic" "usr/$USER/local.h"
          	      5 t t "/usr/local/lib/wnn/passwd_dic"
          	      "/usr/local/lib/wnn/passwd_frq")

辞書以外にも、関数 set-wnn-fuzokugo を使って付属語ファイルの指定を行うこともできます。

 -- Function: set-wnn-fuzokugo FUZOKUGO-FILE
     FUZOKUGO-FILE を付属語ファイルに指定する。ファイルのパス名は $WNNLIB からの相対パス(日本語の場合、デフォルトは /usr/local/lib/wnn/ja_JP) になる。

また、set-wnn-param によって変換パラメータを細かく指定することもできます。

 -- Command: set-wnn-param N NSHO P1 P2 ... P15
     変換パラメータを設定する。パラメータの意味は以下の通り。

     N
          N(大)文節解析のN

     NSHO
          大文節中の小文節の最大数

     P1
          幹語の頻度のパラメータ

     P2
          小文節長のパラメータ

     P3
          幹語長のパラメータ

     P4
          今使ったよビットのパラメータ

     P5
          辞書のパラメータ

     P6
          小文節の評価値のパラメータ

     P7
          大文節長のパラメータ

     P8
          小文節数のパラメータ

     P9
          疑似品詞 数字の頻度

     P10
          疑似品詞 カナの頻度

     P11
          疑似品詞 英数の頻度

     P12
          疑似品詞 記号の頻度

     P13
          疑似品詞 閉括弧の頻度

     P14
          疑似品詞 付属語の頻度

     P15
          疑似品詞 開括弧の頻度

          例:
          (set-wnn-param  2 10 2 45 5  80 5 1 40  0 400 -100 400  80 200 2 200)

     また、ミニバッファでインタラクティブにパラメータを指定することもできる。 M-x set-wnn-param とすると、

          : 2

     のようにパラメータが一つずつ順に表示される。値を変更する必要がなければそのまま、変更したければ修正してから RET を押すと次のパラメータに移る。

入力文字変換方法の変更
===========

「たまご」は入力文字変換表に基づいてキー入力を変換します。この変換を行う部分を入力文字変換系(Input character Translation System: ITS)と呼びます。デフォルトの変換表は、「たまご」システムに含まれる its-*.el ファイル中で定義されています。これを変更するためには、自分の好みの入力変換法を ~/.emacs ファイルの中に記述してやります。

変換表を作成するには、まず関数 its-define-mode によって作成する変換表を宣言し、その表での入力変換の方法を関数 its-defruleで定義します。

 -- Function: its-define-mode NAME &optional INDICATOR RESET
     これから its-defrule などが定義する入力文字変換モード NAME を定義選択する。INDICATOR が non-nil のときは、このモードが選択された時にその文字列がモードラインに表示される。 RESET が non-nil のときには its-mode の初期化を行う。

          	(its-define-mode "roma-kana" "あ" t)

     は、its-mode として "roma-kana" という名前の変換表を新たに定義することを宣言する。この変換表が選択されたときには、モードラインには[あ]と表示される。最後の t は its-mode "roma-kana" を clear することを指示する。nil の場合は定義の追加を行なう。

 -- Function: its-defrule INPUT OUTPUT &optional NEXT STATE MAP
     INPUT は入力文字列を、OUTPUT はそれに対する変換出力文字列を示す。

          	(its-defrule "a" "あ")

     は、"a" を "あ" に変換することを意味する。「たまご」では入力の大文字小文字を区別するので、この定義は "A" を "あ" に変換することは意味しない。

     NEXT がある場合には、INPUT の入力があると、OUTPUTを変換の出力とし、さらに NEXT が入力としてあったものとして変換を続ける。

          	(its-defrule  "tch" "っ" "ch")

     は、入力 tch に対して "っ" を出力した上で、引き続き ch が入力されたように動作することを指定する。

     第 4引数 STATE がある場合には、INPUT の入力があり、その入力の変換規則が確定していない間 STATE の文字列をフェンス領域に表示する(STATE が nil の場合には OUTPUTを表示する)。すなわち、

          (its-defrule "n" "ん"  nil "n")

     は入力 n があった場合、この規則が適用されることが確定するまでの間 n を表示することを意味する。変換が確定しない時に表示する文字列は変数 its:make-terminal-state および変数 its:make-non-terminal-state に指示された関数によって生成される。

     変換規則は MAP で指定された変換表に登録される。MAP が nil の場合は最後に its-define-mode で定義された変換表に登録される。なお、OUTPUT が nil の場合は INPUT に対する変換規則が削除される。

例えばローマ字仮名モードで dhi と入力したら "でぃ" と変換したい場合は、~/.emacs に次の行を追加します。

     (its-defrule "dhi" "でぃ" nil nil "roma-kana")

これによって roma-kana という変換表に、dhi を "でぃ" に変換するルールが追加されます。

おなじ入力に対して異なる変換を登録した場合は、最新の規則だけが有効になります。また、変換表から変換規則を削除したい時には、出力に nil を指定した its-defrule を用います。たとえば、変換表 "roma-kana" にある tch という変換規則を削除するには、

       (its-defrule "tch" nil nil nil "roma-kana")

とします。変換表に登録されているすべての変換規則を削除するには、関数 its-define-modeを用います。たとえば

       (its-define-mode "roma-kana" nil t)

は変換表 "roma-kana" のモードライン表示は変えずに、すべての変換規則を削除します。

なお、its-defruleによって変換規則を再定義あるいは削除すると、

     (its-defrule "dhi" "でぃ") を再定義しました
     (its-defrule "tch" "っ") を削除しました

のようなメッセージがミニバッファに出力されます。このメッセージが出力されるか否かは、変数 its:*defrule-verbose* によって制御できます。

 -- Global Variable: its:*defrule-verbose*
     nil の場合、its-defrule の警告を抑制する。

キーマップ
*****

「たまご」は、global-map、フェンスモード、漢字変換モードにおいてキーバインドを変更しています。

global-map の key binding の変更
============================

「たまご」では通常使用している global-map を変更しており、元の global-map は si:*global-map* に退避しています。

「たまご」での global-map の変更点は次の通りです。

 1. self-insert-command を egg-self-insert-command に変更した。

 2. (define-key global-map "\C-\\" 'toggle-egg-mode)

     (define-key ctl-x-map  " " 'henkan-region)

     (define-key global-map "\C-^" 'special-symbol-input)

     を追加した。

フェンスモードの key binding の変更
========================

フェンスモードのキーバインドの変更は通常の方法で行います。フェンスモードのキーマップには、fence-mode-map を使用します。デフォルトのキーバインドは次の通りです。

     (define-key fence-mode-map "\e"   fence-mode-esc-map)
     (define-key fence-mode-map "\eh"  'fence-hiragana)
     (define-key fence-mode-map "\ek"  'fence-katakana)
     (define-key fence-mode-map "\e<"  'fence-hankaku)
     (define-key fence-mode-map "\e>"  'fence-zenkaku)
     (define-key fence-mode-map "\e\C-h" 'its:select-hiragana)
     (define-key fence-mode-map "\e\C-k" 'its:select-katakana)
     (define-key fence-mode-map "\eq"    'its:select-downcase)
     (define-key fence-mode-map "\eQ"    'its:select-upcase)
     (define-key fence-mode-map "\ez"    'its:select-zenkaku-downcase)
     (define-key fence-mode-map "\eZ"    'its:select-zenkaku-upcase)
     (define-key fence-mode-map " "    'henkan-fence-region-or-single-space)
     (define-key fence-mode-map "\C-@" 'henkan-fence-region)
     (define-key fence-mode-map "\C-a" 'fence-beginning-of-line)
     (define-key fence-mode-map "\C-b" 'fence-backward-char)
     (define-key fence-mode-map "\C-c" 'fence-cancel-input)
     (define-key fence-mode-map "\C-d" 'fence-delete-char)
     (define-key fence-mode-map "\C-e" 'fence-end-of-line)
     (define-key fence-mode-map "\C-f" 'fence-forward-char)
     (define-key fence-mode-map "\C-g" 'fence-cancel-input)
     (define-key fence-mode-map "\C-h" 'help-command)
     (define-key fence-mode-map "\C-i" 'undefined)
     (define-key fence-mode-map "\C-j" 'undefined)  ;;; LFD
     (define-key fence-mode-map "\C-k" 'fence-kill-line)
     (define-key fence-mode-map "\C-l" 'fence-exit-mode)
     (define-key fence-mode-map "\C-m" 'fence-exit-mode)  ;;; RET
     (define-key fence-mode-map "\C-n" 'undefined)
     (define-key fence-mode-map "\C-o" 'undefined)
     (define-key fence-mode-map "\C-p" 'undefined)
     (define-key fence-mode-map "\C-q" 'its:select-previous-mode)
     (define-key fence-mode-map "\C-r" 'undefined)
     (define-key fence-mode-map "\C-s" 'undefined)
     (define-key fence-mode-map "\C-t" 'fence-transpose-chars)
     (define-key fence-mode-map "\C-u" 'undefined)
     (define-key fence-mode-map "\C-v" 'undefined)
     (define-key fence-mode-map "\C-w" 'henkan-fence-region)
     (define-key fence-mode-map "\C-x" 'undefined)
     (define-key fence-mode-map "\C-y" 'undefined)
     (define-key fence-mode-map "\C-z" 'eval-expression)
     (define-key fence-mode-map "\C-|" 'fence-toggle-egg-mode)
     (define-key fence-mode-map "\C-_" 'jis-code-input)
     (define-key fence-mode-map "!"	  'fence-insert-self-command)
     .....
     .....
     (define-key fence-mode-map "~"	  'fence-insert-self-command)
     (define-key fence-mode-map "\177" 'fence-backward-delete-char)

仮名漢字変換モードの key binding の変更
==========================

仮名漢字変換モードのキーバインドの変更は通常の方法で行います。仮名漢字変換モードのキーマップには、henkan-mode-map を使用します。デフォルトのキーバインドは次のようになっています。

     (define-key henkan-mode-map "\e"   henkan-mode-esc-map)
     (define-key henkan-mode-map "\ei"  'henkan-bunsetu-chijime-sho)
     (define-key henkan-mode-map "\eo"  'henkan-bunsetu-nobasi-sho)
     (define-key henkan-mode-map "\es"  'henkan-select-kouho-dai)
     (define-key henkan-mode-map "\eh"  'henkan-hiragana)
     (define-key henkan-mode-map "\ek"  'henkan-katakana)
     (define-key henkan-mode-map "\ez"  'henkan-select-kouho-sho)
     (define-key henkan-mode-map "\e<"  'henkan-saishou-bunsetu)
     (define-key henkan-mode-map "\e>"  'henkan-saichou-bunsetu)
     (define-key henkan-mode-map " "    'henkan-next-kouho)
     (define-key henkan-mode-map "\C-@" 'henkan-kakutei-first-char)
     (define-key henkan-mode-map "\C-a" 'henkan-first-bunsetu)
     (define-key henkan-mode-map "\C-b" 'henkan-backward-bunsetu)
     (define-key henkan-mode-map "\C-c" 'henkan-quit)
     (define-key henkan-mode-map "\C-d" 'undefined)
     (define-key henkan-mode-map "\C-e" 'henkan-last-bunsetu)
     (define-key henkan-mode-map "\C-f" 'henkan-forward-bunsetu)
     (define-key henkan-mode-map "\C-g" 'henkan-quit)
     (define-key henkan-mode-map "\C-h" 'henkan-help-command)
     (define-key henkan-mode-map "\C-i" 'henkan-bunsetu-chijime-dai)
     (define-key henkan-mode-map "\C-j" 'undefined)
     (define-key henkan-mode-map "\C-k" 'henkan-kakutei-before-point)
     (define-key henkan-mode-map "\C-l" 'henkan-kakutei)
     (define-key henkan-mode-map "\C-m" 'henkan-kakutei)
     (define-key henkan-mode-map "\C-n" 'henkan-next-kouho)
     (define-key henkan-mode-map "\C-o" 'henkan-bunsetu-nobasi-dai)
     (define-key henkan-mode-map "\C-p" 'henkan-previous-kouho)
     (define-key henkan-mode-map "\C-q" 'undefined)
     (define-key henkan-mode-map "\C-r" 'undefined)
     (define-key henkan-mode-map "\C-s" 'undefined)
     (define-key henkan-mode-map "\C-t" 'toroku-henkan-mode)
     (define-key henkan-mode-map "\C-u" 'undefined)
     (define-key henkan-mode-map "\C-v" 'henkan-inspect-bunsetu)
     (define-key henkan-mode-map "\C-w" 'henkan-next-kouho-dai)
     (define-key henkan-mode-map "\C-x" 'undefined)
     (define-key henkan-mode-map "\C-y" 'undefined)
     (define-key henkan-mode-map "\C-z" 'henkan-next-kouho-sho)
     (define-key henkan-mode-map "!"	   'henkan-kakutei-and-self-insert)
     ....
     ....
     (define-key henkan-mode-map "~"	   'henkan-kakutei-and-self-insert)
     (define-key henkan-mode-map "\177" 'henkan-quit)

日本語 Texinfo
***********

「たまご」を用いると、この Info のように Texinfo に日本語を使うことができます。これは、次のファイルの変更によって実現されています。

man/texinfo.tex
     Texinfo 本体および設定に応じて国別の texinfo ファイルを読み込む

man/texinfo-jp.tex
     日本語フォント、見出しの日本語、日本語の索引の処理

man/texindex.c
     EUC 文字を含む index ファイルの処理

lisp/texinfmt.el
lisp/texinfmt.elc
     @cindex と @defvr の処理

日本語文字の使用
========

Mule ではいろいろな国の言語を利用できるため、Texinfo でも多国語に対応する必要があります。それで Mule に付属する Texinfo では、ファイルの先頭で使用する言語を指定することにより、各国語に対応するための設定を行うファイルを読み込ませることができます。

たとえば、日本語を使用する場合には、

     \def\lang{jp}

という行を texinfo.tex を読み込む前に指定することにより、日本語フォントなどの設定を行う texinfo-jp.tex を自動的に読み込み、Texinfo 中で日本語が使えるようになります。日本語 TeX には、NTT 版と ASCII 版の 2種類がありますが、texinfo-jp.tex はどちらの TeX にも自動的に対応します。

Texinfo ではテキストの属性、たとえば定義なのか変数なのかを明らかにできるようにするためのコマンドがいくつかありますが、日本語環境では以下のコマンドの引数として、日本語を用いることができます。

ただし、日本語 TeX で広く使用可能なフォントは明朝体とゴシック体だけなので、英字フォントを駆使した場合とはかなり効果が違います。たとえば、英字で斜体が使われる場合とボールド体が使われる場合の両方とも、ゴシック体が使われます。注意して使用してください。

@code
     印刷された場合は明朝体になり、Infoファイルでは`...'でかこまれて表示されます。

@samp
     印刷された場合は明朝体で`...'でかこまれて、Infoファイルでは`...' でかこまれて表示されます。

@file
     印刷された場合は明朝体で`...'でかこまれて、Infoファイルでは`...' でかこまれて表示されます(@sampと現状では同じです)。

@kbd
     印刷された場合は明朝体になり、Infoファイルでは`...'でかこまれて表示されます。

@key
     印刷された場合は明朝体になり、Infoファイルではそのまま表示されます。

@ctrl
     印刷された場合は明朝体で ^ がついて、Infoファイルでは引数の最初の文字によって示されるコントロール文字が表示されます。

@var
     印刷された場合はゴシック体で、Infoファイルではそのまま表示されます。

@dfn
     印刷された場合はゴシック体で、Infoファイルでは"..."でかこまれて表示されます。

@cite
     印刷された場合はゴシック体で、Infoファイルでは`...'でかこまれて表示されます。

@emph
     印刷された場合はゴシック体で、Infoファイルでは*...*でかこまれて表示されます。

@strong
     印刷された場合はゴシック体で、Infoファイルでは*...*でかこまれて表示されます(日本語文字の場合、@emphと同じになります)。

@i
     印刷された場合はゴシック体で、Infoファイルではそのまま表示されます。

@b
     印刷された場合はゴシック体で、Infoファイルではそのまま表示されます。

@t
     印刷された場合は明朝体で、Infoファイルではそのまま表示されます。

日本語文字を含む索引項目
============

概念索引の項目として、日本語文字を含むものを使うことができます。

     @cindex CONCEPT[YOMI]

という形で索引項目を指定します。YOMI にはひらがなを用いて下さい。項目 CONCEPT は読み YOMI の順で並べ変えられて、概念索引に現れます。索引には 1バイト文字、2バイト文字の順で、2バイト文字はあいうえお順で現れます。

たとえば、

     @cindex 概念索引[がいねんさくいん]

のように項目を指定し、

     @printindex cp

で索引を生成させると、ガの位置に概念索引という項目があらわれます。

defvr の拡張
=========

コマンド @defvr を用いて変数の説明を行なう場合に、その変数がローカルかグローバルかを示すことができます。

     @defvr {Global variable} variable-name
     変数の説明

は、Info ファイルでは次のように、

     ## Global Variable: variable-name
          変数の説明

また印刷された場合には次のようになります。

 -- Global variable: variable-name
     変数の説明

ローカル変数を説明する時には、

     @defvr {Local variable} another-variable-name

としてください。

Sun の X11 におけるキー割り当て
********************

Sun 上で X11 を使用する場合、$MULE/lisp/egg-keymap.elをロードすることにより(例えば、.emacsの中で (load "egg-keymap")を実行すると) Sun のファンクション・キーが使用できます。キー割り当ては以下の通りです。

F1
     ファイル文字コードの設定(set-file-coding-system)

F2
     辞書項目編集(edit-dict-item)

F3
     JISコード入力(jis-code-input)

F4
     辞書登録(toroku-region)

F5
     リージョン中の半角を全角に変える(zenkaku-region)

F6
     リージョン中の全角を半角に変える(hankaku-region)

F7
     リージョン中のひらがなをカタカナに変える(katakana-region)

F8
     リージョン中のカタカナをひらがなに変える(hiragana-region)

F9
     リージョンの仮名漢字変換(henkan-region)

L1
     buffer の内容を現在アクティブな buffer に挿入する (insert-buffer)

L2
     ファイルの内容を現在アクティブな buffer に挿入する(insert-file)

L3
     リージョンを評価する(eval-region)

L4
     現在アクティブな buffer を評価する(eval-current-buffer)

L5
     ウインドウの大きさを大きくする(enlarge-window)

L6
     ウインドウの大きさを小さくする(shrink-window)

L7
     現在アクティブな buffer のテキストの変更を取り消す (revert-buffer)

L8
     現在アクティブな buffer のテキストの変更を取り消す (revert-buffer)

L9
     現在アクティブな buffer の先頭にカーソルをもっていく (beggining-of-buffer)

L10
     現在アクティブな buffer の最後にカーソルをもっていく (end-of-buffer)

品詞の扱いについて
*********

辞書登録における品詞の扱いについて、pubdic マネジャである橘さんが pubdic 参加者に宛てた e-mail の一部を以下に転載します。ここで挙げたものは Wnn V3 以前の品詞構成を対象にしていますので、現在の「たまご」の品詞とは違いますが、辞書登録の際に参考にはなるでしょう。Wnn V4 の品詞構成は、各サイトの $WNNLIB/hinsi.data を見て下さい。

普通名詞
     これは言うまでもないと思います。ただし、固有名詞、"する" が付くと動詞になるものには使わないで下さい。

固有名詞

     人名
          人名に使用します。

     地名
          地名に使用します。

     人名&地名
          人名と地名の両方に使用するものに使います。

     固有名詞
          その他の固有名詞に使います。

動詞

     五段
          "書か/ない", "書き/ます", "書く", "書け/ば", "書こ/う"のように五段活用するものに使います。登録する時は"書" を "か" だけで登録します。

     一段(体)
          使わないで下さい。

     一段(非体)
          "落ち/ない", "落ち/ます", "落ちる", "落ちれ/ば", "落ちろ" のような一段活用動詞の変化しない部分"落ち" を登録します。

     サ変(する)
          "達し/ない", "達し/ます", "達する", "達すれ/ば", "達せよ" のようなサ行変格活用する動詞に使います。"達" を "たっ" で登録します。語幹が名詞であるものは名詞(する) を使って下さい。

     サ変(ずる)
          基本的に上と同じですが、"論ずる" のようにザ行で活用するものに使います。

     その他
          pd-wnn と関係しますが、使う必要はないと思います。

形容動詞

     ダナ型
          "簡単な", "簡単だ" のような普通の形容動詞の語幹"簡単" を登録します。名詞とだぶるものも多いですが、そういう場合は両方に登録します。

     トタル型
          "毅然と/した", "毅然たる" のような文語的形容動詞に使います。

形容詞
     "美しかっ/た", "美しく/ない", "美しい", "美しけれ/ば"のような形容詞の語幹 "美し" を登録します。

連体詞
     "この" (とっさに他の例が思い浮かばない)のように体言にかかる活用しない語を登録します。

副詞
     "だんだん", "せめて" のように用言に掛かる活用しない語を登録します。

接続詞
感動詞
     "しかし", "やはり", "へえ", "ふーん" などです。

単漢字
     一つの漢字から構成される語でも、ちゃんと名詞とか接尾語とか使うように。

接頭語
     "助"(監督,教授など), "大"(宣伝,改革など), "ウルトラ" など。

接尾語
     "者"(担当,賛成など), "区"(品川,新宿など), "マン" など。

助数詞
     接尾語と似ているが、"円", "年" など数字の後に付くもの。

数詞
     現在使用していません。