使用 listings 包调整换行缩进

使用 listings 包调整换行缩进

我正在使用 listings 包列出各种文本表。我更喜欢使用这个包,因为它的文本和行号的外观与我的其他代码列表类似。

以下是一个示例表:

\begin{lstlisting}[numbers=left,showstringspaces=false,tabsize=2]
Item1    PropertyA:    Attribute1=Value, Attribute2=Value, Attribute3=Value, Attribute4=Value
         PropertyB:    Attribute1=Value, Attribute2=Value, Attribute3=Value, Attribute4=Value
         PropertyC:    Attribute1=Value, Attribute2=Value, Attribute3=Value, Attribute4=Value

Item2    PropertyA:    Attribute1=Value, Attribute2=Value, Attribute3=Value, Attribute4=Value
         PropertyB:    Attribute1=Value, Attribute2=Value, Attribute3=Value, Attribute4=Value
         PropertyC:    Attribute1=Value, Attribute2=Value, Attribute3=Value, Attribute4=Value
\end{lstlisting}

这会导致以下输出,其中存在换行符缩进不一致的问题:

在此处输入图片描述

如您所见,第 1 行和第 2 行及第 3 行的缩进级别不同。我认为这是因为第 2 行和第 3 行有多余的空白。

如果有人能告诉我一种方法,强制 listings 包将第 1 行缩进到与第 2 行和第 3 行相同的级别,并保持相同的表格格式(即,我不想将 Item1、Item2 等放在不同的行上),我将不胜感激。我查看了包文档,但没有看到任何“为当前换行符添加额外的缩进级别”选项。

在第一行换行处添加额外的空白似乎效果不太好。它把文本移到Attribte4=Value了右边,但换行箭头仍然位于不同的缩进级别。

谢谢。

答案1

回答我自己的问题。再次阅读列表手册后,我认为我找到了正确的魔法选项breakautoindent=false,breakindent=22ex

这将禁用嵌套的缩进级别,并明确将单次缩进设置为 22ex,以与上一行的文本对齐。

\begin{lstlisting}[numbers=left,showstringspaces=false,tabsize=2,breakautoindent=false,breakindent=22ex]
Item1    PropertyA:    Attribute1=Value, Attribute2=Value, Attribute3=Value, Attribute4=Value
         PropertyB:    Attribute1=Value, Attribute2=Value, Attribute3=Value, Attribute4=Value
         PropertyC:    Attribute1=Value, Attribute2=Value, Attribute3=Value, Attribute4=Value

Item2    PropertyA:    Attribute1=Value, Attribute2=Value, Attribute3=Value, Attribute4=Value
         PropertyB:    Attribute1=Value, Attribute2=Value, Attribute3=Value, Attribute4=Value
         PropertyC:    Attribute1=Value, Attribute2=Value, Attribute3=Value, Attribute4=Value
\end{lstlisting}

相关内容