Не в режиме внешнего пар. Как узнать, в каком режиме я нахожусь?

Не в режиме внешнего пар. Как узнать, в каком режиме я нахожусь?

Я получил сообщение об ошибке «не в режиме внешнего паритета» после \begin{figure}или \begin{table}после использования \footnote.

Это \footnoteправильно.

Вероятно, проблема в используемом мной пакете.

Есть ли способ узнать, откуда возникла эта проблема?

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

решение1

\insertявляется примитивом TeX. Поэтому определение insertfloat переопределяет \insert\endinsert), что является причиной вашей проблемы.

Чтобы решить эту проблему, лучше определить поплавок следующим образом insertion:

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

%...

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

решение2

Вы можете исправить float.styтак, чтобы он предупреждал вас о рискованном определении. Поскольку \begin{whatever}требует \whateverопределения. В вашем случае пакет, как он есть, будетпереопределить \insertи это очень плохая идея, потому что \insert— это примитив (который используется в контексте плавающих чисел, но это не имеет особого значения, хотя и является причиной загадочного сообщения об ошибке).

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

С этим исправлением вы получите ошибку

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

это даст понять, что вы не можете определить тип float с именем insert. Теперь выберите другое имя.

Я рекомендую использовать более современный newfloatпакет, если эта функция вам не нужна \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}

Этот пакет по умолчанию выдаст предупреждение, если выбранное имя среды уже занято.

Связанный контент