![带有列表的商品编号](https://linux22.com/image/356432/%E5%B8%A6%E6%9C%89%E5%88%97%E8%A1%A8%E7%9A%84%E5%95%86%E5%93%81%E7%BC%96%E5%8F%B7.png)
以下 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
解决了这个问题(学分)。我使用etoolbox
with\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|
在枚举列表中。