Extraña interacción entre subfigura y algoritmo dentro de la minipágina

Extraña interacción entre subfigura y algoritmo dentro de la minipágina

Considere el siguiente código, cuyo propósito es colocar una subfigura y un algoritmo uno al lado del otro dentro de una figura flotante.

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


El problema es que se muestra el título principal Figure 2en lugar de Figure 1.

Los siguientes cambios en el código anterior producirían Figure 1, pero ninguna de estas soluciones es satisfactoria.

  1. Deshacerse de \begin{algorithm}[H]. Produce Figure 1.
  2. hacer subfigurevenirdespuésel minipage. Produce Figure 1.

Pregunta 1: ¿Por qué ocurre este problema?

Pregunta 2: ¿Existe una solución sencilla para que se muestre la subfigura (a)a la izquierda, Algorithm 1a la derecha y el título principal Figure 1?

Respuesta1

subcaptionhace algunos malabarismos con el figuremostrador y no juega bien con float.

Hack: baja del figuremostrador.

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

ingrese la descripción de la imagen aquí

Dupliqué figurepara asegurarme de que la siguiente figura tenga el número correcto.

información relacionada