页面是否以 4 为模?

页面是否以 4 为模?

如果我想测试某个页面是奇数/偶数(即模 2),那么我可以使用以下命令:

\ifthenelse{\isodd{\thepage}}{}{}

如果我想测试某个页面是否模 4,我该怎么做?

一个简单的例子:

\documentclass{article}
\usepackage{ifthen}

\newcommand{\ismodfour}{???}

\begin{document}
Page 1: \ifthenelse{\ismodfour{\thepage}}{mod 4}{not mod 4} \newpage
Page 2: \ifthenelse{\ismodfour{\thepage}}{mod 4}{not mod 4} \newpage
Page 3: \ifthenelse{\ismodfour{\thepage}}{mod 4}{not mod 4} \newpage
Page 4: \ifthenelse{\ismodfour{\thepage}}{mod 4}{not mod 4} \newpage
Page 5: \ifthenelse{\ismodfour{\thepage}}{mod 4}{not mod 4} \newpage
\end{document}

答案1

以下是egreg 的可扩展\modulochangepage包。它使用changepage通过标签的机制来检查页码。

请注意,这至少需要两次编译才能给出正确的结果。

\documentclass{article}

% only for this example make ridicously small pages:
\usepackage[papersize={3cm,.5cm},margin=0pt]{geometry}

% use `changepage's strict page check mechansim:
\usepackage[strict]{changepage}

% @egreg's expandable \modulo{<n>}{<m>}
%   see https://tex.stackexchange.com/a/34449/5049
\def\truncdiv#1#2{((#1-(#2-1)/2)/#2)}
\def\moduloop#1#2{(#1-\truncdiv{#1}{#2}*#2)}
\def\modulo#1#2{\number\numexpr\moduloop{#1}{#2}\relax}

\makeatletter
\newif\if@modfourpage

% a mod 4 version of `changepage's \checkoddpage
\DeclareRobustCommand\checkmodfourpage{%
  \@modfourpagefalse
  \ifstrictpagecheck
    \stepcounter{cp@cntr}\pmemlabel{\cplabel\thecp@cntr}%
    \cp@tempcnt=\pmemlabelref{\cplabel\thecp@cntr}\relax
    \ifnum\modulo{\cp@tempcnt}{4}=0 \@modfourpagetrue\fi
  \else
    \ifnum\modulo{\cp@tempcnt}{4}=0 \@modfourpagetrue\fi
  \fi
}


% \ifmodfourpage{<true>}{<false>}:
\newcommand*\ifmodfourpage{%
  \checkmodfourpage
  \if@modfourpage
    \expandafter\@firstoftwo
  \else
    \expandafter\@secondoftwo
  \fi
}

\makeatother

% \strictpagecheck

\begin{document}

\thepage: \ifmodfourpage{mod 4}{not mod 4}\newpage
\thepage: \ifmodfourpage{mod 4}{not mod 4}\newpage
\thepage: \ifmodfourpage{mod 4}{not mod 4}\newpage
\thepage: \ifmodfourpage{mod 4}{not mod 4}\newpage
\thepage: \ifmodfourpage{mod 4}{not mod 4}\newpage
\thepage: \ifmodfourpage{mod 4}{not mod 4}\newpage
\thepage: \ifmodfourpage{mod 4}{not mod 4}\newpage
\thepage: \ifmodfourpage{mod 4}{not mod 4}

\end{document}

在此处输入图片描述

相关内容