为什么我的语句 `\bool_if:nTF ....` 无法编译

为什么我的语句 `\bool_if:nTF ....` 无法编译

在尝试提出一个更实质性的问题时,我发现我的\bool_if:nTF {\int_compare_p:nNn {...} = {...}}语句无法编译。为什么?使用mandatory m-type参数代替optional O-type没有任何区别。我在其他情况下经常使用此类语句,从来没有任何问题。即使将我的标准大量集合扔给usepackage{}s它也没有区别。到底发生了什么?

\documentclass{article}
% RN. Melbourne Cup Day 2017
% BRIEF DESCRIPTION:
%  Why does this produce compile ERROR "undefined control sequence \bool" ?????
%=======================
\usepackage[check-declarations]{expl3}
\usepackage{xparse}
%-----------------------
\ExplSyntaxOn
\bool_new:N \l_rn_First_bool  %  TRUE:= First=11
\bool_new:N \l_rn_Second_bool  %  TRUE:= Second=99  
\ExplSyntaxOff
\NewDocumentCommand\myTestingTwoIntegerOperands{O{11}O{99}}
  {  %  
    First~Operand~=~#1\\
    Second~Operand~=~#2\\
    % Testing First operand:
    \bool_if:nTF {\int_compare_p:nNn {#1} = {11}}
      {\bool_set_true:N \l_rn_First_bool}
      {\bool_set_false:N \l_rn_First_bool}
    % Testing Second operand:
    \bool_if:nTF {\int_compare_p:nNn {#2} = {99}}
      {\bool_set_true:N \l_rn_Second_bool}
      {\bool_set_false:N \l_rn_Second_bool}
  }
\begin{document}
  \myTestingTwoIntegerOperands[123][987]
  \myTestingTwoIntegerOperands
\end{document}

答案1

\ExplSyntaxOff在正常的 latex2e 解析生效后

  \bool_if:nTF

不引用名称为 expl3 的命令bool_if:nTF,但是

  \bool _if:nTF

一个未定义的命令,\bool后跟错误放置的数学下标,然后是将排版为文本的_字符。if:nTF

您需要\ExplSyntaxOff在定义之后移动。

相关内容