
Я хочу записать некоторые вещи в файл журнала. Какова лучшая практика для этого? Это \message{}
или \typeout{}
или что?
решение1
Команда Plain TeX \wlog
доступна также в LaTeX.
\wlog{This will be written in the log file}
Макрос \wlog
расширяется до \immediate\write-1
, и по правилу аргумент будет записан только в файл журнала и не появится в терминале.
Если \write
за следует число от 0 до 15 (включительно), операция записи выполняется в выходном потоке с этим номером, если он открыт в момент выполнения записи (немедленно или когда выполняется процедура вывода, в зависимости от того, \immediate
предшествует он \write
или нет). Если выходной поток не открытиличисло неотрицательное, аргумент \write
записывается на терминал и в файл журнала. И наоборот, когда число отрицательное, аргумент записывается только в файл журнала.
Исключение: в большинстве дистрибутивов TeX \write18
аргумент передается операционной системе при условии, что включен выход из оболочки (возможно, в ограниченном режиме, см. руководство TeX Live или MiKTeX).
Команда LaTeX \typeout
делает \immediate\write\@unused
, поэтому она записывает аргумент и в терминал, и в файл журнала. В Plain TeX нет предопределенной команды такого рода. Indeed \typeout
также дает \protect
подходящее значение для обработки хрупких команд в аргументе. \@unused
Поток постоянно не назначен файлу.
Также \message
записывает и в терминал, и в файл журнала, но не создает новую строку, что происходит при \write
направлении вывода в файл журнала.