在我的文档中,我想使用以下方法隐藏页眉/页脚中的某些内容ifthen
(而不是定义新的页面样式)。例如,我想隐藏前几页的页码:
\cfoot{\ifthenelse{\thepage<11}{}{\thepage}}
这将隐藏小于 11 页的页码(即第 1 至第 10 页),如果页码为 11 页或以上,则在中心页脚显示页码。
但是,这似乎只有在页码为阿拉伯文时才有效。假设我想将前五页的页码改为罗马数字。那么我的页面编号将如下:
i, ii, iii, iv, v, 1, 2, 3, 4, 5, 6, ...
这会弄乱我的ifthen
条件,因为,例如,对于第一页,中的表达式\cfoot
将计算如下:
\ifthenelse{i<11}{}{\thepage}
这i<11
毫无意义。
我现在的问题是,是否有更好的计数器可用,而不是\thepage
,如果页码是罗马数字,它可以是非数字值?
答案1
\value{page}
而是使用\thepage
,以便对页面计数器的值执行数值测试,而不是对其输出定义(在某些情况下无论如何都会失败)。
我认为,没有必要使用\ifthenelse
。TeX 原语\ifnum
在这里就足够了。
\documentclass{article}
\usepackage{fancyhdr}
\usepackage{blindtext}
\def\pagethreshold{10}
\fancypagestyle{plain}{%
\renewcommand{\headrulewidth}{0pt}
\fancyhf{}
\cfoot{%
\ifnum\pagethreshold<\value{page}
\arabic{page}% or \thepage
\else
% Do something else
\fi
}
}
\pagestyle{plain}
\begin{document}
\blindtext[100]
\end{document}
更新可能的\pagenumbering
用途
\documentclass{article}
\usepackage{fancyhdr}
\usepackage{blindtext}
\newif\ifshowpagenumbers
\showpagenumbersfalse% Don't show them
\def\pagetreshold{10}
\fancypagestyle{plain}{%
\renewcommand{\headrulewidth}{0pt}
\fancyhf{}
\cfoot{%
\ifshowpagenumbers
\thepage
\else
\ifnum\pagetreshold<\value{page}
\arabic{page}% or \thepage
\else
%
\fi
\fi
}
}
\pagestyle{plain}
\begin{document}
\pagenumbering{roman}
\blindtext[50]
\clearpage
\showpagenumberstrue% Show them!
\pagenumbering{arabic}
\blindtext[50]
\end{document}