feat: add attachments to outline and document new fields

This commit is contained in:
2026-01-21 21:37:41 +02:00
parent 610ab2e7d0
commit 1b96f36217
2 changed files with 16 additions and 2 deletions

View File

@@ -32,7 +32,7 @@ configure the whole document and `attachment` helper function. Important argumen
- `abstract`: A record with `primary` and `secondary` abstracts. Each has
`text` (content) and `keywords` (array) as well as `title`, `lang` and `keyword-title`.
- `bibliography`: Result of `bibliography("path/to/file.yml")` or `none`.
- `attachments`: Tuple of `attachment(...)` items (tables, figures).
- `attachments`: Tuple of `attachment(...)` items (tables, figures). All attachments must be referenced in the document body to appear in the outline.
- `display-documentary`: Whether to display the documentary page at the end. Defaults to `true`.
- `description`: Document description for PDF metadata. Defaults to `none`.
- Positional argument: the document body follows the `ludf.with(...)` call.

View File

@@ -272,12 +272,26 @@
// Table of contents.
// Uppercase 1st level headings in ToC
show outline.entry.where(level: 1): it => { upper(it) }
// show outline.entry.where(level: 1): it => { upper(it) }
// Format attachment entries in outline
show outline.entry: it => {
let el = it.element
if el.func() == figure {
let num = numbering(el.numbering, ..el.counter.at(el.location()))
let pg = counter(page).at(el.location()).first()
return block[#link(
el.location(),
)[#num #el.supplement. #el.caption.body] #box(width: 1fr, it.fill) #pg]
}
it
}
outline(
depth: 3,
indent: 1cm,
title: text(size: 14pt, outline-title),
target: selector(heading).or(figure.where(kind: "attachment")),
)
// Display the paper's contents.