关于重叠 parbox 的问题

关于重叠 parbox 的问题

我不明白为什么以下几行不能与parbox涉及的行正确重叠。第一行完美折叠,但第二行却不能。当然,如果parbox设置为[b],则会发生相反的情况。我不明白为什么两条线不能完美重叠。

\documentclass{article}

\begin{document}
First Line
\vskip -\baselineskip
\parbox[t]{1in}{\strut First Line\\ Second Line\strut}
\vskip -\baselineskip
Second Line
\end{document}

在此处输入图片描述

答案1

您的示例可以转换为 TeX 基元:

\vtop{First line\par
      Second line (1)\par
}
\vskip-\baselineskip
Second line (2)

\vtop深度很大,因此带有“第二行 (2)”文本的以下框无法遵循\baselineskip\lineskip而是使用 (默认为 1pt)。 基线网格已损坏。

解决方案是保留\prevdepth末尾的原始值,并在插入\vtop后恢复它:\vtop

\newdimen\keepdepthdim
\def\keepdepth{\par \global\keepdepthdim=\prevdepth}
\def\restoredepth{\par \prevdepth=\keepdepthdim}

\vtop{First line\par
      Second line (1)\par
      \keepdepth
}
\restoredepth
\vskip-\baselineskip
Second line (2)
\bye

你的 LaTeX 代码应该是:

\documentclass{article}

\newdimen\keepdepthdim
\def\keepdepth{\par \global\keepdepthdim=\prevdepth}
\def\restoredepth{\par \prevdepth=\keepdepthdim}


\begin{document}
First Line
\vskip -\baselineskip
\parbox[t]{1in}{\strut First Line\\ Second Line\keepdepth}\restoredepth
\vskip -\baselineskip
Second Line
\end{document}

答案2

此版本使用\parbox[c],因此基线不适用于顶部或者底部。

\documentclass{article}
\usepackage{xcolor}

\begin{document}
\textcolor{red}{First Line}\strut
\vskip-\baselineskip\hrule height0pt
\parbox[c]{1in}{\strut First Line\\ Second Line\strut}
\hrule height0pt\vskip-\baselineskip
\strut\textcolor{red}{Second Line}
\end{document}

一个更简单的解决方案是不是使用\parbox,除非您想将文本放入不可破坏的框中。其他任何事情都可以用组来完成。

\documentclass{article}
\usepackage{xcolor}

\parindent=0pt

\begin{document}
\textcolor{red}{First Line}
\vskip-\baselineskip
{\rightskip=\dimexpr \textwidth-1in\relax
First Line\\ Second Line}%
\vskip-\baselineskip
\textcolor{red}{Second Line}
\end{document}

相关内容