我想将一些内容写入日志文件。最佳做法是什么?是吗?\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
将参数传递给操作系统,前提是启用了 shell 转义(可能处于受限模式,请参阅 TeX Live 或 MiKTeX 的手册)。
LaTeX 命令\typeout
会执行\immediate\write\@unused
,因此它会将参数写入终端和日志文件。Plain TeX 中没有此类预定义命令。Indeed\typeout
还给出了\protect
处理参数中脆弱命令的适当含义。\@unused
流永久取消分配给文件。
还会\message
在终端和日志文件中写入内容,但不会强制换行,而是在将\write
输出定向到日志文件时完成。