Вот мой MWE:
\documentclass[11pt,letterpaper,oneside,notitlepage]{article}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{natbib}
\usepackage{graphicx}
\usepackage[loose]{units}
\usepackage{url}
\usepackage{pgf,tikz}
\usepackage{fancyhdr}
\usepackage{lastpage}
\usepackage{multirow}
\usepackage{dcolumn}
\newcolumntype{.}{D{.}{.}{-1}}
\usepackage{booktabs}
\usepackage{alltt}
\usepackage[font=small,format=plain,labelfont=bf,up,textfont=it,up]{caption}
\usepackage[margin=1in]{geometry}
% these commands use the fancyhdr package to get "x of y" style
% page numbering. The headrulewidth command gets rid of a decorative
% horizontal rule that is default with "fancy" pagestyle.
\pagestyle{fancy}
\cfoot{\thepage\ of \pageref{LastPage}}
\renewcommand{\headrulewidth}{0pt}
\begin{document}
\cfoot{{Cyclic triaxial test report \ \ \ \ \ \ \ Page \thepage\ of \pageref{{LastPage}} \ \ \ \ \ \ \ Test ID: {testid} \\ {{\bf PRELIMINARY REPORT - NOT FOR ENGINEERING USE!}}}}
\subsection*{1}
\subsection*{2}
\subsection*{3}
\clearpage
\subsection*{a}
\clearpage
\subsection*{b}
\clearpage
\subsection*{c}
\clearpage
\subsection*{d}
\clearpage
\clearpage
\end{document}
Может кто-нибудь дать совет? Как и следует из заголовка, даже после нескольких компиляций я не могу приступить LastPage
к работе. Я использую pdfLaTeX
.
решение1
Уберите лишнюю пару фигурных скобок в аргументе \pageref
; у вас получится
\pageref{{LastPage}}
и это должно быть
\pageref{LastPage}
Дополнительная пара скобок заставляет LaTeX искать неправильную строку {LastPage}
для создания перекрестной ссылки (правильная строка — LastPage
). Ваш код выдает несколько предупреждений об этом:
LaTeX Warning: Reference `{LastPage}' on page 1 undefined on input line 35.
Код с некоторыми изменениями, описанными ранее:
\documentclass[11pt,letterpaper,oneside,notitlepage]{article}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{natbib}
\usepackage{graphicx}
\usepackage[loose]{units}
\usepackage{url}
\usepackage{pgf,tikz}
\usepackage{fancyhdr}
\usepackage{lastpage}
\usepackage{multirow}
\usepackage{dcolumn}
\newcolumntype{.}{D{.}{.}{-1}}
\usepackage{booktabs}
\usepackage{alltt}
\usepackage[font=small,format=plain,labelfont=bf,up,textfont=it,up]{caption}
\usepackage[margin=1in]{geometry}
% these commands use the fancyhdr package to get "x of y" style
% page numbering. The headrulewidth command gets rid of a decorative
% horizontal rule that is default with "fancy" pagestyle.
\pagestyle{fancy}
\fancyfoot[C]{\thepage\ of \pageref{LastPage}}
\renewcommand{\headrulewidth}{0pt}
\begin{document}
\fancyfoot[C]{{Cyclic triaxial test report\qquad Page \thepage\ of \pageref{LastPage}\qquad Test ID: {testid} \\ {\bfseries PRELIMINARY REPORT -- NOT FOR ENGINEERING USE!}}}
\subsection*{1}
\subsection*{2}
\subsection*{3}
\clearpage
\subsection*{a}
\clearpage
\subsection*{b}
\clearpage
\subsection*{c}
\clearpage
\subsection*{d}AAA
\clearpage
\clearpage
\end{document}
Я перешел \cfoot{...}
на самый современный \fancyfoot[C]{...}
интерфаз. Я также исправил headheight
длину; ваш MWE выдает предупреждение
Package Fancyhdr Warning: `\headheight` is too small (`12.0pt`): Make it
at least `13.59999pt`.
поэтому я использовал geometry
настройки для увеличения длины, как было предложено в сообщении. Обратите внимание также, что \bf
это старая команда TeX, которую не следует использовать в современных документах; вместо этого следует использовать \bfseries
,
Возможно, вам следует рассмотреть другой метод задания интервалов в нижнем колонтитуле; вы можете использовать \qquad
(как я сделал в своем примере кода) или \hspace{<length>}
вместо всех этих отдельных пробелов вместе.
решение2
Недавно я протестировал версию с \pdfximage
и \pdflastximagepages
через lualatex
для этой ситуации, но я не рекомендую ее для этой конкретной проблемы в производстве. Если сгенерированный файл PDF пуст или поврежден, этот пример останавливает следующий запуск TeX, если этот (пустой) файл PDF не удален заранее.
Редактировать:Кроме того, не все книги начинаются с первой страницы, и \pdfximage
команда может быть использована позже в документе, поэтому этот пример приведен только для демонстрации и требует доработки.
%! lualatex example.tex
\documentclass[a4paper]{article}
\def\myfile{example.pdf}
\IfFileExists{\myfile} % Is document typeset for the first time?
{\pdfximage{\myfile}} % Positive response...
{\relax} % Negative response...
\usepackage{fancyhdr}
\pagestyle{fancy}\fancyhf{}
\fancyhead[C]{Page \thepage\ of \the\pdflastximagepages}
\begin{document}
Some text.\par\newpage Some more text.
\end{document}
Извините, я склонен решать проблему, избегая использования пакета lastpage
вместо ответа на вопрос. Причина в том, что нам часто нужно обратиться к последней странице, например, когда опускаю Колофон или пустую страницу или даже много страниц, например, когда книга содержит Приложения, страницы для заметок, страницы с рекламой и т. д. Это мое общее решение, которое я могу разместить в \label{mylastpage}
любом месте документа.
\documentclass[a4paper]{article}
\usepackage{fancyhdr}
\pagestyle{fancy}\fancyhf{}
\fancyhead[C]{Page \thepage\ of \pageref{mylastpage}}
\begin{document}
Some text.\newpage Some more text.
\label{mylastpage}
\end{document}