¿La concatenación de dos archivos de texto, que se compilan bajo tex, siempre se compila bajo tex?

¿La concatenación de dos archivos de texto, que se compilan bajo tex, siempre se compila bajo tex?

En otras palabras, ¿el conjunto de todos los archivos de texto que se compilan bajo tex forma un monoide bajo concatenación?

Recientemente incursioné un poco en el texto simple y mis sentidos de araña algebraicos inmediatamente hormiguearon. Pensé en buscar la respuesta en Google con facilidad, pero hasta ahora no he encontrado nada.

Respuesta1

Primero, un archivo tex simple termina en \bye(y un archivo latex termina en \end{document}), y todo lo que sigue se ignora. Entonces su afirmación es trivialmente correcta, ya que el segundo archivo se ignora después de la concatenación.

Si lo consideramos \byeun "metacomando", incluido en una concatenación, entonces su afirmación es incorrecta.

Considere los archivos

\def\aa{0}
\aa
\bye

y

\def\bb{0}
\bb
\ifx\aa\bb\cc\fi
\bye

Cada uno de ellos compila, pero la concatenación no:

\def\aa{0}
\aa
\def\bb{0}
\bb
\ifx\aa\bb\cc\fi
\bye

produce

! Undefined control sequence.
l.5 \ifx\aa\bb\cc
                 \fi
? 
! Emergency stop.

La razón es que indefinido \aano está definido en el segundo archivo, pero es el mismo que \bben el concatenado.

Respuesta2

En TeX simple, un archivo con el formato adecuado terminará \byeindicando al compilador que deje de buscar entradas. Por lo tanto, la concatenación solo compilará el primer archivo y luego se ignorará el resto. (Así que no). En LaTeX, un archivo compilable terminará \end{document}nuevamente para indicarle al compilador que ya está listo. Por lo tanto, solo se compilará el primer archivo de la concatenación y el resto se ignora. Además, el segundo archivo ahora tendrá un preámbulo en una ubicación que generaría un error de compilación si me vieran. (Entonces no.)

No se analizan los impactos adicionales de los paquetes, fuentes, archivos ingresados, etc.

información relacionada