[前へ] [次へ] [目次]


appendix のソースデータの書き方

この章では、appendix のソースデータの書き方を説明します。 ここで、「ソースデータ」と言っているのは、ebappendix が読み込む テキスト形式で書かれたデータのことです。

appendix を生成するためには、次に挙げるソースデータファイルが必要です。 これらのファイルをすべて、同じディレクトリ上に用意するようにします。

catalog.app または catalogs.app
appendix には必ず、catalog または catalogs という 名前のファイルが必要です。 catalog.app, catalogs.app はその生成元となる ファイルです。 appendix に収録されている 副本 (subbook) (詳しくは catalog(s).app の書き方」 を参照) の一覧を記します。
副本.app
appendix が収録している副本それぞれに対して、一つずつ用意する必要が あります (副本 の部分は、実際は個々の副本の名前になります)。 appendix のメインデータである、本文の区切りコードや外字の代替文字列は、 このファイルに記します。

catalog(s).app とは

CD-ROM 書籍と同様に、appendix パッケージにも必ず catalog もしくは catalogs という名前のファイルのどちらか一方が 必要です。 catalog.app, catalogs.app ファイルは、その 生成元となります。

ebappendix コマンドに appendix を生成させる際には、 catalog.appcatalogs.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 を用意する必要があります。 副本 の部分は、実際には個々の副本の使用する ディレクトリ名になります。

たとえば、前節の例では、書籍が ejdicthowto というディレクトリ名を持った副本を持っていました。 この場合、用意するファイルは ejdict.apphowto.app になります。

副本.app ファイルは appendix のメインデータである、 本文の区切りコードや外字の代替文字列を収録した appendixfuroku といったファイルの生成元になります。 (appendix を電子ブック形式で生成すると appendix、EPWING 形式 で生成すると furoku というファイル名になります。)

副本.app の文法

各副本のソースデータを記したファイル「副本.app」 の中では、空行、および空白以外の最初の文字がハッシュ記号 (#) である行は無視されます。

他の行はすべて、単独指示子 (single directive)複合指示子 (group directive) のいずれかでなくてはなりません。 単独指示子と複合指示子は、どのような順序で定義しても差し支えありません。

単独指示子とは、1 行で完結する指示子です。 単独指示子の一般形は次の通りです。

指示子の名前    指示子の値

以下の例では、stop-code が指示子の名前、 0x1f09 0x0001 がその値です。

stop-code          0x1f09 0x0001

指示子名の大文字と小文字は区別されますので、stop-codeStop-Code と書くことはできません。 指示子の名前と値の区切りには、空白かタブを用います。 連続した空白とタブが、行頭および行末にあった場合、それらは無視されます。

複合指示子とは、記述が設定ファイル内の複数行に渡る指示子です。 複合指示子の一般形は次の通りです。

begin 複合指示子の名前
    副指示子の名前    副指示子の値
             : 
             : (繰り返し)
             : 
end

キーワード begin が、複合指示子の開始を表します。 begin は後ろに 複合指示子の名前 を引数として 取ります。 begin複合指示子の名前 は空白かタブで区切り、 両方とも同じ行の中に置きます。 キーワード end は、複合指示子の終了を表します。 end は、単独で 1 行にして置きます。

今のところ 副本.app で使用できる複合指示子の名前は、 narrowwide の 2 つだけです。 それぞれの 副指示子 は、beginend の行の間に置きます。 副指示子に関する記述の一般的な規則は、単独指示子と変わりません (たとえば、副指示子の名前副指示子の値 は空白か タブで区切ることなど)。

以下は、 narrow 複合指示子の記述例です。

begin narrow
    range-start     0xa121
    range-end       0xa123
    0xa121          [→参照]
    0xa122          [→音声]
    0xa123          [→図解]
end

副本.app の単独指示子

単独指示子には次のようなものがあります。

character-code
appendix の文字コードを指定します。 文字コードは必ず、CD-ROM 書籍に合わせるようにします。 CD-ROM 書籍の文字コードは、ebinfo コマンドの出力を見れば確認 できます。 CD-ROM 書籍が ISO 8859-1 で書かれている場合は、指示子の値として ISO8859-1 を指定します。 それ以外の場合は、JISX0208 を指定して下さい。
character-code          JISX0208
この指示子は、副本.app ファイル内で必ず一回定義 されなければなりません。 定義しなかったり、二度以上定義するとエラーになります。
stop-code
副本の本文の区切りコードを指定します。 指示子の値は、区切りコードの文字番号を 2 つ書き並べたものになります。
stop-code          0x1f09 0x0001
文字番号は、0x ないし 0X に続けて 16進数 4 桁 で記します。 ただし、1つ目の文字番号は、0x1f090x1f41 で なければなりません。 それ以外だとエラーになります。 ebstopcode コマンドを使うと、副本に適切な区切りコードを 特定することができます (詳しくは ebstopcode コマンドのマニュアル を参照の こと)。 この指示子は定義しなくても構いませんが、二度以上定義するとエラーになります。

副本.app の複合指示子

narrow および wide 複合指示子は、それぞれ副本に 対する半角外字および全角外字に対する代替文字列を定義するために用います。 ただし、副本が外字を定義していても、代替文字列を利用する必要がなければ、 narrow, wide 複合指示子を記述する必要はありません。

narrowwide 複合指示子内で定義できる副指示子は、 まったく同じです。 副指示子には次のようなものがあります。

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
hhhh は、4 桁 の 16進数です。 文字番号 0xhhhh の全角外字ないし半角外字に対して、 代替文字列を定義します。
    0xa121          [名]
appendix が ISO 8859-1 で書かれている場合は、代替文字列も ISO 8859-1 で定義します。 それ以外の場合は、代替文字列を日本語 EUC で定義します。 いずれも、代替文字列は最長で 31 バイトまでで、それを超えるとエラーに なります。 range-start, range-end で指定した定義範囲内の 外字すべてについて、代替文字列を設定する必要はありません。 ただし、同一の複合指示子内で、一つの文字番号の外字に対して代替文字列を 定義できるのは一回までです。 複数回設定しようとすると、エラーになります。 また、範囲外の文字番号の代替文字列を定義しようとしても、やはりエラーに なります。 CD-ROM 書籍がどのような外字を定義しているのかは、ebfont コマンド で調べることができます (詳しくは ebfont コマンドのマニュアル を参照のこと)。

[前へ] [次へ] [目次]