\@abspage@last не может набрать число в заголовке

\@abspage@last не может набрать число в заголовке

Я попробовал набрать общее количество страниц в правом заголовке с помощью \@abspage@lastpagestyle . Вместо количества печатается fancyтекст . Почему? И как с этим бороться?abspage@last

МВЭ:

\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}

решение1

Тебе нужно\makeatletter вокруг \rhead{...}, не внутри, но можно сделать лучше.

\@abspage@last«Официального» интерфейса для использования в документе не существует , в основном потому, что он предназначен не для сохранения номера последней страницы, а для сохранения общего количества страниц, включая страницы с другой схемой нумерации.

Если вы не меняете схему нумерации, вы можете использовать ее, предварительно определив свой собственный интерфейс.

\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}

Значение по умолчанию — 1073741823, которое вы получите, если файл .auxеще не существует.

Если вы хотите получить предупреждение о необходимости повторного запуска, вы можете проверить, \@abspage@lastравно ли \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}

Если .auxфайл отсутствует или по какой-то причине \@abspage@lastеще не определен, вы получите

LaTeX Warning: Could not determine last page number, rerun LaTeX.

Конечно, это не сработает, если в вашем документе 1073741823 страниц, но…

Связанный контент