diff options
| author | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-20 09:01:56 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-20 09:01:56 +0200 |
| commit | 286e362bd02e7ef4130cccb36fbeb16b4fbb5a56 (patch) | |
| tree | ee6fb2069475a6638f7e14ce89dc0b99e012ab2e /templates/ef/grid.tex | |
| parent | 6994cb2008263678c183228c97dea673babb6f1e (diff) | |
| download | colitur-286e362bd02e7ef4130cccb36fbeb16b4fbb5a56.tar.gz colitur-286e362bd02e7ef4130cccb36fbeb16b4fbb5a56.zip | |
fix(templates): clear the wall calendar's class label of the border, add sigla
Problem 1: grid.tex's \daycell pushed the rank/class line to the exact
bottom edge of its fixed-height parbox with \vfill, the same edge \hline
draws the cell's bottom rule along, so 'I classis'/'IV classis'/'II
classis' printed as if sliced by the rule. Fixed by nesting a second,
shorter parbox (\cellh minus a new \cellpad, 1.5mm) inside the
unchanged \cellh-tall outer one, so the \vfill only ever reaches to
\cellpad above the rule, never touching it. \strut on both trailing
lines belt-and-suspenders the fix for lines with no descenders.
Problem 2: each cell now also carries the day's Epistle and Gospel
references (view fields first/gospel), joined by a centred dot/bullet
rather than repeated Ep./Ev. labels -- the same compact convention
ordo.tex already uses between rank_name and colour_name. A grid cell is
only ~3.5cm wide and Holy Week's own citations run 20-30 characters each,
so class label and sigla get their own \tiny line apiece rather than
being crammed onto one line and shrunk past readability; \cellh leaves
about eleven \tiny lines of room, so two short lines cost little. Both
first and gospel are wrapped in their own conditional section so a day
missing either prints no stray separator (defensive: every day in the
shipped EF lectionary has both, but nothing guarantees that of a future
rite or overlay).
grid.ms gains the same sigla, on their own .br line, using tbl's existing
w() wrap rather than any manual line-splitting -- it was never subject to
problem 1 (tbl auto-sizes row height, no fixed-height clipping risk) and
never carried a class label to begin with, so none was added here.
grid.html gains the sigla as a small, muted block-level span; unlike the
two paper flavours it isn't boxed onto a fixed physical page, so the
browser just grows the cell rather than needing any line-budget
compromise.
Verified with two pdflatex passes and groff -ms -t -Tpdf against all
twelve 2027 months: zero Overfull warnings, 7 columns every row, class
label and sigla both fully clear of every rule. test/golden/grid-2027.*
regenerated through test_render_golden.ml's own render path (View.of_days
+ Template.render_string, the EN-with-LA-fallback lang table), not the
CLI, per this project's own standing trap about the two tables differing.
Diffstat (limited to 'templates/ef/grid.tex')
| -rw-r--r-- | templates/ef/grid.tex | 43 |
1 files changed, 41 insertions, 2 deletions
diff --git a/templates/ef/grid.tex b/templates/ef/grid.tex index 8f90372..9b7a3ef 100644 --- a/templates/ef/grid.tex +++ b/templates/ef/grid.tex @@ -32,6 +32,36 @@ % the last one, and the engine has no unless-last construct, so the flag % is data -- rendered only when NOT last. A trailing ampersand gives eight % columns for seven cells and pdflatex rejects the file outright. +% +% Border clipping, fixed: the original \daycell put \vfill directly inside +% the \cellh-tall parbox, so the rank line's own text sat flush against the +% box's bottom edge -- the identical edge \hline draws the cell's bottom +% rule along -- and printed as if sliced in half by the rule. The fix +% keeps the OUTER parbox exactly \cellh tall (every cell in a row must +% still be identical height, or the table stops being a grid), but nests a +% SECOND parbox inside it that is only \cellh minus \cellpad tall and +% carries the actual \vfill. That leaves a strip of \cellpad, genuinely +% blank, between the last line of content and the rule -- not merely +% smaller type or a hopeful \strut. \strut on both bottom lines is kept +% too, belt and suspenders, so a line with no descenders still reserves a +% descender's worth of depth. +% +% Sigla, compactly: each cell also carries the day's Epistle and Gospel +% references (view fields first/gospel), joined by a centred dot rather +% than repeating "Ep."/"Ev." labels -- the same choice ordo.tex already +% made between rank_name and colour_name, kept consistent rather than +% invented a second way. A cell is only about 3.5cm wide, and Holy Week's +% own citations run to 20-30 characters each (a Passion narrative spanning +% several chapters), so "rank_name . first . gospel" does not fit one +% \tiny line together in the worst case -- measured against the rendered +% width, not assumed. The rank line and the sigla therefore get their OWN +% line each rather than being crammed onto one and shrunk past \tiny: +% \cellh leaves ample vertical room (about eleven \tiny lines per cell), +% so two short lines cost far less than illegible type would. Both first +% and gospel are wrapped in their own conditional section (mirroring +% ordo.tex's own idiom) so a day missing either (there is none in the +% shipped EF lectionary, but a future rite or overlay is not guaranteed to +% keep that invariant) prints no stray separator. \documentclass[11pt,landscape]{article} \usepackage[a4paper,margin=10mm]{geometry} \usepackage[T1]{fontenc} @@ -51,14 +81,23 @@ % for why a fixed row height, not \arraystretch, is what makes this work. \newlength{\cellw}\setlength{\cellw}{\dimexpr(\textwidth-14\tabcolsep-8\arrayrulewidth)/7\relax} \newlength{\cellh}\setlength{\cellh}{\dimexpr(\textheight-18mm)/6\relax} -\newcommand{\daycell}[3]{\parbox[t][\cellh][t]{\cellw}{\raggedright\textbf{#1}\ \footnotesize #2\par\vfill\tiny #3}} +\newlength{\cellpad}\setlength{\cellpad}{1.5mm} +\newcommand{\daycell}[4]{% + \parbox[t][\cellh][t]{\cellw}{% + \parbox[t][\dimexpr\cellh-\cellpad\relax][t]{\cellw}{% + \raggedright\textbf{#1}\ \footnotesize #2\par\vfill + \tiny #3\strut\par + \tiny #4\strut + }% + }% +} \begin{document} {{#months}} {\LARGE\bfseries {{name}} {{year}}}\par\vspace{2mm} \renewcommand{\arraystretch}{1} \begin{tabular}{|*{7}{p{\cellw}|}}\hline {{#weekday_headings}}\textbf{ {{name}} }{{^last}} & {{/last}}{{/weekday_headings}} \\ \hline -{{#weeks}}{{#days}}{{#in_month}}\cellcolor{c{{colour}}}\daycell{ {{dom}} }{ {{name}} }{ {{rank_name}} }{{/in_month}}{{^last}} & {{/last}}{{/days}} \\ \hline +{{#weeks}}{{#days}}{{#in_month}}\cellcolor{c{{colour}}}\daycell{ {{dom}} }{ {{name}} }{ {{rank_name}} }{ {{#first}}{{first}}{{/first}}{{#gospel}}{{#first}}\ \textperiodcentered\ {{/first}}{{gospel}}{{/gospel}} }{{/in_month}}{{^last}} & {{/last}}{{/days}} \\ \hline {{/weeks}} \end{tabular} \clearpage |
