😎

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などの色名も使えます。このへん、詳しくは本家のマニュアルをご参照ください。
https://typst.app/docs/reference/visualize/color/

#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のその他のパラメーターについては本家のマニュアルをご参照ください。
https://typst.app/docs/reference/model/table/

細川馨氏のこちらのサイトもとても参考になりました。
https://qiita.com/KaoruHosokawa00/items/9692fd6d7990faefa0f8

Discussion