如何传递(或临时改变)\pageref{foo} 的值?

如何传递(或临时改变)\pageref{foo} 的值?

这与如何将 \pageref{foo} 用作数字?但略有不同:

\documentclass{scrreprt}
\usepackage{blindtext}
\renewcommand*\thepage{A\arabic{page}}
%This type of pagenumbering is required by the customer
\begin{document}
  This document consist of \pageref{LastPage} pages.\\  
  %Needed in this case: "This document consist of 4 pages."
  %(Length of document varies each time of course)
  \blindtext[15]
  \label{LastPage}
\end{document}

我需要一种方法来将例如“A4”转换为“4”,而不会破坏文档中页码的格式。我尝试使用 \StrSubstitute,但失败了,因为它确实尝试替换 \pageref 命令中的某些内容,而不是使用其值“A4”执行操作。我还尝试了所有建议的解决方案如何将 \pageref{foo} 用作数字?但没有成功。

您将如何解决这个问题?我似乎无法正确理解如何从 \pageref 读取值并使用它(即使用 \StrSubstitute 消除“A”)。

任何帮助都将不胜感激。非常感谢!

答案1

附带totpages包装:

\documentclass{scrreprt}
\usepackage{blindtext}
\renewcommand*\thepage{A\arabic{page}}

\usepackage{totpages}
%This type of pagenumbering is required by the customer
\begin{document}
  This document consist of \ref{TotPages} pages.\\  
  %Needed in this case: "This document consist of 4 pages."
  %(Length of document varies each time of course)
  \blindtext[15]
  \label{LastPage}
\end{document}

enter image description here


减去标题页:

\documentclass{scrreprt}
\usepackage{blindtext}
\renewcommand*\thepage{A\arabic{page}}

\usepackage{totpages}
\begin{document}
    \addtocounter{TotPages}{-1}
  This document consist of \ref{TotPages} pages.

  \blindtext[15]
\end{document}

答案2

不要重新定义\thepage但是\pagemark

\documentclass{scrreprt}
\usepackage{blindtext}
\renewcommand*{\pagemark}{\usekomafont{pagenumber}{A\thepage}}

\begin{document}
  This document consist of \pageref{LastPage} pages.

  \blindtext[15]
  \label{LastPage}
\end{document}

相关内容