I want to make it so
= Section
== Subsection
shows as
1 Section
Subsection 1.1
I tried doing that using
#show heading.where(level: 2): it => box(strong(it.body + " "))
but that just shows the heading format string
I want to make it so
= Section
== Subsection
shows as
1 Section
Subsection 1.1
I tried doing that using
#show heading.where(level: 2): it => box(strong(it.body + " "))
but that just shows the heading format string
You can get the heading number from the built-in counter
. The counter requires context to evaluate/display, and the block is used to get the default behavior of a heading.
#set heading(numbering: "1.1")
#show heading.where(level: 2): it => context block(
it.body + [ ] + counter(heading).display()
)
= A Section
== A Subsection
== Another Subsection
Hello. For this, you would have to recreate the default heading show rule from scratch and change its behavior:
#import "@preview/text-dirr:1.0.0": text-dir
#set heading(numbering: "1.")
#show heading.where(level: 2): it => {
let spacing = h(0.3em, weak: true)
let numbering = counter(heading).display(it.numbering)
let realized = it.body + spacing + numbering
let indent = if it.hanging-indent == auto { 0pt } else { it.hanging-indent }
if it.hanging-indent == auto { indent = measure(numbering).width + 0.3em }
let start = if text-dir() == ltr { "left" } else { "right" }
block(inset: ((start): indent), h(-indent) + realized)
}
= Section
== Subsection
#heading(depth: 2, hanging-indent: 5em, numbering: "I.")[#lorem(15)]
Now that the text-dirr
package is out, so you can fully copy the default behavior that uses “start” alignment or side, which depends on text.dir
.
For full heading implementation, see Add default typst implementation code where possible · Issue #5095 · typst/typst · GitHub. Since the numbering is now not at the start, I don’t know if you need auto hanging indent or hanging indent at all. If not, then you can simply do this:
#show heading.where(level: 2): it => block(
it.body + h(0.3em, weak: true) + counter(heading).display(it.numbering),
)
Hi @Amasica, welcome to the forum! Don’t forget to tick one of the responses if you got a satisfying answer. The answer you choose should usually be the response that you found most correct/helpful/comprehensive for the question you asked. Thanks!