Typst: シンポジウムの日程表作成で使った#tableのパラメーターなど
はじめに
シンポジウムの日程表をTypstで作成するにあたって使用した機能を紹介していきます。
テーブルの基本
#table()で表を作ります。()の中には表の設定やセルの中身を書きます。セルの中身は[]で囲みます。\ でセル内改行もできます。
一番シンプルな表です。
#set text(12pt, font:"Noto Serif CJK JP")//フォントの設定
#table(
columns: 2,
[時間],[プログラム],
[8:30-8:50],[受付\ A棟12階]
)
単純にcolumns: の後の数字が列の数です。この書き方だとセルの幅はセル内の文字数に左右されます。

列の幅
列の幅を指定したい場合は、columns: ()で列ごとの設定を書いていきます。5mmなら幅5ミリ、10emなら全角10文字分です。そのほかxit, xpt等の単位も使えます。また、1frとすると、列幅を設定していない列を均等に分けてくれます。
#set text(12pt, font:"Noto Serif CJK JP")//フォントの設定
#table(
columns: (6em, 1fr),//列幅の設定
[時間],[プログラム],
[8:30-8:50],[受付\ A棟12階]
)

列幅を変更
文字の位置
align: のあとにleft, center, rightで全てのセルの文字位置を一括で左寄せ・中央揃え・右寄せにできます。縦方向はtop, horizon, bottomです。また、列幅と同様にalign: ()で列ごとに設定することもできます。
#set text(12pt, font:"Noto Serif CJK JP")//フォントの設定
#table(
columns: (6em, 1fr), //列幅の設定
align: center, //文字位置の設定
[時間],[プログラム],
[8:30-8:50],[受付\ A棟12階]
)

文字列をセンタリング
セルの結合
table.cell()でセル単位の設定ができます。table.cell(colspan: x)で横方向にx個のセルが結合します。table.cell(rowspan: y)でy個のセルが結合します。上で説明したalign: もtable.cell()の中に書けます。
#table(
columns: (6em, 1fr, 1fr, 1fr), //列幅の設定
align: center, //文字位置の設定
table.cell(colspan: 4)[【論文発表】発表20分、討論5分、交代5分], //セルを横に結合
table.cell(rowspan: 3, align: horizon)[11:10-12:10], //セルを縦に結合
[会場A],[会場B],[会場C],
[司会/コメンテーター\ A教授],[司会/コメンテーター\ B教授],[司会/コメンテーター\ C教授],
[発表者:○○○○(××大学教授)\ テーマ:●●に関する考察],
[発表者:△△△(▽▽大学教授)\ テーマ:▲▲に関する研究],
[発表者:□□□□(◇◇大学教授)\ テーマ:■■をめぐって],
)

セル結合の例
セルに色をつける
table.cell(fill: color)でセルに色がつきます。luma(x)ならモノトーンで黑(x=0)から白(x=255)まで、rgb("#000000")~rgb("#ffffff")でフルカラー、一部gray, silverなどの色名も使えます。このへん、詳しくは本家のマニュアルをご参照ください。
#table(
columns: (6em, 1fr, 1fr, 1fr), //列幅の設定
align: center, //文字位置の設定
table.cell(colspan: 4, fill: silver)[【論文発表】発表20分、討論5分、交代5分], //セルを横に結合+セル背景を銀色に
table.cell(rowspan: 3, align: horizon)[11:10-12:10], //セルを縦に結合
[会場A],[会場B],[会場C],
[司会/コメンテーター\ A教授],[司会/コメンテーター\ B教授],[司会/コメンテーター\ C教授],
[発表者:○○○○(××大学教授)\ テーマ:●●に関する考察],
[発表者:△△△(▽▽大学教授)\ テーマ:▲▲に関する研究],
[発表者:□□□□(◇◇大学教授)\ テーマ:■■をめぐって],
)

1列目の背景を銀色に
枠線の太さ
表の枠線が太いので細くしました。stroke: xptで変更できます。線の色もここで変えられます。stroke: 太さ + 色,です。
#set text(12pt, font:"Noto Serif CJK JP")//フォントの設定
#table(
columns: (6em, 1fr, 1fr, 1fr), //列幅の設定
align: center, //文字位置の設定
stroke: 0.5pt, //枠線の太さ
table.cell(colspan: 4, fill: silver)[【論文発表】発表20分、討論5分、交代5分], //セルを横に結合+セル背景を銀色に
table.cell(rowspan: 3, align: horizon)[11:10-12:10], //セルを縦に結合
[会場A],[会場B],[会場C],
[司会/コメンテーター\ A教授],[司会/コメンテーター\ B教授],[司会/コメンテーター\ C教授],
[発表者:○○○○(××大学教授)\ テーマ:●●に関する考察],
[発表者:△△△(▽▽大学教授)\ テーマ:▲▲に関する研究],
[発表者:□□□□(◇◇大学教授)\ テーマ:■■をめぐって],
)

枠線を細く
枠線と文字の間隔を空ける
予稿集では気にならなかったのですが、ポスターでは枠線と文字の間が詰まりすぎていたので、inset:を使いました。作例ではかえって見栄えが悪くなってますが、何をしたいかはわかると思います。
#set text(12pt, font:"Noto Serif CJK JP")//フォントの設定
#table(
columns: (6em, 1fr, 1fr, 1fr), //列幅の設定
align: center, //文字位置の設定
stroke: 0.5pt, //枠線の太さ
inset: 10pt, //文字と枠線の間隔
table.cell(colspan: 4, fill: silver)[【論文発表】発表20分、討論5分、交代5分], //セルを横に結合+セル背景を銀色に
table.cell(rowspan: 3, align: horizon)[11:10-12:10], //セルを縦に結合
[会場A],[会場B],[会場C],
[司会/コメンテーター\ A教授],[司会/コメンテーター\ B教授],[司会/コメンテーター\ C教授],
[発表者:○○○○(××大学教授)\ テーマ:●●に関する考察],
[発表者:△△△(▽▽大学教授)\ テーマ:▲▲に関する研究],
[発表者:□□□□(◇◇大学教授)\ テーマ:■■をめぐって],
)

枠線と文字の間隔を空ける
ページをまたぐ表
#table()だけを使った表は、デフォルトで表の途中で改ページします。キャプションをつけたりするために外側を#figure()で囲むとできなくなりますが。
おわりに
ExcelやWordを使っても同じことはできるのですが、列幅や行高さを設定するときのイライラを思うと、Typstのほうが圧倒的にストレスが少ないと思います。1frは偉大だ。
#tableのその他のパラメーターについては本家のマニュアルをご参照ください。
細川馨氏のこちらのサイトもとても参考になりました。
Discussion