For Development HEAD DRAFTSearch (procedure/syntax/module):

12.73 text.multicolumn - 複数列フォーマット

Module: text.multicolumn

このモジュールは、単語のリストを複数カラム形式に揃えてフォーマットする手段を提供します。 lsコマンドの出力のようなものを想像してください。

(display-multicolumn
  (string-tokenize "The quick brown fox \
                    jumps over the lazy dog"))
 ⇒ prints
The     fox     the
quick   jumps   lazy
brown   over    dog

出力をカスタマイズできる様々なオプションが提供されます。

Function: display-multicolumn strs :key width minimum-width max-columns order indent

{text.multicolumn} 文字列のリストstrsの要素を、現在の出力ポートに複数カラム形式に揃えて表示します。 要素中にタブや改行文字があってはなりません。手続きはタブや改行文字を特別扱いしないので、 もし含まれていた場合は出力が乱れます。

カラムの幅は、strs中の文字列のうち最も長いものか、minimum-widthの どちらか大きい方で決まります。minimum-widthのデフォルトは8です。

カラムの幅が決まったら、width文字の幅にいくつのカラムが収まるかが計算されます。 widthのデフォルトは80です。但しmax-columnsが与えられて#fでなければ、 カラム数はmax-columnを越えません。

order引数はシンボルcolumnrowのどちらかです。 columnの場合(デフォルト)、要素はカラムファースト、つまり最初のカラムを 上から下へ、それから第二カラムを上から下へ、という順に並べられます。 rowの場合はロウファースト、つまり最初の行の左から右、次の行の左から右、 という順に並べられます。

indent引数は、与えられたなら非負の正確な整数でなければなりません。 これが1以上の場合、その数の空白文字が各行の先頭に追加されます。 widthで指定される幅はこのインデントを含んだものとなります。つまり テキストの表示領域の幅はこの引数の分だけ狭くなります。

Function: layout-multicolumn strs :key width minimum-width max-columns order

{text.multicolumn} この手続きはdisplay-multicolumnの下請けにあるもので、 テキストツリーのリストを返します (テキストツリーについては text.tree - 怠惰なテキスト構築参照)。 各テキストツリーが一行に相当します。改行文字は含まれません。 レイアウトを後から加工したい場合に便利です。

(layout-multicolumn
  (string-tokenize "The quick brown fox \
                    jumps over the lazy dog"))
 ⇒
(("The     " "fox     " "the")
 ("quick   " "jumps   " "lazy")
 ("brown   " "over    " "dog"))

註: テキストツリーの中身はバージョンによって異なるかもしれませんが、 tree->stringwrite-treeに渡した結果は同じになります。



For Development HEAD DRAFTSearch (procedure/syntax/module):
DRAFT