新环境奇怪行为

新环境奇怪行为

我试图理解为什么:

这有效:

\documentclass{article}

\usepackage{amsmath}

\newenvironment{myenv}
{\begin{tabular}{@{}l}}
{\end{tabular}}

\newenvironment{myotherenv}
{}
{}


\begin{document}

\begin{myenv}
    Thing\\
\end{myenv}

\end{document}

这也有效:

\documentclass{article}

\usepackage{amsmath}

\newenvironment{myenv}
{\begin{tabular}{@{}l}}
{\end{tabular}}

\newenvironment{myotherenv}
{}
{}


\begin{document}

\begin{myenv}
    \begin{myotherenv}
        Thing
    \end{myotherenv}
\end{myenv}

\end{document}

但这会引发错误:

\documentclass{article}

\usepackage{amsmath}

\newenvironment{myenv}
{\begin{tabular}{@{}l}}
{\end{tabular}}

\newenvironment{myotherenv}
{}
{}


\begin{document}

\begin{myenv}
    \begin{myotherenv}
        Thing\\
    \end{myotherenv}
\end{myenv}

\end{document}

答案1

这与定义无关,如果直接使用构造,则会得到相同的错误。您不能在一个单元中启动环境并在另一个单元中结束它,

\begin{tabular}{l}
\begin{empty}
\\
\end{empty}
\end{tabular}

会产生与结束表格单元格相同的错误,\\因此结束组并生成错误,因为环境尚未完成。

相关内容