subfig vs exercício: Erro LaTeX: Não está no modo par externo

subfig vs exercício: Erro LaTeX: Não está no modo par externo

Consigo usar o subfigpacote em meus documentos, mas não em um exerciseambiente:

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

Quando o subfloat está incorporado em um exercício, recebo um erro "Não está no modo de par externo", semelhante ao da pergunta! Erro LaTeX: não está no modo par externo. Para essa pergunta, o erro ocorreu porque um float não é permitido em uma minipágina.

Presumo que exista uma restrição semelhante para carros alegóricos em ambientes de exercícios. Dada essa restrição, existe uma maneira de organizar várias imagens em grupos como no subfig, mas de alguma forma que ainda seja compatível com o exercício?

Responder1

Isso evita o uso de flutuadores dentro do 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}

insira a descrição da imagem aqui

Responder2

Parte da resposta foi fornecida nos comentários (removendo a figura e usando includegraphicsdiretamente), mas é necessário algum trabalho adicional para recuperar os recursos disponíveis no ambiente da figura. Em particular, é necessário o ajuste manual do espaçamento e as legendas devem ser feitas de forma diferente.

No espaçamento, por padrão o espaçamento não parece ter sido escolhido de forma inteligente includegraphicse parte dos meus gráficos pode acabar fora da borda da 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}

quatro figuras

Com o espaçamento ajustado manualmente, e usando o captionspacote, consigo obter algo próximo de um visual 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}

quatro figuras 2

Infelizmente, perco os subfigmarcadores (a), (b), (c), (d), mas isso é pelo menos próximo.

informação relacionada