图片和代码并排:Lstlisting 在 \subcaptionbox 中不起作用

图片和代码并排:Lstlisting 在 \subcaptionbox 中不起作用

我正在尝试获取源代码和一张图片,其中两个标题与标题文本的上部对齐,如本线程所建议的那样:在同一行上有两个图形副标题

对于对齐,有人建议使用\subcaptionbox环境。但是,当我尝试在以下示例中将 lstlising 插入 \subcaptionbox 环境时,我收到多个错误:

\begin{figure}[!htbp]
\centering
\subcaptionbox{Example of a parameterized type in Scala adopted from~\cite{2.13-types}}[.45\textwidth]{
  \begin{lstlisting}
class TreeMap[A <: Comparable[A], B] { … }
  \end{lstlisting}
}
\subcaptionbox{UML representation of parameterized type TreeMap}[.45\textwidth]{
  \includegraphics{parameterized-types.pdf}
}
\label{fig:scalaspecific:bounds}
\caption{Examplary UML representation of parameterized types}
\end{figure} 

产生的错误:

! Package inputenc Error: Invalid UTF-8 byte "80.See the inputenc package documentation for explanation.Type H <return> for immediate help.... }
! Argument of \lst@next has an extra }.<inserted text>\par }
...

我现在主要有两个问题。

首先:是否有办法解决这个问题,以便可以将列表放入\subcaptionbox环境中?

第二:如果没有修复,还有其他方法可以实现图片和代码的同一行标题对齐吗?

答案1

如果将列表内容放在外部文件中,则可以输入\lstinputlisting以下参数\subcaptionbox

\begin{filecontents*}{\jobname.lst}
class TreeMap[A <: Comparable[A], B] { ... }
\end{filecontents*}

\documentclass{article}
\usepackage{subcaption,listings,graphicx}

\newsavebox{\listingsbox}

\begin{document}

\begin{figure}[!htbp]
\centering

\subcaptionbox{Example of a parameterized type in Scala 
  adopted from~\cite{2.13-types}}[.45\linewidth]{%
      \lstinputlisting[breaklines]{\jobname.lst}%
}\hfill
\subcaptionbox{UML representation of parameterized type TreeMap}[.45\textwidth]{
  \includegraphics[width=\linewidth]{example-image-duck}
}
\caption{Examplary UML representation of parameterized types\label{fig:scalaspecific:bounds}}
\end{figure}

\end{document}

在此处输入图片描述

答案2

将环境保存lstlistings在一个盒子里,您可以在里面使用\subcaptionbox

\documentclass{article}
\usepackage{subcaption,listings,graphicx}

\newsavebox{\listingsbox}

\begin{document}

\begin{figure}[!htbp]
\centering

\begin{lrbox}{\listingsbox}
\begin{minipage}{0.45\textwidth}
\begin{lstlisting}[breaklines]
class TreeMap[A <: Comparable[A], B] { ... }
\end{lstlisting}
\end{minipage}
\end{lrbox}

\subcaptionbox{Example of a parameterized type in Scala 
  adopted from~\cite{2.13-types}}{%
  \usebox{\listingsbox}%
}
\subcaptionbox{UML representation of parameterized type TreeMap}[.45\textwidth]{
  \includegraphics[width=\linewidth]{example-image}
}

\caption{Examplary UML representation of parameterized types}
\label{fig:scalaspecific:bounds}

\end{figure}

\end{document}

在此处输入图片描述

应该\label \caption

相关内容