Qual é a diferença entre ** prompt e * prompt?

Oct 02 2020

De acordo com TeXbook p. 23, o **prompt difere do *prompt apenas quando o primeiro caractere é &ou não- \.

No entanto, se emitirmos o seguinte comando (observe o primeiro \) em **e *prompts, a saída será diferente:

\setbox0=\hbox{a} \showbox0

Por que a saída é diferente? Onde isso está documentado? Existem outros casos em que o processamento de **difere *?

Respostas

3 egreg Oct 02 2020 at 15:20
>>> touch ilif.tex # we have a suitable file to input
>>> tex ilif # a file name has been given
This is TeX, Version 3.14159265 (TeX Live 2020) (preloaded format=tex)
(./ilif.tex)
*\setbox0=\hbox{a} \showbox0
! OK (see the transcript file).
<*> \setbox0=\hbox{a} \showbox0

? x
No pages of output.
Transcript written on ilif.log.
>>> tex # no file name
This is TeX, Version 3.14159265 (TeX Live 2020) (preloaded format=tex)
**\setbox0=\hbox{a} \showbox0
> \box0=
\hbox(4.30554+0.0)x5.00002
.\tenrm a

! OK.
<*> \setbox0=\hbox{a} \showbox0

? x
No pages of output.

No segundo caso, não há nenhum .logarquivo aberto ainda, porque o TeX ainda está esperando por um nome de arquivo para definir o \jobname. Como você pode ver, no segundo caso não há anotação Transcript written on. Visto que nenhum outro fluxo de saída está aberto, o TeX usará o terminal para diagnósticos de impressão.

Se você seguir a dica de Donald Arsenau e fizer isso \setbox0=\hbox{\jobname} \showbox0, a presença de \jobnameforçará o TeX a atribuir o padrão \jobname, ou seja texput,. Neste caso, o .logarquivo pode ser aberto e a saída no terminal é a mesma que no ilif.texcaso.