![Como posso obter um \vfill após cada \item em um ambiente enumerado que inclui uma \newpage?](https://rvso.com/image/472713/Como%20posso%20obter%20um%20%5Cvfill%20ap%C3%B3s%20cada%20%5Citem%20em%20um%20ambiente%20enumerado%20que%20inclui%20uma%20%5Cnewpage%3F.png)
Estou tentando criar um pacote de anotações para minha aula, que é basicamente uma longa lista de questões, 2 ou 3 por página, com espaço após cada questão onde os alunos podem encontrar soluções. Estou usando o enumitem
pacote e elaborei umquasesolução perfeita, usando um ambiente de lista personalizado e definindo itemsep
e after
fazendo o trabalho de espaçamento 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}
Isso funciona bem, até que eu decida que quero espalhar essas questões em duas páginas, inserindo manualmente um \newpage
:
\begin{document}
\begin{questions}
\item First Question
\item Another Question
\newpage
\item Another Question
\item Another Question
\end{questions}
\end{document}
Nesta versão, a Questão 2 fica no final da página 1, sem espaço depois. Posso consertar isso encerrando a questions
lista antes da nova página e reiniciando-a depois, assim:
\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}
...mas terminar e reiniciar a lista toda vez que quero inserir uma nova página é uma dor.
Existe uma maneira mais "elegante" (leia-se: mais fácil) de obter o comportamento que desejo usando o pacote enumitem? Estou bastante convencido do enumitem e prefiro não mudar para um pacote diferente, a menos que haja um bom motivo para isso.
Responder1
Existe um automático \vfil
com \newpage
. Estava sendo esmagado 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}
Responder2
O problema é que a \itemsep
cola é inserida pelo comando \item
, então fica no topo da segunda página e é descartada por regra.
Não vejo como “retroceder”, pois quando o TeX completa uma página ele a remove da memória. Portanto, você precisa adicionar manualmente \vfill
na frente de \newpage
.
Adicionando alguma semântica, você pode fazer
\newcommand{\questionbreak}{\vfill\pagebreak}
Exemplo:
\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}
Verifique as pequenas alterações: \itshape
não aceita discussão. Se você quiser que o número também fique em itálico, faça
label=\textit{Question \arabic*.}