Problème de signet / marque-page avec pdflatex

Rédigé par alain olivetti - - Aucun commentaire
En compilant mon manuscrit de thèse avec pdflatex et en utilisant le package hyperref, je me suis aperçu dans evince (confirmer par acrobat reader et okular) que certains de mes signets ou bookmarks ne s'affichaient pas correctement. Après quelques minutes je me suis aperçu que seul ceux que j'avais rentrés ``à la main'' posaient problème (i.e. en utilisant la commande \addcontentsline). Je ne sais pas si c'est un problème de la distribution de texlive que j'utilise, en tout cas en compilant le code suivant :
\documentclass[a4paper]{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[francais]{babel} 
\usepackage{hyperref}
\begin{document}
\tableofcontents
\chapter*{Préambule}
\addcontentsline{toc}{chapter}{\textsc{Préambule}\dotfill} 
\end{document}
vous verrez que le signet ne rend pas comme il faut. Voila à quoi cela ressemble chez moi : Problème signet addcontentsline Après ``préambule'' on peut voir ``to.44em''... En cherchant sur le net, j'ai cru comprendre que le package hyperref n'appréciais pas vraiment la commande \addcontentsline. Dans certain cas, il suffit d'écrire juste avant \phantomsection. Malheureusement, dans le cas présent cela ne fonctionne pas. Qu'à cela ne tienne. Il suffit d'utiliser la même astuce que pour mettre des expressions mathématiques dans les titres de sections sans que cela ne pose problème avec les signets. Pour être plus clair, il suffit d'utiliser la commande : \texorpdfstring. Voila le code corrigé avec et sans le problème de signet :
\documentclass[a4paper]{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[francais]{babel} 
\usepackage{hyperref}
\begin{document}
\tableofcontents
\chapter*{Préambule}
\addcontentsline{toc}{chapter}{\textsc{Préambule}\dotfill} 
\addcontentsline{toc}{chapter}{\texorpdfstring{\textsc{Préambule}\dotfill}{Préambule}}
\end{document}
Comme vous pouvez le voir sur la figure ci-dessous, le deuxième signet est écrit correctement cette fois : Problème signet addcontentsline résolu