我想在日志文件中生成一些元数据,以便复制到另一个应用程序。但是日志文件被包装为 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。