Debugging-Befehle der „show“-Familie

Debugging-Befehle der „show“-Familie

Wie besprochenHier, es gibt viele Befehle, mit denen der (La)TeX-Kompositionsprozess „debuggt“ werden kann.

Ich weiß auch, dass der Befehl manchmal \showverwendet werden kann, um die Makrodefinitionen anzuzeigen.

Trotzdem weiß ich, dass es einige Debug-/Tracing-Befehle gibt, die mit „show“ beginnen, \showboxbreadth=xxwie man beispielsweise sehen kannHier.

Gibt es eine Liste solcher Befehle und ihrer Auswirkungen?

Antwort1

Das BuchTeX By Topicvon Victor Eijkhout beschreibt einige \show...Makros.

In der folgenden Übersicht Xbedeutet „Y“ einen ganzzahligen Wert und „8-Bit-Zahl“ \Zist die Abkürzung für „interne Größe“ wie „ count, dimen„, \skip„ oder „ tokenRegister“, Wist eine durch Wörter oder Leerzeichen getrennte Liste von Wörtern.

  • \showist ein primitiver Befehl und zeigt die Bedeutung eines Tokens, d. h. was \meaning\fooinnerhalb des Dokuments bewirkt.
  • \showboxdepth=Xhat den Wert der tiefsten Ebene der Box-Verschachtelung, standardmäßig X=3in plainTeX
  • \showboxbreadth=Xhat die maximale Anzahl angezeigter Elemente pro Ebene Dies hat einen einfachen TeXStandardwert vonX=5
  • \showlistsist ein Primitiv und schreibt den Inhalt von partiellen Boxlisten in allen 4 nicht-mathematischen TeX-Modi (also horizontal/vertikal und die eingeschränkten Versionen)
  • \showthe\Ydruckt den Inhalt einer \YMenge wie im Dokument mit \the,\the\footoks
  • \showhyphens{W}zeigt die Silbentrennung von W im Terminal/Protokoll entsprechend der Silbentrennungsregeln an.

Nun eTeXfügt der Standard (der zum Zeitpunkt des Schreibens dieses Artikels im April 2017 bereits ein Standard ist) einige weitere \show...Tools hinzu

  • \showifs(aktiviert mit \tracingifs=1)
  • \showgroups( \tracinggroups=1)
  • \showtokens\showfür Token-Listen und Inhalte, die mit oder nicht angezeigt werden können \showthe.

Diese drei eTeXErgänzungen sind modusunabhängig.

LaTeX fügt einige Wrapper-Makros hinzu, wie zum Beispiel

  • \showoutput
  • \showoverfull
  • \showhyphens(wird neu definiert)

und setzt zunächst \showboxbreadth=-1und \showboxdepth=-1auch.

Hier ist ein Beispiel-LaTeX-Dokument für die einfachen TeX- \show...Entitäten.

\documentclass{article}


\newbox\foobox

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


\newcount\foocnt
\foocnt=17


\newtoks\footok
\footok={Gandalf The Grey}

\tracingoutput=1
\tracingonline=1

\begin{document}
\showboxbreadth=10 
\showboxdepth=2
\scrollmode
\showbox\foobox

\showthe\footok

\showthe\foocnt

% Show lists 
a\hfil\break b\par
c\hfill\break d
\hbox{e\vbox{f\showlists}}

\end{document}

Die Ausgabe erfolgt sowohl auf der Konsole als auch in der .logDatei (hier habe ich den Header und die unteren Statistiken ausgeschnitten, um \show...nur die zugehörige Ausgabe bereitzustellen):

> \box26=
\hbox(6.83331+0.0)x48.88896
.\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
.etc.

! OK.
l.23 \showbox\foobox


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


> 17.
l.27 \showthe\foocnt



### horizontal mode entered at line 32
\hbox(0.0+0.0)x15.0
\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
\hbox(0.0+0.0)x15.0
\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:
\write-{}
\glue(\topskip) 5.69446
\hbox(4.30554+0.0)x345.0, glue set 324.99998fil
.\hbox(0.0+0.0)x15.0
.\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
.\hbox(6.94444+0.0)x349.44444
..\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]
\vbox(633.0+0.0)x407.0
.\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 []

verwandte Informationen