Ceci est une ancienne révision du document !


Not in outer par mode

Par exemple:

*\mbox{\marginpar{foo}}

! LaTeX Error: Not in outer par mode.

L'erreur 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.

Si votre erreur provient de \marginpar, cherchez simplement un autre moyen de placer la commande; il n'y a pas de solution générale, mais on arrive à se débrouiller au cas par cas.

Si un environnement de flottant est le coupable, il est sans doute possible d'utiliser l'option de placement H, fournie (par exemple) par le paquetage float:

\parbox{14cm}{%
  \begin{figure}[H]
  ...
  \caption{Apparemment flottant...}
  \end{figure}%
}

Cet exemple n'a pas beaucoup de sens en l'état ; cependant, il est concevable de trouver des utilisations réelles (par exemple, en utilisant un paquetage tel 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}

une construction qui était censée dessiner un cadre autour de l'image, mais qui 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 ne servait à rien. 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.


Source: Not in outer par mode

2_programmation/erreurs/not_in_outer_par_mode.1618065190.txt.gz · Dernière modification: 2021/04/10 16:33 par jejust
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0