我正在努力理解\lastbox
和\unhbox
与朋友相处。不幸的是,这有点超出我的TeX
工资范围……
为什么在这个例子中我得到了很大的空间?
\documentclass{article}
\usepackage{xcolor}
\pagestyle{empty}
\newbox\linebox
\begin{document}
\vbox{%
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vel
leo ultrices bibendum. Aenean faucibus. \textcolor{red}{why space?}\par
\setbox\linebox\lastbox
\unskip\unpenalty
\noindent
\unhbox\linebox
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vel
leo ultrices bibendum. Aenean faucibus.}
\end{document}
答案1
您有一个盒子\rightskip
,并且\parfillskip
在拆箱后您想要删除它。
(您可能想要添加一个单词空格,但这里我只是删除了)
\documentclass{article}
\usepackage{xcolor}
\pagestyle{empty}
\newbox\linebox
\begin{document}
\vbox{%
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vel
leo ultrices bibendum. Aenean faucibus. \textcolor{red}{why space?}\par
\setbox\linebox\lastbox
\unskip\unpenalty
\noindent
\unhbox\linebox\unskip\unskip
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vel
leo ultrices bibendum. Aenean faucibus.}
\end{document}
\showbox\linebox
这是将其设置为后日志的最终部分\lastbox
(有必要为\showboxbreadth
和赋予一个高值\showboxdepth
,而 LaTeX 将其设置为 -1):
.\OT1/cmr/m/n/10 f
.\OT1/cmr/m/n/10 a
.\OT1/cmr/m/n/10 u
.\OT1/cmr/m/n/10 c
.\OT1/cmr/m/n/10 i
.\OT1/cmr/m/n/10 b
.\OT1/cmr/m/n/10 u
.\OT1/cmr/m/n/10 s
.\OT1/cmr/m/n/10 .
.\glue 4.44444 plus 4.99997 minus 0.37036
.\pdfcolorstack 0 push {1 0 0 rg 1 0 0 RG}
.\OT1/cmr/m/n/10 w
.\OT1/cmr/m/n/10 h
.\kern-0.27779
.\OT1/cmr/m/n/10 y
.\glue 3.33333 plus 1.66666 minus 1.11111
.\OT1/cmr/m/n/10 s
.\OT1/cmr/m/n/10 p
.\OT1/cmr/m/n/10 a
.\OT1/cmr/m/n/10 c
.\OT1/cmr/m/n/10 e
.\OT1/cmr/m/n/10 ?
.\pdfcolorstack 0 pop
.\penalty 10000
.\glue(\parfillskip) 0.0 plus 1.0fil
.\glue(\rightskip) 0.0