fix(typst-book): localize orange-book running header when lang is set#14525
fix(typst-book): localize orange-book running header when lang is set#14525cderv wants to merge 13 commits into
Conversation
✅ Snyk checks have passed. No issues have been found so far.
💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse. |
|
This is the right fix! But currently it needs to be made on: https://github.com/quarto-ext/orange-book Then once it’s on main on that repo, run to update the subtree. Modifying it directly will “work”, but only until the next time that repo is updated. (And won’t help anyone who might have forked that repo for their own changes.) It’s debatable whether that repo needs to be a subtree extension instead of fully built-in. My rationale is that it is somewhat independent of Quarto; could get forked; we could switch to another fork or another extension. Glad to discuss. https://github.com/quarto-dev/quarto-cli/blob/main/dev-docs/subtree-extensions.md For that matter it’s also possible to push your changes back to the repo with |
|
How did I forgot !! 🤦 We discussed it. Sorry for this and thanks for the reminder. |
|
You’ll also find that you can’t rebase the subtree & will get weird path errors if you try. So you’ll need to merge the branch without rebasing. (The complexity has to go somewhere I guess. Subtrees are still less confusing than submodules IMO.) |
Surfaces crossref-ch-prefix, crossref-lof-title, and crossref-lot-title from format.language into Pandoc YAML metadata so they resolve in the orange-book typst-show.typ template. Adds a small surfaceParamToMeta helper in common/meta.lua for reuse by future channel-2b localized template vars. The supplement-chapter parameter on book.with(...) drives the running header via a show heading rule; without the meta surfacing it defaulted to the English literal "Chapter" regardless of lang. The existing list-of-figure-title and list-of-table-title pipes in the same template were affected by the same gap and silently rendered as empty strings. Fixes #14524
Maps the full lang: → rendered output pipeline across HTML, LaTeX/PDF, and Typst. Documents the three downstream surfaces from format.language (Lua filter params, explicit format.metadata copies in pandoc.ts, direct TS reads in HTML extras) and the design split between crossref: block (per-document overrides) and language: block (translations) per the crossref schema.
Adds a path-scoped .claude/rules/ guard so files under src/resources/extension-subtrees/ surface a "do not edit directly" warning when touched. Fleshes out dev-docs/subtree-extensions.md with explicit "Updating an extension" and "Recovery" sections covering the rare in-tree-edit case.
…ge-book-typst-running-header-lang
… 9f786e1b4..b11e50490 b11e50490 Merge pull request #3 from quarto-ext/fix/localize-running-header 77a306cb0 Forward crossref-ch-prefix to book() for localized running header git-subtree-dir: src/resources/extension-subtrees/orange-book git-subtree-split: b11e50490d1b802c919e85bf94e1fb9d20977611
439af28 to
add83ea
Compare
|
So now I understand how it works, and it is a nice way to externalize some work, and have monorepo + external repo. Anyway, I did quarto-ext/orange-book#3 and then rebase the branch to edit change before calling dev-call command. It should be good. |
|
I don't like the way those language var are exposed. So I think want to make a deeper feature fix by leveraging newest |
# Conflicts: # llm-docs/localization-architecture.md
… b11e50490..2b59b7672 2b59b7672 Migrate localized pipes to $quarto.language.* namespace (#4) a094c0b69 Migrate localized pipes to $quarto.language.* namespace git-subtree-dir: src/resources/extension-subtrees/orange-book git-subtree-split: 2b59b76727f22bdcc3522ee56e2437f6abd81c36
…ge-book-typst-running-header-lang
The orange-book typst-show.typ template now consumes the localized crossref strings via the $quarto.language.* Pandoc template-variable namespace introduced upstream in #14530. The Lua-side surfaceParamToMeta helper and the crossref/meta.lua key list it powered are no longer needed and re-introduce YAML-header leakage for writers with +yaml_metadata_block. See llm-docs/localization-architecture.md (channel 2d) for the canonical bulk channel.
…tion Replaces the forward-reference to in-flight #14524 with the shipped form. Refreshes main_commit / analyzed_date frontmatter per .claude/rules/llm-docs-maintenance.md.
When rendering a Typst book with
lang:set to a non-English locale, the orange-book running header keeps the EnglishChapter N.prefix instead of the locale's word (e.g.Chapitre N.forlang: fr).Root cause
The orange-book
book(...)exposes asupplement-chapterparameter (default"Chapter") consumed by ashow heading.where(level: 1): set heading(supplement: ...)rule that drives the running header. The Quarto-sidetypst-show.typnever passed this parameter tobook.with(...), so the English default applied regardless oflang:. The same gap silently broke the existinglist-of-figure-title/list-of-table-titlepipes — they rendered as empty strings.The localized values live in
format.language["crossref-ch-prefix"](loaded from_language-<lang>.yml). Until #14530, no general channel exposedformat.languageto Pandoc templates without leaking keys into rendered output via+yaml_metadata_block.Fix
Consumes the
$quarto.language.*$Pandoc template-variable namespace introduced in #14530. The orange-booktypst-show.typmigrates all three pipes (supplement-chapter,list-of-figure-title,list-of-table-title) to the new namespaced form via quarto-ext/orange-book#4, pulled in viaquarto dev-call pull-git-subtree orange-book. The extension version is bumped to0.2.0.The interim Lua
surfaceParamToMetamechanism (which copied the three keys into Pandoc meta and triggered a YAML-leakage regression ontests/docs/smoke-all/2024/01/22/8389.md.snapshot) is removed.User-override path via the
crossref:block ($crossref.lof-title$/$crossref.lot-title$) is preserved as the first cascade branch in the orange-book template.list-of-figure-titleandlist-of-table-titleuse nested$if(...)$guards so on pre-#14530 Quarto the argument is omitted entirely andbook()'s built-in defaults apply.supplement-chaptergates on$if(quarto.language.crossref-ch-prefix)$...$endif$so older Quarto versions fall through tobook()'s"Chapter"literal default.Related upstream observation
While auditing the migration, the orange-book
book()implementation (@preview/orange-book:0.7.1lib.typ:606-608) was found to callmy-outline-sec(...)unconditionally — solof: false/lot: falsesuppresses only the title arg, not the outline section itself. Pre-existing behavior, out of scope here. Tracked at quarto-ext/orange-book#5.Documentation
llm-docs/localization-architecture.md(delivered with #14530) is updated in this branch: the in-flight forward-reference at the orange-book paragraph is replaced with the shipped channel-2d form, and frontmattermain_commit/analyzed_dateare refreshed per.claude/rules/llm-docs-maintenance.md.The subtree workflow guards introduced earlier in this branch (
.claude/rules/extension-subtrees.md,dev-docs/subtree-extensions.mdadditions) remain.Important
This branch contains subtree-pull commits and cannot be rebased — merge to
mainwithout rebasing. A merge commit fromupstream/mainis included on the branch to make the dependency on #14530 explicit.Fixes #14524
Checklist
I have (if applicable):