我有一个文档需要大量纯 TeX 条件,例如:
IF #1 >= 1 AND #2 >= 10
IF #1 != “tree” OR #2 == “mountain”
IF 10 > #1 > 2
我发现有关这个主题的文档有限,而且大多数文档非常简洁且不易理解,或者它们只描述各个组件,但没有解释如何将它们一起使用。哪些文档详细介绍了如何创建纯 TeX 条件,同时提供了充足的示例代码并展示了如何避免常见错误?
答案1
正如评论中提到的,TeXBook 是这些内容的终极参考。但也值得一提的是,术语可能会在本网站或其他地方搜索免费文档时有所帮助。
条件本身\if
\ifnum
和朋友是 TeX原语而不是在纯 TeX 中定义。TeX 本身不提供布尔运算符,例如 OR 和 AND,尽管当然有各种宏包实现这些(通过适当嵌套原始 if 构造),但纯 TeX 实际上没有定义任何此类宏。因此,从字面上理解(但帮助不大)您的问题会导致答案是没有文档,因为纯 TeX 没有 AND 或 OR。(有一个\or
与一起使用的原始函数\ifcase
,但这不是您的问题所暗示的中缀连接器)。
你的第一个例子:
IF #1 >= 1 AND #2 >= 10
\ifnum#1>1
\ifnum#2>9
yes
\else
no
\fi
\else
no
\fi
你的第二个例子,这里你必须更具体一点
IF #1 != “tree” OR #2 == “mountain”
是否#1
必须给出为{tree}
或是否\def\x{tree}..... {\x}
计为真,如果是这样,您是否只想允许一个扩展级别或任意数字。每种情况下的测试都大不相同。
但也许
\def\treetest{tree}\def\mountaintest{mountain}
\def\testa{#1}\def\testb{#2}
\ifx\treetest\testa
\ifx\mountaintest\testb
yes
\else
no
\fi
\else
yes
\fi
事实上,这个与第一个是一样的。
IF 10 > #1 > 2