用于测试页面未发生改变的标记

用于测试页面未发生改变的标记

我想测试一下

  • 生成布局时的当前页面,以及
  • 页面构建器工作完成后布局出现的页面,

是同一个页面。代码如下:

\bindpage{some-id}{code-page-is-the-same}{code-page-changes}

我可以使用辅助文件和两次传递来解决该任务,但是:这样的模块可能已经存在了吗?

编辑。

我希望用例比原始问题的文本更好地解释我的意图。

对于左页和右页,我有不同的注释框布局。

现在考虑以下行动:

  • 我发出一个标题

  • 我想放一个注释框。当前页面是左页。目前我位于页面底部附近,但有足够的空间。因此,我在左页的设计中发出注释框。

  • 我发出一些其他的东西,以完成整个页面。

  • 页面生成器已激活。出于某些原因,它决定在标题前设置分页符。

  • 因此,标题和注释框出现在下一页。但下一页是右页,注释框的设计是针对左页的。不好。

我的想法是,第一次扫描时跟踪注释框的页面。第二次扫描时,如果当前页面不是注释框出现的页面,则强制页面生成器工作。

答案1

好吧,您可以使用该refcount包,它允许检查不同标签的页码是否相等,如以下代码所示:

\documentclass[a4paper]{article}

\usepackage{refcount}

\usepackage{lipsum}

\makeatletter
\newcommand\Ifpagerefequal[4]{%
  \edef\IPRE@a{\getpagerefnumber{#1}}% store the pageref for #1
  \edef\IPRE@b{\getpagerefnumber{#2}}% store the pageref for #2
  \ifx\IPRE@a\IPRE@b#3\else#4\fi% compare the refs and execute either #3 or #4
}
\makeatother

\begin{document}

\lipsum[1-2]

q IS HERE \label{q}

\lipsum[3-4]

r IS HERE \label{r}

\lipsum[5-6]

s IS HERE \label{s}

\Ifpagerefequal{q}{r}{``q'' is on the same page as ``r''}{``q'' is on a different page than ``r''}

\Ifpagerefequal{r}{s}{``r'' is on the same page as ``s''}{``r'' is on a different page than ``s''}

\end{document}

相关内容