fancyhdr 中的计数器与主体不匹配

fancyhdr 中的计数器与主体不匹配

我试图在右侧标题处设置一个计数器,显示“x of 3”,其中 x 根据我使用 \pgroup 的时间递增。但是,它在第​​一页显示“2 of 3”,然后在第二页和第三页显示“3 of 3”。当我使用\lipsum而不是 时,Sample text它按我想要的方式工作。我在 Google 搜索中找不到任何结果,但也许我使用了错误的关键字。

\documentclass[12pt]{article}

\usepackage[head=50pt]{geometry}
\usepackage{fancyhdr}

\newcounter{pgroup}
\setcounter{pgroup}{1}
\newcommand{\pgroup}{\stepcounter{pgroup} \newpage
\setcounter{page}{1}}
\newcommand{\numgroups}{3}

\pagestyle{fancy}
\chead{Homework 9}
\rhead{\arabic{pgroup} of \numgroups}
\begin{document}
  \begin{enumerate}
    \item Sample text. Pgroup: \arabic{pgroup}
    \item Sample text. Pgroup: \arabic{pgroup}
    \pgroup
    \item Sample text. Pgroup: \arabic{pgroup}
    \pgroup
    \item Sample text. Pgroup: \arabic{pgroup}
  \end{enumerate}
\end{document}

答案1

您的代码序列执行以下操作:

\setcounter{pgroup}{1}

这设置pgroup为 1。在列表中

  \begin{enumerate}
    \item Sample text. Pgroup: \arabic{pgroup}
    \item Sample text. Pgroup: \arabic{pgroup}
    \pgroup
    \item Sample text. Pgroup: \arabic{pgroup}
    \pgroup
    \item Sample text. Pgroup: \arabic{pgroup}
  \end{enumerate}

直到第一页才输出\pgroup

\newcommand{\pgroup}{\stepcounter{pgroup} \newpage \setcounter{page}{1}}

因此它pgroup 第一的(现在它将代表两个),在发送页面之前(通过\newpage)。由于页眉/页脚构成页面样式的一部分,仅在页面发送期间写入,因此\arabic{pgroup}将打印2

随后对 的调用也发生同样的情况\pgrouppgroup在输出页面之前执行了三步。最终页面在文档末尾输出,无需调用\pgroup,保持pgroup原样。

以上仅解释了该行为。但是,由于我不清楚您到底想要实现什么,因此我无法提出更多建议,只能切换步进和\newpage引用\pgroup

\newcommand{\pgroup}{\newpage \stepcounter{pgroup} \setcounter{page}{1}}

相关内容