2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Typstで式を引用したときだけ式番号をつける

Last updated at Posted at 2024-11-02

引用した式にだけ式番号をつけたい時がある.LaTeXではautonumパッケージなどを使えば実現できる.Typstでも同じようなことができ,その方法はこの記事で紹介した.
しかし,記事で紹介した方法ではいちいち関数で囲む必要があった.

以下のようにすれば,そのようなことをせずとも自動で式を引用したときだけ式番号をつけることができる.

#set math.equation(numbering: "(1)")

#show math.equation.where(block: true): it => {
  if it.has("label")  {
      
      let tlabel = it.at("label")
     context{
       
        let  eql = counter("auto-numbering-eq" + str(tlabel))
        if eql.final().at(0) == 1{
           
          block(it) 
           
          }
        
        else {
          counter(math.equation).update(n => n - 1)
          block($display(it.body)$,above:1.7em,below:1.7em)
        }
      }
    
  }
  else {counter(math.equation).update(n => n - 1)
        block($display(it.body)$,above:1.7em,below:1.7em)}
}

#let eq_refstyle(it) = {
  return  {
  let lbl = it.target
  let eq = math.equation
  let el = it.element
  let eql = counter("auto-numbering-eq"+str(lbl))
  eql.update(1)
  if el != none and el.func() == eq {
      link(lbl)[
      #numbering(
        el.numbering,
        ..counter(eq).at(el.location())
      ) ]
  } 
    else {it}
  }
}

#show ref: it => eq_refstyle(it)

ただし,式番号をつけるときとつけないときで若干式周りのスペースが変化してしまうので微調整している.これは設定次第では壊れるかもしれない.

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?