考虑以下 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
不允许你想做的事情;一个可能的解决方法是使用列表包代替(或与包一起)fancyvrb
(listings
提供自动换行和许多其他有用的功能;请参阅包文档了解详情)。您可以将当前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}