如果我们有一个通用的命令来结束环境,那不是很好吗?例如:
\begin{itemize}
\item Apple
\item Banana
\endenv % replaces / is an alternative to, \end{itemize} or any other environments.
这样,如果我改变主意,我只需将第一行替换为,例如,\begin{enumerate}
而无需更改结尾部分。当从正常环境更改为星号环境等时,这也很有用。
此功能将作为正常关闭的替代方案,仍将可用。并且此假设\endenv
可能仅限于“正常”环境,而不适用于诸如verbatim
、frame
、等复杂环境listings
。
我们应该有这个\endenv
吗? 已经有这个功能的软件包了吗?
编辑:
致未来的访客:从下面接受的答案可以看出这不是一个好主意。如果仍然要求假定的便利,这种事情应该/可以委托给编辑。
答案1
定义很简单,只需
\makeatletter
\def\endenv{\expandafter\end\expandafter{\@currenvir}}
\makeatother
这对于通过扩展 结束的任何正常环境都有效\end
。需要提前解析以找到结尾的特殊环境(verbatim
、tabularx
、align
、 ...)将无法使用此命令,
但你不应该使用它。环境语法的主要目的之一是使源代码中的分组明确。如果你想要一个带有匿名关闭的语法,那么{}
可以使用,参见
\parbox{1cm}{hello}
或者
\begin{minipage}{1cm}
hello
\end{minipage}
但请不要
\begin{minipage}{1cm}
hello
\endenv
类似的考虑导致</>
关闭标签(在参考 SGML 语法中起作用)不包含在 XML 中,因为它几乎没有增加任何实际功能并且使读取和处理标记变得更加困难。