为什么我在这里使用 \lastbox 时会出现很大的空格?

为什么我在这里使用 \lastbox 时会出现很大的空格?

我正在努力理解\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

相关内容