subfig vs ejercicio: Error de LaTeX: no en modo par externo

subfig vs ejercicio: Error de LaTeX: no en modo par externo

Puedo usar el subfigpaquete en mis documentos, pero no dentro de un exerciseentorno:

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

Cuando el subflotador está integrado en un ejercicio, aparece el error "No en modo par externo", similar al de la pregunta! Error de LaTeX: no en modo par externo. Para esa pregunta, el error se debió a que no se permite un flotante en una minipágina.

Supongo que existe una restricción similar para los flotadores en entornos de ejercicio. Dada esta restricción, ¿hay alguna manera de organizar varias imágenes en grupos como con subfig pero de alguna manera que aún sea compatible con el ejercicio?

Respuesta1

Esto evita el uso de flotadores dentro del Exerciseambiente.

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

ingrese la descripción de la imagen aquí

Respuesta2

Parte de la respuesta se proporcionó en los comentarios (eliminar la figura y usarla includegraphicsdirectamente), pero se requiere trabajo adicional para recuperar las funciones disponibles en el entorno de la figura. En particular, se requiere el ajuste manual del espaciado y los subtítulos deben realizarse de manera diferente.

En cuanto al espaciado, de forma predeterminada, el espaciado no parece elegirse de forma inteligente includegraphicsy parte de mis gráficos pueden terminar fuera del borde de la página:

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

cuatro figuras

Con el espaciado ajustado manualmente y usando el captionspaquete, puedo obtener algo parecido a un aspecto 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}

cuatro figuras 2

Desafortunadamente, pierdo los subfigmarcadores (a), (b), (c), (d), pero al menos esto está cerca.

información relacionada