新定义的环境会吞噬其所包含的文本

新定义的环境会吞噬其所包含的文本

我想定义一个环境来格式化测试方向。所以我这样做:

\documentclass{minimal}
\usepackage{lipsum}

\newenvironment{directions}
{   
    \noindent \fbox{    
    \begin{minipage}[t]{\textwidth}
}
{       
    \end{minipage}
}
}

\begin{document}

    \begin{directions}

        \lipsum[1]

    \end{directions}

\end{document}

该环境中的文本未出现在编译后的文档中,并且我收到错误forgotten \endgroup(也是extra } inserted错误)。我很确定我已经关闭了所有括号;我哪里出错了?

答案1

你的\framebox没有正确关闭。在新环境的第一部分你应该收集一些新环境的内容\savebox然后在第二部分里面使用它\framebox。看下面的例子:

\documentclass{minimal}
\usepackage{lipsum}

    \newsavebox\directbox
\newenvironment{directions}
    {
    \begin{lrbox}{\directbox}
    \begin{minipage}{\linewidth}
    }{
    \end{minipage}\end{lrbox}
    \framebox{\usebox\directbox}
      }


\begin{document}
    \begin{directions}
        \lipsum[1]
    \end{directions}
\end{document}

在此处输入图片描述

相关内容