
さまざまなプレーン 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
2番目の例では、もっと具体的に説明する必要があります
IF #1 != “tree” OR #2 == “mountain”
#1
は、として指定される必要があるか{tree}
、または\def\x{tree}..... {\x}
true としてカウントされるか、また、そうである場合、1 レベルの拡張のみを許可するか、または任意の数を許可するかを決定します。テストは、それぞれの場合でかなり異なります。
でもひょっとしたら
\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