可以打断长行的逐字环境?

可以打断长行的逐字环境?

我想使用 LaTeX 生成用户提交文本的 PDF。为了处理疯狂的用户输入,我首先想到使用包verbatim,但它当然不会拆分太长的行。是否有一些包的工作方式类似verbatim(即接受任何输入)但可以很好地格式化文本?

答案1

listings包为您提供了可以断行的逐字环境:

\begin{lstlisting}[breaklines]
  Long user text
\end{lstlisting}

如果用户文本位于外部文件中,您也可以使用:

\lstinputlisting[breaklines]{filename}

答案2

\usepackage{spverbatim}
...

\begin{spverbatim}
This is a very long line.1

\end{spverbatim}

spverbatim包使 LaTEX 能够在逐字文本中的空格处断行。

答案3

fancyvrb套装结合了fvextra包裹Verbatim允许您通过指定选项在环境中使用换行符breaklines=true

\documentclass{article}

\usepackage{fancyvrb}
\usepackage{fvextra}

\begin{document}
The following is printed verbatim, but with line breaks:
\begin{Verbatim}[breaklines=true]
This is a very long line that will need to be broken into pieces otherwise it will run into and out of the margins
\end{Verbatim}
Alternatively, line breaks can be put anywhere, not just at white space:
\begin{Verbatim}[breaklines=true, breakanywhere=true]
Thisisaverylonglinethatwillneedtobebrokenintopiecesotherwiseitwillrunintoandoutofthemargins
\end{Verbatim}

\end{document}

fvextra 示例的输出

答案4

您可以\def\@xobeysp{ }在文档的前言部分使用 将所有空格变为常规(断开)空格。不过,这不会对超长单词进行连字符连接或断开。

为了更好地格式化文本,您可以使用包Verbatim中的环境fancyvrb

\begin{Verbatim}[formatcom=\sffamily]
  Hello world hello world hello world
  Test
\end{Verbatim}

将以 Sans-seriF 字体系列打印文本。

虽然(对不起!)它\def\@xobeysp{ }不适用于该Verbatim环境......所以你必须在两者之间做出选择。

相关内容