是否有可以在 pdfTeX 版本 3.14159265-…(TeX Live 2017)中使用\message
或\typeout
格式化打印字符串的字符代码列表或概述?
我知道^^J
哪个是换行符。还有其他吗?
\documentclass{minimal}\makeatletter
\message{^^J==> Hello^^JWorld! <==^^J}
\typeout{^^J==> Hello^^JWorld! <==^^J}
\@@end
答案1
\message
对其参数进行完全扩展。不可扩展的标记将表示为其自身;控制序列将在(如果为非负)之前,\escapechar
并在其后加上空格(如果它们是控制字)。如果\newlinechar
为非负,则相应的字符将产生换行符。
下面的纯 TeX 文件lupino.tex
展示了其特点。
\def\Now#1{Now#1}
\message{^^J\Now\space you can^^J\relax^^J}
\newlinechar=`^^J
\message{^^J\Now\space you can^^J\relax^^J}
\escapechar=-1
\message{^^J\Now\space you can^^J\relax^^J}
\end
控制台输出将是
This is TeX, Version 3.14159265 (TeX Live 2018) (preloaded format=tex)
(./lupino.tex ^^JNow you can^^J\relax ^^J
Now you can
\relax
Now you can
relax
)
No pages of output.
Transcript written on lupino.log.
pdftex
如果你运行而不是 则没有什么区别tex
。
Plain TeX 不会设置\newlinechar
,LaTeX 会将其设置为 10,方法是
\newlinechar=`^^J
答案2
本质上\message
没有其他格式,^^J
不是内置的,任何带有代码值的字符\newlinechar
都不会打印,而是强制换行。乳胶源有:
\newlinechar`\^^J