第一次在这里发帖,完全就是新手啊。
我正在创建一些背景模板,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}%
}