Ich habe diese Fehlermeldung „nicht im äußeren Par-Modus“ für \begin{figure}
oder \begin{table}
nach der Verwendung erhalten \footnote
.
Das \footnote
ist 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
\insert
ist ein TeX-Grundelement. Daher wird beim Definieren eines insert
Floats \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.sty
es 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 \insert
und das ist sehr schlecht, weil es \insert
sich 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 newfloat
Paket 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.