vine表組み書式について Rev 0.5 5-Mar-1999 Nobuhide Tsuda ■ 概要  本稿ではvineのソース文書での表組み書式について述べる. ▼ 設計方針  書式を設計するにあたっては以下の3項目を考慮した. (1) ソース文書の可読性に優れる (2) 柔軟な設定が出来る (3) スタイルセットを参照することで定型文書的なものにも対応する  (1) は (2) に優先する.CSV≪データを(半角)カンマで区切って並べる形式.図1.1参照.≫形式による書式を基本とすることでソース文書の読みやすさを最優先とした.基本的な機能のみを使用する標準的な形式の表はデータをカンマで区切って並べるだけなので,標準的な印字形式の表は簡単に記述することが出来る.セルの結合やアライメント指定などはスタイルの変更やソース文書へのコマンドの挿入機能で対処する.しかし,ソース文書の可読性を著しく低下させる場合は,そのような機能はサポートしない方針とした.つまり最大公約数的な要求の場合は簡潔で解りやすい記述ができ,高度な要求に対してはそのためのコマンドを記述すれば対応できるようになる. ##  フォントフェース,フォントサイズ,文字色,背景色,セルの結合,罫線ありなし,線種指定,ラウンド矩形,影付きなどが指定できる ▼ 制限事項  表の幅は段幅のみをサポートする.複数段幅や,段幅単位でない幅の表のサポートはファーストリリース以降にサポートする. ■ 書式 ##  表組み書式の基本はCSVによる記述を基本とする.単にデータのみを記述した場合デフォルトスタイルで設定されているスタイルにしたがってレイアウトされる.レイアウト結果は表1の様になる. ◆ 基本書式 ## column pos=bottom drawFrame topMargin=200 bottomMargin=100 caption="図1.1 表1.1のソース文書"  ## table caption="表1.1 基本書式による表"  header1, header2, header3, ...  data11, data12, data13, ...  data21, data22, data23, ...  ....., , ,  ## endtable ## endcolumn ## table pos=bottom caption="表1.1 基本書式による表" # bc=c0c0c0, bc=c0c0c0, bc=c0c0c0, bc=c0c0c0 header1, header2, header3, ... data11, data12, data13, ... data21, data22, data23, ... ....., , , ## endtable  もっとも基本的な表のソース文書は図1.1の様に,CSV形式のデータを“## table”と“## endtable”コマンドで囲むだけである.これをレイアウトすると表1.1のようになる.この様な標準的な形式であれば,データをカンマで区切って複数行並べるだけで表が記述出来る.CSV形式は可読性に富み,一般的に広く使用されているものなので,一般人でも習得が容易と考える.  データ記述部分では,行の先頭およびカンマの前後の半角空白,タブは無視される.カラムが上下に揃うようにするとソース文書が見やすくなる. ## また,通常の行頭記号は無視され,生の文字列とみなされる.  表1.1の上部1行はヘッダで,背景が薄いグレーになっている.罫線はヘッダ以外の部分だけ描画され,外枠は描画されていない.これは表のデフォルトスタイルで,これを変更することや自分で定義したスタイルを利用することが簡単に出来る. ## (次節以降を参照).  印字形式を一部変更する方法には以下の4種類がある. ・ スタイルダイアログによる指定 ・ ## table 行でのオプション指定 ・ 行頭コマンドによる指定 ・ セル内コマンドによる指定 ## スタイルの指定は ## table の後に style=スタイル名 の形式で指定する. ◆ スタイルダイアログ ##  表の背景色を変えたい,フォントフェースを変更したい場合など標準的な形式から少し変更したい場合は,レイアウトされた表をダブルクリックすることでスタイルプロパティを表示し(図2.1参照),GUIで形式を変更できる.スタイルは複数登録でき,1つのドキュメントに複数の形式の表を含めることができる.スタイルはスタイル名を持っているので,## table 行で style=スタイル名 という書式で表のスタイルを指定できる. ## column pos=bottom halign=center ┏━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ ┃ ┃ スタイル名:_____▼ ┌外枠罫線───┐┃ ┃ │ □ 上 □ 左 │┃ ┃ ヘッダ行数:___ │ □ 下 □ 右 │┃ ┃ │ 線幅:___ │┃ ┃ □ ヘッダ境界線 線幅:___ └───────┘┃ ┃┌ヘッダ───────────────────┐┃ ┃│ 文字色【 】 □ 横罫線【 】 ___ │┃ ┃│ □ 背景色【 】 □ 縦罫線【 】 ___ │┃ ┃└──────────────────────┘┃ ┃┌ボディ───────────────────┐┃ ┃│ 文字色【 】 □ 横罫線【 】 ___ │┃ ┃│ □ 背景色【 】 □ 縦罫線【 】 ___ │┃ ┃└──────────────────────┘┃ ┃┌フォント─────────────┐ ┃ ┃│ 和文:___▼ □ bold │ ┃ ┃│ 欧文:___▼ □ italic │ ┃ ┃│ 高さ:___ □ underline│ ┃ ┃└───────────────┘ ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━┛ 図2.1 表のスタイルダイアログ ## endcolumn  レイアウトされた表をダブルクリックすると図2.1のスタイルダイアログが開き,表のスタイル設定内容が表示される.アライメント,罫線の有無,フォントフェース,サイズなどの設定を確認,修正することができる.このダイアログでの変更は指定された表のみを変更するのではなく,表が持つスタイル名のスタイルを変更することを忘れてはならない.あるスタイル名の設定内容を変更した場合,そのスタイル名を持つすべての表の印字形式が変更される.特定の表の形式のみを変更したい場合は ## table 行でのオプション指定を行うか,新たに表スタイルを作成し,そのスタイル名を指定するようにする. ##  スタイル名は ## table 行の style= で指定される名前である(スタイル名指定が無い場合は“table”スタイルが選択される).指定されたスタイル名のスタイルにしたがって表がレイアウトされる. ▼ スタイルダイアログでの設定項目 ##  図2.1に表のスタイルダイアログを示す. ##  セルパディングは行の上下左右余白を指定する.  外枠罫線は上下左右別々に指定できる.線幅指定も可能である.幅0を指定した場合は最細線で外枠線が描画される. ##  外枠影付き(ちょっとマニアックか?)  ヘッダ境界線はヘッダとボディ部分の境界線である.線分を描画するかどうかと線幅の指定が出来る. ##  1行おきに網掛け,ヘッダ,ボディでの背景色指定の方が優先する  ソース文書の最初のn行をヘッダとみなし,その部分をボディとは異なる体裁にすることが出来る.その行数,ヘッダの文字色,背景色,罫線の有無とその線幅,セル内文字の水平垂直アライメントの指定が可能である.行数に0を指定した場合,行がヘッダと認識されることはない.  データ部分でヘッダ以外の部分をボディと呼ぶ.文字色,背景色,罫線の有無とその線幅,セル内文字の水平垂直アライメントの指定が可能である.  水平アライメントは“左寄せ”,“中央揃え”,“右寄せ”,“自動”のいずれかを選択する.“自動”の場合,文字列が数値ならば右寄せ,それ以外の場合は左寄せになる.  フォントはヘッダ,ボディともに共通である.このダイアログで表の一部の文字のフォントフェース名,サイズを変更することは出来ないが,語述する行コマンド,セル内コマンドを使えば,セル単位で文字をボールド,イタリック,アンダーライン指定することは可能である.  実際に表を作成し,スタイルダイアログで色々な設定を変更し,表の体裁がどう変わるかを確かめるとよい. ## newColumn ◆ ## table 行でのオプション指定  ## table 行では表3.1に示すレイアウト位置や背景色などの指定が可能である.このオプション指定はスタイルダイアログでの設定よりも優先する.スタイルをわざわざ作成するのが面倒な場合は,この方法により印字スタイルを指定できる. ## table pos=here caption="表3.1 ## table 行でのオプション" 書式, 機能 style=スタイル名, スタイル指定 pos={here|top|bottom}, 表位置 caption="キャプション", 表タイトル header=n, ソース文書でのヘッダ行数 drawFrame, 上下左右の外枠線描画 topFrame, 上部外枠線描画 bottomFrame, 下部外枠線描画 leftFrame, 左側外枠線描画 rightFrame, 右側外枠線描画 frameWidth=n, 外枠線幅指定(nは数値) headerBorder, ヘッダとボディの境界線を描画 headerBorderWidth=n, ヘッダ境界線幅指定(nは数値) sepChar=x, 区切り文字指定(xは文字) ## endtable ▼ スタイル名  表が参照するスタイルの名前を指定する.デフォルトのスタイル名は“table”である. ▼ 表位置  表をレイアウトする位置を指定する.“here”,“top”,“bottom”のいずれかを指定する.省略した場合は“here”とみなされる. ▼ 表タイトル  表のタイトル文字列を指定する.表タイトルは表の上部にレイアウトされる. ▼ ヘッダ行数  ソース文書でのヘッダ行数を指定する.指定された行数のソースは,スタイルのヘッダで設定された文字色,背景色等でレイアウトされる.デフォルトは1行である. ▼ 外枠線描画  外枠をびょうがするかどうかを指定する.“drawFrame”を指定した場合,上下左右すべてに外枠が描画される. ▼ ヘッダ境界線  ヘッダとボディの境界線の有無,その線幅を指定できる.“noHeaderBorder”または“-headerBorder”とすると境界線無しになる. ▼ セル区切り文字  通常セルの区切り文字にはカンマ(“,”)を使用するが,“sepChar=\t”の様に記述することで,区切り文字をタブなどに変更することが出来る. ## newColumn ◆ 行頭コマンド  ソース文書の行のはじめにコマンドを記述することが出来る.それ以降の水平方向のアライメントや,カラム幅の指定ができる.表4.1に行頭コマンド一覧を示す. ## table caption="表4.1 行頭コマンド一覧" コマンド, 機能 “# ”, セル横幅指定,アライメントなど “+ ”, 継続行 ## endtable ● “# ”コマンド  行の先頭に“# ”があると,その行はコマンド行とみなされる.コマンド行では各カラムごとのオプションをカンマで区切って指定する.たとえば,“# opt1, opt2, opt3”と指定した場合,その行以降のすべての行について,最初のカラムは opt1 で,2番目のカラムは opt2 で,3番目のカラムは opt3 で指定されたオプションでレイアウトされる.  コマンド行によるオプション指定は別のコマンド行で同種のオプションが指定されるまで有効になる.コマンド行が連続する場合は,指定されたコマンドすべてが有効となる.  オプションの一覧を表4.2に示す. ## table pos=here caption="表4.2 行コマンドでのカラムオプション一覧" 分類, コマンド, 機能 セル幅, n%, セル幅%指定(nは数値) n, セル幅絶対値指定(nは数値) 罫線, |, 右罫線描画 _, 下罫線描画 アライメント, l, 左寄せ c, センタリング r, 右寄せ a, 自動(数字列のみ右寄せ) e, 均等 vt, 上寄せ vc, 垂直方向センタリング vb, 下寄せ 色, bc=xxxxxx, 背景色指定 bc=, 背景色無し tc=xxxxxx, 文字色指定 フォント, b, ボールド i, イタリック u, アンダーライン ## endtable ▼ セル幅%指定  セル幅を表の全体幅に対する割合で指定できる.たとえば図4.1をレイアウトすると,表4.3の様になる.ちなみにセル幅の指定をしない場合は表4.4の様になる. ## column pos=here drawFrame topMargin=200 bottomMargin=100 caption="図4.1 セル幅の指定ありの場合"  ## table caption="表4.3 セル幅の指定あり" pos=here  # 20%, 30%,   あ, い, う   11, 222, 3333   aaaa, aaa, aa  ## endtable ## endcolumn ## table caption="表4.3 セル幅の指定あり" pos=here # 20%, 30%, あ, い, う 11, 222, 3333 aaaa, aaa, aa ## endtable ## table caption="表4.4 セル幅の指定なし" pos=here あ, い, う 11, 222, 3333 aaaa, aaa, aa ## endtable ## ## newColumn ▼ セル幅絶対値指定  単位は1/100ミリ ▼ 罫線指定  “|”でセルの右側罫線,“_”で下部罫線の描画指定が出来る. ## 罫線を描画しないように指定する場合は“-”または“no”を前置する. ## table caption="表4.5 水平アライメント指定あり" pos=here あ, い, う # _|, _|, _ zzz, yyy, xxx 11, 222, 3333 aaaa, aaa, aa ## endtable ▼ 水平アライメント指定  “l”,“c”,“r”,“a”で水平方向のアライメントを指定できる.それぞれ左寄せ,中央揃え,右寄せ,自動(数字列は右寄せ,その他は左寄せ)を意味する.たとえば図4.2をレイアウトすると,表4.5の様になる. ## column pos=here drawFrame topMargin=200 bottomMargin=100 caption="図4.2 セル幅の指定ありの場合"  ## table caption="表4.5 水平アライメント指定あり"   あ, い, う  # l, r, c   11, 222, 3333   aaaa, aaa, aa  ## endtable ## endcolumn ## table caption="表4.5 水平アライメント指定あり" pos=here あ, い, う # l, r, c 11, 222, 3333 aaaa, aaa, aa ## endtable ▼ 垂直アライメント  “vt”,“vc”,“vb”で垂直方向のアライメントを指定できる.それぞれ上寄せ,上下中央,下寄せを意味する. ▼ 背景色指定 ## column pos=here drawFrame topMargin=200 bottomMargin=100 caption="図4.3 セル幅の指定ありの場合"  ## table caption="表4.6 背景色指定あり"   あ, い, う  # bc=e0ffff, bc=ffd0ff, bc=ffffe0   11, 222, 3333   aaaa, aaa, aa  ## endtable ## endcolumn ## table caption="表4.6 背景色指定あり" あ, い, う # bc=e0ffff, bc=ffd0ff, bc=ffffe0 11, 222, 3333 aaaa, aaa, aa ## endtable ## table caption="表4.7 背景色指定の応用例" header=0 # bc=c0c0c0 c あ # bc=e0ffff, bc=ffd0ff, bc=ffffe0 11, 222, 3333 aaaa, aaa, aa # bc=c0c0c0 c い # bc=e0ffff, bc=ffd0ff, bc=ffffe0 11, 222, 3333 aaaa, aaa, aa ## endtable ▼ フォントスタイル  ボールド,イタリック,アンダーラインが指定できる. ● “+ ”コマンド  行の先頭に“+ ”があると,その行は前行の継続行とみされる.たとえば図4.xは,表4.xのようにレイアウトされる, ## column pos=here drawFrame caption="図4.x 継続行の例" topMargin=200  ## table pos=here   名前, 電話番号   国枝交子, 03-xxxx-xxxx(自)  + , 03-xxxx-xxxx(会)   河村末告, 03-xxxx-xxxx(自)  ## endtable ## endcolumn ## table pos=here caption="表4.x 継続行の例" 名前, 電話番号 国枝交子, 03-xxxx-xxxx(自) + , 03-xxxx-xxxx(会) 河村末告, 03-xxxx-xxxx(自) ## endtable  これは次の節で説明するセル内コマンドを使用しても記述可能である.好みによって使い分けると良い. ## newColumn ◆ セル内コマンド  セル内に特別な表記でコマンドを挿入することも出来る.アライメントや右または下セルとの結合などの指定が可能である.  セルの最初でSGMLに様に“<”,“>”で囲ってコマンドを指定できる.  コマンドは“”の様にスペースで区切って複数指定することができる.  セルの先頭以外では通常の文字とみなされる. 表4にコマンドの一覧を示す. ## table pos=here caption="表4 セル内コマンド一覧" コマンド, 機能 |, 右罫線 -|, 右罫線無し _, 下罫線 -_, 下罫線無し l, 左寄せ c, センタリング r, 右寄せ a, 自動(数字列右寄せ) e, 均等 vt, 上寄せ vc, 垂直方向センタリング vb, 下寄せ cs=n, 右のセルと結合 rs=n, 下のセルと結合 bc=xxxxxx, 背景色 bc=, 背景色無し -bc, 背景色無し tc=xxxxxx, 文字色 ## endtable ▼ 水平アライメント ▼ 垂直アライメント ▼ セル結合  “”,“”はセルの先頭でのみ指定でき,右または下のセルとの結合を指定する.“cs”は“column span”,“rs”は“row span”の略である.たとえば“”と指定した場合,セルは2つのセル分の幅を占有することになる. ## column pos=here drawFrame caption="図n , の使用例" topMargin=200  ## table header=2  name, ave.   time, stroke  津田, 20, 100  三浦, 22, 98  ## endtable ## endcolumn ## table header=2 caption="表n , の使用例" # , 30%, 30% name, ave. time, stroke 津田, 20, 100 三浦, 22, 98 ## endtable ## ● 罫線形式での書式 ◆ 特殊文字  セルのはじめに“<”を記述したい場合はバックスラッシュを前置して“\<”と記述する(和文フォントではバックスラッシュは“¥”と表示される).“\”は特殊文字で,それに続けて文字を記述することで特殊な意味を持つ.詳細は  \n  \文字  “\n”コマンドはセル内での改行指定である.たとえば, ## column pos=here drawFrame caption="図n" topMargin=200  ## table pos=here  名前, 電話番号  国枝交子, xxxx(自)\nyyyy(会)  河村末告, 03-xxxx-xxxx(自)  ## endtable ## endcolumn  は,以下のようにレイアウトされる ## table pos=here caption="表5 セル内改行の例" 名前, 電話番号 国枝交子, xxxx(自) + , yyyy(会) 河村末告, 03-xxxx-xxxx(自) ## endtable ◆ まとめ  このように表組み書式は複数の方式を提供し,ユーザが場合場合によって使い分けることが出来るようにする.つまり,必要最低限のコマンド(## table, ## endtable, CSV形式)を覚えるだけで簡単に使うことができ,いろいろなコマンドを覚えれば凝った形式の表組みも可能になる,というわけである.