我使用一个环境来进行练习,在每次练习之前画一条水平线。
如果练习位于页面的开头,我想阻止绘制规则。
我使用了一个变量\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}