subfig vs exercise: LaTeX-Fehler: Nicht im äußeren Par-Modus

subfig vs exercise: LaTeX-Fehler: Nicht im äußeren Par-Modus

Ich kann das subfigPaket in meinen Dokumenten verwenden, aber nicht in einer exerciseUmgebung:

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

Wenn der Subfloat in eine Übung eingebettet ist, erhalte ich einen Fehler „Nicht im äußeren Par-Modus“, ähnlich dem der Frage! LaTeX-Fehler: Nicht im äußeren Par-Modus. Bei dieser Frage lag der Fehler daran, dass Floats in einer Minipage nicht zulässig sind.

Ich gehe davon aus, dass es eine ähnliche Einschränkung für Floats in Übungsumgebungen gibt. Gibt es angesichts dieser Einschränkung eine Möglichkeit, mehrere Bilder in Gruppen anzuordnen, wie bei Subfig, aber auf eine Weise, die immer noch mit Übungen kompatibel ist?

Antwort1

Dadurch wird die Verwendung von Floats innerhalb der ExerciseUmgebung vermieden.

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

Bildbeschreibung hier eingeben

Antwort2

Ein Teil der Antwort wurde in den Kommentaren gegeben (Entfernen der Abbildung und includegraphicsdirekte Verwendung), aber es sind einige zusätzliche Arbeiten erforderlich, um die in der Abbildungsumgebung verfügbaren Funktionen wiederherzustellen. Insbesondere ist eine manuelle Anpassung des Abstands erforderlich, und Bildunterschriften müssen anders erstellt werden.

Was den Abstand betrifft, scheint der Abstand standardmäßig nicht intelligent gewählt zu sein includegraphics, und ein Teil meiner Diagramme kann am Ende über den Seitenrand hinausragen:

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

vier Figuren

Indem ich den Abstand manuell anpasse und das captionsPaket verwende, erziele ich etwas, das einem figure+ subfloat-Aussehen nahekommt:

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

vier Figuren 2

Leider verliere ich die subfigMarkierungen (a), (b), (c), (d), aber das kommt dem zumindest nahe.

verwandte Informationen