Que signifie l’erreur : « Too many unprocessed floats » ?#
Message :
Too many unprocessed floats
Origine : LaTeX
Parfois, LaTeX répond à une commande \begin{figure}
ou \begin{table}
par un message d’erreur. En vous indiquant que « Trop de flottants
n’ont pas été traités », LaTeX vous indique que vos figures et tables n’ont
alors pas été placées proprement. LaTeX dispose en effet d’une quantité limitée
d’espace de stockage pour les flottants (en tout, il peut stocker par défaut
18 figures, tables ou tout flottant que vous avez définis vous-même
avec l’extension float). Si un de vos choix empêche LaTeX de composer
vos flottants et donc de les déstocker, il finira par manquer d’espace
de stockage.
Cette erreur peut également être déclenchée par des commandes \marginpar
trop nombreuses à l’intérieur d’un paragraphe. Un \marginpar
utilise
temporairement deux emplacements de stockage des flottants en attente
tant que le paragraphe en cours n’est pas composé (cela permet donc un maximum
de neuf notes marginales par paragraphe… s’il y a déjà des flottants
en attente).
Deux cas généraux peuvent être ici dégagés.
1. Le cas de la saturation de la mémoire#
Dans ce cas, LaTeX a trouvé un flottant qu’il n’arrive pas à placer. Or, il suit deux principes :
lorsque un flottant est créé, son numéro lui est définitivement attribué ;
les numéros des flottants (par type identique) se suivent dans le document.
Aussi, si LaTeX ne peut positionner un flottant, il ne peut traiter les suivants. Tous les flottants du même type s’empilent donc derrière celui-ci.
Les techniques pour résoudre le problème sont discutées dans la question « Comment gérer proprement les flottants dans LaTeX ? ».
1.1. Pour des versions de LaTeX antérieures à 2015#
Une solution alternative revient à utiliser l’extension morefloats. L’extension allouera plus d’emplacements mémoires pour des flottants, en passant de 18 emplacements à 36. Notez que le nombre d’emplacements que vous pouvez allouer restera limité, ceci même en utilisant l’extension etex : ainsi, si un flottant ne peut pas être placé pour une raison ou pour une autre, cette modification ne fera que retarder l’apparition de l’erreur.
1.2. Pour des versions de LaTeX à compter de 2015#
Le nombre par défaut de flottants pouvant être stockés passe de 18 à 52.
De plus, il existe une commande \extrafloats
qui (en supposant
qu’un format ε‑TeX est utilisé) vous permettra d’allouer beaucoup plus
de boîtes flottantes avec une limite supérieure fixée à plusieurs milliers.
Dans les faits, les versions actuelles de LaTeX exécuteront \extrafloats{1}
avant de déclarer l’erreur. Il est donc hautement improbable que vous obteniez
cette erreur sauf si plus de 32 000 registres ont été alloués.
2. Le cas d’une longue séquence de flottants#
Une longue séquence d’environnements flottants, sans texte intermédiaire, peut aussi conduire à cette erreur. À moins que les environnements ne se positionnent « ici » (et que vous leur avez permis d’y aller), il n’y aura jamais de saut de page, et il n’y aura donc jamais pour LaTeX d’opportunité pour reconsidérer le positionnement des flottants. Même si les versions modernes de LaTeX permettent de démultiplier le nombre de flottants stockables, cette situation doit être évitée car elle peut ralentir LaTeX et, dans des cas extrêmes, provoquer d’autres erreurs de mémoire insuffisante.
Bien sûr, les flottants ne peuvent pas tous tenir « ici » si la séquence de flottant est suffisamment longue : une fois la page remplie, LaTeX ne placera plus de flottants, ce qui conduira à l’erreur.
Les techniques de résolution peuvent impliquer de redéfinir les flottants
en utilisant la marque de position [H]
de l’extension float.
Il est cependant peu probable que vous vous en tiriez sans utiliser
de temps en temps la commande \clearpage
.
Sources
FAQ erreurs - Lettre T, sur le site Developpez.com
LaTeX Companion, 2e édition, Frank Mittelbach, Michel Goossens, Johannes Braams, David Carlisle, Chris Rowley (Pearson, 2006)