[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.1 fmt: パラグラフに分かれたテキストを整形し直す

fmt は行を折り返したり、結合したりして、出力する各行が指定された文字数に納まるように調整する。 1 行のデフォルトはアスキー文字で 75 文字である。 (訳注: 日本語のテキストは、通常単語を空白で区切らないので、うまく整形できない。)

書式:

 
fmt [option]… [file]…

fmt は、指定された引数 file から (指定されていない場合は、標準入力から) テキストを読み込んで、標準出力に書き出す。

デフォルトでは、空行、単語間の空白、インデント (字下げ) は、出力でもそのまま維持される。 インデントの違う入力行が連続する場合は、行の結合は行われない。 タブは入力のときにスペースに展開され、出力でタブに戻される。

fmt は、できるだけ文の終わりで改行しようとする。 また、文の最初の単語の直後や、文の最後の単語の直前で改行するのは避けようとする。 「文の終わり (sentence break)」の定義は、パラグラフがそこで終わっているか、 あるいは、単語の末尾に ‘.?!’ のどれかが付き、さらにスペースが 2 個続くか、 行末が来ることである。後者の場合、ピリオドなどとスペース 2 個、あるいは行末の間にカッコや引用符が入っていてもよい。 TeX と同様、fmt は、どこで行を折り返すかを決める前に、パラグラフ全体を読み込む。 使用しているアルゴリズムは、Donald E. Knuth と Michael F. Plass が “Breaking Paragraphs Into Lines” で提示しているものに変更を加えたものである (‘Software—Practice & Experience 誌’、第 11 巻 第 11 号 (November 1981) 1119-1184 ページ)。

このプログラムでは以下のオプションが使用できる。参照: 共通オプション.

-c
--crown-margin

クラウンマージン・モード (Crown margin mode)。 パラグラフ中の最初の 2 行のインデントはそのまま維持し、(同一パラグラフの) それに続く各行の左の余白は 2 行目の左の余白に揃える。

(訳注: これは要するに、1 行目の行頭を字下げしたお馴染みのスタイルのパラグラフ表示である。 逆に 1 行目が左に張り出しているスタイルもありえる。なお、2 行目以降のインデントは、 ‘--crown-margin’ オプションによって揃えられるわけではなく、 入力テキストにおいてすでに揃っていなければならない。 さもないと、そもそも同一パラグラフの行と見なされない。)

-t
--tagged-paragraph

標識 (タグ) 付きパラグラフ・モード (Tagged paragraph mode)。 クラウンマージン・モードに似ているが、次の点が違う。パラグラフの最初の行と 2 番目の行のインデントが同じ場合、最初の行は 1 行からなるパラグラフとして扱われる。

-s
--split-only

行の分割のみを行う。短い行を結合して、長い行を作ることはしない。 その結果、サンプル・コードの行のような、すでに整形されたテキストをむやみに結合しないで済む。

-u
--uniform-spacing

空白の数を一定にする。すなわち、単語間の空白は 1 個に、文の間の空白は 2 個にする。

-width
-w width
--width=width

出力する各行を、長くても width 文字までにする (デフォルトは 75 文字。goal が指定されている場合は、goal プラス 10 文字)。

-g goal
--goal=goal

とりあえず、各行を goal 文字の長さにしてみようとする。 これは、デフォルトでは width より 7% 短い。

-p prefix
--prefix=prefix

prefix で始まる行のみを整形の対象にする (prefix の前にホワイトスペースがあってもよい)。prefix とそれに先行するホワイトスペースは、整形の際に取り除かれ、整形後に各出力行に付け直される。 このオプションの用途を一つ挙げると、プログラムのコメントのような行だけを整形し、 コードには手を加えないことが考えられる。

終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

This document was generated on June 7, 2022 using texi2html 1.82.