Skip to content

Commit

Permalink
convert to markdown file
Browse files Browse the repository at this point in the history
  • Loading branch information
tkita committed Feb 11, 2020
1 parent a7654fa commit 3ed637d
Show file tree
Hide file tree
Showing 8 changed files with 295 additions and 289 deletions.
5 changes: 5 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
2020-02-12 Tsuyoshi Kitamoto <[email protected]>

* READMEs/FAQ.md, READMEs/README.C.md, READMEs/README.skkdic-diff.md:
* READMEs/README.skkdic-expr2.md: convert to markdown file.

2018-12-29 Takeshi Abe

* Makefile.am, skk.ex: Remove CVS related stuff.
Expand Down
82 changes: 28 additions & 54 deletions READMEs/FAQ.txt → READMEs/FAQ.md
Original file line number Diff line number Diff line change
@@ -1,82 +1,56 @@
-*- outline -*-

これは skk-tools に対するよくある質問と、それに対する回答集です。

skkdic-* コマンドの動作について
===============================

* アウトラインモード概略

このファイルはアウトラインモードによって記述されています。

C-c C-t (M-x hide-body)

すれば、見出しだけがご覧になれます。ご興味のある項目にカーソルを合わせ、

C-c C-e (M-x show-entry)

すると、その項目の内容がご覧になれます。

C-c C-c (M-x hide-entry)

で再度その項目を隠すことができます。

C-c C-a (M-x show-all)

で全てのテキストを表示することができます。カーソル移動については、下記
の通りです。

C-c C-n (次の項目へ移動。階層は無視)

C-c C-p (前の項目へ移動。階層は無視)

C-c C-f (同じ階層の次の項目へ移動)

C-c C-b (同じ階層の前の項目へ移動)
## skkdic-sort で辞書ファイルをソートしたら送りありエントリがちゃんとソートされません

辞書ファイルの文字コードは EUC になっていますか?

* skkdic-* コマンドの動作について。
skkdic-sort などの C で実装されたコマンドは辞書ファイルの文字コードが
EUC であることを前提にしています。

** skkdic-sort で辞書のソートをしたら送りありエントリがちゃんとソートされません。
ただし、ASCII の範囲外の文字において各バイトの8ビット目が1になってい
る文字コード(EUC-JP、EUC-JIS-2004、UTF-8 など)では正常に動作するよう
です。

辞書の文字コードは EUC になっていますか? skkdic-sort などの C で実装
されたコマンドは辞書の文字コードが EUC であることを前提にしています。
ただし、ASCIIの範囲外の文字において各バイトの8ビット目が1になっている
EUC-JP、EUC-JIS-2004、UTF-8などの文字コードでは正常に動作するようです。

* 辞書の形式について。
辞書の形式について
==================

** 辞書の形式が良く分かりません
## 辞書の形式が良く分かりません

どんな小さな辞書でも必ず;; okuri-ari entries.
;; okuri-nasi entries.」の 2 行を含んでいます。前者の次行から送り仮
どんな小さな辞書でも必ず `;; okuri-ari entries.`
`;; okuri-nasi entries.`の2行を含んでいます。前者の次行から送り仮
名を含むエントリが並びます。後者の前行までが送り仮名「あり」のエントリ
です。このエントリの集りを「送りありエントリ」と呼んだりします。

後者の次行から最終行までが「送りなしエントリ」です。
各行は

さい /際/差異/才/再/最/歳/
さい /際/差異/才/再/最/歳/

のように、「見出し語 /候補0/候補1/候補2/.../候補n/」というような形式に
なっています。候補は前にある程優先して出力されます。

** 「エントリ」って何ですか?
## 「エントリ」って何ですか?

見出し語と候補を合わせた 1 行を便宜上「エントリ」と呼んでいます。上記
の例ですと、

さい /際/差異/才/再/最/歳/
さい /際/差異/才/再/最/歳/

が 1 つのエントリです
がひとつのエントリです

** 何故「送りありエントリ」と「送りなしエントリ」に分かれているのですか?
## 何故「送りありエントリ」と「送りなしエントリ」に分かれているのですか?

SKK では送り仮名があるかないかをユーザ側で明示して変換しますので、送り
仮名ありの変換を行なった場合は、「送りありエントリ」を、そうでない場合
は「送りなしエントリ」を検索します。

** ] だけの候補を含む妙なエントリがあります
## ] だけの候補を含む妙なエントリがあります

おおk /大/多/[き/大/]/[く/多/大/]/
おおk /大/多/[き/大/]/[く/多/大/]/

のようなエントリのことをおしゃっているのでしょう。

Expand All @@ -86,11 +60,11 @@ SKK では送り仮名があるかないかをユーザ側で明示して変換
仮名の厳密なマッチを要求するようになります。このとき、検索の手順は、お
およそ次のようになります。例えば、`OoKi' とタイプすると、

(1)`おおk' を見出しとして個人辞書を検索。
(1) `おおk' を見出しとして個人辞書を検索。

(2)見つかったら、次は同一行に `[き' があるかどうか検索する (あった!)。
(2) 見つかったら、次は同一行に `[き' があるかどうか検索する (あった!)。

(3)見つかったら、次に現われる `]' までの間に挟まれている候補だけを出力す
(3) 見つかったら、次に現われる `]' までの間に挟まれている候補だけを出力す
る (「大」だ!)。

従い、「多」については、候補として含まれているにもかかわらず、出力され
Expand All @@ -103,24 +77,24 @@ skk-henkan-okuri-strictly が nil の場合は、上記 (2), (3) のプロセス
skk-henkan-strict-okuri-precedence を t にセットすると、送り仮名がマッ
チするものを優先的に出力し、マッチしないものも劣後的に出力します。

** 個人辞書の見出し語がソートされていません
## 個人辞書の見出し語がソートされていません

個人辞書は確定したもの順に並んでいます。比較的サイズが小さいことからリ
ニアサーチを前提にしていること (確定の度にきちんと見出し語をソートさせ
てバイナリサーチを行なうよりは効率が良いと判断しています)、また、見出
し語の補完で最近確定した見出しから順に出力するため、などの理由からこの
ような実装になっています。

** SKK-JISYO.{SML} の送りありエントリの見出し語のソートが逆順になっています
## SKK-JISYO.{SML} の送りありエントリの見出し語のソートが逆順になっています

なんででしょう? 分かりません (^^;;。正確なところをご存知でしたら
[email protected] までご連絡下さい。

(1)昔の個人辞書は送り仮名の自動処理のために、送りありエントリのみ見出
(1) 昔の個人辞書は送り仮名の自動処理のために、送りありエントリのみ見出
し語を逆順ソートさせていたが、その名残り (現在は skk-auto.el の内部
処理でこれと同等の作業を行なっています)。

(2)リニアサーチする際、;; okuri-nasi entries.の区切りを中心に、送
(2) リニアサーチする際、`;; okuri-nasi entries.` の区切りを中心に、送
りあり変換については上方に、送りなし変換については下方にサーチする
ことでポイント移動を最小限に抑えることができるから。

Expand Down
106 changes: 0 additions & 106 deletions READMEs/README.C

This file was deleted.

112 changes: 112 additions & 0 deletions READMEs/README.C.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
C 言語で書かれた SKK 辞書のユーティリティです。複数の SKK 辞書を結合し
たりその差を取ることができます。

同様のプログラムで辞書が巨大すぎて mule や nemacs がパンクしたり、実行
時間がかかりすぎる時に試してみてください。

高橋 裕信 [email protected]
佐藤 雅彦 [email protected]
薮内 健二 [email protected]
酒井 清隆 [email protected]

プログラム作成方法
==================

作成キットに含まれるシェルスクリプト "configure" を実行して Makefile
を作成します。

次に make を実行すれば、3つの実行ファイル skkdic-expr, skkdic-sort,
skkdic-count が作成されます。

* configure については ./configure --help と実行すれば、使用できるオ
プションが表示されます。

* skkdic-expr は辞書の2倍程度の大きさの作業用ファイルを作成します。
このファイルが作成されるディレクトリは実行時に指定できますが、デフォー
ルトとして "/tmp" を指定しています。もしも明らかに不足する場合には
Makefile 中で -DTMPDIR=\".\" のように DEFS に指定すると、/tmp が溢
れるといった災害を防止できます。

* 扱う辞書の行が 4096 バイトに近いかそれ以上になる場合は、Makefile の
DEFS に書かれた MAXLEN を大きくして再コンパイルしてください。

各プログラムの説明
================

## 1. skkdic-expr

複数の SKK 辞書をマージしたり、他の辞書と同じ内容を引くのに使います。次
のようにして使います。

```
$ skkdic-expr [options] jisyo1 + jisyo2 - jisyo3 + jisyo4 > result
```

これは、まず jisyo1 に jisyo2 を加えます。もしも jisyo2 に同じエントリ
があれば重複しては含まれません。次に jisyo3 と同じエントリがあれば削除
されます。さらに jisyo4 の内容が加えられた結果が標準出力に吐き出されま
す。

また辞書に先行して次のオプションが使用できます。

-d 作業用ディレクトリ ... デフォルト以外の作業ディレクトリを指定します。

-o 出力ファイル ... 標準出力ではなくファイルに出力します。

-O ... [み/読/詠] の送りがなのエントリも残します。

### 例題a. 複数の辞書を cat でつないだものをきれいにする。

このプログラムは辞書を読み込む時に同じエントリを一つにまとめたり、同じ
読みが別々の行になっていてもまとめる機能を持っています。例えば次のよう
な他の辞書を一行ごとのフォーマットに変換してから、さらにまとめるのにも
使用できます。

- じしょ /辞書/
- じしょ /璽書/
- じしょ /字書/

```
$ skkdic-expr olddict1 > newdict1
```

優先順位は上から順になります。同じ読みの並び順を変更するのにも使えます。

### 例題b. 個人辞書にある分だけを取り出す。

```
$ skkdic-expr ~/.skk-jisyo - /usr/local/nemacs/etc/SKK-JISYO.L > private
```

### 例題c. 2つの辞書の共通部分を取り出す。

```
$ skkdic-expr jisyo-a - jisyo-b > jisyo-tmp
$ skkdic-expr jisyo-a - jisyo-tmp > jisyo-common
```

## 2. skkdic-sort

skkdic-expr はでたらめな順番で出力します。それを通常の SKK 辞書の形式に
ソートして、 `;; okuri-ari entries.``;; okuri-nasi entries.` を挿
入します。入力は標準入力のみ、出力は標準出力のみが指定できます。

```
$ skkdic-expr jisyo-a + jisyo-b | skkdic-sort > newdict
```

## 3. skkdic-count

SKK 辞書の中候補数を数えます。[] で囲まれた送りがなつきのブロックは候補
としては数えない仕様になっています。


使用および再配布について
========================

これらのプログラムは SKK と同じように Gnu General Public License (GPL)
(Version 2 もしくはそれ以降のもの) の下で自由に再配布したり修正して使
用することができます。もちろんこれらのプログラムはきっと役に立つと考え
ていますが、その内容については何らの保証もしません。正確な点については
SKK に添付している COPYING というファイルに GPL が書かれているのでそち
らを参照してください。
Loading

0 comments on commit 3ed637d

Please sign in to comment.