检查 \newcommand 或 \NewDocumentCommand 中的选项?

检查 \newcommand 或 \NewDocumentCommand 中的选项?

我正在尝试实现一个如下调用的自定义命令:

\mycommand[hello][world]{mandatory1}{mandatory2}

或者:

\mycommand[hello,world]{mandatory1}{mandatory2}

但是,我不知道如何检查这两个选项的值——我想检查它们是否真的是“hello”和“world”,而不是其他的,而不是“x”和“y”等等。

伪代码看起来像这样:

 \NewDocumentCommand{o o m m}{
    if(#1 == "hello"){...} else {...}
    if(#2 == "world"){...} else {...}
}

我该怎么做?我已经\IfValueTF{...}在 中找到答案xparse,但我无法用它检查选项的值 - 只能检查是否给出了选项的值。

答案1

感谢大家对我的原始问题的评论,我能够找到解决问题的方法。但是,我不确定它是否真的合适。它有效,但也许有更好的解决方案?

\NewDocumentCommand\mycommand{o o m m}{
    \ifthenelse{\equal{#1}{hello}}
        {hello}
        {not hello}
    \ifthenelse{\equal{#2}{world}}
        {world}
        {not world}
}

答案2

我使用类似的命令xparse来设置语言:

\DeclareRobustCommand{\setlanguage}[1]{%
    \IfEq{#1}{da}{%
         \renewcommand{\contentsname}{Indhold} % TOC Name
         }%
         {}% if not, then do this
}%

在本文档中,你可以使用:

\setlanguage{da} % or some other ISO 639-1 code

另请参阅

相关内容