我有一个类似于以下的Latex代码:
\usepackage{listings}
\lstset{
breaklines = true,
numbers = left,
stepnumber = 5,
}
\begin{lstlisting}
for (int i = 0, j = 0, k = 1; i <= 10, j < foo; i++, j *= factor, k--) { // a comment here
% something code here ...
}
\end{lstlisting}
Run Code Online (Sandbox Code Playgroud)
由于纸张太窄,带有for循环的长行会在中间某处自动断开.这正是我想要的,否则该线将在论文的最后消失.但现在我的问题是,是否有办法标记或表明这条线被打破了.否则,它看起来像是创建了一个新行.
这样的东西就是我想要的(用行号,注意箭头):
10 for (int i = 0, j = 0, k = 1; i <= 10, j < foo;
? i++, j *= factor, k--) { // a comment here
11 % something code here ...
Run Code Online (Sandbox Code Playgroud)
les*_*ana 46
列表配置如下:
\lstset{prebreak=\raisebox{0ex}[0ex][0ex]
{\ensuremath{\rhookswarrow}}}
\lstset{postbreak=\raisebox{0ex}[0ex][0ex]
{\ensuremath{\rcurvearrowse\space}}}
\lstset{breaklines=true, breakatwhitespace=true}
\lstset{numbers=left, numberstyle=\scriptsize}
Run Code Online (Sandbox Code Playgroud)
文档中的示例源代码:
\begin{lstlisting}[language=C++, numbers=left, linewidth=5.1cm]
if (line.length() > line.max_length())
{
line.wrap();
}
\end{lstlisting}
Run Code Online (Sandbox Code Playgroud)
示例结果:

注意:您必须\usepackage{MnSymbol}能够使用\rhookswarrow和\rcurvearrowse.为了防止您可以使用的额外依赖项\hookrightarrow以及\hookleftarrow默认包中包含的依赖项.
资料来源:http://www.bollchen.de/blog/2011/04/good-looking-line-breaks-with-the-listings-package/.在那里阅读更详细的解释.还有pdf.
Mic*_*zyk 12
显然这可以通过prebreak/ postbreakoptions 完成.请参阅listings软件包的文档,该文档链接到其CTAN页面(它是第33页的底部和pdf中的第34页的顶部).
编辑:直接链接到列表包的手册.另外,我想我可以在这里重现相关位 - 所以这里是:
prebreak=<tokens> (default {})
postbreak=<tokens> (default {})
Run Code Online (Sandbox Code Playgroud)
<tokens>当前行的末尾分别出现在下一行(断开的部分)行的开头.因为我们内部使用,所以不得使用动态空间(特别是空格)
\\discretionary.但是\\space重新定义为在内部使用<tokens>.
编辑2:对于断行标记的位置,一些接近在问题所提供的示例的外观可以通过设置实现breakindent到0pt,breakautoindent到false和手工填充所述标记与,比如说,\\space.
例如,使用postbreak={\textbf{marker}\\space\\space\\space\\space}一个漂亮的粗体标记排版,其中新行通常会开始,然后是四个空格,然后是虚线的剩余内容.这些选项在"手册" 之后prebreak/ 之后记录.:-)postbreaklistings
| 归档时间: |
|
| 查看次数: |
20124 次 |
| 最近记录: |