Que signifie l’erreur : « Not in outer par mode » ?#
Message :
Not in outer par mode
Origine : 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)