Que signifie l’erreur : « Not in outer par mode » ?#
Message :
Not in outer par modeOrigine : LaTeX
Ce problème survient lorsque vous essayez mettre un élément mobile
à l’intérieur d’une boîte. Les éléments mobiles, dans ce contexte, sont
les environnements de flottants (figure ou table, par exemple)
et les commandes \marginpar (notes marginales). LaTeX ne dispose
tout simplement pas des mécanismes permettant à un flottant de flotter
hors d’une boîte. En fait, les environnements de flottants et les \marginpar
sont eux-mêmes définis à partir de boîtes, de sorte qu’ils ne peuvent pas
être imbriqués.
1. Quelques cas classiques#
Si votre erreur provient de \marginpar, cherchez simplement un autre moyen
de placer la commande et notez que, ici, il n’y a pas de solution générale.
Si un environnement de flottant est le coupable, il est sans doute possible
d’utiliser l’option de placement H, fournie (par exemple)
par l’extension float :
\parbox{14cm}{%
\begin{figure}[H]
...
\caption{Apparemment flottant...}
\end{figure}%
}
Si l’exemple n’a pas ici beaucoup de sens, il représente des situations tout à fait réelles (par exemple, en utilisant une extension telle que algorithm2e pour placer deux algorithmes côte à côte).
Un autre cas fréquent est celui où l’utilisateur veut insérer une figure quelque part dans un tableau :
\begin{tabular}{|l|}
\hline
\begin{figure}
\includegraphics{mon_image}
\end{figure}
\hline
\end{tabular}
Ce type de construction essaye de dessiner un cadre autour de l’image, mais il ne fonctionne pas. Pas plus que ça, d’ailleurs :
\framebox{\begin{figure}
\includegraphics{foo}
\end{figure}%
}
Le problème est que l’environnement tabular et la commande \framebox
empêchent l’environnement figure de jouer son rôle normal, qui est
de flotter dans le document.
La solution consiste simplement à ne pas utiliser l’environnement figure ici :
\begin{tabular}{|l|}
\hline
\includegraphics{mon_image}
\hline
\end{tabular}
À quoi servait l’environnemnt de flottant ? Tel qu’il était utilisé dans les deux premiers exemples, il n’avait aucun intérêt. Mais peut-être vouliez-vous en fait encadrer l’image et sa légende, dans un flottant ?
Il est facile d’y parvenir, il suffit d’inverser l’ordre des environnements
(ou de l’environnement figure et de la commande) :
\begin{figure}
\begin{tabular}{|l|}
\hline
\includegraphics{mon_image}
\caption{Une image}
\hline
\end{tabular}
\end{figure}
Il en va de même pour les environnements table (ou tout autre environnement
que vous auriez défini vous-même) à l’intérieur des commandes de tableaux
ou de boîtes; vous devez faire sortir l’environnement de flottant
de ces commades, d’une façon ou d’une autre.
Sources
FAQ erreurs - Lettre N, sur le site Developpez.com
LaTeX Companion, 2e édition, Frank Mittelbach, Michel Goossens, Johannes Braams, David Carlisle, Chris Rowley (Pearson, 2006)