Não está no modo de paridade externa...Como posso saber em qual modo estou?

Não está no modo de paridade externa...Como posso saber em qual modo estou?

Recebi esta mensagem de erro "não está no modo de par externo" durante \begin{figure}ou \begin{table}depois de usar o \footnote.

O \footnoteestá correto.

Presumivelmente, um pacote que estou usando está com problema.

Existe alguma maneira de saber de onde veio esse problema?

\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}

Responder1

\inserté uma primitiva TeX. Portanto, definir um insertfloat redefine \insert(e \endinsert) qual é a causa do seu problema.

Para resolvê-lo, defina o float como insertion:

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

%...

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

Responder2

Você pode consertar float.stypara avisar sobre uma definição arriscada. Uma vez que \begin{whatever}requer \whateverser definido. No seu caso, o pacote, tal como está, seráredefinir \inserte isso é uma coisa muito ruim de se fazer, porque \inserté um primitivo (que é usado no contexto de carros alegóricos, mas isso não é realmente relevante, embora seja o motivo da mensagem de erro intrigante).

\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}

Com esta correção você obteria o erro

! 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}

isso deixará claro que você não pode definir um tipo flutuante chamado insert. Agora escolha um nome diferente.

Recomendo usar o newfloatpacote mais moderno, caso não precise do \restylefloatrecurso.

\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}

Este pacote avisaria por padrão se o nome do ambiente escolhido já estiver em uso.

informação relacionada