为什么 \if 和 \fancypagestyle 仅在页眉和页脚声明中起作用?

为什么 \if 和 \fancypagestyle 仅在页眉和页脚声明中起作用?

我正在编写一个包,其中第一页有一个自定义的页眉和页脚,fancyhdr而其余页面则具有不同的页面样式。但是,我很好奇此代码为何有效:

\RequirePackage{fancyhdr}
...
\fancypagestyle{custom}{
  \fancyhf{}
  \chead{
    \ifnum\thepage=1%
      First
    \else%
      Not first
    \fi
  }
  \cfoot{
    \ifnum\thepage=1%
      First
    \else%
      Not first
    \fi
  }
}

但是此代码失败并输出所有页面的第一页页眉和页脚:

\RequirePackage{fancyhdr}
...
\fancypagestyle{custom}{
  \fancyhf{}
  \ifnum\thepage=1
    \chead{First}
    \cfoot{First}
  \else
    \chead{Not first}
    \cfoot{Not first}
  \fi
}

我对 LaTeX 编程不太了解,但我对 LaTeX 为何区分这两者很感兴趣。为什么这两个代码示例会产生不同的文档?这是 fancyhdr 、 LaTeX\if还是两者的混合造成的?

答案1

第二种形式的代码在您声明时测试页码。第一种形式的代码在您每次执行页面头时在每一页上测试页码。

相关内容