From d70e9df9126049d16b8c2bab0e3bad55d123d262 Mon Sep 17 00:00:00 2001 From: ilyaoc Date: Wed, 3 Jun 2026 13:58:03 +0200 Subject: [PATCH] fix: handle dstu-table refs and counting --- src/style.typ | 14 +++++++++++++- src/title-pages/coursework-v2/nure.typ | 2 +- src/title-pages/coursework/nure.typ | 2 +- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/style.typ b/src/style.typ index 3333f75..ad507ea 100644 --- a/src/style.typ +++ b/src/style.typ @@ -49,6 +49,7 @@ caption: none, columns: none, header: none, + tag: none, ..args, ) = { let caption = _required("caption", caption) @@ -63,7 +64,6 @@ let named = args.named() let body = args.pos() - context { let h = counter(heading).get() let section = if h.len() > 0 { h.at(0) } else { 0 } @@ -85,6 +85,8 @@ { set block(spacing: dstu-table-caption-gap) + [#metadata((kind: "dstu-table", number: num)) #if tag != none { label(tag) }] + block(sticky: true)[ #dstu-table-label[Таблиця #num -- #caption] ] @@ -169,6 +171,16 @@ set list(indent: indent-size + 0.1cm, body-indent: 0.5cm, marker: [--]) // Figures + show ref: it => { + let el = it.element + + if el != none and el.func() == metadata and type(el.value) == dictionary and el.value.at("kind", default: none) == "dstu-table" { + link(el.location())[#el.value.at("number")] + } else { + it + } + } + show figure: it => { v(double-spacing, weak: true) it diff --git a/src/title-pages/coursework-v2/nure.typ b/src/title-pages/coursework-v2/nure.typ index cada300..0dc9851 100644 --- a/src/title-pages/coursework-v2/nure.typ +++ b/src/title-pages/coursework-v2/nure.typ @@ -314,7 +314,7 @@ #context [ #let pages = counter(page).final().at(0) #let images = query(figure.where(kind: image)).len() - #let dstu-tables = query(metadata).filter(it => type(it.value) == str and it.value.starts-with("start-dstu-table-")).len() + #let dstu-tables = query(metadata).filter(it => type(it.value) == dictionary and it.value.at("kind", default: none) == "dstu-table").len() #let tables = query(figure.where(kind: table)).len() + dstu-tables #let bibs = bib-count.final().dedup().len() diff --git a/src/title-pages/coursework/nure.typ b/src/title-pages/coursework/nure.typ index 3e44507..e32f793 100644 --- a/src/title-pages/coursework/nure.typ +++ b/src/title-pages/coursework/nure.typ @@ -210,7 +210,7 @@ #context [ #let pages = counter(page).final().at(0) #let images = query(figure.where(kind: image)).len() - #let dstu-tables = query(metadata).filter(it => type(it.value) == str and it.value.starts-with("start-dstu-table-")).len() + #let dstu-tables = query(metadata).filter(it => type(it.value) == dictionary and it.value.at("kind", default: none) == "dstu-table").len() #let tables = query(figure.where(kind: table)).len() + dstu-tables #let bibs = bib-count.final().dedup().len() /* TODO: why this stopped working?