我想测试一下
- 生成布局时的当前页面,以及
- 页面构建器工作完成后布局出现的页面,
是同一个页面。代码如下:
\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}