将 s(星号)参数与 \NewDocumentEnvironment 结合使用

将 s(星号)参数与 \NewDocumentEnvironment 结合使用

是否可以使用ins的参数说明符,以便我们获得一个带有星号版本的环境?xparse\NewDocumentEnvironment

事实上它是有效的,但是星星指向了错误的位置:

\documentclass{article}

\usepackage{xparse}

\NewDocumentEnvironment{baz}{s O{Foobar}}{%
   \begin{quote}
   \IfBooleanTF{#1}{%
      \textbf{#2 (starred)}\quad
   }{%
      \textbf{#2 (non-starred)}
   }%
}{%
   \end{quote}
}

\usepackage{lipsum}

\begin{document}
\lipsum[1]
\begin{baz}
   \lipsum[2]
\end{baz}
\lipsum[3]
% Star at the wrong place in a LaTeX2e sense
\begin{baz}*[Name]
   \lipsum[2]
\end{baz}
\lipsum[3]
\end{document}

\NewDocumentEnvironment{baz}{s ...如果定义{baz}和那就太好了{baz*},否则就必须像在 2e 语法中那样分别定义它们……

答案1

说啊

\NewDocumentEnvironment{baz}{s O{Foobar}}{%
   \begin{quote}
   \IfBooleanTF{#1}{%
      \textbf{#2 (starred)}\quad
   }{%
      \textbf{#2 (non-starred)}
   }%
}{%
   \end{quote}
}
\ExplSyntaxOn
\cs_new:cpn {baz*} {\baz*}
\cs_new_eq:cN {endbaz*} \endbaz
\ExplSyntaxOff

现在\begin{baz*}...\end{baz*}就可以按预期进行。

我不确定这种意义上的语法扩展是否好:环境的名称是的参数\begin

相关内容