Criando um ambiente para colocar outra instância de ambiente no vbox

Criando um ambiente para colocar outra instância de ambiente no vbox

Eu tenho um ambiente (definido abaixo). Gostaria de evitar que toda a instância do ambiente se dividisse entre as páginas. Uma solução que encontrei é envolvê-lo em \vbox. Então, meu problema se resume a criar um ambiente que envolva a instância de outro ambiente em um vbox. Qualquer ajuda muito apreciada :)

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

Responder1

Você pode usar \vbox\bgroupno início e \egroupno final. Eu não sei \NewDocumentEnvironment, mas ambientes LaTeX2e normais não permitem parâmetros onde você tem o arquivo \vskip. Aqui está um exemplo.

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

Se você compilar, verá 2 exercícios na primeira página e um na segunda. Cada um deles está envolto em um arquivo \vbox.

Claro, existem outros pacotes para escrever exercícios que podem se adequar ao seu caso de uso, sem que você precise reinventar a roda. Pesquise TeX SX para encontrá-los.

informação relacionada