Ceci est une ancienne révision du document !


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 :

  • le premier est ce qui est composé ;
  • le second est ce qui est mis dans le signet.

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

2_programmation/erreurs/t/token_not_allowed_in_pdfdocencoded_string.1617977352.txt.gz · Dernière modification: 2021/04/09 16:09 par yannick.tanguy
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0