不换行地写入日志

不换行地写入日志

我想在日志文件中生成一些元数据,以便复制到另一个应用程序。但是日志文件被包装为 80 列,最终我在写入的内容中嵌入了换行符。有办法解决这个问题吗?

我知道写入日志文件的两种方法是\message\immediate\write17。但这两种方法的效果相同。是否有\write17一个仅写入换行文本的特殊文件句柄?

\iffalse到目前为止,我的解决方法是在...之间写入辅助文件\fi,但我知道这不是辅助文件的用途。我不想将这些元数据写入另一个文件。是的,我很固执,但 TeX 意味着只要你足够努力,你通常可以得到任何你想要的东西。我可以这样做吗?

编辑:这里还有一些不起作用的东西。使用相同的文件名打开另一个文件句柄。

\newwrite\logfilenowrap
\immediate\openout\logfilenowrap=\jobname.log

然后\immediate\write\logfilenowrap{long text}不会换行。但是它会删除日志文件中此点之前的所有内容(当然会删除。打开文件句柄通常会将指针放在最前面)。

编辑2:感谢大家的回复。大家一致认为这“可能”是不可能的。我将选择将元数据写入单独的文本文件。

答案1

我确信换行行为是 TeX 本身的固有特性。为什么不能直接写入单独的文件呢?

\newwrite\mylog
\immediate\openout\mylog=\jobname.mylog

答案2

输出文件换行由 texmf.cnf 中的设置控制max_print_line(对于 TeX Live,miktex 可能有另一个我不知道的系统)。

默认设置为:

max_print_line = 79

答案3

尝试这个:

$ max_print_line=14000 pdflatex hello.tex

14000只是一个很大的数字。

(这是@shreevatsaR 的评论,但如果它作为答案出现,则会更容易阅读。)

答案4

pdflatex对于提供的情况MiKTeX,您可以max_print_line直接设置为更大的数字--这里的191:

[IO.File]::WriteAllLines("$Env:AppData\MiKTeX\miktex\config\pdftex.ini", "max_print_line=191")

它创建了pdftex.ini一种可以被 MiKTeX 读取的文件编码pdflatex,即没有 BOM 的 UTF-8。

相关内容