将环境列为描述中的项目

将环境列为描述中的项目

我想在description这样的环境中显示一些列表:

\usepackage{listings}   % fancy code listings
\usepackage{caption}    % fancy chapters for fancy code listings
\captionsetup[lstlisting]{singlelinecheck=false, margin=0pt, font={sf,sl,footnotesize}}

\lstset{%
  language=[ISO]C++,
  basicstyle=\ttfamily\footnotesize,
  frame=lines,
  keywordstyle=\color{blue}\textbf,
  commentstyle=\color[rgb]{0.0,0.4,0.0}\scriptsize,
  extendedchars=true,         
  breaklines=true             
}

\begin{description}
\item[Example:]
  \begin{lstlisting}[caption=Do not do this]
    /* increment a by one */
    a = a + 1
  \end{lstlisting}
\end{description}

但不知为何,标题'不要这样做'\item始终在条目上方可见'例子:'\item。但是,如果我在和环境之间写一些内容,则此问题会消失,lstlisting如下所示:

\begin{description}
\item[Example:] Bad code example
  \begin{lstlisting}[caption=Do not do this]
    /* increment a by one */
    a = a + 1
  \end{lstlisting}
\end{description}

我希望这个功能在没有额外文本的情况下也能正常工作,“糟糕的代码示例”在这种情况下。

我尝试使用\vspace{}\phantom{text}来代替额外的文本,但两者似乎都被忽略了。

有人可以帮帮我吗?

答案1

在此添加\leavevmode帮助:

示例输出

\documentclass{article}

\usepackage{xcolor}
\usepackage{listings}   % fancy code listings
\usepackage{caption}    % fancy chapters for fancy code listings
\captionsetup[lstlisting]{singlelinecheck=false, margin=0pt, font={sf,sl,footnotesize}}

\lstset{%
  language=[ISO]C++,
  basicstyle=\ttfamily\footnotesize,
  frame=lines,
  keywordstyle=\color{blue}\textbf,
  commentstyle=\color[rgb]{0.0,0.4,0.0}\scriptsize,
  extendedchars=true,         
  breaklines=true             
}

\begin{document}

\begin{description}
\item[Example:]\leavevmode
  \begin{lstlisting}[caption=Do not do this]
    /* increment a by one */
    a = a + 1
  \end{lstlisting}
\end{description}
\end{document}

相关内容