![¿Cómo puedo obtener un \vfill después de cada \item en un entorno de enumeración que incluye una \newpage?](https://rvso.com/image/472713/%C2%BFC%C3%B3mo%20puedo%20obtener%20un%20%5Cvfill%20despu%C3%A9s%20de%20cada%20%5Citem%20en%20un%20entorno%20de%20enumeraci%C3%B3n%20que%20incluye%20una%20%5Cnewpage%3F.png)
Estoy intentando crear un paquete de notas para mi clase, que es básicamente una larga lista de preguntas, 2 o 3 por página, con espacio después de cada pregunta donde los estudiantes pueden encontrar soluciones. Estoy usando el enumitem
paquete y he elaborado uncasiSolución perfecta, utilizando un entorno de lista personalizado y definiendo itemsep
y after
haciendo el trabajo de espaciado vertical:
\documentclass{article}
\usepackage[shortlabels]{enumitem}
\newlist{questions}{enumerate}{1}
\setlist[questions]{label=\itshape{{Question }\arabic*.},
ref={Question }\arabic*,
leftmargin=*,
itemindent=*,
itemsep=\fill,
after={\vfill},
resume}
\begin{document}
\begin{questions}
\item First Question
\item Another Question
\item Another Question
\item Another Question
\end{questions}
\end{document}
Esto funciona bien, hasta que decida que quiero distribuir estas preguntas en dos páginas, insertando manualmente un \newpage
:
\begin{document}
\begin{questions}
\item First Question
\item Another Question
\newpage
\item Another Question
\item Another Question
\end{questions}
\end{document}
En esta versión, la pregunta 2 termina al final de la página 1, sin espacios después. Puedo solucionarlo finalizando la questions
lista antes de la nueva página y reiniciándola después, así:
\begin{document}
\begin{questions}
\item First Question
\item Another Question
\end{questions}
\newpage
\begin{questions}
\item Another Question
\item Another Question
\end{questions}
\end{document}
...pero terminar y reiniciar la lista cada vez que quiero insertar una nueva página es una molestia.
¿Existe una manera más "elegante" (léase: más fácil) de obtener el comportamiento que deseo usando el paquete enumitem? Estoy bastante convencido de enumitem y prefiero no cambiar a un paquete diferente a menos que haya una muy buena razón para hacerlo.
Respuesta1
Hay una automática \vfil
con \newpage
. Estaba siendo aplastado por \fill
.
\documentclass{article}
\usepackage[shortlabels]{enumitem}
\newlist{questions}{enumerate}{1}
\setlist[questions]{label=\itshape{{Question }\arabic*.},
ref={Question }\arabic*,
leftmargin=*,
itemindent=*,
itemsep=0pt plus 1fil,
resume}
\begin{document}
\begin{questions}
\item First Question
\item Another Question
\newpage
\item Another Question
\item Another Question
\end{questions}
\end{document}
Respuesta2
El problema es que el \itemsep
pegamento se inserta mediante el comando \item
, por lo que está en la parte superior de la segunda página y se descarta por regla.
No veo forma de “retroceder”, porque cuando TeX ha completado una página la elimina de la memoria. Por lo tanto, debe agregar manualmente \vfill
delante de \newpage
.
Agregando algo de semántica, puedes hacer
\newcommand{\questionbreak}{\vfill\pagebreak}
Ejemplo:
\documentclass{article}
\usepackage{enumitem}
\newlist{questions}{enumerate}{1}
\setlist[questions]{
label=\textit{Question} \arabic*.,
ref=Question \arabic*,
leftmargin=*,
itemindent=*,
itemsep=\fill,
after=\vfill,
resume,
}
\newcommand{\questionbreak}{\vfill\pagebreak}
\begin{document}
\begin{questions}
\item First Question
\item Another Question
\questionbreak
\item Another Question
\item Another Question
\end{questions}
\end{document}
Compruebe los pequeños cambios: \itshape
no requiere discusión. Si quieres que también el número esté en cursiva, hazlo.
label=\textit{Question \arabic*.}