Certains journaux demandent à ce que le corps de document soit séparé des figures et des tableaux. Je vous donne ici quelques astuces pour automatiser l’envoi automatique des figures en fin de documents.
Je ne me prononcerai pas sur le bien-fondé de ce choix éditorial, même si franchement, je vois franchement pas l’intérêt d’une telle contrainte (ni pour l’auteur ni pour les reviewers), mais les voies de l’édition scientifique sont impénétrables.
Du coup, je vais plutôt me contenter de vous donner une solution (presque) clef en main.
Table des matières
Package enfloat
Le plus simple pour ce faire est d’utiliser le bien nommé package endfloat. Une fois chargé, celui-ci se charge d’envoyer en fin de document toutes les figures (environnements figure
et figure*
) et tableaux (environnement table
et table*
). A l’emplacement théorique du flottant un question, enfloat insère alors un texte de remplacement du style :
[Figure 1 about here.]
Précautions quant à la syntaxe
Le package se contente en fait de parser le code source à la recherche des balises de début et de fin d’environnement, avant de balancer le tout en fin de document. Ce parser est très rudimentaire car il n’utilise pas d’expression régulière mais bien des chaînes de caractères. Si vous ne pannez rien à la phrase précédente, je la reformule plus simplement : faites bien attention dans votre code, sinon ça fait nimp’ !
Pour un tableau par exemple, il faut en effet que la syntaxe soit la suivante :
blabla \begin{table} % Mon tableau \end{table} blabla |
Il faut donc que votre code ait exactement la structure suivante :
- texte
- retour à la ligne
- \begin{table}
- contenu de l’environnement
- \end{table}
- retour à la ligne
L’erreur est d’avoir des espaces après le \begin{table}
ou le \end{table}
. En effet, un simple espace en trop et le parser rate la ligne en question, au risque soit d’envoyer la moitié du texte en fin de document, soit de lamentablement crasher en retournant l’erreur suivante :
(./texput.aux) (texput.ttt)) Runaway argument? ! File ended while scanning use of \efloat@xfloat. |
Prise en charge des autres environnements
Par défaut, seuls les environnements figure
, table
et leurs pendants étoilés sont pris en charge par endfloat. Si vous souhaitez ajouter d’autres types de flottants, par exemple sidewaytable :
\DeclareDelayedFloatFlavor{sidewaystable}{table} |
Problème de numérotation des figures à cause des annexes
Si vous avez des annexes (dans un environnement appendix
par exemple) et que la numérotation des figures change dans les annexes (par exemple si vous passez d’une numérotation numérique à une alphabétique), alors toutes vos figures seront numérotées comme des annexes, vu qu’elle sont en fin de document ! Les références croisées seront correctes, certes, mais très bizarres. Mais surtout, le texte de remplacement restera inchangé, donc incohérent avec les numéros de légende !
Pour pallier ce problème, le plus simple est d’enregistrer le format de numérotation des flottants avant d’entamer les annexes, puis de le rétablir avant la fin du document, là où sont censés échoir lesdits flottants. Exemple pour les figures :
\let\thefigureBack\thefigure \begin{appendix} % Mes annexes \end{appendix} \let\thefigure\thefigureBack \end{document} |
Pour aller plus loin
Le package dispose de moult d’options de personnalisation, que je vous invite naturellement à découvrir dans la documentation officielle. J’en profite aussi pour rappeler qu’il est possible de définir de nouveau types de flottants.