我想使用 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}
答案4
您可以\def\@xobeysp{ }
在文档的前言部分使用 将所有空格变为常规(断开)空格。不过,这不会对超长单词进行连字符连接或断开。
为了更好地格式化文本,您可以使用包Verbatim
中的环境fancyvrb
:
\begin{Verbatim}[formatcom=\sffamily]
Hello world hello world hello world
Test
\end{Verbatim}
将以 Sans-seriF 字体系列打印文本。
虽然(对不起!)它\def\@xobeysp{ }
不适用于该Verbatim
环境......所以你必须在两者之间做出选择。