
Considere este código:
\documentclass{article}
\begin{document}
\pagestyle{empty}
\def\contents{%
\parindent = 0pt
\LARGE
\strut
\raise\baselineskip
\vtop
{%
{\Large\smash{Chapter}\par}%
title\par
}%
\par
}
\newbox\tempbox
\loggingoutput
\vspace*{20pt}%
\begingroup
\contents
\endgroup
\clearpage
\vspace*{20pt}%
\setbox\tempbox\vbox
\bgroup
\contents
\egroup
\noindent \box \tempbox
\end{document}
Se \contents
supone que es el título de un capítulo, Chapter
escrito en una línea y el título del capítulo en la línea siguiente.
Utilizo ese \raise\baselineskip\vtop{...}
artilugio para permitirme eliminar el Chapter
texto de los capítulos destacados pero aún tener los títulos de los capítulos en la misma posición vertical de la página.
Todo estuvo bien hasta que tuve que colocar el encabezado de este capítulo en un cuadro antes de colocarlo en la página de salida. Pensé que simplemente encerrar todo en un archivo \vbox
para usarlo más tarde \box
funcionaría, pero no estaría preguntando aquí si así fuera :)
El registro muestra esto para la primera página:
...\glue 20.0
...\glue 0.0
...\glue(\parskip) 0.0 plus 1.0
...\glue(\baselineskip) 0.0
...\hbox(22.0+6.60007)x345.0
y esto para el segundo:
...\glue 20.0
...\glue 0.0
...\glue(\parskip) 0.0 plus 1.0
...\glue(\lineskip) 1.0
...\hbox(22.0+6.60007)x345.0
la única diferencia es que en el primero TeX inserta \baselineskip
antes del contenido y en el segundo inserta un \lineskip
.
¿Porque hace eso? ¿Y cómo hacerlo de otra manera?
Respuesta1
Ha utilizado un \vbox
punto de referencia para que esté en la línea inferior, por lo que el cuadro tiene una altura de 22 puntos, ya que esto ya es más que \baselineskip
tex, no puede garantizar \baselineskip
el espacio entre el punto de referencia del nodo anterior y el del cuadro que se está agregando, por lo que se inserta en \lineskip
su lugar. . Podrías usar a \vtop
en su lugar, lo que hace que sea más fácil obtener el espacio correcto al principio (y más difícil obtener el espacio correcto después)
Hmm, en realidad supongo que la principal diferencia aquí es que en el primer caso \baselineskip
proviene de la fuente grande, por lo que simplemente encaja (por lo tanto, se agrega como 0pt), pero en el segundo caso la fuente grande está dentro del cuadro, por lo que estás usando un salto de línea de base pequeño. .
te pones \baselineskip (0pt)
con
{\LARGE\noindent \box \tempbox\par}