A concatenação de dois arquivos de texto, que compilam em tex, sempre compila em tex?

A concatenação de dois arquivos de texto, que compilam em tex, sempre compila em tex?

Em outras palavras, o conjunto de todos os arquivos de texto compilados em tex forma um monóide sob concatenação?

Recentemente, me envolvi um pouco com texto simples e meus sentidos algébricos de aranha foram imediatamente formigados. Pensei em pesquisar a resposta no Google com facilidade, mas até agora não encontrei nada.

Responder1

Primeiro, um arquivo tex simples termina com \bye(e um arquivo latex termina com \end{document}), e tudo depois disso é ignorado. Portanto, sua afirmação está trivialmente correta, pois o segundo arquivo é ignorado após a concatenação.

Se considerarmos \byeum "metacomando" descartado em uma concatenação, sua afirmação está incorreta.

Considere os arquivos

\def\aa{0}
\aa
\bye

e

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

Cada um deles compila, mas a concatenação não:

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

produz

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

A razão é que indefinido \aaé indefinido no segundo arquivo, mas é igual ao \bbconcatenado.

Responder2

No TeX simples, um arquivo formatado corretamente terminará \byeinformando ao compilador para parar de procurar por entrada. Portanto, a concatenação compilará apenas o primeiro arquivo e o resto será ignorado. (Então não.) No LaTeX, um arquivo compilável terminará \end{document}novamente para informar ao compilador que foi concluído. Portanto, apenas o primeiro arquivo da concatenação será compilado e o restante será ignorado. Além disso, o segundo arquivo terá um preâmbulo agora em um local que geraria um erro de compilação se eu fosse visto. (Então não.)

Não são discutidos os impactos adicionais de pacotes, fontes, arquivos inseridos, etc.

informação relacionada