![Gravar no arquivo de log](https://rvso.com/image/254702/Gravar%20no%20arquivo%20de%20log.png)
Quero escrever algumas coisas no arquivo de log. Qual é a melhor prática para isso? É \message{}
ou \typeout{}
o quê?
Responder1
O comando Plain TeX \wlog
também está disponível em LaTeX
\wlog{This will be written in the log file}
A macro \wlog
se expande para \immediate\write-1
e, por regra, o argumento será escrito apenas no arquivo de log e não aparecerá no terminal.
Quando \write
é seguido por um número entre 0 e 15 (incluído), a operação de gravação é feita no fluxo de saída com esse número se aberto no momento em que a gravação é realizada (imediatamente ou quando a rotina de saída está em ação, conforme \immediate
precede \write
ou não). Se o fluxo de saída não estiver abertoouo número não é negativo, o argumento \write
é escrito no terminal e no arquivo de log. Por outro lado, quando o número é negativo, o argumento é escrito apenas no arquivo de log.
Exceção: na maioria das distribuições TeX, \write18
passa o argumento para o sistema operacional, desde que o escape do shell esteja habilitado (possivelmente em modo restrito, consulte o manual do TeX Live ou MiKTeX).
O comando LaTeX \typeout
faz isso \immediate\write\@unused
, então ele grava o argumento no terminal e no arquivo de log. Não existe um comando predefinido deste tipo no Plain TeX. Na verdade, \typeout
também dá \protect
um significado adequado para lidar com comandos frágeis no argumento. O \@unused
fluxo não está atribuído permanentemente a um arquivo.
Também \message
grava no terminal e no arquivo de log, mas não força uma nova linha, o que é feito quando \write
a saída é direcionada para o arquivo de log.