Создание среды для помещения другого экземпляра среды в vbox

Создание среды для помещения другого экземпляра среды в vbox

У меня есть окружение (определено ниже). Я хотел бы, чтобы весь экземпляр окружения не разделялся по страницам. Одно из решений, которое я нашел, — это обернуть его в \vbox. Итак, моя проблема сводится к созданию окружения, которое обертывает экземпляр другого окружения в vbox. Любая помощь будет высоко оценена :)

\NewDocumentEnvironment{exercise}{m}
{
} 
{ 
    Write your answer here
    \vskip #1cm
}

решение1

Вы можете использовать \vbox\bgroupв начале и \egroupи в конце. Я не знаю насчет \NewDocumentEnvironment, но обычные среды LaTeX2e не допускают параметров, где у вас есть \vskip. Вот пример.

\documentclass{article}
\newenvironment{exercise}[1]{%
    \def\exerciseskipamount{#1cm}%
    \vbox\bgroup
}{%
    \par
    Write your answer here.\par
    \vspace{\exerciseskipamount}%
    \egroup
}

\begin{document}

\begin{exercise}{8}
Here is the first exercise.
\end{exercise}

\begin{exercise}{8}
Here is the second exercise.
\end{exercise}

\begin{exercise}{8}
Here is the third exercise.
\end{exercise}

\end{document}

Если вы скомпилируете, то увидите 2 упражнения на первой странице и одно на второй. Каждое из них упаковано в \vbox.

Конечно, есть и другие пакеты для письменных упражнений, которые могут подойти для вашего случая использования, не прибегая к изобретению велосипеда. Поищите TeX SX, чтобы найти их.

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