将 \@ifnextchar 限制在同一行

将 \@ifnextchar 限制在同一行

我需要一个在方括号之间采用可选参数的环境,但只有当在与命令相同的行上提供时才可以\begin{...}

\documentclass{article}
\begin{document}
\makeatletter
\def \MyTest {
\@ifnextchar[{TRUE} {FALSE}
}
\makeatother
SUCCESS: \MyTest
A\\
Next should be FALSE:
\MyTest
[B\\
\newenvironment{TEST}{\MyTest}{}
SUCCESS: \begin{TEST}\end{TEST}
SUCCESS: \begin{TEST}[\end{TEST}\\
Next should be FALSE:
\begin{TEST}
[\end{TEST}
\end{document}

Verbatim这个行为对于包的环境来说是一样的fancyvrb,但是源代码中提取相关部分相当复杂。

我曾尝试使用\peek_catcode_ignore_spaces:NTF\peek_meaning_ignore_spaces:NTF识别 EOL,但没有成功。

\@ifnextchar我怎样才能最好地实现这种方案,expl3但任何解决方案都值得欢迎。

相关内容