¿Qué documentación explica detalladamente cómo utilizar los condicionales TeX?

¿Qué documentación explica detalladamente cómo utilizar los condicionales TeX?

Tengo un documento que necesita una gran variedad de condicionales TeX simples, por ejemplo:

IF #1 >= 1 AND #2 >= 10
IF #1 != “tree” OR #2 == “mountain”
IF 10 > #1 > 2

He encontrado documentación limitada sobre este tema y la mayoría es bastante concisa y no es fácil de entender, o simplemente describen los componentes individuales, pero no explican cómo se usan juntos. ¿Qué documentación describe detalladamente cómo crear condicionales TeX simples, al mismo tiempo que proporciona un amplio código de ejemplo y muestra cómo evitar errores comunes?

Respuesta1

Como se menciona en los comentarios, el TeXBook es la referencia definitiva para estas cosas. Pero también vale la pena mencionar la terminología que puede ayudar a la hora de buscar documentación gratuita en este sitio o en otro lugar.

Los condicionales propios \if \ifnumy amigos son TeX.primitivosen lugar de definirse en TeX simple. TeX en sí no proporciona operadores booleanos como OR y AND aunque, por supuesto, varios paquetes de macros los implementan (mediante un anidamiento adecuado de las construcciones if primitivas), pero TeX simple, de hecho, no define ninguna de esas macros. Entonces, una lectura literal (pero no tan útil) de su pregunta llevaría a la respuesta de que no hay documentación, ya que TeX simple no tiene AND ni OR. (Hay una \orprimitiva que se usa \ifcasepero que no es el conector infijo implícito en su pregunta).

Tu primer ejemplo:

IF #1 >= 1 AND #2 >= 10

\ifnum#1>1 
  \ifnum#2>9
     yes
   \else
     no
   \fi
 \else
 no
\fi

Tu segundo ejemplo, aquí tendrías que ser más específico.

IF #1 != “tree” OR #2 == “mountain”

tiene #1que darse como verdadero {tree}o \def\x{tree}..... {\x}cuenta como verdadero y, de ser así, solo desea permitir un nivel de expansión o un número arbitrario. Las pruebas son bastante diferentes en cada caso.

Pero quizás

\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

Éste es igual que el primero, la verdad.

IF 10 > #1 > 2

información relacionada