summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/beamer-contrib/themes/beamerthemeconcrete/riemann/beamerthemeriemann.sty
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/beamer-contrib/themes/beamerthemeconcrete/riemann/beamerthemeriemann.sty')
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/beamerthemeconcrete/riemann/beamerthemeriemann.sty945
1 files changed, 945 insertions, 0 deletions
diff --git a/macros/latex/contrib/beamer-contrib/themes/beamerthemeconcrete/riemann/beamerthemeriemann.sty b/macros/latex/contrib/beamer-contrib/themes/beamerthemeconcrete/riemann/beamerthemeriemann.sty
new file mode 100644
index 0000000000..82f2fed151
--- /dev/null
+++ b/macros/latex/contrib/beamer-contrib/themes/beamerthemeconcrete/riemann/beamerthemeriemann.sty
@@ -0,0 +1,945 @@
+% -*- coding: utf-8 -*-
+% ----------------------------------------------------------------------------
+% Author: Jianrui Lyu <tolvjr@163.com>
+% Website: https://github.com/lvjr/concrete
+% License: The LaTeX Project Public License 1.3c
+% ----------------------------------------------------------------------------
+
+\ProvidesPackage{beamerthemeriemann}[2024-01-19 v2024A Beamer Theme Riemann]
+
+\makeatletter
+
+% compatible with old versions of beamer
+\providecommand{\beamer@endinputifotherversion}[1]{}
+
+\RequirePackage{tikz,etoolbox,adjustbox,calc}
+\usetikzlibrary{calc}
+
+\mode<presentation>
+
+\setbeamersize{text margin left=8mm,text margin right=8mm}
+
+%% ----------------- background canvas and background ----------------
+
+\newif\ifbackgroundmarkleft
+\newif\ifbackgroundmarkright
+
+\newcommand{\insertbackgroundmark}{
+ \ifbackgroundmarkleft
+ \foreach \x in {1,2,...,11} \draw[line width=0.2mm,markcolor]
+ (0,\x*\paperheight/12) ++(0.1mm,-0.5mm) rectangle +(1mm,1mm);
+ \fi
+ \ifbackgroundmarkright
+ \foreach \x in {1,2,...,11} \draw[line width=0.2mm,markcolor]
+ (\paperwidth,\x*\paperheight/12) ++(-1.1mm,-0.5mm) rectangle +(1mm,1mm);
+ \fi
+}
+
+\defbeamertemplate{background}{line}[1][]{%
+ \begin{tikzpicture}
+ \useasboundingbox (0,0) rectangle (\paperwidth,\paperheight);
+ \draw[xstep=\paperwidth,ystep=1mm,color=tcolor,#1] (0,0) grid (\paperwidth,\paperheight);
+ \insertbackgroundmark
+ \end{tikzpicture}%
+}
+
+\defbeamertemplate{background}{linear}{%
+ \begin{tikzpicture}
+ \useasboundingbox (0,0) rectangle (\paperwidth,\paperheight);
+ \draw[pattern=horizontal lines, pattern color=tcolor]
+ (0,0) rectangle (\paperwidth,\paperheight);
+ \insertbackgroundmark
+ \end{tikzpicture}%
+}
+
+\defbeamertemplate{background}{lattice}[1][1mm]{%
+ \begin{tikzpicture}
+ \useasboundingbox (0,0) rectangle (\paperwidth,\paperheight);
+ \draw[step=#1,color=tcolor,semithick] (0,0) grid (\paperwidth,\paperheight);
+ \insertbackgroundmark
+ \end{tikzpicture}%
+}
+
+\defbeamertemplate{background}{empty}{
+ \begin{tikzpicture}
+ \useasboundingbox (0,0) rectangle (\paperwidth,\paperheight);
+ \insertbackgroundmark
+ \end{tikzpicture}%
+}
+
+%% -------------------------- title page -----------------------------
+
+% add \occasion command
+\newcommand{\occasion}[1]{\def\insertoccasion{#1}}
+\occasion{}
+
+\defbeamertemplate{title page}{banner}{%
+ \nointerlineskip
+ \begin{adjustbox}{width=\paperwidth,center}%
+ \usebeamertemplate{title page content}%
+ \end{adjustbox}%
+}
+
+% need "text badly ragged" option for correct space skips
+% see http://tex.stackexchange.com/a/132748/8956
+\defbeamertemplate{title page content}{hexagon}{%
+ \begin{tikzpicture}
+ \useasboundingbox (0,0) rectangle (\paperwidth,\paperheight);
+ \path[draw=dcolor,fill=fcolor,opacity=0.8]
+ (0,0) rectangle (\paperwidth,\paperheight);
+ \node[text width=0.86\paperwidth,text badly ragged,inner ysep=1.5cm] (main) at (0.5\paperwidth,0.55\paperheight) {%
+ \begin{minipage}[c]{0.86\paperwidth}
+ \centering
+ \usebeamerfont{title}\usebeamercolor[fg]{title}\inserttitle
+ \ifx\insertsubtitle\@empty\else
+ \\[5pt]\usebeamerfont{subtitle}\usebeamercolor[fg]{subtitle}
+ \insertsubtitle
+ \fi
+ \end{minipage}
+ };
+ \node[rectangle,inner sep=0pt,minimum size=3mm,fill=dcolor,right] (a) at (0,0.55\paperheight) {};
+ \node[rectangle,inner sep=0pt,minimum size=3mm,fill=dcolor,left] (b) at (\paperwidth,0.55\paperheight) {};
+ \ifx\insertoccasion\@empty
+ \draw[thick,dcolor] (a.north east) -- (main.north west)
+ -- (main.north east) -- (b.north west);
+ \else
+ \node[text badly ragged] (occasion) at (main.north west -| 0.5\paperwidth,\paperheight) {
+ \usebeamerfont{occasion}\usebeamercolor[fg]{occasion}\insertoccasion
+ };
+ \draw[thick,dcolor] (a.north east) -- (main.north west) -- (occasion.west)
+ (b.north west) -- (main.north east) -- (occasion.east);
+ \fi
+ \node[text badly ragged] (date) at (main.south west -| 0.5\paperwidth,0) {
+ \usebeamerfont{date}\usebeamercolor[fg]{date}\insertdate
+ };
+ \draw[thick,dcolor] (a.south east) -- (main.south west) -- (date.west)
+ (b.south west) -- (main.south east) -- (date.east);
+ \node[below=4mm,text width=0.9\paperwidth,inner xsep=0.05\paperwidth,
+ text badly ragged,fill=white,draw=dcolor] at (date.south) {%
+ \begin{minipage}[c]{0.9\paperwidth}
+ \centering
+ \textcolor{accent2}{$\blacksquare$}\hspace{0.2em}%
+ \usebeamerfont{institute}\usebeamercolor[fg]{institute}\insertinstitute
+ \hspace{1em}\textcolor{accent2}{$\blacksquare$}\hspace{0.2em}%
+ \usebeamerfont{author}\usebeamercolor[fg]{author}\insertauthor
+ \end{minipage}
+ };
+ \end{tikzpicture}
+}
+
+\defbeamertemplate{title page content}{rectangle}{%
+ \begin{tikzpicture}
+ \useasboundingbox (0,0) rectangle (\paperwidth,\paperheight);
+ \path[draw=dcolor,fill=fcolor,opacity=0.8]
+ (0,0) rectangle (\paperwidth,\paperheight);
+ \node[text width=0.9\paperwidth,text badly ragged,inner ysep=1.5cm] (main) at (0.5\paperwidth,0.55\paperheight) {%
+ \begin{minipage}[c]{0.9\paperwidth}
+ \centering
+ \usebeamerfont{title}\usebeamercolor[fg]{title}\inserttitle
+ \ifx\insertsubtitle\@empty\else
+ \\[5pt]\usebeamerfont{subtitle}\usebeamercolor[fg]{subtitle}
+ \insertsubtitle
+ \fi
+ \end{minipage}
+ };
+ \node[rectangle,inner sep=0pt,outer sep=0pt,minimum size=3mm,fill=dcolor,below right,xshift=2pt]
+ (a) at (main.north west -| 0,0) {};
+ \node[rectangle,inner sep=0pt,outer sep=0pt,minimum size=3mm,fill=dcolor,below left,xshift=-2pt]
+ (b) at (main.north east -| \paperwidth,0) {};
+ \node[rectangle,inner sep=0pt,outer sep=0pt,minimum size=3mm,fill=dcolor,above right,xshift=2pt]
+ (c) at (main.south west -| 0,0) {};
+ \node[rectangle,inner sep=0pt,outer sep=0pt,minimum size=3mm,fill=dcolor,above left,xshift=-2pt]
+ (d) at (main.south east -| \paperwidth,0) {};
+ \coordinate (mw) at (main.west -| a.west);
+ \coordinate (me) at (main.east -| b.east);
+ \draw[thick,dcolor] (a.south east) -- (a.south west) -- (a.north west) -- (a.north east)
+ -- ++(0,-6mm) -- ++(-3mm,0) -- (mw)
+ (c.north east) -- (c.north west) -- (c.south west) -- (c.south east)
+ -- ++(0,6mm) -- ++(-3mm,0) -- (mw)
+ (b.south west) -- (b.south east) -- (b.north east) -- (b.north west)
+ -- ++(0,-6mm) -- ++(3mm,0) -- (me)
+ (d.north west) -- (d.north east) -- (d.south east) -- (d.south west)
+ -- ++(0,6mm) -- ++(3mm,0) -- (me);
+ \ifx\insertoccasion\@empty
+ \draw[thick,dcolor] (a.south east) -- ++(3mm,0) -- ++(0,3mm) -- (main.north)
+ (b.south west) -- ++(-3mm,0) -- ++(0,3mm) -- (main.north);
+ \else
+ \node[text badly ragged] (occasion) at (main.north west -| 0.5\paperwidth,\paperheight) {
+ \usebeamerfont{occasion}\usebeamercolor[fg]{occasion}\insertoccasion
+ };
+ \draw[thick,dcolor] (a.south east) -- ++(3mm,0) -- ++(0,3mm) -- (occasion.west)
+ (b.south west) -- ++(-3mm,0) -- ++(0,3mm) -- (occasion.east);
+ \fi
+ \node[text badly ragged] (date) at (main.south west -| 0.5\paperwidth,0) {
+ \usebeamerfont{date}\usebeamercolor[fg]{date}\insertdate
+ };
+ \draw[thick,dcolor] (c.north east) -- ++(3mm,0) -- ++(0,-3mm) -- (date.west)
+ (d.north west) -- ++(-3mm,0) -- ++(0,-3mm) -- (date.east);
+ \node[below=4mm,text width=0.9\paperwidth,inner xsep=0.05\paperwidth,
+ text badly ragged,fill=white,draw=dcolor] (author) at (date.south) {%
+ \begin{minipage}[c]{0.9\paperwidth}
+ \centering
+ \textcolor{accent2}{$\blacksquare$}\hspace{0.2em}%
+ \usebeamerfont{institute}\usebeamercolor[fg]{institute}\insertinstitute
+ \hspace{1em}\textcolor{accent2}{$\blacksquare$}\hspace{0.2em}%
+ \usebeamerfont{author}\usebeamercolor[fg]{author}\insertauthor
+ \end{minipage}
+ };
+ \end{tikzpicture}
+}
+
+\defbeamertemplate{title page content}{polygon}{%
+ \begin{tikzpicture}
+ \useasboundingbox (0,0) rectangle (\paperwidth,\paperheight);
+ \path[draw=dcolor,fill=fcolor,opacity=0.8]
+ (0,0) rectangle (\paperwidth,\paperheight);
+ \node[text width=0.82\paperwidth,text badly ragged,inner ysep=1.5cm] (main) at (0.5\paperwidth,0.55\paperheight) {%
+ \begin{minipage}[c]{0.82\paperwidth}
+ \centering
+ \usebeamerfont{title}\usebeamercolor[fg]{title}\inserttitle
+ \ifx\insertsubtitle\@empty\else
+ \\[5pt]\usebeamerfont{subtitle}\usebeamercolor[fg]{subtitle}
+ \insertsubtitle
+ \fi
+ \end{minipage}
+ };
+ \node[rectangle,inner sep=0pt,outer sep=0pt,minimum size=3mm,fill=dcolor,right,yshift=12pt]
+ (a) at (main.north west -| 0,0) {};
+ \node[rectangle,inner sep=0pt,outer sep=0pt,minimum size=3mm,fill=dcolor,left,yshift=12pt]
+ (b) at (main.north east -| \paperwidth,0) {};
+ \node[rectangle,inner sep=0pt,outer sep=0pt,minimum size=3mm,fill=dcolor,right,yshift=-12pt]
+ (c) at (main.south west -| 0,0) {};
+ \node[rectangle,inner sep=0pt,outer sep=0pt,minimum size=3mm,fill=dcolor,left,yshift=-12pt]
+ (d) at (main.south east -| \paperwidth,0) {};
+ \draw[thick,dcolor] (a.south east) -- (main.west) -- (c.north east)
+ (b.south west) -- (main.east) -- (d.north west);
+ \ifx\insertoccasion\@empty
+ \draw[thick,dcolor] (a.south east) -- (main.north west) -- (main.north east) -- (b.south west);
+ \else
+ \node[text badly ragged] (occasion) at (main.north west -| 0.5\paperwidth,\paperheight) {
+ \usebeamerfont{occasion}\usebeamercolor[fg]{occasion}\insertoccasion
+ };
+ \draw[thick,dcolor] (a.south east) -- (main.north west) -- (occasion.west)
+ (b.south west) -- (main.north east) -- (occasion.east);
+ \fi
+ \node[text badly ragged] (date) at (main.south west -| 0.5\paperwidth,0) {
+ \usebeamerfont{date}\usebeamercolor[fg]{date}\insertdate
+ };
+ \draw[thick,dcolor] (c.north east) -- (main.south west) -- (date.west)
+ (d.north west) -- (main.south east) -- (date.east);
+ \node[below=4mm,text width=0.9\paperwidth,inner xsep=0.026\paperwidth,
+ text badly ragged,fill=white,draw=dcolor] (author) at (date.south) {%
+ \begin{minipage}[c]{0.9\paperwidth}
+ \centering
+ \textcolor{accent2}{$\blacksquare$}\hspace{0.2em}%
+ \usebeamerfont{institute}\usebeamercolor[fg]{institute}\insertinstitute
+ \hspace{1em}\textcolor{accent2}{$\blacksquare$}\hspace{0.2em}%
+ \usebeamerfont{author}\usebeamercolor[fg]{author}\insertauthor
+ \end{minipage}
+ };
+ \path[fill=dcolor] (author.north west) -- (author.north west -| 0,0) -- (author.west)
+ -- (author.south west -| 0,0) -- (author.south west)
+ (author.north east) -- (author.north east -| \paperwidth,0) -- (author.east)
+ -- (author.south east -| \paperwidth,0) -- (author.south east);
+ \end{tikzpicture}
+}
+
+\defbeamertemplate{title page content}{hypotenuse}{%
+ \begin{tikzpicture}
+ \useasboundingbox (0,0) rectangle (\paperwidth,\paperheight);
+ \path[draw=dcolor,fill=fcolor,opacity=0.8]
+ (0,0) rectangle (\paperwidth,\paperheight);
+ \node[text width=0.82\paperwidth,text badly ragged,inner ysep=1.5cm] (main) at (0.5\paperwidth,0.55\paperheight) {%
+ \begin{minipage}[c]{0.82\paperwidth}
+ \centering
+ \usebeamerfont{title}\usebeamercolor[fg]{title}\inserttitle
+ \ifx\insertsubtitle\@empty\else
+ \\[5pt]\usebeamerfont{subtitle}\usebeamercolor[fg]{subtitle}
+ \insertsubtitle
+ \fi
+ \end{minipage}
+ };
+ \node[rectangle,inner sep=0pt,outer sep=0pt,minimum size=2.7mm,fill=dcolor] (a) at (main.north west) {};
+ \node[rectangle,inner sep=0pt,outer sep=0pt,minimum size=2.7mm,fill=dcolor,left] (b) at (main.north -| \paperwidth,0) {};
+ \node[rectangle,inner sep=0pt,outer sep=0pt,minimum size=2.7mm,fill=dcolor,right] (c) at (main.south -| 0,0) {};
+ \node[rectangle,inner sep=0pt,outer sep=0pt,minimum size=2.7mm,fill=dcolor] (d) at (main.south east) {};
+ \draw[thick,dcolor] ($(a.south west)+(0.4pt,0)$) -- ($(c.north east)+(-0.4pt,0)$)
+ ($(b.south west)+(0.4pt,0)$) -- ($(d.north east)+(-0.4pt,0)$);
+ \draw[thick,dcolor] ($(a.south east)+(-0.4pt,0)$) -- ($(c.north west)+(0.4pt,0)$)
+ ($(b.south east)+(-0.4pt,0)$) -- ($(d.north west)+(0.4pt,0)$);
+ \ifx\insertoccasion\@empty
+ \draw[thick,dcolor] (a.north west) -- (b.north east)
+ (a.south west) -- (b.south east);
+ \else
+ \node[text badly ragged] (occasion) at (main.north west -| 0.5\paperwidth,\paperheight) {
+ \usebeamerfont{occasion}\usebeamercolor[fg]{occasion}\insertoccasion
+ };
+ \draw[thick,dcolor] (a.north west) -- (a.north west -| occasion.north west)
+ (a.south west) -- (a.south west -| occasion.south west)
+ (b.north east) -- (b.north east -| occasion.north east)
+ (b.south east) -- (b.south east -| occasion.south east);
+ \fi
+ \node[text badly ragged] (date) at (main.south west -| 0.5\paperwidth,0) {
+ \usebeamerfont{date}\usebeamercolor[fg]{date}\insertdate
+ };
+ \draw[thick,dcolor] (c.north west) -- (c.north west -| date.north west)
+ (c.south west) -- (c.south west -| date.south west)
+ (d.north east) -- (d.north east -| date.north east)
+ (d.south east) -- (d.south east -| date.south east);
+ \node[below=4mm,text width=0.9\paperwidth,inner xsep=0.015\paperwidth,
+ text badly ragged,fill=white,draw=dcolor] (author) at (date.south) {%
+ \begin{minipage}[c]{0.9\paperwidth}
+ \centering
+ \textcolor{accent2}{$\blacksquare$}\hspace{0.2em}%
+ \usebeamerfont{institute}\usebeamercolor[fg]{institute}\insertinstitute
+ \hspace{1em}\textcolor{accent2}{$\blacksquare$}\hspace{0.2em}%
+ \usebeamerfont{author}\usebeamercolor[fg]{author}\insertauthor
+ \end{minipage}
+ };
+ \path[fill=dcolor] (author.north west) -- (author.south west) -- (author.south west -| 0,0)
+ (author.south east) -- (author.north east) -- (author.north west -| \paperwidth,0);
+ \end{tikzpicture}
+}
+
+% Several safe primes and Blum-Blum-Shub generator
+\newcommand{\my@composite}{43921} % 43921=167*263
+\newcounter{my@random@seed}
+\setcounter{my@random@seed}{43787}
+\newcommand{\next@random@seed}{%
+ \setcounter{my@random@seed}{\value{my@random@seed}*\value{my@random@seed}}%
+ \setcounter{my@random@seed}{\value{my@random@seed}-(\value{my@random@seed}/\my@composite)*\my@composite}%
+}
+
+\newlength{\my@title@height}
+
+\defbeamertemplate{title page content}{block}{%
+ \begin{tikzpicture}
+ \useasboundingbox (0,0) rectangle (\paperwidth,\paperheight);
+ \path[draw=dcolor,fill=fcolor,opacity=0.8] (0,0) rectangle (\paperwidth,\paperheight);
+ \path[step=4mm,draw=dcolor,ultra thick] (0,0) grid (\paperwidth,\paperheight);
+ \foreach \x in {0,1,...,31} \foreach \y in {0,1,...,23} {
+ \next@random@seed
+ \ifodd\value{my@random@seed}
+ \path[draw=dcolor,ultra thick,fill=fcolor2,opacity=0.8] (\x*\paperwidth/32,\y*\paperheight/24) rectangle +(4mm,4mm);
+ \fi
+ }
+ \ifx\insertsubtitle\@empty
+ \setlength{\my@title@height}{39.7mm}
+ \else
+ \setlength{\my@title@height}{47.7mm}
+ \fi
+ \node[minimum width=0.84\paperwidth,minimum height=\my@title@height,inner xsep=2mm,inner ysep=0mm,
+ opacity=0.95,text opacity=1,text badly ragged,fill=fcolor] (main) at (0.5\paperwidth,0.542\paperheight) {%
+ \begin{minipage}[c]{0.84\paperwidth}
+ \centering
+ \usebeamerfont{title}\usebeamercolor[fg]{title}\inserttitle
+ \ifx\insertsubtitle\@empty\else
+ \\[5pt]\usebeamerfont{subtitle}\usebeamercolor[fg]{subtitle}
+ \insertsubtitle
+ \fi
+ \end{minipage}
+ };
+ \ifx\insertoccasion\@empty\else
+ \node[text badly ragged,fill=fcolor,minimum height=7.8mm,draw=dcolor,very thick]
+ (occasion) at (main.north west -| 0.5\paperwidth,\paperheight) {
+ \usebeamerfont{occasion}\usebeamercolor[fg]{occasion}\insertoccasion
+ };
+ \fi
+ \node[text badly ragged,fill=fcolor,minimum height=7.8mm,draw=dcolor,very thick]
+ (date) at (main.south west -| 0.5\paperwidth,0) {
+ \usebeamerfont{date}\usebeamercolor[fg]{date}\insertdate
+ };
+ \node[below=4mm,minimum width=0.84\paperwidth,minimum height=7.6mm,inner xsep=2mm,inner ysep=0mm,
+ opacity=0.85,text opacity=1,text badly ragged,fill=white] at (date.south) {%
+ \begin{minipage}[c]{0.84\paperwidth}
+ \centering
+ \textcolor{accent2}{$\blacksquare$}\hspace{0.2em}%
+ \usebeamerfont{institute}\usebeamercolor[fg]{institute}\insertinstitute
+ \hspace{0.4em}\textcolor{accent2}{$\blacksquare$}\hspace{0.2em}%
+ \usebeamerfont{author}\usebeamercolor[fg]{author}\insertauthor
+ \end{minipage}
+ };
+ \end{tikzpicture}
+}
+
+%% ----------------------- section and subsection --------------------
+
+\newcounter{my@pgf@picture@count}
+
+\def\sectionintocskip{0.5pt plus 0.1fill}
+\patchcmd{\beamer@sectionintoc}{\vskip1.5em}{\vskip\sectionintocskip}{}{}
+
+\AtBeginSection[]{%
+ \begin{frame}%[plain]
+ \sectionpage
+ \end{frame}%
+}
+
+\defbeamertemplate{section name}{simple}{\insertsectionnumber.}
+
+\defbeamertemplate{section name}{chinese}[1][节]{第\CJKnumber{\insertsectionnumber}#1}
+
+\defbeamertemplate{section page}{single}{%
+ \centerline{%
+ \usebeamerfont{section name}%
+ \usebeamercolor[fg]{section name}%
+ \usebeamertemplate{section name}%
+ \hspace{0.8em}%
+ \usebeamerfont{section title}%
+ \usebeamercolor[fg]{section title}%
+ \insertsection
+ }%
+}
+
+\defbeamertemplate{section name in toc}{simple}{%
+ Section \inserttocsectionnumber
+}
+
+\defbeamertemplate{section name in toc}{full}{%
+ Section \ifnum\the\beamer@tempcount<10 0\fi\inserttocsectionnumber
+}
+
+\defbeamertemplate{section name in toc}{chinese}[1][节]{%
+ 第\CJKnumber{\inserttocsectionnumber}#1%
+}
+
+\newcounter{my@section@from}
+\newcounter{my@section@to}
+
+\defbeamertemplate{show sections in toc}{total}{%
+ \setcounter{my@section@from}{1}%
+ \setcounter{my@section@to}{50}%
+}
+
+% show at most five sections
+\defbeamertemplate{show sections in toc}{partial}{%
+ \setcounter{my@section@from}{\value{section}}%
+ \addtocounter{my@section@from}{-2}%
+ \setcounter{my@section@to}{\value{section}}%
+ \addtocounter{my@section@to}{2}%
+ \ifnum\my@totalsectionnumber>0%
+ \ifnum\value{my@section@to}>\my@totalsectionnumber
+ \setcounter{my@section@to}{\my@totalsectionnumber}%
+ \setcounter{my@section@from}{\value{my@section@to}}%
+ \addtocounter{my@section@from}{-4}%
+ \fi
+ \fi
+ \ifnum\value{my@section@from}<1\setcounter{my@section@from}{1}%
+ \setcounter{my@section@to}{\value{my@section@from}}%
+ \addtocounter{my@section@to}{4}%
+ \fi
+}
+
+% reset pgfid to get correct result with \tikzmark in second run
+\defbeamertemplate{section page}{fill}{%
+ \usebeamertemplate{show sections in toc}%
+ \setcounter{my@pgf@picture@count}{\the\pgf@picture@serial@count}%
+ \setlength{\parskip}{5pt minus 1pt}%
+ \tableofcontents[sectionstyle=show/shaded,subsectionstyle=hide,
+ sections={\arabic{my@section@from}-\arabic{my@section@to}}]%
+ \global\pgf@picture@serial@count=\value{my@pgf@picture@count}%
+ \unskip
+}
+
+\defbeamertemplate{section in toc}{fill}{%
+ \noindent
+ \begin{tikzpicture}
+ \node[text width=\textwidth,inner xsep=0pt,inner ysep=5pt,text badly ragged,fill=bg] (title) {%
+ \hspace{0.28\textwidth}\parbox{0.7\textwidth}{\inserttocsection\vphantom{g}}%
+ };
+ \path (title.south west) +(2pt,2pt) coordinate (sw)
+ (title.north west) +(0.25\textwidth,-2pt) coordinate (ne);
+ \path[fill=fg,overlay] (sw) rectangle (ne);
+ \node[inner xsep=0pt,text badly ragged,overlay] at ($(sw)!0.5!(ne)$) {%
+ \color{bg}\vphantom{g}\usebeamertemplate{section name in toc}%
+ };
+ \draw[line width=1pt,dcolor,overlay] ($(ne)+(2pt,2pt)$) -- ($(ne |- title.south)+(2pt,0)$);
+ \end{tikzpicture}%
+ \par
+}
+
+\AtBeginSubsection{%
+ \begin{frame}%[plain]
+ \setlength{\parskip}{0pt}%
+ \offinterlineskip
+ \subsectionpage
+ \end{frame}%
+}
+
+\defbeamertemplate{subsection name}{simple}{%
+ \insertsectionnumber.\insertsubsectionnumber
+}
+
+\defbeamertemplate{subsection page}{single}{%
+ \centerline{%
+ \usebeamerfont{subsection name}%
+ \usebeamercolor[fg]{subsection name}%
+ \usebeamertemplate{subsection name}%
+ \hspace{0.8em}%
+ \usebeamerfont{subsection title}%
+ \usebeamercolor[fg]{subsection title}%
+ \insertsubsection
+ }%
+}
+
+\defbeamertemplate{subsection name in toc}{empty}{}
+
+\newcounter{mysubseccnt}
+\defbeamertemplate{subsection name in toc}{alphabet}{%
+ \setcounter{mysubseccnt}{\inserttocsubsectionnumber}%
+ \Alph{mysubseccnt}%
+}
+
+\defbeamertemplate{subsection name in toc}{simple}{%
+ \inserttocsubsectionnumber
+}
+
+\defbeamertemplate{subsection name in toc}{full}{%
+ \inserttocsectionnumber.\inserttocsubsectionnumber
+}
+
+% reset pgfid to get correct result with \tikzmark in second run
+\defbeamertemplate{subsection page}{fill}{%
+ \setcounter{my@pgf@picture@count}{\the\pgf@picture@serial@count}%
+ \tableofcontents[sectionstyle=show/hide,subsectionstyle=show/shaded/hide]%
+ \global\pgf@picture@serial@count=\value{my@pgf@picture@count}%
+ \unskip
+}
+
+\defbeamertemplate{subsection in toc}{fill}{%
+ \vspace{1pt}\noindent%
+ \begin{tikzpicture}
+ \node[text width=\textwidth,inner xsep=0pt,inner ysep=5pt,text badly ragged,fill=bg] (title) {%
+ \hspace{0.28\textwidth}\parbox{0.7\textwidth}{\inserttocsubsection\vphantom{g}}%
+ };
+ \path (title.south west) +(2pt,2pt) coordinate (sw)
+ (title.north west) +(0.25\textwidth,-2pt) coordinate (ne);
+ \path[fill=fg,overlay] (sw) rectangle (ne);
+ \node[inner xsep=0pt,text badly ragged,overlay] at ($(sw)!0.5!(ne)$) {%
+ \color{bg}\vphantom{g}\usebeamertemplate{subsection name in toc}%
+ };
+ \draw[line width=1pt,dcolor,overlay] ($(ne)+(2pt,2pt)$) -- ($(ne |- title.south)+(2pt,0)$);
+ \end{tikzpicture}%
+ \par
+}
+
+% chinese sections and subsections
+\defbeamertemplate{section and subsection}{chinese}[1][节]{%
+ \setbeamertemplate{section name in toc}[chinese][#1]%
+ \setbeamertemplate{section name}[chinese][#1]%
+ \setbeamertemplate{subsection name in toc}[alphabet]%
+}
+
+%% ---------------------- headline and footline ----------------------
+
+% fix headline bug in old versions
+\@ifclasslater{beamer}{2017/01/23}{}{%
+ \patchcmd{\ps@empty}
+ {\raise\headheight\box\beamer@tempbox\box\@tempboxa}
+ {\raise\headheight\box\beamer@tempbox\raise\headheight\box\@tempboxa}
+ {}{}
+}
+
+\defbeamertemplate{headline mark}{line}{
+ \draw[overlay,color=white,line width=0.8pt] (0,0.5mm) -- (\paperwidth,0.5mm);
+}
+
+\defbeamertemplate{headline}{shading}{%
+ \begin{tikzpicture}
+ \fill[left color=accent2,right color=blue85] (0,0) rectangle (\paperwidth,1mm);
+ \usebeamertemplate{headline mark}
+ \end{tikzpicture}
+}
+
+\defbeamertemplate{headline}{border}{%
+ \begin{tikzpicture}
+ \path[use as bounding box] (0,0) rectangle (\paperwidth,1mm);
+ \fill[left color=accent2,right color=blue85] (0,0) rectangle (\paperwidth,0.8pt);
+ \end{tikzpicture}
+}
+
+\defbeamertemplate{headline}{phantom}{%
+ \begin{tikzpicture}
+ \path[use as bounding box] (0,0) rectangle (\paperwidth,1mm);
+ \end{tikzpicture}
+}
+
+\defbeamertemplate{footline left}{author}{%
+ \insertshortauthor
+}
+
+\defbeamertemplate{footline center}{title}{%
+ \insertshorttitle
+}
+
+\defbeamertemplate{footline right}{number}{%
+ \Acrobatmenu{GoToPage}{\insertframenumber{}/\inserttotalframenumber}%
+}
+\defbeamertemplate{footline right}{normal}{%
+ \hyperlinkframeendprev{$\vartriangle$}
+ \Acrobatmenu{GoToPage}{\insertframenumber{}/\inserttotalframenumber}
+ \hyperlinkframestartnext{$\triangledown$}%
+}
+
+\defbeamertemplate{footline}{simple}{%
+ \hbox{%
+ \begin{beamercolorbox}[wd=.2\paperwidth,ht=2.25ex,dp=1ex,left]{footline}%
+ \usebeamerfont{footline}\kern\beamer@leftmargin
+ \usebeamertemplate{footline left}%
+ \end{beamercolorbox}%
+ \begin{beamercolorbox}[wd=.6\paperwidth,ht=2.25ex,dp=1ex,center]{footline}%
+ \usebeamerfont{footline}\usebeamertemplate{footline center}%
+ \end{beamercolorbox}%
+ \begin{beamercolorbox}[wd=.2\paperwidth,ht=2.25ex,dp=1ex,right]{footline}%
+ \usebeamerfont{footline}\usebeamertemplate{footline right}%
+ \kern\beamer@rightmargin
+ \end{beamercolorbox}%
+ }%
+}
+
+\defbeamertemplate{footline separator}{shading}{%
+ \begin{tikzpicture}
+ \fill[left color=blue85,right color=accent2] (0,0) rectangle (\paperwidth,1pt);
+ \end{tikzpicture}
+}
+
+\defbeamertemplate{footline}{sectioning}{%
+ \usebeamertemplate{footline separator}%
+ \hbox{%
+ \begin{beamercolorbox}[wd=.8\paperwidth,ht=2.25ex,dp=1ex,left]{footline}%
+ \usebeamerfont{footline}\kern\beamer@leftmargin\insertshorttitle
+ \ifx\insertsection\@empty\else\qquad$\vartriangleright$\qquad\insertsection\fi
+ \ifx\insertsubsection\@empty\else\qquad$\vartriangleright$\qquad\insertsubsection\fi
+ \end{beamercolorbox}%
+ \begin{beamercolorbox}[wd=.2\paperwidth,ht=2.25ex,dp=1ex,right]{footline}%
+ \usebeamerfont{footline}\usebeamertemplate{footline right}%
+ \kern\beamer@rightmargin
+ \end{beamercolorbox}%
+ }%
+}
+
+% customize mini frames template to get a section navigation bar
+
+\defbeamertemplate{navigation box}{current}{%
+ \usebeamercolor{navigation box}%
+ \colorbox{bg}{%
+ \rule[-1ex]{0pt}{3.25ex}\color{white}\kern1.4pt\my@navibox\kern1.4pt%
+ }%
+}
+
+\defbeamertemplate{navigation box}{other}{%
+ %\colorbox{white}{%
+ \rule[-1ex]{0pt}{3.25ex}\color{black}\kern1.4pt\my@navibox\kern1.4pt%
+ %}%
+}
+
+\newcommand{\my@navibox@subsection}{$\blacksquare$}
+\newcommand{\my@navibox@frame}{$\square$}
+\let\my@navibox=\my@navibox@frame
+
+% optional navigation box for some special frame
+\newcommand{\my@navibox@frame@opt}{$\boxplus$}
+\newcommand{\my@change@navibox}{\let\my@navibox=\my@navibox@frame@opt}
+\newcommand{\changenavibox}{%
+ \addtocontents{nav}{\protect\headcommand{\protect\my@change@navibox}}%
+}
+
+\newcommand{\my@sectionentry@show}[5]{%
+ \ifnum\c@section=#1%
+ \setbeamertemplate{navigation box}[current]%
+ \else
+ \setbeamertemplate{navigation box}[other]%
+ \fi
+ \begingroup
+ \def\my@navibox{#1}%
+ \hyperlink{Navigation#3}{\usebeamertemplate{navigation box}}%
+ \endgroup
+}
+
+\newif\ifmy@hidesection
+
+\newcommand{\my@sectionentry@hide}[5]{\my@hidesectiontrue}
+
+\pretocmd{\beamer@setuplinks}{\renewcommand{\beamer@subsectionentry}[5]{}}{}{}
+\apptocmd{\beamer@setuplinks}{\global\let\beamer@subsectionentry\mybeamer@subsectionentry}{}{}
+
+\newcommand{\mybeamer@subsectionentry}[5]{\global\let\my@navibox=\my@navibox@subsection}
+
+\newcommand{\my@slideentry@empty}[6]{}
+
+\newcommand{\my@slideentry@section}[6]{%
+ \ifmy@hidesection
+ \my@hidesectionfalse
+ \else
+ \ifnum\c@section=#1%
+ \setbeamertemplate{navigation box}[other]%
+ \ifnum\c@subsection=#2\ifnum\c@subsectionslide=#3%
+ \setbeamertemplate{navigation box}[current]%
+ \fi\fi
+ \beamer@link(#4){\usebeamertemplate{navigation box}}%
+ \fi
+ \fi
+ \global\let\my@navibox=\my@navibox@frame
+}
+
+\newcommand{\my@slideentry@subsection}[6]{%
+ \ifmy@hidesection
+ \my@hidesectionfalse
+ \else
+ \ifnum\c@section=#1%
+ \ifboolexpr{test{\ifnumcomp{\c@subsection}{=}{#2}} or test{\ifnumcomp{#3}{=}{1}}}{%
+ \setbeamertemplate{navigation box}[other]%
+ \ifnum\c@subsection=#2\ifnum\c@subsectionslide=#3%
+ \setbeamertemplate{navigation box}[current]%
+ \fi\fi
+ \beamer@link(#4){\usebeamertemplate{navigation box}}%
+ }{}%
+ \fi
+ \fi
+ \global\let\my@navibox=\my@navibox@frame
+}
+
+\AtEndDocument{%
+ \immediate\write\@auxout{%
+ \noexpand\gdef\noexpand\my@totalsectionnumber{\the\c@section}%
+ }%
+}
+
+\def\my@totalsectionnumber{0}
+
+\defbeamertemplate{footline navigation}{section}{%
+ \setbeamercolor{navigation box}{bg=accent2}%
+ \let\sectionentry=\my@sectionentry@hide
+ \let\slideentry=\my@slideentry@section
+ \dohead
+}
+
+\defbeamertemplate{footline navigation}{subsection}{%
+ \setbeamercolor{navigation box}{bg=accent2}%
+ \let\sectionentry=\my@sectionentry@hide
+ \let\slideentry=\my@slideentry@subsection
+ \dohead
+}
+
+\defbeamertemplate{footline}{navigation}{%
+ \usebeamertemplate{footline separator}%
+ \begin{beamercolorbox}[wd=\paperwidth,ht=2.25ex,dp=1ex]{footline}%
+ \usebeamerfont{footline}%
+ \kern\beamer@leftmargin
+ \setlength{\fboxsep}{0pt}%
+ \setbeamercolor{navigation box}{bg=blue85}%
+ \ifnum\my@totalsectionnumber=0%
+ \insertshorttitle
+ \else
+ \let\sectionentry=\my@sectionentry@show
+ \let\slideentry=\my@slideentry@empty
+ \dohead
+ \fi
+ \hfill
+ \usebeamertemplate{footline navigation}%
+ \kern\beamer@rightmargin
+ \end{beamercolorbox}%
+}
+
+%% ------------------------- frame title -----------------------------
+
+% remove extra vertical space after frametitle
+\patchcmd{\endbeamer@frameslide}{\vskip0.25em}{\relax}{}{}
+
+\defbeamertemplate{frametitle}{simple}[1][]
+{%
+ \nointerlineskip
+ \begin{beamercolorbox}[wd=\paperwidth,sep=0pt,leftskip=\beamer@leftmargin,%
+ rightskip=\beamer@rightmargin,#1]{frametitle}
+ \usebeamerfont{frametitle}%
+ \rule[-3mm]{0pt}{10mm}\insertframetitle\rule[-3mm]{0pt}{10mm}\par
+ \end{beamercolorbox}
+}
+
+%% ------------------- block and theorem -----------------------------
+
+% allow it to be modified by user
+\def\myinserttheoremaddition{\inserttheoremaddition}
+
+\defbeamertemplate{theorem begin}{simple}
+{%
+ \upshape%\bfseries\inserttheoremheadfont
+ {\usebeamercolor[fg]{theoremname}%
+ \inserttheoremname\inserttheoremnumber
+ \ifx\inserttheoremaddition\@empty\else
+ \ \usebeamercolor[fg]{local structure}(\myinserttheoremaddition)%
+ \fi%
+ %\inserttheorempunctuation
+ }%
+ \quad\normalfont
+}
+\defbeamertemplate{theorem end}{simple}{\par}
+
+\defbeamertemplate{proof begin}{simple}
+{%
+ %\bfseries
+ \let\@addpunct=\@gobble
+ {\usebeamercolor[fg]{proofname}\insertproofname}%
+ \quad\normalfont
+}
+\defbeamertemplate{proof end}{simple}{\par}
+
+%% ---------------------- enumerate and itemize ----------------------
+
+\expandafter\patchcmd\csname beamer@@tmpop@enumerate item@square\endcsname
+ {height1.85ex depth.4ex}{height1.85ex depth.3ex}{}{}
+\expandafter\patchcmd\csname beamer@@tmpop@enumerate subitem@square\endcsname
+ {height1.85ex depth.4ex}{height1.85ex depth.3ex}{}{}
+\expandafter\patchcmd\csname beamer@@tmpop@enumerate subsubitem@square\endcsname
+ {height1.85ex depth.4ex}{height1.85ex depth.3ex}{}{}
+
+%% ------------------------ select templates -------------------------
+
+\setbeamertemplate{background canvas}[default]
+\setbeamertemplate{background}[line]
+\setbeamertemplate{headline}[shading]
+\setbeamertemplate{footline}[navigation]
+\setbeamertemplate{footline navigation}[section]
+\setbeamertemplate{footline separator}[shading]
+\setbeamertemplate{footline left}[author]
+\setbeamertemplate{footline center}[title]
+\setbeamertemplate{footline right}[number]
+\setbeamertemplate{title page}[banner]
+\setbeamertemplate{title page content}[hexagon]
+\setbeamertemplate{section page}[fill]
+\setbeamertemplate{show sections in toc}[partial]
+\setbeamertemplate{section name}[simple]
+\setbeamertemplate{section name in toc}[simple]
+\setbeamertemplate{section in toc}[fill]
+\setbeamertemplate{section in toc shaded}[default][50]
+\setbeamertemplate{subsection page}[fill]
+\setbeamertemplate{subsection name}[simple]
+\setbeamertemplate{subsection name in toc}[simple]
+\setbeamertemplate{subsection in toc}[fill]
+\setbeamertemplate{subsection in toc shaded}[default][50]
+\setbeamertemplate{theorem begin}[default]
+\setbeamertemplate{theorem end}[default]
+\setbeamertemplate{proof begin}[default]
+\setbeamertemplate{proof end}[default]
+\setbeamertemplate{frametitle}[simple]
+\setbeamertemplate{navigation symbols}{}
+\setbeamertemplate{itemize items}[square]
+\setbeamertemplate{enumerate items}[square]
+
+%% --------------------------- font theme ----------------------------
+
+\setbeamerfont{title}{size=\LARGE}
+\setbeamerfont{subtitle}{size=\large}
+\setbeamerfont{author}{size=\normalsize}
+\setbeamerfont{institute}{size=\normalsize}
+\setbeamerfont{date}{size=\normalsize}
+\setbeamerfont{occasion}{size=\normalsize}
+\setbeamerfont{section in toc}{size=\large}
+\setbeamerfont{subsection in toc}{size=\large}
+\setbeamerfont{frametitle}{size=\large}
+\setbeamerfont{block title}{size=\normalsize}
+\setbeamerfont{item projected}{size=\footnotesize}
+\setbeamerfont{subitem projected}{size=\scriptsize}
+\setbeamerfont{subsubitem projected}{size=\tiny}
+
+\usefonttheme{professionalfonts}
+%\usepackage{arev}
+
+%% ---------------------------- color theme --------------------------
+
+% always use rgb colors in pdf files
+\substitutecolormodel{hsb}{rgb}
+
+\definecolor{red99}{Hsb}{0,0.9,0.9}
+\definecolor{yellow5x}{Hsb}{60,0.5,1}
+\definecolor{yellow6x}{Hsb}{53,0.6,1}
+\definecolor{yellow86}{Hsb}{60,0.8,0.6}
+\definecolor{yellow99}{Hsb}{60,0.9,0.9}
+\definecolor{cyan95}{Hsb}{180,0.9,0.5}
+\definecolor{blue74}{Hsb}{240,0.7,0.4}
+\definecolor{blue77}{Hsb}{240,0.7,0.7}
+\definecolor{blue85}{Hsb}{230,0.8,0.5}
+\definecolor{blue99}{Hsb}{240,0.9,0.9}
+\definecolor{magenta88}{Hsb}{300,0.8,0.8}
+
+\colorlet{text1}{black}
+\colorlet{back1}{white}
+\colorlet{accent1}{blue99}
+\colorlet{accent2}{cyan95}
+\colorlet{accent3}{red99}
+\colorlet{accent4}{yellow86}
+\colorlet{accent5}{magenta88}
+\colorlet{filler1}{accent1!40!back1}
+\colorlet{filler2}{accent2!40!back1}
+\colorlet{filler3}{accent3!40!back1}
+\colorlet{filler4}{accent4!40!back1}
+\colorlet{filler5}{accent5!40!back1}
+\colorlet{gray1}{black!20}
+\colorlet{gray2}{black!35}
+\colorlet{gray3}{black!50}
+\colorlet{gray4}{black!65}
+\colorlet{gray5}{black!80}
+\colorlet{tcolor}{text1!10!back1}
+\colorlet{dcolor}{white}
+\colorlet{fcolor}{blue77}
+\colorlet{fcolor2}{gray3}
+\colorlet{markcolor}{gray}
+
+\setbeamercolor{normal text}{bg=white,fg=black}
+\setbeamercolor{structure}{fg=blue85}
+\setbeamercolor{local structure}{fg=cyan95}
+\setbeamercolor{footline}{bg=,fg=black}
+\setbeamercolor{title}{fg=yellow99}
+\setbeamercolor{subtitle}{fg=white}
+\setbeamercolor{author}{fg=black}
+\setbeamercolor{institute}{fg=black}
+\setbeamercolor{date}{fg=white}
+\setbeamercolor{occasion}{fg=white}
+\setbeamercolor{section name}{fg=blue85}
+\setbeamercolor{section in toc}{fg=yellow6x,bg=blue85}
+\setbeamercolor{section in toc shaded}{fg=white,bg=blue74}
+\setbeamercolor{subsection name}{parent=section name}
+\setbeamercolor{subsection in toc}{fg=yellow5x,bg=accent2}
+\setbeamercolor{subsection in toc shaded}{fg=white,bg=accent2!50!black}
+\setbeamercolor{frametitle}{parent=structure}
+\setbeamercolor{theoremname}{fg=blue77}
+\setbeamercolor{proofname}{fg=blue77}
+\setbeamercolor{block title}{fg=accent1,bg=gray}
+\setbeamercolor{block body}{bg=lightgray}
+\setbeamercolor{block title example}{fg=accent2,bg=gray}
+\setbeamercolor{block body example}{bg=lightgray}
+\setbeamercolor{block title alerted}{fg=accent3,bg=gray}
+\setbeamercolor{block body alerted}{bg=lightgray}
+
+%% ----------------------- handout mode ------------------------------
+
+\mode<handout>{
+ \setbeamertemplate{background canvas}{}
+ \setbeamertemplate{background}[empty]
+ \setbeamertemplate{headline}[phantom]
+ \setbeamertemplate{footline}[sectioning]
+ \setbeamertemplate{section page}[single]
+ \setbeamertemplate{subsection page}[single]
+ \setbeamerfont{subsection in toc}{size=\large}
+ \colorlet{dcolor}{darkgray}
+ \colorlet{fcolor}{white}
+ \colorlet{fcolor2}{gray1}
+ \setbeamercolor{normal text}{fg=black, bg=white}
+ \setbeamercolor{title}{fg=blue}
+ \setbeamercolor{subtitle}{fg=gray}
+ \setbeamercolor{occasion}{fg=black}
+ \setbeamercolor{date}{fg=black}
+ \setbeamercolor{section in toc}{fg=blue!90!gray,bg=}
+ \setbeamercolor{section in toc shaded}{fg=lightgray,bg=}
+ \setbeamercolor{subsection in toc}{fg=blue!80!gray}
+ \setbeamercolor{subsection in toc shaded}{fg=lightgray}
+ \setbeamercolor{frametitle}{fg=blue!70!gray,bg=}
+ \setbeamercolor{theoremname}{fg=blue!60!gray}
+ \setbeamercolor{proofname}{fg=blue!60!gray}
+ \setbeamercolor{footline}{bg=white,fg=black}
+}
+
+\mode
+<all>
+
+\makeatother