From bfcf2bd4cced0b3f08b9b00af9bb14b824aabb13 Mon Sep 17 00:00:00 2001 From: Tobias Schmitz Date: Fri, 27 Jun 2025 14:20:58 +0200 Subject: [PATCH] feat: support headings with level >= 7 --- crates/typst-pdf/src/tags.rs | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/crates/typst-pdf/src/tags.rs b/crates/typst-pdf/src/tags.rs index 5b5963946..8a7e1362c 100644 --- a/crates/typst-pdf/src/tags.rs +++ b/crates/typst-pdf/src/tags.rs @@ -1,4 +1,5 @@ use std::cell::OnceCell; +use std::num::NonZeroU32; use ecow::EcoString; use krilla::page::Page; @@ -372,17 +373,9 @@ pub(crate) fn handle_start(gc: &mut GlobalContext, elem: &Content) { _ => todo!(), } } else if let Some(heading) = elem.to_packed::() { - let level = heading.level(); + let level = heading.level().try_into().unwrap_or(NonZeroU32::MAX); let name = heading.body.plain_text().to_string(); - match level.get() { - 1 => TagKind::H1(Some(name)).into(), - 2 => TagKind::H2(Some(name)).into(), - 3 => TagKind::H3(Some(name)).into(), - 4 => TagKind::H4(Some(name)).into(), - 5 => TagKind::H5(Some(name)).into(), - // TODO: when targeting PDF 2.0 headings `> 6` are supported - _ => TagKind::H6(Some(name)).into(), - } + TagKind::Hn(level, Some(name)).into() } else if let Some(_) = elem.to_packed::() { push_stack(gc, loc, StackEntryKind::Outline(OutlineCtx::new())); return;