🙄

Typstのselectorを利用し最初第二階層見出しで改ページする方法

に公開

今回は簡単でニッチな記事ですが、同じやり方は汎用性が高いので短めの記事にします。

説明が難しいですが、第一階層見出しのすぐ下の見出しで改行したい時ってありますよね~。例えば、章(chapter)で分ける本がある場合、章の見出し(第一階層)をでっかくして、下に章の総括テキストを書いて、で節に分けていくわけですが、最初の第二階層の節の前にちょっと改ページしたいですよね。ただし手動でやると忘れてしまいそうなので、自動でやる方法を紹介します。

#set text(25pt)
#set par(justify: true)
#show heading.where(level: 1): it => {
  v(1fr)
  set align(right)
  it
}

#show heading.where(level: 2): it => {
  let before = query(selector(heading).before(here())).at(-2)
  if before.level < it.level {
    pagebreak()
  }
  it
}

= A
#lorem(50)
== B
#lorem(50)
== C
#lorem(50)

#pagebreak()

= D
#lorem(100)
== E
#lorem(50)
=== F
#lorem(50)

やり方は簡単です。まず、第一レベルの見出しの上に残りスペースを取るように v(1fr) を追加し、そして第二レベルの見出しの前の見出しが第一見出しの場合改行を行う。それだけです。

Discussion