检测环境的 \end

检测环境的 \end

我正在尝试创建一个宏,它抓取到当前环境结束前的所有内容并进行解析。起初,我只想将它放在!我的宏之后,并将另一个!放在当前环境结束之前。

纯 TeX 分隔参数宏方法

\def\scanNext#1\end{#1\end}

LaTeX3 奇怪的论证方法

\ExplSyntaxOn
\cs_set:Npn \scan_next:w #1 \end {
#1\end
}
\newcommand{\scanNext}[1]{\scan_next:w #1}
\ExplSyntaxOff

如果分隔标记与 不同\end,则它们都可以正常工作,但使用 会\end导致错误。我相信那是因为在 执行之前\begin{...}查找。\end{...}\scanNext

是否有可能创建这样一个不会省略的宏\end

除了它导致的错误之外,嵌套环境也可能存在问题。我想我\@currenvir也需要以某种方式使用 check for。

完整 MWE:

\documentclass{article}
\usepackage{amsmath}
\usepackage{expl3}

\ExplSyntaxOn
\cs_set:Npn \scan_next:w #1 \end {
!#1!\end
}
\newcommand{\scanNext}[2]{\scan_next:w #1}
\ExplSyntaxOff

\def\scanNext#1c{!#1c!}

\begin{document}


\begin{gather} % \label{eq:abcd}
    x = \scanNext y
    \\
    \begin{cases}
        a\\
        b
    \end{cases}
    \\
    c=d
\end{gather}


\end{document}

这是预期结果

在此处输入图片描述

相关内容