在 \parbox 中使用 \color 会导致垂直位移

在 \parbox 中使用 \color 会导致垂直位移

修改时我的答案这个问题我遇到了一些奇怪的行为。如果\color{<color>}在顶部对齐的开头使用\parbox,则整个框会向下移动,如下所示:

\documentclass{article}
\usepackage{xcolor}
\begin{document}
Word
\framebox{\parbox[t]{1cm}{word}} %% <- this is fine
\framebox{\parbox[t]{1cm}{\textcolor{blue}{word}}} %% <- this is fine
\framebox{\parbox[t]{1cm}{\color{blue}word}} %% <- ??
\framebox{\parbox[t]{1cm}{\hskip0pt\color{blue}word}} %% <- this is fine
\framebox{\parbox[t]{1cm}{\leavevmode\color{blue}word}} %% <- this is fine
\framebox{\parbox[t]{1cm}{$\displaystyle\int$}} %% <- this is fine
\framebox{\parbox[t]{1cm}{\color{blue}$\displaystyle\int$}} %% <- ??
\end{document}

在此处输入图片描述

\frameboxes 只是为了显示\parboxes 的位置/大小。)

有人能告诉我为什么会发生这种情况吗(以及如何最好地避免这种情况)?

答案1

\color通常通过“whatsits”实现,即\special\pdfcolorstack对于 pdfTeX 的情况。它成为垂直框 ( ) 开头的顶部元素\parbox[t]。下一段从下面开始。将其放在\leavevmode起始段落的基线之后是正确的解决方法。

为了进行调试,可以通过以下方式检查盒子\showbox

\documentclass{article}
\usepackage{color}
\begin{document}
  \showboxdepth=\maxdimen
  \showboxbreadth=\maxdimen
  \tracingonline=1
  \setbox0=\hbox{\parbox[t]{1cm}{\color{blue}word}}
  \showbox0
\end{document}

控制台(带有\tracingonline=1)和.log文件报告:

\hbox(0.0+6.94444)x28.45274
.\vbox(0.0+6.94444)x28.45274
..\pdfcolorstack 0 push {0 0 1 rg 0 0 1 RG}
..\glue(\parskip) 0.0
..\hbox(6.94444+0.0)x28.45274, glue set 7.03604fil
...\hbox(0.0+0.0)x0.0
...\OT1/cmr/m/n/10 w
...\kern-0.27779
...\OT1/cmr/m/n/10 o
...\OT1/cmr/m/n/10 r
...\OT1/cmr/m/n/10 d
...\penalty 10000
...\glue(\parfillskip) 0.0 plus 1.0fil
...\glue(\rightskip) 0.0
..\pdfcolorstack 0 pop

! OK.
l.8   \showbox0

相关内容