这个问题可能之前有人问过,但我找不到满意的答案。有没有办法定义一个带有可选和必须参数的 \newenviroment。例如
\newenvironment[2]{
do something if #1 is there else leave alone
do something with #2
}{}
如果问题听起来太模糊,我提前道歉。
答案1
您可以使用xparse
包。它提供了声明新环境的各种选项:
\DeclareDocumentEnvironment
\NewDocumentEnvironment
\RenewDocumentEnvironment
\ProvideDocumentEnvironment
这些有语法
\DeclareDocumentEnvironment {<environment>} {<arg spec>}
{<start code>} {<end code>}
此外,要检查第一个参数是否存在,您可以使用以下之一:
\IfNoValueTF
\IfValueTF
\IfValueTF
...
\IfNoValueTF
例如,语法如下
\IfNoValueTF {#1}
{ \DoSomethingJustWithMandatoryArgument {#2} }
{ \DoSomethingWithBothArguments {#1} {#2} }
有关更多详细信息,请参阅xparse
包文档。
一个简单的例子(没有任何特定的 MWE/需要)
\documentclass{article}
\usepackage{xparse}
\NewDocumentEnvironment{myenviron}{om}{%
\IfNoValueTF {#1}
{#2}
{#1#2}%
}{%
}
\begin{document}
\begin{myenviron}
No optional argument
\end{myenviron}
\begin{myenviron}[\tiny]
With optional argument
\end{myenviron}
\end{document}
这只是一个模型示例,您必须根据您的需要修改/编写自己的示例。