我正在使用 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}