套餐lastpage和refcount

套餐lastpage和refcount

我试图获取倒数第二页的数字,但无需创建指向它的超链接。

我现在拥有的是:

\def\leavesecond#1#2#3!{#2}
\makeatletter
\AtBeginDocument{%
  \expandafter\ifx\csname r@LastPage\endcsname\relax
    \newcommand\SecondLastPage{{\bfseries??}}%
  \else
    \newcounter{butlastpage}%
    \setcounter{butlastpage}{\expandafter\leavesecond\r@LastPage!}%
    \addtocounter{butlastpage}{-1}%
    \newcommand\SecondLastPage{}%
    \edef\SecondLastPage{\arabic{butlastpage}}%
  \fi}

可以,问题是我遇到了 fancy-preview 兼容性问题,因为创建了指向最后一页的超链接。是否可以在不创建超链接的情况下定义它?

答案1

套餐lastpagerefcount

该包refcount有助于从参考文献中获取页码LastPage

\documentclass[a5paper]{article}
\usepackage{lastpage}
\usepackage{hyperref}
\usepackage{refcount}
\usepackage{lipsum}

\newcommand*{\thesecondlastpage}{%
  \the\numexpr(\getrefbykeydefault{LastPage}{page}{0})-1\relax
}
\AtBeginDocument{\refused{LastPage}}

\begin{document}
The second last page is \thesecondlastpage.

\lipsum
\end{document}

这将生成三页,第一次运行报告 -1 为倒数第二页,因为LastPage尚未可用。最后一次运行报告 2,因为该文档有三页。

[警告:lastpage 软件包 2023-07-24 v2.0c 版本无法正常工作。更新到 lastpage 软件包 2023-10-06 v2.0d 版本后,一切恢复正常。]

包裹zref-lastpage

Modulzref-lastpage使用zref引用系统在最后一页设置引用LastPage。这也可以用于获取最后一页的页码以计算上一页:

\documentclass[a5paper]{article}
\usepackage{hyperref}
\usepackage{zref-lastpage}
\usepackage{lipsum}

\makeatletter
\newcommand*{\thesecondlastpage}{%
  \the\numexpr(\zref@extractdefault{LastPage}{page}{0})-1\relax
}
\AtBeginDocument{\zref@refused{LastPage}}
\makeatother

\begin{document}
The second last page is \thesecondlastpage.

\lipsum
\end{document}

包裹zref-totpages

zref-totpages项目模块zref提供\ztotpages绝对页数。根据文档编号,它还可用于获取倒数第二页:

\documentclass[a5paper]{article}
\usepackage{hyperref}
\usepackage{zref-totpages}
\usepackage{lipsum}

\newcommand*{\thesecondlastpage}{%
  \the\numexpr(\ztotpages)-1\relax
}

\begin{document}
The second last page is \thesecondlastpage.

\lipsum
\end{document}

相关内容