nazo6 notememo

Typstで最初の段落も字下げする

作成:2024/01/09

更新:2024/01/09

typstのparにはfirst-line-indentというオプションがあり字下げを設定できるが、このオプションを設定しても見出しの後の最初の段落は字下げされず、さらにそのようなオプションもない。

Paragraph Function – Typst Documentation

Documentation for the `par` function.

typst.app

そうは言ってもできないと困るのでこちらで議論されている。

Behavior of first line indentation in paragraphs seems limiting · Issue #311 · typst/typst

As I gathered from the docs (as seen on the reference for the first-line-indent argument), the first paragraph on a page is special-cased to never have it's first line indented. If I understand thi...

github.com

何やら色々難しいらしくあまり本体の改善は進展してなさそうだがいくつか回避策があり、このコメントにまとめられている。

Behavior of first line indentation in paragraphs seems limiting · Issue #311 · typst/typst

As I gathered from the docs (as seen on the reference for the first-line-indent argument), the first paragraph on a page is special-cased to never have it's first line indented. If I understand thi...

github.com

コピペしたものがこちら↓
// Workaround 1: Function to add horizontal space
#let indent = 1em // or whatever value you want
#let indent_par(body) = par[#h(indent)#body]
// Usage:
#indent_par[First paragraph]

// Workaround 2: Special character show rule
#show "¬": h(1em) // Use whatever symbol and space you want
// Usage:
¬First paragraph

// Workaround 3: Automatically add empty paragraph after heading
#show heading: it => {
it
par(text(size:0.35em, h(0.0em)))
} // Only works for paragraphs directly after heading
  • workaround 1ではインデントをする関数を定義してその中に関数を入れれば字下げされる。クリーンな感じだが一々これで囲まなければいけなくてめんどうそう。
  • 2では¬という文字にインデントの役割を振ることで若干書きやすくなっている。
  • 3はheadingの後に自動で段落を追加することで最初の段落を2段落目の扱いにしている。
どれも一長一短という感じで、3の方法は自動なので楽だが段落の分若干スペースが開いてレイアウトが変わってしまう。
とりあえず2の方法を使うのがちょうど良いかもしれない。