Tag
LaTeX
7 articles
-
RGB to CMYK in Python: Pillow, LittleCMS, and the principle of checking without faking
The prepare_images.py walkthrough: converting every source image to CMYK using the FOGRA39 ICC profile via Pillow and LittleCMS, with black-point compensation. Resolution is checked at placed size: never faked, never upscaled.
-
The soft hyphen (U+00AD): the invisible character that breaks PDF text extraction
It's invisible on screen. It prints correctly. But when text is extracted from the PDF - by an accessibility checker, a search engine, or a copy-paste - U+00AD surfaces as a garbage character between syllables. Here's what it is, where it comes from, and how to find it.
-
Reliability vs. latency: running Claude through the CLI so it can fix its own mistakes
Claude's LaTeX output frequently didn't compile. The fix wasn't to prompt better - it was to close the feedback loop. What looked like a reliability problem turned out to be a latency problem.
-
PDF/X-4 from LuaLaTeX without Ghostscript: TrimBox, BleedBox, FOGRA39, and the pdfx package
Producing a PDF/X-4 press-ready file from LuaLaTeX without touching Ghostscript: the pdfx package, TrimBox/BleedBox geometry in points, FOGRA39 OutputIntent, CMYK-only color discipline, and XMP metadata - everything a print shop will verify.
-
Non-blocking preflight, or: a build that always produces a PDF
One hard stop, five soft failures, a renamed file, and a report alongside it. The design philosophy behind a preflight that never aborts - plus the pikepdf/PyMuPDF six-check implementation and the --strict flag for CI.
-
Why hand-maintained InDesign files rot - and what docs-as-code does instead
A 370-cell calendar that shifts every year. A lead's name in three places. An IBAN in an invisible text box. These are not unusual InDesign problems - they are what InDesign files become when they accumulate facts with no single home. Two projects show what the alternative looks like - and where InDesign's own global tools stop short.
-
1.8 million words, freed from Word 97 and made searchable
1,800 lecture transcripts - 1.8 million words once trapped in Word 97 files - converted to Markdown, scored and tagged by AI, and turned into a searchable discovery platform that also generates print-ready LaTeX anthologies.