答案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}