如何在 fancyvrb verbatim 环境中强制换行?

如何在 fancyvrb verbatim 环境中强制换行?

考虑以下 LaTeX 文档:

\documentclass{article}
\usepackage{fancyvrb}
\DefineVerbatimEnvironment{example}{Verbatim}{commandchars=\\\{\}}
\begin{document}
\begin{example}
Foo\\{}Bar
Foo\linebreak{}Bar
\end{example}
\end{document}

我希望\\\linebreak命令各自产生一个换行符,因此排版输出应该看起来像

Foo
Bar
Foo
Bar

但实际输出是

Foo               Bar
FooBar

如何在基于 fancyvrb 的逐字环境中产生明确的换行符?

(顺便说一句,“只需按回车键”不是我想要的答案。我有很多基于 alltt 环境的文本,其中包含类似

Foo\nextline Bar

我使用它来在 shell 命令输出中引入 » 印刷式 » 换行符,输出中没有实际的换行符,但我需要开始一个新行,因为当前行上没有更多空间。在我的文档中,这些 » 印刷式 » 换行符可以与真正的换行符区分开来,因为换行符之前/之后有一个特殊符号,类似于

\newcommand{\nextline}{\ensuremath{\rhd}\linebreak\ensuremath{\lhd}}

我宁愿不更改几千页的文档。)

答案1

恐怕fancyvrb不允许你想做的事情;一个可能的解决方法是使用列表包代替(或与包一起)fancyvrblistings提供自动换行和许多其他有用的功能;请参阅包文档了解详情)。您可以将当前example环境保留在文档主体中,并listings在序言中使用它进行定义;如下所示:

\documentclass{article} 
\usepackage{listings} 

\lstset{% 
  basicstyle=\ttfamily, 
  breaklines=true,
  columns=fullflexible,
  escapeinside = ||,
  breakindent=0pt} 
\lstnewenvironment{example}{}{} 

\begin{document} 

\begin{example} 
Foo|\\|Bar 
\end{example} 

\end{document}

enter image description here

相关内容