我有一些代码,一旦代码溢出一行,它就应该(缩进)继续在下一行。这可以工作,但我遇到的问题是多个空格“连接”到 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}