由于某种原因,我需要将页码格式化为,S-\arabic
但想要使用 来引用单个页面,\pageref
而不包括S-
前缀,而只是\arabic
。如何做到这一点?
梅威瑟:
\documentclass{article}
\begin{document}
\renewcommand{\thepage}{S-\arabic{page}}
There is a total of \pageref{page:last page} page in the document.
\label{page:last page}
\end{document}
电流产生
我希望这里的句子打印为“...总共 1 页...”。
答案1
这将从S-
字符串中删除。由于\pageref
受到保护,\getpagerefnumber
因此请使用。
\documentclass{article}
\usepackage{refcount}% or hyperref
\usepackage{xstring}
\renewcommand{\thepage}{S-\arabic{page}}
\begin{document}
There is a total of {\StrDel{\getpagerefnumber{page:last page}}{S-}} page in the document.
\label{page:last page}
\end{document
答案2
您可以使用最新版本的 LaTeX \@abspage@last
。
当文件中尚未设置值时.aux
,\maxdimen
将会返回,因此在这种情况下我使用??
。
\documentclass{article}
\renewcommand{\thepage}{S-\arabic{page}}
\makeatletter
\newcommand{\numberofpages}{%
\ifnum\@abspage@last=\maxdimen ??\else\@abspage@last\fi
~page\ifnum\@abspage@last=1 \else s\fi
}
\makeatother
\begin{document}
There is a total of \numberofpages\ in the document.
\end{document}
(已编辑图像以使页码可见。)
如果您确实需要\label
,您可以使用适当的钩子手动完成。
\documentclass{article}
\renewcommand{\thepage}{S-\arabic{page}}
\makeatletter
\AddToHook{shipout/lastpage}{%
\protected@write\@auxout{}{\string\newlabel{LastPage}{{}{\arabic{page}}}}%
}
\makeatother
\textheight=1cm
\begin{document}
\label{test}
This is page \pageref{test}.
There is a total of \pageref{LastPage} pages in the document.
\end{document}