我需要知道何时更改页面。我以为我有一个使用 everypage 的解决方案。使用 \newpage 有效,但使用 \vspace 无效。
\documentclass{article}
\usepackage{everypage}
\usepackage{tikzpagenodes}
\newif\ifnewpage
\newpagefalse
\AddEverypageHook{NEWPAGE\global\newpagetrue}
\newcommand{\pagetest}{\noindent
\ifnewpage{ It worked!}\else{ What's going on?}\fi
\begin{tikzpicture}[remember picture,overlay]
\ifnewpage\node[above right]{ Okay};
%\global\newpagefalse
\else\node[above right]{Still not found.};
\fi
\pgfextracty{\offset}{\pgfpointanchor{current page text area}{north}}
\node[below]{distance to top of page = \the\offset};
\end{tikzpicture}
\global\newpagefalse}
\begin{document}
\pagetest
\newpage
\pagetest
\vspace{60\baselineskip}
\pagetest
\end{document}
根据第一页,钩子在 tikz 之后运行(或者也许 tikz 在稍后调用时保存寄存器以供使用)。请注意, \newpagefalse 都可以。
答案1
事实证明 tikz 已经使用 aux 来计算页码。
\documentclass{article}
\usepackage{tikzpagenodes}
\makeatletter
\let\tikzpage=\oddpage@page
\makeatother
\newcommand{\pagetest}{\noindent
\begin{tikzpicture}[remember picture,overlay]
\node[right]{current page = \tikzpage{} which may not equal \thepage};
\end{tikzpicture}
}
\begin{document}
\pagetest
\vspace{60\baselineskip}
\pagetest
\end{document}
只需将 \tikzpage 与另一个计数器进行比较即可。请注意,该值是在 tikz 内部计算的,可能在其他地方不准确。
它的实际用途是两列文本对齐:强制一列为空行,以避免另一列发生冲突