subfig против упражнения: Ошибка LaTeX: не в режиме внешнего par

subfig против упражнения: Ошибка LaTeX: не в режиме внешнего par

Я могу использовать subfigпакет в своих документах, но не в exerciseсреде:

\documentclass{scrreprt}

\usepackage{exercise}
\usepackage[demo]{graphicx}
\usepackage{subfig}

\newcommand{\onefigure}[2]{%
\includegraphics[#1]{../../figures/ece1229/#2}%
}

\newcommand{\fourfigures}[5]{%
\begin{figure}%
\centering%
\subfloat[][]{\onefigure{scale=#1}{#2}}%
\qquad%
\subfloat[][]{\onefigure{scale=#1}{#3}}%
\qquad%
\subfloat[][]{\onefigure{scale=#1}{#4}}%
\qquad%
\subfloat[][]{\onefigure{scale=#1}{#5}}%
\end{figure}%
}

\begin{document}

\begin{Exercise}
%\onefigure{scale=0.2}{blah1}
\fourfigures{0.2}{blah1}{blah2}{blah3}{blah4}
\end{Exercise}

\end{document}

Когда подплавающий элемент встроен в упражнение, я получаю ошибку «Не во внешнем режиме», похожую на ошибку в вопросе! Ошибка LaTeX: не в режиме внешнего пар.. В этом вопросе ошибка была в том, что плавающий элемент не допускается на мини-странице.

Я предполагаю, что есть похожее ограничение для float в среде упражнений. Учитывая это ограничение, есть ли способ организовать несколько изображений в группы, как в subfig, но каким-то образом, который все еще совместим с упражнениями?

решение1

Это позволяет избежать использования поплавков внутри Exerciseсреды.

\documentclass{scrreprt}
\usepackage[margin=.5in]{geometry}
\usepackage{exercise}
\usepackage[demo]{graphicx}
\usepackage{stackengine,lipsum}

\newcommand\fourfigures[5]{%
\par\medskip{\centering%
\stackunder[6pt]{
\stackunder{\includegraphics[width=#1\textwidth]{#2}}{(a)}
\qquad%
\stackunder{\includegraphics[width=#1\textwidth]{#3}}{(b)}
}{
\stackunder{\includegraphics[width=#1\textwidth]{#4}}{(c)}
\qquad%
\stackunder{\includegraphics[width=#1\textwidth]{#5}}{(d)}
}\par}
}

\begin{document}
Pre-exeercise \lipsum[13]
\begin{Exercise}
In Exercise \lipsum[13]
\fourfigures{0.3}{blah1}{blah2}{blah3}{blah4}
\captionof{figure}{This is my figure caption}
\end{Exercise}

\begin{Exercise}
Next exercise \lipsum[13]
\fourfigures{0.2}{blah1}{blah2}{blah3}{blah4}
\captionof{figure}{This is my figure caption}
\end{Exercise}

\end{document}

введите описание изображения здесь

решение2

Часть ответа была предоставлена ​​в комментариях (удаление рисунка и непосредственное использование includegraphics), но требуется дополнительная работа для восстановления функций, доступных в среде рисунка. В частности, требуется ручная настройка интервалов, а подписи должны быть сделаны по-другому.

Что касается интервала, то по умолчанию он, похоже, не выбирается разумно includegraphics, и часть моих графиков может оказаться за краем страницы:

\includegraphics[scale=0.7]{../../figures/ece1229/ps4p1PlotAdEquals0DegreesFig1}
\includegraphics[scale=0.7]{../../figures/ece1229/ps4p1PlotAdEquals90DegreesFig2}
\includegraphics[scale=0.7]{../../figures/ece1229/ps4p1PlotAdEquals180DegreesFig3}
\includegraphics[scale=0.7]{../../figures/ece1229/ps4p1PlotAdEquals270DegreesFig4}

четыре цифры

Отрегулировав интервалы вручную и используя пакет captions, я могу получить что-то близкое к виду figure+ subfloat:

\begin{center}
\captionsetup{type=figure}
\includegraphics[scale=0.7]{../../figures/ece1229/ps4p1PlotAdEquals0DegreesFig1}
\qquad
\includegraphics[scale=0.7]{../../figures/ece1229/ps4p1PlotAdEquals90DegreesFig2}
\par\vspace{5mm}
\includegraphics[scale=0.7]{../../figures/ece1229/ps4p1PlotAdEquals180DegreesFig3}
\qquad
\includegraphics[scale=0.7]{../../figures/ece1229/ps4p1PlotAdEquals270DegreesFig4}
\caption{Plots of ....}
\label{fig:fourangles}
\end{center}

четыре цифры 2

К сожалению, я потерял subfigмаркеры (a), (b), (c), (d), но это, по крайней мере, близко к тому.

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