Typstで要素を横並びにして脚注にラベル付けする

| June 19, 2024

こんにちは, iduknです.

自分は当記事執筆現在, 高専から大学に編入し大学生活を送っています.

最近の理系学生のトレンドとして, レポート提出に使用する組版システムを\(\LaTeX\)からTypstに乗り換える風潮があると思います.

しかし, そこでつまづくのは日本語でのリファレンスが少ないことだと思います.


「\( \LaTeX \)でやってたこの動作, Typstでどうやるん?」


あるあるですね.

そこで, 今回はそんな悩みの一つ, Typstで図や表などを横並びに表示させるgridコマンド, そして, それらにラベル付けする方法を共有します.

自分もまだまだTypstの使い方を勉強中で備忘録程度のものですが, 参考にしていただけたら幸いです.

問題点

  • \( \LaTeX \)では, 画像などを横並びに表示させる環境として, tabular環境やminipage環境などを用いる.

  • そして, それらに脚注をつける際には, (sub)caption環境を使い, label環境で文中参照する.

では, これらをTypstではどのように実現できるか, 1つずつ見ていきましょう.

画像を横並びにする

公式リファレンスを頑張って漁ると, gridという関数があることが見つかります.
Grid Function
とりあえず, これでcolumnの数を指定してあげればよさそうです.

脚注にラベルをつける

画像と脚注を一まとめにするfigure関数があります.
Figure Function
このリファレンスにあるようにラベル付けすればいいのですが, 普通にgrid内に書くことはできません. 関数内での関数へのラベル付けはマークアップ方式で囲まないと受け付けてくれなそうです.

結論

結果的に以下のようなコードで落ち着きました.

#grid(
    columns: 2,//列数
    [#figure(
        image("glacier.jpg"),
        caption: [A curious figure.],
        supplement: "図"
    )<glacier>],//コードブロックで囲む
    [#figure(
        image("magma.jpg"),
        caption: [A curious figure.],
        supplement: "図"
    )<magma>],
)

/* 以下はダメそう
#grid(
    columns: 2,
    figure(
        image("glacier.jpg"),
        caption: [A curious figure.],
        supplement: "図"
    )label("glacier"),
    figure(
        image("magma.jpg"),
        caption: [A curious figure.],
        supplement: "図"
    )label("magma"),
)
*/

自分はfigureのsupplementのあたりは毎回固定なので, パッケージで関数定義してたりします(いつか記事書くかも).


ということで今回はTypstで図や表などを横並びに表示させるgridコマンド, そして, それらにラベル付けする方法を紹介しました.

是非参考にし, そしてよりスマートに実装してみてください!

また, より良い方法を共有してくれる方や, 分かりづらい点などありましたら, コメント等でお知らせいただけると幸いです.

以上, iduknでした.
最後までご覧いただきありがとうございました.

comments powered by Disqus