是否可以使用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
。