% Package: gridslides % Description: LaTeX package to create free form slides with blocks placed on a grid % File: gridslides.sty % Author: Daniel Mendler % Version: 0.1.1 % Date: 2017-11-28 % License: GPL2 or LPPL1.3 at your option % Homepage: https://github.com/minad/gridslides \RequirePackage[utf8]{inputenc} \RequirePackage{amsmath,amsthm,amssymb} \RequirePackage{mathtools} \RequirePackage[ngerman]{babel} \RequirePackage{braket} \RequirePackage{siunitx} \RequirePackage{xspace} \RequirePackage{dsfont} \RequirePackage{microtype} \RequirePackage{ragged2e} \RequirePackage{tikz} \RequirePackage[margin=0mm,paperwidth=128mm,paperheight=96mm]{geometry} \RequirePackage{xstring} \RequirePackage{enumerate} \RequirePackage{environ} \RequirePackage[pdfusetitle,bookmarksopen]{hyperref} \usetikzlibrary{calc} % support arrows in overlay \tikzstyle{every picture}+=[remember picture] \pagestyle{empty} \graphicspath{{figures/}} \newif\ifgridslides@grid %\gridslides@gridtrue \gridslides@gridfalse \newif\ifgridslides@boxes %\gridslides@boxestrue \gridslides@boxesfalse \ifgridslides@boxes% \tikzset{gridslides@box/.style={draw=blue}} \else \tikzset{gridslides@box/.style={}} \fi \def\gridslides@xoff{0} \def\gridslides@yoff{0} \long\def\gridslides@block(#1,#2,#3)#4{% \let\oldxoff\gridslides@xoff% \let\oldyoff\gridslides@yoff% \pgfmathsetmacro\xoff{\gridslides@xoff+#1}% \pgfmathsetmacro\yoff{\gridslides@yoff+#2}% \global\let\gridslides@xoff\xoff% \global\let\gridslides@yoff\yoff% \begin{tikzpicture}[overlay,yscale=-1,shift=(current page.north west)]% \node[gridslides@box,rectangle,anchor=north west,inner sep=0pt,text width=#3*4mm] at (4mm*\xoff,4mm*\yoff)% {% \begingroup% #4% \endgroup% };% \end{tikzpicture}% \global\let\gridslides@xoff\oldxoff% \global\let\gridslides@yoff\oldyoff% } \def\gridslides@fig(#1,#2,#3)#4{\gridslides@block(#1,#2,#3){\includegraphics[width=\textwidth]{#4}}} \long\def\gridslides@eq(#1,#2)#3{% \gridslides@block(#1,#2,32){% $\begin{aligned}#3\end{aligned}$% }% } \long\def\gridslides@txt(#1,#2)#3{\gridslides@block(#1,#2,32){\mbox{#3}}} \newcounter{gridslides@totalsteps} \newcounter{gridslides@step} \newcommand{\gridslides@setsteps}[1]{% \ifnum#1>\value{gridslides@totalsteps}% \setcounter{gridslides@totalsteps}{#1}% \fi% } \long\def\gridslides@from<#1->#2#3{% \gridslides@setsteps{#1}% \ifnum\value{gridslides@step}<#1% #3% \else% #2% \fi% } \long\def\gridslides@only<#1-#2>#3#4{% \gridslides@setsteps{#1}% \gridslides@setsteps{#2}% \ifnum\value{gridslides@step}<#1% #4% \else% \ifnum\value{gridslides@step}>#2% #4% \else% #3% \fi% \fi% } \long\def\alt<#1>#2#3{% \IfSubStr{#1}{-}{% \IfBeginWith{#1}{-}{% \gridslides@only<1#1>{#2}{#3}% }{% \IfEndWith{#1}{-}{% \gridslides@from<#1>{#2}{#3}% }{% \gridslides@only<#1>{#2}{#3}% }% }% }{% \gridslides@only<#1-#1>{#2}{#3}% }% } \long\def\only<#1>#2{\alt<#1>{#2}{}} \long\def\gridslides@blockhelper#1<#2>(#3)#4{\only<#2>{#1(#3){#4}}} \def\gridslides@defblock#1{% \long\expandafter\def\csname#1\endcsname{% \@ifnextchar<{\gridslides@blockhelper{\csname gridslides@#1\endcsname}}{\csname gridslides@#1\endcsname}% }% } \gridslides@defblock{block} \gridslides@defblock{fig} \gridslides@defblock{eq} \gridslides@defblock{txt} \long\def\gridslides@cmdhelper#1#2<#3>#4{\alt<#3>{#1{#4}}{#2{#4}}} \def\gridslides@cmd#1#2{% \expandafter\let\csname gridslides@#1\expandafter\endcsname\csname#1\endcsname% \long\expandafter\def\csname#1\endcsname{% \@ifnextchar<{\gridslides@cmdhelper{\csname gridslides@#1\endcsname}{#2}}{\csname gridslides@#1\endcsname}% }% } \newcommand{\rgb}[1]{\definecolor{gridslides@rgb}{HTML}{#1}\color{gridslides@rgb}} \gridslides@cmd{textbf}{\relax} \gridslides@cmd{textit}{\relax} \gridslides@cmd{emph}{\relax} \gridslides@cmd{underline}{\relax} \def\gridslides@ignore#1{} \gridslides@cmd{color}{\gridslides@ignore} \gridslides@cmd{rgb}{\gridslides@ignore} \newcounter{slide} \stepcounter{slide} \newcommand{\gridslides@page}[1]{% \setcounter{gridslides@totalsteps}{1}% \setcounter{gridslides@step}{0}% \setlength{\parindent}{0pt}% \setlength{\parskip}{0pt}% \loop\ifnum\value{gridslides@step}<\value{gridslides@totalsteps}% \stepcounter{gridslides@step}% \clearpage% \begingroup% #1% \endgroup% \repeat% \stepcounter{slide}% } \newcommand{\bg}[1]{% \fig(0,0,32){#1}% \ifgridslides@grid% \begin{tikzpicture}[overlay,yscale=-1,shift=(current page.north west)]% \begin{scope}[x=4mm,y=4mm]% \draw[gray,step=1,line width=0.1pt] (0,0) grid (32,24);% \draw[red,step=8,line width=1pt] (0,0) grid (32,24);% \end{scope}% \end{tikzpicture}% \fi% } \def\gridslides@style{} \def\theheadline{} \newcommand{\gridslides@slide}[2]{% \gridslides@page{% \global\def\theheadline{#1}% \gridslides@style% #2% \ifnum\value{gridslides@step}=1% \pdfbookmark[0]{\theheadline}{slide\theslide}% \fi \ifnum\value{gridslides@totalsteps}>1% \pdfbookmark[1]{Step \thegridslides@step}{slide\theslide.step\thegridslides@step}% \fi }% } \NewEnviron{slide}[1]{\gridslides@slide{#1}{\BODY}} \NewEnviron{style}{\global\let\gridslides@style\BODY} \NewEnviron{rawslide}{\gridslides@page{\BODY}} \newcommand{\institute}[1]{\newcommand\@institute{#1}} \newcommand{\theauthor}{\@author} \newcommand{\thedate}{\@date} \newcommand{\thetitle}{\@title} \newcommand{\theinstitute}{\@institute} % undefine some commands from article \let\tableofcontents\gridslides@undefined \let\addcontentsline\gridslides@undefined \let\paragraph\gridslides@undefined \let\subparagraph\gridslides@undefined \let\chapter\gridslides@undefined \let\section\gridslides@undefined \let\subsection\gridslides@undefined \let\subsubsection\gridslides@undefined \let\maketitle\gridslides@undefined \let\figure\gridslides@undefined \let\table\gridslides@undefined \let\pagestyle\gridslides@undefined \let\footnote\gridslides@undefined \let\bf\gridslides@undefined \let\it\gridslides@undefined \let\cal\gridslides@undefined \let\tt\gridslides@undefined \let\listoffigures\gridslides@undefined \let\listoftables\gridslides@undefined