在字符串比较的情况下 ifthenelse 不起作用

在字符串比较的情况下 ifthenelse 不起作用

我尝试使用此代码将页脚放置在除最后一页(我只想要“结束”的最后一页)之外的所有页面中。

\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一起使用来获取总页数的计数器值,可以与\ifnumlessbyetoolbox包进行比较。

\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}

相关内容