如何在 \message 中打印 EOL?

如何在 \message 中打印 EOL?

我正在尝试这样做:

\documentclass{article}
\begin{document}
\message{Hello \\ world!}
\end{document}

但是,并\\没有打印出行尾。我在控制台中得到了这个:

Hello \\ world!

这里的正确语法是什么?

答案1

此版本有效(我假设打印行尾意味着您转到下一行):

\documentclass{article}
\begin{document}
\message{Hello ^^J world!}
\end{document}

^^J表示换行符)。

答案2

(其他方面都不错的)答案普热米斯瓦夫·舍尔文特克掩盖了几个细节。

您不能使用\\来分隔行\message,因为\\排版操作说明。

TeX 中有一个通用机制来在\write\message指令中生成新行,即使用以内部整数的当前值作为字符代码(ASCII 码)的字符\newlinechar

在 TeXbook 中我们发现(第 228 页)

⟨token list⟩\write应该比较短,因为它只输出一行。TeX 的一些实现无法写出长行;如果你想写很多东西,只需给出几个\write命令即可。或者,你可以将 TeX 的\newlinechar 参数设置为你想要代表“开始新行”的某个字符的 ASCII 码编号;然后 TeX 将在通常将该字符输出到文件时开始新行。例如,在单个命令中向终端输出两行的一种方法\write是说

\newlinechar=`\^^J
\immediate\write16{Two^^Jlines.}

值得注意的是,纯 TeX 没有为 设置值\newlinechar,因此它保留默认值 −1。

相反,LaTeX 始终设置\newlinechar=`\^^J,因此你始终可以执行类似以下操作

\documentclass{article}
\begin{document}
\message{Hello^^Jworld!}
\end{document}

请注意, 周围的空格^^J会保留。这会在和指令中\message产生新行。\message\write\typeout

相关内容