如何实现在向列表添加行号时缩进仍然与周围的文本匹配?

如何实现在向列表添加行号时缩进仍然与周围的文本匹配?

使用该listings包时,对于某些列表,我希望使用行号,numbers=left如下例所示:

\begin{lstlisting}[
      numbers=left,framexleftmargin=5mm,frame=single]
   foo(); // arbitrary code lines
\end{lstlisting}

但是,我还希望列表(包括框架和行号)与周围文本保持对齐。但是,行号向左延伸会发生什么情况。(事实上,当没有行号时,框架本身已经发生了这种情况,但有了行号,情况会变得更糟。)

通过以下稍微扩展的示例,您可以轻松看到效果:

\documentclass{article}
\usepackage{listings,lstautogobble}
\begin{document}

\begin{quote}
   Surrounding text
\begin{lstlisting}[
      autogobble,
      numbers=left,framexleftmargin=5mm,
      frame=single]
   foo(); // arbitrary code lines
\end{lstlisting}
   Surrounding text
\end{quote}

\end{document}

在此处输入图片描述

周围的文本与代码对齐,但与行号和框架均不对齐。理想情况下,我希望周围的文本与框架对齐,但如果周围的文本与行号对齐,我也可以接受。

listings文档中我无法弄清楚如何实现这一点。

答案1

通过查看文档,我找到了设置左边距的选项 xleftmargin。通过将其设置为 18 pt,框架将与周围的文本对齐

\documentclass{article}
\usepackage{listings,lstautogobble}
\begin{document}

\begin{quote}
   Surrounding text
\begin{lstlisting}[
      autogobble,
      numbers=left,framexleftmargin=5mm,
      frame=single,
      xleftmargin=18pt]
   foo(); // arbitrary code lines
\end{lstlisting}
   Surrounding text
\end{quote}

\end{document}

示例的结果 我希望它有所帮助

相关内容