
我有一個需要大量純 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”
does#1
必須被指定為{tree}
或確實\def\x{tree}..... {\x}
算作 true,如果是這樣,您是否只想允許一級擴展或任意數量。每種情況下的測試都相當不同。
但也許
\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