输出

输出

我想知道是否有可能将lstlisting环境与 中的某个点对齐enumerate。我这样做的目的是尽可能多地在页面上容纳代码示例,同时保持双列环境。

在下面的代码示例中:

\documentclass[twocolumn]{article}

\usepackage{enumitem, listings}

\begin{document}
\begin{enumerate}
\item First enumerate level
\begin{lstlisting}[frame = single]
First code sample
\end{lstlisting}
\begin{enumerate}
\item Text that is stationary
\begin{lstlisting}[frame = single, breaklines = true, breakindent = 0pt]
Code sample that has the same alignment as the First code sample
\end{lstlisting}
\end{enumerate}
\end{enumerate}
\end{document}

代码示例生成:

代码示例对齐

如何将第二个代码示例向左移动,以便它的对齐方式与第一个代码示例相同?

请注意,我曾尝试使用\end{enumerate}\begin{enumerate}[resume]。然而,这似乎只能暂停枚举级别1。

另外,我尝试通过在环境之前enumerate执行操作来完全退出环境。但是,有时我的项目会跟随环境。\end{enumerate}lstlistinglstlisting

答案1

如果您看一下listings手册的第 4.10 节,您会发现一些可以操纵环境水平对齐的键lstlisting

  • 该选项resetmargins重置环境的边距,如itemizeenumerate
  • 该选项xleftmargin=\leftmargin将列表推回第一级。

代码:

\documentclass[twocolumn]{article}

\usepackage{enumitem, listings, calc}
\begin{document}
\begin{enumerate}
    \item First enumerate level
    \begin{lstlisting}[frame = single]
First code sample
    \end{lstlisting}
        \begin{enumerate}
        \item Second level
            \begin{enumerate}
            \item Third level
            \begin{lstlisting}[
                resetmargins=true,
                xleftmargin=\leftmargin,
                frame = single, breaklines = true, breakindent = 0pt]
Code sample that has the same alignment as the First code sample
            \end{lstlisting}
            \item Last point in inner level
        \end{enumerate}
        \item Last point in second level
    \end{enumerate}
    \item And again first level
\end{enumerate}
\end{document}

输出

代码输出

相关内容