| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
pdftotext -layout of the shipped grid.ms showed only 3-4 of 7 columns and
roughly a third of each month's day numbers: tbl's plain columns (no
w()) size to their widest single entry and never wrap, so a long
fallback slug (some run past 40 characters) forced every column that
wide, the table ran far past the page, and whatever fell past the
physical edge was gone, not merely ugly. groff exited 0 throughout
(warnings, not errors), so make check-templates reported OK on a broken
artefact.
Fixed both halves. (a) The table now fits: true landscape via gropdf's
own -P-pa4l (an in-document Xpapersize=a4l escape was tried and
rejected -- it does not rotate the page in this groff), ms's own title
macro widened back out after narrowing the line length for the title
text (a second, independent way the original lost its width, found by
reading s.tmac), and every column rewritten as a genuine tbl text-block
(T{/T}, not a plain w() cell -- w() alone does not wrap, confirmed
against tbl's own generated troff code) so long, hyphenated slugs wrap
at their own hyphens instead of forcing the column wider. (b)
check-templates now captures groff's stderr per template and fails the
target if it is non-empty, rather than trusting groff's exit code.
Verified: 0 warnings (was 12), pdftotext -layout shows all 7 columns and
every day number for all 12 months (was 3-4 columns, ~12-23 of each
month's day numbers). The golden fixture is regenerated: 0 "{{", 12
month headings, exactly one Ianuarius, and each week's block (now spread
across several physical lines by the T{/T} wrap) carries exactly 6 tabs
joining its 7 cells.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Three flavours, not six: a month grid in Markdown or plain text is a
worse artefact than the booklet already is, and shipping a template we
would not use ourselves is maintenance with no reader.
These are the first templates to use weeks and in_month, so this is
where the view model earns its keep -- the booklet and the grid come
from one model with no second code path.
Every cell carries a per-cell 'last' boolean (already in the view). A
table row needs a separator BETWEEN cells and the engine deliberately
has no 'unless last' construct; the rule is shape the data, not the
template. Without it the LaTeX grid emits eight columns for seven
cells and pdflatex rejects the file.
Day cells resolve their label as {{#name}}{{la}}{{^la}}{{slug}}{{/la}}
{{/name}}, never a bare {{name.la}}: the enclosing month object has
its own name.la, and the engine's scope lookup falls back outward, so
a bare dotted lookup would render the month's own Latin name on every
day lacking one -- a wall calendar where every day reads "January".
Verified on the goldens: Ianuarius appears exactly once per file, the
month heading, never as a day label.
|