如何制作一个简单的 TeX 条件来检查是否存在某些特定数字?

如何制作一个简单的 TeX 条件来检查是否存在某些特定数字?

我需要在宏中创建一个简单的条件。如果#1是“1”、“2”、“3”、“4”、“5”或“6”,则打印Text: #1,否则不执行任何操作,即使它是空的。我尝试了以下代码:

\ifnum#1=1
    Text:~#1
\if

我甚至无法检查是否1存在。我如何检查#1它是否等于“1”、“2”、“3”、“4”、“5”或“6”?

答案1

在您的评论中您指出 #1 可以为空

\ifnum#1=1
    Text:~#1
\if

在这种情况下将会出现错误,但简单的更改为

\ifnum0#1=1
    Text:~#1
\if

将使空参数为 Ok(并计为零)。请注意,这\macro{ 1}将导致错误,因为\ifnum0 1=1无效,因为0 1不是有效数字。如果需要,可以插入额外的宏来删除虚假空格。

  \ifnum0#1>0
     \ifnum0#1<7
        Text:~#1
    \fi
  \fi

答案2

对于有限范围的整数,其他可能性是空白或整数输入,我会选择

\catcode`\@=11 %
\long\def\@firstoftwo#1#2{#1}
\long\def\@secondoftwo#1#2{#2}
\long\def\macro#1{%
  \ifnum 0#1 > 0 %
    \ifnum 0#1 < 7 %
      \expandafter\expandafter\expandafter\@firstoftwo
    \else
      \expandafter\expandafter\expandafter\@secondoftwo
    \fi
  \else
    \expandafter\@secondoftwo
  \fi
}

用作

\macro{}\TRUE\FALSE
\macro{0}\TRUE\FALSE
\macro{1}\TRUE\FALSE
\macro{6}\TRUE\FALSE
\macro{7}\TRUE\FALSE

答案3

我希望我正确理解了你的问题:

\def\myempty{}
\def\mynumber#1{%
\if#1\myempty
\else
\ifnum#1>0
\ifnum#1<7
Text:~#1
\fi\fi\fi}
This is \mynumber{0} \mynumber{4} \mynumber{7}
\end

相关内容