Sujet : Re: cleveref & babel | babel-french ne font pas bon ménage
De : vincent.belaiche (at) *nospam* gmail.com (Vincent Belaïche)
Groupes : fr.comp.text.texDate : 25. Sep 2022, 23:11:23
Autres entêtes
Organisation : Gegeweb News Server
Message-ID : <m2fsgf17no.fsf@pc40.home>
References : 1 2 3
User-Agent : Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (darwin)
Vincent Belaïche <
vincent.belaiche@gmail.com> writes:
"news.free.fr" <jean-yves.baudais@insa-rennes.fr> writes:
>
[...]
>
Salut,
>
Merci à vous trois pour vos réponses …
>
[...]
>
Vincent.
J'ai regardé un peu le code de cleveref.sty et celui de french.ldf, et
le fond du problème c'est que tout deux surchargent \@makefntext.
Comme cleveref.sty le fait à son chargement, alors que french.ldf le
fait dans un \AtBeginDocument, french.ldf fait la surcharge en second et
cleveref en premier, alors qu'il faudrait que ce soit dans l'autre sens
pour que ça marche (ou bien il faudrait que french.ldf n'efface pas
certaines données de contexte). Donc un contournement simple pour que
tout ça fonctionne ensemble est de mettre les surcharges dans l'ordre
inverse, comme ceci :
--------8<-----------8<-----------8<-----------8<-----------8<-------
\documentclass[french]{article}
\usepackage[latin9]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{cleveref}
\usepackage{babel}
\crefformat{footnote}{#2\footnotemark[#1]#3}
\begin{document}
\makeatletter
\begingroup
% original
\let\@tempa\
cref@old@makefntext
% babel
\let\@tempb\@makefntext
% cleveref
\let\@tempc\@makefntextORI
% inverse l'ordre de surcharge
\global\let\@makefntext\@tempc
\global\let\
cref@old@makefntext\@tempb
\global\let\@makefntextORI\@tempa
\endgroup
\makeatother
Une note\footnote{\label{fn/xxx}Le texte de la note.}.
Et avec la même marque d'appel\cref{fn/xxx}.
\end{document}
--------8<-----------8<-----------8<-----------8<-----------8<-------
Bon, ce n'est pas très satisfaisant. Il vaudrait mieux que french.ldf
n'écrase pas le contexte.
--