diff --git a/presentation/.gitignore b/presentation/.gitignore new file mode 100644 index 0000000..fb2fcde --- /dev/null +++ b/presentation/.gitignore @@ -0,0 +1,228 @@ +# ---> TeX +## Core latex/pdflatex auxiliary files: +*.aux +*.lof +*.log +*.lot +*.fls +*.out +*.toc +*.fmt +*.fot +*.cb +*.cb2 + +## Intermediate documents: +*.dvi +*-converted-to.* +# these rules might exclude image files for figures etc. +# *.ps +# *.eps +# *.pdf + +## Generated if empty string is given at "Please type another file name for output:" +.pdf + +## Bibliography auxiliary files (bibtex/biblatex/biber): +*.bbl +*.bcf +*.blg +*-blx.aux +*-blx.bib +*.run.xml + +## Build tool auxiliary files: +*.fdb_latexmk +*.synctex +*.synctex(busy) +*.synctex.gz +*.synctex.gz(busy) +*.pdfsync + +## Auxiliary and intermediate files from other packages: +# algorithms +*.alg +*.loa + +# achemso +acs-*.bib + +# amsthm +*.thm + +# beamer +*.nav +*.pre +*.snm +*.vrb + +# changes +*.soc + +# cprotect +*.cpt + +# elsarticle (documentclass of Elsevier journals) +*.spl + +# endnotes +*.ent + +# fixme +*.lox + +# feynmf/feynmp +*.mf +*.mp +*.t[1-9] +*.t[1-9][0-9] +*.tfm + +#(r)(e)ledmac/(r)(e)ledpar +*.end +*.?end +*.[1-9] +*.[1-9][0-9] +*.[1-9][0-9][0-9] +*.[1-9]R +*.[1-9][0-9]R +*.[1-9][0-9][0-9]R +*.eledsec[1-9] +*.eledsec[1-9]R +*.eledsec[1-9][0-9] +*.eledsec[1-9][0-9]R +*.eledsec[1-9][0-9][0-9] +*.eledsec[1-9][0-9][0-9]R + +# glossaries +*.acn +*.acr +*.glg +*.glo +*.gls +*.glsdefs + +# gnuplottex +*-gnuplottex-* +*.gnuploterrors + +# gregoriotex +*.gaux +*.gtex + +# hyperref +*.brf + +# knitr +*-concordance.tex +# TODO Comment the next line if you want to keep your tikz graphics files +*.tikz +*-tikzDictionary + +# listings +*.lol + +# makeidx +*.idx +*.ilg +*.ind +*.ist + +# minitoc +*.maf +*.mlf +*.mlt +*.mtc[0-9]* +*.slf[0-9]* +*.slt[0-9]* +*.stc[0-9]* + +# minted +_minted* +*.pyg + +# morewrites +*.mw + +# nomencl +*.nlo + +# pax +*.pax + +# sagetex +*.sagetex.sage +*.sagetex.py +*.sagetex.scmd + +# scrwfile +*.wrt + +# sympy +*.sout +*.sympy +sympy-plots-for-*.tex/ + +# pdfcomment +*.upa +*.upb + +# pythontex +*.pytxcode +pythontex-files-*/ + +# thmtools +*.loe + +# TikZ & PGF +*.dpth +*.md5 +*.auxlock + +# todonotes +*.tdo + +# easy-todo +*.lod + +# xindy +*.xdy + +# xypic precompiled matrices +*.xyc + +# endfloat +*.ttt +*.fff + +# Latexian +TSWLatexianTemp* + +## Editors: +# WinEdt +*.bak +*.sav + +# Texpad +.texpadtmp + +# Kile +*.backup + +# KBibTeX +*~[0-9]* + +# auto folder when using emacs and auctex +/auto/* + +# expex forward references with \gathertags +*-tags.tex + + +#TeXstudio +*.bak~ + +#project specific +presentation.pdf + +\.vscode/ diff --git a/presentation/beamerthemefhws.sty b/presentation/beamerthemefhws.sty new file mode 100644 index 0000000..a8729bd --- /dev/null +++ b/presentation/beamerthemefhws.sty @@ -0,0 +1,595 @@ +% Name : beamerthemefhws.sty +% Author : Markus Ebner (markus.ebner@student.fhws.de) +% Author : Séverin Lemaignan (severin.lemaignan@epfl.ch) +% Author : Benjamin Weiss (benjamin.weiss@kreatiefton.de) +% License : This file may be distributed and/or modified under the +% GNU Public License. + +\ProvidesPackage{beamerthemefhws} + +% SETUP MATH +\RequirePackage{bm} % standard math notation (fonts) +\RequirePackage{fixmath} % standard math notation (fonts) +\RequirePackage{amsfonts} % standard math notation (fonts) +\RequirePackage{amssymb} % standard math notation (fonts) +\RequirePackage{amsmath} % standard math notation (vectors/sets/...) +\RequirePackage{math} % standard math notation (vectors/sets/...) + +\usepackage{color} +\usepackage{etoolbox} +\usepackage{eso-pic} +\usepackage{tikz} +\usepackage{pgfkeys} + +\newif\if@doSectionPage +\@doSectionPagefalse +\DeclareOption{nosectionpages}{\@doSectionPagetrue} +\newif\if@dominted +\@domintedfalse +\DeclareOption{minted}{\@domintedtrue} +\ProcessOptions + +\mode + +%--------------------------------------------------------------------- +% TOC +%--------------------------------------------------------------------- +\useoutertheme[subsection=false,shadow]{miniframes} +\setbeamertemplate{section in toc}[sections numbered] +\setbeamertemplate{subsection in toc}[subsections numbered] + +%--------------------------------------------------------------------- +% custom commands +%--------------------------------------------------------------------- +\newcommand{\rightTextArrow}{→} +\newcommand{\quoted}[1]{›#1‹} +\newcommand{\doublequoted}[1]{»#1«} + +\RequirePackage{xspace} +\newcommand{\eg}{e.g.\xspace} +\newcommand{\etal}{\textit{et al.}\xspace} +\newcommand{\ie}{i.e.\xspace} +\newcommand{\etc}{etc.\xspace} +\newcommand{\vs}{\textit{vs.}\xspace} + +\RequirePackage{xstring} + +%--------------------------------------------------------------------- +% Itemize +%--------------------------------------------------------------------- +\setbeamertemplate{itemize item}{$\circ$} +\setbeamertemplate{itemize subitem}{\rightTextArrow} +\setbeamertemplate{itemize subsubitem}{--} + +\setlength{\parskip}{0.5em} + + +%--------------------------------------------------------------------- +% Background +%--------------------------------------------------------------------- +\setbeamertemplate{background}{ + \ifnum \value{page}=1 + \includegraphics[width=\pagewidth,height=\paperheight]{style/background.pdf} + \else + \includegraphics[width=\paperwidth,height=\paperheight]{style/slide-background.pdf} + \fi +} + +%--------------------------------------------------------------------- +% Colors +%--------------------------------------------------------------------- +\definecolor{FHWSBlack20}{rgb}{0.88,0.88,0.88} +\definecolor{FHWSBlack40}{rgb}{0.60,0.60,0.60} +\definecolor{FHWSBlack60}{rgb}{0.40,0.40,0.40} +\definecolor{FHWSBlack80}{rgb}{0.20,0.20,0.20} +\definecolor{FHWSOrange}{rgb}{0.92941176, 0.43137254902, 0} +\definecolor{FHWSGreen}{rgb}{0.56078, 0.8313725, 0} +\definecolor{FHWSBlue}{rgb}{0.0, 0.47843, 0.8} + +% Primary Colors +\definecolor{hriRed}{rgb}{0.882352941,0,0.098039216} +\definecolor{hriRedDark}{rgb}{0.588235294,0,0.058823529} +\definecolor{hriWarmGreyDark}{rgb}{0.274509804,0.254901961,0.235294118} +\definecolor{hriWarmGreyLight}{rgb}{0.666666667,0.647058824,0.62745098} + +% Secondary Colors +\definecolor{hriSec1}{rgb}{0,0.588235294,0.509803922} +\definecolor{hriSec1Dark}{rgb}{0,0.392156863,0.31372549} +\definecolor{hriSec1Comp}{rgb}{0.294117647,0.745098039,0.882352941} +\definecolor{hriSec1CompDark}{rgb}{0.196078431,0.490196078,0.568627451} + +\definecolor{hriSec2}{rgb}{0.607843137,0.764705882,0.156862745} +\definecolor{hriSec2Dark}{rgb}{0.411764706,0.490196078,0.098039216} +\definecolor{hriSec2Comp}{rgb}{0.254901961,0.156862745,0.509803922} +\definecolor{hriSec2CompDark}{rgb}{0.176470588,0.098039216,0.333333333} + +\definecolor{hriSec3}{rgb}{0.509803922,0.078431373,0.31372549} +\definecolor{hriSec3Dark}{rgb}{0.338345865,0.058823529,0.196078431} +\definecolor{hriSec3Comp}{rgb}{1,0.509803922,0} +\definecolor{hriSec3CompDark}{rgb}{0.666666667,0.333333333,0} + +% General +\setbeamercolor{titlepage text}{fg=white} +\setbeamercolor{normal text}{fg=hriWarmGreyDark} +\setbeamercolor{structure}{fg=hriWarmGreyDark} +\setbeamercolor{alerted text}{fg=hriRed} +\setbeamercolor{example text}{fg=white} +\setbeamercolor{copyright text}{fg=hriWarmGreyLight} +\setbeamercolor{palette primary}{fg=hriWarmGreyDark} +\setbeamercolor{palette secondary}{fg=hriWarmGreyDark,bg=FHWSBlack20} +\setbeamercolor{palette tertiary}{fg=white,bg=FHWSBlack80} +\setbeamercolor{palette quaternary}{fg=white, bg=FHWSOrange} +% Titlepage +\setbeamercolor{title}{parent=titlepage text} +\setbeamercolor{subtitle}{parent=titlepage text} +\setbeamercolor{date}{parent=titlepage text} +\setbeamercolor{author}{parent=titlepage text} +\setbeamercolor{institute}{parent=titlepage text} +% Sectionpages +\setbeamercolor{section title}{fg=FHWSBlack80, bg=FHWSBlack80} +% Content +\setbeamercolor{frametitle}{parent=palette quaternary} +% Blocks +\setbeamercolor{block title}{parent=palette quaternary} +\setbeamercolor{block body}{parent=palette secondary} +\setbeamercolor{block title example}{fg=white, bg=hriSec1Dark} +\setbeamercolor{block body example}{fg=white, bg=hriSec1} +\setbeamercolor{block title alerted}{fg=white, bg=hriRedDark} +\setbeamercolor{block body alerted}{fg=white, bg=hriRed} +% Notes +\setbeamercolor{note page}{fg=hriWarmGreyDark,bg=hriWarmGreyLight} +\setbeamercolor{note title}{fg=white, bg=hriWarmGreyDark} +\setbeamercolor{note date}{parent=note title} +% Page Number +\setbeamercolor{page number in head/foot}{fg=hriWarmGreyDark} + +%--------------------------------------------------------------------- +% Fonts +%--------------------------------------------------------------------- +\renewcommand\UrlFont{\bf} +% Titlepage +\setbeamerfont{title}{size=\fontsize{20}{20}} +\setbeamerfont{subtitle}{size=\fontsize{12}{14}} +\setbeamerfont{date}{size=\fontsize{8}{10}} +\setbeamerfont{author}{size=\fontsize{12}{15}} +\setbeamerfont{institute}{size=\fontsize{8}{10}} +% Section +\setbeamerfont{section title}{size=\Huge} +% Content +\setbeamerfont{frametitle}{size=\large} +\setbeamerfont{copyright text}{size=\tiny} +\setbeamerfont{block title}{family=\bf,size=\large} +\setbeamerfont{block title alerted}{family=\bf,size=\large} +\setbeamerfont{alerted text}{family=\bf} +% Captions +\setbeamerfont{caption name}{family=\bf} + +%--------------------------------------------------------------------- +% Titlepage +%--------------------------------------------------------------------- + +% Titlepage structure +\def\maketitle{\ifbeamer@inframe\titlepage\else{\frame[plain]{\titlepage}}\fi} + +\def\titlepage{ +\usebeamertemplate{title page} +} +\setbeamertemplate{title page} +{ + % Add background to title page + + \begin{minipage}[b][\paperheight]{\textwidth} + \vspace*{5mm} + \includegraphics[height=14mm]{style/FHWS}\par + \vspace*{5mm} + \ifx\insertsubtitle\@empty% + \else% + {\usebeamerfont{title}\usebeamercolor[fg]{title}\inserttitle\par}% + \fi% + \ifx\insertsubtitle\@empty% + \else% + {\usebeamerfont{subtitle}\usebeamercolor[fg]{subtitle}\insertsubtitle\par}% + \vspace*{5mm} + \fi% + \ifx\insertdate\@empty% + \else% + {\usebeamerfont{date}\usebeamercolor[fg]{date}\insertdate\par}% + \fi% + + \vfill + + \ifx\insertauthor\@empty% + \else% + {\usebeamerfont{author}\usebeamercolor[fg]{author}\insertauthor\par}% + \fi% + \ifx\insertinstitut\@empty% + \else% + \vspace*{3mm} + {\usebeamerfont{institute}\usebeamercolor[fg]{institute}\insertinstitute\par}% + \fi% + \vspace*{5mm} + \end{minipage} +} + +%--------------------------------------------------------------------- +% Sectionpages +%--------------------------------------------------------------------- + +% Make Sectionhead uppercase +\newcommand{\insertsectionHEAD}{% + \expandafter\insertsectionHEADaux\insertsectionhead} + \newcommand{\insertsectionHEADaux}[3]{\MakeUppercase{#3} +} + +\if@doSectionPage\@empty +\else +% Insert frame with section title at every section start +\AtBeginSection[] +{ +\begingroup +\setbeamertemplate{background}{} +\setbeamercolor{background canvas}{bg=FHWSBlack80} +\begin{frame}[plain] +\centering +\vfill\usebeamerfont{section title}\textcolor{white}{\insertsectionHEAD}\vfill +\end{frame} +\endgroup +} +\fi + +%--------------------------------------------------------------------- +% Frametitle +%--------------------------------------------------------------------- +\setbeamertemplate{frametitle} +{ +\begin{beamercolorbox}[wd=\paperwidth,leftskip=0.3cm,rightskip=0.3cm,ht=3ex,dp=1.5ex]{frametitle} + \usebeamerfont{frametitle}\MakeUppercase{\insertframetitle}% +\end{beamercolorbox} +} + +%--------------------------------------------------------------------- +% Footline +%--------------------------------------------------------------------- +\usenavigationsymbolstemplate{} % hides small icons in bottom right corner use to navigate the presentation +\setbeamertemplate{footline} +{% +\begin{beamercolorbox}[wd=\textwidth,ht=3ex,dp=1.5ex,leftskip=0.3cm,rightskip=0.3cm]{structure}% +\usebeamerfont{page number in head/foot}% +\hfill\insertframenumber% +\end{beamercolorbox}% +} + +%--------------------------------------------------------------------- +% Captions +%--------------------------------------------------------------------- +\setbeamertemplate{caption label separator}{: } + +%--------------------------------------------------------------------- +% Blocks +%--------------------------------------------------------------------- +\newcommand{\blockhline}{ + \vspace{-1ex} + \hspace{-0.5ex}\noindent\textcolor{FHWSBlack40}{\rule{\textwidth - 1ex}{0.8pt}} +} + +\setbeamertemplate{block begin} +{ + \setbeamercolor{item}{parent=block body} + \par\vskip\medskipamount% + \begin{beamercolorbox}[sep=.5ex,leftskip=0.5ex,rightskip=0.5ex]{block title} + \usebeamerfont*{block title}\insertblocktitle% + \end{beamercolorbox}% + {\parskip0pt\par}% + {\nointerlineskip\vskip-0.5pt}% + \usebeamerfont{block body}% + \begin{beamercolorbox}[sep=.5ex,leftskip=0.5ex,rightskip=0.5ex,vmode]{block body}% + \setlength{\abovedisplayskip}{0pt} + \setlength{\belowdisplayskip}{0pt} +} +\setbeamertemplate{block end} +{\end{beamercolorbox}\vskip\smallskipamount} + +\setbeamertemplate{block alerted begin} +{ + \setbeamercolor{item}{parent=block body alerted} + \par\vskip\medskipamount% + \begin{beamercolorbox}[sep=.5ex,leftskip=0.5ex,rightskip=0.5ex]{block title alerted} + \usebeamerfont*{block title alerted}\insertblocktitle% + \end{beamercolorbox}% + {\parskip0pt\par}% + {\nointerlineskip\vskip-0.5pt}% + \usebeamerfont{block body alerted}% + \begin{beamercolorbox}[sep=.5ex,leftskip=0.5ex,rightskip=0.5ex,vmode]{block body alerted}% +} +\setbeamertemplate{block alerted end} +{\end{beamercolorbox}\vskip\smallskipamount} + +\setbeamertemplate{block example begin} +{ + \par\vskip\medskipamount% + \begin{beamercolorbox}[sep=.5ex,leftskip=0.5ex,rightskip=0.5ex]{block title example} + \usebeamerfont*{block title example}\insertblocktitle% + \end{beamercolorbox}% + {\parskip0pt\par}% + {\nointerlineskip\vskip-0.5pt}% + \usebeamerfont{block body example}% + \begin{beamercolorbox}[sep=.5ex,leftskip=0.5ex,rightskip=0.5ex,vmode]{block body example}% +} +\setbeamertemplate{block example end} +{\end{beamercolorbox}\vskip\smallskipamount} + +%%%%%%%%%%%%%%%%%%%%%%%%%% Syntax coloring with minted %%%%%%%%%%%%%%%%%%%% +\if@dominted +\RequirePackage[cache]{minted} +\renewcommand{\theFancyVerbLine}{ + \sffamily\textcolor[rgb]{0.5,0.5,0.5}{\scriptsize\arabic{FancyVerbLine}}} + +\newminted{cpp}{frame=lines, + linenos=false, + fontsize=\small, + xleftmargin=1.8em} + +\newmintinline[cpp]{cpp}{fontsize=\small} + +\newminted{python}{frame=lines, + linenos=false, + fontsize=\small, + xleftmargin=1.8em} + +\newmintinline[python]{python}{fontsize=\small} + +\newminted{sh}{frame=lines, + linenos=false, + fontsize=\small, + xleftmargin=1.8em} + +\newmintinline[sh]{sh}{fontsize=\small} + +\newminted{xml}{frame=lines, + linenos=false, + fontsize=\small, + xleftmargin=1.8em} + +\newmintinline[xml]{xml}{fontsize=\small} +\fi + + +%--------------------------------------------------------------------- +% Images +%--------------------------------------------------------------------- + + +\newbox\mytempbox +\newdimen\mytempdimen + +\newcommand\graphicscopyright[3][]{% + \leavevmode\vbox{\vskip3pt\raggedright\setbox\mytempbox=\hbox{\includegraphics[#1]{#2}}% + \mytempdimen=\wd\mytempbox\box\mytempbox\par\vskip1pt% + \usebeamerfont{copyright text}{\usebeamercolor[fg]{copyright text}{\vbox{\hsize=\mytempdimen#3}}}\vskip3pt% +}} + +\pgfkeys{ + /background/.is family, /background, + default/.style = {scale = 1.0,color=white,caption=\empty}, + scale/.estore in = \bgScale, + color/.estore in = \bgColor, + caption/.estore in = \bgCaption, +} + +\newcommand\badge[1]{% + \begin{tikzpicture}[remember picture,overlay]% + \node [xshift=-1cm,yshift=-1.4cm] at (current page.north east){\includegraphics[width=2cm,height=2cm,keepaspectratio]{#1}};% + \end{tikzpicture}% +} + +\newcommand\fullbackground[2][]{% + \pgfkeys{/background, default, #1}% + \setbeamertemplate{background}{ + %\includegraphics[width=\paperwidth, height=\paperheight,keepaspectratio]{#1} + \begin{tikzpicture}[remember picture,overlay,background + rectangle/.style={fill=\bgColor}, show background rectangle] + \node at (current page.center){\includegraphics[width=\bgScale\paperwidth,height=\bgScale\paperheight,keepaspectratio]{#2}}; + \end{tikzpicture} + } +} + +\newcommand\imageframe[2][]{% + \pgfkeys{/background, default, #1}% + { + \setbeamertemplate{background canvas}{ + \begin{tikzpicture}[remember picture, overlay,background + rectangle/.style={fill=\bgColor}, show background rectangle] + \useasboundingbox (current page.north east) rectangle (current page.south west); + + \node at (current page.center){\includegraphics[width=\bgScale\paperwidth,height=\bgScale\paperheight,keepaspectratio]{#2}}; + \end{tikzpicture} + + } + \setbeamertemplate{background}{} + + \begin{frame}[plain] + \ifdefequal{\bgCaption}{\empty}{% + }{% + \begin{tikzpicture}[remember picture,overlay] + \node at (-1, -4.5) [anchor=south west,shape=rectangle,fill=hriSec3Dark, opacity=0.7, align=right, text width=0.6\paperwidth] + {\usebeamerfont{subtitle}\usebeamercolor[bg]{subtitle}\bgCaption\par}; + \end{tikzpicture} + }% + \end{frame} + } +} + +\newcommand\grid{ + \draw[help lines] (current page.south west) grid (14,10); + \foreach \x in {-5,...,5} { + \foreach \y in {-5,...,5} { + \node at (\x,\y) [anchor=south west,gray]{{\fontsize{1.2mm}{0.1em}\selectfont (\x,\y)}}; + } + } +} + +\newcommand\bgframe[2][]{% + { + \setbeamertemplate{background canvas}{ + \noindent\colorbox{black}{% + \parbox[c][\paperheight][c]{\paperwidth}{% + \ifstrempty{#1}{ + % #1 is empty + }{ + \centering + \includegraphics[width=\paperwidth,height=\paperheight,keepaspectratio]{#1} + } + } + } + } + \setbeamertemplate{background}{} + + \begin{frame}[plain] + #2 + \end{frame} + } +} + + +% for a video like: figs/video1.mpg, an image called figs/video1_thumb.jpg +% exists, it is used to preview the video. Otherwise a blank object is returned. +\newcommand{\includepreview}[1]{{ + \makeatletter + \filename@parse{#1} + \edef\videoThumb{\filename@area\filename@base_thumb.jpg}% + \makeatother + \IfFileExists{\videoThumb}{ + \begin{tikzpicture} + \node at (0, 0) {\includegraphics{\videoThumb}}; + \node[circle] at (1,5) {}; + \end{tikzpicture} + }{\phantom{a}} +}} + +% the optional argument is the aspect ratio +% (default to full-screen, ie 4:3 for Beamer) +% for instance, for 16:9 (9/16 = 0.56): \videoframe[0.56]{myvideo.webm} +\newcommand\videoframe[2][]{% +{ + \setbeamertemplate{background canvas}{ + \ifstrempty{#1}{ + % #1 is empty + \noindent\colorbox{black}{% + \parbox[c][\paperheight][c]{\paperwidth}{% + \href{run:#2}{\resizebox{\paperwidth}{\paperheight}{\includepreview{#2}}} + } + } + }{ + \noindent\colorbox{black}{% + \parbox[c][\paperheight][c]{\paperwidth}{% + \href{run:#2}{\resizebox{\paperwidth}{#1\paperwidth}{\includepreview{#2}}} + } + } + } + } + \setbeamertemplate{background}{} + \begin{frame}[plain] + \end{frame} +} +} + +\newcommand\video[3][]{% + \ifstrempty{#1}{ + % #1 is empty, we assume an aspect ratio of 16:9 + \href{run:#3}{\resizebox{#2}{#2*\real{0.56}}{\includepreview{#3}}} + }{ + \href{run:#3}{\resizebox{#2}{#2*\real{#1}}{\includepreview{#3}}} + } +} + +\newcommand\paper[1]{% + \setbeamertemplate{footline} + {% + \begin{beamercolorbox}[wd=\textwidth,ht=3ex,dp=1.5ex,leftskip=0.3cm,rightskip=0.3cm]{structure}% + \usebeamerfont{page number in head/foot}% + [#1]\mbox{}\hfill\insertframenumber% + \end{beamercolorbox}% + } +} + +\newcommand\licenseframe[1]{% + \begin{frame}[plain] + \centering + \vfill + \includegraphics[width=0.3\paperwidth]{style/by-sa} + + This presentation is released under the terms of the\\ + {\bf \href{http://creativecommons.org/licenses/by-sa/4.0/}{Creative Commons Attribution-Share Alike}} license. + + \vspace{1em} + \small You are free to reuse it and modify it as much as you want as long as\\ + \small (1) you mention me as being the original author,\\ + \small (2) you re-share your presentation under the same terms.\\ + + \normalsize\vspace{1em} + You can download the sources of this presentation here:\\ + {\bf\footnotesize\IfBeginWith{#1}{http}{\url{#1}}{\href{https://#1}{#1}}} + \end{frame} +} + +%%%%%%%%%%%%%%%%% Bubbles to add explanations + +\usetikzlibrary{shapes.callouts} + + +\usepackage{xparse} + +\tikzset{ + invisible/.style={opacity=0,text opacity=0}, + visible on/.style={alt=#1{}{invisible}}, + alt/.code args={<#1>#2#3}{% + \alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}} % \pgfkeysalso doesn't change the path + }, +} + +\NewDocumentCommand{\bubble}{r<> O{230} O{0.5cm} O{2cm} m m}{% +\tikz[remember picture, overlay]\node[align=center, fill=hriSec3Comp!60,font=\footnotesize, text width=#4, +opacity=0.8,text opacity=1,visible on=<#1>,rectangle callout,anchor=pointer,callout relative pointer={(#2:#3)}] +at (#5) {#6}; +} + +\NewDocumentCommand{\bubblemark}{O{-0.5ex} m}{% +\tikz[overlay,remember picture,baseline=#1] \node (#2) {}; +} +%%%%%%%%% Highlight (math) text by putting it in a red colorbox + +\NewDocumentCommand{\highlight}{r<> m}{% +\alt<#1>{\colorbox{red!50}{$#2$}}{#2} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Special coordinate system to refer to absolute page coordinates +% +% Taken from: http://tex.stackexchange.com/questions/89588/positioning-relative-to-page-in-tikz +\makeatletter +\def\parsecomma#1,#2\endparsecomma{\def\page@x{#1}\def\page@y{#2}} +\tikzdeclarecoordinatesystem{page}{ + \parsecomma#1\endparsecomma + \pgfpointanchor{current page}{north east} + % Save the upper right corner + \pgf@xc=\pgf@x% + \pgf@yc=\pgf@y% + % save the lower left corner + \pgfpointanchor{current page}{south west} + \pgf@xb=\pgf@x% + \pgf@yb=\pgf@y% + % Transform to the correct placement + \pgfmathparse{(\pgf@xc-\pgf@xb)/2.*\page@x+(\pgf@xc+\pgf@xb)/2.} + \expandafter\pgf@x\expandafter=\pgfmathresult pt + \pgfmathparse{(\pgf@yc-\pgf@yb)/2.*\page@y+(\pgf@yc+\pgf@yb)/2.} + \expandafter\pgf@y\expandafter=\pgfmathresult pt +} +\makeatother + + + +\mode + diff --git a/presentation/chapters/bib.tex b/presentation/chapters/bib.tex new file mode 100644 index 0000000..57936b6 --- /dev/null +++ b/presentation/chapters/bib.tex @@ -0,0 +1,81 @@ +\begin{frame}[fragile] + \frametitle{Publikationen - 2014} + \begin{itemize} + %\scriptsize + + %\item L. Köping, T. Mühsam, C. Ofenberg, B. Czech, M. Bernard, J. Schmer, und F. Deinzer. Indoor Navigation Us-ing Particle Filter and Sensor Fusion, Annual of Navigation, vol. 19, no. 2, pp. 31–40, December 2012. + + \item F. Ebner, F. Deinzer, L. Köping und M. Grzegorzek.\newline + \emph{Robust self-localization using Wi-Fi, step/turn-detection and recursive density estimation}.\newline + Int. Conference on Indoor Positioning and Indoor Navigation (IPIN), 2014 %International Conference on. IEEE, Okt. 2014, S. 627-635 + + \item Toni Fetzer, Frank Deinzer, Lukas Köping und Marcin Grzegorzek.\newline + \emph{Statistical indoor localization using fusion of depth-images and step detection}.\newline + Int. Conference on Indoor Positioning and Indoor Navigation (IPIN), 2014 %International Conference on. IEEE, Okt. 2014, S. 407-415 + + %\item Lukas Köping, Frank Deinzer. „Realidades Virtuales/Aumentadas para el Desarrollo Social: Experiencias Entre Europa y Latinoamerica“. 2014. Kap. Real-Time Indoor Localization for Augmented and Virtual Reality Applications. + %\item Francisco Serón, Carlos Vaz de Carvalho, Melanie Saul, Frank Deinzer, Roberto Guerrero, Juan Carlos Parra, Cristiano Costa und Sandro Rigo. „Realidades Virtuales/Aumentadas para el Desarrollo Social: Experiencias Entre Europa y Latinoamerica“. 2014. Kap. Virtual Reality, Augmented Reality and Ubiquitous Computing: Concepts, Technology and Practice. + + \item L. Köping, F. Ebner, M. Grzegorzek, F. Deinzer.\newline + \emph{Indoor Localization Using Step and Turn Detection Together with Floor Map Information}.\newline + FHWS Science Journal 1, 2014 + + \end{itemize} + \end{frame} + + \begin{frame}[fragile] + \frametitle{Publikationen - 2015/16} + \begin{itemize} + + %\item L. Köping, M. Grzegorzek, F. Deinzer, S. Bobek, M. Slazynski und G.J. Nalepa. Improving indoor localization by user feedback. Information Fusion (Fusion), 2015 18th International Conference on. IEEE, Juli 2015, S. 1053–1060 + \item F. Ebner, T. Fetzer, L. Köping, M. Grzegorzek, F. Deinzer.\newline + \emph{Multi Sensor 3D Indoor Localisation}.\newline + Int. Conference on Indoor Positioning and Indoor Navigation (IPIN), 2015 %International Conference on. IEEE, Oktober 2015, S. 1-11 + + \item T. Fetzer, F. Ebner, L. Köping, M. Grzegorzek, F. Deinzer.\newline + \emph{On Monte Carlo Smoothing in Multi Sensor Indoor Localisation}.\newline + Int. Conference on Indoor Positioning and Indoor Navigation (IPIN), 2016, %Interna-tional Conference on. IEEE, Oktober 2016 + + \item F. Ebner, T. Fetzer, F. Deinzer, M. Grzegorzek.\newline + \emph{On Prior Navigation Knowledge in Multi Sensor Indoor Localisation}.\newline + Int. Conference on Information Fusion (FUSION), 2016%, International Conference on. IEEE, Juli 2016 + + \end{itemize} + \end{frame} + + + \begin{frame}[fragile] + \frametitle{Publikationen - 2017} + \begin{itemize} + + \item Joaquín Torres-Sospedra, Antonio R. Jiménez, Stefan Knauth, Adriano Moreira, Yair Beer, Toni Fetzer, Viet-Cuong Ta, Raul Montoliu, Fernando Seco, Germán M. Mendoza-Silva, Oscar Belmonte, Athanasios Koukofikis, Maria João Nicolau, António Costa, Filipe Meneses, Frank Ebner, Frank Deinzer, Dominique Vaufreydaz, Trung-Kien Dao und Eric Castelli.\newline + \emph{The Smartphone-Based Offline Indoor Location Competition at IPIN 2016: Analysis and Future Work}.\newline + IEEE Sensors, 2017 + + \item Frank Ebner, Toni Fetzer, Frank Deinzer und Marcin Grzegorzek.\newline + \emph{On Wi-Fi Model Optimizations for Smartphone-Based Indoor Localization}.\newline + International Journal of Geo-Information (ISPRS), 2017. + + \item T. Fetzer, F. Ebner, L. Köping, M. Grzegorzek und F. Deinzer.\newline + \emph{Recovering From Sample Impoverishment in Context of Indoor Localisation}.\newline + International Conference on Indoor Positioning and Indoor Navigation (IPIN), 2017% Sapporo, Japan: IEEE, Sep. 2017, S. 1-8. + + \end{itemize} + \end{frame} + + \begin{frame}[fragile] + \frametitle{Publikationen - 2018} + \begin{itemize} + + \item M. Bullmann, T. Fetzer, F. Ebner, M. Grzegorzek und Frank Deinzer.\newline + \emph{Fast Kernel Density Estimation using Gaussian Filter Approximation}.\newline + 21st International Conference on Information Fusion (FUSION), 2018 %Cambridge, UK. Juli 2018. erscheint + \end{itemize} + + In Arbeit: + \begin{itemize} + + \item \emph{Smartphone-based Indoor Localization within a 13th Century Historic Building} + + \end{itemize} + \end{frame} diff --git a/presentation/lib/numberLine.tex b/presentation/lib/numberLine.tex new file mode 100644 index 0000000..e08e588 --- /dev/null +++ b/presentation/lib/numberLine.tex @@ -0,0 +1,61 @@ +\RequirePackage{environ} + +% ### DEFINE NumberLine ENVIRONMENT ### +% define numberLine/area parameters +\pgfkeys{/numberLine/area/.is family, /numberLine/area, + height/.estore in = \numberLineAreaHeight, + color/.estore in = \numberLineAreaColor, + opacity/.estore in = \numberLineAreaOpacity, + label/.store in = \numberLineAreaLabel, + textcolor/.store in = \numberLineAreaTextcolor, + textabove/.store in = \numberLineAreaTextPosition +} +\pgfkeys{/numberLine/area, default/.style = {height=0.2, color=orange, opacity=1, label=, textcolor=black, textabove=0.2ex}} + +% define numberLine/area parameters +\pgfkeys{/numberLine/point/.is family, /numberLine/point, + size/.estore in = \numberLinePointSize, + color/.estore in = \numberLinePointColor, + textcolor/.store in = \numberLinePointTextcolor, + textabove/.store in = \numberLinePointTextPosition +} +\pgfkeys{/numberLine/point, default/.style = {size=0.1, color=orange, textcolor=black, textabove=0.3ex}} + +% define environment +\NewEnviron{numberLine}[3][]{ + % Draw an xtick at (1: x-position, 2: label to display) + \newcommand{\xtick}[2]{ + \draw (##1,0.1) -- + (0,-0.2) node[below] {$##2$} + } + % Draw an area on the number-line (1: from x, 2: to x, 3: color) + \newcommand{\area}[3][]{ + \pgfkeys{/numberLine/area, default, ##1} + \begin{pgfonlayer}{areas} + \fill [\numberLineAreaColor,fill opacity=\numberLineAreaOpacity] (##2,-0.1) rectangle (##3,{-0.1 + \numberLineAreaHeight}) + node[pos=.5,yshift=\numberLineAreaTextPosition,label={[\numberLineAreaTextcolor]\numberLineAreaLabel}] {}; + \end{pgfonlayer} + } + % Draw a point on the number-line (1: x-position, 2: color, 3: size) + \newcommand{\point}[3][]{ + \pgfkeys{/numberLine/point, default, ##1} + \begin{pgfonlayer}{points} + \fill[\numberLinePointColor] (##2,0) circle (\numberLinePointSize) + node[above=\numberLinePointTextPosition,text=\numberLinePointTextcolor] {##3}; + \end{pgfonlayer} + } + + + \pgfdeclarelayer{areas} + \pgfdeclarelayer{points} + \pgfsetlayers{areas,main,points} + + \begin{tikzpicture}[#1] + \BODY + + %draw horizontal line above everything else (except the x-ticks) + \draw (#2,0) -- (#3,0); + %draw xticks above everything else + \foreach \x in {#2,...,#3} + \xtick{\x}{\x}; + \end{tikzpicture} +} \ No newline at end of file diff --git a/presentation/lib/pipeline.tex b/presentation/lib/pipeline.tex new file mode 100644 index 0000000..4b9d401 --- /dev/null +++ b/presentation/lib/pipeline.tex @@ -0,0 +1,44 @@ +\RequirePackage{environ} + +% Pipelines +\usepackage{calc} +\tikzset{% + pipelineStep/.style = {rectangle, draw, minimum width=5em, align=center, minimum height=2em}, + pipelineInput/.style = {coordinate, draw, circle, inner sep=0pt,minimum size=0.7cm}, + pipelineOutput/.style = {coordinate, draw, circle, inner sep=0pt,minimum size=0.7cm}, + pipelineConnection/.style = {draw, -latex'} +} + +\newcounter{previouspipelineelementindexcounter} +\newcounter{nextpipelineelementindexcounter} +\NewEnviron{pipeline}[1][]{ + \setcounter{previouspipelineelementindexcounter}{0} + \setcounter{nextpipelineelementindexcounter}{1} + + \newcommand{\pipelineInput}[2][]{ + \node[pipelineInput,##1] (step0) {##2}; + } + \newcommand{\pipelineElement}[2][]{ + \node[pipelineStep, right of=step\thepreviouspipelineelementindexcounter,##1](step\thenextpipelineelementindexcounter){##2}; + \path[pipelineConnection] (step\thepreviouspipelineelementindexcounter) -- (step\thenextpipelineelementindexcounter); + \addtocounter{previouspipelineelementindexcounter}{1} + \addtocounter{nextpipelineelementindexcounter}{1} + } + \newcommand{\pipelineOutput}[2][]{ + \node[pipelineOutput, right of=step\thepreviouspipelineelementindexcounter,##1](step\thenextpipelineelementindexcounter){##2}; + \path[pipelineConnection] (step\thepreviouspipelineelementindexcounter) -- (step\thenextpipelineelementindexcounter); + \addtocounter{previouspipelineelementindexcounter}{1} + \addtocounter{nextpipelineelementindexcounter}{1} + } + % Group a range of pipeline elements within a rectangle + % param 1: from (number of the first element) + % param 2: to (number of the last element) + % param 3: Title of the group + \newcommand{\pipelineGroupSegment}[4][]{ + \node[draw,inner sep=2mm,label=above:##4,fit=(step##2) (step##3),##1] {}; + } + + \begin{tikzpicture}[#1] + \BODY + \end{tikzpicture} +} \ No newline at end of file diff --git a/presentation/make.sh b/presentation/make.sh new file mode 100755 index 0000000..2a7ab10 --- /dev/null +++ b/presentation/make.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +PATH=$PATH:/mnt/vm/programme/texlive/bin/x86_64-linux/ +PATH=$PATH:/apps/texlive/bin/x86_64-linux +PATH=$PATH:/storage/data/vm/programme/texlive/bin/x86_64-linux + +lualatex presentation.tex + +#okular diss.pdf & + +#rm *.aux +#rm *.toc +#rm *.log diff --git a/presentation/math.sty b/presentation/math.sty new file mode 100644 index 0000000..6351779 --- /dev/null +++ b/presentation/math.sty @@ -0,0 +1,222 @@ +%% +%% This is file `math.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% math.dtx (with options: `package,version2') +%% +%% Copyright (C) 2000 by Dietrich Paulus. All rights reserved. +%% +%% +%% This file is part of the LME TeX package +%% +%% IMPORTANT NOTICE: +%% +%% You are not allowed to change this file. You may however copy this file +%% to a file with a different name and then change the copy. +%% +%% You are NOT ALLOWED to distribute this file alone. You are NOT ALLOWED +%% to take money for the distribution or use of this file (or a changed +%% version) except for a nominal charge for copying etc. +%% +%% You are allowed to distribute this file under the condition that it is +%% distributed together with all files mentioned below. +%% +%% If you receive only some of these files from someone, complain! +%% +%% Error Reports in case of UNCHANGED versions to +%% +%% Dietrich Paulus +%% Lehrstuhl f. Mustererkennung +%% D 91054 Erlangen +%% Internet: +%% +%% $Id: math.dtx,v 1.12 2003/05/14 15:17:34 deutsch Exp $ +%% Copyright (C) 2000 Dietrich Paulus +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{math} + [2002/02/13 v1.02 Math Package (LME)] +\def\twolang#1#2{#1} % ^^A Default +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%% +%% \iffalse meta-comment +%% =================================================================== +%% @LaTeX-package-file{ +%% author = {Dietrich Paulus}, +%% version = "$Revision: 1.12 $", +%% date = "$Date: 2003/05/14 15:17:34 $" +%% filename = "math.sty", +%% address = {Dietrich Paulus, +%% Martensstr. 3 \ +%% D-91058 Erlangen +%% telephone = "+49-9131-8527894", +%% email = "paulus@cs.fau.de", +%% codetable = "ISO/ASCII", +%% keywords = "LaTeX2e, \shipout", +%% supported = "yes", +%% docstring = "LaTeX package which defines a new hook +%% \EveryShipout". +%% } +%% =================================================================== +%% \fi +\RequirePackage{bm} +\def\abs#1{{\mathord{| #1 |}}} +\def\mod{{\mathbin{\rm mod}}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Das Folgende muss noch vervollst"andigt werden in der Dokumentation +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\renewcommand{\div}{{\mathbin{\rm div}}} +\def\ggT#1#2{{\mathord{{\rm ggT}\left({#1},{#2}\right)}}} +\def\kgV#1#2{{\mathord{{\rm kgV}\left({#1},{#2}\right)}}} +\def\floor#1{{\mathord{\left\lfloor #1 \right\rfloor}}} +\def\ceil#1{{\mathord{\left\lceil #1 \right\rceil}}} +\def\sign{{\mathord{{\rm sign}}}} +\def\Undefined{{\mathord{\perp}}} +\def\invers#1{{#1}^{-1}} +\def\defequal{{\mathbin{:=}}} +\def\Defequal{{\mathbin{=:}}} +\def\shouldbe{{\mathbin{\stackrel{\rm !}{=}}}} +\def\conjugate#1{\bar{#1}} +\makeatletter \def\argmax{\mathop{\operator@font argmax}} +\makeatletter \def\argmin{\mathop{\operator@font argmin}} +\def\defequivalent{{\mathbin{:\Leftrightarrow}}} +\def\Defequivalent{{\mathbin{\Leftrightarrow:}}} +\def\equivalent{{\mathbin{\Leftrightarrow}}} +\def\implies{{\mathbin{\Rightarrow}}} +\def\Implies{{\mathbin{\Leftarrow}}} +\def\existsone{{\mathop{\stackrel{.}{\exists}}}} +\def\logand{{\mathbin{\wedge}}} +\def\logor{{\mathbin{\vee}}} +\def\funv#1{{\mathord{\rm {#1}}}} +\def\defunvar#1#2{{#1}\mapsto{#2}} +\def\funbuild#1#2{\left\langle\defunvar{#1}{#2}\right\rangle} +\def\domain{{\mathord{\rm dom}}} +\def\range{{\mathord{\rm ran}}} +\def\image{{\mathord{\rm im}}} +\def\mapsinj{{\mathbin{\stackrel{\rm inj}{\longrightarrow}}}} +\def\mapssur{{\mathbin{\stackrel{\rm sur}{\longrightarrow}}}} +\def\mapsbij{{\mathbin{\stackrel{\rm bij}{\longrightarrow}}}} +\def\mapspartial{{\mathbin{\rightharpoonup}}} +\def\funprod{{\mathbin{\circ}}} +\def\defunran#1#2{{#1}\longrightarrow{#2}} +\def\depfunran#1#2{{#1}\mapspartial{#2}} +\def\defunction#1#2#3#4{\left\{\begin{array}{l}\defunran{#1}{#2}\\ \defunvar{#3}{#4}\end{array}\right.}%} +\def\depfunction#1#2#3#4{\left\{\begin{array}{l}\depfunran{#1}{#2}\\ \defunvar{#3}{#4}\end{array}\right.}%} + +\def\band{{\mathbin{\wedge}}} +\def\bor{{\mathbin{\vee}}} +\def\bxor{{\mathbin{\not\equiv}}} +\def\bnot#1{\bar{#1}} + +\def\vecpl{\left(} +\def\vecpr{\right)} +\def\matpl{\left(} +\def\matpr{\right)} +\def\vecprod{{\mathbin{\times}}} +\def\scalprod{{\mathbin{\cdot}}} +\def\tensorprod{{\mathbin{\otimes}}} +\def\matprod{\,} +\def\transpose#1{{#1}^{\rm T}} +\def\adjungate#1{{#1}^\ast} +\def\norm#1{{\mathord{\| #1 \|}}} +\def\determinant#1{{\mathord{\det\left( #1 \right)}}} +\def\unitvec#1{{\mathord{\vec{e}_{#1}}}} +\def\mat#1{\ensuremath{\bm#1}} +\def\vec#1{\ensuremath{\bm#1}} +\def\idmat#1{{\mat{{I\!d}}}_{#1}} + +\def\@endlist{listend} +\long\def\@parselist(#1)(#2){% 1:sepSymbol 2:List + % define loop for parsing list + \global\long\def\toendoflist##1,##2){% + \ifx##2\@endlist ##1 \else ##1 #1 \toendoflist##2) \fi + } + % execute loop + \expandafter\toendoflist#2,\@endlist) +} + +\long\def\rowvec(#1){{ \vecpl + \@parselist(,)(#1) +\vecpr }} + +\long\def\colvec(#1){{% + \vecpl + \begin{array}{c} + \expandafter\@parselist(\\)(#1) + \end{array} + \vecpr +}} +\def\Matrix(#1,#2){\left(\begin{array}{*{#2}{c}}} +\def\endMatrix{\end{array}\right)} +\def\setv#1{{#1}} % Nach LME Richtlinie: \cal nur fuer Strukturen +\long\def\set(#1){{\mathord{\left\{\@parselist(,)(#1)\right\}}}} +\def\seqv#1{{\mathord{\cal #1}}} +\long\def\sequence(#1){{\mathord{\left\langle\@parselist(,)(#1)\right\rangle}}} +\long\def\without#1(#2){{{#1}\setminus\set(#2)}} +\long\def\with#1(#2){{{#1}\setunion\set(#2)}} +\def\setunion{{\mathbin{\cup}}} +\def\setint{{\mathbin{\cap}}} +\def\setdisun{{\mathbin{\stackrel{.}{\setunion}}}} +\def\setprod{{\mathbin{\times}}} +\def\cardinality#1{{\mathord{\left| {#1} \right|}}} +\def\powerset#1{{\mathord{2^{#1}}}} + +\def\real{\mathord{\rm I\!R}} +\def\cardinal{\mathord{\rm I\!N}} +\def\cardzero{\mathord{\rm I\!N}_0} +\def\imaginary{\mathord{\rm I\!I}} +\def\integer{\mathord{\rm Z\!\!Z}} +\def\complex{{\mathord{\rm C}}} +\def\rational{{\mathord{\rm Q}}} + +\def\vecspace#1#2{{#1}^{#2}} +\def\matspace#1#2#3{{#1}^{\,({#2},{#3})}} +\def\funspace#1#2{{#2}^{#1}} + +\def\half{\frac{\scriptstyle 1}{\scriptstyle 2}} +\def\onethird{\frac{\scriptstyle 1}{\scriptstyle 3}} +\def\twothird{\frac{\scriptstyle 2}{\scriptstyle 3}} +\def\dfrac#1#2{\frac{\displaystyle #1}{\displaystyle #2}} +\def\tfrac#1#2{\frac{\textstyle #1}{\textstyle #2}} +\def\scfrac#1#2{\frac{\scriptstyle #1}{\scriptstyle #2}} +\def\scscfrac#1#2{\frac{\scriptscriptstyle #1}{\scriptscriptstyle #2}} + +\def\p#1{{\mathord{\sf #1}}} +\def\pti#1#2{{\mathord{\sf #1}_{\rm #2}}} +\def\ptline#1#2#3#4{\overline{{\sf #1}_{\rm #2}{\sf #3}}_{\rm #4}} + +\long\def\opolygon(#1){{\overline{\@parselist(\,)(#1)}}} +\long\def\cpolygon(#1,#2){{\overline{#1\,\@parselist(\,)(#2)\,#1}}} + +\def\D{\displaystyle} +\def\T{\textstyle} +\def\SC{\scriptstyle} +\def\SCSC{\scriptscriptstyle} + +\def\complexity#1{{${\rm O}(#1)$}} + +\def\laplacesym{{\mathord{\cal L}}} +\def\fouriersym{{\mathord{\rm FT}}} +\def\laplace#1{\laplacesym\{{#1}\}} +\def\fourier#1{\fouriersym\{{#1}\}} +\def\ilaplace#1{\invers{\laplacesym}\{{#1}\}} +\def\ifourier#1{\invers{\fouriersym}\{{#1}\}} + +\endinput +%% +%% End of file `math.sty'. diff --git a/presentation/presentation.tex b/presentation/presentation.tex new file mode 100644 index 0000000..be2f571 --- /dev/null +++ b/presentation/presentation.tex @@ -0,0 +1,111 @@ +%!TEX program = lualatex +%!TEX encoding = utf8 + +%-------------------------------------------------------------------------- +% Document setup +%-------------------------------------------------------------------------- +\documentclass[compress,aspectratio=169]{beamer} +%\usepackage{fontspec} +%\usepackage{unicode-math} +%\setmainfont{Latin Modern Roman} +\usepackage[utf8]{luainputenc} +\usepackage[T1]{fontenc} +\usepackage[english,ngerman]{babel} + +%-------------------------------------------------------------------------- +% Package dependencies +%-------------------------------------------------------------------------- +%\usepackage{pgfpages} % required for notes on second screen +\usepackage{graphicx} +\usepackage{amsmath} +\usepackage{amssymb} +%\usepackage{algpseudocode} +%\usepackage{algorithmicx} +%\usepackage{wasysym} +%\usepackage{tikz} %graph +\usepackage{siunitx} + +%\usetikzlibrary{arrows, arrows.meta, backgrounds, graphdrawing, graphs, positioning, decorations, decorations.markings, fit, quotes} +%\usegdlibrary{circular, layered, trees, force} + + +%-------------------------------------------------------------------------- +% Theme setup +%-------------------------------------------------------------------------- +\usetheme{fhws} +%\usefonttheme{professionalfonts} + + +%-------------------------------------------------------------------------- +% Macros +%-------------------------------------------------------------------------- +%\input{lib/numberLine.tex} +%\input{lib/pipeline.tex} +%\input{resources/macros.tex} +%\input{resources/problems.tex} +%\input{resources/symbols.tex} + + +%-------------------------------------------------------------------------- +% Document config +%-------------------------------------------------------------------------- +\title{Doktorandentreffen} +\subtitle{Forschungsgruppe: Indoor Navigation} +\date{\today} +\author{Markus Bullmann, Frank Ebner, Toni Fetzer} +\institute{Hochschule für angewandte Wissenschaften Würzburg-Schweinfurt} + +%-------------------------------------------------------------------------- +% Notes settings +%-------------------------------------------------------------------------- +%\setbeameroption{show notes on second screen=left} + + + +%-------------------------------------------------------------------------- +% Presentation +% For great usage instructions, have a look at this article: +% https://en.wikibooks.org/wiki/LaTeX/Presentations +%-------------------------------------------------------------------------- + +\begin{document} + + \maketitle + + % TODO: remove examples! + %\input{chapters/examples.tex} + + \input{chapters/bib} + + \begin{frame}[fragile] + \frametitle{Forschungsbereiche} + \begin{itemize} + \item + + + \end{itemize} + \end{frame} + + \begin{frame}[fragile] + \frametitle{Achievements} + %\begin{itemize} + + \begin{tabular}{lr} + University of Applied Sciences Würzburg-Schweinfurt (DE) & \SI{5.4}{\meter} \\ + Samsung, DMS R\&D Center (KR) \& R\&D Center (PL) & \SI{8.2}{\meter} \\ + ICT \& Beijing University (CN) & \SI{18.7}{\meter} \\ + RMIT University (AU) & \SI{44.1}{\meter} \\ + Xiamen University (CN) & \SI{55.7}{\meter} \\ + Institute of Computer Science, University of Bern (CH) & \SI{58.2}{\meter} \\ + \end{tabular} + + %\end{itemize} + \end{frame} + +\end{document} + + + + + + diff --git a/presentation/resources/macros.tex b/presentation/resources/macros.tex new file mode 100644 index 0000000..cbd82a8 --- /dev/null +++ b/presentation/resources/macros.tex @@ -0,0 +1,50 @@ +% Math +\renewcommand{\vec}[1]{\bm{#1}} +\newcommand{\mathtuple}[1]{\left<#1\right>} +\DeclareMathOperator\cost{cost} +\DeclareMathOperator\edgeCost{c} +\DeclareMathOperator\minimum{min} +\DeclareMathOperator\cheapest{billigst} +\DeclareMathOperator\nodeDegree{deg} + +% Some colors +\definecolor{darkpastelgreen}{rgb}{0.01, 0.75, 0.24} + + + + +% TikZ +\tikzstyle{thickArrow}=[line width=1mm, draw=black,-triangle 45,postaction={draw, line width=3mm, shorten >=4mm, -}] +% Allowes to draw a line parallel to an edge +% Example: +% 1. Declare a style in your graph: parallel/.style={decoration={sl,raise=-.75mm},decorate} +% 2. Use the style: \draw[-,parallel] (a) to (b); +% This draws a line parallel to the edge a--b +\pgfdeclaredecoration{sl}{initial}{ + \state{initial}[width=\pgfdecoratedpathlength-1sp]{ + \pgfmoveto{\pgfpointorigin} + } + \state{final}{ + \pgflineto{\pgfpointorigin} + } +} + + + +% Beamer +\newcommand{\pageItemNote}[2]{ + \only<#1>{ + \note{ + \begin{itemize} + #2 + \end{itemize} + } + } +} +\newcommand{\pageNote}[2]{ + \only<#1>{ + \note{ + #2 + } + } +} diff --git a/presentation/resources/problems.tex b/presentation/resources/problems.tex new file mode 100644 index 0000000..795769e --- /dev/null +++ b/presentation/resources/problems.tex @@ -0,0 +1,39 @@ +% GENERAL +\newcommand{\PROBLEMname}[1]{\textrm{#1}} + +\newcommand{\PROBLEMinputs}{\mathcal{D}} +\newcommand{\PROBLEMinput}{I} +\newcommand{\PROBLEMsolution}{\sigma} +\newcommand{\PROBLEMsolutionsFor}[1]{S(#1)} +\newcommand{\PROBLEMsolutionsForInput}{\PROBLEMsolutionsFor{\PROBLEMinput}} +\newcommand{\PROBLEMoptimalSolutionFor}[1]{\text{OPT}(#1)} +\newcommand{\PROBLEMoptimalSolutionForInput}{\PROBLEMoptimalSolutionFor{\PROBLEMinput}} +\newcommand{\PROBLEMinputLength}{|\PROBLEMinput|} +\newcommand{\PROBLEMlength}{n} + +% REDUCTION +\newcommand{\REDUCTION}[2]{$#1 \leq_{\textrm{T}} #2$} + +% GÜTE +\newcommand{\GUETEguaranteedAlgo}[1]{\rho_{#1}} +\newcommand{\GUETEguaranteed}{\GUETEguaranteedAlgo{\ALGOapprox}} +\newcommand{\GUETEguaranteedForInput}{\GUETEguaranteed(\PROBLEMinput)} +\newcommand{\GUETEguaranteedForLength}{\GUETEguaranteed(\PROBLEMlength)} +\newcommand{\GUETEdeviance}{\rho'_\ALGOapprox} +\newcommand{\GUETEworstCase}{\rho_A^{wc}} +\newcommand{\GUETEworstCaseForLength}{\GUETEworstCase(\PROBLEMlength)} + +% ERRORS +\newcommand{\ERRORrelative}{\epsilon_\ALGOapprox} +\newcommand{\ERRORrelativeForLength}{\ERRORrelative(\PROBLEMlength)} + +% Traveling Salesman Problem +\newcommand{\PROBLEMtsp}{\PROBLEMname{TSP}} +\newcommand{\PROBLEMtspOfGuete}[1]{\PROBLEMtsp[#1]} +\newcommand{\PROBLEMtspMetric}{\Delta\PROBLEMtsp} + +% Hamilton +\newcommand{\PROBLEMhamilton}{\PROBLEMname{HAMILTON}} + +% Minimal Spanning Tree +\newcommand{\PROBLEMmst}{MST} \ No newline at end of file diff --git a/presentation/resources/symbols.tex b/presentation/resources/symbols.tex new file mode 100644 index 0000000..437716e --- /dev/null +++ b/presentation/resources/symbols.tex @@ -0,0 +1,67 @@ +% GENERAL +\newcommand{\mathset}[1]{\vec{#1}} +\newcommand{\numbersystem}[1]{\mathbb{#1}} + +\newcommand{\numbersystemNatural}{\numbersystem{N}} +\newcommand{\numbersystemReal}{\numbersystem{R}} + +\newcommand{\optimalTour}{R^*} +\newcommand{\tour}{R} + + +% Limit-Notation +\newcommand{\LIMITbigO}{O} +\newcommand{\LIMITbigOmega}{\Omega} +\newcommand{\LIMITbigTheta}{\Theta} + +% NP / P +\newcommand{\NPnotP}{\textrm{NP} \not= \textrm{P}} + +% Algorithms +\newcommand{\ALGOapprox}{A} +\newcommand{\ALGOapproxSolutionForI}{\ALGOapprox(\PROBLEMinput)} + +% Graphs +\newcommand{\GRAPHfullyConnected}[1]{K_{#1}} +\newcommand{\GRAPHedges}{\vec{E}} +\newcommand{\GRAPHedgesCount}{|\GRAPHedges|} +\newcommand{\GRAPHvertices}{\vec{V}} +\newcommand{\GRAPHverticesCount}{|\GRAPHvertices|} +\newcommand{\GRAPHcost}{c} +\newcommand{\GRAPHcostOf}[2]{\GRAPHcost({#1},{#2})} +\DeclareMathOperator{\GRAPHneighbors}{\bm{\Gamma}} + +% Insert-Heuristics +\DeclareMathOperator\EH{EH} + +% Christofides +\DeclareMathOperator\CH{CH} + +% Vertexcolor +\newcommand{\GREEDYISstep}{t} +\DeclareMathOperator\GREEDYISdelete{lösch} +\newcommand{\GREEDYISdeletionStepSize}{\gamma_\GREEDYISstep} +\newcommand{\GREEDYISdeletedStepGoodNodes}{\kappa_\GREEDYISstep} +\newcommand{\GREEDYISnodeWithSmallestDeg}{u_\GREEDYISstep} +\newcommand{\GREEDYISindependentSet}{\vec{U}} +\newcommand{\GREEDYISindependentSetCount}{|\GREEDYISindependentSet|} +\newcommand{\GREEDYISoptimalIndependentSet}{\GREEDYISindependentSet^*} +\newcommand{\GREEDYISoptimalIndependentSetCount}{|\GREEDYISoptimalIndependentSet|} + + + +% Impossibletsp +\newcommand{\IMPOSSIBLETSPguete}{r} + + + +%------------- +% Algo-Names +%------------- + +% GreedyIS +\newcommand{\ALGOgreedyIS}{\textsc{GreedyIS}} +% GreedyCol +\newcommand{\ALGOgreedyColor}{\textsc{GreedyCol}} +% GreedyCol2 +\newcommand{\ALGOgreedyColorTwo}{\textsc{GreedyCol2}} \ No newline at end of file diff --git a/presentation/style/FHWS.pdf b/presentation/style/FHWS.pdf new file mode 100644 index 0000000..97369ca Binary files /dev/null and b/presentation/style/FHWS.pdf differ diff --git a/presentation/style/background.pdf b/presentation/style/background.pdf new file mode 100644 index 0000000..516447d Binary files /dev/null and b/presentation/style/background.pdf differ diff --git a/presentation/style/by-sa.pdf b/presentation/style/by-sa.pdf new file mode 100644 index 0000000..21f86f3 Binary files /dev/null and b/presentation/style/by-sa.pdf differ diff --git a/presentation/style/by-sa.svg b/presentation/style/by-sa.svg new file mode 100644 index 0000000..60b44e3 --- /dev/null +++ b/presentation/style/by-sa.svg @@ -0,0 +1,74 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/presentation/style/minted.sty b/presentation/style/minted.sty new file mode 100644 index 0000000..e8ac313 --- /dev/null +++ b/presentation/style/minted.sty @@ -0,0 +1,993 @@ +%% +%% This is file `minted.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% minted.dtx (with options: `package') +%% Copyright 2013--2014 Geoffrey M. Poore +%% Copyright 2010--2011 Konrad Rudolph +%% +%% 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. +%% +%% Additionally, the project may be distributed under the terms of the new BSD +%% license. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% The Current Maintainer of this work is Geoffrey Poore. +%% +%% This work consists of the files minted.dtx and minted.ins +%% and the derived file minted.sty. +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{minted}[2013/12/21 v2.0-alpha3 ] +\RequirePackage{keyval} +\RequirePackage{kvoptions} +\RequirePackage{fancyvrb} +\RequirePackage{float} +\RequirePackage{ifthen} +\RequirePackage{calc} +\RequirePackage{ifplatform} +\RequirePackage{pdftexcmds} +\RequirePackage{etoolbox} +\RequirePackage{xstring} +\RequirePackage{lineno} +\AtBeginDocument{\@ifpackageloaded{color}{}{\RequirePackage{xcolor}}} +\DeclareVoidOption{chapter}{\def\minted@float@within{chapter}} +\DeclareVoidOption{section}{\def\minted@float@within{section}} +\newboolean{minted@cache} +\DeclareVoidOption{cache}{% + \minted@cachetrue + \AtEndOfPackage{\ProvideDirectory{\minted@outputdir\minted@cachedir}}% +} +\StrSubstitute{\jobname}{ }{_}[\minted@jobname] +\StrSubstitute{\minted@jobname}{"}{}[\minted@jobname] +\StrSubstitute{\minted@jobname}{*}{-}[\minted@jobname] +\newcommand{\minted@cachedir}{.minted-\minted@jobname} +\let\minted@cachedir@windows\minted@cachedir +\define@key{minted}{cachedir}{% + \@namedef{minted@cachedir}{#1}% + \StrSubstitute{\minted@cachedir}{/}{\@backslashchar}[\minted@cachedir@windows]} +\let\minted@outputdir\@empty +\let\minted@outputdir@windows\@empty +\define@key{minted}{outputdir}{% + \@namedef{minted@outputdir}{#1/}% + \StrSubstitute{\minted@outputdir}{/}% + {\@backslashchar}[\minted@outputdir@windows]} +\newboolean{minted@langlinenos} +\DeclareVoidOption{langlinenos}{\minted@langlinenostrue} +\DeclareBoolOption{draft} +\ProcessKeyvalOptions* +\newcommand{\minted@infile}{\jobname.out.pyg} +\newcommand{\minted@cachefiles}{} +\newcommand{\minted@addcachefile}[1]{% + \expandafter\gdef\expandafter\minted@cachefiles\expandafter{% + \minted@cachefiles,#1}% + \expandafter\gdef\csname minted@current@#1\endcsname{}% +} +\newcommand{\minted@savecachefiles}{% + \immediate\write\@mainaux{% + \string\gdef\string\minted@oldcachefiles\string{% + \minted@cachefiles\string}}% +} +\newcommand{\minted@cleancache}{% + \ifthenelse{\boolean{minted@cache}}{% + \ifcsname minted@oldcachefiles\endcsname + \def\do##1{% + \ifthenelse{\equal{##1}{}}{}{% + \ifcsname minted@current@##1\endcsname\else + \DeleteFile[\minted@outputdir\minted@cachedir]{##1}% + \fi + }% + }% + \expandafter\docsvlist\expandafter{\minted@oldcachefiles}% + \else + \fi + }{}% +} +\ifthenelse{\boolean{minted@cache}}% + {\AtEndDocument{% + \ifthenelse{\boolean{minted@draft}}% + {\ifcsname minted@oldcachefiles\endcsname + \let\minted@cachefiles\minted@oldcachefiles + \minted@savecachefiles + \fi}% + {\minted@savecachefiles + \minted@cleancache}}% + }% + {}% +\ifwindows + \providecommand{\DeleteFile}[2][]{% + \ifthenelse{\equal{#1}{}}% + {\IfFileExists{#2}{\immediate\write18{del "#2"}}{}}% + {\IfFileExists{#1/#2}{% + \StrSubstitute{#1}{/}{\@backslashchar}[\minted@windir] + \immediate\write18{del "\minted@windir\@backslashchar #2"}}{}}} +\else + \providecommand{\DeleteFile}[2][]{% + \ifthenelse{\equal{#1}{}}% + {\IfFileExists{#2}{\immediate\write18{rm "#2"}}{}}% + {\IfFileExists{#1/#2}{\immediate\write18{rm "#1/#2"}}{}}} +\fi +\ifwindows + \newcommand{\ProvideDirectory}[1]{% + \StrSubstitute{#1}{/}{\@backslashchar}[\minted@windir] + \immediate\write18{if not exist "\minted@windir" mkdir "\minted@windir"}} +\else + \newcommand{\ProvideDirectory}[1]{% + \immediate\write18{mkdir -p "#1"}} +\fi +\newboolean{AppExists} +\newread\minted@appexistsfile +\newcommand{\TestAppExists}[1]{ + \ifwindows + \DeleteFile{\jobname.aex} + \immediate\write18{for \string^\@percentchar i in (#1.exe #1.bat #1.cmd) + do set >\jobname.aex >\jobname.aex} + %$ <- balance syntax highlighting + \immediate\openin\minted@appexistsfile\jobname.aex + \expandafter\def\expandafter\@tmp@cr\expandafter{\the\endlinechar} + \endlinechar=-1\relax + \readline\minted@appexistsfile to \minted@apppathifexists + \endlinechar=\@tmp@cr + \ifthenelse{\equal{\minted@apppathifexists}{}} + {\AppExistsfalse} + {\AppExiststrue} + \immediate\closein\minted@appexistsfile + \DeleteFile{\jobname.aex} + \immediate\typeout{file deleted} + \else + \immediate\write18{which #1 && touch \jobname.aex} + \IfFileExists{\jobname.aex} + {\AppExiststrue + \DeleteFile{\jobname.aex}} + {\AppExistsfalse} + \fi +} +\newcommand{\minted@optg}{} +\let\minted@lang\@empty +\newcommand{\minted@optlang}{} +\newcommand{\minted@optcmd}{} +\newcommand{\minted@checklang}{% + \ifcsname minted@optlang\minted@lang\endcsname\else + \expandafter\def\csname minted@optlang\minted@lang\endcsname{}% + \fi + \ifcsname minted@optlang\minted@lang @extra\endcsname\else + \expandafter\def\csname minted@optlang\minted@lang @extra\endcsname{}% + \fi +} +\newcommand{\minted@resetoptcmd}{% + \@namedef{minted@optcmd@extra}{}% + \let\minted@optcmd@autogobble\relax} +\newcommand{\minted@getoptg}[1]{% + \expandafter\detokenize% + \expandafter\expandafter\expandafter{\csname minted@optg@#1\endcsname}} +\newcommand{\minted@getoptlang}[1]{% + \expandafter\detokenize\expandafter\expandafter\expandafter{% + \csname minted@optlang\minted@lang @#1\endcsname}} +\newcommand{\minted@getoptcmd}[1]{% + \expandafter\detokenize% + \expandafter\expandafter\expandafter{\csname minted@optcmd@#1\endcsname}} +\newcommand{\minted@regoptg}[1]{% + \ifcsname minted@optg@#1@reg\endcsname\else + \expandafter\let\csname minted@optg@#1@reg\endcsname\@empty + \expandafter\def\expandafter\minted@optg\expandafter{% + \minted@optg\space\minted@getoptg{#1}}% + \fi +} +\newcommand{\minted@regoptlang}[1]{% + \ifcsname minted@optlang\minted@lang @#1@reg\endcsname\else + \ifcsname minted@optlang\minted@lang\endcsname\else + \expandafter\def\csname minted@optlang\minted@lang\endcsname{}% + \fi + \expandafter\let\csname minted@optlang\minted@lang @#1@reg\endcsname\@empty + \expandafter\let\expandafter\minted@optlang% + \csname minted@optlang\minted@lang\endcsname + \expandafter\def\expandafter\minted@optlang\expandafter{% + \minted@optlang\space\minted@getoptlang{#1}}% + \expandafter\let\csname minted@optlang\minted@lang\endcsname\minted@optlang + \let\minted@optlang\@empty + \fi +} +\newcommand{\minted@regoptcmd}[1]{% + \ifcsname minted@optcmd@#1@reg\endcsname\else + \expandafter\let\csname minted@optcmd@#1@reg\endcsname\@empty + \expandafter\def\expandafter\minted@optcmd\expandafter{% + \minted@optcmd\space\minted@getoptcmd{#1}}% + \expandafter\def\expandafter\minted@resetoptcmd\expandafter{% + \minted@resetoptcmd + \@namedef{minted@optcmd@#1}{}}% + \fi +} +\newcommand{\minted@define@opt}[4][]{% + \ifthenelse{\equal{#1}{}}% + {\define@key{minted@optg}{#2}{\@namedef{minted@optg@#2}{#3=#4}% + \@namedef{minted@optg@#2@val}{#4}% + \minted@regoptg{#2}}% + \define@key{minted@optlang}{#2}{% + \@namedef{minted@optlang\minted@lang @#2}{#3=#4}% + \@namedef{minted@optlang\minted@lang @#2@val}{#4}% + \minted@regoptlang{#2}}% + \define@key{minted@optcmd}{#2}{\@namedef{minted@optcmd@#2}{#3=#4}% + \@namedef{minted@optcmd@#2@val}{#4}% + \minted@regoptcmd{#2}}}% + {\define@key{minted@optg}{#2}[#1]{\@namedef{minted@optg@#2}{#3=#4}% + \@namedef{minted@optg@#2@val}{#4}% + \minted@regoptg{#2}}% + \define@key{minted@optlang}{#2}[#1]{% + \@namedef{minted@optlang\minted@lang @#2}{#3=#4}% + \@namedef{minted@optlang\minted@lang @#2@val}{#4}% + \minted@regoptlang{#2}}% + \define@key{minted@optcmd}{#2}[#1]{\@namedef{minted@optcmd@#2}{#3=#4}% + \@namedef{minted@optcmd@#2@val}{#4}% + \minted@regoptcmd{#2}}}% +} +\newcommand{\minted@namexdef}[1]{\expandafter\xdef\csname #1\endcsname} +\edef\minted@hashchar{\string#} +\edef\minted@lbracechar{\string{} +\edef\minted@rbracechar{\string}} +\edef\minted@dollarchar{\string$} +\edef\minted@ampchar{\string&} +\edef\minted@uscorechar{\string_} +\newcommand{\minted@bechar}{% + \begingroup + \let\#\minted@hashchar + \let\%\@percentchar + \let\{\minted@lbracechar + \let\}\minted@rbracechar + \let\$\minted@dollarchar + \let\&\minted@ampchar + \let\_\minted@uscorechar +} +\newcommand{\minted@eechar}{\endgroup} +\newcommand{\minted@define@opt@escchar}[4][]{% + \ifthenelse{\equal{#1}{}}% + {\define@key{minted@optg}{#2}{\minted@bechar% + \minted@namexdef{minted@optg@#2}{#3=#4}% + \minted@eechar% + \@namedef{minted@optg@#2@val}{#4}% + \minted@regoptg{#2}}% + \define@key{minted@optlang}{#2}{% + \minted@bechar% + \minted@namexdef{minted@optlang\minted@lang @#2}{#3=#4}% + \minted@eechar% + \@namedef{minted@optlang\minted@lang @#2@val}{#4}% + \minted@regoptlang{#2}}% + \define@key{minted@optcmd}{#2}{\minted@bechar% + \minted@namexdef{minted@optcmd@#2}{#3=#4}% + \minted@eechar% + \@namedef{minted@optcmd@#2@val}{#4}% + \minted@regoptcmd{#2}}}% + {\define@key{minted@optg}{#2}[#1]{\minted@bechar% + \minted@namexdef{minted@optg@#2}{#3=#4}% + \minted@eechar% + \@namedef{minted@optg@#2@val}{#4}% + \minted@regoptg{#2}}% + \define@key{minted@optlang}{#2}[#1]{% + \minted@bechar% + \minted@namexdef{minted@optlang\minted@lang @#2}{#3=#4}% + \minted@eechar% + \@namedef{minted@optlang\minted@lang @#2@val}{#4}% + \minted@regoptlang{#2}}% + \define@key{minted@optcmd}{#2}[#1]{\minted@bechar% + \minted@namexdef{minted@optcmd@#2}{#3=#4}% + \minted@eechar% + \@namedef{minted@optcmd@#2@val}{#4}% + \minted@regoptcmd{#2}}}% +} +\newcommand{\minted@define@optstyle}{% + \define@key{minted@optg}{style}{% + \@namedef{minted@optg@style}{-P style=##1 -P commandprefix=PYG##1}% + \minted@regoptg{style}\minted@regstyle{##1}}% + \define@key{minted@optlang}{style}{% + \@namedef{minted@optlang\minted@lang @style}% + {-P style=##1 -P commandprefix=PYG##1}% + \minted@regoptlang{style}\minted@regstyle{##1}}% + \define@key{minted@optcmd}{style}{% + \@namedef{minted@optcmd@style}{-P style=##1 -P commandprefix=PYG##1}% + \minted@regoptcmd{style}\minted@regstyle{##1}}% +} +\newcommand{\minted@patchZsq}[1]{% + \ifx\upquote@cmtt\minted@undefined\else + \ifx\encodingdefault\upquote@OTone + \ifx\ttdefault\upquote@cmtt + \expandafter\ifdefstring\expandafter{\csname PYG#1Zsq\endcsname}{\char`\'}% + {\expandafter\gdef\csname PYG#1Zsq\endcsname{\char13 }}{}% + \else + \expandafter\ifdefstring\expandafter{\csname PYG#1Zsq\endcsname}{\char`\'}% + {\expandafter\gdef\csname PYG#1Zsq\endcsname{\textquotesingle}}{}% + \fi + \else + \expandafter\ifdefstring\expandafter{\csname PYG#1Zsq\endcsname}{\char`\'}% + {\expandafter\gdef\csname PYG#1Zsq\endcsname{\textquotesingle}}{}% + \fi + \fi +} +\newcommand{\minted@regstyle}[1]{% + \ifcsname minted@stylereg@#1\endcsname\else + \expandafter\global\expandafter% + \let\csname minted@stylereg@#1\endcsname\@empty + \ifthenelse{\boolean{minted@cache}}% + {\IfFileExists{\minted@outputdir\minted@cachedir/#1.pygstyle}{}{% + \ifwindows + \immediate\write18{\MintedPygmentize\space -S #1 -f latex + -P commandprefix=PYG#1 + > "\minted@outputdir@windows\minted@cachedir@windows\@backslashchar#1.pygstyle"}% + \else + \immediate\write18{\MintedPygmentize\space -S #1 -f latex + -P commandprefix=PYG#1 + > "\minted@outputdir\minted@cachedir/#1.pygstyle"}% + \fi + }% + \begingroup + \let\def\gdef + \endlinechar=-1\relax + \input{\minted@outputdir\minted@cachedir/#1.pygstyle}% + \endgroup + \minted@addcachefile{#1.pygstyle}}% + {\ifwindows + \immediate\write18{\MintedPygmentize\space -S #1 -f latex + -P commandprefix=PYG#1 > "\minted@outputdir@windows\jobname.out.pyg"}% + \else + \immediate\write18{\MintedPygmentize\space -S #1 -f latex + -P commandprefix=PYG#1 > "\minted@outputdir\jobname.out.pyg"}% + \fi + \begingroup + \let\def\gdef + \endlinechar=-1\relax + \input{\minted@outputdir\jobname.out.pyg}% + \endgroup}% + \ifx\@onlypreamble\@notprerr + \minted@patchZsq{#1}% + \else + \minted@patchZsq{#1}% + \AtBeginDocument{\minted@patchZsq{#1}}% + \fi + \fi +} +\ifthenelse{\boolean{minted@draft}}{\renewcommand{\minted@regstyle}[1]{}}{} +\newcommand{\minted@define@switch}[3][]{ + \define@booleankey{minted@optg}{#2} + {\@namedef{minted@optg@#2}{#3}\minted@regoptg{#2}} + {\@namedef{minted@optg@#2}{#1}\minted@regoptg{#2}} + \define@booleankey{minted@optlang}{#2} + {\@namedef{minted@optlang\minted@lang @#2}{#3}\minted@regoptlang{#2}} + {\@namedef{minted@optlang\minted@lang @#2}{#1}\minted@regoptlang{#2}} + \define@booleankey{minted@optcmd}{#2} + {\@namedef{minted@optcmd@#2}{#3}\minted@regoptcmd{#2}} + {\@namedef{minted@optcmd@#2}{#1}\minted@regoptcmd{#2}} +} +\newcommand{\minted@define@extra}[1]{ + \define@key{minted@optg}{#1}{% + \expandafter\def\expandafter\minted@optg@extra\expandafter{% + \minted@optg@extra,#1=##1}} + \@namedef{minted@optg@extra}{} + \define@key{minted@optlang}{#1}{% + \ifcsname minted@optlang\minted@lang @extra\endcsname\else + \expandafter\def\csname minted@optlang\minted@lang @extra\endcsname{}% + \fi + \expandafter\let\expandafter\minted@optlang@extra% + \csname minted@optlang\minted@lang @extra \endcsname + \expandafter\def\expandafter\minted@optlang@extra\expandafter{% + \minted@optlang@extra,#1=##1}% + \expandafter\let\csname minted@optlang\minted@lang @extra\endcsname% + \minted@optlang@extra + \let\minted@optlang@extra\@empty}% + \@namedef{minted@optlang@extra}{} + \define@key{minted@optcmd}{#1}{% + \expandafter\def\expandafter\minted@optcmd@extra\expandafter{% + \minted@optcmd@extra,#1=##1}} + \@namedef{minted@optcmd@extra}{} +} +\newcommand{\minted@define@extra@switch}[1]{ + \define@booleankey{minted@optg}{#1} + {\expandafter\def\expandafter\minted@optg@extra\expandafter{% + \minted@optg@extra,#1}} + {\expandafter\def\expandafter\minted@optg@extra\expandafter{% + \minted@optg@extra,#1=false}} + \define@booleankey{minted@optlang}{#1} + {% + \ifcsname minted@optlang\minted@lang @extra\endcsname\else + \expandafter\def\csname minted@optlang\minted@lang @extra\endcsname{}% + \fi + \expandafter\let\expandafter\minted@optlang@extra% + \csname minted@optlang\minted@lang @extra\endcsname + \expandafter\def\expandafter\minted@optlang@extra\expandafter{% + \minted@optlang@extra,#1}% + \expandafter\let\csname minted@optlang\minted@lang @extra\endcsname% + \minted@optlang@extra + \let\minted@optlang@extra\@empty} + {% + \ifcsname minted@optlang\minted@lang @extra\endcsname\else + \expandafter\def\csname minted@optlang\minted@lang @extra\endcsname{}% + \fi + \expandafter\let\expandafter\minted@optlang@extra% + \csname minted@optlang\minted@lang @extra\endcsname + \expandafter\def\expandafter\minted@optlang@extra\expandafter{% + \minted@optlang@extra,#1=false}% + \expandafter\let\csname minted@optlang\minted@lang @extra\endcsname% + \minted@optlang@extra + \let\minted@optlang@extra\@empty} + \define@booleankey{minted@optcmd}{#1} + {\expandafter\def\expandafter\minted@optcmd@extra\expandafter{% + \minted@optcmd@extra,#1}} + {\expandafter\def\expandafter\minted@optcmd@extra\expandafter{% + \minted@optcmd@extra,#1=false}} +} +\minted@define@opt{encoding}{-P encoding}{#1} +\minted@define@opt{outencoding}{-P outencoding}{#1} +\minted@define@opt@escchar{escapeinside}{-O escapeinside}{"#1"} +\minted@define@opt{stripnl}{-P stripnl}{#1} +\minted@define@switch{python3}{-P python3=True} +\minted@define@switch[-P funcnamehighlighting=False]% + {funcnamehighlighting}{-P funcnamehighlighting} +\minted@define@switch{startinline}{-P startinline} +\ifthenelse{\boolean{minted@draft}}% + {\minted@define@extra{gobble}}% + {\minted@define@opt{gobble}{-F gobble:n}{#1}} +\minted@define@opt{codetagify}{-F codetagify:codetags}{#1} +\minted@define@opt{keywordcase}{-F keywordcase:case}{#1} +\minted@define@switch{texcl}{-P texcomments} +\minted@define@switch{texcomments}{-P texcomments} +\minted@define@switch{mathescape}{-P mathescape} +\ifthenelse{\boolean{minted@draft}}% + {\define@booleankey{FV}{linenos}{\@nameuse{FV@Numbers@left}}{}% + \minted@define@extra@switch{linenos}}% + {\minted@define@switch{linenos}{-P linenos}} +\minted@define@optstyle +\minted@define@extra{frame} +\minted@define@extra{framesep} +\minted@define@extra{framerule} +\minted@define@extra{rulecolor} +\minted@define@extra{numbersep} +\minted@define@extra{numbers} +\minted@define@extra{firstnumber} +\minted@define@extra{stepnumber} +\minted@define@extra{firstline} +\minted@define@extra{lastline} +\minted@define@extra{baselinestretch} +\minted@define@extra{xleftmargin} +\minted@define@extra{xrightmargin} +\minted@define@extra{fillcolor} +\minted@define@extra{tabsize} +\minted@define@extra{fontfamily} +\minted@define@extra{fontsize} +\minted@define@extra{fontshape} +\minted@define@extra{fontseries} +\minted@define@extra{formatcom} +\minted@define@extra{label} +\minted@define@extra@switch{numberblanklines} +\minted@define@extra@switch{showspaces} +\minted@define@extra@switch{resetmargins} +\minted@define@extra@switch{samepage} +\minted@define@extra@switch{showtabs} +\minted@define@extra@switch{obeytabs} +\minted@define@extra@switch{breaklines} +\minted@define@extra{breakindent} +\minted@define@extra@switch{breakautoindent} +\minted@define@extra{breaksymbol} +\minted@define@extra{breaksymbolsep} +\minted@define@extra{breaksymbolindent} +\let\minted@optcmd@bgcolor\@empty +\define@key{minted@optcmd}{bgcolor}{\@namedef{minted@optcmd@bgcolor}{#1}} +\newcommand{\minted@encoding}{% + \ifcsname minted@optcmd@encoding@val\endcsname + \csname minted@optcmd@encoding@val\endcsname + \else + \ifcsname minted@optlang\minted@lang @encoding@val\endcsname + \csname minted@optlang\minted@lang @encoding@val\endcsname + \else + \ifcsname minted@optg@encoding@val\endcsname + \csname minted@optg@encoding@val\endcsname + \else + UTF8% + \fi + \fi + \fi +} +\define@booleankey{minted@optg}{autogobble} + {\expandafter\let\csname minted@optg@autogobble\endcsname\@empty} + {\expandafter\let\csname minted@optg@autogobble\endcsname\relax} +\define@booleankey{minted@optlang}{autogobble} + {\expandafter\let\csname minted@optlang\minted@lang @autogobble\endcsname\@empty} + {\expandafter\let\csname minted@optlang\minted@lang @autogobble\endcsname\relax} +\define@booleankey{minted@optcmd}{autogobble} + {\expandafter\let\csname minted@optcmd@autogobble\endcsname\@empty} + {\expandafter\let\csname minted@optcmd@autogobble\endcsname\relax} +\newboolean{minted@autogobble} +\newcommand{\minted@set@autogobble}{% + \ifcsname minted@optg@autogobble\endcsname\else + \expandafter\let\csname minted@optg@autogobble\endcsname\relax + \fi + \ifcsname minted@optlang\minted@lang @autogobble\endcsname\else + \expandafter\let\csname minted@optlang\minted@lang @autogobble\endcsname\relax + \fi + \ifcsname minted@optcmd@autogobble\endcsname\else + \expandafter\let\csname minted@optcmd@autogobble\endcsname\relax + \fi + \expandafter\ifx\csname minted@optcmd@autogobble\endcsname\@empty + \setboolean{minted@autogobble}{true}% + \else + \expandafter\ifx\csname minted@optlang\minted@lang @autogobble\endcsname\@empty + \setboolean{minted@autogobble}{true}% + \else + \expandafter\ifx\csname minted@optg@autogobble\endcsname\@empty + \setboolean{minted@autogobble}{true}% + \else + \setboolean{minted@autogobble}{false}% + \fi + \fi + \fi +} +\let\FV@ListProcessLine@Orig\FV@ListProcessLine +\define@booleankey{FV}{breaklines}% + {\let\FV@ListProcessLine\FV@ListProcessLine@Break}% + {\let\FV@ListProcessLine\FV@ListProcessLine@Orig} +\newdimen\FV@BreakIndent +\define@key{FV}{breakindent}{\FV@BreakIndent=#1} +\fvset{breakindent=0pt} +\newboolean{FV@BreakAutoIndent} +\define@booleankey{FV}{breakautoindent}% + {\FV@BreakAutoIndenttrue}{\FV@BreakAutoIndentfalse} +\fvset{breakautoindent=true} +\define@key{FV}{breaksymbol}{\def\FancyVerbBreakSymbol{#1}} +\fvset{breaksymbol=\ensuremath{\hookrightarrow}} +\newdimen\FV@BreakSymbolSep +\define@key{FV}{breaksymbolsep}{\FV@BreakSymbolSep=#1} +\fvset{breaksymbolsep=10pt} +\newdimen\FV@BreakSymbolIndent +\settowidth{\FV@BreakSymbolIndent}{\ttfamily xxxx} +\define@key{FV}{breaksymbolindent}{\FV@BreakSymbolIndent=#1} +\newsavebox{\FV@LineBox} +\newsavebox{\FV@IndentBox} +\newsavebox{\FV@LinenoBox} +\let\FV@LineIndentChars\@empty +\def\FV@GetNextChar{\let\FV@NextChar=} +\def\FV@CleanRemainingChars#1\FV@Undefined{} +\def\FV@GetLineIndent{\afterassignment\FV@CheckChar\FV@GetNextChar} +\def\FV@CheckChar{% + \ifx\FV@NextChar\FV@Undefined + \let\FV@Next=\relax + \else + \expandafter\ifx\FV@NextChar\FV@Space + \g@addto@macro{\FV@LineIndentChars}{\FV@Space}% + \let\FV@Next=\FV@GetLineIndent + \else + \expandafter\ifx\FV@NextChar\FV@Tab + \g@addto@macro{\FV@LineIndentChars}{\FV@Tab}% + \let\FV@Next=\FV@GetLineIndent + \else + \let\FV@Next=\FV@CleanRemainingChars + \fi + \fi + \fi + \FV@Next +} +\newcommand{\FancyVerbFormatBreakSymbol}{% + \ifnum\value{linenumber}=1\relax\else\FancyVerbBreakSymbol\fi}% +\AtBeginEnvironment{Verbatim}{\lineskip=0pt\xdef\FV@theprevdepth{0pt}} +\def\FV@ListProcessLine@Break#1{% + \hbox to \hsize{% + \kern\leftmargin + \hbox to \linewidth{% + \sbox{\FV@LineBox}{\FancyVerbFormatLine{#1}}% + \ifdim\wd\FV@LineBox>\linewidth + \let\FV@theprevdepth@temp\FV@theprevdepth + \savebox{\FV@LineBox}{% + \begingroup + \vbox{\hsize=\linewidth + \raggedright + \prevdepth\FV@theprevdepth + \leftlinenumbers* + \setcounter{linenumber}{1}% + \let\thelinenumber\FancyVerbFormatBreakSymbol + \begin{internallinenumbers}% + \linenumbersep=\FV@BreakSymbolSep + \advance\hsize by -\FV@BreakIndent + \advance\linewidth by -\FV@BreakIndent + \noindent\hspace*{-\FV@BreakIndent}% + \ifdefempty{\FancyVerbBreakSymbol}{}{% + \advance\hsize by -\FV@BreakSymbolIndent + \advance\linewidth by -\FV@BreakSymbolIndent + \hspace*{-\FV@BreakSymbolIndent}}% + \ifthenelse{\boolean{FV@BreakAutoIndent}}% + {\let\FV@LineIndentChars\@empty + \FV@GetLineIndent#1\FV@Undefined + \savebox{\FV@IndentBox}{\FV@LineIndentChars}% + \advance\hsize by -\wd\FV@IndentBox + \advance\linewidth by -\wd\FV@IndentBox + \hspace*{-\wd\FV@IndentBox}% + }{}% + \FancyVerbFormatLine{#1}% + \end{internallinenumbers}% + \par\xdef\FV@theprevdepth{\the\prevdepth}}% + \endgroup + }% + \savebox{\FV@LinenoBox}{\FV@LeftListNumber}% + \vbox to\ht\FV@LineBox{% + \prevdepth\FV@theprevdepth@temp\FV@LeftListNumber\vfill}% + \FV@LeftListFrame + \null\hfill\usebox{\FV@LineBox}\hss + \FV@RightListFrame + \vbox to\ht\FV@LineBox{% + \prevdepth\FV@theprevdepth@temp\FV@RightListNumber\vfill}% + \else + \FV@LeftListNumber + \FV@LeftListFrame + \vbox{\hsize=\linewidth + \prevdepth\FV@theprevdepth + \noindent\FancyVerbFormatLine{#1}% + \par\xdef\FV@theprevdepth{\the\prevdepth}}\hss + \FV@RightListFrame + \FV@RightListNumber + \fi}% + \hss}} +\newsavebox{\minted@bgbox} +\newenvironment{minted@colorbg}[1]{ + %\setlength{\fboxsep}{-\fboxrule} + \def\minted@bgcol{#1} + \noindent + \begin{lrbox}{\minted@bgbox} + \begin{minipage}{\linewidth-2\fboxsep}} + {\end{minipage} + \end{lrbox}% + \colorbox{\minted@bgcol}{\usebox{\minted@bgbox}}} +\newwrite\minted@code +\newcommand{\minted@savecode}[1]{ + \immediate\openout\minted@code\jobname.pyg\relax + \immediate\write\minted@code{\expandafter\detokenize\expandafter{#1}}% + \immediate\closeout\minted@code} +\newcommand{\minted@write@detok}[1]{% + \immediate\write\FV@OutFile{\detokenize{#1}}} +\newcommand{\minted@FVB@VerbatimOut}[1]{% + \@bsphack + \begingroup + \FV@UseKeyValues + \FV@DefineWhiteSpace + \def\FV@Space{\space}% + \FV@DefineTabOut + \let\FV@ProcessLine\minted@write@detok + \immediate\openout\FV@OutFile #1\relax + \let\FV@FontScanPrep\relax + \let\@noligs\relax + \FV@Scan} +\newcommand{\MintedPygmentize}{pygmentize} +\newcommand{\minted@pygmentize}[2][\jobname.pyg]{% + \minted@checklang + \minted@set@autogobble + \ifthenelse{\boolean{minted@autogobble}}% + {\def\minted@codefile{\jobname.pyg}}% + {\def\minted@codefile{#1}}% + \def\minted@cmd{\MintedPygmentize\space -l #2 + -f latex -F tokenmerge + \minted@optg \space \csname minted@optlang\minted@lang\endcsname + \space \minted@optcmd \space -P "verboptions=\minted@getoptg{extra}% + \minted@getoptlang{extra}\minted@getoptcmd{extra}" + -o "\minted@outputdir\minted@infile" \space + "\minted@outputdir\minted@codefile"}% + % For debugging, uncomment: %%%% + % \immediate\typeout{\minted@cmd}% + % %%%% + \ifthenelse{\boolean{minted@cache}}% + {% + \ifx\XeTeXinterchartoks\minted@undefined + \ifthenelse{\boolean{minted@autogobble}}% + {\edef\minted@hash{\pdf@filemdfivesum{#1}% + \pdf@mdfivesum{\minted@cmd autogobble}}}% + {\edef\minted@hash{\pdf@filemdfivesum{#1}% + \pdf@mdfivesum{\minted@cmd}}}% + \else + \immediate\openout\minted@code\jobname.mintedcmd\relax + \immediate\write\minted@code{\minted@cmd}% + \ifthenelse{\boolean{minted@autogobble}}% + {\immediate\write\minted@code{autogobble}}{}% + \immediate\closeout\minted@code + %Cheating a little here by using ASCII codes to write `{` and `}` + %in the Python code + \def\minted@hashcmd{% + \detokenize{python -c "import hashlib; + hasher = hashlib.sha1(); + f = open(\"}\minted@outputdir\jobname.mintedcmd\detokenize{\", \"rb\"); + hasher.update(f.read()); + f.close(); + f = open(\"}\minted@outputdir#1\detokenize{\", \"rb\"); + hasher.update(f.read()); + f.close(); + f = open(\"}\minted@outputdir\jobname.mintedmd5\detokenize{\", \"w\"); + macro = \"\\edef\\minted@hash\" + chr(123) + hasher.hexdigest() + chr(125) + \"\"; + f.write(\"\\makeatletter\" + macro + \"\\makeatother\\endinput\n\"); + f.close();"}}% + \immediate\write18{\minted@hashcmd}% + \input{\minted@outputdir\jobname.mintedmd5}% + \fi + \ifwindows + \edef\minted@infile{% + \minted@cachedir@windows\@backslashchar\minted@hash.pygtex}% + \else + \edef\minted@infile{% + \minted@cachedir/\minted@hash.pygtex}% + \fi + \IfFileExists{\minted@cachedir/\minted@hash.pygtex}{}{% + \ifthenelse{\boolean{minted@autogobble}}{% + %Need a version of open() that supports encoding under Python 2 + \edef\minted@autogobblecmd{% + \detokenize{python -c "import sys; + import textwrap; + from io import open; + f = open(\"}\minted@outputdir#1\detokenize{\", \"r\", encoding=\"}\minted@encoding\detokenize{\"); + t = f.read(); + f.close(); + f = open(\"}\minted@outputdir\jobname.pyg\detokenize{\", \"w\", encoding=\"}\minted@encoding\detokenize{\"); + f.write(textwrap.dedent(t)); + f.close();"}% + }% + \immediate\write18{\minted@autogobblecmd}}{}% + \immediate\write18{\minted@cmd}}% + \expandafter\minted@addcachefile\expandafter{\minted@hash.pygtex}% + \minted@inputpyg}% + {% + \ifthenelse{\boolean{minted@autogobble}}{% + %Need a version of open() that supports encoding under Python 2 + \edef\minted@autogobblecmd{% + \detokenize{python -c "import sys; + import textwrap; + from io import open; + f = open(\"}\minted@outputdir#1\detokenize{\", \"r\", encoding=\"}\minted@encoding\detokenize{\"); + t = f.read(); + f.close(); + f = open(\"}\minted@outputdir\jobname.pyg\detokenize{\", \"w\", encoding=\"}\minted@encoding\detokenize{\"); + f.write(textwrap.dedent(t)); + f.close();"}% + }% + \immediate\write18{\minted@autogobblecmd}}{}% + \immediate\write18{\minted@cmd}% + \minted@inputpyg}% +} +\newcommand{\minted@inputpyg}{% + \ifthenelse{\equal{\minted@optcmd@bgcolor}{}}% + {}% + {\begin{minted@colorbg}{\minted@optcmd@bgcolor}}% + \input{\minted@outputdir\minted@infile}% + \ifthenelse{\equal{\minted@optcmd@bgcolor}{}}% + {}% + {\end{minted@colorbg}}% +} +\newcounter{minted@FancyVerbLineTemp} +\newcommand{\minted@langlinenoson}{% + \ifcsname c@minted@lang\minted@lang\endcsname\else + \newcounter{minted@lang\minted@lang}% + \fi + \setcounter{minted@FancyVerbLineTemp}{\value{FancyVerbLine}}% + \setcounter{FancyVerbLine}{\value{minted@lang\minted@lang}}% +} +\newcommand{\minted@langlinenosoff}{% + \setcounter{minted@lang\minted@lang}{\value{FancyVerbLine}}% + \setcounter{FancyVerbLine}{\value{minted@FancyVerbLineTemp}}% +} +\ifthenelse{\boolean{minted@langlinenos}}{}{% + \let\minted@langlinenoson\relax + \let\minted@langlinenosoff\relax +} +\newcommand{\setminted}[2][]{% + \ifthenelse{\equal{#1}{}}% + {\setkeys{minted@optg}{#2}}% + {\def\minted@lang{#1}\setkeys{minted@optlang}{#2}}% +} +\newcommand{\usemintedstyle}[2][]{\setminted[#1]{style=#2}} +\newrobustcmd{\mintinline}[2][]{% + \minted@resetoptcmd + \setkeys{minted@optcmd}{#1}% + \def\minted@lang{#2}% + \begingroup + \let\do\@makeother\dospecials + \catcode`\{=1 + \catcode`\}=2 + \catcode`\^^I=\active + \@ifnextchar\bgroup + {\minted@inline@iii}% + {\catcode`\{=12\catcode`\}=12 + \minted@inline@i}} +\def\minted@inline@i#1{% + \endgroup + \def\minted@inline@ii##1#1{% + \minted@inline@iii{##1}}% + \begingroup + \let\do\@makeother\dospecials + \minted@inline@ii} +\ifthenelse{\boolean{minted@draft}}% + {\newcommand{\minted@inline@iii}[1]{% + \endgroup + \def\minted@argretok{% + \begingroup + \everyeof{\noexpand}% + \endlinechar-1\relax + \let\do\@makeother\dospecials + \catcode`\ =\active + \catcode`\^^I=\active + \scantokens{#1}% + \endgroup}% + \begingroup + \expandafter\fvset\expandafter{\minted@optg@extra}% + \minted@checklang + \expandafter\let\expandafter\minted@optlang@extra\csname minted@optlang\minted@lang @extra\endcsname + \expandafter\fvset\expandafter{\minted@optlang@extra}% + \expandafter\fvset\expandafter{\minted@optcmd@extra}% + \FV@BeginVBox + \frenchspacing + \FV@SetupFont + \FV@DefineWhiteSpace + \FancyVerbDefineActive + \FancyVerbFormatCom + \FV@ObeyTabsInit + \hbox{\FancyVerbFormatLine{\minted@argretok}}% + \FV@EndVBox + \endgroup}}% + {\newcommand{\minted@inline@iii}[1]{% + \endgroup + \immediate\openout\minted@code\jobname.pyg\relax + \immediate\write\minted@code{\detokenize{#1}}% + \immediate\closeout\minted@code + \begingroup + \RecustomVerbatimEnvironment{Verbatim}{BVerbatim}{}% + \minted@pygmentize{\minted@lang}% + \endgroup}} +\ifthenelse{\boolean{minted@draft}}% + {\newcommand{\mint}[3][]{% + \def\minted@lang{#2}% + \DefineShortVerb{#3}% + \minted@resetoptcmd + \setkeys{minted@optcmd}{#1}% + \minted@langlinenoson + \begingroup + \expandafter\fvset\expandafter{\minted@optg@extra}% + \minted@checklang + \expandafter\let\expandafter\minted@optlang@extra\csname minted@optlang\minted@lang @extra\endcsname + \expandafter\fvset\expandafter{\minted@optlang@extra}% + \expandafter\fvset\expandafter{\minted@optcmd@extra}% + \SaveVerb[aftersave={% + \UndefineShortVerb{#3}% + \let\FV@Line\FV@SV@minted@verb + \FV@VerbatimBegin\FV@PreProcessLine\FV@VerbatimEnd + \endgroup + \UndefineShortVerb{#3}% + \minted@langlinenosoff + \@doendpe\global\@ignorefalse\ignorespaces}]{minted@verb}#3}}% + {\newcommand{\mint}[3][]{% + \def\minted@lang{#2}% + \DefineShortVerb{#3}% + \minted@resetoptcmd + \setkeys{minted@optcmd}{#1}% + \SaveVerb[aftersave={% + \UndefineShortVerb{#3}% + \minted@langlinenoson + \minted@savecode{\FV@SV@minted@verb}% + \minted@pygmentize{#2}% + \minted@langlinenosoff}]{minted@verb}#3}} +\ifthenelse{\boolean{minted@draft}}% + {\newenvironment{minted}[2][] + {\VerbatimEnvironment + \let\FVB@VerbatimOut\minted@FVB@VerbatimOut + \def\minted@lang{#2}% + \minted@resetoptcmd + \setkeys{minted@optcmd}{#1}% + \expandafter\fvset\expandafter{\minted@optg@extra}% + \minted@checklang + \expandafter\let\expandafter\minted@optlang@extra\csname minted@optlang\minted@lang @extra\endcsname + \expandafter\fvset\expandafter{\minted@optlang@extra}% + \expandafter\fvset\expandafter{\minted@optcmd@extra}% + \minted@langlinenoson + \begin{Verbatim}}% + {\end{Verbatim}% + \minted@langlinenosoff}}% + {\newenvironment{minted}[2][] + {\VerbatimEnvironment + \let\FVB@VerbatimOut\minted@FVB@VerbatimOut + \def\minted@lang{#2}% + \minted@resetoptcmd + \setkeys{minted@optcmd}{#1}% + \begin{VerbatimOut}[codes={\catcode`\^^I=12}]{\jobname.pyg}}% + {\end{VerbatimOut}% + \minted@langlinenoson + \minted@pygmentize{\minted@lang}% + \minted@langlinenosoff}} +\ifthenelse{\boolean{minted@draft}}% + {\newcommand{\inputminted}[3][]{% + \def\minted@lang{#2}% + \minted@resetoptcmd + \setkeys{minted@optcmd}{#1}% + \begingroup + \expandafter\fvset\expandafter{\minted@optg@extra}% + \minted@checklang + \expandafter\let\expandafter\minted@optlang@extra\csname minted@optlang\minted@lang @extra\endcsname + \expandafter\fvset\expandafter{\minted@optlang@extra}% + \expandafter\fvset\expandafter{\minted@optcmd@extra}% + \VerbatimInput{#3}% + \endgroup}}% + {\newcommand{\inputminted}[3][]{% + \def\minted@lang{#2}% + \minted@resetoptcmd + \setkeys{minted@optcmd}{#1}% + \minted@pygmentize[#3]{#2}}} +\newcommand{\newminted}[3][]{ + \ifthenelse{\equal{#1}{}} + {\def\minted@envname{#2code}} + {\def\minted@envname{#1}} + \newenvironment{\minted@envname} + {\VerbatimEnvironment + \begin{minted}[#3]{#2}} + {\end{minted}} + \newenvironment{\minted@envname *}[1] + {\VerbatimEnvironment\begin{minted}[#3,##1]{#2}} + {\end{minted}}} +\newcommand{\newmint}[3][]{ + \ifthenelse{\equal{#1}{}} + {\def\minted@shortname{#2}} + {\def\minted@shortname{#1}} + \expandafter\newcommand\csname\minted@shortname\endcsname[2][]{ + \mint[#3,##1]{#2}##2}} +\newcommand{\newmintedfile}[3][]{ + \ifthenelse{\equal{#1}{}} + {\def\minted@shortname{#2file}} + {\def\minted@shortname{#1}} + \expandafter\newcommand\csname\minted@shortname\endcsname[2][]{ + \inputminted[#3,##1]{#2}{##2}}} +\newcommand{\newmintinline}[3][]{% + \ifthenelse{\equal{#1}{}}% + {\def\minted@shortname{#2inline}}% + {\def\minted@shortname{#1}}% + \expandafter\newrobustcmd\csname\minted@shortname\endcsname{% + \begingroup + \let\do\@makeother\dospecials + \catcode`\{=1 + \catcode`\}=2 + \@ifnextchar[{\endgroup\minted@inliner[#3][#2]}% + {\endgroup\minted@inliner[#3][#2][]}}% + \def\minted@inliner[##1][##2][##3]{\mintinline[##1,##3]{##2}}% +} +\@ifundefined{minted@float@within} + {\newfloat{listing}{h}{lol}} + {\newfloat{listing}{h}{lol}[\minted@float@within]} +\newcommand{\listingscaption}{Listing} +\floatname{listing}{\listingscaption} +\newcommand{\listoflistingscaption}{List of listings} +\providecommand{\listoflistings}{\listof{listing}{\listoflistingscaption}} +\AtEndOfPackage{% + \ifthenelse{\boolean{minted@draft}}{}{% + \ifnum\pdf@shellescape=1\relax\else + \PackageError{minted}% + {You must invoke LaTeX with the + -shell-escape flag}% + {Pass the -shell-escape flag to LaTeX. Refer to the minted.sty + documentation for more information.}% + \fi + \TestAppExists{pygmentize} + \ifAppExists\else + \PackageError{minted}% + {You must have `pygmentize' installed + to use this package}% + {Refer to the installation instructions in the minted + documentation for more information.}% + \fi + \setminted{style=default}% + }% +} +\AtEndDocument{ + \ifx\XeTeXinterchartoks\minted@undefined + \else + \DeleteFile[\minted@outputdir]{\jobname.mintedcmd}% + \DeleteFile[\minted@outputdir]{\jobname.mintedmd5}% + \fi + \DeleteFile[\minted@outputdir]{\jobname.pyg}% + \DeleteFile[\minted@outputdir]{\jobname.out.pyg}% +} +%% \Finale +\endinput +%% +%% End of file `minted.sty'. diff --git a/presentation/style/slide-background.pdf b/presentation/style/slide-background.pdf new file mode 100644 index 0000000..1c86d99 Binary files /dev/null and b/presentation/style/slide-background.pdf differ