summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/beamer-contrib/dynblocks/latex/dynblocks.sty
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/beamer-contrib/dynblocks/latex/dynblocks.sty')
-rw-r--r--macros/latex/contrib/beamer-contrib/dynblocks/latex/dynblocks.sty210
1 files changed, 210 insertions, 0 deletions
diff --git a/macros/latex/contrib/beamer-contrib/dynblocks/latex/dynblocks.sty b/macros/latex/contrib/beamer-contrib/dynblocks/latex/dynblocks.sty
new file mode 100644
index 0000000000..fbe3d929b6
--- /dev/null
+++ b/macros/latex/contrib/beamer-contrib/dynblocks/latex/dynblocks.sty
@@ -0,0 +1,210 @@
+% * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+% Copyright 2012-2014 Claudio Fiandrino
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Claudio Fiandrino.
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{dynblocks}[2014/18/09 v0.2b A simple way to create dynamic blocks.]
+\RequirePackage{tikz}
+\RequirePackage{etoolbox}
+\RequirePackage{xparse}
+
+%% Colors definition and initial setting
+
+\newcommand{\thecol}{blue!10}
+\newcommand{\thebordercol}{blue}
+
+%% Package options
+
+% Customization colors
+\DeclareOption{customcolors}{%
+\def\setblockcolor#1{\def\@setcolor{#1}}
+\def\@setcolor{blue!10}
+\renewcommand{\thecol}{\@setcolor}
+
+\def\setbordercolor#1{\def\@setbordercolor{#1}}
+\def\@setbordercolor{blue}
+\renewcommand{\thebordercol}{\@setbordercolor}
+
+\def\setinnercolor#1{\def\@setinnercolor{#1}}
+\def\@setinnercolor{white}
+
+\def\setoutercolor#1{\def\@setoutercolor{#1}}
+\def\@setoutercolor{blue!10}
+
+\def\settopcolor#1{\def\@settopcolor{#1}}
+\def\@settopcolor{white}
+
+\def\setbottomcolor#1{\def\@setbottomcolor{#1}}
+\def\@setbottomcolor{blue!10}
+
+\def\setleftcolor#1{\def\@setleftcolor{#1}}
+\def\@setleftcolor{white}
+
+\def\setrightcolor#1{\def\@setrightcolor{#1}}
+\def\@setrightcolor{blue!10}
+}
+
+% Customization colors adequate to the theme
+\DeclareOption{getthemecolors}{%
+% redefinition opaqueblock
+\renewcommand{\thecol}{structure.fg!10}
+\renewcommand{\thebordercol}{structure.fg}
+% redefinition fancyblock
+\def\@setinnercolor{white}
+\def\@setoutercolor{structure.fg!10}
+% redefinition vshadeblock
+\def\@settopcolor{white}
+\def\@setbottomcolor{structure.fg!10}
+% redefinition oshadeblock
+\def\@setleftcolor{white}
+\def\@setrightcolor{structure.fg!10}
+}
+
+\newbool{rndcorners}
+\boolfalse{rndcorners}
+\DeclareOption{roundedcorners}{%
+\booltrue{rndcorners}
+}
+
+\newbool{shadowed}
+\boolfalse{shadowed}
+\DeclareOption{shadow}{%
+\usetikzlibrary{shadows}
+\booltrue{shadowed}
+}
+
+\ProcessOptions
+
+%% Opacity
+
+\def\setvisopacity#1{\def\@visopacity{#1}}
+\def\@visopacity{0.9}
+
+\def\setinvopacity#1{\def\@invopacity{#1}}
+\def\@invopacity{0.4}
+
+\def\setshadowopacity#1{\def\@shadowopacity{#1}}
+\def\@shadowopacity{0.4}
+
+%% Alignment
+
+\def\setalignment#1{\def\@alignment{#1}}
+\def\@alignment{justify}
+
+%% Word alert color
+
+\def\setwordscolor#1{\def\@setwordscolor{#1}}
+\def\@setwordscolor{blue}
+
+\newcommand{\myalert}[1]{\textcolor{\@setwordscolor}{#1}}
+
+%% Macro to save text and recall it afterwards
+
+\newcounter{thistext}
+\newcommand{\savetext}[2]{%
+ «#1»%
+ \addtocounter{thistext}{1}%
+ \@namedef{thistext\thethistext}{#2}}
+\newcommand{\printthistext}[1]{\@nameuse{thistext#1}}
+
+
+%% Settings
+
+\tikzset{visib/.style={rectangle,color=\thebordercol,fill=\thecol,text=black,draw,text opacity=\@visopacity, text width=#1,align=\@alignment}}
+\tikzset{fancyvisib/.style={rectangle,color=\thebordercol,inner color=\@setinnercolor, outer color=\@setoutercolor,text=black,draw,text opacity=\@visopacity, text width=#1,align=\@alignment}}
+\tikzset{vshadevisib/.style={rectangle,color=\thebordercol,top color=\@settopcolor, bottom color=\@setbottomcolor,text=black,draw,text opacity=\@visopacity, text width=#1,align=\@alignment}}
+\tikzset{oshadevisib/.style={rectangle,color=\thebordercol,left color=\@setleftcolor, right color=\@setrightcolor,text=black,draw,text opacity=\@visopacity, text width=#1,align=\@alignment}}
+\tikzset{invisib/.style={rectangle,color=gray,fill=gray!10,text=black,draw,text opacity=\@invopacity, text width=#1,align=\@alignment}}
+
+%% Overlays
+
+\tikzset{
+ dyninvisible/.style={opacity=0,text opacity=0},
+ dynvisible on/.style={dynalt=#1{}{dyninvisible}},
+ dynalt/.code args={<#1>#2#3}{%
+ \alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}}
+ },
+ }
+
+%% Rounded corners
+\ifbool{rndcorners}{%true
+\tikzset{visib/.append style={rounded corners}}
+\tikzset{fancyvisib/.append style={rounded corners}}
+\tikzset{vshadevisib/.append style={rounded corners}}
+\tikzset{oshadevisib/.append style={rounded corners}}
+\tikzset{invisib/.append style={rounded corners}}
+}{%false
+}
+
+%% Definition of user commands and environment
+
+\newenvironment{dynblock}{\begin{tikzpicture}}{\end{tikzpicture}}
+
+\newlength\intdimension
+
+\NewDocumentCommand{\opaqueblock}{r<> O{\textwidth} m}{%
+\setlength{\intdimension}{\z@}
+\addtolength{\intdimension}{#2}
+\ifbool{shadowed}{% true
+\node[visib=#2,dynvisible on=<{#1}>,drop shadow={opacity=\@shadowopacity,dynvisible on=<{#1}>}] (X) {\begingroup #3 \endgroup};
+}{% false
+\node[visib=#2,dynvisible on=<{#1}>] (X) {\begingroup #3 \endgroup};
+}
+\savetext{mytext}{#3}
+}
+
+\NewDocumentCommand{\fancyblock}{r<> O{\textwidth} m}{%
+\setlength{\intdimension}{\z@}
+\addtolength{\intdimension}{#2}
+\ifbool{shadowed}{% true
+\node[fancyvisib=#2,dynvisible on=<{#1}>,drop shadow={opacity=\@shadowopacity,dynvisible on=<{#1}>}] (X) {\begingroup #3 \endgroup};
+}{% false
+\node[fancyvisib=#2,dynvisible on=<{#1}>] (X) {\begingroup #3 \endgroup};
+}
+\savetext{mytext}{#3}
+}
+
+\NewDocumentCommand{\vshadeblock}{r<> O{\textwidth} m}{%
+\setlength{\intdimension}{\z@}
+\addtolength{\intdimension}{#2}
+\ifbool{shadowed}{% true
+\node[vshadevisib=#2,dynvisible on=<{#1}>,drop shadow={opacity=\@shadowopacity,dynvisible on=<{#1}>}] (X) {\begingroup #3 \endgroup};
+}{% false
+\node[vshadevisib=#2,dynvisible on=<{#1}>] (X) {\begingroup #3 \endgroup};
+}
+\savetext{mytext}{#3}
+}
+
+\NewDocumentCommand{\oshadeblock}{r<> O{\textwidth} m}{%
+\setlength{\intdimension}{\z@}
+\addtolength{\intdimension}{#2}
+\ifbool{shadowed}{% true
+\node[oshadevisib=#2,dynvisible on=<{#1}>,drop shadow={opacity=\@shadowopacity,dynvisible on=<{#1}>}] (X) {\begingroup #3 \endgroup};
+}{% false
+\node[oshadevisib=#2,dynvisible on=<{#1}>] (X) {\begingroup #3 \endgroup};
+}
+\savetext{mytext}{#3}
+}
+
+\NewDocumentCommand{\invblock}{r<>}{%
+\ifbool{shadowed}{% true
+\node[invisib=\intdimension,dynvisible on=<{#1}>,drop shadow={opacity=\@shadowopacity,dynvisible on=<{#1}>}] (X) {\printthistext{\thethistext}};
+}{% false
+\node[invisib=\intdimension,dynvisible on=<{#1}>] (X) {\printthistext{\thethistext}};
+}
+}
+
+\NewDocumentCommand{\dynalert}{r<> m}{\alt<{#1}>{\pgfsetfillopacity{1}\myalert{#2}\pgfsetfillopacity{\@invopacity}}{#2}}
+
+\endinput