You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R-markdown生成PDF的标题页页脚显示‘1 of X’

解决R Markdown标题页页脚“1 of X”显示问题

问题原因

使用lastpage包时,标题页处于文档编译的早期阶段,此时\pageref{LastPage}还无法获取最终的总页码(总页码需等文档全部编译完成后才能确定),因此仅显示当前页码“1”,而非预期的“1 of X”格式。

解决方法

推荐方案:改用pageslts包

pageslts包专门优化了文档页码的引用逻辑,能在文档任意位置正确解析总页码,替代lastpage即可解决问题。

修改后的完整代码

date: "`r paste0('Generated on: ',format(Sys.Date(), '%d %B, %Y'))`"
geometry: margin=2cm
output: 
  pdf_document:
    toc: yes
params:
  output_params: NA
title: "`r paste0('LCMS Dilution App Report')`"
author: "`r params$output_params$Analysis_Info$Name`"
header-includes:
- \usepackage{pageslts}  # 替换lastpage为pageslts
- \usepackage{fancyhdr}
- \definecolor{col1}{RGB}{190, 43, 187}
- \fancypagestyle{ttlpage}{
    \fancyhf{}  # 清空默认页眉页脚,避免样式冲突
    \fancyfoot[C]{{\thepage} of \lastpageref{LastPage}}  # 使用pageslts的专用引用命令
  }
- \thispagestyle{ttlpage}
- \pagestyle{fancy}
- \fancyhead[EL,OL]{\rightmark}
- \fancyhead[EC,OC]{}
- \fancyhead[ER,OR]{LCMS Dilution App}
- \fancyfoot[EL,OL]{\color{col1}{Company Name}}
- \fancyfoot[EC,OC]{\textbf{Company Internal}}
- \fancyfoot[ER,OR]{{\thepage} of \lastpageref{LastPage}}  # 统一替换引用命令

关键调整点

  • 替换lastpage为pageslts包,解决编译顺序导致的页码引用失效问题。
  • 在自定义标题页样式ttlpage中添加\fancyhf{},清空默认页眉页脚规则,避免样式冲突。
  • 将所有\pageref{LastPage}替换为pageslts提供的\lastpageref{LastPage}命令,确保总页码正确解析。

备选方案:保留lastpage包的兼容写法

若不想更换包,可在标题页的页脚命令中添加星号,强制LaTeX延迟解析总页码引用:

\fancypagestyle{ttlpage}{\fancyfoot[C]{{\thepage} of \pageref*{LastPage}}}

注:此方法兼容性略差,部分LaTeX编译环境可能仍存在解析问题。

内容的提问来源于stack exchange,提问作者Diego

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 22:30:48