如何创建一个条件来检查纯 TeX 中写入文本的值?

如何创建一个条件来检查纯 TeX 中写入文本的值?

我需要在纯 TeX 中创建一个条件,如下所示:

IF #1 = "N"
THEN
    PRINT "TRUE"
ELSE
    PRINT "#1"

我在 TeX 中尝试了各种方法。解决方案一定很简单,但我尝试的所有方法都不起作用,例如:

\if#1="N"
    N
\else
    #1
\fi

#1当“#1”设置为“N”时,里面永远不会有任何其他代码,例如\macro{N},永远不会\macro{\emph{N}}

如何创建一个条件来检查书面文本的值?

答案1

解决方案 1

\ifx与宏相比:

\def\charcheckfor{N}
\def\checkfor#1{%
    \def\tempcheckcharfor{#1}%
    \ifx\tempcheckcharfor\charcheckfor%
        true%
    \else%
        false%
    \fi%
}

\checkfor{N}
\checkfor{X}

解决方案 2

\pdfstrcmp(需要 pdfTeX,对于其他引擎有pdftexcmds)0如果字符串相等则扩展为 ,-1如果第一个字符串在第二个字符串之前(按 ASCII 字符代码计算),则扩展为 ,1如果第一个字符串在第二个字符串之后,则扩展为 。

\def\charcheckfor{N}
\def\checkfor#1{%
    \ifnum\pdfstrcmp{#1}{\charcheckfor}=0%
        true%
    \else%
        false%
    \fi%
}
\checkfor{N}
\checkfor{X}

相关内容