From ee63d0890e0f8db3e0a6f61c0aa30dae51346cd5 Mon Sep 17 00:00:00 2001 From: Juergen Spitzmueller Date: Wed, 16 Oct 2024 12:05:09 +0200 Subject: [PATCH] Fix hyphenation patterns check with recent babel This was broken since 2016. See discussion in https://www.lyx.org/trac/ticket/13112 --- lib/chkconfig.ltx | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/lib/chkconfig.ltx b/lib/chkconfig.ltx index bde9d59e4b..dbe99648df 100644 --- a/lib/chkconfig.ltx +++ b/lib/chkconfig.ltx @@ -212,13 +212,14 @@ \AddPackage[\expandafter\@parse@version\fmtversion//00\@nil]{LaTeX} %%% And now, the list of available languages -% The trick is to know that \the\everyjob contains something like +% Up to 2016 \the\everyjob contains something like % \typeout{LaTeX2e <2001/06/01>} % \typeout{Babel and hyphenation patterns for american, french, german, ngerman, nohyphenation, loaded.} % All we have to do is to extract the list from there: % (1) concatenate all the messages that are displayed everytime the % format is loaded. The is done by redefining locally \typeout to % append its argument to the macro \mesg. +% But see below for recent versions of babel. \def\mesg{} {\def\typeout#1{\xdef\mesg{\mesg #1}} \the\everyjob} @@ -226,19 +227,27 @@ % (2) strip the useless parts from \mesg. This uses the fact that TeX % allows to define macros with parameters delimited by arbitrary text. \def\platexname{pLaTeX2e} +\def\langs{} \ifx\pfmtname\platexname \def\langs{japanese} \else - \def\strip#1patterns for #2, loaded.#3\endmark{\def\langs{#2}} - \expandafter\strip\mesg\endmark + \ifx\mesg\empty +% As of 2016, babel does not print out the loaded hyphenation patterns to +% the log anymore, so \mesg will be empty. For the following method, +% see https://tex.stackexchange.com/questions/330085/ + \@ifundefined{bbl@languages}{}{ + \def\bbl@elt#1#2#3#4{#1, } + \edef\@langs{\bbl@languages} + \def\strip#1, \endmark{\def\langs{#1}} + \expandafter\strip\@langs\endmark + } + \else + \def\strip#1patterns for #2, loaded.#3\endmark{\def\langs{#2}} + \expandafter\strip\mesg\endmark + \fi \fi % (3) handle the result -% FIXME: As of 2016, babel does not print out the loaded hyphenation patterns to -% the log anymore, so this discontinues to work. For possible workarounds -% (with babel), see https://tex.stackexchange.com/questions/330085/ -% Leaving this activated for the time being, since it probably still -% works with older distributions. \message{^^J\prefix checking for available hyphenation patterns... \langs} \AddVariable{languages}{\langs}