![\@abspage@last no puede escribir el número en el encabezado](https://rvso.com/image/449626/%5C%40abspage%40last%20no%20puede%20escribir%20el%20n%C3%BAmero%20en%20el%20encabezado.png)
Intenté escribir el número total de páginas en el encabezado derecho en \@abspage@last
estilo de página fancy
. En lugar de un número, abspage@last
se imprime el texto . ¿Por qué? ¿Y cómo afrontarlo?
MWE:
\documentclass[a4paper]{article}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\rhead{Page \thepage\ of \makeatletter\@abspage@last\makeatother}
\begin{document}
First page:\\
total pages are: \@abspage@last\\ % typeset abspage@last. Why not give error message?
total pages are: \makeatletter\@abspage@last\makeatother % typeset the right number
\clearpage
Second page
\clearpage
Third page
\end{document}
Respuesta1
Necesitas\makeatletter
alrededor \rhead{...}
, no dentro de él, pero puedes hacerlo mejor.
No existe una interfaz "oficial" para usar \@abspage@last
en el documento, principalmente porque no está destinada a guardar el último número de página, sino el número total de páginas, incluidas aquellas con un esquema de numeración diferente.
Si no cambia el esquema de numeración, puede usarlo definiendo primero su propia interfaz
\documentclass[a4paper]{article}
\usepackage{fancyhdr}
\makeatletter
\newcommand{\lastpagenumber}{\@abspage@last}
\makeatother
\pagestyle{fancy}
\fancyhf{}
\rhead{Page \thepage\ of \lastpagenumber}
\begin{document}
First page:
\clearpage
Second page
\clearpage
Third page
\end{document}
El valor predeterminado es 1073741823, que obtendrá cuando el .aux
archivo aún no exista.
Si desea que se le advierta que es necesario volver a ejecutar, puede verificar si \@abspage@last
es igual a \maxdimen
:
\documentclass[a4paper]{article}
\usepackage{fancyhdr}
\makeatletter
\newcommand{\lastpagenumber}{%
\ifnum\@abspage@last=\maxdimen
\@lastpagewarning
\else
\@abspage@last
\fi
}
\newcommand{\@lastpagewarning}{%
\@latex@warning@no@line{Could not determine last page number, rerun LaTeX}%
??\gdef\@lastpagewarning{??}%
}
\makeatother
\pagestyle{fancy}
\fancyhf{}
\rhead{Page \thepage\ of \lastpagenumber}
\begin{document}
First page:
\clearpage
Second page
\clearpage
Third page
\end{document}
Si .aux
falta el archivo o, por algún motivo, \@abspage@last
aún no está definido, obtendrá
LaTeX Warning: Could not determine last page number, rerun LaTeX.
Por supuesto, esto fallaría si su documento tiene 1073741823 páginas, pero...