为什么使用 fancybox BVerbatim 时缺少第一行?

为什么使用 fancybox BVerbatim 时缺少第一行?

为什么为命令的环境定义新名称会产生与直接使用环境而不定义名称时不同的结果?

这里有 2 个示例,一个使用环境名称,另一个使用环境名称。第二个示例缺少逐字文本的第一行。两个示例使用的文本相同。

在此处输入图片描述

代码如下:

\documentclass{article}
\usepackage{fancybox}

\newenvironment{myStuff}%
{\VerbatimEnvironment\begin{Sbox}\begin{BVerbatim}}%
{
\end{BVerbatim}\end{Sbox}\fbox{\TheSbox}
}    
\begin{document}        
\begin{myStuff}
line 1
line 2
line 3
\end{myStuff}
\end{document}

第二个例子

\documentclass{article}
\usepackage{fancybox}

\begin{document}    

\begin{Sbox}\begin{BVerbatim}%
line 1
line 2
line 3
\end{BVerbatim}
\end{Sbox}\fbox{\TheSbox}
\end{document}

2014年纺织展

答案1

您的问题是第二个示例中的%after \begin{BVerbatim}。在第一个示例中,该行\begin{myStuff}具有正常的行结尾(没有%,因此可以看到行尾),而正如您在第二个示例中所写的那样,这%意味着\begin{BVerbatim}“运行”到该line 1行。我没有追踪它,但我强烈怀疑这\begin{BVerbatim}会忽略环境开始时“当前”行的其余内容。因此,在第二种情况下,这%意味着line 1被忽略。只需将其删除即可解决问题

\documentclass{article}
\usepackage{fancybox}

\begin{document}    

\begin{Sbox}\begin{BVerbatim}
line 1
line 2
line 3
\end{BVerbatim}
\end{Sbox}\fbox{\TheSbox}
\end{document}

答案2

这是一个带有包的解决方案fancyvrb

\documentclass{article}
\usepackage{fancyvrb}    
\newenvironment{myStuff}
  {\VerbatimEnvironment
   \begin{SaveVerbatim}{VerbEnv}}
  {\end{SaveVerbatim}\fbox{\BUseVerbatim{VerbEnv}}}

\begin{document}        
\begin{myStuff}
line 1
line 2
line 3
\end{myStuff}
\end{document}

答案3

这是一个带有软件包的解决方案verbatimbox

\documentclass{article}
\usepackage{verbatimbox}
\begin{document}
\begin{verbbox}
line1
line2
line3
\end{verbbox}
\fbox{\theverbbox}
\end{document}

相关内容