Nicht im Outer-Par-Modus ... Wie kann ich wissen, in welchem ​​Modus ich mich befinde?

Nicht im Outer-Par-Modus ... Wie kann ich wissen, in welchem ​​Modus ich mich befinde?

Ich habe diese Fehlermeldung „nicht im äußeren Par-Modus“ für \begin{figure}oder \begin{table}nach der Verwendung erhalten \footnote.

Das \footnoteist richtig.

Vermutlich liegt ein Problem bei einem von mir verwendeten Paket vor.

Gibt es eine Möglichkeit herauszufinden, woher dieses Problem kommt?

\documentclass[14pt,fleqn,twoside,openright]{book}
\usepackage[square,sort,comma,numbers]{natbib}
\bibliographystyle{siam} 
\usepackage{amsmath,amsfonts}\usepackage{amssymb}
\usepackage[bottom]{footmisc} 
\usepackage{graphicx,xcolor}
\usepackage{multicol,enumerate}
\usepackage{wrapfig}
\usepackage{framed}
\usepackage{fancybox}
\usepackage{enumerate}

\usepackage{subfigure}
\usepackage[avantgarde]{quotchap} 
\usepackage{makeidx}
\makeindex
\usepackage{fancyhdr}
\usepackage[heightrounded,footskip=50pt,headheight=30pt,head=17pt,headsep=20pt,twoside,a4paper,
bindingoffset=1.4 cm,left=1.4cm,right=1.5cm,top=3cm,bottom=3.5cm]{geometry}

\usepackage{float}
\newfloat{insert}{tbh}{lop}
\floatname{insert}{insert}
\newfloat{program}{tbhp}{lop}
\floatname{program}{Program}
\begin{document}
\footnote{test}
\begin{insert}[tb]
\centering
\includegraphics[width=0.7\textwidth, angle=0]{insertion}
\end{insert}
\end{document}

Antwort1

\insertist ein TeX-Grundelement. Daher wird beim Definieren eines insertFloats \insert(und \endinsert) neu definiert, was die Ursache Ihres Problems ist.

Um das Problem zu lösen, definieren Sie den Float stattdessen wie folgt insertion:

\usepackage{float}
\newfloat{insertion}{tbh}{lop}
\floatname{insertion}{insert}

%...

\begin{insertion}
  %...
\end{insertion}

Antwort2

Sie können float.styes so beheben, dass Sie vor einer riskanten Definition gewarnt werden. Da definiert werden \begin{whatever}muss \whatever. In Ihrem Fall wird das Paket, so wie es ist,neu definieren \insertund das ist sehr schlecht, weil es \insertsich um ein Primitiv handelt (das im Kontext von Floats verwendet wird, aber nicht wirklich relevant ist, obwohl es der Grund für die rätselhafte Fehlermeldung ist).

\documentclass{book}

\usepackage{float}

% fix \newfloat
\makeatletter
\let\@float@newfloat\newfloat
\renewcommand{\newfloat}[3]{%
  \expandafter\@ifdefinable\csname #1\endcsname{%
    \@float@newfloat{#1}{#2}{#3}%
  }%
}
\makeatother
% end of fix

\newfloat{insert}{tbh}{lop}
\floatname{insert}{insert}
\newfloat{program}{tbhp}{lop}
\floatname{program}{Program}
\begin{document}
\footnote{test}
\begin{insert}[tb]
\centering
\includegraphics[width=0.7\textwidth, angle=0]{insertion}
\end{insert}
\end{document}

Mit diesem Fix erhalten Sie den Fehler

! LaTeX Error: Command \insert already defined.
               Or name \end... illegal, see p.192 of the manual.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.16 \newfloat{insert}{tbh}{lop}

Dadurch wird deutlich, dass Sie keinen Float-Typ mit dem Namen definieren können insert. Wählen Sie nun einen anderen Namen.

Ich empfehle, das modernere newfloatPaket zu verwenden, wenn Sie die Funktion nicht benötigen \restylefloat.

\documentclass{book}

\usepackage{newfloat}

\DeclareFloatingEnvironment[
  filext=lop,
  listname={List of Inserts},
  name=Insert,
  placement=htbp,
]{insertion}

\begin{document}
\footnote{test}

\begin{insertion}[tbp]
\centering
\includegraphics[width=0.7\textwidth, angle=0]{insertion}
\end{insertion}

\end{document}

Dieses Paket würde standardmäßig eine Warnung ausgeben, wenn der gewählte Umgebungsname bereits vergeben ist.

verwandte Informationen