我经常声明使用其他环境的环境:
\newenvironment{foo}%
{\begin{itemize}}%
{\end{itemize}}
有人告诉我最好使用内部的内部环境的宏。
\newenvironment{foo}%
{\itemize}%
{\enditemize}
这是真的吗?如果是,为什么它更好?
此致,
吕克。
答案1
使用内部形式可以更好地检查错误。假设你有
\newenvironment{fooA}
{\begin{itemize}}
{\end{itemize}}
\newenvironment{fooB}
{\itemize}
{\enditemize}
如果你忘记了,\end{fooA}
你会收到一条关于
! LaTeX Error: \begin{itemize} on input line 13 ended by \end{document}.
但如果你忘记了\end{fooB}
消息将会
! LaTeX Error: \begin{fooB} on input line 13 ended by \end{document}.
在某些情况下,内部形式是必需的,例如,在使用包定义新的逐字环境verbatim
或使用从\NewEnviron
包中定义的环境时environ
。另一个重要情况是在显示环境之上定义新环境amsmath
。
然而,在某些情况下,应避免使用内部形式,主要情况是lrbox
:使用\lrbox
和\endlrbox
总是错误的。