xparse 中的可选参数:\IfBooleanTF 与 \IfNoValueTF

xparse 中的可选参数:\IfBooleanTF 与 \IfNoValueTF

我经常会混淆\IfBooleanTF\IfNoValueTF(以及其他类似的宏),不知道对于以下可选参数,哪个是正确的: ,,,,, s( 和 )和 ( 和)。从文档来看,似乎应该使用:odgk_k^t_t^

  • \IfBooleanTFst
  • \IfNoValueTFo,,,,dgk

问题:

  1. 上面要使用的宏列表是否正确?
  2. 区分\IfBooleanTF和的目的是什么\IfNoValueTF? 只用一个宏来完成这两项工作不是很有意义吗? 或者,是否存在需要区分的情况? tk使用不同的宏对我来说特别令人困惑。

我询问的原因是:如果我能理解这背后的逻辑,也许我就能记住使用正确的方法。

后续问题:

参考:

答案1

是的,上面说的正确。

这两种情况在逻辑上是截然不同的,因为你传递不同的信息. 的目的xparse是使这些结构信息清晰明了。

为了\IfBoolean(TF),论点是单个令牌只能是两个值之一:TRUE 和 FALSE。值是总是t(和s) 参数类型返回,并且测试用于查看它是哪种类型。也可以使用 反转此处返回的逻辑\ReverseBoolean:标记的存在不必映射到逻辑上的 TRUE。

\DeclareDocumentCommand \foo { >{ \ReverseBoolean } s }
   {
      \IfBooleanTF #1
        { Star not present }
        { Star present }
   }

另一方面,获取“一些标记”的参数类型可能不存在(因此产生\NoValue),存在但为空或存在且非空。某事物的逻辑展示无法逆转,因此\IfNoValue仅当根本没有给出可选参数时才会始终为真。


-type参数k最近已调整:您现在需要e-type。这个参数有些特殊,团队已经就此处的正确形式进行了大量讨论。

相关内容