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

问题描述 投票:0回答:5

我对乳胶列表包有疑问。我需要在我的硕士论文附录中嵌入以下 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

latex
5个回答
61
投票

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

breaklines
对我有用,尽管你确实需要将其设置为 true - 默认为 false:

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

和我用过的差不多


11
投票

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

我有以下内容:

\usepackage[none]{hyphenat}
,这会导致上述问题。我用它来解决 Latex 在单词中间自动断行的问题,这在某些情况下看起来非常愚蠢。

经过大量寻找此解决方案的替代方案后,我发现没有任何合适的解决方案,并解决了正确的断线但连字符放置不当的情况。


2
投票

这不是一个很好的答案,但一个想法是在包含源代码之前对其进行自动换行。如果您使用的是 Linux,则可以使用命令 fold 来实现此目的。显然,如果文本采用固定宽度字体,则效果最好,在任何情况下我都会推荐用于代码列表。


2
投票

亚伦的回答的后续行动。我在列表中使用了

basicstyle=\ttfamily
。因此,我能够通过更改来允许断行

\usepackage[none]{hyphenat}

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

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


0
投票

检查您使用的软件包可能会有所帮助。我有同样的问题。即使我尝试了一切,但我无法解决它。然后我从文档中删除

\usepackage[none]{hyphenat}
,它就成功了!该库似乎会导致换行错误,因为它禁用了自动连字符。

© www.soinside.com 2019 - 2024. All rights reserved.