新环境具有一个可选参数,第二个必须有参数

新环境具有一个可选参数,第二个必须有参数

这个问题可能之前有人问过,但我找不到满意的答案。有没有办法定义一个带有可选和必须参数的 \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}

在此处输入图片描述

这只是一个模型示例,您必须根据您的需要修改/编写自己的示例。

相关内容