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

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 suivante provoquera une erreur :

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

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 :

Par exemple, ce que vous aimeriez probablement faire dans ce cas, c'est juste placer un seul espace dans le signet. Si tel est le cas, il 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).


Source: Token not allowed in PDFDocEncoded string