\@abspage@last 無法在標題中排版數字

\@abspage@last 無法在標題中排版數字

\@abspage@last我嘗試在pagestyle 下排版右標題中的總頁數 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@lastequals \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 頁,這會失敗,但是...

相關內容