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
:
escreve uma mensagem do tipo “usuário irritado pelo computador” message, para o terminal.\immediate\write\terminal{I'm waiting...}
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
This question on the Web: http://latex.net.br/faq/FAQ-write.html
Do you have any question? Ask on: latex.net.br - we love qood questions!