¿Cómo combinar listado y figura en una sola figura?

¿Cómo combinar listado y figura en una sola figura?

Estoy usando el paquete listingsy me gustaría combinar a listingy a figureen un solo flotante. Como ejemplo, estoy usando listingslo siguiente:

\begin{lstlisting}[language=XML,float=h,label=lst:transition_selector_example, 
  basicstyle=\footnotesize\ttfamily,tabsize=2,
  caption={Example SCXML document used to illustrate transition selection optimization strategies}]
<scxml>
    <state id="A">
        <transition target="B" event="e1" id="transition1"/>
        <transition target="B" event="e2" id="transition2"/>
        <transition target="B" event="e2" id="transition3"/>
    </state>
    <state id="B">
        <transition target="A" event="e3" id="transition4"/>
    </state>
</scxml>
\end{lstlisting}

Más tarde, tengo una figura con una \includegraphics, como la siguiente:

\begin{figure}[p]
\centering
\includegraphics[width=1.00\textwidth]{chapters/3/figures/firefox-transitionSelector}
\caption{Results of Transition Selection optimization strategy in Firefox}
\label{fig:firefox-transitionSelector}
\end{figure}

Me gustaría que el listado forme parte de esa figura, de modo que comparta el número de referencia de la figura y se presente en la página como una única entidad gráfica combinada.

Agradecería mucho cualquier orientación que alguien pueda ofrecer sobre cómo hacer esto.

Respuesta1

listingsy \includegraphicscada uno puede incluirse esencialmente en cualquier lugar. Lo siguiente los coloca uno encima del otro, el diseño uno al lado del otro también es posible si coloca el listado en una minipágina de un ancho que permita el gráfico al lado.

\begin{figure}[p]
\centering
\includegraphics[width=1.00\textwidth]{chapters/3/figures/firefox-transitionSelector}

\begin{lstlisting}[language=XML,float=h,label=lst:transition_selector_example,basicstyle=\footnotesize\ttfamily,tabsize=2,caption={Example SCXML document used to illustrate transition selection optimization strategies}]
<scxml>
    <state id="A">
        <transition target="B" event="e1" id="transition1"/>
        <transition target="B" event="e2" id="transition2"/>
        <transition target="B" event="e2" id="transition3"/>
    </state>
    <state id="B">
        <transition target="A" event="e3" id="transition4"/>
    </state>
</scxml>
\end{lstlisting}

\caption{Results of Transition Selection optimization strategy in Firefox}
\label{fig:firefox-transitionSelector}
\end{figure}

Respuesta2

Para agregar a la respuesta de David (en caso de que desee "subtítulos"):

ingrese la descripción de la imagen aquí

\documentclass{article}

\usepackage{subcaption}
\usepackage{listings}
\usepackage[demo]{graphicx}

\begin{document}

\begin{figure}
    \begin{subfigure}[b]{\textwidth}
        \begin{lstlisting}[%
            language=XML,%
            label=lst:transition_selector_example,%
            basicstyle=\footnotesize\ttfamily,%
            tabsize=2
        ]
        <scxml>
            <state id="A">
                <transition target="B" event="e1" id="transition1"/>
                <transition target="B" event="e2" id="transition2"/>
                <transition target="B" event="e2" id="transition3"/>
            </state>
            <state id="B">
                <transition target="A" event="e3" id="transition4"/>
            </state>
        </scxml>
        \end{lstlisting}
        \subcaption{Example SCXML document used to illustrate\ldots}
    \end{subfigure}

    \vspace{2em}
    \begin{subfigure}[b]{\textwidth}
    \includegraphics[width=1.00\textwidth]{chapters/3/figures/firefox-transitionSelector}
    \subcaption{A screenshot (??)}
    \end{subfigure}
    \label{fig:firefox-transitionSelector}
    \caption{Results of Transition Selection optimization strategy in Firefox}
\end{figure}

\end{document}

información relacionada