#Add greek numbering to typst heading numbering

1 messages · Page 1 of 1 (latest)

upbeat rivet
#

Hello, I'm trying to have a numbering in my headings with something like "I. A. 1. alpha",

So far I have this :

#set heading(numbering: (..numbers) => {
  let level = numbers.pos().len()
  let final = counter(heading).display("I.A.1.")
  if (level == 4) {
    final = final.rev().slice(2).rev() 
    final += $alpha$
  }
  return final
})
#

And I would like to do something like an array with all the greek letters

#

And then just select the correct index

#

But I don't find the property whjich tells me for instance :

== First level 2 heading
== Second level 2 heading

#

Does anybody have an idea ?

rotund sapphire
#

?r

#import "@preview/numberingx:0.0.1"

#set heading(numbering: numberingx.formatter("{I}.{A}.{1}.{lower-greek}"))

= test

== test

=== test

==== test

==== test 2
patent bison
#

For completeness, here is a vanilla Typst solution (but I think @rotund sapphire 's version is better):

#set heading(numbering: (..numbers) => 
  if numbers.pos().len() <= 3 {
    numbering("I. 1. A.", ..numbers)
  } else {
    numbering("I. 1. A.", ..(numbers.pos().slice(0,-1))) + " " + str.from-unicode(944 + numbers.pos().at(3)) + "."
  }
)

= Section 1
== Subection 1
=== Subsubection 1
==== Subsubsubection 1
==== Subsubsubection 2
=== Subsubection 2
==== Subsubsubection 3
==== Subsubsubection 4