この章では、appendix のソースデータの書き方を説明します。
ここで、「ソースデータ」と言っているのは、ebappendix
が読み込む
テキスト形式で書かれたデータのことです。
appendix を生成するためには、次に挙げるソースデータファイルが必要です。 これらのファイルをすべて、同じディレクトリ上に用意するようにします。
catalog.app
または catalogs.app
catalog
または catalogs
という
名前のファイルが必要です。
catalog.app
, catalogs.app
はその生成元となる
ファイルです。
appendix に収録されている 副本 (subbook)
(詳しくは
「catalog(s).app
の書き方」
を参照) の一覧を記します。
.app
catalog(s).app
とは
CD-ROM 書籍と同様に、appendix パッケージにも必ず catalog
もしくは catalogs
という名前のファイルのどちらか一方が
必要です。
catalog.app
, catalogs.app
ファイルは、その
生成元となります。
ebappendix
コマンドに appendix を生成させる際には、
catalog.app
か catalogs.app
のどちらかを必ず
用意しておく必要があります。
ebappendix
の標準の動作では、catalog.app
という
ファイル名にしておくと、生成するファイル名も catalog
に
なります。
また、appendix 全体のディレクトリ構造が、電子ブックに似た形式になります。
反対に、catalogs.app
というファイル名にしておくと、生成する
ファイル名も catalogs
になります。
また、appendix 全体のディレクトリ構造が、EPWING に似た形式になります。
ただし、EPWING の書籍に対して電子ブック形式の appendix を使用しても、 動作そのものには支障がありません。 逆も同様です。
catalog(s).app
の書き方
catalog(s).app
には、書籍に収録されている副本のディレクトリ名を
1 行に 1 つずつ書き並べます。
副本のディレクトリ名は、ebinfo
コマンドを使うと容易に分かります。
以下は、ebinfo
の実行例です。
% ebinfo /mnt/cdrom ディスクの形式: EB/EBG/EBXA/EBXA-C/S-EBXA 文字コード: JIS X 0208 副本の数: 2 副本 1: 題名: 新英和辞典(第三版) ディレクトリ: ejdict 検索方式: 前方一致 後方一致 条件 メニュー フォントの大きさ: 16 24 30 48 半角フォントの文字: 0xa121 -- 0xa24e 全角フォントの文字: 0xa321 -- 0xa27e 副本 2: 題名: この書籍の使い方 ディレクトリ: howto 検索方式: 前方一致 後方一致 条件 メニュー フォントの大きさ: 16 24 30 48 半角フォントの文字: 全角フォントの文字: 0xa321 -- 0xa27e
この辞書用の appendix を作成する場合、catalog(s).app
には次の
ように記します。
ejdict howto
(ebinfo
コマンドに関しての詳細は、
ebinfo コマンドのマニュアル を参照のこと。)
ディレクトリ名の大文字、小文字は、同じものとして扱われます。 また、空行およびおよび空白以外の最初の文字がハッシュ記号 (#) である行は無視されます。
必ずもとの書籍の副本すべてを、同じ順序で catalog(s).app
に
記すようにして下さい。
.app
とは
appendix が収録している副本それぞれに対して、ソースデータファイル
副本.app
を用意する必要があります。
副本 の部分は、実際には個々の副本の使用する
ディレクトリ名になります。
たとえば、前節の例では、書籍が ejdict
と howto
というディレクトリ名を持った副本を持っていました。
この場合、用意するファイルは ejdict.app
と howto.app
になります。
副本.app
ファイルは appendix のメインデータである、
本文の区切りコードや外字の代替文字列を収録した appendix
や
furoku
といったファイルの生成元になります。
(appendix を電子ブック形式で生成すると appendix
、EPWING 形式
で生成すると furoku
というファイル名になります。)
.app
の文法
各副本のソースデータを記したファイル「副本.app
」
の中では、空行、および空白以外の最初の文字がハッシュ記号 (#)
である行は無視されます。
他の行はすべて、単独指示子 (single directive) か 複合指示子 (group directive) のいずれかでなくてはなりません。 単独指示子と複合指示子は、どのような順序で定義しても差し支えありません。
単独指示子とは、1 行で完結する指示子です。 単独指示子の一般形は次の通りです。
指示子の名前 指示子の値
以下の例では、stop-code
が指示子の名前、
0x1f09 0x0001 がその値です。
stop-code 0x1f09 0x0001
指示子名の大文字と小文字は区別されますので、stop-code を Stop-Code と書くことはできません。 指示子の名前と値の区切りには、空白かタブを用います。 連続した空白とタブが、行頭および行末にあった場合、それらは無視されます。
複合指示子とは、記述が設定ファイル内の複数行に渡る指示子です。 複合指示子の一般形は次の通りです。
begin 複合指示子の名前 副指示子の名前 副指示子の値 : : (繰り返し) : end
キーワード begin
が、複合指示子の開始を表します。
begin
は後ろに 複合指示子の名前 を引数として
取ります。
begin
と 複合指示子の名前 は空白かタブで区切り、
両方とも同じ行の中に置きます。
キーワード end
は、複合指示子の終了を表します。
end
は、単独で 1 行にして置きます。
今のところ 副本.app
で使用できる複合指示子の名前は、
narrow
と wide
の 2 つだけです。
それぞれの 副指示子 は、begin
と end
の行の間に置きます。
副指示子に関する記述の一般的な規則は、単独指示子と変わりません
(たとえば、副指示子の名前と 副指示子の値 は空白か
タブで区切ることなど)。
以下は、 narrow
複合指示子の記述例です。
begin narrow range-start 0xa121 range-end 0xa123 0xa121 [→参照] 0xa122 [→音声] 0xa123 [→図解] end
.app
の単独指示子単独指示子には次のようなものがあります。
character-code
ebinfo
コマンドの出力を見れば確認
できます。
CD-ROM 書籍が ISO 8859-1 で書かれている場合は、指示子の値として
ISO8859-1 を指定します。
それ以外の場合は、JISX0208 を指定して下さい。
この指示子は、副本character-code JISX0208
.app
ファイル内で必ず一回定義
されなければなりません。
定義しなかったり、二度以上定義するとエラーになります。
stop-code
文字番号は、0x ないし 0X に続けて 16進数 4 桁 で記します。 ただし、1つ目の文字番号は、0x1f09 か 0x1f41 で なければなりません。 それ以外だとエラーになります。stop-code 0x1f09 0x0001
ebstopcode
コマンドを使うと、副本に適切な区切りコードを
特定することができます (詳しくは
ebstopcode コマンドのマニュアル を参照の
こと)。
この指示子は定義しなくても構いませんが、二度以上定義するとエラーになります。
.app
の複合指示子
narrow
および wide
複合指示子は、それぞれ副本に
対する半角外字および全角外字に対する代替文字列を定義するために用います。
ただし、副本が外字を定義していても、代替文字列を利用する必要がなければ、
narrow
, wide
複合指示子を記述する必要はありません。
narrow
と wide
複合指示子内で定義できる副指示子は、
まったく同じです。
副指示子には次のようなものがあります。
range-start
range-start
で、終了位置の文字番号を
range-end
で指定します。
文字番号は、0x ないし 0X に続けて 16進数 4 桁で
記します。
以下は記述例です。
定義範囲は、range-start 0xa121 range-end 0xa123
ebinfo
コマンドの出力結果の
「半角フォントの文字 (narrow font characters)」
「全角フォントの文字 (wide font characters)」
で記された範囲と一致させるようにして下さい。
narrow
および wide
複合指示子内では、
必ず一回ずつ range-start
および range-end
を
定義しなければなりません。
定義しなかったり、二度以上定義したりするとエラーになります。
0xhhhh
0x
hhhh の全角外字ないし半角外字に対して、
代替文字列を定義します。
appendix が ISO 8859-1 で書かれている場合は、代替文字列も ISO 8859-1 で定義します。 それ以外の場合は、代替文字列を日本語 EUC で定義します。 いずれも、代替文字列は最長で 31 バイトまでで、それを超えるとエラーに なります。0xa121 [名]
range-start
, range-end
で指定した定義範囲内の
外字すべてについて、代替文字列を設定する必要はありません。
ただし、同一の複合指示子内で、一つの文字番号の外字に対して代替文字列を
定義できるのは一回までです。
複数回設定しようとすると、エラーになります。
また、範囲外の文字番号の代替文字列を定義しようとしても、やはりエラーに
なります。
CD-ROM 書籍がどのような外字を定義しているのかは、ebfont
コマンド
で調べることができます (詳しくは
ebfont コマンドのマニュアル を参照のこと)。