在每个页面的开头执行一些代码:在我的情况下该怎么做?

在每个页面的开头执行一些代码:在我的情况下该怎么做?

我使用一个环境来进行练习,在每次练习之前画一条水平线。

如果练习位于页面的开头,我想阻止绘制规则。

我使用了一个变量\isFirstExercise并尝试使用它\AtBeginShipout\AtBeginningPage但是它不起作用。

你能帮助我实现这个目标吗?


参见 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}

在此处输入图片描述

相关内容