Escrita de arquivos (de texto) no TeX

O TeX permite que você escreva em arquivos de saída de dentro do seu documento. A facilidade é útil em muitas circunstâncias, mas é vital para várias coisas que o LaTeX (e, na verdade, para quase qualquer pacote macro de nível levado baseado em TeX) faz para você

As utilizações básicas de escrever em um arquivo externo são “óbvias” — lembrando títulos de seções para um índice, lembrando nomes de rótulos e números de seção ou figura correspondentes, todos para uma execução posterior do seu documento. No entanto, a coisa “não óbvia” é fácil de esquecer: esses números de página, no TeX, são feras difíceis de domar que precisam ser capturadas com algum cuidado. A complicação é que as operações \write só são executadas à medida que a página é enviada para o arquivo DVI ou PDF. Assim, se você fizer com que sua macro de número de página (\thepage, no LaTeX) não seja expandida até que a página seja escrita, então o número escrito estará correto, pois esse é o momento em que o TeX garante que o número da página corresponda à página que está sendo enviada.

Agora, há momentos em que você quer escrever algo imediatamente: por exemplo, para interagir com o usuário. O TeX também aceita esse requisito com o comando primitivo \immediate:

\immediate\write\terminal{I'm waiting...}
escreve uma mensagem do tipo “usuário irritado pelo computador” message, para o terminal.

O que nos leva ao motivo daquele \terminal. O TeX pode escrever “\write” até 16 streams simultaneamente, e aquele argumento para \write diz qual deve ser usado. Pacotes de macro fornecem os meios de alocação de streams para seu uso: o Plain TeX fornece uma macro \newwrite (usada como “\newwrite\streamname”, que define \streamname como o número do stream). De fato, \terminal (ou seu equivalente) é sempre o primeiro stream de saída configurado (na maioria dos pacotes de macro): ele nunca está vinculado a um arquivo e, se for solicitado ao TeX que escreva em qualquer stream que não esteja vinculado a um arquivo, ele enviará a saída para o terminal (e para o log).

This answer last edited: 2011-10-15


Do you have any question? Ask on: latex.net.br - we love qood questions!