"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=3일반TeX
  • \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 []

관련 정보