Locale::Po4a::TeX(3pm)

名前
Locale::Po4a::TeX - PO ファイルと TeX ドキュメントや派生物の変換

説明
po4a (PO for anything) プロジェクトは、gettext ツールが想定していないドキュメントのような領域で翻訳をしやすくすること (またより興味深いのは、翻訳文の保守がしやすくなること) を目標にしています。

Locale::Po4a::TeX は、TeX ドキュメントをほかの [自然] 言語へ翻訳するのを助けるモジュールです。TeX を元にしたドキュメント用モジュールを作成するベースにもなります。

Users should probably use the LaTeX module, which inherits from the TeX module and contains the definitions of common LaTeX commands.

PO4A::TEX での翻訳
このモジュールは、一般的な TeX ドキュメントを直接扱えます。ドキュメントを小さなブロック (段落、verbatim ブロック、タイトルやインデックスのような同等の小さな部位) に分割します。

振る舞いをカスタマイズできるような、(次節で説明する) オプションがあります。あなたのドキュメントフォーマットに合わない場合は、フォーマットの詳細に合わせて、迷わず派生し作成してください。その方法は、以下にある「派生モジュールの作成」節を参照してください。

このモジュールは、TeX ファイル中の "% po4a:" で始まる行でもカスタマイズできます。このカスタマイズについては、インラインカスタマイズ 節で説明します。

このモジュールで使用できるオプション
以下は、このモジュール固有のオプションです:

debug
    このモジュールの内部メカニズムのデバッグ機能を有効にします。どの部分でデバッグできるか確認するには、ソースを利用してください。

no_wrap
    改行を行うべきでない環境のコンマ区切りリストです。

    verbatim 環境と no_wrap 環境には違いがあることに注意してください。verbatim ブロックを解析する、コマンドやコメントはありません。

    この環境がすでに登録されていない場合、po4a は、この環境がパラメータを何も取らないとみなすでしょう。

exclude_include
    \input や \include で取り込むべきでないファイルのコロン区切りリストです。

definitions
    インラインカスタマイズ 節で定義されるような、po4a 用の定義を含むファイル名です。翻訳されるドキュメントに定義を置けない場合、このオプションを利用できます。

verbatim
    verbatim として扱うべき環境のコンマ区切りリストです。

    この環境がすでに登録されていない場合、po4a は、この環境がパラメータを何も取らないとみなすでしょう。

以上のオプションは、デフォルトのリストで定義されているコマンドの振る舞いを上書きできます。

インラインカスタマイズ
TeX モジュールは、% po4a: で始まる行によりカスタマイズできます。この行はパーサにコマンドとして解釈されます。以下のコマンドを認識します:

% po4a: command コマンド1 alias コマンド2
    コマンド1 コマンドの引数が、コマンド2 コマンドの引数であるかのように扱うことを示します。

% po4a: command コマンド1 パラメータ
    コマンド1 コマンドのパラメータの詳細を記述できます。この情報を、引数の数と型をチェックするのに使用します。

    コマンド1 コマンドの前に置けます。

    アスタリスク (*)
        po4a は (段落の先頭や末尾にある場合) 段落からこのコマンドを抽出します。ですから、翻訳者は、翻訳可能であるとマークされたパラメータを翻訳するべきです。

    プラス (+)
        アスタリスクのように、コマンドは、ブロックの端に現れる場合に抽出しますが、パラメータを分割して翻訳することはしません。翻訳者はこのパラメータすべてを結合したコマンドを翻訳しなければなりません。このため、文脈を保持し、複数の意味 (と翻訳) を持つ、短い単語のパラメータを持つコマンドに対して便利です。

        注意: この場合、翻訳可能なパラメータを指定する必要はありませんが、po4a がパラメータの型と数を知らねばなりません。

    マイナス (-)
        この場合、コマンドは、いずれのブロックからも抽出しません。しかし、ブロック内に一つしかないときだけ、翻訳可能とマークしたパラメータを翻訳者に提示します。これは font コマンドに対して便利です。こういったコマンドは、(文脈を保持するため) 一般的に段落から切り離すべきではありませんが、文字列全体がそういったコマンドになっている場合は、切り離さずにいて、翻訳者をいらつかせる理由はありません。

    parameters 引数は、[] (任意オプション) のセットか、 {} (必須オプション) のセットです。 括弧の間にアンダースコア (_) を配置し、パラメータを訳さなければならない ことを指定できます。以下のようになります:
     % po4a: command *chapter [_]{_}

    これは、chapter コマンドには二つのパラメータがあり、両方とも翻訳の必要が あることを示します: オプション (短いタイトル) と必須のもの。 href コマンドには二つの必須パラメータがあり、URL (第 1 パラメータ) を 訳したくなく、さらに、(文の中で翻訳者がリンクを移動できるように) このコマンドを段落から分離したくない場合、以下のようになります:
     % po4a: command -href {}{_}

    この場合、翻訳するべき引数を示す情報は、この href コマンドだけからなる段落の場合にのみ使用されます。

% po4a: environment env parameters
    This permits to define the parameters accepted by the env environment. This information is later used to check the number of arguments of the \begin command, and permit to specify which one must be translated. The syntax of the parameters argument is the same as described for the others commands. The first parameter of the \begin command is the name of the environment. This parameter must not be specified in the list of parameters. Here are some examples:
     % po4a: environment multicols {}
     % po4a: environment equation

    command と同様に、env の前にプラス (+) を付けると、その \begin コマンドはすべての引数と一緒に翻訳されることを表します。

% po4a: separator env "regex"
    与えた正規表現により環境が分割されることを示します。

    正規表現は、引用符で区切られます。後方参照は作られません。グループが必要な場合は (?:) を使用してください。また、エスケープする必要があるでしょう。

    例えば、LaTeX モジュールは "(?:&|\\\\)" という正規表現を、表の各セル (行を '\\' で区切り、セルを '&' で区切る) を別個に翻訳するために使用します。

    環境の概念は PO ファイルに表示される型に使われます。これは title コマンドの先頭の必須引数を "\\\\" で分割するのに使用できます。この場合、環境は title{#1} になります。

% po4a: verbatim environment env
    env が verbatim 環境であることを示します。この環境では、コメントとコマンドは無視されます。

    この環境がすでに登録されていない場合、po4a は、この環境がパラメータを何も取らないとみなすでしょう。

派生モジュールの作成

pre_trans
post_trans
translate
    Transtractor の translate 関数のラッパーで、前処理や後処理のフィルタになります。

    段落のコメントを、その段落の最初の翻訳文字列の PO コメントに挿入します。

get_leading_command($buffer)
    この関数は以下のものを返します:

    コマンド名
        与えられたバッファの先頭にコマンドが見つからない場合、この文字列は空になります。分割できるコマンドのみであることが考えられます。%separated_command ハッシュには、これらのコマンドのリストが含まれています。

    派生  派生が使われるかを示します。例えば、番号付けされるべきではないことを指定するのに、アスタリスク (*) を section コマンドの最後に追加できます。この場合、フィールドは "*" を含むでしょう。派生がなければ、このフィールドは空文字列となります。

    タプル (引数の型と引数) の配列
        引数の型は '{' (必須引数) や '[' (オプション引数) のどちらでも可能です。

    残りのバッファ
        先頭からコマンドやその引数を取り去った後の、バッファの残りです。コマンドがなければ、元のバッファに手をつけず、このフィールドに返ります。

get_trailing_command($buffer)
    get_leading_command と同じですが、バッファの後ろからコマンドを取ります。

translate_buffer
    前後に付けられた (分割して翻訳すべき) コマンドで区切られたバッファを、再帰的に翻訳します。

    現在の環境の %translate_buffer_env で関数が定義されると、translate_buffer() に代えてこの関数がバッファの翻訳に使用されます。

read
    Overloads Transtractor's read().

read_file
    再帰的にファイルを読み込み、@exclude_include 配列にリストされていない取り込みファイルを追加します。取り込みファイルを、kpsewhich コマンドを使用して、Kpathsea ライブラリから探します。

    ファイル取り込み部を除いて、Transtractor の read からカット & ペーストしたものです。

parse_definition_file
    po4a ディレクティブがあるファイルのパース用サブルーチンです (新しいコマンドを定義します)。

parse_definition_line
    "% po4a: " の形の定義行をパースします。

    詳細は、インラインカスタマイズ 節を参照してください。

is_closed
docheader

派生パーサ作成時に使用する内部関数
コマンド関数と環境関数は、($self オブジェクトに加えて) 以下の引数を取ります:

コマンド名
派生
(型、引数の) タプルの配列
現在の環境

先頭の 3 つの引数は get_leading_command や get_trailing_command で抽出されます。

コマンド関数や環境関数は、引数や新しい環境でのコマンドの翻訳を返します。

環境関数は \begin コマンドが見つかると呼ばれます。これらは \begin コマンドとその引数により呼ばれます。

TeX モジュールは一つのコマンド関数と一つの環境関数しか提案しません。generic_command と generic_environment です。

generic_command は、register_generic_command や TeX ファイルへの追加定義で指定した情報を使用します:
 % po4a: command command1 parameters

generic_environment は、register_generic_environment や TeX ファイルへの追加定義で指定した情報を使用します:
 % po4a: environment env parameters

どちらの関数も、翻訳可能であると ('_' で) 指定したパラメータのみを翻訳します。generic_environment は環境スタックに環境名を追加し、generic_command は、({#7} や [#2] のような) パラメータの識別子が続くコマンド名を追加します。

このモジュールの状態
このモジュールはもっとテストが必要です。

本と Python ドキュメントでテストされました。

TODO リスト

新しいコマンドの自動検出
    TeX モジュールは、newcommand の引数をパースし、引数の数や型、翻訳するべきか否かを推測できるはずです。

環境セパレータの翻訳
    \item が環境セパレータとして使われている場合、item の引数は続く文字列にアタッチされます。

いくつかのコマンドを環境スタックに追加するべき
    これらのコマンドは組で指定するべきです。verbatim 環境の開始または終了のコマンドを指定できます。

その他 ソースの様々なほかの場所に TODO タグが付いています。

既知のバグ
ソースの様々な場所に FIXME タグが付いています。

関連項目
Locale::Po4a::LaTeX(3pm), Locale::Po4a::TransTractor(3pm), po4a(7)

著者
 Nicolas François <nicolas.francois@centraliens.net>

訳者
 倉澤 望 <nabetaro@debian.or.jp>
 Debian JP Documentation ML <debian-doc@debian.or.jp>

著作権とライセンス
Copyright © 2004, 2005 Nicolas FRANÇOIS <nicolas.francois@centraliens.net>.

本プログラムはフリーソフトウェアです。GPL の条項に基づき再頒布と変更を行うことができます (COPYING ファイルを参照してください)。