使用 lstlisting 在子图中列出代码

使用 lstlisting 在子图中列出代码

我正在尝试使用 LaTeX 的 subfigure 包来显示一段 SQL 代码。目的类似于子图中的代码列表,但我希望使用lstlisting环境而不是语法突出显示verbatim。以下是我正在尝试的:

\documentclass{article}
\usepackage{subfigure}
\usepackage{listings}

\begin{document}

\begin{table*}[ht]
  \subfigure[Query 1]{
    \begin{lstlisting}[language=SQL]
      SELECT * FROM Table;
    \end{lstlisting}
  }
\end{table*}

\end{document}

由于 subfigure 和 verbatim 包冲突,因此无法编译。链接的帖子建议了一种verbatim环境解决方法,但如果我想使用,该怎么办lstlisting

答案1

使用以下方式框选列表lrbox

\documentclass{article}
\usepackage{subfigure}
\usepackage{listings}

\begin{document}

\newbox\mybox
\begin{lrbox}{\mybox}
\begin{lstlisting}[language=SQL]
SELECT * FROM Table;
\end{lstlisting}
\end{lrbox}

\begin{table*}
\subfigure[Query 1]{\usebox\mybox}
\end{table*}

\end{document}

在此处输入图片描述

顺便说一句,subfigure是一个过时的包;你应该使用subfig或者subcaption相反。您的代码使用subfig

\documentclass{article}
\usepackage{subfig}
\usepackage{listings}

\begin{document}

\newbox\mybox
\begin{lrbox}{\mybox}
\begin{lstlisting}[language=SQL]
SELECT * FROM Table;
\end{lstlisting}
\end{lrbox}

\begin{table*}
\subfloat[Query 1]{\usebox\mybox}
\end{table*}

\end{document}

相关内容