![\@abspage@last 無法在標題中排版數字](https://rvso.com/image/449626/%5C%40abspage%40last%20%E7%84%A1%E6%B3%95%E5%9C%A8%E6%A8%99%E9%A1%8C%E4%B8%AD%E6%8E%92%E7%89%88%E6%95%B8%E5%AD%97.png)
\@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@last
equals \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 頁,這會失敗,但是...