我怎样才能读取输入行而不让 TeX 认为它位于行的开头?

我怎样才能读取输入行而不让 TeX 认为它位于行的开头?

通常,如果终端上有不完整的行,则 等会开始换行\errmessage\immediate\write

pdftex '\message{123}\errmessage{hello}\end' 

输出:

entering extended mode
123
! hello.
<*> \message{123}\errmessage{hello}
                                   \end

尽管如此,TeX 假定终端输入和输出没有被重定向(可能),因此在这种情况下不在!单独的行上。

echo 123 | pdftex '\message{123}\read -1 to \aaa\errmessage{hello}\end' 

输出:

entering extended mode
123! hello.
<*> \message{123}\read -1 to \aaa\errmessage{hello}
                                                   \end
? 

有没有办法解决这个问题,强制!出现在新行上?(也许修改\read或其他方法允许阅读?)

请注意,即使没有以下情况,也可能会遇到此问题\message

echo 123 | pdftex '\input expl3-generic.tex\read -1 to \aaa\errmessage{hello}\end' 

输出:

entering extended mode
(/usr/share/texmf-dist/tex/latex/l3kernel/expl3-generic.tex (/usr/share/texmf-dist/tex/latex/l3kernel/expl3-code.tex) (/usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def))! hello.
<*> \input expl3-generic.tex\read -1 to \aaa\errmessage{hello}
                                                              \end
? 

解决此问题的一种可能方法是在\immediate\write 128 {}每个之后\read,但如果出现很多\read而没有任何错误消息等,它将打印许多虚假行。并且\message{}不执行任何操作。

相关内容