PTX(1)

名前
ptx - 整列済み索引を作成する

書式
ptx [OPTION...] [FILE...] ptx [-G] [--traditional] [OPTION...] [IN-FILE [OUT-FILE]]

  Options:
[-frAORT] [-b FILE] [-g NUMBER] [-i FILE] [-o FILE] [-w NUMBER] [-F STRING] [-M STRING] [-S REGEXP] [-W REGEXP] [--auto-reference] [--break-file=FILE] [--flac-truncation=STRING] [--format={nroff,tex}] [--gap-size=NUMBER] [--ignore-case] [--ignore-file=FILE] [--macro-name=STRING] [--only-file=FILE] [--references] [--right-side-refs] [--sentence-regexp=REGEXP] [--word-regexp=REGEXP] [FILE...]

ptx [-C] [--copyright] [--help] [--version]

説明
GNU 拡張された ptx (デフォルト) は、与えられた FILE それぞれの整列済み索引 (permutated index) を標準出力に書く。 FILE が一つも与えられないと標準入力から読み込む。また FILE が `-' だった場合には、そのファイルには標準入力が用いられる。 結果は結合されるが、各 FILE はそれぞれ独自のコンテクストを持ち、 自動参照を使うときには別々に参照される。 [訳注: 参照 (reference) とは、キーワードの現れるファイル名と行数の表示。] --traditional モードを使うと、 ptx は入力を IN-FILE から読み、 OUT-FILE に書く。後者が省略されると標準出力に書く。 デフォルトの出力フォーマットは、 キーワードをセンターに、そしてコンテクストがあれば左または右に書く。 --traditional モードでは --format-nroff が用いられる。

オプション

-b FILE, --break-file=FILE
    単語に含むことのできない文字を FILE から取得する (このファイルは break file と呼ばれる)。 デフォルトのモードでは、 FILE にある全ての文字が (改行文字も含めて) 考慮される。 過去互換モードでは、空白・タブ・改行の各文字は、常に FILE からは捨てられる。

-f, --ignore-case
    文字列をソートするとき英大文字小文字を無視する。

-g NUMBER, --gap-size=NUMBER
    フィールド間の空白の最低数を NUMBER に設定する (デフォルトは 3)。

-i FILE, --ignore-file=FILE
    無視するキーワードのリストを FILE から取得する (このファイルは ignore file と呼ばれる。デフォルトは /usr/local/lib/eign)。 各行には単語を一つだけ指定する。 ignore file にある単語は only file にある単語を上書きする。

-o FILE, --only-file=FILE
    キーワードのリストを FILE から取得する (このファイルは only file と呼ばれる)。インデックスを生成するとき、 このリストにない単語は無視する。各行には単語を一つだけ指定する。

-r, --references
    各行の前にコンテクストを指示する文字列 (行頭の単語) を付ける。 ptx は参照をコンテクストから削除しようとし、 コンテクストが改行で終わる場合にはこれは常に成功する。 このオプションを -S と共に用いたり (これはデフォルト)、 --traditional モードを用いると、参照は常にコンテクストから削除される。

-w NUMBER, --width=NUMBER
    出力行を NUMBER 桁を越えないように切り捨てる。 --right-side-refs の分は含まれないので注意。これを用いた場合は指定桁を越えることがある。

-A, --auto-reference
    各行の前にファイル名 (標準入力から読み込んだ場合は空文字列)、 行番号、コロンを出力する。 --references より優先する。

-F STRING, --flac-truncation=STRING
    --width によって行を切り捨てるときや、コンテクストが行区切りを越えて続く場合に STRING (デフォルトは `\') を出力する。 STRING 中では、(C プログラムで使うような) バックスラッシュを用いたエスケープシーケンスの多くも認識され、 適切な文字に変換される。

-M STRING, --macro-name=STRING
    nroff や TeX 形式で出力するときに、 STRING をマクロ名に使う (デフォルトは `.xx')。

-O, --format=nroff
    出力を nroff 形式にする。 印字できない文字はスペースに置換され、クォート文字は二重にして 正しく処理できるようにする。各行のフォーマットは以下の通り:

     .xx "TAIL" "BEFORE" "KEYWORD_AND_AFTER" "HEAD" "REF"

-R, --right-side-refs
    --references と似ているが、参照を右に出力する。

-S REGEXP, --sentence-regexp=REGEXP
    REGEXP を行末または文末の評価に用いる。 GNU モードで --references オプションが指定されていない場合のデフォルトは以下:

        [.?!][]\"')}]*\\($\\|\t\\|  \\)[ \t\n]*

    --traditional モードや、 GNU モードで --references オプションが指定されている場合のデフォルトは以下:

        \n

    -F と同様、バックスラッシュを用いたシーケンスも認識・変換される。

-T, --format=tex
    出力を TeX 形式にする。 印字できない文字はスペースに置換し、 いくつかの特殊文字 (`$', `%', `&', `#', `_' など) をバックスラッシュでプロテクトする。 バックスラッシュは `\backslash{}' に、 アクセント記号は `^\{ }' に、 チルダは `~\{ }' に置換し、 その他の音韻記号も可能な限り最も適切な TeX シーケンスに変換する。 各行のフォーマットは以下の通り:

        \xx {TAIL}{BEFORE}{KEYWORD}{AFTER}{HEAD}{REF}

-W REGEXP, --word-regexp=REGEXP
    REGEXP にマッチする単語をキーワードにする。 --break-file に指定されている単語も出力する。 GNU モードでのデフォルトは:

        \w+

    --traditional モードでのデフォルトは

        [^ \t\n]+

    REGEXP が空の場合はデフォルトを用いる。 -F と同じく、バックスラッシュを用いたシーケンスも認識・変換される。

-C, --copyright
    標準出力に短い copyright メッセージを出力して正常終了する。

--help
    標準出力に使用方法のメッセージを出力して正常終了する。

--version
    標準出力にバージョン情報を出力して正常終了する。

例
分量が多くなるので、完全な例はここには示していない。

  プレインテキスト
ptx の著者である Francois Pinard は、私の出したメールを ptx に通し、以下の返事を送ってくれた (*** は man ページに収めるために手で行った切り捨てを示す)。

>>    /I've had a look at the source,   and I still   ***
>>    /or what is a permutated index,   and what it   ***
> ptx merely produces a sorted list of the vocabulary you
> used, with some context for each, so I can study your
> writing style, for example.  Whenever you use the word
> "and", it is preceded by a comma :-).
[ptx は君の使ったボキャブラリをソートしてリストを作り、
 前後のコンテクストと共に示してくれるんだ。これを見ると、
 例えば君の書き方のクセがわかるわけさ。君が "and" って
 いう単語を使う前には必ずコンマを入れる、とかね :-)]

  bang パス
news へのポストや email メッセージに対して grep を行い、 bang パスを取得してみよう。例えば:

    lightside~% grep posts "^Path: " |cut -b 7- > paths.txt

すると paths.txt の内容は以下のようになるだろう。

    lightside!host2!host3!host4!host5!news
    lightside!host2!host3!host4!host6!news
    lightside!host7!host8!host9|host10|host4|host5!news
    lightside!host4!host5!news
    lightside!host11!news

これに正規表現を正しくエスケープして ptx を用いてみよう。

    lightside~% ptx --sentence-regexp="\n" \
                    --word-regexp="[^\!]+."

するとポストの経路の解析に適した出力が生成されるだろう。 行数が、ここに示した 5 行よりもずっと多くなると、とても便利になるだろう。

移植性
--traditional を指定すると、 System V の ptx と互換になる。 GNU ptx は行幅をよりうまく使えるのだが、この点も System V の出力に時々現れる異常をまねしようと試みる。 --traditioanl モードとの他の相違点は以下の通り:

    • 説明 にあるように、引数の取り方が変わる。

    • 指定できるオプションが -b, -f, -g, -i, -o, -r, -t, -w だけになる。

    • デフォルトの出力形式が --format=nroff になる。

    • --width で行切り捨てを行うとき、参照の幅を考慮しなくなる。

    • 8 ビット文字とチルダ (`~') をはねる。 いくつかの制御文字もはねる。

    • 入力行の 200 文字以降を黙って切り捨てる。

    • ignore file と only file の両方を同時に指定できない。

    • オプションに記述したように、 いくつかのオプションのデフォルトが変わる。

注意
プログラムのバグについては bug-textutils@gnu.org に報告してください。
man ページは Ragnar Hojland Espinosa <ragnar@ragnar-hojland.com> が作成しました。