Charles de Miramon a écrit :
Bonjour,
En essayant de compiler un fichier vieux d'un an, je suis retombé sur le
bogue d'incompatibilité entre varioref et l'option babel french qui fait que
varioref plante si le label d'un vpageref contient un double point du style
\vpageref{sec:blabla)
Jean-Pierre a déjà rencontré le bogue :
Voir http://www.lyx.org/trac/ticket/6420 et
http://groups.google.fr/group/fr.comp.text.tex/browse_thread/thread/402361eedcdc89a9/b8e210064e5c13d1?hide_quotes=no
La discussion complète est ici :
http://www.lyx.org/trac/ticket/6608
On y trouve la solution la plus propre, une redéfinition de la commande
de varioref provoquant l'erreur à copier dans le préambule.
La solution de Jean-Pierre de charger nameref avant varioref ne marche pas
ici (je suis sur Debian sid avec TeXLive 2009) et crache une autre erreur.
Si c'est en l'ajoutant dans le préambule, ça ne peut pas fonctionner, il
est ajouté trop tard (il faut recompiler LyX pour que ça fonctionne, cf
le patch que j'ai proposé dans la description du ticket 6608).
En chargeant hyperref après varioref cela compile mais c'est une
manipulation que l'on ne peut pas faire depuis LyX.
Il suffit de cocher la case « Utiliser le support pour hyperref » dans
Documents->Paramètres->Propriétés du PDF, puis de cocher
« Pas de cadre autour des liens » et de décocher « Couleur des liens »
pour produire un document imprimable identique au même document sans le
paquetage hyperref.
La solution que propose Jean-Pierre de forcer l'ordre de chargement des
paquets semble finalement peu stable.
J'ai passé pas mal de temps à expérimenter, mais je n'ai pas pu
convaincre les développeurs de l'instancier (cf. plus haut, il faut
toucher au code).
Est-ce que l'on ne pourrait pas modifier plutôt l'export latex pour donner
un code latex \vpageref{sec_blabla} pour éviter les deux points maudits.
Mon expérience avec nameref montre qu'il y a très peu d'espoir d'obtenir
une solution aussi spécifique : les développeurs ont pour principe de ne
pas corriger les bugs latex dans LyX. En l'occurrence, d'autant plus que
le bug de varioref est référencé dans le gestionnaire de bugs de latex
(c'est un bug de varioref, corrigé dans nameref en passant, comme on
peut le constater en regardant le code de nameref).
En tout cas c'est un bogue assez ennuyeux surtout pour le néophyte LaTeX
(auquel on vient de vanter la légendaire solidité de LaTeX ;-)
Merci de confirmer que le passage à hyperref dans LyX tel que décrit
plus haut fonctionne bien (c'est à mon avis un peu plus simple que de
coller la redéfinition de la commande de varioref dans le préambule).
Par ailleurs, l'usage local de \shorthandoff (en ERT) fonctionne bien,
je n'ai pas pu le rendre global par une commande dans le préambule, voir
mes efforts dans le bug 6608 (je m'y suis peut-être mal pris).
Ceci dit, l'usage de refstyle est envisagé pour les versions suivantes
de LyX, voir le bug
http://www.lyx.org/trac/ticket/6609
Ce paquetage est beaucoup plus puissant que prettyref (à condition de
coder les traductions) et le buf de variref disparaît si on l'utilise.
J'ai écrit quelques fichiers d'exemples illustrant les usages de
varoref, prettyref et refstyle.
--
Jean-Pierre