在“boolexpr”中使用“switch”时出现“缺失数字”错误

在“boolexpr”中使用“switch”时出现“缺失数字”错误
\pdfoutput=1
\documentclass[12pt]{amsart}
\usepackage{boolexpr}

\def \p{1}
\def \q{1}

\begin{document}
\switch[\p=]
\case{\q}abc
\endswitch
def
\end{document}

编译上述内容时出现以下错误

! Missing number, treated as zero.
<to be read again> 
                   \bex@=0 truepart 
l.12 \endswitch

但如果我们把定义改为

\def \q{2}

或者将行改为

\switch[1=]

没问题。但只需将行改为

\case{1}abc

产生同样的错误。

知道为什么会发生这种情况吗?提前谢谢您。

答案1

似乎没有很好的文档记录,但示例显示需要计数器值。您可以使用以下方式欺骗包\numexpr

\switch[\numexpr\p\relax=]
\case{\q} abc
\endswitch

问题在于,必须boolexpr以某种方式“宣布”要进行的测试类型;

\switch[\number\p=]

作品。

答案2

使用计数器代替宏:

\documentclass{amsart}
\usepackage{boolexpr}
\newcounter{p}\setcounter{p}{1}
\newcounter{q}\setcounter{q}{1}

\begin{document}
\switch[\value{p}=]
\case{\value{q}} abc
\endswitch
def
\end{document}

相关内容