PL
LOGO

BeamerikZ = Beamer + TikZ


BeamerikZ is a LaTEX class that enables to create Beamer presentations easily incorporating TikZ features.

► Example

\documentclass{beamerikz}              % defines the document to be BeamerikZ

\begin{document}
\begin{bzFrame}                        % the only frame of that document
\bzOn{                                 % content to appear first
    \bzCenter{Welcome to \beamerikz!}  % a centered text
}
\end{bzFrame}
\end{document}

► Quick Start Guide

The only file needed by the class is beamerikz.cls that should be placed in the current directory of your *.tex file!

► Download

► Features

► Donate

If you find BeamerikZ useful, please consider a .
[-]

Upgrade from the previous version


To upgrade from the previous version of the class, perform:

1) Set \documentclass{beamerikz} and remove \usepackage{beamerikz}

2) Find and replace in case-sensitive mode:

  \setTitle    -> \sBzTitle
  \setAuthor   -> \sBzAuthor

  \tikz        -> \bz
  Tikz         -> Bz
  \bzStyle     -> \tikzstyle
  \bzTitle     -> \bzLeft
  \bzCtitle    -> \bzCemph

  H{           -> HL{              (carefully...)

  \begin{tikz  -> \begin{bz
  \end{tikz    -> \end{bz

  \whatgives   -> \WG

  interim      -> brief

  \DOT         -> \bzItemDot       (but better swich to \bzItem{...})

3) Replace (if used) \textSize by appropriate [scale=...]
[-]

BeamerikZ.cls


% Class allowing to create purely TikZ based Beamer presentations.
%
% author: Michal Skrzypczak
% http://www.mimuw.edu.pl/~mskrzypczak
% e-mail: mskrzypczak@mimuw.edu.pl
%
% With help of dr Szczepan Hummel and comments from dr Filip Mazowiecki!
%
% Propagate with preservation of the above info.

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{beamerikz}[2018/09/29 BeamerikZ class]

% OPTIONS =====================================================================

% what mode is being used (the name: FINAL, READY, INTERIM, SHORT, or DRAFT
\newcommand{\bzUseMode}{FINAL}
% should the non-[show] frames be drawn in a full manner: TRUE or FALSE
\newcommand{\bzUseFull}{TRUE}
% should the non-[show] frames be drawn in a short manner: TRUE or FALSE
\newcommand{\bzUseShort}{FALSE}
% should the grid be used: TRUE or FALSE
\newcommand{\bzUseGrid}{FALSE}
% should the Powered by note be visible: TRUE or FALSE
\newcommand{\bzUseThanks}{TRUE}

% should Beamer use the option draft: either '' or ', draft'
\newcommand{\bzUseDraft}{}

% which font should be used by Beamer
\newcommand{\bzUseFont}{17pt}
% what is the size of the used font
\newcommand{\bzUseScale}{17}
% what is the width of the lines
\newcommand{\bzUseWidth}{1.2pt}

% ready - compile everything, add compile time to the first plain frame
\DeclareOption{ready}{
	\renewcommand{\bzUseMode}{READY}
	\renewcommand{\bzUseFull}{TRUE}
	\renewcommand{\bzUseShort}{FALSE}
	\renewcommand{\bzUseGrid}{FALSE}
	\renewcommand{\bzUseDraft}{}
}

% final - compile everything, no compile time
\DeclareOption{final}{
	\renewcommand{\bzUseMode}{FINAL}
	\renewcommand{\bzUseFull}{TRUE}
	\renewcommand{\bzUseShort}{FALSE}
	\renewcommand{\bzUseGrid}{FALSE}
	\renewcommand{\bzUseDraft}{}
}

% draft - compile all the frames,
%		those with parameter [show] in full step-by-step manner,
%		others in preview mode (one slide per frame),
%		show grid on all frames
%       show slide counter on [show] frames
\DeclareOption{draft}{
	\renewcommand{\bzUseMode}{DRAFT}
	\renewcommand{\bzUseFull}{FALSE}
	\renewcommand{\bzUseShort}{TRUE}
	\renewcommand{\bzUseGrid}{TRUE}
	\renewcommand{\bzUseDraft}{draft}
}

% short - compile all the frames in preview mode (one slide per frame),
%		do not show grid on any frame
\DeclareOption{short}{
	\renewcommand{\bzUseMode}{SHORT}
  	\renewcommand{\bzUseFull}{FALSE}
	\renewcommand{\bzUseShort}{TRUE}
	\renewcommand{\bzUseGrid}{FALSE}
	\renewcommand{\bzUseDraft}{}
}

% brief - compile only [show] frames (in full step-by-step manner),
%		others are replaced by a [HIDDEN] slide (one slide per frame),
%		show grid on all frames
%       show slide counter on [show] frames
\DeclareOption{brief}{
	\renewcommand{\bzUseMode}{INTERIM}
	\renewcommand{\bzUseFull}{FALSE}
	\renewcommand{\bzUseShort}{FALSE}
	\renewcommand{\bzUseGrid}{TRUE}
	\renewcommand{\bzUseDraft}{}
}

% small - make the font have smaller size
\DeclareOption{small}{
	\renewcommand{\bzUseFont}{14pt}
	\renewcommand{\bzUseScale}{14}
	\renewcommand{\bzUseWidth}{1.0pt}
}

% basic - make the font have normal size
\DeclareOption{basic}{
	\renewcommand{\bzUseFont}{17pt}
	\renewcommand{\bzUseScale}{17}
	\renewcommand{\bzUseWidth}{1.2pt}
}
  
% large - make the font bigger than usually
\DeclareOption{large}{
	\renewcommand{\bzUseFont}{20pt}
	\renewcommand{\bzUseScale}{20}
	\renewcommand{\bzUseWidth}{1.4pt}
}
  
% plain - do not show Powered by BeamerikZ on the first plain frame
\DeclareOption{plain}{
	\renewcommand{\bzUseThanks}{FALSE}
}

\ProcessOptions*\relax

% PACKAGES, GEOMETRY ==========================================================

\LoadClass[usenames, dvipsnames, t, \bzUseFont, \bzUseDraft]{beamer}

\RequirePackage{environ}
\RequirePackage{tikz}
\RequirePackage{xspace}
\RequirePackage[yyyymmdd,hhmmss]{datetime}

\geometry{papersize={21.1cm,16.41cm}}

\setlength{\lineskip}{0pt}

\tikzset{every picture/.style={line width=\bzUseWidth}}

% DOCUMENT SETUP ==============================================================

% stores the title of a given presentation (visible in the footline)
\newcommand{\bzTitle}{}

% stores the list of authors of a given presentation (visible in the footline)
% do not use \and here!
\newcommand{\bzAuthor}{}
  
% sets the title / author of a given presentation
% you may use Latex code inside, like \sBzTitle{\bf Something}
\newcommand{\sBzTitle} [1]{\renewcommand{\bzTitle} {#1}}
\newcommand{\sBzAuthor}[1]{\renewcommand{\bzAuthor}{#1}}

% COLORS ======================================================================

\definecolor{bzBlack}{RGB}{13,55,70}
\definecolor{bzGreen}{RGB}{13,168,67}
\definecolor{bzBlue}{RGB}{18,76,183}
\definecolor{bzRed}{RGB}{248,51,60}
\definecolor{bzWhite}{RGB}{255,255,255}
\definecolor{bzGray}{RGB}{173,175,178}

\newcommand{\bzCtext}{bzBlack}
\newcommand{\bzCemph}{bzGreen}
\newcommand{\bzChigh}{bzRed}
\newcommand{\bzCname}{bzRed}
\newcommand{\bzCback}{bzWhite}

% BEAMER THEME ================================================================

\setbeamertemplate{navigation symbols}{}

\makeatletter
\define@key{beamerframe}{t}[true]{% top
	\beamer@frametopskip=0pt %
	\beamer@framebottomskip=0pt plus 1fill %
	\def\beamer@initfirstlineunskip{}%
}

% BEAMER COLOURS ==============================================================

\color{\bzCtext}

\setbeamercolor{title in head/foot}{bg=\bzCback}
\setbeamercolor{section in head/foot}{bg=\bzCback}
\setbeamercolor{background canvas}{bg=\bzCback}
  
% TiKZ LIBRARIES ==============================================================

\usetikzlibrary{positioning}
\usetikzlibrary{backgrounds}
\usetikzlibrary{automata}
\usetikzlibrary{decorations.pathmorphing}
\usetikzlibrary{decorations.pathreplacing}
\usetikzlibrary{decorations.markings}
\usetikzlibrary{decorations}
\usetikzlibrary{arrows}
\usetikzlibrary{arrows.meta}
\usetikzlibrary{patterns}
\usetikzlibrary{calc}
\usetikzlibrary{shapes}
\usetikzlibrary{fadings}
\usetikzlibrary{shadings}

% BRACES ======================================================================

\tikzstyle{bzBrace} = [draw]

% upper brace
\tikzstyle{bzBraceU} = [bzBrace,
	decoration={brace, mirror, raise=0.0cm, amplitude=3mm},
	decorate,
	every node/.style={anchor=north, yshift=-0.2cm}]

% right brace
\tikzstyle{bzBraceR} = [bzBrace,
	decoration={brace, mirror, raise=0.0cm, amplitude=3mm},
	decorate,
	every node/.style={anchor=west, xshift= 0.2cm}]

% over brace
\tikzstyle{bzBraceO} = [bzBrace,
	decoration={brace, raise=0.0cm, amplitude=3mm},
	decorate,
	every node/.style={anchor=south, yshift= 0.2cm}]

% left brace
\tikzstyle{bzBraceL} = [bzBrace,
	decoration={brace, raise=0.0cm, amplitude=3mm},
	decorate,
	every node/.style={anchor=east, xshift=-0.2cm}]

% NODE STYLES =================================================================

% nodes in the flow of the document
\tikzstyle{flow} = [inner sep=0cm, node distance=0cm and 0cm]

% node extending to left
\tikzstyle{toL} = [anchor=mid east, flow]

% node extending to right
\tikzstyle{toR} = [anchor=mid west, flow]

% node aligned centrally
\tikzstyle{toC} = [align=center, anchor=mid, flow]

% ARITHMETIC ==================================================================

% These commands perform immidetely the arithmetical computetion given in
% the second argument % and store the result in the first argument, like:
% \bzEvalInt{\x}{(1+\x)*\y+12}

% this one stores a rounded integer value
\newcommand{\bzEvalInt}[2]{%
	\pgfmathparse{int(#2)}%
	{\global\edef#1{\pgfmathresult}}%
}

% this one stores a floating point value
\newcommand{\bzEvalFloat}[2]{%
	\pgfmathparse{#2}%
	{\global\edef#1{\pgfmathresult}}%
}

% COUNTERS ====================================================================

% slide number counter
\newcommand{\bzS}{1}
\newcommand{\sBzS}[1]{\bzEvalInt{\bzS}{#1}}
\newcommand{\zBzS}{\bzEvalInt{\bzS}{1}}
\newcommand{\dBzS}[1][1]{\bzEvalInt{\bzS}{\bzS-(#1)}}
\newcommand{\iBzS}[1][1]{\bzEvalInt{\bzS}{\bzS+(#1)}}

% height - vertical align counter
\newcommand{\bzH}{0}
\newcommand{\sBzH}[1]{\bzEvalFloat{\bzH}{#1}}
\newcommand{\zBzH}{\bzEvalFloat{\bzH}{0}}
\newcommand{\iBzH}[1][1.0]{\bzEvalFloat{\bzH}{\bzH-(#1)}}
\newcommand{\dBzH}[1][1.0]{\bzEvalFloat{\bzH}{\bzH+(#1)}}

% indent - horizontal align counter
\newcommand{\bzI}{-10}
\newcommand{\sBzI}[1]{\bzEvalFloat{\bzI}{#1}}
\newcommand{\zBzI}{\bzEvalFloat{\bzI}{-10}}
\newcommand{\dBzI}[1][1.0]{\bzEvalFloat{\bzI}{\bzI-(#1)}}
\newcommand{\iBzI}[1][1.0]{\bzEvalFloat{\bzI}{\bzI+(#1)}}

% list numbering counter
\newcommand{\bzL}{0}
\newcommand{\zBzL}{\bzEvalInt{\bzL}{0}}

% node numbering counter
\newcommand{\bzN}{0}
\newcommand{\zBzN}{\bzEvalInt{\bzN}{0}}
\newcommand{\iBzN}{\bzEvalInt{\bzN}{\bzN+1}}

% gives the label of a node of a given number
\newcommand{\bzLabel}[1]{beamerikzNode#1}

% APPEARING AND DISAPPEARING OF THE CONTENT ===================================

% Shows the given content on slides in-between the given two numbers
% When an argument is skipped, taken as the first / last slide
\newcommand{\bzIn}[3]{%
   	\bzEvalInt{\bzShow}{#1}%
   	\bzEvalInt{\bzHide}{#2}%
   	\ifthenelse{\equal{\bzShow}{0}}{\renewcommand{\bzShow}{}}{}%
   	\ifthenelse{\equal{\bzHide}{0}}{\renewcommand{\bzHide}{}}{}%
   	\ifthenelse{\equal{\bzShowAll}{1}}{%
	   	\onslide<\bzShow-\bzHide>{#3}%
	}{%
		\ifthenelse{\equal{\bzHide}{}}{%
			#3%
		}{%
			\begin{scope}[opacity=0.2]#3\end{scope}%
		}%
	}%
}

% shows the given content from that moment on and increases \bzS
\newcommand{\bzOn}[1]{\bzIn{\bzS}{}{#1}\iBzS}

% shows the given content for one step and increases \bzS
\newcommand{\bzOne}[1]{\bzIn{\bzS}{\bzS}{#1}\iBzS}

% shows the given content for two steps and increases \bzS
\newcommand{\bzTwo}[1]{\bzIn{\bzS}{\bzS+1}{#1}\iBzS}

% shows the given content for one steps and waits for it to vanish - 
% increases \bzS by two
\newcommand{\bzOnly}[1]{\bzIn{\bzS}{\bzS}{#1}\iBzS\iBzS}

% FRAME ELEMENTS ==============================================================

% shows the stylized logo of the package
\newcommand{\beamerikz}{{\normalfont \texttt{Beamer}i\textit{k}Z}\xspace}

% Should show all the intermediate slides
\newcommand{\bzShowAll}{1}    

% is this the first plain frame in the presentation (counter)
\newcommand{\bzNumFF}{0}

% reset counters for a new frame
\newcommand{\bzResetFrame}{
\color{\bzCtext}%
\zBzS%
\zBzH%
\zBzI%
\zBzL%
\zBzN%
}

% Shows the background coordinate system of a frame
\newcommand{\bzCoords}{
	\bzUnder{
		\path[draw, step=1.0, dashed, bzGray!40, thin] (-10,-14.5) grid (10,1);
      	  
		\path[draw, ultra thick, bzGray!60] (0,-14.5) -- (0,1.0);
		\foreach \x in {-10, -5, 0, 5, 10} {
			\path[draw, thin, bzGray!40] (\x,-14.5) -- (\x,1.0);
		}
	  
		\path[draw, ultra thick, bzGray!60] (-10, 0) -- (10,0);
		\foreach \y in {0, -5, -10} {
			\path[draw, thin, bzGray!40] (-10,\y) -- (10,\y);
		}
	}
}

% shows the body of the frame, including coordinates if needed
\newcommand{\bzBody}{
	\ifthenelse{\equal{\bzUseGrid}{TRUE}}{
		\bzCoords
	}{}
	\BODY
}

% show the actual content of the frame (without footline, etc)
\newcommand{\bzContent}[1]{
\begin{scope}
	\clip(-10.5,1.1) rectangle (10.5,-14.5);
									
	\ifthenelse{\equal{#1}{show}}{		
		\ifthenelse{\equal{\bzUseMode}{SHORT}}{
			\renewcommand{\bzShowAll}{0}%
			\bzBody
			\renewcommand{\bzShowAll}{1}%
		}{
			\bzBody
		}
	}{
		\ifthenelse{\equal{\bzUseFull}{TRUE}}{
			\bzBody
		}{}
		
		\ifthenelse{\equal{\bzUseShort}{TRUE}}{
			\renewcommand{\bzShowAll}{0}%
			\bzBody
			\renewcommand{\bzShowAll}{1}%
		}{}
					
		\ifthenelse{\equal{\bzUseMode}{INTERIM}}{
			\node[toC] at (0,-5) {\sc [ {\small HIDDEN} ]};
		}{}
	}
\end{scope}
}

% Shows the compile information
\newcommand{\bzCompileInfo}{
	\ifthenelse{\equal{\bzUseMode}{READY} \AND \equal{\bzNumFF}{0}}{
		\bzOn{
			\node[scale=10/\bzUseScale, toC] at (0, -15) {%
				\texttt{$\big[$\today\ %
				\currenttime\ %
				(\inserttotalframenumber)}$\big]$%
			};
		}
	}{}
}

% show footline of a slide - author, title, and frame number
\newcommand{\bzFootline}{
	\node[scale=10/\bzUseScale, toL] at (-0.5, -15.0) {\bzAuthor};
	\node[scale=10/\bzUseScale, toR] at (+0.5, -15.0) {\bzTitle};
	\node[scale=10/\bzUseScale, toL] at (10.0, -15.0)
		{\insertframenumber\, / \ \inserttotalframenumber};
}

% show slide counter if the mode requires that (if grid is visible)
\newcommand{\bzSlideCount}[1]{
	\ifthenelse{\equal{#1}{show} \AND \equal{\bzUseGrid}{TRUE}}{
		\node[scale=10/\bzUseScale, toR, text=gray] at (-10, -15)
			{(\the\beamer@slideinframe)};
	}{}
}

% shows the powered by info
\newcommand{\bzPowered}{
	\ifthenelse{\equal{\bzUseThanks}{TRUE} \AND \equal{\bzNumFF}{0}}{
		\node[toL, scale=9/\bzUseScale] at (10.3, -15)
			{
			\href{https://www.mimuw.edu.pl/~mskrzypczak/projects/beamerikz/}%
			{\textbf{Powered by} \beamerikz}
			};
	}{}
}

% FRAMES ======================================================================

% Shows a normal frame
% Optional argument [show] makes the frame visibile in all compile modes
\NewEnviron{bzFrame}[1][]{%	
\begin{frame}[t, plain]%
\bzResetFrame%
\makebox[\textwidth][c]{%
\begin{tikzpicture}%
\bzContent{#1}
\bzFootline
\bzSlideCount{#1}
\end{tikzpicture}%
}%
\end{frame}%
}

% Shows a plain frame (no bottom line)
% Optional argument [show] makes the frame visibile in all compile modes
% in ready compile mode the first plain frame gets compile information
\NewEnviron{bzPlainFrame}[1][]{%	
\begin{frame}[t,plain,noframenumbering]%
\bzResetFrame%
\makebox[\textwidth][c]{%
\begin{tikzpicture}%
\bzContent{#1}
\bzCompileInfo
\bzSlideCount{#1}
\bzPowered
\end{tikzpicture}%
}%
\end{frame}%
\bzEvalInt{\bzNumFF}{\bzNumFF+1}%
}

% DISPLAY STYLES ==============================================================

% only boldfaced text
\newcommand{\bo}[1]{\textbf{#1}}

% highlighted text
\newcommand{\hl}[1]{\textcolor{\bzChigh}{#1}}

% emphasized text
\newcommand{\el}[1]{\textcolor{\bzCemph}{#1}}

% highlighted and boldfaced
\newcommand{\hb}[1]{\hl{\bo{#1}}}

% emphasized and boldfaced
\newcommand{\eb}[1]{\el{\bo{#1}}}

% displays the given argument as names of authors (in brackets). If
% the argument is empty, displays nothing (not even the brackets).
\newcommand{\bzNames}[1]{%
	\ifthenelse{\equal{#1}{}}{%
	}{%
		\textcolor{\bzCname}{(#1)}}%
	}

% FRAME NODES =================================================================

% All the following commands go with variants BO, HL, HB, EL, and EB,
% that use the respective highlighting commands for the contet.

% text aligned immidately to left
\newcommand{\bzLeft}[1]{
	\iBzN
	\node[toR] (\bzLabel{\bzN}) at (\bzI, \bzH) {{#1}};
	\iBzH
}

\newcommand{\bzLeftBO}[1]{\bzLeft{\bo{#1}}}
\newcommand{\bzLeftHL}[1]{\bzLeft{\hl{#1}}}
\newcommand{\bzLeftHB}[1]{\bzLeft{\hb{#1}}}
\newcommand{\bzLeftEL}[1]{\bzLeft{\el{#1}}}
\newcommand{\bzLeftEB}[1]{\bzLeft{\eb{#1}}}

% text aligned to left, with an ident
\newcommand{\bzText}[1]{
	\iBzI
	\bzLeft{#1}
	\dBzI
}

\newcommand{\bzTextBO}[1]{\bzText{\bo{#1}}}
\newcommand{\bzTextHL}[1]{\bzText{\hl{#1}}}
\newcommand{\bzTextHB}[1]{\bzText{\hb{#1}}}
\newcommand{\bzTextEL}[1]{\bzText{\el{#1}}}
\newcommand{\bzTextEB}[1]{\bzText{\eb{#1}}}

% the shape of the item dot
\newcommand{\bzItemDot}{$\bullet$}

% reset the dot to the standard shape
\newcommand{\zBzItemDot}{\renewcommand{\bzItemDot}{$\bullet$}}

% item of an itemized list, aligned to left, with an ident
\newcommand{\bzItem}[1]{
	\iBzI
	\node[toC] at (\bzI-0.4, \bzH) {\bzItemDot};
	\bzLeft{#1}
	\dBzI
}

\newcommand{\bzItemBO}[1]{\bzItem{\bo{#1}}}
\newcommand{\bzItemHL}[1]{\bzItem{\hl{#1}}}
\newcommand{\bzItemHB}[1]{\bzItem{\hb{#1}}}
\newcommand{\bzItemEL}[1]{\bzItem{\el{#1}}}
\newcommand{\bzItemEB}[1]{\bzItem{\eb{#1}}}

% item of an enumerated list, aligned to left, with an ident
\newcommand{\bzList}[1]{
	\bzEvalInt{\bzL}{\bzL+1}
	\iBzI
	\node[toL] at (\bzI-0.15, \bzH) {\bf \bzL.};
	\bzLeft{#1}
	\dBzI
}

\newcommand{\bzListBO}[1]{\bzList{\bo{#1}}}
\newcommand{\bzListHL}[1]{\bzList{\hl{#1}}}
\newcommand{\bzListHB}[1]{\bzList{\hb{#1}}}
\newcommand{\bzListEL}[1]{\bzList{\el{#1}}}
\newcommand{\bzListEB}[1]{\bzList{\eb{#1}}}

% text aligned immidately to right
\newcommand{\bzRight}[1]{
	\iBzN
	\node[toL] (\bzLabel{\bzN}) at (-\bzI, \bzH) {{#1}};
	\iBzH
}

\newcommand{\bzRightBO}[1]{\bzRight{\bo{#1}}}
\newcommand{\bzRightHL}[1]{\bzRight{\hl{#1}}}
\newcommand{\bzRightHB}[1]{\bzRight{\hb{#1}}}
\newcommand{\bzRightEL}[1]{\bzRight{\el{#1}}}
\newcommand{\bzRightEB}[1]{\bzRight{\eb{#1}}}

% text aligned to center
\newcommand{\bzCenter}[1]{
	\iBzN
	\node[toC] (\bzLabel{\bzN}) at (0, \bzH) {#1};
	\iBzH
}

\newcommand{\bzCenterBO}[1]{\bzCenter{\bo{#1}}}
\newcommand{\bzCenterHL}[1]{\bzCenter{\hl{#1}}}
\newcommand{\bzCenterHB}[1]{\bzCenter{\hb{#1}}}
\newcommand{\bzCenterEL}[1]{\bzCenter{\el{#1}}}
\newcommand{\bzCenterEB}[1]{\bzCenter{\eb{#1}}}

% Continue last node to the right.
% You can also provide a number (retriven by \bzN) of a node as
% the first optional argument.
% \bzH is not incremented
\newcommand{\bzNext}[2][\bzN]{
	\bzEvalInt{\bzL}{#1}
	\iBzN
	\node[toR,base right = of \bzLabel{\bzL}] (\bzLabel{\bzN}) {{#2}};
}

\newcommand{\bzNextBO}[1]{\bzNext{\bo{#1}}}
\newcommand{\bzNextHL}[1]{\bzNext{\hl{#1}}}
\newcommand{\bzNextHB}[1]{\bzNext{\hb{#1}}}
\newcommand{\bzNextEL}[1]{\bzNext{\el{#1}}}
\newcommand{\bzNextEB}[1]{\bzNext{\eb{#1}}}

% Continue last node to the left. 
% You can also provide a number (retriven by \bzN) of a node as the first
% optinal argument.
% \bzH is not incremented
\newcommand{\bzPrev}[2][\bzN]{
	\bzEvalInt{\bzL}{#1}
	\node[toL,base left = of \bzLabel{\bzL}] {{#2}};
}

\newcommand{\bzPrevBO}[1]{\bzPrev{\bo{#1}}}
\newcommand{\bzPrevHL}[1]{\bzPrev{\hl{#1}}}
\newcommand{\bzPrevHB}[1]{\bzPrev{\hb{#1}}}
\newcommand{\bzPrevEL}[1]{\bzPrev{\el{#1}}}
\newcommand{\bzPrevEB}[1]{\bzNext{\eb{#1}}}

% FRAME COMPONENTS ============================================================


% shows the given content on the background layer, behind the normal content
\newcommand{\bzUnder}[1]{
	\begin{scope}[on background layer]
	#1
	\end{scope}
}


% centered mathematical content
\newcommand{\bzMath}[1]{
	\bzCenter{\begin{minipage}{1.04\textwidth}{#1}\end{minipage}};
}

% multi-line content with automatical line-breaking
\newcommand{\bzBox}[1]{
	\bzEvalFloat{\bzLineSpread}{1.34*17/\bzUseScale}
	\linespread{\bzLineSpread}
	\node[anchor=north] at (0, \bzH+0.5) {%
		\begin{minipage}{1.04\textwidth}{#1}\end{minipage}%s
	};
	\iBzH
}

% displays the abstract theorem
\newcommand{\bzThm}[3]{
	\bzLeft{\hb{#1} \bzNames{#2}}
	\bzText{#3}
}

\newcommand{\bzTheorem}[2]    {\bzThm{Theorem}{#1}{#2}}
\newcommand{\bzLemma}[2]      {\bzThm{Lemma}{#1}{#2}}
\newcommand{\bzFact}[2]       {\bzThm{Fact}{#1}{#2}}
\newcommand{\bzConjecture}[2] {\bzThm{Conjecture}{#1}{#2}}
\newcommand{\bzDefinition}[2] {\bzThm{Definition}{#1}{#2}}
\newcommand{\bzQuestion}[2]   {\bzThm{Question}{#1}{#2}}
\newcommand{\bzProblem}[2]    {\bzThm{Problem}{#1}{#2}}
\newcommand{\bzProposition}[2]{\bzThm{Proposition}{#1}{#2}}
\newcommand{\bzCorollary}[2]  {\bzThm{Corollary}{#1}{#2}}
\newcommand{\bzExercise}[2]   {\bzThm{Exercise}{#1}{#2}}
\newcommand{\bzExample}[2]    {\bzThm{Example}{#1}{#2}}

% displays proof of a theorem
\newcommand{\bzProof}[1]{
	\bzLeftBO{Proof}
	\bzText{#1}
}

\renewcommand{\qedsymbol}{\ensuremath{\blacksquare}}

% displays QED symbol
\newcommand{\bzQed}{
	\bzRight{\qed}
}

% displays horizontal line
\newcommand{\bzLine}{
	\draw[line cap=round] (-10, \bzH + 0.5) -- ++(20,0);
}

% END =========================================================================

back
last modification: 14:48 19.09.2019