Interação estranha entre subfigura e algoritmo na minipágina

Interação estranha entre subfigura e algoritmo na minipágina

Considere o código a seguir, cujo objetivo é colocar uma subfigura e um algoritmo lado a lado dentro de uma figura flutuante.

\documentclass{article}
\usepackage{algorithm}
\usepackage{subcaption}

\begin{document}

\begin{figure}
\begin{subfigure}[t]{.5\linewidth}
\caption{subcaption}
\end{subfigure}\hfill
\begin{minipage}[m]{.5\linewidth}
\begin{algorithm}[H]
\caption{alg caption}
\end{algorithm}
\end{minipage}\hfill
\caption{caption}
\end{figure}

\end{document}


O problema é que a legenda principal mostra Figure 2em vez de Figure 1.

As seguintes alterações no código acima produziriam Figure 1, mas nenhuma dessas soluções é satisfatória.

  1. Livre-se do \begin{algorithm}[H]. Produz Figure 1.
  2. Faça subfigurevirdepoiso minipage. Produz Figure 1.

Questão 1: Por que esse problema está ocorrendo?

Questão 2: Existe uma solução simples para ter a subfigura (a)à esquerda, Algorithm 1à direita e a legenda principal exibida Figure 1?

Responder1

subcaptionfaz malabarismos com o figurecontador e não joga bem com float.

Hack: desça do figurebalcão.

\documentclass{article}
\usepackage{algorithm}
\usepackage{subcaption}

\begin{document}

\begin{figure}[htp]
\begin{subfigure}[t]{.5\linewidth}
\caption{subcaption}
\end{subfigure}\hfill
\begin{minipage}{.5\linewidth}
\begin{algorithm}[H]
\caption{alg caption}
\end{algorithm}\addtocounter{figure}{-1}
\end{minipage}
\caption{caption}
\end{figure}

\begin{figure}[htp]
\begin{subfigure}[t]{.5\linewidth}
\caption{subcaption}
\end{subfigure}\hfill
\begin{minipage}{.5\linewidth}
\begin{algorithm}[H]
\caption{alg caption}
\end{algorithm}\addtocounter{figure}{-1}
\end{minipage}
\caption{caption}
\end{figure}

\end{document}

insira a descrição da imagem aqui

Dupliquei figurepara garantir que a próxima figura acertasse o número.

informação relacionada