代码之家  ›  专栏  ›  技术社区  ›  watain

如何标记长线的断线?

  •  24
  • watain  · 技术社区  · 16 年前

    我有一个类似以下的乳胶代码:

    \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}
    

    带有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 ...
    
    2 回复  |  直到 12 年前
        1
  •  12
  •   Michał Marczyk    16 年前

    显然,这可以通过 prebreak / postbreak 选项。见 listings 包的文档,链接到 its CTAN page (这是第33页的底部和PDF中第34页的顶部)。

    编辑:直接链接到 the Listings Package's manual . 另外,我想我可以在这里复制相关的部分——这里是:

    prebreak=<tokens>   (default {})
    postbreak=<tokens>  (default {})
    

    <tokens> 分别出现在当前行的末尾下一行(断开部分)的开头。

    您不能使用动态空间(特别是空间),因为我们在内部使用 \\discretionary . 然而 \\space 重新定义为在内部使用 <令牌GT; .

    编辑2:至于换行标记的位置,可以通过设置 breakindent 0pt , breakautoindent false 用手在记号笔上填充, \\空间 .

    例如,使用 postbreak={\textbf{marker}\\space\\space\\space\\space} 为了一个漂亮的大胆 标记 一个新行通常开始的排字,然后是四个空格,最后是换行的其余内容。这些选项记录在 预裂 / 断后 在里面 清单 手册。-)

        2
  •  45
  •   Lesmana    12 年前

    配置列表如下:

    \lstset prebreak=\raisebox 0ex[0ex][0ex]
    \确保剩余\rhokswarrow
    \ lstset postbreak=\raisebox 0ex[0ex][0ex]
    \确保剩余\r曲线箭头se \空格
    \ lstset breaklines=真,breakatwhitespace=真
    \ lstset数字=左,数字样式=\scriptsize
    < /代码> 
    
    

    文档中的示例源代码:

    < Prime>代码> \开始{LSTList} [语言= C++,数字=左边,线宽= 5.1cm ] if(line.length()>line.max_length()) { Wrp(); } \结束列表 < /代码>

    示例结果:

    注意:您必须使用\usepackage mnsymbol才能使用\rhokswarrow\rcurvearrowse。为了防止额外的依赖关系,您可以使用默认软件包中包含的\hookrrightarrow\hooklefarrowwhich are included in the default packages.

    资料来源:http://www.bollchen.de/blog/2011/04/good looking line breaks with the listings package/。阅读此处了解更详细的解释。另外pdf.>

    文档中的示例源代码:

    \begin{lstlisting}[language=C++, numbers=left, linewidth=5.1cm]
        if (line.length() > line.max_length())
        {
            line.wrap();
        }
    \end{lstlisting}
    

    实例结果:

    enter image description here

    注意:你必须 \usepackage{MnSymbol} 能够使用 \rhookswarrow \rcurvearrowse . 为了防止额外的依赖,您可以使用 \hookrightarrow \hookleftarrow 包含在默认包中。

    来源: http://www.bollchen.de/blog/2011/04/good-looking-line-breaks-with-the-listings-package/ . 阅读此处了解更详细的解释。阿尔索 pdf .