Que signifie l'erreur: « Improper \hyphenation »?

  • Message: Improper \hyphenation
  • Origine: TeX.

Lorsqu'on souhaite spécifier une exception de coupure avec \hyphenation, il faut s'assurer que l'argument ne contient que des lettres, et des traits d'union (-) pour indiquer les points de coupure. Le problème est que, par exemple, les caractères accentués sont des glyphes dans certaines fontes (ils sont alors permis), mais que d'autres codages de fontes produisent des constructions complexes exigeant la primitive \accent. Par exemple, si l'on utilise le codage T1, \“u est un glyphe unique. Ainsi,

\usepackage[T1]{fontenc}
\hyphenation{T\"ur-stop-per}

est valide. La même exception de coupure utilisée avec le codage par défaut OT1 aurait produit cette erreur.

Voir page 463 du LaTeX Companion FIXME pour une explication des différences de caractères dans les codages principaux.


Par exemple le message d'erreur

! Improper \hyphenation will be flushed.
\leavevmode ->\unhbox 
                      \voidb@x 
<*> \hyphenation{Ji-m\'e
                        -nez}

en LaTeX, ou

! Improper \hyphenation will be flushed.
\'#1->{
       \accent 19 #1}
<*> \hyphenation{Ji-m\'e
                        -nez}

(en Plain TeX).

Comme mentionné dans la question sur les échecs de césure, Les « mots » contenant un commande de type \⟨accent⟩ ne peuvent pas être coupés en fin de ligne. Par conséquent, tout mot de ce type est considéré comme incorrect dans une commande \hyphenation{}.

La césure se fait au fur et à mesure de la mise en forme des paragraphes ; à ce moment, TeX sait quelle police est utilisée pour chaque glyphe ; il connaît donc le codage utilisé. La solution au problème consiste donc à utiliser une police de caractères qui contient le caractère accentué ; ainsi l'accent est « caché » aux mécanismes de césure et tout se passe bien.

Pour les utilisateurs de LaTeX, c'est très facile : il suffit d'utiliser \usepackage[T1]{fontenc}, et les commandes de lettres accentuées telles que le \'e dans \\hyphenation{Ji-m\'e-nez} deviennent automatiquement un seul caractère accentué avant que ne se déclenche l'algorithme de coupure de mots.


Sources:

2_programmation/erreurs/i/improper_hyphenation.txt · Dernière modification : 2022/12/01 14:32 de dbitouze
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0