diff options
Diffstat (limited to 'macros/latex/contrib/beamer-contrib/dynblocks/latex/dynblocks.sty')
-rw-r--r-- | macros/latex/contrib/beamer-contrib/dynblocks/latex/dynblocks.sty | 210 |
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 |