In che modo ** prompt differisce da * prompt?

Oct 02 2020

Secondo TeXbook p. 23, il **prompt differisce dal *prompt solo quando il primo carattere è &o meno \.

Tuttavia, se emettiamo il seguente comando (notare il primo \) in **e *prompt, l'output è diverso:

\setbox0=\hbox{a} \showbox0

Perché l'output è diverso? Dove è documentato? Ci sono altri casi in cui l'elaborazione di **differisce da *?

Risposte

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.

Nel secondo caso non c'è .logancora nessun file aperto, perché TeX sta ancora aspettando un nome file per impostare il file \jobname. Come vedi, nel secondo caso non c'è annotazione Transcript written on. Poiché nessun altro flusso di output è aperto, TeX userà il terminale per la stampa della diagnostica.

Se segui il suggerimento di Donald Arsenau e lo fai \setbox0=\hbox{\jobname} \showbox0, la presenza di \jobnameforzerà TeX ad assegnare il valore predefinito \jobname, cioè texput. In questo caso il .logfile può essere aperto e l'output sul terminale è lo stesso del ilif.texcaso.