我尝试使用此代码将页脚放置在除最后一页(我只想要“结束”的最后一页)之外的所有页面中。
\ifthenelse
{\equal
{\detokenize{\thepage}}
{\detokenize{\pageref{LastPage}}}
}
{
\rfoot[]{\textit{End}}
}
{
\rfoot[]{\textit{Continued on next page :: \curpage :: \mylastpage}}
}
但是,这会打印Continued on next page...
所有页面,包括最后一页。我detokenize
也尝试过不使用,但不起作用。尝试了其他 if,例如 pdfstrcmp,也失败了。为什么这个比较不起作用?
答案1
这样做\detokenize{\pageref{LastPage}}
肯定不是你想要的,但甚至\pageref{LastPage}
不会起作用,因为它不会产生数字,而是打印数字的指令。
使用zref-lastpage
是我所知道的最安全的方法。
\documentclass[12pt]{article}
\usepackage{blindtext}
\usepackage{fancyhdr}
\usepackage{zref-lastpage}
\usepackage{hyperref}
\makeatletter
\newcommand{\LastPageNumber}{\zref@extractdefault{LastPage}{page}{0}}
\makeatother
\pagestyle{fancy}
\fancyhf{}% clear all fields
\fancyfoot[R]{%
\ifnum\value{page}<\LastPageNumber
\textit{Continued on next page :: \thepage\ :: \LastPageNumber}%
\else
\textit{End}%
\fi
}
\begin{document}
\pagestyle{fancy}
\tableofcontents
\clearpage
\section{First}
\blindtext
\section{Second}
\blindtext[15]
\end{document}
答案2
这提供了实现所请求功能的另一种方法(如果我正确理解了这个问题)
totcount
和包assoccnt
一起使用来获取总页数的计数器值,可以与\ifnumless
byetoolbox
包进行比较。
\documentclass[12pt]{article}
\usepackage{etoolbox}
\usepackage{blindtext}
\usepackage{totcount}
\usepackage{assoccnt}
\usepackage{fancyhdr}
\usepackage{hyperref}
\newtotcounter{totalpages}
\setcounter{totalpages}{1}
\DeclareAssociatedCounters{page}{totalpages}
\rfoot[]{%
\ifnumless{\number\value{page}}{%
\number\totvalue{totalpages}
}{
\textit{Continued on next page :: \thepage :: \number\totvalue{totalpages}}
}{%
\textit{End}%
}%
}
\begin{document}
\pagestyle{fancy}
\tableofcontents
\clearpage
\section{First}
\blindtext
\section{Second}%
\blindtext[15]
\end{document}