As discussed here, there are many commands which can be used to "debug" (La)TeX composing process.

I also know that sometimes the \show command can be used to show the macro definitions.

Nevertheless I know that there are some debug/tracing commands which start with show, for example \showboxbreadth=xx as one can see here.

Is there any list of such commands and their doings?

  • 2
    The TeXBook lists all the ones in TeX, and etex (texdoc etex) adds a few more. there are also some convenience latex macros starting with show such as \showoutput (or rather etex adds more \tracing... commands) Apr 16 '17 at 12:29

The book TeX By Topic by Victor Eijkhout describes some \show... macros.

In the following overview X means some integer value and Y and 8-bit number, \Z is short for some 'internal quantity' such as a count, dimen, \skip or token register, W is a word or space separated list of words.

  • \show is primitive command and shows the meaning of a token, i.e. what \meaning\foo does within the document.
  • \showboxdepth=X has the value of the deepest level of box nesting, defaulting to X=3 in plain TeX
  • \showboxbreadth=X has the maximum number of items shown per level This has a plain TeX default of X=5
  • \showlists is a primitive and writes the content of partial box lists in all of the 4 non-math TeX modes (i.e. horizontal/vertical and the restricted versions)
  • \showthe\Y prints the content of a \Y quantity as in the document with \the, \the\footoks
  • \showhyphens{W} displays the hyphenation of W on the terminal/log according to the hyphenation rules.

Now, the eTeX standard (which is a standard by now as of writing this in April 2017) adds some more \show... tools

  • \showifs (activated with \tracingifs=1)
  • \showgroups (\tracinggroups=1)
  • \showtokens for token lists and content, that is not possible to show with \show or \showthe.

These three eTeX additions are mode-independent.

LaTeX adds some wrapper macros, such as

  • \showoutput
  • \showoverfull
  • \showhyphens (being redefined)

and sets initially \showboxbreadth=-1 and \showboxdepth=-1 as well.

Here's a sample LaTeX document for the plain TeX \show... entities.



\setbox\foobox=\hbox{A nice text}


\footok={Gandalf The Grey}





% Show lists 
a\hfil\break b\par
c\hfill\break d


The output is both on console as in the .log file (here I cut the header and the bottom statistics to provide the \show... related output only):

> \box26=
.\OT1/cmr/m/n/10 A
.\glue 3.33333 plus 1.66498 minus 1.11221
.\OT1/cmr/m/n/10 n
.\OT1/cmr/m/n/10 i
.\OT1/cmr/m/n/10 c
.\OT1/cmr/m/n/10 e
.\glue 3.33333 plus 1.66666 minus 1.11111
.\OT1/cmr/m/n/10 t
.\OT1/cmr/m/n/10 e
.\OT1/cmr/m/n/10 x

! OK.
l.23 \showbox\foobox

> Gandalf The Grey.
l.25 \showthe\footok

> 17.
l.27 \showthe\foocnt

### horizontal mode entered at line 32
\OT1/cmr/m/n/10 f
spacefactor 1000
### internal vertical mode entered at line 32
prevdepth ignored
### restricted horizontal mode entered at line 32
\OT1/cmr/m/n/10 e
spacefactor 1000
### horizontal mode entered at line 31
\OT1/cmr/m/n/10 c
\glue 0.0 plus 1.0fill
\penalty -10000
\OT1/cmr/m/n/10 d
\glue 3.33333 plus 1.66666 minus 1.11111
spacefactor 1000
### vertical mode entered at line 0
### current page:
\glue(\topskip) 5.69446
\hbox(4.30554+0.0)x345.0, glue set 324.99998fil
.\OT1/cmr/m/n/10 a
.\glue 0.0 plus 1.0fil
.\penalty -10000
.\glue(\rightskip) 0.0
\penalty 300
\glue(\baselineskip) 5.05556
\hbox(6.94444+0.0)x345.0, glue set 339.44443fil
.\OT1/cmr/m/n/10 b
.\penalty 10000
.\glue(\parfillskip) 0.0 plus 1.0fil
.\glue(\rightskip) 0.0
\glue(\parskip) 0.0 plus 1.0
total height 22.0 plus 1.0
 goal height 550.0
prevdepth 0.0

! OK.
l.32 \hbox{e\vbox{f\showlists

Overfull \hbox (12.22223pt too wide) in paragraph at lines 31--33
\OT1/cmr/m/n/10 d [] 

\hbox(6.94444+0.0)x345.0, glue set - 1.0
.\OT1/cmr/m/n/10 d
.\glue 3.33333 plus 1.66666 minus 1.11111
..\OT1/cmr/m/n/10 e
..\vbox(6.94444+0.0)x345.0 []
.\penalty 10000
.\glue(\parfillskip) 0.0 plus 1.0fil
.\glue(\rightskip) 0.0

Completed box being shipped out [1]
.\glue 16.0
.\vbox(617.0+0.0)x345.0, shifted 62.0
..\vbox(12.0+0.0)x345.0, glue set 12.0fil []
..\glue 25.0
..\glue(\lineskip) 0.0
..\vbox(550.0+0.0)x345.0, glue set 503.94617fil []
..\glue(\baselineskip) 23.55556
..\hbox(6.44444+0.0)x345.0, glue set 170.0fil []
  • 1
    \tracingoutput=1 is not needed for \show... to have effect; \tracingonline=1 is needed for \showbox to list the box's contents on the terminal, in addition to the log file. The macro \showhyphens is defined also in plain TeX. Being picky, but… +1 anyway. ;-)
    – egreg
    Apr 16 '17 at 17:52

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.