Finally, I get rid of show ref.
#import "@preview/headcount:0.1.0": dependent-numbering
#set heading(numbering: "1.1")
#let neo-figure = figure.where(kind: "neo")
#let neo(body) = figure(
kind: "neo",
supplement: none,
{
[Neo ]
context counter(neo-figure).display(dependent-numbering("1.1.1", levels: 2))
[: ]
body
[ ]
context counter(neo-figure).display()
},
)
#show neo-figure: set figure(
numbering: dependent-numbering("{1.1.1}", levels: 2),
)
#show neo-figure: set align(start)
#show heading: it => it + counter(neo-figure).update(0)
= First
#neo(lorem(5)) <1>
#neo(lorem(5)) <2>
== First first
#neo(lorem(5)) <3>
#counter(neo-figure).update(9)
#neo(lorem(5)) <3.5>
#counter(heading).update(2)
= Second
#neo(lorem(5)) <4>
@1, @2, @3, @3.5, @4.
