Que signifie l'erreur: « TeX capacity exceeded (...) semantic nest size »?

  • Message: TeX capacity exceeded, sorry [semantic nest size=<nombre>]
  • Origine: TeX.

\TeX a dépassé la capacité de l'un de ses types de mémoires et arrête son travail. Dans le cas présent, l'imbrication sémantique (semantic nest) dont \TeX parle correspond à la mécanique d'imbrication (nesting) de boîtes dans d'autres boîtes. Elle est ici débordée à force d'imbrications. Une commande stupide peut facilement produire cet effet :

\def\stupide{\hbox{Voici une chose \stupide à faire}}
\stupide

Utiliser les traces

L'utilisation d'une méthode de trace peut rendre ici service même si elle donne beaucoup de texte à analyser. Dans le cas ci-dessus, cela donne :

\stupide ->\hbox {
                  Voici une chose \stupide à faire}

puis une centaine de lignes de

\stupide ->\hbox {Voici une chose \stupide 
                                           à faire}

Les lignes répétées sont interrompues exactement au niveau de la commande fautive.

Bien sûr, la boucle n'est pas souvent aussi simple que cela — si \stupide appelle \insidieuse qui met elle-même en boîte le contenu de \stupide, l'effet est le même. Des lignes alternées apparaissent alors dans la trace et sont interrompues à des positions alternées.

Une précision

Deux éléments sont en fait utilisés quand vous imbriquez des boîtes. Celui non mentionné jusqu'ici est le niveau de groupement (grouping level). Le fait que vous épuisez l'imbrication sémantique ou le niveau de groupement dépend uniquement de leur taille respective dans la configuration de votre \TeX.


Sources :

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