![\@abspage@last はヘッダーの番号をタイプセットできません](https://rvso.com/image/449626/%5C%40abspage%40last%20%E3%81%AF%E3%83%98%E3%83%83%E3%83%80%E3%83%BC%E3%81%AE%E7%95%AA%E5%8F%B7%E3%82%92%E3%82%BF%E3%82%A4%E3%83%97%E3%82%BB%E3%83%83%E3%83%88%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93.png)
\@abspage@last
ページスタイルで右ヘッダーに合計ページ数をタイプセットしようとしました fancy
。 数字の代わりにテキストabspage@last
が印刷されます。 なぜでしょうか? また、どのように対処すればよいでしょうか?
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}
答え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}
.aux
デフォルト値は 1073741823 で、ファイルがまだ存在しない場合に取得されます。
再実行が必要であることを警告したい場合は、 が に\@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 ページある場合は失敗しますが...