我使用\pagenumbering{gobble}
来隐藏某些页面的页码。我还使用fancyhdr
和lastpage
包来显示其他页面的页码,例如 -
Page \thepage of \pageref{LastPage}
然而,对于被吞噬的页面,它会显示类似这样的内容 -
Page of 4 %only last page number is shown
当它被吞噬时我想把整个东西藏起来\thepage
。
到目前为止我已经尝试过 -
\rfoot{\ifnum \thepage>0 Page~\thepage~of~\pageref{LastPage}\else \fi}
\newpage
它可以按预期进行编译和工作,但是遇到问题时会出现错误消息。
缺失数字,视为零。\newpage
\@ifundefined
我也尝试过按照这个建议使用回答但无法让它工作
有人可以提出一些想法吗?
这是一个可编译的示例文档源。
\documentclass[11pt,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage[left=1.00in, right=1.00in, top=1.00in, bottom=1.00in]{geometry}
\usepackage{fancyhdr}
\usepackage{lastpage}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}% default is 0pt
\lhead{}
\chead{}
\rhead{}
\lfoot{}
\cfoot{}
\rfoot{\ifnum \thepage>0 Page~\thepage~of~\pageref{LastPage}\else \fi}
\begin{document}
\pagenumbering{gobble}
First Page
\newpage
Second Page
\newpage
\pagenumbering{arabic}
Third Page
\newpage
Forth Page
\end{document}
我在 Windows 上使用portable miketex
。
答案1
请参阅答案末尾的更新
使用\meaning\thepage
表明
\thepage
定义为\csname @gobble\endcsname \c@page
如果\pagenumbering{gobble}
被应用。
此定义可用于\ifx...
条件语句中,以检查是否已完成此操作,即
\makeatletter
\rfoot{\def\foo{\csname @gobble\endcsname \c@page}
\ifx\thepage\foo
% Yes, it is gobbled!
% Perhaps some other statement here?
\else
Page \thepage{} of \pageref{LastPage}%
\fi
}% End of \rfoot
\makeatother
对于具有 的宏名称,\makeatletter...\makeatother
需要有对。\@gobble
@
\documentclass[11pt,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage[left=1.00in, right=1.00in, top=1.00in, bottom=1.00in]{geometry}
\usepackage{fancyhdr}
\usepackage{lastpage}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}% default is 0pt
\lhead{}
\chead{}
\rhead{}
\lfoot{}
\cfoot{}
\makeatletter
\rfoot{\def\foo{\csname @gobble\endcsname \c@page}\ifx\thepage\foo\else Page \thepage{} of \pageref{LastPage}\fi}
\makeatother
\begin{document}
\pagenumbering{gobble}
First Page
\newpage
Second Page
\newpage
\pagenumbering{arabic}
Third Page
\newpage
Forth Page
\end{document}
更新--有一些改进
可以存储活动\thepage
时的定义gobble
并在稍后进行比较。
为了简化输出格式,我定义了两个钩子,\@gobble@thepagehook
如果 gobbling 处于活动状态,则应执行这两个钩子,如果未设置,则\@nogobble@thepagehook
这两个钩子将起作用。请参阅相关代码部分。gobble
\documentclass[11pt,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage[left=1.00in, right=1.00in, top=1.00in, bottom=1.00in]{geometry}
\usepackage{fancyhdr}
\usepackage{lastpage}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}% default is 0pt
\fancyhf{}
\pagenumbering{gobble}
\makeatletter
\let\gobble@thepage\thepage
\rfoot{%
\ifx\gobble@thepage\thepage
\@gobble@thepagehook%
\else
\@nogobble@thepagehook%
\fi
}
%\let\@gobble@thepagehook\relax% For real gobbling
\newcommand{\@gobble@thepagehook}{\textbf{I am gobbled}}% For code golfing :-P
\newcommand{\@nogobble@thepagehook}{%
Page \thepage{} of \pageref{LastPage}%
}
\makeatother
\pagenumbering{arabic}
\begin{document}
\pagenumbering{gobble}
First Page
\newpage
Second Page
\newpage
\pagenumbering{arabic}
Third Page
\newpage
Forth Page
\end{document}
答案2
虽然\pagenumbering{gobble}
在某些情况下这是一个有用的技巧,但您最好定义一个真正的页面样式:
\documentclass[11pt,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage[left=1.00in, right=1.00in, top=1.00in, bottom=1.00in]{geometry}
\usepackage{fancyhdr}
\usepackage{lastpage}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}% default is 0pt
\lhead{}
\chead{}
\rhead{}
\lfoot{}
\cfoot{}
\rfoot{Page~\thepage~of~\pageref{LastPage}}
\fancypagestyle{emptywithlines}{%
\pagestyle{fancy}%
\rfoot{}}
\begin{document}
\pagestyle{emptywithlines}
First Page
\newpage
Second Page
\newpage
\pagenumbering{arabic}% if page numbering should start by 1
\pagestyle{fancy}
Third Page
\newpage
Forth Page
\end{document}