¿Cómo obtener \baselineskip en lugar de \lineskip cuando se usa un cuadro almacenado?

¿Cómo obtener \baselineskip en lugar de \lineskip cuando se usa un cuadro almacenado?

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 \contentssupone que es el título de un capítulo, Chapterescrito 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 Chaptertexto 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 \vboxpara usarlo más tarde \boxfuncionarí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 \baselineskipantes del contenido y en el segundo inserta un \lineskip.

¿Porque hace eso? ¿Y cómo hacerlo de otra manera?

Respuesta1

Ha utilizado un \vboxpunto 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 \baselineskiptex, no puede garantizar \baselineskipel espacio entre el punto de referencia del nodo anterior y el del cuadro que se está agregando, por lo que se inserta en \lineskipsu lugar. . Podrías usar a \vtopen 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 \baselineskipproviene 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}

información relacionada