特別な大文字小文字テーブル(case table)をインストールすれば、 大文字小文字変換をカスタマイズできます。 大文字小文字テーブルは、大文字と小文字の対応関係を指定します。 このテーブルは、Lispオブジェクトの大文字小文字変換関数(前節参照)と バッファ内のテキストに作用する大文字小文字変換関数(see Case Changes)の 両方に影響します。 各バッファごとに大文字小文字テーブルがあります。 新たなバッファの大文字小文字テーブルを初期化するために使う 標準の大文字小文字テーブルもあります。
大文字小文字テーブルは、サブタイプがcase-table
である
文字テーブル(see Char-Tables)です。
この文字テーブルは、各文字を対応する小文字に対応付けます。
これには3つの追加スロットがあり、関連するテーブルを保持します。
単純な場合、必要なことは、小文字への対応付けを指定するだけです。 関連する3つのテーブルはこの対応付けから自動的に計算されます。
言語によっては、大文字と小文字の対応関係が1対1でないことがあります。 2つの異なる小文字が同じ大文字に対応することがあります。 このような場合、大文字から小文字への対応付けと、 小文字から大文字への対応付けの両方を指定する必要があります。
追加のテーブルcanonicalize(正則)は、各文字を正則文字に対応付けます。 2つの任意の文字が大文字小文字変換で関連付けられている場合、 その2つの文字は同一の正則文字を持ちます。 たとえば、`a'と`A'は、大文字小文字変換で関連付けられているので、 これらは同一の正則文字を持つはずです (両方の文字に対して`a'であるか、両方の文字に対して`A'である)。
追加のテーブルequivalences(同値)は、 同じ正則クラス(同一の正則文字を持つ文字群)の文字を巡回して対応付けます。 (普通のASCIIでは、`a'を`A'に対応付け、 `A'を`a'に対応付ける。 各正則クラスについても同様。)
大文字小文字テーブルを作成するときには、
canonicalize(正則)にはnil
を指定できます。
そうすると、Emacsはこのスロットを小文字と大文字の対応付けから埋めます。
equivalences(同値)にもnil
を指定できます。
そうすると、Emacsはこのスロットをcanonicalize(正則)から埋めます。
実際に使用している大文字小文字テーブルでは、
これらの要素はnil
以外です。
canonicalize(正則)を指定せずに
equivalences(同値)を指定しないでください、
つぎに、大文字小文字テーブルを操作する関数を示します。
以下の3つ関数は、非ASCII文字集合を定義するパッケージ向けの 便利なサブルーティンです。 これらは、指定した大文字小文字テーブルcase-tableを変更します。 さらに、標準の構文テーブルも変更します。 See Syntax Tables。 普通、標準の大文字小文字テーブルを変更するためにこれらの関数を使います。