具有多个条件(下限和上限)的 \ifnum 命令

具有多个条件(下限和上限)的 \ifnum 命令

第一次在这里发帖,完全就是新手啊。

我正在创建一些背景模板,beamer但我不明白为什么这个\ifnum命令不能正常工作。

这是代码:

\setbeamertemplate{background}{
\begin{tikzpicture}
\useasboundingbox (0,0) rectangle(\the\paperwidth,\the\paperheight);
\ifnum 1<\thepage<33\relax% Not the title page
    \fill[color=MedianOrange] (0,8) rectangle(0.8,8.3);
    \fill[color=MedianLightBlue] (0.9,8) rectangle(\the\paperwidth, 8.3);
\else% Title page
  \fill[color=MedianBrown] (0,1.2) rectangle (\the\paperwidth,\the\paperheight);
  \fill[color=MedianOrange] (0,0.1) rectangle(3.15,1.1);
  \fill[color=MedianLightBlue] (3.3,0.1) rectangle(\the\paperwidth,1.1); 
\fi
\end{tikzpicture}
}

基本上,我想要做的就是在第 32 页之后的所有页面上重新创建第一页的背景。但是,这只会在第一页上创建正确的背景,第 33、34、35 页等的背景与第 2-32 页相同。

任何帮助都将非常有帮助。

答案1

原语\ifnum只接受单个测试,它不能做

1 < \value{page} < 33

因此你需要进行更多步骤:

\setbeamertemplate{background}{%
\begin{tikzpicture}
\useasboundingbox (0,0) rectangle(\the\paperwidth,\the\paperheight);
\ifnum \value{page}=1
  \fill[color=MedianBrown] (0,1.2) rectangle (\the\paperwidth,\the\paperheight);
  \fill[color=MedianOrange] (0,0.1) rectangle(3.15,1.1);
  \fill[color=MedianLightBlue] (3.3,0.1) rectangle(\the\paperwidth,1.1);
\else
  \ifnum\value{page}<33
    \fill[color=MedianOrange] (0,8) rectangle(0.8,8.3);
    \fill[color=MedianLightBlue] (0.9,8) rectangle(\the\paperwidth, 8.3);
  \else
    \fill[color=MedianBrown] (0,1.2) rectangle (\the\paperwidth,\the\paperheight);
    \fill[color=MedianOrange] (0,0.1) rectangle(3.15,1.1);
    \fill[color=MedianLightBlue] (3.3,0.1) rectangle(\the\paperwidth,1.1);
  \fi
\fi
\end{tikzpicture}%
}

请注意,最好使用\value{page}而不是\thepage,因为前者指的是“抽象”计数器值,而不是其任何表示。

答案2

Pgfmath 还提供布尔组合,因此您可以回到它并使用测试结果布尔值\ifnum

\setbeamertemplate{background}{%
\begin{tikzpicture}
\useasboundingbox (0,0) rectangle(\the\paperwidth,\the\paperheight);
\pgfmathparse{\value{page}<33 &&\value{page}>1?int(1):int(0)}
\ifnum\pgfmathresult>0\relax% Not the title page
    \fill[color=MedianOrange] (0,8) rectangle(0.8,8.3);
    \fill[color=MedianLightBlue] (0.9,8) rectangle(\the\paperwidth, 8.3);
\else% Title page
  \fill[color=MedianBrown] (0,1.2) rectangle (\the\paperwidth,\the\paperheight);
  \fill[color=MedianOrange] (0,0.1) rectangle(3.15,1.1);
  \fill[color=MedianLightBlue] (3.3,0.1) rectangle(\the\paperwidth,1.1); 
\fi
\end{tikzpicture}%
}

相关内容