我正在尝试实现一个如下调用的自定义命令:
\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
另请参阅