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

Répondre à