Como combinar listagem e figura em uma única figura?

Como combinar listagem e figura em uma única figura?

Estou usando package listingse gostaria de combinar a listinge a figureem um único float. Como exemplo, estou usando listingso seguinte:

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

Mais tarde, tenho uma figura com um \includegraphics, como a seguir:

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

Eu gostaria de fazer com que a listagem se tornasse parte dessa figura, de modo que ela compartilhasse o número de referência da figura e fosse apresentada na página como uma única entidade gráfica combinada.

Eu apreciaria muito qualquer orientação que alguém possa oferecer sobre como fazer isso.

Responder1

listingse \includegraphicscada um pode ser incluído essencialmente em qualquer lugar. O seguinte os coloca um acima do outro, o layout lado a lado também é possível se você colocar a listagem em uma minipágina com largura que permita o gráfico ao 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}

Responder2

Para adicionar à resposta de David (caso você queira "sublegendas"):

insira a descrição da imagem aqui

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

informação relacionada