“show”系列偵錯指令

“show”系列偵錯指令

正如所討論的這裡,有許多命令可用於「調試」(La)TeX 編寫過程。

我也知道有時\show可以使用該命令來顯示巨集定義。

儘管如此,我知道有一些以 show 開頭的調試/跟踪命令,例如\showboxbreadth=xx可以看到這裡

是否有此類命令及其作用的清單?

答案1

這本書TeX By TopicVictor Eijkhout 描述了一些\show...巨集。

在下面的概述中X,表示一些整數值和 Y 和 8 位數字,是一些「內部數量」的縮寫,\Z例如countdimen或暫存器,是一個單字或空格分隔的單字清單。\skiptokenW

  • \show是原始命令,顯示標記的含義,即\meaning\foo在文件中執行的操作。
  • \showboxdepth=X具有盒子嵌套最深級別的值,預設為X=3in plainTeX
  • \showboxbreadth=X具有每個等級顯示的最大項目數這有一個簡單TeX的預設值X=5
  • \showlists是一個原語,以所有 4 種非數學 TeX 模式(即水平/垂直和受限版本)寫入部分框列表的內容
  • \showthe\Y\Y列印文件中的數量內容\the\the\footoks
  • \showhyphens{W}根據連字符規則在終端機/日誌上顯示 W 的連字符。

現在,該eTeX標準(截至 2017 年 4 月撰寫本文時已成為標準)已添加了更多\show...工具

  • \showifs(用 激活\tracingifs=1
  • \showgroups( \tracinggroups=1)
  • \showtokens對於令牌清單和內容,無法使用\show或顯示\showthe

這三個eTeX附加項與模式無關。

LaTeX 添加了一些包裝宏,例如

  • \showoutput
  • \showoverfull
  • \showhyphens(正在重新定義)

並設定初始\showboxbreadth=-1\showboxdepth=-1

下面是純 TeX 實體的範例 LaTeX 文件\show...

\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}

輸出都在控制台上,如文件中所示.log(這裡我剪切了標題和底部統計資訊以\show...僅提供相關輸出):

> \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 []

相關內容