我试图获取倒数第二页的数字,但无需创建指向它的超链接。
我现在拥有的是:
\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
套餐lastpage
和refcount
该包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}