0

I use an environment for my exercises that draw an horizontal rule before each exercise.

I would like to prevent the rule to be drawn if the exercise is at the beginning of a page.

I use a variable \isFirstExercise and I tried to play with \AtBeginShipout and \AtBeginningPage but it does not work.

Can you help me achieving this?


See the MWE:

\documentclass[a5paper]{article}
\usepackage{geometry}
\geometry{a5paper}

\usepackage{atbegshi} \usepackage{bophook}

\setlength{\parindent}{0pt}

\def\varIsNewPageExercise{1} \newenvironment{exercise} {\begin{samepage}\if\varIsNewPageExercise1\else\medskip\hrule\medskip\fi\nopagebreak\textbf{Exercise}\par\nopagebreak} {\end{samepage}\global\let\varIsNewPageExercise=0}

\AtBeginShipout{\global\let\varIsNewPageExercise=1} \AtBeginPage{\global\let\varIsNewPageExercise=1}

\begin{document}

\begin{exercise} $1+1 = 2$ \ $2+2 = 4$ \end{exercise}

\begin{exercise} $1+1 = 2$ \ $2+2 = 4$ \end{exercise}

\begin{exercise} $1+1 = 2$ \ $2+2 = 4$ \end{exercise}

\begin{exercise} $1+1 = 2$ \ $2+2 = 4$ \end{exercise}

\begin{exercise} $1+1 = 2$ \ $2+2 = 4$ \end{exercise}

\begin{exercise} $1+1 = 2$ \ $2+2 = 4$ \end{exercise}

\begin{exercise} $1+1 = 2$ \ $2+2 = 4$ \end{exercise}

\begin{exercise} $1+1 = 2$ \ $2+2 = 4$ \end{exercise}

\begin{exercise} $1+1 = 2$ \ $2+2 = 4$ \end{exercise}

\begin{exercise} $1+1 = 2$ \ $2+2 = 4$ \end{exercise}

\begin{exercise} $1+1 = 2$ \ $2+2 = 4$ \end{exercise}

\begin{exercise} $1+1 = 2$ \ $2+2 = 4$ \end{exercise}

\end{document}

enter image description here

Colas
  • 6,772
  • 4
  • 46
  • 96
  • 1
    see https://tex.stackexchange.com/a/61643/2388 – Ulrike Fischer Jul 23 '21 at 21:13
  • Thanks @UlrikeFischer. How I can force \disappearingrule to be "glued" to the Exercise? In some case, the \disappearingrule of an exercise is printed at the end of the page and the exercise is on the next page. – Colas Jul 23 '21 at 21:26

0 Answers0