带有列表的商品编号

带有列表的商品编号

以下 MWE

\documentclass{paper}
\usepackage{listings}

\begin{document}

\begin{enumerate}
    \item
    \begin{lstlisting}
Hello, world
    \end{lstlisting}
    \item
    \begin{lstlisting}
Hello, world
    \end{lstlisting}
    \item
    \begin{lstlisting}
Hello, world
    \end{lstlisting}
\end{enumerate}

\end{document}

产品编号最终出现在错误的位置:

在此处输入图片描述

我是不是做错了什么item?这是列表错误吗?

答案1

\leavevmode在每个环境之后添加一个lstlisting解决了这个问题(学分)。我使用etoolboxwith\AfterEndEnvironment来自动添加它:

\documentclass{paper}
\usepackage{listings}
\usepackage{etoolbox}
\AfterEndEnvironment{lstlisting}{\leavevmode}

\begin{document}

\begin{enumerate}
    \item
    \begin{lstlisting}
Hello, world
    \end{lstlisting}
    \item
    \begin{lstlisting}
Hello, world
    \end{lstlisting}
    \item
    \begin{lstlisting}
Hello, world
    \end{lstlisting}
\end{enumerate}

\end{document}

在此处输入图片描述

答案2

如果您想要将一小段代码显示为项目,则可以使用内联列表来实现。在这种情况下,\lstMakeShortInline您不需要。\leavevmode

以下代码生成一小段以项目形式列出的代码:

\documentclass{paper}
\usepackage{listings}

\begin{document}

\lstMakeShortInline[]|

With inline listings:

\begin{enumerate}
    \item |Hello, world|
    \item |Hello, world|
    \item |Hello, world|
\end{enumerate}

\end{document}

\lstMakeShortInline[]|将竖线定义|为内联列表的字符。然后代码|Hello, world|在枚举列表中。 在此处输入图片描述

相关内容