summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/gridslides/gridslides.sty
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/gridslides/gridslides.sty
Initial commit
Diffstat (limited to 'macros/latex/contrib/gridslides/gridslides.sty')
-rw-r--r--macros/latex/contrib/gridslides/gridslides.sty235
1 files changed, 235 insertions, 0 deletions
diff --git a/macros/latex/contrib/gridslides/gridslides.sty b/macros/latex/contrib/gridslides/gridslides.sty
new file mode 100644
index 0000000000..65d8185c6f
--- /dev/null
+++ b/macros/latex/contrib/gridslides/gridslides.sty
@@ -0,0 +1,235 @@
+% Package: gridslides
+% Description: LaTeX package to create free form slides with blocks placed on a grid
+% File: gridslides.sty
+% Author: Daniel Mendler <mail@daniel-mendler.de>
+% 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