如何在列表包中强制换行?

时间:2009-06-11 13:18:48

标签: latex

我对乳胶中的清单包有问题。我需要在我的硕士论文'附录中嵌入以下XML文档http://www.sparxsystems.com.au/downloads/profiles/EP_Extensions.xml的源代码。问题是,无论我传递给包的选项是什么,我似乎都无法将其放在页面上。列表中的行太长了,列表包没有包装它们,这看起来很奇怪......选项的哪些组合可以解决这个问题?

目前我使用以下lstset指令:

\lstset{
breakindent=0em,
language=XML,
basicstyle=\footnotesize,
numbers=left,
numberstyle=\footnotesize,
stepnumber=2,
numbersep=5pt,
backgroundcolor=\color{white},
showspaces=false,
showstringspaces=false,
showtabs=false,
frame=single,
tabsize=2,
captionpos=b,
breaklines=true,
breakatwhitespace=true,
breakautoindent=true,
escapeinside={\%*}{*)},
linewidth=\textwidth
}

其中,没有设置其他选项,并结合以下命令:

\lstinputlisting{EP_Extensions.xml}

将给定文件的源列出到以下输出: alt text

4 个答案:

答案 0 :(得分:57)

我刚遇到这个问题......

breaklines为我工作,虽然您确实需要将其设置为true - 默认值为false:

\lstinputlisting[style=Python,
    caption=My Class,
    label={mine.py},
    breaklines=true,
  ]{../python/mine.py}

几乎就是我用过的东西

答案 1 :(得分:10)

我有这个问题,这个页面在谷歌排名很高,所以这里是我的解决方案:

我有以下内容:\usepackage[none]{hyphenat}导致上述问题。我用它来解决乳胶自动在一个单词中间断线的问题,在某些情况下看起来真的很愚蠢。

经过多次寻找替代解决方案后,我发现没有什么合适的东西可以解决正确的断线,但是连接位置很差。

答案 2 :(得分:2)

不是一个好的答案,但有一个想法是在包含源代码之前对其进行自动换行。如果您使用的是Linux,则可以使用命令 fold 。显然,如果文本是固定宽度的字体,这种方法效果最好,我建议在任何情况下使用代码清单。

答案 3 :(得分:1)

Aaron's answer的后续跟进。我使用basicstyle=\ttfamily作为我的商家信息。因此,我可以通过更改

来允许换行
\usepackage[none]{hyphenat}

\usepackage[htt]{hyphenat}
%           ^^^

hyphenat docs描述了htt选项"通过\texttt\ttfamily启用了...文本排版的连字符。"在我的用例中,我没有在我的列表中看到任何连字符,但我确实得到了破解。