无法使用 \end{ 的宏对于使用 \NewEnviron 定义的环境

无法使用 \end{ 的宏对于使用 \NewEnviron 定义的环境

我想使用简写来开始和结束环境,例如\be\ee。这对于标准环境按预期工作,如下equation所示。

% this compiles fine
\documentclass{article}
\usepackage{environ}

\newcommand{\be}{\begin{equation}}
\newcommand{\ee}{\end{equation}}

\begin{document}
\be y = ax + c \ee
\end{document}

但是,使用如下所示定义的环境\NewEnviron无法编译。

% this does not compile: ! LaTeX Error: \begin{someenv} on input line 10 ended by \end{document}.
\documentclass{article}
\usepackage{environ}

\NewEnviron{someenv}{someenv: \BODY}
\newcommand{\be}{\begin{someenv}}
\newcommand{\ee}{\end{someenv}}

\begin{document}
\be y = ax + c \ee
\end{document}

明确使用\end{someenv}可以再次顺利编译。

% this compiles fine
\documentclass{article}
\usepackage{environ}

\NewEnviron{someenv}{someenv: \BODY}
\newcommand{\be}{\begin{someenv}}
% \newcommand{\ee}{\end{someenv}}

\begin{document}
\be y = ax + c \end{someenv}
\end{document}

您知道为什么使用\ee无法编译以及如何解决这个问题吗?

答案1

总结你不能。

的内容someenv必须通过寻找来获取明确的 \end{someenv}

如果你想混淆你的代码,可以这样做

\long\def\be#1\ee{someenv: #1}

但是不要问如何使用其他东西来代替\ee,因为问题是一样的。

相关内容