e90eead2af
CI / Format (ruff format) (push) Successful in 32s
CI / Sync project version with tag (push) Has been skipped
CI / Type check (ty) (push) Successful in 33s
CI / Format (ruff format) (pull_request) Successful in 37s
CI / Lint (ruff check) (pull_request) Successful in 38s
CI / Sync project version with tag (pull_request) Has been skipped
CI / Lint (ruff check) (push) Successful in 39s
CI / Type check (ty) (pull_request) Successful in 43s
CI / Tests (push) Successful in 4m52s
CI / Tests (pull_request) Successful in 4m52s
CI / Bump version, tag, and update changelog on merge to master (push) Has been skipped
CI / Bump version, tag, and update changelog on merge to master (pull_request) Has been skipped
shower_containment_depth_90/95's title contains a literal "%" (e.g. "...(90% of deposited energy)"), which usetex reads as a comment marker and aborts LaTeX compilation. Since render_all processes reduced JSON files in sorted filename order, this killed every plot id sorting after these two in the same run. Escape title/xlabel once, centrally, in render()'s dispatch (the one place every renderer kind draws them from before handing off to plotstyle/matplotlib) rather than at each catalog.py call site, so any future catalog title with a %, &, #, etc. is covered automatically. _plot_metadata keeps using the unescaped Reduced for the gallery YAML, since that's not LaTeX. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>