遵守空格但不遵守行尾

遵守空格但不遵守行尾

我有一些代码,一旦代码溢出一行,它就应该(缩进)继续在下一行。这可以工作,但我遇到的问题是多个空格“连接”到 1 个空格,这是不必要的。当我使用 now 或 时,\obeyspaces继续\是在单词完成后完成的。我希望如果单词超出行宽,它将转到下一行,因此在这种情况下,空格是行的末尾“被保留但不显示”。

\documentclass{article}

    \usepackage{hanging}

    \newlength{\CodeWidth}
    \newcommand\CodeLine[1]{\hangpara{\CodeWidth}{1}{#1}\par}

    \newenvironment{Code}{%
      \par%
      \scriptsize%
      \normalfont\ttfamily%
      \settowidth{\CodeWidth}{000000}%
      \setlength{\parskip}{0ex plus 0ex minus 0ex}%
      \obeyspaces%
    }{%
      \normalsize%
      \normalfont%
    }

    \begin{document}

    \begin{Code}
    \CodeLine{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam commodo mattis orci, id gravida leo dignissim condimentum. Aliquam porta est ac placerat laoreet. Nam faucibus tincidunt augue eget efficitur. Donec faucibus, magna vitae tempor cursus, nulla felis hendrerit dolor, ut sollicitudin erat libero vel nisl. Nulla volutpat lacinia interdum. Vivamus sodales ullamcorper vulputate. Sed nulla metus, tincidunt convallis purus vel, sagittis dignissim arcu. Aliquam vitae augue quis magna luctus cursus nec at ex. Vestibulum porttitor neque purus, id imperdiet ante cursus quis. Aenean vel nunc volutpat, suscipit nisi quis, faucibus arcu. Aliquam vel enim venenatis nisl malesuada condimentum. Cras vel sollicitudin enim. Nulla sagittis et nunc sit amet sagittis. Aliquam nibh est, semper vel quam a, aliquet scelerisque metus. Sed laoreet cursus urna, eget euismod massa vehicula eget. }
    \CodeLine{Lorem        ipsum        dolor        sit        amet,        consectetur        adipiscing        elit.        Etiam        commodo        mattis        orci,        id        gravida        leo        dignissim        condimentum.        Aliquam        porta        est        ac        placerat        laoreet.        Nam        faucibus        tincidunt        augue        eget        efficitur.        Donec        faucibus,        magna        vitae        tempor        cursus,        nulla        felis        hendrerit        dolor,        ut        sollicitudin        erat        libero        vel        nisl.        Nulla        volutpat        lacinia        interdum.        Vivamus        sodales        ullamcorper        vulputate.        Sed        nulla        metus,        tincidunt        convallis        purus        vel,        sagittis        dignissim        arcu.        Aliquam        vitae        augue        quis        magna        luctus        cursus        nec        at        ex.        Vestibulum        porttitor        neque        purus,        id        imperdiet        ante        cursus        quis.        Aenean        vel        nunc        volutpat,        suscipit        nisi        quis,        faucibus        arcu.        Aliquam        vel        enim        venenatis        nisl        malesuada        condimentum.        Cras        vel        sollicitudin        enim.        Nulla        sagittis        et        nunc        sit        amet        sagittis.        Aliquam        nibh        est,        semper        vel        quam        a,        aliquet        scelerisque        metus.        Sed        laoreet        cursus        urna,        eget        euismod        massa        vehicula        eget.        }
    \end{Code}

    \end{document}

在此处输入图片描述

在这个例子中,单词“elit”应该移到下一行(将这个词移动到下一行会影响文本的其余部分,从而影响要移动的单词)。

答案1

下面的代码还有变化的空间。注释掉的版本是提供图像的版本,这样空格就可见了。

抱歉,背景颜色不对,我用这个 Ubuntu 16.04 截取了 3 次屏幕截图,并且有这个瑕疵。

在第一篇文章之后,我更仔细地阅读了问题和原始代码,因此这可能更符合要求。

在此代码中,注释掉一行\char32并取消注释另一行以获取空格,而不是可见空格。

\documentclass{article}

\usepackage{hanging}

\newlength{\CodeWidth}
\newcommand\CodeLine[1]{\hangpara{\CodeWidth}{1}{#1}\par}

\makeatletter
\newcommand\NiceSpace{%
  \discretionary{\char32}{}{\char32}%
%  \discretionary{\kern\fontdimen2\font}{}{\kern\fontdimen2\font}%
}%
\makeatother

\newenvironment{Code}{%
  \par
  \scriptsize
  \normalfont\ttfamily
  \rightskip0pt plus 1fil
  \settowidth{\CodeWidth}{000000}%
  \setlength{\parskip}{0ex plus 0ex minus 0ex}%
  {\lccode`~32 \lowercase{\global\let~}\NiceSpace}\obeyspaces%
}{%
%  \normalsize%
%  \normalfont%
}

\begin{document}

\noindent X\dotfill X

\begin{Code}
\CodeLine{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam commodo mattis orci, id gravida leo dignissim condimentum. Aliquam porta est ac placerat laoreet. Nam faucibus tincidunt augue eget efficitur. Donec faucibus, magna vitae tempor cursus, nulla felis hendrerit dolor, ut sollicitudin erat libero vel nisl. Nulla volutpat lacinia interdum. Vivamus sodales ullamcorper vulputate. Sed nulla metus, tincidunt convallis purus vel, sagittis dignissim arcu. Aliquam vitae augue quis magna luctus cursus nec at ex. Vestibulum porttitor neque purus, id imperdiet ante cursus quis. Aenean vel nunc volutpat, suscipit nisi quis, faucibus arcu. Aliquam vel enim venenatis nisl malesuada condimentum. Cras vel sollicitudin enim. Nulla sagittis et nunc sit amet sagittis. Aliquam nibh est, semper vel quam a, aliquet scelerisque metus. Sed laoreet cursus urna, eget euismod massa vehicula eget. }

\noindent{}X\dotfill{}X

\CodeLine{Lorem        ipsum        dolor        sit        amet,        consectetur        adipiscing        elit.        Etiam        commodo        mattis        orci,        id        gravida        leo        dignissim        condimentum.        Aliquam        porta        est        ac        placerat        laoreet.        Nam        faucibus        tincidunt        augue        eget        efficitur.        Donec        faucibus,        magna        vitae        tempor        cursus,        nulla        felis        hendrerit        dolor,        ut        sollicitudin        erat        libero        vel        nisl.        Nulla        volutpat        lacinia        interdum.        Vivamus        sodales        ullamcorper        vulputate.        Sed        nulla        metus,        tincidunt        convallis        purus        vel,        sagittis        dignissim        arcu.        Aliquam        vitae        augue        quis        magna        luctus        cursus        nec        at        ex.        Vestibulum        porttitor        neque        purus,        id        imperdiet        ante        cursus        quis.        Aenean        vel        nunc        volutpat,        suscipit        nisi        quis,        faucibus        arcu.        Aliquam        vel        enim        venenatis        nisl        malesuada        condimentum.        Cras        vel        sollicitudin        enim.        Nulla        sagittis        et        nunc        sit        amet        sagittis.        Aliquam        nibh        est,        semper        vel        quam        a,        aliquet        scelerisque        metus.        Sed        laoreet        cursus        urna,        eget        euismod        massa        vehicula        eget.        }
\end{Code}

\hrule height 3pt
\end{document}

在此处输入图片描述

相关内容