我想知道是否有可能将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}
lstlisting
lstlisting
答案1
如果您看一下listings
手册的第 4.10 节,您会发现一些可以操纵环境水平对齐的键lstlisting
。
- 该选项
resetmargins
重置环境的边距,如itemize
和enumerate
。 - 该选项
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}