aboutsummaryrefslogtreecommitdiff
path: root/templates/ef/ordo.typ
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-20 11:42:25 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-20 11:42:25 +0200
commit900d1d781e62a08a1bda1285c8e8611a7baa0f2f (patch)
tree621e920076409f74e164cfc15016ad9910bcf40a /templates/ef/ordo.typ
parente2e56ac5af290b60ea01037e58e8bc00545c021c (diff)
downloadcolitur-900d1d781e62a08a1bda1285c8e8611a7baa0f2f.tar.gz
colitur-900d1d781e62a08a1bda1285c8e8611a7baa0f2f.zip
feat(templates): week headers stop repeating the month name
Every ordo booklet week header used to print the month name again even though the month heading right above it already established it -- pure noise, repeated once per week for the whole year. All seven ordo flavours now print the week's own Roman numeral plus the span of dates it covers instead, e.g. "Hebdomada I (Ian 1-2)", with no month name on the line; the LaTeX table of contents and the Typst outline (built automatically from its own headings, so editing the heading is the whole fix there) read the same way. A single-day week (e.g. a lone trailing Sunday) renders "Ian 31", not "Ian 31-31": each flavour's dash sits inside an inverted single_day section, so the engine -- which cannot itself compare first_dom to last_dom -- never has to decide anything, it only follows the data. The dash character matches each flavour's own existing convention: LaTeX/Typst's own "--" ligature, groff's \(en escape (alongside its existing \(bu), HTML's &ndash; entity (alongside its existing &middot;), and a literal en dash for the three flavours with no escaping (adoc/md/txt). Every in-template comment describing the new fields is written without ever typing two curly braces together, including in the two comments this touches that used to embed a live {{month_name}}/{{term.week}} tag pair inside a LaTeX % comment -- harmless only because that whole line already started with %, not because the engine has any comment awareness (it has none). Goldens regenerated through test_render_golden.ml's own render path (Test_view.view_of + Template.render_string), not the CLI -- the two differ in default language and would otherwise pin output the test suite never produces. Grid goldens are untouched, matching the grid templates, which have no week header. Verified against real pdflatex (two passes) and typst compile output, not merely the golden pins: both flavours print "Hebdomada I (Ian 1-2)", "Hebdomada II (Ian 3-9)", "Hebdomada III (Ian 10-16)" as their first three week headers and identical text in the table of contents/outline, and both show "Hebdomada VI (Ian 31)" for January's own trailing single-day week with no dash.
Diffstat (limited to 'templates/ef/ordo.typ')
-rw-r--r--templates/ef/ordo.typ27
1 files changed, 19 insertions, 8 deletions
diff --git a/templates/ef/ordo.typ b/templates/ef/ordo.typ
index 85b609e..829bf1e 100644
--- a/templates/ef/ordo.typ
+++ b/templates/ef/ordo.typ
@@ -27,9 +27,16 @@
// The engine has no parent-path syntax: nested inside a month's own week
// loop, a bare week-number reference finds the WEEK's own number, and there
// is no way to reach the enclosing month's from there. That is why each
-// week object carries its own month number and month name fields
-// (lib/render/view.ml), used below via month_name/month_num instead of a
-// parent-path reference the engine cannot express.
+// week object carries its own month number, month name and abbreviated
+// month name fields (lib/render/view.ml), used below via month_name/
+// month_num/month_abbr instead of a parent-path reference the engine
+// cannot express. The same view resolves the week's own Roman numeral too
+// (num_roman, arabic num kept alongside it for a tradition that wants it),
+// the day-of-month of its first and last in-month day (first_dom/
+// last_dom), and single_day (true for a one-day week) -- the punctuation
+// choice between Ian 1 and Ian 1-2 this logic-less engine cannot make for
+// itself, so the heading below picks the dash only inside an inverted
+// single_day section.
//
// The engine also rejects an empty tag path outright (a bare-dot section or
// variable is a parse error, not an invented "current context" behaviour),
@@ -46,10 +53,14 @@
// per month with its weeks dotted-and-paginated underneath, because it
// walks the months-then-weeks nesting directly in its own hand-built TOC
// loop. Typst's outline instead builds its table of contents automatically
-// from real document headings, so this stays a flat list of "Month . Week
-// N" headings rather than being restructured into two heading levels --
-// changing outline depth/structure is a bigger, riskier change than this
-// defect calls for. Defect 2 DID add a "is this the month's first week"
+// from real document headings, so this stays a flat list of week headings
+// rather than being restructured into two heading levels -- changing
+// outline depth/structure is a bigger, riskier change than this defect
+// calls for. Each heading is the week's own Roman numeral plus the span
+// of in-month dates it covers (e.g. Hebdomada I (Ian 1-2)), with no month
+// name repeated -- the month heading below is a separate, non-heading
+// BANNER (not part of the outline) that already establishes it once per
+// month. Defect 2 DID add a "is this the month's first week"
// flag to the view model (lib/render/view.ml's own [first], the same
// "cheap flag beats invented template logic" call [last] already made
// elsewhere) -- used below for a separate, non-heading month BANNER
@@ -125,7 +136,7 @@
#text(size: 15pt, weight: "bold")[{{month_name}} {{year}}]
]
{{/first}}
-= {{month_name}} #sym.dot.c {{term.week}} {{num}}
+= {{term.week}} {{num_roman}} ({{month_abbr}} {{first_dom}}{{^single_day}}--{{last_dom}}{{/single_day}})
{{#days}}
{{#in_month}}