Repository navigation
Install dehyph-exptl for pinned German hyphenation patterns - #15076
Merged
Merged
Conversation
The map held suffixes and the package was always built as
`hyphen-<name>`, so `ngerman-x-latest` (from `\selectlanguage{ngerman-x-latest}`
or the `hyphenrules` environment without dehyph-exptl) asked tlmgr for the
nonexistent `hyphen-ngerman-x-latest`. The map now holds full package
names and the language name is validated instead of the package name,
following rstudio/tinytex#517.
Also apply the first-word rule for babel-german descriptions such as
`German (current orthography)`, as in tinytex's `hyphen_pkgs()`.
The babel regex now only reads warning blocks, like tinytex's
`latex_warning()`, instead of the old "any babel warning in the log"
guard, so a `(babel)` continuation of an Info message can't produce a
package. That Info message is only seen in babel's source, not observed
in real logs.
Part of #15035.
…yglossia Only the first babel warning was used, so each extra language cost one more full compilation, and polyglossia warnings were not detected at all. Use the same regexes as tinytex's `check_babel()` and `check_polyglossia()`, collect every match, and install the deduplicated packages in one go. Part of #15035.
The hyphenation package table was a hand copy that drifted (4 dehyph-exptl names were missing). tinytex exports it as `hyphen.json` since rstudio/tinytex#517, so the existing daily check now reports its changes too, next to `regex.json`. The cache key changes, so the first run sets a baseline for both files without opening an issue. If `hyphen.json` is absent from the release asset the workflow warns and keeps comparing `regex.json`. Part of #15035.
The first-run step counted names inside an `echo` argument, so a failing `jq` did not fail the step and an invalid `hyphen.json` was cached as the baseline. Later runs format the cached copy with `jq` before opening an issue or refreshing the cache, so that step would fail on every run, even after upstream fixed the file, until the cache was deleted by hand. Use a checked assignment, as already done for `regex.json`, so invalid JSON fails the step before anything is cached. Part of #15035.
Collaborator
✅ 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. |
When the daily release can't be downloaded the download step exits successfully with a warning and sets no file list. With a cache already present, the compare step then looped over nothing and printed "No changes detected", so a check that never ran looked like a clean one. Detect the empty file list in the compare step, emit a warning and a `skipped` output, and report the skip in the final summary. Nothing is cached or reported in that case. Part of #15035.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follow-up to #15029 (fix for #15027). The hyphenation table in
parse-error.tswas a hand-written copy of the one in tinytex and had drifted. tinytex now generates it fromtexlive.tlpdband exports it ashyphen.json(rstudio/tinytex#517, follow-up to rstudio/tinytex#516).With
\begin{hyphenrules}{ngerman-x-latest}and no dehyph-exptl installed, babel stops withYou haven't defined the language 'ngerman-x-latest' yet. The map held suffixes and the package was always built ashyphen-<name>, so tlmgr was asked for the non-existenthyphen-ngerman-x-latestand the render failed. The package that provides these patterns isdehyph-exptl.Fix
Detection now follows tinytex
main(hyphen_pkgs(),check_babel(),detect_hyphen(),check_polyglossia()inR/latex.R):kHyphenationPackageNamesholds full package names and has the 41 entries of tinytex'shyphen.json, including the 4dehyph-exptlones. The language name is validated (^[a-z0-9-]+$) instead of the resulting package name.German (current orthography)giveshyphen-german.latex_warning()does, instead of matching any(babel)line once a babel warning exists.Package polyglossia Warning: No hyphenation patterns were loadedis detected. Packages are deduplicated and installed together, so an extra language no longer costs one more compilation.verify-tinytex-patterns.ymlalso compareshyphen.json, so the existingtinytex-patternsissue reports changes to the map. The cache key changes: the first run after merge sets a new baseline for both files and opens no issue. When the daily release can't be downloaded, the run reports the comparison as skipped (warning and summary) instead of "No changes detected", and nothing is cached.The
chineseskip list (#10291), theHyphen rules for '...' set to \l@nilfallback and unquoted names in the babel error regex only exist here and are kept.Out of scope, tracked in rstudio/tinytex#518 and left for Quarto to follow after tinytex:
\babelprovide[hyphenrules=...]warnings,hyphsubst"Unknown pattern" errors, and the Swiss German (1901) mapping tohyphen-swiss.A document with
lang: deandngerman-x-latest, rendered with the dev build without dehyph-exptl installed, now logsinstalling dehyph-exptland produces the PDF.Fixes #15035
Checklist
I have (if applicable):
AI-assisted PR
R/latex.R,R/hyphen.R)Note: autonomous AI agents submitting PRs without human oversight are not permitted — see the Code of Conduct.