Next: pr invocation, Up: Formatting file contents [Contents][Index]
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 ページ)。
このプログラムでは以下のオプションが使用できる。参照: Common options.
クラウンマージン・モード (Crown margin mode) である。 パラグラフの最初の 2 行のインデントはそのまま踏襲し、それに続く各行の左の余白を 2 行目のインデントに揃える。
タグ付きパラグラフ・モード (Tagged paragraph mode)。 クラウンマージン・モードに似ているが、次の点が違う。 パラグラフの最初の行と二番目の行のインデントが同じ場合、最初の行は 1 行からなるパラグラフとして扱われる。
行の分割のみを行う。短い行を結合して、長い行を作ることはしない。 その結果、サンプル・コードの行のような、すでに整形されたテキストをむやみに結合しないで済む。
空白の数を一定にする。すなわち、単語間の空白は 1 個に、文の間の空白は 2 個にする。
出力する各行を、長くても width 文字までにする (デフォルトは 75 文字。goal が指定されている場合は、goal プラス 10 文字)。
とりあえず、各行を goal 文字の長さにしてみようとする。 これは、デフォルトでは width より 7% 短い。
prefix で始まる行のみを整形の対象にする (prefix の前にホワイトスペースがあってもよい)。prefix とそれに先行するホワイトスペースは、整形の際に取り除かれ、整形後に各出力行に付け直される。 このオプションの用途を一つ挙げると、プログラムのコメントのような行だけを整形し、 コードには手を加えないことが考えられる。
終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。