diff --git a/Events/2015 - Printing Stack Thesis Presentation/slides.pdf b/Events/2015 - Printing Stack Thesis Presentation/slides.pdf new file mode 100644 index 0000000..35479bb Binary files /dev/null and b/Events/2015 - Printing Stack Thesis Presentation/slides.pdf differ diff --git a/Events/2015 - Printing Stack Thesis Presentation/src/beamercolorthemeeonerc.sty b/Events/2015 - Printing Stack Thesis Presentation/src/beamercolorthemeeonerc.sty new file mode 100644 index 0000000..84e6d5b --- /dev/null +++ b/Events/2015 - Printing Stack Thesis Presentation/src/beamercolorthemeeonerc.sty @@ -0,0 +1,88 @@ +% Copyright 2007 by Till Tantau +% +% This file may be distributed and/or modified +% +% 1. under the LaTeX Project Public License and/or +% 2. under the GNU Public License. +% +% See the file doc/licenses/LICENSE for more details. + +\ProvidesPackageRCS $Header: beamercolorthemeeonerc.sty,v 1.4 2007/01/28 20:48:24 tantau Exp $ + + +\mode + +%% +%% define colors +%% +\xdefinecolor{eonercred}{RGB}{219,62,52} + +\xdefinecolor{ultralightred}{RGB}{250,220,216} +\xdefinecolor{verylightred}{RGB}{244,183,177} +\xdefinecolor{lightred}{RGB}{239,145,134} +\xdefinecolor{normalred}{RGB}{219,62,52} +\xdefinecolor{darkred}{RGB}{173,53,53} +\xdefinecolor{verydarkred}{RGB}{125,35,19} + +% Main colors +\setbeamercolor*{normal text}{fg=black} + +\setbeamercolor*{structure}{fg=eonercred} + +\setbeamercolor*{palette primary}{use=structure,fg=structure.fg,bg=lightred} +\setbeamercolor*{palette secondary}{use=structure,fg=structure.fg,bg=verylightred} +\setbeamercolor*{palette tertiary}{use=structure,fg=structure.fg,bg=ultralightred} +\setbeamercolor*{palette quaternary}{use=structure,fg=structure.fg,bg=ultralightred} + +% Outer structure +\setbeamercolor*{separation line}{bg=black} % Draw separation lines, part of default RWTH theme +\setbeamercolor{frametitle}{fg=black} +\setbeamercolor{title}{fg=eonerc} +\setbeamercolor{subtitle}{fg=black} +\setbeamercolor{author}{fg=black} +\setbeamercolor{date}{fg=black} +\setbeamercolor{section}{fg=black} + + + + +%% +%% settings for the title page +%% +\setbeamercolor{title in titlepage}{fg=eonercred} +\setbeamercolor{title}{fg=eonercred} +\setbeamercolor{block title}{fg=eonercred} +\setbeamercolor{title in head/foot}{fg=eonercred} +\setbeamercolor{text in footer}{fg=gray} +\setbeamercolor{subtitle}{fg=black} +\setbeamercolor{author in head/foot}{fg=black} +\setbeamercolor{institute in head/foot}{fg=eonercred} + + + +%% +%% settings for the outer theme +%% +\setbeamercolor{framenumber in head/foot}{} +\setbeamercolor{frametitle}{fg=black} +\setbeamercolor{section}{fg=black} + +%% +%% settings for the table of contents +%% +\setbeamercolor{section in toc}{fg=black} +\setbeamercolor{subsection in toc}{fg=black} + + +%% +%% settings for the inner theme (e.g. itemize) +%% +\setbeamercolor{enumerate item}{fg=eonercred} +\setbeamercolor{enumerate subitem}{fg=eonercred} +\setbeamercolor{enumerate subsubitem}{fg=eonercred} +\setbeamercolor{itemize item}{fg=eonercred} +\setbeamercolor{itemize subitem}{fg=eonercred} +\setbeamercolor{itemize subsubitem}{fg=eonercred} + +\mode + diff --git a/Events/2015 - Printing Stack Thesis Presentation/src/beamerfontthemeeonerc.sty b/Events/2015 - Printing Stack Thesis Presentation/src/beamerfontthemeeonerc.sty new file mode 100644 index 0000000..03c7e9a --- /dev/null +++ b/Events/2015 - Printing Stack Thesis Presentation/src/beamerfontthemeeonerc.sty @@ -0,0 +1,32 @@ +% Copyright 2007 by Till Tantau +% +% This file may be distributed and/or modified +% +% 1. under the LaTeX Project Public License and/or +% 2. under the GNU Public License. +% +% See the file doc/licenses/LICENSE for more details. + +\ProvidesPackageRCS $Header: beamerfontthemeeonerc.sty,v 1.13 2007/01/28 20:48:29 tantau Exp $ + + +\mode + +%% +%% settings for the title page +%% +\setbeamerfont{title in title page}{size=\Large, series=\bfseries} +\setbeamerfont{subtitle in title page}{size=\large, series=\bfseries} +\setbeamerfont{author in title page}{size=\normalsize, series=\bfseries} +\setbeamerfont{institute in title page}{size=\normalsize} +\setbeamerfont{date in title page}{size=\normalsize} + +%% +%% settings for the header and footer (outer theme) +%% +\setbeamerfont{text in footer}{size*={9pt}{10.8pt}} +\setbeamerfont{framenumber}{size=\small} +\setbeamerfont{frametitle}{size=\large, series=\bfseries} +\setbeamerfont{section}{size=\Large, series=\bfseries} + +\mode diff --git a/Events/2015 - Printing Stack Thesis Presentation/src/beamerinnerthemeeonerc.sty b/Events/2015 - Printing Stack Thesis Presentation/src/beamerinnerthemeeonerc.sty new file mode 100644 index 0000000..ac39183 --- /dev/null +++ b/Events/2015 - Printing Stack Thesis Presentation/src/beamerinnerthemeeonerc.sty @@ -0,0 +1,181 @@ +% Copyright 2007 by Till Tantau +% +% This file may be distributed and/or modified +% +% 1. under the LaTeX Project Public License and/or +% 2. under the GNU Public License. +% +% See the file doc/licenses/LICENSE for more details. + +\ProvidesPackageRCS $Header: beamerinnerthemeeonerc.sty,v 1.4 2007/07/23 20:48:30 tantau Exp $ + +\RequirePackage{marvosym} % for \MVRightArrow (used in: itemize subitem) +\RequirePackage{calc} + +\mode + +\defbeamertemplate{title page}{smallbanner}{ + % The white bar, fills 1/3rd + \usebeamercolor{title page bar} + \begin{tikzpicture}[overlay, remember picture] + \iftoggle{titlebanner}{% + \coordinate (bannerPos) at ($(current page.north west)+(0.5\paperwidth,-0.1665\paperheight)$); + \node[ + inner sep=0pt + ] (picture) at (bannerPos) {\includegraphics[height=.333\paperheight,width=\paperwidth]{\printtitlebanner}}; + }{% + \node [ + fill=eonercred, + minimum width=\paperwidth, + minimum height=0.333\paperheight, + anchor=north west, + ] (picture) at (current page.north west) {}; + } + \coordinate (picture.south west) at ($(current page.north west)+(0, -0.333\paperheight)$); + \coordinate (titlePos) at ($(picture.south west)+(2em, -1.0cm)$); + \node [ + anchor=west, + align=left, + text={eonercred}, + font={\usebeamerfont{title in title page}}, + ] (title) at (titlePos) {\inserttitle}; + \coordinate (subtitlePos) at ($(title.south west)+(0, -.3cm)$); + \node [ + anchor=west, + align=left, + text={black}, + font={\usebeamerfont{subtitle in title page}}, + ] (subtitle) at (subtitlePos) {\insertsubtitle}; + \coordinate (authorPos) at ($(subtitle.south west)+(0, -.6cm)$); + \node [ + anchor=west, + align=left, + text={black}, + font={\usebeamerfont{author in title page}}, + ] (author) at (authorPos) {\insertauthor}; + + \end{tikzpicture} + + % Print institute logo to the bottom of the page + \instlogobottom +} + +\defbeamertemplate{title page}{bigbanner}{ + % The white bar, fills 1/3rd + \usebeamercolor{title page bar} + \begin{tikzpicture}[overlay, remember picture] + \iftoggle{titlebanner}{% + \coordinate (bannerPos) at ($(current page.north west)+(0.5\paperwidth,-0.332\paperheight)$); + \node[ + inner sep=0pt + ] (picture) at (bannerPos) {\includegraphics[height=.666\paperheight,width=\paperwidth]{\printtitlebanner}}; + }{% + \node [ + fill=eonercred, + minimum width=\paperwidth, + minimum height=0.666\paperheight, + anchor=north west, + ] (picture) at (current page.north west) {}; + } + \coordinate (titlePos) at ($(picture.south west)+(2em, -1.0cm)$); + \iftoggle{subtitle}{% + \node [ + anchor=west, + align=left, + text={eonercred}, + font={\usebeamerfont{title in title page}}, + ] (title) at (titlePos) {\inserttitle{} -- \insertsubtitle{}}; + }{% + \node [ + anchor=west, + align=left, + text={eonercred}, + font={\usebeamerfont{title in title page}}, + ] (title) at (titlePos) {\inserttitle{}}; + } + \coordinate (authorPos) at ($(title.south west)+(0, -.3cm)$); + \node [ + anchor=west, + align=left, + text={black}, + font={\usebeamerfont{author in title page}}, + ] (author) at (authorPos) {\insertauthor}; + \end{tikzpicture} + + % Print institute logo to the bottom of the page + \instlogobottom +} + +%%% +% Title page +%%% +\iftoggle{bigbanner}{% + \setbeamertemplate{title page}[bigbanner]{} +}{% + \setbeamertemplate{title page}[smallbanner]{} +} + + +% +% Itemize/Enumerate Layout +% +%1st Layer: Square +\defbeamertemplate{itemize item}{layerOne}{\printBulletLayerOne} +\setbeamertemplate{itemize item}[layerOne] + +% 2nd Layer: Three bars +\defbeamertemplate{itemize subitem}{layerTwo}{\printBulletLayerTwo} +\setbeamertemplate{itemize subitem}[layerTwo] +\defbeamertemplate{enumerate subitem}{layerTwo}{\alph{enumii})} +\setbeamertemplate{enumerate subitem}[layerTwo] + +% 3rd Layer: Two bars +\defbeamertemplate{itemize subsubitem}{layerThree}{\printBulletLayerThree} +\setbeamertemplate{itemize subsubitem}[layerThree] +\defbeamertemplate{enumerate subsubitem}{layerThree}{\roman{enumiii})} +\setbeamertemplate{enumerate subsubitem}[layerThree] + + +\AtBeginSection[] % Do nothing for \section* +{ + \setbeamertemplate{navigation symbols}{} + \begin{frame}[plain] + \begin{columns} + \begin{column}{.05\paperwidth} + \end{column} + \begin{column}{.95\paperwidth} + + \frametitle{~} + \vspace{3cm} + \begin {beamercolorbox}[sep=0pt]{section} + \usebeamerfont{section}\insertsection + \end {beamercolorbox} + \instlogobottom + \end{column} + \end{columns} + \end{frame} +} + +\AtBeginDocument +{ + \iflanguage{ngerman}{\pdfbookmark[2]{Titelseite}{title}}{} + \iflanguage{english}{\pdfbookmark[2]{Title page}{title}}{} + + \frame{\titlepage} +} + +%% +%% Table of Content Layout +%% +\defbeamertemplate{section in toc}{acssquare}{% + \hspace*{1em}{\printBulletLayerOne}~~\inserttocsection% +} +\setbeamertemplate{section in toc}[acssquare] +\defbeamertemplate{subsection in toc}{acsequiv}{% + \hspace*{1em}\small\vspace{.5ex}\leftskip=1.2em% + {\printBulletLayerTwo}~~\inserttocsubsection\par% +} +\setbeamertemplate{subsection in toc}[acsequiv] + +\mode + diff --git a/Events/2015 - Printing Stack Thesis Presentation/src/beamerouterthemeeonerc.sty b/Events/2015 - Printing Stack Thesis Presentation/src/beamerouterthemeeonerc.sty new file mode 100644 index 0000000..168f472 --- /dev/null +++ b/Events/2015 - Printing Stack Thesis Presentation/src/beamerouterthemeeonerc.sty @@ -0,0 +1,119 @@ +\ProvidesPackageRCS $Header: beamerouterthemeeonerc.sty,v 1.9 2007/07/16 20:48:30 tantau Exp $ +\RequirePackage{calc} % needed for calculations of lengths + +\mode + +\setbeamersize{sidebar width right=0mm} % no right sidebar. +\setbeamersize{text margin right=1.9em} +\setbeamersize{text margin left=.025\paperwidth} + +% no sidebars +\defbeamertemplate*{sidebar right}{rwth theme}{} +\defbeamertemplate*{sidebar left}{rwth theme}{} + + +\defbeamertemplate*{frametitle}{rwth theme}[1][left]{} + + +%% +%% Definition of the headline +%% +\edef\sepLineDist{.025\paperwidth} +\edef\sepLineLength{\paperwidth-2*\sepLineDist} +\defbeamertemplate*{headline}{rwth theme}[1][left] +{ + \ifnum \insertpagenumber=1 + \else + \leavevmode% + % hbox is necessary for correct text positioning in frame + \hbox{% + \begin{beamercolorbox}[sep=0cm,ht=\headlineHeight, wd=\sepLineDist]{frametitle} + \end{beamercolorbox}% + } + + % the actual footer definition + \begin{tikzpicture}[remember picture, overlay] + % bottom line + \draw [] (toplineStart) -- (toplineEnd); + \coordinate (titleHelper) at ($(current page.north west)!(toplineStart)!(current page.north east)$); + \coordinate (titleAnchor) at ($(titleHelper)!.5!(toplineStart)$); + \node [ + anchor=west, + ] at (titleAnchor) {\usebeamerfont{frametitle}\strut\insertframetitle}; + \end{tikzpicture} + \fi +} + + +%% +%% Definition of the footline +%% +\iftoggle{shortpagenumbers}{% + \defbeamertemplate*{page numbering}{rwth theme}{% + \insertframenumber + } +}{% + \defbeamertemplate*{page numbering}{rwth theme}{% + \insertframenumber~\protect\iflanguage{ngerman}{von}{}\protect\iflanguage{english}{of}{}~\inserttotalframenumber + } +} +\newcommand{\nempty}[3]{\ifx#1\empty#3{}\else#2{}\fi} +\defbeamertemplate*{footer first line}{rwth theme}{% + \nempty{\insertshorttitle}{\insertshorttitle{}\enskip|\enskip}{}% + \nempty{\insertauthor}{\insertauthor{}\enskip|\enskip}{}% + \nempty{\insertshortinstitute}{\insertshortinstitute{}\enskip|\enskip}{}% +} +\defbeamertemplate*{footer second line}{rwth theme}{% + \insertdate +} +\edef\footlineTextDist{.01\paperwidth} +\defbeamertemplate*{footline}{rwth theme} +{ + \ifnum \insertpagenumber=1 + \else + \leavevmode% + % hbox is necessary for correct text positioning in frame + \hbox{% + \begin{beamercolorbox}[sep=0cm,ht=\footlineHeight, wd=\sepLineDist]{frametitle} + \end{beamercolorbox}% + } + + % the actual footer definition + \begin{tikzpicture}[remember picture, overlay] + \draw [] (bottomlineStart) -- (bottomlineEnd); + + % Page Numbering + \coordinate (pageNumberPosLot) at ($(current page.south east)!(bottomlineStart)!(current page.south west)$); + \coordinate (pageNumerAnchor) at ($(bottomlineStart)!(ercrwthLogo.north west)!(pageNumberPosLot)$); + \node [ + text=gray, + anchor=north west, + outer sep=0, + inner sep=0 + ] (pageNumber) at (pageNumerAnchor) {\usebeamertemplate{page numbering}}; + + % Footer Text 1st line + \coordinate (firstLineAnchor) at ($(pageNumber.north east)+(\footlineTextDist, 0)$); + \node [ + text=gray, + anchor=north west, + outer sep=0, + inner sep=0 + ] (footerFirstLine) at (firstLineAnchor) {\usebeamertemplate{footer first line}}; + + % Footer Text 2nd line + \coordinate (secondLineAnchor) at ($(intersection of footerFirstLine.north west--footerFirstLine.south west and ercrwthLogo.south west--ercrwthLogo.south east)$); + \node [ + text=gray, + anchor=south west, + outer sep=0, + inner sep=0 + ] (footerSecondLine) at (secondLineAnchor) {\usebeamertemplate{footer second line}}; + \end{tikzpicture} + \fi + + % Print institute logo to the bottom of the page + \instlogobottom +} + +\mode diff --git a/Events/2015 - Printing Stack Thesis Presentation/src/beamerthemeeonerc.sty b/Events/2015 - Printing Stack Thesis Presentation/src/beamerthemeeonerc.sty new file mode 100644 index 0000000..d54bb52 --- /dev/null +++ b/Events/2015 - Printing Stack Thesis Presentation/src/beamerthemeeonerc.sty @@ -0,0 +1,166 @@ +% Copyright 2007 by Till Tantau +% Copyright 2009 by Rainer Finocchiaro +% Copyright 2012 by Georg Wassen +% +% This file may be distributed and/or modified +% +% 1. under the LaTeX Project Public License and/or +% 2. under the GNU Public License. +% +% See the file doc/licenses/LICENSE for more details. + +\ProvidesPackageRCS $Header: beamerthemeeonerc.sty,v 0.1 2012/12/13 wassen Exp $ + +\RequirePackage{xspace} % for \xspace +\RequirePackage{etoolbox} + +\newtoggle{bigbanner} +\togglefalse{bigbanner} +\DeclareOption{bigbanner}{\toggletrue{bigbanner}} +\newtoggle{subtitle} +\togglefalse{subtitle} +\DeclareOption{subtitle}{\toggletrue{subtitle}} +\newtoggle{shortpagenumbers} +\DeclareOption{shortpagenumbers}{\toggletrue{shortpagenumbers}} +\ProcessOptions + + +%% +%% Use Arial as default font +%% +%\usepackage{helvet} +%\renewcommand{\familydefault}{phv} + +%% +%% include RWTH logo (for header) +%% +\ifthenelse{\boolean{outputPrintVersion}}{ + \logo{\includegraphics[height=5mm]{logos/eonerc_rwth}} +}{ + \logo{\textcolor{white}{\rule{5mm}{5mm}}} +} + + +%% +%% add new commands to set web and email address +%% (and, optionally, institute logo +%% +\newcommand*{\webaddress}[1]{} +\newcommand*{\printwebaddress}{www.rwth-aachen.de} +\renewcommand*{\webaddress}[1]{\renewcommand*{\printwebaddress}{#1}} + +\newcommand*{\email}[1]{} +\newcommand*{\printemail}{} +\renewcommand*{\email}[1]{\renewcommand*{\printemail}{\href{mailto:#1}{#1}\xspace}} + +\newcommand*{\instlogo}[1]{} +\newcommand*{\printinstlogo}{} +\renewcommand*{\instlogo}[1]{\renewcommand*{\printinstlogo}{#1}} + +\instlogo{\includegraphics[height=8mm]{logos/acs}} + +\newtoggle{titlebanner} +\togglefalse{titlebanner} +\newcommand*{\titlebanner}[1]{} +\newcommand*{\printtitlebanner}{} +\renewcommand*{\titlebanner}[1]{\toggletrue{titlebanner}\renewcommand*{\printtitlebanner}{#1}} + +\newcommand*{\instlogobottom}{ + \begin{tikzpicture}[overlay, remember picture] + % bottom line + \coordinate(bottomlineStart) at ($(current page.south west)+(\sepLineDist, \footlineHeight)$); + \coordinate(bottomlineEnd) at ($(bottomlineStart)+(\sepLineLength, 0)$); + \coordinate(toplineStart) at ($(current page.north west)+(\sepLineDist, -\headlineHeight)$) -- +(\sepLineLength, 0); + \coordinate(toplineEnd) at ($(toplineStart)+(\sepLineLength, 0)$); + + % RWTH logo + \coordinate (logoAnchorLot) at ($(current page.south west)!(bottomlineEnd)!(current page.south east)$); + \coordinate (logoAnchor) at ($(logoAnchorLot)!.5!(bottomlineEnd)$); + \node [anchor=east, outer sep=0, inner sep=0] (ercrwthLogo) at (logoAnchor) {\insertlogo}; + \end{tikzpicture} +} + +%% +%% the '\lastpage' command may be used to insert a 'running-out' slide +%% +\newcommand*{\lastpage}{ + \begin{frame}[plain,t] + \begin{columns} + \begin{column}{.05\paperwidth} + \end{column} + \begin{column}{.95\paperwidth} + \hfill + + \vspace{4cm} + \scriptsize + \protect\iflanguage{ngerman}{Vielen Dank f\"ur Ihre Aufmerksamkeit!}{} + \protect\iflanguage{english}{Thank you for your kind attention!}{} + + + \vspace{4ex} + \textbf{\insertauthor}\ifx\printemail\@empty\else{~--~{\color{eonercred}\printemail}}\fi + + \vspace{2ex} + Institute for Automation of Complex Power Systems\\ + E.ON Energy Research Center, RWTH Aachen University\\ + Mathieustra{\ss}e 10\\ + 52074 Aachen + + \vspace{2ex} + {\color{eonercred}\url{\printwebaddress}} + \instlogobottom + \end{column} + \end{columns} + \end{frame} +} + +\mode + +% Define some lengths +\newlength{\bulletHeight} +\setlength{\bulletHeight}{5pt} +\newlength{\bulletWidth} +\setlength{\bulletWidth}{5pt} +\newlength{\footlineHeight} +\setlength{\footlineHeight}{.75cm} +\newlength{\headlineHeight} +\setlength{\headlineHeight}{1.25cm} +\newlength{\backgroundHeight} +\setlength{\backgroundHeight}{\paperheight} +\addtolength{\backgroundHeight}{-\headlineHeight} +\addtolength{\backgroundHeight}{-\footlineHeight} + +%% +%% add some commands for itemize bullets +%% +\newcommand*{\bulletLayerOne}[1]{} +\newcommand*{\printBulletLayerOne}{} +\renewcommand*{\bulletLayerOne}[1]{\renewcommand*{\printBulletLayerOne}{#1}} +\bulletLayerOne{\includegraphics[height=\bulletHeight, width=\bulletWidth]{logos/bullet_layer_one}} + +\newcommand*{\bulletLayerTwo}[1]{} +\newcommand*{\printBulletLayerTwo}{} +\renewcommand*{\bulletLayerTwo}[1]{\renewcommand*{\printBulletLayerTwo}{#1}} +\bulletLayerTwo{\includegraphics[height=\bulletHeight, width=\bulletWidth]{logos/bullet_layer_two}} + +\newcommand*{\bulletLayerThree}[1]{} +\newcommand*{\printBulletLayerThree}{} +\renewcommand*{\bulletLayerThree}[1]{\renewcommand*{\printBulletLayerThree}{#1}} +\bulletLayerThree{\includegraphics[height=\bulletHeight, width=\bulletWidth]{logos/bullet_layer_three}} + +\newcommand*{\bulletLayerFour}[1]{} +\newcommand*{\printBulletLayerFour}{} +\renewcommand*{\bulletLayerFour}[1]{\renewcommand*{\printBulletLayerFour}{#1}} +\bulletLayerFour{\color{eonercred}$\bullet$} + +%% +%% include the other style files of the rwth theme +%% + +\usefonttheme{eonerc} % beamerfontthemerwth.sty +\usecolortheme{eonerc} % beamercolorthemerwth.sty +\useoutertheme{eonerc} % beamerouterthemerwth.sty +\useinnertheme{eonerc} % beamerinnerthemerwth.sty + +\mode + diff --git a/Events/2015 - Printing Stack Thesis Presentation/src/logos/bullet_layer_one.pdf b/Events/2015 - Printing Stack Thesis Presentation/src/logos/bullet_layer_one.pdf new file mode 100644 index 0000000..0a242ac --- /dev/null +++ b/Events/2015 - Printing Stack Thesis Presentation/src/logos/bullet_layer_one.pdf @@ -0,0 +1,69 @@ +%PDF-1.5 +% +3 0 obj +<< /Length 4 0 R + /Filter /FlateDecode +>> +stream +x-DZ @ >Sx` +_BHtwkz4Mc܉' +i@ +endstream +endobj +4 0 obj + 69 +endobj +2 0 obj +<< + /ExtGState << + /a0 << /CA 1 /ca 1 >> + >> +>> +endobj +5 0 obj +<< /Type /Page + /Parent 1 0 R + /MediaBox [ 0 0 83.737999 67.703003 ] + /Contents 3 0 R + /Group << + /Type /Group + /S /Transparency + /CS /DeviceRGB + >> + /Resources 2 0 R +>> +endobj +1 0 obj +<< /Type /Pages + /Kids [ 5 0 R ] + /Count 1 +>> +endobj +6 0 obj +<< /Creator (cairo 1.10.2 (http://cairographics.org)) + /Producer (cairo 1.10.2 (http://cairographics.org)) +>> +endobj +7 0 obj +<< /Type /Catalog + /Pages 1 0 R +>> +endobj +xref +0 8 +0000000000 65535 f +0000000466 00000 n +0000000182 00000 n +0000000015 00000 n +0000000161 00000 n +0000000254 00000 n +0000000531 00000 n +0000000658 00000 n +trailer +<< /Size 8 + /Root 7 0 R + /Info 6 0 R +>> +startxref +710 +%%EOF diff --git a/Events/2015 - Printing Stack Thesis Presentation/src/logos/bullet_layer_three.pdf b/Events/2015 - Printing Stack Thesis Presentation/src/logos/bullet_layer_three.pdf new file mode 100644 index 0000000..92f5110 Binary files /dev/null and b/Events/2015 - Printing Stack Thesis Presentation/src/logos/bullet_layer_three.pdf differ diff --git a/Events/2015 - Printing Stack Thesis Presentation/src/logos/bullet_layer_two.pdf b/Events/2015 - Printing Stack Thesis Presentation/src/logos/bullet_layer_two.pdf new file mode 100644 index 0000000..280e88a --- /dev/null +++ b/Events/2015 - Printing Stack Thesis Presentation/src/logos/bullet_layer_two.pdf @@ -0,0 +1,67 @@ +%PDF-1.5 +% +3 0 obj +<< /Length 4 0 R + /Filter /FlateDecode +>> +stream +xuɱ 0 D>Smp2#P@j QBޑ(e*EuOЪ*zøL40ǐU< }~SX/\l +endstream +endobj +4 0 obj + 83 +endobj +2 0 obj +<< + /ExtGState << + /a0 << /CA 1 /ca 1 >> + >> +>> +endobj +5 0 obj +<< /Type /Page + /Parent 1 0 R + /MediaBox [ 0 0 83.734001 67.703003 ] + /Contents 3 0 R + /Group << + /Type /Group + /S /Transparency + /CS /DeviceRGB + >> + /Resources 2 0 R +>> +endobj +1 0 obj +<< /Type /Pages + /Kids [ 5 0 R ] + /Count 1 +>> +endobj +6 0 obj +<< /Creator (cairo 1.10.2 (http://cairographics.org)) + /Producer (cairo 1.10.2 (http://cairographics.org)) +>> +endobj +7 0 obj +<< /Type /Catalog + /Pages 1 0 R +>> +endobj +xref +0 8 +0000000000 65535 f +0000000480 00000 n +0000000196 00000 n +0000000015 00000 n +0000000175 00000 n +0000000268 00000 n +0000000545 00000 n +0000000672 00000 n +trailer +<< /Size 8 + /Root 7 0 R + /Info 6 0 R +>> +startxref +724 +%%EOF diff --git a/Events/2015 - Printing Stack Thesis Presentation/src/pictures/apimon.png b/Events/2015 - Printing Stack Thesis Presentation/src/pictures/apimon.png new file mode 100644 index 0000000..fd71e11 Binary files /dev/null and b/Events/2015 - Printing Stack Thesis Presentation/src/pictures/apimon.png differ diff --git a/Events/2015 - Printing Stack Thesis Presentation/src/pictures/depends.png b/Events/2015 - Printing Stack Thesis Presentation/src/pictures/depends.png new file mode 100644 index 0000000..158dba6 Binary files /dev/null and b/Events/2015 - Printing Stack Thesis Presentation/src/pictures/depends.png differ diff --git a/Events/2015 - Printing Stack Thesis Presentation/src/pictures/glass.pdf b/Events/2015 - Printing Stack Thesis Presentation/src/pictures/glass.pdf new file mode 100644 index 0000000..0a59c58 Binary files /dev/null and b/Events/2015 - Printing Stack Thesis Presentation/src/pictures/glass.pdf differ diff --git a/Events/2015 - Printing Stack Thesis Presentation/src/pictures/office2007ros.png b/Events/2015 - Printing Stack Thesis Presentation/src/pictures/office2007ros.png new file mode 100644 index 0000000..9fd9519 Binary files /dev/null and b/Events/2015 - Printing Stack Thesis Presentation/src/pictures/office2007ros.png differ diff --git a/Events/2015 - Printing Stack Thesis Presentation/src/pictures/strings.png b/Events/2015 - Printing Stack Thesis Presentation/src/pictures/strings.png new file mode 100644 index 0000000..ef032fa Binary files /dev/null and b/Events/2015 - Printing Stack Thesis Presentation/src/pictures/strings.png differ diff --git a/Events/2015 - Printing Stack Thesis Presentation/src/pictures/title_small.jpg b/Events/2015 - Printing Stack Thesis Presentation/src/pictures/title_small.jpg new file mode 100644 index 0000000..7d7fc86 Binary files /dev/null and b/Events/2015 - Printing Stack Thesis Presentation/src/pictures/title_small.jpg differ diff --git a/Events/2015 - Printing Stack Thesis Presentation/src/slides.tcp b/Events/2015 - Printing Stack Thesis Presentation/src/slides.tcp new file mode 100644 index 0000000..e85c860 --- /dev/null +++ b/Events/2015 - Printing Stack Thesis Presentation/src/slides.tcp @@ -0,0 +1,12 @@ +[FormatInfo] +Type=TeXnicCenterProjectInformation +Version=4 + +[ProjectInfo] +MainFile=slides.tex +UseBibTeX=0 +UseMakeIndex=0 +ActiveProfile=LaTeX ⇨ PDF +ProjectLanguage=en +ProjectDialect=US + diff --git a/Events/2015 - Printing Stack Thesis Presentation/src/slides.tex b/Events/2015 - Printing Stack Thesis Presentation/src/slides.tex new file mode 100644 index 0000000..e7f956e --- /dev/null +++ b/Events/2015 - Printing Stack Thesis Presentation/src/slides.tex @@ -0,0 +1,433 @@ +%% +%% if lualatex is not used, compile to PDF 1.4 (compatibility to Adobe Acrobat) +%% +\RequirePackage{ifluatex} +\ifluatex +\else + \RequirePackage{pdf14} +\fi + +\documentclass[aspectratio=1610]{beamer} +%% +%% E.ON ERC Beamer Theme (layout based on E.ON ERC PowerPoint template) +%% by Simon Pickartz, Institute for Automation of Complex Power Systems, 2014 +%% spickartz@eonerc.rwth-aachen.de +%% based on RWTH Latex template +%% by Georg Wassen, Lehrstuhl für Betriebssysteme, 2013 +%% wassen@lfbs.rwth-aachen.de +%% +%% The templates are derived from the beamer documentation and the provided +%% templates, hence, the same licence applies: +%% +%% ---------------------------------------------------------------- +%% | This file may be distributed and/or modified | +%% | | +%% | 1. under the LaTeX Project Public License and/or | +%% | 2. under the GNU Public License. | +%% | | +%% | See the file doc/licenses/LICENSE for more details. | +%% ---------------------------------------------------------------- +%% +%% Version 0.1 03/28/2014 Initial presentation using this theme +%% Version 0.2 04/01/2014 First version to be published in the institute +%% + +\usepackage{ifthen} + +% Whether to output the Print version (with RWTH logo) or the public version +\newboolean{outputPrintVersion} +\setboolean{outputPrintVersion}{false} + +\usepackage[]{luainputenc} +\usepackage[english]{babel} +\usetheme[]{eonerc} + +\usepackage[T1]{fontenc} % Font encoding +\usepackage{lmodern} % Select Linux Modern Fonts +\usepackage{graphicx} % needed to include graphics +\beamertemplatenavigationsymbolsempty % Disable navigation symbols + +\usepackage{listings} +\usepackage{tikz} + +\usetikzlibrary{calc,positioning,fit,matrix,shadows,chains,arrows,shapes,spy,fadings,shadings} +\usepackage{pgfplots} +\usetikzlibrary{pgfplots.units,shapes.symbols,shapes.arrows} + +\tikzset{ + cf_base/.style={font=\sffamily\footnotesize, node distance=12mm, fill=white}, + cf_block/.style={cf_base, draw, rectangle, rounded corners, on grid, align=center}, + cf_data/.style={cf_base, draw, cylinder, aspect=0.2, on grid, shape border rotate=90]}, + cf_head/.style={font=\sffamily\bfseries\normalsize, on grid}, + cf_impl/.style={cf_base, fill=yellow!40}, + cf_label/.style={align=left, draw opacity=0, font=\sffamily\tiny}, + cf_line/.style={cf_base, draw=black, -latex}, + cf_skiplistitem/.style={cf_base, draw, rectangle split, rectangle split parts=#1, rectangle split empty part height=1.3ex, rectangle split empty part width=1ex, align=center}, + cf_onslide/.code args={<#1>#2}{\only<#1>{\pgfkeysalso{#2}}}, + cf_emphline/.style={line width=0.8pt}, + cf_blackbox/.style={cf_base, draw, rectangle, on grid, align=center, color=white, fill=black, minimum height=25mm, minimum width=50mm} +} + +\definecolor{windows_gray}{RGB}{212,208,200} +\definecolor{windows_blue}{RGB}{10,36,106} + +\newcommand\myheading[1]{{\Large\bfseries#1}\par\bigskip} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% configure title page and author information +%%------------------------------- +%% You can always provide a short version: \title[short]{long title} +%% title -- Title of the presentation +%% The title appears on the first page and may contain +%% a line break: \\ +%% The short title appears in the footer line +%% subtitle -- Appears below the title +%% titlegraphic -- Currently not supported +%% author -- Name of the author(s) +%% email -- E-Mail address of author (optional) +%% institute -- Name of the institution (e.g. chair) +%% webaddress -- Web address (default is www.rwth-aachen.de), +%% (see slide generated with \lastpage) +%% date -- Date of the presentation +%% (or use \date to insert the date of the PDF generation) +%% subject -- This is only for the PDF meta data +%% keywords -- This is only for the PDF meta data +%% logo -- Logo, don't change (given by coporate identity templates) +\title[Printing Stack for the ReactOS Operating System]{Analysis, Design and Implementation of a Printing Stack \\for the Open-Source ReactOS Operating System} +\titlebanner{pictures/title_small} +\subtitle{Bachelor Thesis Presentation} +\author{Colin Finck} +\email{colin.finck@rwth-aachen.de} % optionally +\institute[ACS]{Automation of Complex Power Systems} +\webaddress{www.eonerc.rwth-aachen.de} % overrides rwth-aachen.de +\date{October 7, 2015} +\subject{Analysis, Design and Implementation of a Printing Stack for the Open-Source ReactOS Operating System} +\keywords{ReactOS, Operating Systems, Printing, Reverse Engineering} + +\begin{document} + +\begin{frame}{Agenda} + \tableofcontents +\end{frame} + +\section{Basics} + +\subsection{The ReactOS Operating System} +\begin{frame}{The ReactOS Operating System} + \myheading{Goal: Open-Source Desktop Operating System for the Mass} + + \begin{itemize} + \item Fully compatible to applications and drivers written for Microsoft Windows + \item Customizable + \item Trustworthy + \end{itemize} + + \bigskip + \pause + + But lacking Printing abilities prior to this work! +\end{frame} + +\begin{frame}{The ReactOS Operating System} + \centering + \includegraphics{pictures/office2007ros} +\end{frame} + +\subsection{Technical Terms} +\begin{frame}{Technical Terms} + \begin{itemize} + \item \textbf{API} \\ + Official and documented interface to let a software developer make use of a component + \bigskip + + \item \textbf{GDI} \\ + Windows component for drawing text and graphics on the screen and on paper + \bigskip + + \item \textbf{Spooler} \\ + Buffers concurrent print requests from multiple applications and sends them,\\ + one after another, to the Printer + \bigskip + \end{itemize} +\end{frame} + +\subsection{Microsoft Windows Printing Stack} +\begin{frame}{Microsoft Windows Printing Stack} + \centering + \begin{tikzpicture} + \node [cf_block, cf_impl] (App) {Application}; + \node [cf_block, below left = 15mm of App] (gdi32) {GDI}; + \node [cf_block, cf_impl, below = 22mm of App] (winspool) {Spooler API}; + \path [cf_line, dotted] (App) -- (gdi32); + \path [cf_line, dotted] (App) -- (winspool); + \path [cf_line] (gdi32) -- (winspool); + + \uncover<2->{ + \node [cf_block, cf_impl, below = of winspool] (spoolsv) {Spooler Server}; + \path [cf_line] (winspool) -- (spoolsv); + } + + \uncover<3->{ + \node [cf_block, cf_impl, below = of spoolsv] (spoolss) {Spooler Router}; + \path [cf_line] (spoolsv) -- (spoolss); + } + + \uncover<4->{ + \node [cf_block, cf_impl, below left = 12mm and 32mm of spoolss] (localspl) {Local Spooler}; + \node [cf_block, below = of spoolss] (inetpp) {Internet Print Provider}; + \node [cf_block, below right = 12mm and 40mm of spoolss] (win32spl) {LanMan Print Services}; + \path [cf_line, dotted] (spoolss) -- (localspl); + \path [cf_line, dotted] (spoolss) -- (inetpp); + \path [cf_line, dotted] (spoolss) -- (win32spl); + } + + \uncover<5->{ + \node [cf_block, right = 80mm of spoolsv] (extern_spoolsv) {Spooler Server\\on another computer}; + \node [cf_data, cf_impl, below = 13mm of localspl] (spoolfile) {Spool File}; + \node [cf_block, below = 13mm of inetpp] (ippprinter) {IPP-capable Printer}; + + \path [cf_line] (localspl) -- (spoolfile); + \path [cf_line] (inetpp) -- (ippprinter); + + \coordinate [left = 3mm of extern_spoolsv] (extern_spoolsv_anchor); + \path [draw] (win32spl) -- (win32spl |- ippprinter.north); + \path [draw] (win32spl |- ippprinter.north) -- (ippprinter.north -| extern_spoolsv_anchor); + \path [draw] (ippprinter.north -| extern_spoolsv_anchor) -- (extern_spoolsv_anchor); + \path [cf_line] (extern_spoolsv_anchor) -- (extern_spoolsv.west); + } + \end{tikzpicture} + + \begin{tikzpicture}[remember picture, overlay] + \node [cf_base, align=right, xshift=130mm, yshift=-13mm] at (titleAnchor) {Implemented components\\in \colorbox{yellow!40}{yellow}}; + \end{tikzpicture} +\end{frame} + +\begin{frame}{Microsoft Windows Printing Stack} + \centering + \begin{tikzpicture} + \node [cf_data, cf_impl] (spoolfile) {Spool File}; + \node [cf_block, cf_impl, right = 30mm of spoolfile] (winprint) {Print Processor}; + \path [cf_line] (spoolfile.east) -- (winprint.west); + + \uncover<2->{ + \node [cf_block, cf_impl, below = 20mm of winprint] (spoolss) {Spooler Router}; + \node [cf_block, cf_impl, below = of spoolss] (localspl) {Local Spooler}; + \path [cf_line, dotted] (winprint) -- (spoolss); + \path [cf_label] (winprint) edge node [right] {For RAW datatype} (spoolss); + \path [cf_line] (spoolss) -- (localspl); + } + + \uncover<3->{ + \node [cf_block, cf_impl, below left = 12mm and 20mm of localspl] (localmon) {Local Port Monitor}; + \node [cf_block, below right = 12mm and 20mm of localspl] (usbmon) {USB Port Monitor}; + \path [cf_line, dotted] (localspl) -- (localmon); + \path [cf_line, dotted] (localspl) -- (usbmon); + } + + \uncover<4->{ + \node [cf_block, below = 24mm of localspl] (kernel32) {User-Mode Kernel API for accessing a port}; + \node [cf_block, below = 10mm of kernel32] (printer) {Printer}; + \path [cf_line] (localmon) -- (kernel32.north -| localmon); + \path [cf_line] (usbmon) -- (kernel32.north -| usbmon); + \path [cf_line] (kernel32) -- (printer); + } + \end{tikzpicture} + + \begin{tikzpicture}[remember picture, overlay] + \node [cf_base, align=right, xshift=130mm, yshift=-13mm] at (titleAnchor) {Implemented components\\in \colorbox{yellow!40}{yellow}}; + \end{tikzpicture} +\end{frame} + +\subsection{Remote Procedure Calls (RPC)} +\begin{frame}{Remote Procedure Calls (RPC)} + \myheading{Call a function in another process, on another computer} + + Here used for Spooler API $\rightarrow$ Spooler Server communication. + \bigskip + + \begin{itemize} + \item Function call and parameter information are transmitted over the network + \item No network-specific code needs to be written + \end{itemize} + + \bigskip + \pause + + Remote function call as easy as a local one! + + \bigskip + + Example:\\ + \footnotesize\texttt{\_RpcOpenPrinter(L"\textbackslash\textbackslash\textbackslash\textbackslash Computer\textbackslash\textbackslash Printer", \&hPrinter, Datatype, \&DevMode, AccessRequired);} +\end{frame} + +\begin{frame}{Remote Procedure Calls (RPC)} + What's happening in the background: + + \begin{enumerate} + \item \textbf{Marshalling:} Function name and parameters are packed into a message. + \item Message is transmitted over the network. + \item \textbf{Unmarshalling:} Function name and parameters are reconstructed out of the message. + \item The actual implemented function is called in the target application. + \end{enumerate} +\end{frame} + +\section{Methods} + +\subsection{Reverse Engineering Tools} +\begin{frame}{Reverse Engineering Tools} + \centering + \begin{tikzpicture} + \node [cf_blackbox] (spoolss) {Windows\\Spooler Router}; + \node [cf_blackbox, below = 50mm of spoolss] (localspl) {Windows\\Local Spooler}; + \path [cf_line] (spoolss) -- (localspl); + + \node [cf_base, on grid, below left = 20mm and 15mm of spoolss] {Function Calls?}; + \node [cf_base, on grid, below left = 30mm and 13mm of spoolss] {Parameters?}; + \end{tikzpicture} +\end{frame} + +\begin{frame}{Reverse Engineering Tools} + \myheading{Dependency Walker} + + Reveals dependencies between modules and their imported and exported functions + \bigskip + + \centering + \includegraphics{pictures/depends} + + \begin{tikzpicture}[remember picture, overlay] + \node<2-> [cf_base, align=center, xshift=15mm, yshift=-30mm] at (titleAnchor) {Examining\\ \colorbox{windows_gray}{Local Spooler}}; + \node<3-> [cf_base, align=center, xshift=138mm, yshift=-51mm] at (titleAnchor) {Found function\\ \colorbox{windows_blue}{\textcolor{white}{InitializePrintMonitor}}}; + \end{tikzpicture} +\end{frame} + +\begin{frame}{Reverse Engineering Tools} + \myheading{GNU strings} + + Outputs all strings found in a binary file + \bigskip + + \centering + \includegraphics{pictures/strings} +\end{frame} + +\begin{frame}{Reverse Engineering Tools} + \myheading{API Monitor} + + Monitors all calls done to system functions and their parameters + \bigskip + + \centering + \includegraphics{pictures/apimon} +\end{frame} + +\begin{frame}{Reverse Engineering Tools} + \centering + \begin{tikzpicture} + \node [cf_blackbox] (spoolss) {Windows\\Spooler Router}; + \node [cf_blackbox, below = 50mm of spoolss] (localspl) {Windows\\Local Spooler}; + \path [cf_line] (spoolss) -- (localspl); + + \node [cf_base, on grid, below left = 20mm and 15mm of spoolss] {Function Calls?}; + \node [cf_base, on grid, below left = 30mm and 13mm of spoolss] {Parameters?}; + + \node [cf_block, below = 8mm of localspl] {$\vcenter{\hbox{\includegraphics[height=2ex]{pictures/glass}}}$ GNU strings}; + \node [cf_block, below right = 20mm and 20mm of spoolss] {$\vcenter{\hbox{\includegraphics[height=2ex]{pictures/glass}}}$ Dependency Walker}; + \node [cf_block, below right = 30mm and 15mm of spoolss] {$\vcenter{\hbox{\includegraphics[height=2ex]{pictures/glass}}}$ API Monitor}; + \end{tikzpicture} +\end{frame} + +\section{Implementation} + +\subsection{Skip Lists} +\begin{frame}{Skip Lists} + \centering + \begin{tikzpicture}[scale=1.2, every node/.append style={transform shape}] + \node[cf_skiplistitem=5] (H) {L4 \nodepart{two} L3 \nodepart{three} L2 \nodepart{four} L1 \nodepart{five} Head}; + \node[cf_skiplistitem=2, right = of H.south, anchor = south] (5) {\nodepart{two} 5}; + \node[cf_skiplistitem=3, right = of 5.south, anchor = south] (7) {\nodepart{three} 7}; + \node[cf_skiplistitem=5, right = of 7.south, anchor = south] (10) {\nodepart{five} 10}; + \node[cf_skiplistitem=4, right = of 10.south, anchor = south] (15) {\nodepart{four} 15}; + \node[cf_skiplistitem=2, right = of 15.south, anchor = south] (16) {\nodepart{two} 16}; + \node[cf_skiplistitem=2, right = of 16.south, anchor = south] (19) {\nodepart{two} 19}; + \node[cf_skiplistitem=3, right = of 19.south, anchor = south] (23) {\nodepart{three} 23}; + + \path [cf_line, cf_onslide=<2->{draw=red, cf_emphline}] (H.one east) -- (10.one west |- H.one east); + \path [cf_line] (H.two east) -- (10.two west |- H.two east); + \path [cf_line] (H.three east) -- (7.one west |- H.three east); + \path [cf_line, cf_onslide=<3->{draw=blue, cf_emphline}] (H.four east) -- (5.one west |- H.four east); + \path [cf_line, cf_onslide=<3->{draw=blue, cf_emphline}] (5.one east) -- (7.two west |- 5.one east); + \path [cf_line] (7.one east) -- (10.three west |- 7.one east); + \path [cf_line, cf_onslide=<3->{draw=blue, cf_emphline}] (7.two east) -- (10.four west |- 7.two east); + \path [cf_line, cf_onslide=<2->{draw=red, cf_emphline}] (10.two east) -- (15.one west |- 10.two east); + \path [cf_line] (10.three east) -- (15.two west |- 10.three east); + \path [cf_line, cf_onslide=<3->{draw=blue, cf_emphline}] (10.four east) -- (15.three west |- 10.four east); + \path [cf_line] (15.two east) -- (23.one west |- 15.two east); + \path [cf_line] (15.three east) -- (16.one west |- 15.three east); + \path [cf_line] (16.one east) -- (19.one west |- 16.one east); + \path [cf_line] (19.one east) -- (23.two west |- 19.one east); + + \path [cf_label, cf_onslide=<4->{red}] (H.one east) edge node [above] {3} (10.one west |- H.one east); + \path [cf_label] (H.two east) edge node [above] {3} (10.two west |- H.two east); + \path [cf_label] (H.three east) edge node [above] {2} (7.one west |- H.three east); + \path [cf_label] (H.four east) edge node [above] {1} (5.one west |- H.four east); + \path [cf_label] (5.one east) edge node [above] {1} (7.two west |- 5.one east); + \path [cf_label] (7.one east) edge node [above] {1} (10.three west |- 7.one east); + \path [cf_label] (7.two east) edge node [above] {1} (10.four west |- 7.two east); + \path [cf_label, cf_onslide=<4->{red}] (10.two east) edge node [above] {1} (15.one west |- 10.two east); + \path [cf_label] (10.three east) edge node [above] {1} (15.two west |- 10.three east); + \path [cf_label] (10.four east) edge node [above] {1} (15.three west |- 10.four east); + \path [cf_label] (15.two east) edge node [above] {3} (23.one west |- 15.two east); + \path [cf_label] (15.three east) edge node [above] {1} (16.one west |- 15.three east); + \path [cf_label] (16.one east) edge node [above] {1} (19.one west |- 16.one east); + \path [cf_label] (19.one east) edge node [above] {1} (23.two west |- 19.one east); + \end{tikzpicture} + + \bigskip + + \begin{itemize} + \item Fast insertions, deletions and lookups, \\ $\mathcal{O}(\log n)$ on average + \item Easy to implement + \item Extensible + \end{itemize} +\end{frame} + +\begin{frame}{Skip Lists} + \myheading{Example: Data Structure with 1000 Elements} + \vspace{15mm} + + \centering + \large Average Number Of Comparisons During A Lookup + \vspace{10mm} + + \begin{tikzpicture}[scale=1.1] + \begin{axis}[ + xbar, + xmin = 0, + width = 100mm, + height = 35mm, + enlarge x limits = {rel=0.13, upper}, + ytick = {1,2}, + yticklabels = {Linked List, Skip List}, + enlarge y limits = 0.4, + nodes near coords, + y axis line style = { opacity = 0 }, + axis x line = none, + tickwidth = 0 + ] + \addplot coordinates {(500,1) (10,2)}; + \end{axis} + \end{tikzpicture} + + \vspace{15mm} +\end{frame} + +%% +%% the final slide (contact information) can be generated with the following +%% command +%% +\lastpage + +\end{document}