使用 fancy 而不使用 lastpage 包设置页码

使用 fancy 而不使用 lastpage 包设置页码

我正在使用以下代码生成页脚以显示页码

\documentclass[twoside,a4paper,10pt]{article}
\usepackage{lastpage}
\usepackage{fancyhdr}
\pagestyle{fancy}%
\renewcommand{\headrulewidth}{0.1pt}
\renewcommand{\footrulewidth}{0pt}

\renewcommand{\sectionmark}[1]{%
\markright{#1}{}}

\fancypagestyle{plain}{%
\fancyhf{}
\fancyfoot[R]{\thepage/\pageref{LastPage}}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}}
\fancyhf{}
\fancyhead[L]{\rightmark}
\fancyhead[R]{\leftmark}
\fancyfoot[R]{\thepage/\pageref{LastPage}}
\renewcommand{\headrulewidth}{0.1pt}
\renewcommand{\footrulewidth}{0pt}

由于我安装了该软件包,因此这在我的本地计算机上有效lastpage。但我需要在服务器上运行 LaTeX,而服务器上没有该软件包lastpage,也没有安装该软件包的权限。那么有没有办法在没有软件包的情况下实现同样的事情lastpage

在这里我上传了完整的代码,但我发现如果有任何 \newpage 命令,它将无法编译,有什么办法可以解决这个问题吗?

\documentclass[twoside,a4paper,10pt]{article}
\usepackage{hyperref}
\usepackage{lastpage}
\usepackage{fancyhdr}

\pagestyle{fancy}
\renewcommand{\headrulewidth}{0.1pt}
\renewcommand{\footrulewidth}{0pt}

\renewcommand{\sectionmark}[1]{
\markright{#1}{}}

\fancypagestyle{plain}{
\fancyhf{}
\fancyfoot[R]{\thepage/\pageref{LastPage}}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}}
\fancyhf{}
\fancyhead[L]{\rightmark}
\fancyhead[R]{\leftmark}
\fancyfoot[R]{\thepage/\pagenum{LastPage}}
\renewcommand{\headrulewidth}{0.1pt}
\renewcommand{\footrulewidth}{0pt}

\begin{document}
  \title{XXX}
  \author{YYY}
  \maketitle

  This is first page 
  %\newpage  % it won't compile if \newpage was there

  This is second page
  %\newpage % if won't compile if \newpage was there

  This is last page

\end{document}

答案1

您有以下几种选择:

  1. 运行 latexlastpage.dtx创建lastpage.sty。将其保存在服务器上的工作文件夹中;无需安装它。

  2. 使用pageslts包裹模拟(并扩展)lastpage。它不仅提供LastPage参考,还具有VeryLastPage,以防未处理的浮点数\AtEndDocument

  3. 在文档末尾手动插入标签:

    \label{LastPage}
    

    如果有未处理的浮点数,则将其\label作为最后一个浮点数的一部分插入。

答案2

您可以尝试将页码引用放在最后一页

\label{mylastpage}

编译两次之后,您应该能够获得正确的页面。

我认为在某些情况下,这可能会给出错误的页码。我会进一步研究一下。

相关内容