I think you can just call .display()
and not worry about page.numbering
:
#let title = [Document title]
#set page(
numbering: "I",
footer: context {
set text(8pt)
let n = counter(page).display()
if calc.odd(here().page()) {
align(right)[#title | #n]
} else {
align(left)[#n | #title]
}
},
)
#set par(justify: true)
#range(5).map(_ => lorem(150)).intersperse(parbreak()).join()
To check for left or right side it’s maybe better to use here().page()
which gives the physical page number (so odd should always be on the right) while counter(page)
can be set to anything by the user/template.