我需要在纯 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}