Как получить \vfill после каждого \item в среде перечисления, которая включает \newpage?

Как получить \vfill после каждого \item в среде перечисления, которая включает \newpage?

Я пытаюсь создать пакет заметок для своего класса, который в основном представляет собой длинный список вопросов, по 2 или 3 на страницу, с пространством после каждого вопроса, где студенты могут разработать решения. Я использую пакет enumitem, и я разработалпочтиИдеальное решение — использовать пользовательскую среду списка и определить itemsepи afterвыполнить работу по вертикальному интервалу:

\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}

Это работало отлично, пока я не решил распределить эти вопросы по двум страницам, вручную вставив \newpage:

\begin{document}
    \begin{questions}
        \item First Question
        \item Another Question
           \newpage
        \item Another Question
        \item Another Question
    \end{questions}
\end{document}

В этой версии вопрос 2 оказывается внизу страницы 1, без пробела после него. Я могу это как-то исправить, закончив questionsсписок перед новой страницей и перезапустив его после этого, вот так:

\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}

...но заканчивать и начинать список заново каждый раз, когда я хочу вставить новую страницу, — это утомительно.

Есть ли более "элегантный" (читай: более простой) способ получить желаемое поведение с помощью пакета enumitem? Я полностью доверяю enumitem и предпочел бы не переходить на другой пакет, если на то нет действительно веской причины.

решение1

Есть автомат \vfilс \newpage. Его раздавило \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}

решение2

Проблема в том, что \itemsepклей вставляется командой \item, поэтому он находится вверху второй страницы и отбрасывается правилом.

Я не вижу способа «откатиться назад», потому что когда TeX завершает страницу, он удаляет ее из памяти. Таким образом, вам нужно вручную добавить \vfillперед \newpage.

Добавив немного семантики, вы можете сделать

\newcommand{\questionbreak}{\vfill\pagebreak}

Пример:

\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}

введите описание изображения здесь

Проверьте небольшие изменения: \itshapeне принимает аргумент. Если вы хотите, чтобы число было выделено курсивом, сделайте

label=\textit{Question \arabic*.}

Связанный контент