Que signifie l’erreur : « Token not allowed in PDFDocEncoded string » ?#

  • Message : Token not allowed in PDFDocEncoded string

  • Origine : extension hyperref

L’extension hyperref produit cette erreur quand elle ne sait pas comment transformer quelque chose en un « caractère » qui ira dans l’un de ses champs de données du PDF. Par exemple, le code suivant provoquera une erreur :

\newcommand{\filled}[2]{%
  #1%
  \hfil
  #2%
}
\section{\filled{truc}{bidule}}

Ici, hyperref vous indique qu’il procéde à une modification :

removing `\hfil' on input line ...

Cette suppression de la commande\hfil n’est pas surprenante : comment feriez-vous pour composer l’effet d’une commande \hfil dans un signet de PDF ?

L’extension vous permet de définir une méthode alternative pour de telles choses avec la commande \texorpdfstring. Elle prend deux arguments :

  • le premier est ce qui est composé ;

  • le second est ce qui est mis dans le signet.

Par exemple, si vous cherchez à placer un seul espace dans le signet, il vous faudrait alors écrire ceci :

\newcommand{\filled}[2]{%
  #1%
  \texorpdfstring{\hfil}{\space}%
  #2%
}
\section{\filled{foo}{bar}}

Avec cette définition, l’exemple est fonctionnel (hyperref connait la commande \space).