問題例
画像のすぐ下には"Figure 1"などと表示するが、それを文中で引用する場合は"Fig. 1"などと、別の表記のsupplementにしたい。
つぎのように、何も考えずにTypstを作ると
#set page(columns: 2, fill: red.lighten(99%))
#set heading(numbering: "1.")
#set table(align: left, stroke: none)
#show figure.where(kind:table):set figure.caption(position: top)
= My Diary <MyDiary>
#figure(image("Shukugawara.jpeg"),
  caption: [Shukugawara #emoji.flower.pink]
)<Shukugawara>
#figure(image("Owakidani.jpeg"),
  caption: [Owakidani #emoji.chicken.egg]
)<Owakudani>
#figure(table(
  columns: 3,
  table.hline(),
  table.header([Name],[Age],[Birth]),
  table.hline(),
  [Sawara],[19],[4/1],
  [Kajika],[14],[2/14],
  [Shinju],[10],[8/28],
  table.hline()
),
caption: "Characters of Sanbon-Ribbon") <SR>
#colbreak()
= Refs
- @MyDiary
- @Shukugawara
- @Owakudani
- @SR
@Shukugawaraや@Owakudaniなどの、画像のrefを見てみると、supplementが"Figure "となっている。ここを"Fig. "としたい。

解決策
次のコードを追加する。
#set ref(supplement: it=>{
  let body-func = it.body.func()
  if body-func == image{
    [Fig. ]
  }else{
    it.supplement
  }
})
ref.supplementには関数を指定することができる。その関数は、参照対象にあるオブジェクトを受け取り、それに対するsupplementを返すことが期待されている。
そこで、参照対象の内容の関数を取り出し、それがimageであった場合に"Fig. "を、それ以外は参照対象デフォルトのsupplementをそのまま返す関数を当てはめる。

文中の画像の参照のみ"Fig. "というsupplementになった。
NG例
次のようなものを書いてしまうと・・・
#set ref(supplement: "Fig. ")
