3. 実装アイデア

思いついた機能を書き出しておく.

3.1. 索引のエントリータイプ

文章量が増えた時に有効そうなもの. アマチュア小説家のツールとしての利用を想定した場合、 文章中に登場するキャラや地名などの設定管理に使えそうな気がする.

3.1.1. attribute

記載例

.. index::
   attribute: word; attr1; attr2; attr3; ...; attrN

以下の記述と同値

.. index::
   single: word
   single: attr1; word
   single: attr2; word
   single: attr3; word
   …
   single: attrN; word

3.1.2. keys

記載例

.. index::
   keys: key1; key2; key3; ...; keyN; title

以下の記述と同値

.. index::
   single: key1; title
   single: key2; title
   single: key3; title
   …
   single: keyN; title

記述時の位置が異なるだけで、attributeと機能は同じ. 文字列が文になるなら「tilte」で、単語に収まるなら「word」と見なす.

3.1.3. pairs

記載例

.. index::
   pairs: word; key1; key2; key3; ...; keyN

以下の記述と同値

.. index::
   pair: word; key1
   pair: word; key2
   pair: word; key3
   …
   pair: word; keyN

どのような状況で役に立つのかは失念.

3.1.4. 下拵え

process_index_entryに拡張性を持たせて、indextypesのカスタムができるようにする.

3.2. かな文字情報の補完

かな文字情報の登録の手間を減らす方法

3.2.1. 平仮名で始まる

必要性

  • 対処しなくてもいいかもしれないけど「お弁当」のパターンでの前後の並び次第.

3.2.2. カタカナで始まる

必要性

  • 文字コードの関係で直観的な並び順にはならないので対処した方がいいかもしれない.

方法

  • 決まったコード領域に収まるので、それを判定してひらがなに変換することは可能なはず.

  • 処理対象にする文字数は設定可能とはしないけど、変数で意味付けはする.

3.2.3. 漢字で始まる

必要性

  • 茶筅などは使わないため表記文字列が長くなる場合がある.

  • その時の一致条件を緩和することでかな文字応報の登録の手間を減らしたい.

方法

  • 一定の文字数までの漢字を拾って照合する.

  • 最低文字数以下であれば最後のひらがな・カタカナも拾って読みのブレを避ける.

    • ひらがな・かたかな以外の文字は捨てるけど、終端か否かの判定材料は欲しい.

    • 現状の終端候補は「を」. 送り仮名としてはあり得ない文字を使う.

3.3. 索引ページ

3.3.1. see, seealso

「foobarを参照」の同じページ内での該当箇所へのリンクを付与する.

  • 「index-N」の利用条件はページ内ユニークのはずだから、これを使う.

  • IndexRack/generate_genidex_data内で取ると2回回す必要がある. できれば避けたい.

    • see/seealsoの対象をglossaryの限定すれば「main」で決め打ちできる.

    • ただし、一意性が現状は保証されていないので微妙.

    • 一意性を保証するには、Glossaryクラスでのmake_glossary_term関数前後のケアが必要.

3.3.2. 表記順

現状

  • 各文字のコード順の表示を土台として、大分類(のようなもの)だけを調整している.

ASISから派生する不都合

  • 例えば「かきくけこ…がぎぐげご…カキクケコ…ガギグゲゴ」というコード順が、一般的な辞書の表記順と異なる.

対処案

  • 「かたかな→ひらがな」変換についてはコード値の加減算で対応可能らしい.

  • 「濁音、撥音」の処理をどうするか(コード値の加減算、辞書)が要検討.

備考

  • 商用として展開するデータとして使わない限りは大きな不都合はないので、現状は対応予定なし.

  • 今後のモチベーション次第では手を付けるかもしれない.