在以下文档中,我怎样才能将 X 替换为正确的每页总数?(在我的汇编中为 29、31、20)。
\documentclass{article}
\usepackage{fancyhdr}
\pagestyle{fancy}
\lhead{on this page are X objects}
\usepackage{zref-perpage,expl3}
\newcounter{mycounter}
\zmakeperpage{mycounter}
\begin{document}\pdfsetrandomseed 4
\ExplSyntaxOn
\int_step_inline:nnnn {1 }{1}{80}
{\refstepcounter{mycounter}\themycounter.~an~object \\
\int_if_odd:nT {\fp_eval:n { randint( 9 ) }}{some~randomness\\}
}
\ExplSyntaxOff
\end{document}
答案1
我建议将每页扩展的对象数存储在一个\prop
列表中,并在标题中提取该列表的值,其中属性名称只是页码(希望不要在中间重置);即使对象数量必须多次评估(在循环中),这也只会更新键 - 值(因为属性列表具有唯一的键 - 值关系,所以潜在的旧值会被覆盖)
我使用 5000 次迭代循环对此进行了测试(结果为 169 页),结果是正确的。(但是需要几秒钟)
\documentclass{article}
\usepackage{fancyhdr}
\pagestyle{fancy}
\usepackage{zref-perpage,expl3}
\newcounter{mycounter}
\zmakeperpage{mycounter}
\lhead{on this page are \propextract\ objects}
\begin{document}\pdfsetrandomseed 4
\ExplSyntaxOn
\cs_generate_variant:Nn \prop_item:Nn {No,Nx}
\cs_generate_variant:Nn \prop_gput:Nnn {Nxx}
\cs_new:Npn \propextract{%
\prop_item:Nx \g_ufischer_object_counter {\thepage}
}
\prop_new:N \g_ufischer_object_counter
\int_step_inline:nnnn {1 }{1}{80}
{\refstepcounter{mycounter}\themycounter.~an~object \\
\int_if_odd:nT {\fp_eval:n { randint( 9 ) }}{some~randomness\\}
\prop_gput:Nxx \g_ufischer_object_counter {\thezpage} {\themycounter}
}
\ExplSyntaxOff
\end{document}