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
出力をカスタマイズできる様々なオプションが提供されます。
{text.multicolumn
}
文字列のリストstrsの要素を、現在の出力ポートに複数カラム形式に揃えて表示します。
要素中にタブや改行文字があってはなりません。手続きはタブや改行文字を特別扱いしないので、
もし含まれていた場合は出力が乱れます。
カラムの幅は、strs中の文字列のうち最も長いものか、minimum-widthの どちらか大きい方で決まります。minimum-widthのデフォルトは8です。
カラムの幅が決まったら、width文字の幅にいくつのカラムが収まるかが計算されます。
widthのデフォルトは80です。但しmax-columnsが与えられて#f
でなければ、
カラム数はmax-columnを越えません。
order引数はシンボルcolumn
かrow
のどちらかです。
column
の場合(デフォルト)、要素はカラムファースト、つまり最初のカラムを
上から下へ、それから第二カラムを上から下へ、という順に並べられます。
row
の場合はロウファースト、つまり最初の行の左から右、次の行の左から右、
という順に並べられます。
indent引数は、与えられたなら非負の正確な整数でなければなりません。 これが1以上の場合、その数の空白文字が各行の先頭に追加されます。 widthで指定される幅はこのインデントを含んだものとなります。つまり テキストの表示領域の幅はこの引数の分だけ狭くなります。
{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->string
やwrite-tree
に渡した結果は同じになります。