問題例
画像のすぐ下には"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. ")