Aqui está meu 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}
Alguém pode oferecer conselhos? Como o título diz, mesmo depois de várias compilações, não consigo LastPage
trabalhar. Estou a usar pdfLaTeX
.
Responder1
Suprima o par extra de colchetes no argumento de \pageref
; você tem
\pageref{{LastPage}}
e deveria ser
\pageref{LastPage}
O par extra de colchetes faz com que o LaTeX procure a string errada {LastPage}
para produzir a referência cruzada (a string certa é LastPage
). Seu código produz alguns avisos sobre isso:
LaTeX Warning: Reference `{LastPage}' on page 1 undefined on input line 35.
O código com algumas modificações explicadas anteriormente:
\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}
Mudei \cfoot{...}
para a interface mais moderna \fancyfoot[C]{...}
. Também fixei o headheight
comprimento; seu MWE produz um aviso
Package Fancyhdr Warning: `\headheight` is too small (`12.0pt`): Make it
at least `13.59999pt`.
então usei as geometry
configurações para aumentar o comprimento conforme sugerido pela mensagem. Observe também que \bf
é um comando antigo do TeX que não deve ser usado em documentos modernos; você deve usar \bfseries
em vez disso,
Talvez você deva considerar outro método para obter o espaçamento no rodapé; você pode usar \qquad
(como fiz no meu código de exemplo) ou \hspace{<length>}
em vez de todos esses espaços únicos juntos.
Responder2
Recentemente testei uma versão with \pdfximage
e \pdflastximagepages
via lualatex
para esta situação, mas não a recomendo para este problema específico de produção. Se um arquivo PDF gerado estiver vazio ou quebrado, este exemplo interromperá a próxima execução do TeX se esse arquivo PDF (vazio) não for excluído antecipadamente.
Editar:Além disso, nem todos os livros começam na página 1 e \pdfximage
o comando poderia ser usado posteriormente no documento, portanto este exemplo é apenas para demonstração, precisaria de melhorias.
%! 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}
Lamento ter tendência a resolver o problema evitando o uso do lastpage
pacote em vez de responder à pergunta. A razão é que muitas vezes precisamos fazer referência antes da última página, por exemplo, quando omitimos o Colofão ou uma página vazia ou mesmo muitas páginas, por exemplo, quando o livro contém Apêndices, páginas para notas, páginas com anúncios, etc. Posso colocar \label{mylastpage}
em qualquer lugar do documento.
\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}