仅当有多页时才显示“第 X 页,共 Y 页”?

仅当有多页时才显示“第 X 页,共 Y 页”?

我试图在页眉中添加一行“第 X 页,共 Y 页”,但前提是有多页。我的主要问题是如何格式化 if 语句。到目前为止,我已经

    \ifx \pageref{LastPage} 1
    \relax
\else
    \fancyhead[R]{Page \thepage\ of \pageref{LastPage}}
\fi

我认为第一行是有问题的,因为其余部分似乎有效。

答案1

您可以尝试加载引用计数包装和使用

\ifnum\getpagerefnumber{LastPage}=1

代替\ifx\pageref{LastPage}1(由于其他原因,这是错误的)。参见这个问题

“完整代码”:

\usepackage{refcount,lastpage}
\usepackage{fancyhdr}
\fancyhead[R]{%
  \ifnum\getpagerefnumber{LastPage}=1
  \else
    Page \thepage\ of \pageref{LastPage}%
  \fi
}

然而,Marco 建议使用参考值似乎更好:

\usepackage{fancyhdr}
\usepackage[totpages,user]{zref}
\fancyhead[R]{%
  \ifnum\ztotpages=1
  \else
    Page \thepage\ of \ztotpages
  \fi
}
\pagestyle{fancy}

答案2

我尝试了 egreg 的解决方案,但是没有用。贡萨洛·梅迪纳(见下面的评论)效果很好(见下面的例子)

我使用zreflastpage

\documentclass{report}
\usepackage{fancyhdr}

\usepackage[totpages,lastpage,user]{zref}
\usepackage{ifthen}
\usepackage{hyperref}
\AtBeginDocument{
\ifthenelse{\ztotpages = 1}{}{\fancyhead[R]{Page \thepage\ of \zpageref{LastPage}}}}
\pagestyle{fancy}
\begin{document}

Text \zpageref{LastPage} 

\clearpage
TExt
\end{document}

egreg 的示例:

\documentclass{report}
\usepackage{fancyhdr}
\usepackage{refcount,lastpage}
\fancyhead[R]{%
  \ifnum\getpagerefnumber{LastPage}=1\relax%
    \else
       Page \thepage\ of \pageref{LastPage}%
  \fi%
}
\pagestyle{fancy}
\begin{document}

Text 

\clearpage
TExt
\end{document}

@egreg: 抱歉

答案3

以下是使用 xstring 包的解决方案:

\documentclass{article}
\usepackage{lipsum}
\usepackage{refcount}
\usepackage{fancyhdr}
\usepackage{lastpage}
\usepackage{xstring}

\pagestyle{fancy}
\fancyhead{}
\fancyfoot{}
\fancyhead[R]{\IfEq{\getpagerefnumber{LastPage}}{1}{}{Page \thepage\ of \pageref{LastPage}}}

\begin{document}
\lipsum[1-3]
\end{document}

相关内容