使用 ifthen 隐藏某些页面上的页码,例如罗马页码

使用 ifthen 隐藏某些页面上的页码,例如罗马页码

在我的文档中,我想使用以下方法隐藏页眉/页脚中的某些内容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}    

相关内容