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}

\disappearingruleto be "glued" to the Exercise? In some case, the\disappearingruleof 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