12 KiB
name: ARC PDF + Print posture rendering session plan — XeLaTeX templates + AldineXXI sample images description: Dedicated session to build both Postures (PDF + Print) as LaTeX templates, render the Readings typology spec as PDF, and produce sample-image pairs for the AldineXXI page rewrite's Postures section. Two-birds: deliver the deferred Print/PDF posture spec sections AND the AldineXXI assets in one focused session. type: project originSessionId: a5411fd1-4a96-43e7-aa1a-1a50d8951a8f
Context
The Print/PDF posture is named in AldineXXI-specification.md (Prologue Postures line 64; §II.d line 1237) but the actual stylesheet/template work is deferred. Per the spec:
- Print posture: browser/PDF rendering for a reader who prints from the site. Asymmetric Van de Graaf canon (paper has its own tradition; spread is a fold). Always asymmetric, regardless of marginalia density.
- PDF posture: downloadable finely-set form, mirrors the screen's per-piece composition (§II.d). Asymmetric when the piece carries marginalia; symmetric when it does not.
This session does both postures in one focused day, using the Readings typology-spec amendment (commit 5792286, 2026-05-14) as test substrate. The Readings entry is dense enough to stress page-flow, multi-language typography (French + Latin + Greek), block quotation, marginalia, italic discipline, and small caps — most of what posture work must handle. Tier-1 typography choice: XeLaTeX + pandoc (per steward 2026-05-14: do this properly once; revisit Typst when it overtakes LaTeX for this domain).
Two-birds rationale
The AldineXXI page rewrite (memory: session-2026-05-10-aldine-xxi-chavruta-and-capsule-design.md) will want sample images illustrating each posture in §I (Postures section). Building both posture templates in the same session produces those images as a natural byproduct.
Pre-session verification (already confirmed 2026-05-14)
- pandoc — 3.9.0.2 installed at
/opt/homebrew/bin/pandoc - MacTeX 2026 — installed at
/usr/local/texlive/2026;xelatex/lualatex/pdflatex/tlmgrat/Library/TeX/texbin/ - IBM Plex Sans — 12+ weights+styles as TTF in
~/Library/Fonts/ - IBM Plex Mono — 10 weights+styles as TTF in
~/Library/Fonts/ - EB Garamond — installed (including SC small-caps variant as OTF:
EBGaramondSC.otf); also Garamond Premier Pro (Adobe) for richer fallback if needed - pdftoppm — installed at
/opt/homebrew/bin/pdftoppm(for PDF → PNG image extraction)
Optional (nice-to-have, not required):
- ImageMagick (
brew install imagemagick) — for advanced PNG manipulation;pdftoppmcovers basic extraction needs - Verify specific EB Garamond weights when session opens: Regular, Italic, Bold, Bold-Italic. If any are missing, install via Homebrew cask (
brew install --cask font-eb-garamond) — but the steward has the Adobe Garamond Premier Pro as premium fallback regardless
Session goals (~6 hours, structured)
Hour 1 — Setup + minimal XeLaTeX template
- Working directory:
~/_Dev/animal-davidglidden-eu/tools/latex/(new) template-pdf-posture.tex— minimal XeLaTeX templatetemplate-print-posture.tex— minimal XeLaTeX template (twoside)- Font registration via
fontspec:\setmainfont{EB Garamond}(reading layer per §I)\setsansfont{IBM Plex Sans}(navigation register)\setmonofont{IBM Plex Mono}(apparatus register)
- Basic
\usepackage{geometry}with reasonable defaults - Pompeian palette as
xcolordefinitions (light theme; dark theme deferred) - First render of a single Readings entry paragraph; confirm fonts render correctly
Hour 2 — PDF posture template (per §II.d, content-driven)
Build out PDF posture support for:
- §I Typographic Core — fontspec stack, font-scale factors per §I (Plex Sans/Mono scale to match Garamond optical size)
- §II Spacing Scale — silence taxonomy (the leading, paragraph spacing, between-section breathing)
- §II.d Page composition — content-driven: asymmetric when piece carries marginalia, symmetric when it does not. Implement as a posture flag in the document preamble; default behavior is content-driven
- §III Color — light-theme Pompeian palette; dark theme deferred
- §I.b Lists — both bullet and definition lists; navigation lists vs reading lists
- §VII Apparatus — dateline (Plex Mono mono-but-not-code register), Sources block (hanging indent), footnotes, captions
- §XII Sidenotes / marginalia — using
sidenotespackage or custom marginalia commands; markerless default, marker-anchored fallback - Code blocks —
code.sourceCodestyling per §I.c (warm-tinted background)
Render the Readings entry; iterate until the page reads as a faithful translation of the screen version.
Hour 3 — Critique + iterate on PDF posture
- Surface what breaks: page breaks at wrong places, hyphenation issues, multi-language quirks, small-caps inconsistencies, microtypography gaps
- Pull out
microtypepackage (production microtypography: character protrusion, font expansion, additional kerning) - Address discoveries; tune the template
- This is where the §II.e+ Print/PDF posture spec sections get their rough draft material: write down what posture rules emerged from rendering
Hour 4 — Print posture template (twoside, Van de Graaf, asymmetric-always)
Switch posture flag to print:
\documentclass[twoside]{book}ormemoirclassgeometrywith Van de Graaf canon proportions (margins 1:1:2:2 or finer Tschichold ratios)- Mirrored margins (
oddsidemargin/evensidemargin) so verso/recto compose as a spread - Asymmetric vessel always active regardless of marginalia content (per spec line 1239)
- Header/footer matter: running heads per §VII.f; folios
- Render the same Readings entry — now as a spread
Hour 5 — Sample-image preparation for AldineXXI page rewrite
Render both postures of representative pieces, capture as PNG via pdftoppm:
- PDF posture sample: a piece WITH marginalia (asymmetric — e.g., a Hearth-style piece, or the AldineXXI spec itself) at typical screen-mirror scale; single-page or stacked-pages view
- PDF posture sample: a piece WITHOUT marginalia (symmetric — e.g., a Glimpse caption-only piece or short Fragment); single-page
- Print posture sample: the same WITH-marginalia piece, now as a Van de Graaf spread (two facing pages); the asymmetry of the spread is the point
- Print posture sample: a piece without marginalia, still asymmetric (per the always-asymmetric rule); contrast with PDF symmetric version
Naming: static/img/postures/posture-pdf-asymmetric.png, posture-pdf-symmetric.png, posture-print-spread-with-marginalia.png, posture-print-spread-without-marginalia.png. Resolution: high enough for retina display in the AldineXXI page (likely 2x intended display, ~300dpi from pdftoppm).
Hour 6 — Document the template + rough-draft posture spec sections
- Capture the rendering session's learnings as rough notes for the §II.e+ Print/PDF posture spec sections in AldineXXI
- Document the templates:
tools/latex/README.mdexplaining build commands, posture flags, font requirements, what each template handles - Surface unresolved questions for steward decision (e.g., specific Van de Graaf ratio, whether ARC adopts strict Tschichold or a refined variant, dark-theme PDF rendering)
- Pickup notes for the next iteration (font kerning if it bothers you, baseline grid if it matters)
Test substrate
Primary: the Readings entry in content-typology-specification.md (lines after Gloss, before "### Draft definitions"). Dense, multi-language, marginalia-friendly, ~2500 words. Stresses everything posture work must handle.
Secondary (if Hour 5 has time): the AldineXXI spec §I-§II.d itself — a longer document that exercises multi-page layout, running heads, folios, cross-references.
Output artifacts
After session, working directory should contain:
tools/latex/
├── README.md # build instructions, posture flags
├── template-pdf-posture.tex # PDF posture template
├── template-print-posture.tex # Print posture template
├── arc-typography.sty # shared font + color + spacing definitions
├── pandoc-pdf-posture.yaml # pandoc invocation config
├── pandoc-print-posture.yaml # pandoc invocation config
└── samples/
├── readings-entry-pdf-posture.pdf
├── readings-entry-print-posture.pdf
└── images/
├── posture-pdf-asymmetric.png
├── posture-pdf-symmetric.png
├── posture-print-spread-with-marginalia.png
└── posture-print-spread-without-marginalia.png
Plus:
- Rough draft of §II.e (or wherever they land) — Print posture spec section + PDF posture spec section — saved to
docs/AldineXXI-Codex/drafts/postures-rough-draft-YYYY-MM-DD.md - Sample images copied to
static/img/postures/for AldineXXI page rewrite use
Pickup notes for future-Claude or steward
- Read this file first; it's self-contained.
- DO NOT touch code before confirming the pre-session checklist; if anything is missing, install before starting
- Per CLAUDE.md governance, this session is [HARDENING] at minimum (addresses class of failure in deferred-posture-spec; brings two specs to first-render) — though arguably it's spec implementation against an already-agreed direction, which is fine to proceed as
[FIX]-style execution. Steward to clarify if escalation needed. - The Readings spec amendment
5792286is the test substrate; the spec already references the typology entry by name in commit body - The session should result in TWO commits: (1)
tools/latex/template scaffolding; (2) AldineXXI §II.e+ posture spec rough draft + sample image attachment - DO NOT deploy the site during this session — the work is template + assets + spec rough draft, not site-content
- The font stack is the steward's installed system fonts (TTF in
~/Library/Fonts/), not the site's_site/fonts/woff2 files. fontspec uses system fonts directly. The woff2 files remain authoritative for the WEB delivery; LaTeX uses TTF/OTF for the PDF/Print delivery. Two delivery surfaces, two font formats, same typeface intent. - Microtypography is the quality lift.
\usepackage{microtype}with appropriate config (character protrusion, font expansion, additional kerning, tracking for all-caps) is the single most important quality move. Don't skip. - Hyphenation patterns: French + Latin + Greek + English content needs polyglossia or babel with appropriate language packages.
\usepackage{polyglossia}is current best. - The image-capture trick:
pdftoppm -r 300 -png input.pdf output_prefixproduces high-resolution PNG; trim/frame in Preview or viaconvert(if ImageMagick installed).
Connection to other open arcs
- AldineXXI page rewrite (memory:
session-2026-05-10-aldine-xxi-chavruta-and-capsule-design.md) needs sample images for the §I Postures section. This session produces them. - Readings spec (commit
5792286, memory:project-gloss-vs-commentary-distinction.md) is the substrate. This session is its first rendered exercise. - Chamber cruft restoration (memory:
project-chamber-cruft-restoration.md) is independent of this session; runs on its own arc. - L1 recall fix (memory:
project-L1-recall-fix-session-plan.md) is independent; runs on its own arc.
Open questions for the session itself
- Which Van de Graaf ratio variant? The classic canon (1:1:2:2 margins) or a refined Tschichold ratio? The masters in chamber (Tschichold, Bringhurst) likely have the answer; check the chamber if uncertain.
- Hyphenation: strict Knuth-style or relaxed for narrow measures? Print and PDF may want different settings (Print's spread allows wider measures; PDF's screen-mirror may need narrower).
- Drop caps: §I governs in HTML; how does this translate to LaTeX?
lettrinepackage is standard; check if it honors the right typeface and integrates with EB Garamond cleanly. - Small caps:
\textsc{}vs proper SC font (EB Garamond SCis available as separate OTF). The SC OTF gives true small-caps;\textsc{}synthesizes from regular if no SC font is registered. For Aldine-grade work, true SC is the floor. - Dark-theme PDF rendering: deferred from this session, but worth noting whether the template can be extended later via a
--variable=theme=darkpandoc flag.