Compare commits
15 Commits
610ca471dc
...
dcbf8d6b8c
| Author | SHA1 | Date |
|---|---|---|
|
|
dcbf8d6b8c | |
|
|
bbb5e484f7 | |
|
|
3570c5ffb8 | |
|
|
1d3473d6a1 | |
|
|
3cd7a58b63 | |
|
|
d6dc02a798 | |
|
|
a5ce6bcfd9 | |
|
|
da591e3759 | |
|
|
a4d37b5002 | |
|
|
59aaad4152 | |
|
|
6a1cc89856 | |
|
|
b3fa6788aa | |
|
|
09508b497c | |
|
|
8e99d28423 | |
|
|
b69ceb9d54 |
|
|
@ -1,7 +0,0 @@
|
||||||
$pdf_mode = 1;
|
|
||||||
$pdflatex = 'pdflatex --shell-escape -interaction=nonstopmode %O %S -file-line-error -synctex=1';
|
|
||||||
# Custom dependency and function for nomencl package
|
|
||||||
add_cus_dep( 'nlo', 'nls', 0, 'makenlo2nls' );
|
|
||||||
sub makenlo2nls {
|
|
||||||
system( "makeindex -s nomencl.ist -o \"$_[0].nls\" \"$_[0].nlo\"" );
|
|
||||||
}
|
|
||||||
14
.travis.yml
14
.travis.yml
|
|
@ -1,14 +0,0 @@
|
||||||
services:
|
|
||||||
- docker
|
|
||||||
script:
|
|
||||||
- make
|
|
||||||
- ls -la | grep pdf
|
|
||||||
deploy:
|
|
||||||
provider: releases
|
|
||||||
api_key:
|
|
||||||
secure: $GITHUB_TOKEN
|
|
||||||
file: presentation.pdf
|
|
||||||
skip_cleanup: true
|
|
||||||
on:
|
|
||||||
repo: uniba-ktr/PresTeX
|
|
||||||
tags: true
|
|
||||||
|
|
@ -4,9 +4,9 @@ services:
|
||||||
esp:
|
esp:
|
||||||
image: iot.wiai:1337/esp8266
|
image: iot.wiai:1337/esp8266
|
||||||
build: ./esp
|
build: ./esp
|
||||||
volumes:
|
devices:
|
||||||
- /dev/ttyUSB0:/dev/ttyUSB0
|
- /dev/ttyUSB0:/dev/ttyUSB0
|
||||||
env:
|
environment:
|
||||||
- PORT=/dev/ttyUSB0
|
- PORT=/dev/ttyUSB0
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -15,7 +15,7 @@ services:
|
||||||
image: iot.wiai:1337/flask
|
image: iot.wiai:1337/flask
|
||||||
volumes:
|
volumes:
|
||||||
- ./src/:/flask/
|
- ./src/:/flask/
|
||||||
env:
|
environment:
|
||||||
- FLASK_APP=server.py
|
- FLASK_APP=server.py
|
||||||
ports:
|
ports:
|
||||||
- 5000:5000
|
- 5000:5000
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
FROM alpine:edge
|
FROM alpine:edge
|
||||||
RUN apk --update --no-cache-dir add picocom esptool
|
RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing/" >> /etc/apk/repositories && apk --update add picocom esptool
|
||||||
ENV PORT /dev/ttyUSB0
|
ENV PORT /dev/ttyUSB0
|
||||||
CMD ["picocom", "-b", "115200", "${PORT}"]
|
CMD ["sh", "-c", "picocom -b 115200 ${PORT}"]
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,250 @@
|
||||||
|
%Berkeley / Goettingen / Hannover / Marburg / PaloAlto / Rochester
|
||||||
|
\usetheme{Rochester}
|
||||||
|
|
||||||
|
\RequirePackage{pgf}
|
||||||
|
\RequirePackage{tikz}
|
||||||
|
|
||||||
|
\tikzset{
|
||||||
|
rectangle with rounded corners north west/.initial=4pt,
|
||||||
|
rectangle with rounded corners south west/.initial=4pt,
|
||||||
|
rectangle with rounded corners north east/.initial=4pt,
|
||||||
|
rectangle with rounded corners south east/.initial=4pt,
|
||||||
|
}
|
||||||
|
%\makeatletter
|
||||||
|
\pgfdeclareshape{rectangle with rounded corners}{
|
||||||
|
\inheritanchorborder[from=rectangle]
|
||||||
|
\savedmacro{\neoffset}{
|
||||||
|
\pgfkeysgetvalue{/tikz/rectangle with rounded corners north east}{\pgf@rectc}
|
||||||
|
\let\neoffset\pgf@rectc
|
||||||
|
}
|
||||||
|
\savedmacro{\nwoffset}{
|
||||||
|
\pgfkeysgetvalue{/tikz/rectangle with rounded corners north west}{\pgf@rectc}
|
||||||
|
\let\nwoffset\pgf@rectc
|
||||||
|
}
|
||||||
|
\savedmacro{\seoffset}{
|
||||||
|
\pgfkeysgetvalue{/tikz/rectangle with rounded corners south east}{\pgf@rectc}
|
||||||
|
\let\seoffset\pgf@rectc
|
||||||
|
}
|
||||||
|
\savedmacro{\swoffset}{
|
||||||
|
\pgfkeysgetvalue{/tikz/rectangle with rounded corners south west}{\pgf@rectc}
|
||||||
|
\let\swoffset\pgf@rectc
|
||||||
|
}
|
||||||
|
\savedanchor{\north}{
|
||||||
|
\pgf@y=.5\ht\pgfnodeparttextbox
|
||||||
|
\pgf@x=0pt
|
||||||
|
\setlength{\pgf@ya}{\pgfshapeminheight}
|
||||||
|
\ifdim\pgf@y<.5\pgf@ya
|
||||||
|
\pgf@y=.5\pgf@ya
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
\savedanchor{\south}{
|
||||||
|
\pgf@y=-.5\ht\pgfnodeparttextbox
|
||||||
|
\pgf@x=0pt
|
||||||
|
\setlength{\pgf@ya}{\pgfshapeminheight}
|
||||||
|
\ifdim\pgf@y>-.5\pgf@ya
|
||||||
|
\pgf@y=-.5\pgf@ya
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
\savedanchor{\east}{
|
||||||
|
\pgf@y=0pt
|
||||||
|
\pgf@x=.5\wd\pgfnodeparttextbox
|
||||||
|
\addtolength{\pgf@x}{2ex}
|
||||||
|
\setlength{\pgf@xa}{\pgfshapeminwidth}
|
||||||
|
\ifdim\pgf@x<.5\pgf@xa
|
||||||
|
\pgf@x=.5\pgf@xa
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
\savedanchor{\west}{
|
||||||
|
\pgf@y=0pt
|
||||||
|
\pgf@x=-.5\wd\pgfnodeparttextbox
|
||||||
|
\addtolength{\pgf@x}{-2ex}
|
||||||
|
\setlength{\pgf@xa}{\pgfshapeminwidth}
|
||||||
|
\ifdim\pgf@x>-.5\pgf@xa
|
||||||
|
\pgf@x=-.5\pgf@xa
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
\savedanchor{\northeast}{
|
||||||
|
\pgf@y=.5\ht\pgfnodeparttextbox % height of the box
|
||||||
|
\pgf@x=.5\wd\pgfnodeparttextbox % width of the box
|
||||||
|
\addtolength{\pgf@x}{2ex}
|
||||||
|
\setlength{\pgf@xa}{\pgfshapeminwidth}
|
||||||
|
\ifdim\pgf@x<.5\pgf@xa
|
||||||
|
\pgf@x=.5\pgf@xa
|
||||||
|
\fi
|
||||||
|
\setlength{\pgf@ya}{\pgfshapeminheight}
|
||||||
|
\ifdim\pgf@y<.5\pgf@ya
|
||||||
|
\pgf@y=.5\pgf@ya
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
\savedanchor{\southwest}{
|
||||||
|
\pgf@y=-.5\ht\pgfnodeparttextbox
|
||||||
|
\pgf@x=-.5\wd\pgfnodeparttextbox
|
||||||
|
\addtolength{\pgf@x}{-2ex}
|
||||||
|
% \pgf@x=0pt
|
||||||
|
\setlength{\pgf@xa}{\pgfshapeminwidth}
|
||||||
|
\ifdim\pgf@x>-.5\pgf@xa
|
||||||
|
\pgf@x=-.5\pgf@xa
|
||||||
|
\fi
|
||||||
|
\setlength{\pgf@ya}{\pgfshapeminheight}
|
||||||
|
\ifdim\pgf@y>-.5\pgf@ya
|
||||||
|
\pgf@y=-.5\pgf@ya
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
\anchor{text}{%
|
||||||
|
\northeast%
|
||||||
|
\pgf@x=-.5\wd\pgfnodeparttextbox%
|
||||||
|
\pgfmathsetlength{\pgf@y}{-.5ex}
|
||||||
|
}
|
||||||
|
\anchor{north east}{
|
||||||
|
\northeast
|
||||||
|
\pgfmathsetmacro{\nw}{(1-sin(45))*\neoffset}
|
||||||
|
\addtolength{\pgf@x}{-\nw pt}
|
||||||
|
\addtolength{\pgf@y}{-\nw pt}
|
||||||
|
}
|
||||||
|
\anchor{center}{
|
||||||
|
\pgf@x=0pt
|
||||||
|
\pgf@y=0pt
|
||||||
|
}
|
||||||
|
\anchor{south west}{
|
||||||
|
\southwest
|
||||||
|
\pgfmathsetmacro{\nw}{(1-sin(45))*\swoffset}
|
||||||
|
\addtolength{\pgf@x}{\nw pt}
|
||||||
|
\addtolength{\pgf@y}{\nw pt}
|
||||||
|
}
|
||||||
|
\anchor{north west}{
|
||||||
|
\northeast
|
||||||
|
\pgfmathsetmacro{\temp@x}{\pgf@x}
|
||||||
|
\southwest
|
||||||
|
\pgfmathsetmacro{\temp@xtwo}{\pgf@x}
|
||||||
|
\northeast
|
||||||
|
\pgfmathsetmacro{\xdiff}{\temp@x-\temp@xtwo}
|
||||||
|
\def\pgf@xa{\pgf@x-\xdiff}
|
||||||
|
\
|
||||||
|
\pgfmathsetmacro{\nw}{(1-sin(45))*\nwoffset}
|
||||||
|
\def\pgf@xaa{\pgf@xa+\nw}
|
||||||
|
\def\pgf@yaa{\pgf@y-\nw}
|
||||||
|
\pgfpoint{\pgf@xaa}{\pgf@yaa}
|
||||||
|
}
|
||||||
|
\anchor{south east}{
|
||||||
|
\southwest
|
||||||
|
\pgfmathsetmacro{\temp@x}{\pgf@x}
|
||||||
|
\northeast
|
||||||
|
\pgfmathsetmacro{\temp@xtwo}{\pgf@x}
|
||||||
|
\southwest
|
||||||
|
\pgfmathsetmacro{\xdiff}{\temp@x-\temp@xtwo}
|
||||||
|
\def\pgf@xa{\pgf@x-\xdiff}
|
||||||
|
\pgfmathsetmacro{\nw}{(1-sin(45))*\seoffset}
|
||||||
|
\def\pgf@xaa{\pgf@xa-\nw}
|
||||||
|
\def\pgf@yaa{\pgf@y+\nw}
|
||||||
|
\pgfpoint{\pgf@xaa}{\pgf@yaa}
|
||||||
|
}
|
||||||
|
\anchor{south}{\south}
|
||||||
|
\anchor{north}{\north}
|
||||||
|
\anchor{east}{\east}
|
||||||
|
\anchor{west}{\west}
|
||||||
|
\backgroundpath{% this is new
|
||||||
|
% store lower right in xa/ya and upper right in xb/yb
|
||||||
|
\southwest \pgf@xa=\pgf@x \pgf@ya=\pgf@y
|
||||||
|
\northeast \pgf@xb=\pgf@x \pgf@yb=\pgf@y
|
||||||
|
% construct main path
|
||||||
|
\pgfkeysgetvalue{/tikz/rectangle with rounded corners north west}{\pgf@rectc}
|
||||||
|
\pgfsetcornersarced{\pgfpoint{\pgf@rectc}{\pgf@rectc}}
|
||||||
|
\pgfpathmoveto{\pgfpoint{\pgf@xa}{\pgf@ya}}
|
||||||
|
\pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@yb}}
|
||||||
|
\pgfkeysgetvalue{/tikz/rectangle with rounded corners north east}{\pgf@rectc}
|
||||||
|
\pgfsetcornersarced{\pgfpoint{\pgf@rectc}{\pgf@rectc}}
|
||||||
|
\pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@yb}}
|
||||||
|
\pgfkeysgetvalue{/tikz/rectangle with rounded corners south east}{\pgf@rectc}
|
||||||
|
\pgfsetcornersarced{\pgfpoint{\pgf@rectc}{\pgf@rectc}}
|
||||||
|
\pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@ya}}
|
||||||
|
\pgfkeysgetvalue{/tikz/rectangle with rounded corners south west}{\pgf@rectc}
|
||||||
|
\pgfsetcornersarced{\pgfpoint{\pgf@rectc}{\pgf@rectc}}
|
||||||
|
\pgfpathclose
|
||||||
|
}
|
||||||
|
}
|
||||||
|
%\makeatother
|
||||||
|
|
||||||
|
\pgfdeclareimage[width=0.115\textwidth]{uniheader}{\meta/config/images/logow}
|
||||||
|
|
||||||
|
\setbeamertemplate{blocks}[shadow=false]
|
||||||
|
\setbeamercovered{transparent}
|
||||||
|
|
||||||
|
\beamer@headheight=0.13\paperwidth
|
||||||
|
|
||||||
|
\setbeamercolor*{Title bar}{fg=white}
|
||||||
|
\setbeamercolor*{Location bar}{fg=unibablueI,bg=unibagrayV}
|
||||||
|
\setbeamercolor*{frametitle}{parent=Title bar}
|
||||||
|
\setbeamercolor*{block title}{bg=unibablueI,fg=white}
|
||||||
|
\setbeamercolor*{block body}{bg=unibagrayV,fg=black}
|
||||||
|
\setbeamercolor*{block title alerted}{bg=nounibaredII,fg=white}
|
||||||
|
\setbeamercolor*{block body alerted}{bg=unibaredV,fg=black}
|
||||||
|
\setbeamercolor*{block title example}{bg=unibayellowII,fg=black}
|
||||||
|
\setbeamercolor*{block body example}{bg=unibayellowV,fg=black}
|
||||||
|
\setbeamercolor*{normal text}{bg=white,fg=black}
|
||||||
|
\setbeamercolor*{alerted text}{fg=nounibaredII}
|
||||||
|
\setbeamercolor*{section in head/foot}{bg=unibablueI,fg=white}
|
||||||
|
\setbeamercolor*{item}{fg=unibablueI, bg=unibagrayV}
|
||||||
|
|
||||||
|
\usecolortheme[named=nounibagreenII]{structure}
|
||||||
|
|
||||||
|
\setbeamerfont{section in head/foot}{size=\tiny,series=\normalfont}
|
||||||
|
\setbeamerfont{frametitle}{size=\large}
|
||||||
|
|
||||||
|
\setbeamertemplate{frametitle}
|
||||||
|
{
|
||||||
|
\vskip-0.3\beamer@headheight
|
||||||
|
\vskip-\baselineskip
|
||||||
|
\vskip-0.2cm
|
||||||
|
\hskip-0.5cm\usebeamerfont*{frametitle}\insertframetitle
|
||||||
|
\vskip+0.1cm
|
||||||
|
\hskip-0.25cm\usebeamerfont*{framesubtitle}\insertframesubtitle
|
||||||
|
\vskip+0.15cm
|
||||||
|
}
|
||||||
|
|
||||||
|
\setbeamertemplate{headline}
|
||||||
|
{
|
||||||
|
|
||||||
|
\begin{tikzpicture}
|
||||||
|
\node[
|
||||||
|
anchor=south west,
|
||||||
|
draw=unibablueI,
|
||||||
|
thin,
|
||||||
|
fill=unibablueI,
|
||||||
|
shape=rectangle with rounded corners,
|
||||||
|
minimum height=\beamer@headheight, minimum width=\textwidth,
|
||||||
|
rectangle with rounded corners north west=0pt,
|
||||||
|
rectangle with rounded corners south west=0pt,
|
||||||
|
rectangle with rounded corners north east=25pt,
|
||||||
|
rectangle with rounded corners south east=0pt,
|
||||||
|
] at (0,0) (b) {};
|
||||||
|
\draw (b.east) +(-.7em,0) node(logo) [anchor=east] { \pgfuseimage{uniheader} };
|
||||||
|
\draw[white] node(uniba) [left of=logo, anchor=east]{\scriptsize\uni};
|
||||||
|
\end{tikzpicture}
|
||||||
|
|
||||||
|
\vskip -1.75cm
|
||||||
|
\linethickness{0pt}
|
||||||
|
|
||||||
|
\framelatex{
|
||||||
|
\begin{beamercolorbox}[wd=\paperwidth,ht=0.3\beamer@headheight]{Title bar}
|
||||||
|
\usebeamerfont{section in head/foot}%
|
||||||
|
\insertsectionnavigationhorizontal{0pt}{\hskip0.22cm}{}%
|
||||||
|
\end{beamercolorbox}}
|
||||||
|
|
||||||
|
\framelatex{
|
||||||
|
\begin{beamercolorbox}[wd=\paperwidth,ht=0.7\beamer@headheight]{Title bar}
|
||||||
|
\end{beamercolorbox}}
|
||||||
|
}
|
||||||
|
|
||||||
|
\setbeamertemplate{footline}
|
||||||
|
{
|
||||||
|
\linethickness{0.2pt}
|
||||||
|
\framelatex{
|
||||||
|
\begin{beamercolorbox}[leftskip=.3cm,wd=\paperwidth,ht=0.25\beamer@headheight,sep=0.1cm]{Location bar}
|
||||||
|
\usebeamerfont{section in head/foot}%
|
||||||
|
\begin{tikzpicture}[remember picture, overlay]
|
||||||
|
\node[anchor=south west] at ($(current page.south west)+(.1,0)$){\insertshorttitle \ | \insertshortauthor \ | \insertshortinstitute};
|
||||||
|
\node[anchor=south] at (current page.south){\ifgit\gitMarkFormat{\gitMarkPref\,\textbullet{}\,\gitMark}\fi};
|
||||||
|
\node[anchor=south east] at ($(current page.south east)+(-.1,0)$){\insertframenumber/\inserttotalframenumber};
|
||||||
|
\end{tikzpicture}
|
||||||
|
\end{beamercolorbox}}
|
||||||
|
}
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
%Necessary Information
|
%Necessary Information
|
||||||
\author[C\&F]{Clemens, Franz}
|
\author[C\&F]{Clemens, Franz}
|
||||||
\title{IoT Night}
|
\title{IoT Night}
|
||||||
\subtitle{ESP8266 \& parts}
|
\subtitle{S stands for security}
|
||||||
%The day of the presentation
|
%The day of the presentation
|
||||||
\date{\today}
|
\date{\today}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,3 +7,11 @@
|
||||||
@misc{micropython-doc,
|
@misc{micropython-doc,
|
||||||
url={https://docs.micropython.org/en/latest/esp8266/esp8266/tutorial/intro.html}
|
url={https://docs.micropython.org/en/latest/esp8266/esp8266/tutorial/intro.html}
|
||||||
}
|
}
|
||||||
|
@misc{node-dht,
|
||||||
|
url={https://www.mikrocontroller.net/topic/389850}}
|
||||||
|
@misc{node-led,
|
||||||
|
url={https://www.pinterest.de/pin/658088564269958262/}}
|
||||||
|
@misc{node-button,
|
||||||
|
url={https://alexbloggt.com/esp8266-pushover/}}
|
||||||
|
@misc{mp-interrupt,
|
||||||
|
url={{https://docs.micropython.org/en/latest/esp8266/reference/isr_rules.html}}}
|
||||||
|
|
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 106 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 36 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 122 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 712 B |
Binary file not shown.
|
After Width: | Height: | Size: 59 KiB |
|
|
@ -151,3 +151,4 @@
|
||||||
\usepackage{pifont}
|
\usepackage{pifont}
|
||||||
\usepackage{fourier}
|
\usepackage{fourier}
|
||||||
\usepackage{menukeys}
|
\usepackage{menukeys}
|
||||||
|
\usepackage{eurosym}
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,315 @@
|
||||||
|
%Berkeley / Goettingen / Hannover / Marburg / PaloAlto / Rochester
|
||||||
|
\usetheme[hideothersubsections]{Goettingen}
|
||||||
|
|
||||||
|
\RequirePackage{pgf}
|
||||||
|
\RequirePackage{tikz}
|
||||||
|
\RequirePackage{pdfrender}
|
||||||
|
|
||||||
|
\tikzset{
|
||||||
|
rectangle with rounded corners north west/.initial=4pt,
|
||||||
|
rectangle with rounded corners south west/.initial=4pt,
|
||||||
|
rectangle with rounded corners north east/.initial=4pt,
|
||||||
|
rectangle with rounded corners south east/.initial=4pt,
|
||||||
|
}
|
||||||
|
%\makeatletter
|
||||||
|
\pgfdeclareshape{rectangle with rounded corners}{
|
||||||
|
\inheritanchorborder[from=rectangle]
|
||||||
|
\savedmacro{\neoffset}{
|
||||||
|
\pgfkeysgetvalue{/tikz/rectangle with rounded corners north east}{\pgf@rectc}
|
||||||
|
\let\neoffset\pgf@rectc
|
||||||
|
}
|
||||||
|
\savedmacro{\nwoffset}{
|
||||||
|
\pgfkeysgetvalue{/tikz/rectangle with rounded corners north west}{\pgf@rectc}
|
||||||
|
\let\nwoffset\pgf@rectc
|
||||||
|
}
|
||||||
|
\savedmacro{\seoffset}{
|
||||||
|
\pgfkeysgetvalue{/tikz/rectangle with rounded corners south east}{\pgf@rectc}
|
||||||
|
\let\seoffset\pgf@rectc
|
||||||
|
}
|
||||||
|
\savedmacro{\swoffset}{
|
||||||
|
\pgfkeysgetvalue{/tikz/rectangle with rounded corners south west}{\pgf@rectc}
|
||||||
|
\let\swoffset\pgf@rectc
|
||||||
|
}
|
||||||
|
\savedanchor{\north}{
|
||||||
|
\pgf@y=.5\ht\pgfnodeparttextbox
|
||||||
|
\pgf@x=0pt
|
||||||
|
\setlength{\pgf@ya}{\pgfshapeminheight}
|
||||||
|
\ifdim\pgf@y<.5\pgf@ya
|
||||||
|
\pgf@y=.5\pgf@ya
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
\savedanchor{\south}{
|
||||||
|
\pgf@y=-.5\ht\pgfnodeparttextbox
|
||||||
|
\pgf@x=0pt
|
||||||
|
\setlength{\pgf@ya}{\pgfshapeminheight}
|
||||||
|
\ifdim\pgf@y>-.5\pgf@ya
|
||||||
|
\pgf@y=-.5\pgf@ya
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
\savedanchor{\east}{
|
||||||
|
\pgf@y=0pt
|
||||||
|
\pgf@x=.5\wd\pgfnodeparttextbox
|
||||||
|
\addtolength{\pgf@x}{2ex}
|
||||||
|
\setlength{\pgf@xa}{\pgfshapeminwidth}
|
||||||
|
\ifdim\pgf@x<.5\pgf@xa
|
||||||
|
\pgf@x=.5\pgf@xa
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
\savedanchor{\west}{
|
||||||
|
\pgf@y=0pt
|
||||||
|
\pgf@x=-.5\wd\pgfnodeparttextbox
|
||||||
|
\addtolength{\pgf@x}{-2ex}
|
||||||
|
\setlength{\pgf@xa}{\pgfshapeminwidth}
|
||||||
|
\ifdim\pgf@x>-.5\pgf@xa
|
||||||
|
\pgf@x=-.5\pgf@xa
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
\savedanchor{\northeast}{
|
||||||
|
\pgf@y=.5\ht\pgfnodeparttextbox % height of the box
|
||||||
|
\pgf@x=.5\wd\pgfnodeparttextbox % width of the box
|
||||||
|
\addtolength{\pgf@x}{2ex}
|
||||||
|
\setlength{\pgf@xa}{\pgfshapeminwidth}
|
||||||
|
\ifdim\pgf@x<.5\pgf@xa
|
||||||
|
\pgf@x=.5\pgf@xa
|
||||||
|
\fi
|
||||||
|
\setlength{\pgf@ya}{\pgfshapeminheight}
|
||||||
|
\ifdim\pgf@y<.5\pgf@ya
|
||||||
|
\pgf@y=.5\pgf@ya
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
\savedanchor{\southwest}{
|
||||||
|
\pgf@y=-.5\ht\pgfnodeparttextbox
|
||||||
|
\pgf@x=-.5\wd\pgfnodeparttextbox
|
||||||
|
\addtolength{\pgf@x}{-2ex}
|
||||||
|
% \pgf@x=0pt
|
||||||
|
\setlength{\pgf@xa}{\pgfshapeminwidth}
|
||||||
|
\ifdim\pgf@x>-.5\pgf@xa
|
||||||
|
\pgf@x=-.5\pgf@xa
|
||||||
|
\fi
|
||||||
|
\setlength{\pgf@ya}{\pgfshapeminheight}
|
||||||
|
\ifdim\pgf@y>-.5\pgf@ya
|
||||||
|
\pgf@y=-.5\pgf@ya
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
\anchor{text}{%
|
||||||
|
\northeast%
|
||||||
|
\pgf@x=-.5\wd\pgfnodeparttextbox%
|
||||||
|
\pgfmathsetlength{\pgf@y}{-.5ex}
|
||||||
|
}
|
||||||
|
\anchor{north east}{
|
||||||
|
\northeast
|
||||||
|
\pgfmathsetmacro{\nw}{(1-sin(45))*\neoffset}
|
||||||
|
\addtolength{\pgf@x}{-\nw pt}
|
||||||
|
\addtolength{\pgf@y}{-\nw pt}
|
||||||
|
}
|
||||||
|
\anchor{center}{
|
||||||
|
\pgf@x=0pt
|
||||||
|
\pgf@y=0pt
|
||||||
|
}
|
||||||
|
\anchor{south west}{
|
||||||
|
\southwest
|
||||||
|
\pgfmathsetmacro{\nw}{(1-sin(45))*\swoffset}
|
||||||
|
\addtolength{\pgf@x}{\nw pt}
|
||||||
|
\addtolength{\pgf@y}{\nw pt}
|
||||||
|
}
|
||||||
|
\anchor{north west}{
|
||||||
|
\northeast
|
||||||
|
\pgfmathsetmacro{\temp@x}{\pgf@x}
|
||||||
|
\southwest
|
||||||
|
\pgfmathsetmacro{\temp@xtwo}{\pgf@x}
|
||||||
|
\northeast
|
||||||
|
\pgfmathsetmacro{\xdiff}{\temp@x-\temp@xtwo}
|
||||||
|
\def\pgf@xa{\pgf@x-\xdiff}
|
||||||
|
\
|
||||||
|
\pgfmathsetmacro{\nw}{(1-sin(45))*\nwoffset}
|
||||||
|
\def\pgf@xaa{\pgf@xa+\nw}
|
||||||
|
\def\pgf@yaa{\pgf@y-\nw}
|
||||||
|
\pgfpoint{\pgf@xaa}{\pgf@yaa}
|
||||||
|
}
|
||||||
|
\anchor{south east}{
|
||||||
|
\southwest
|
||||||
|
\pgfmathsetmacro{\temp@x}{\pgf@x}
|
||||||
|
\northeast
|
||||||
|
\pgfmathsetmacro{\temp@xtwo}{\pgf@x}
|
||||||
|
\southwest
|
||||||
|
\pgfmathsetmacro{\xdiff}{\temp@x-\temp@xtwo}
|
||||||
|
\def\pgf@xa{\pgf@x-\xdiff}
|
||||||
|
\pgfmathsetmacro{\nw}{(1-sin(45))*\seoffset}
|
||||||
|
\def\pgf@xaa{\pgf@xa-\nw}
|
||||||
|
\def\pgf@yaa{\pgf@y+\nw}
|
||||||
|
\pgfpoint{\pgf@xaa}{\pgf@yaa}
|
||||||
|
}
|
||||||
|
\anchor{south}{\south}
|
||||||
|
\anchor{north}{\north}
|
||||||
|
\anchor{east}{\east}
|
||||||
|
\anchor{west}{\west}
|
||||||
|
\backgroundpath{% this is new
|
||||||
|
% store lower right in xa/ya and upper right in xb/yb
|
||||||
|
\southwest \pgf@xa=\pgf@x \pgf@ya=\pgf@y
|
||||||
|
\northeast \pgf@xb=\pgf@x \pgf@yb=\pgf@y
|
||||||
|
% construct main path
|
||||||
|
\pgfkeysgetvalue{/tikz/rectangle with rounded corners north west}{\pgf@rectc}
|
||||||
|
\pgfsetcornersarced{\pgfpoint{\pgf@rectc}{\pgf@rectc}}
|
||||||
|
\pgfpathmoveto{\pgfpoint{\pgf@xa}{\pgf@ya}}
|
||||||
|
\pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@yb}}
|
||||||
|
\pgfkeysgetvalue{/tikz/rectangle with rounded corners north east}{\pgf@rectc}
|
||||||
|
\pgfsetcornersarced{\pgfpoint{\pgf@rectc}{\pgf@rectc}}
|
||||||
|
\pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@yb}}
|
||||||
|
\pgfkeysgetvalue{/tikz/rectangle with rounded corners south east}{\pgf@rectc}
|
||||||
|
\pgfsetcornersarced{\pgfpoint{\pgf@rectc}{\pgf@rectc}}
|
||||||
|
\pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@ya}}
|
||||||
|
\pgfkeysgetvalue{/tikz/rectangle with rounded corners south west}{\pgf@rectc}
|
||||||
|
\pgfsetcornersarced{\pgfpoint{\pgf@rectc}{\pgf@rectc}}
|
||||||
|
\pgfpathclose
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
\pgfdeclareimage[width=1.4em]{uniheader}{\meta/config/images/logo}
|
||||||
|
\pgfdeclareimage[width=2.8em]{uniheadertitle}{\meta/config/images/logo}
|
||||||
|
\setbeamertemplate{blocks}[shadow=false]
|
||||||
|
\setbeamercovered{transparent}
|
||||||
|
|
||||||
|
\beamer@headheight=0.1\paperheight
|
||||||
|
|
||||||
|
\setbeamercolor*{Title bar}{fg=unibablueI}
|
||||||
|
\setbeamercolor*{Location bar}{fg=unibablueI,bg=white}
|
||||||
|
\setbeamercolor*{frametitle}{parent=Title bar}
|
||||||
|
\setbeamercolor*{block title}{bg=unibablueI,fg=white}
|
||||||
|
\setbeamercolor*{block body}{bg=unibagrayV,fg=black}
|
||||||
|
\setbeamercolor*{block title alerted}{bg=nounibaredII,fg=white}
|
||||||
|
\setbeamercolor*{block body alerted}{bg=unibaredV,fg=black}
|
||||||
|
\setbeamercolor*{block title example}{bg=unibayellowII,fg=black}
|
||||||
|
\setbeamercolor*{block body example}{bg=unibayellowV,fg=black}
|
||||||
|
\setbeamercolor*{normal text}{bg=white,fg=black}
|
||||||
|
\setbeamercolor*{alerted text}{fg=nounibaredII}
|
||||||
|
\setbeamercolor*{section in head/foot}{fg=unibablueI}
|
||||||
|
\setbeamercolor*{item}{fg=unibablueI, bg=unibagrayV}
|
||||||
|
|
||||||
|
\usecolortheme[named=unibablueI]{structure}
|
||||||
|
|
||||||
|
\setbeamerfont{section in head/foot}{size=\tiny,series=\normalfont}
|
||||||
|
\setbeamerfont{frametitle}{size=\large}
|
||||||
|
|
||||||
|
\setbeamertemplate{title page}{
|
||||||
|
\begin{tikzpicture}[remember picture,overlay]
|
||||||
|
\node[
|
||||||
|
anchor=south east,
|
||||||
|
draw=unibablueV,
|
||||||
|
thin,
|
||||||
|
fill=unibablueV,
|
||||||
|
shape=rectangle with rounded corners,
|
||||||
|
minimum height=\paperheight-.2cm, minimum width=\beamer@sidebarwidth-.2cm,
|
||||||
|
rectangle with rounded corners north west=0pt,
|
||||||
|
rectangle with rounded corners south west=0pt,
|
||||||
|
rectangle with rounded corners north east=18pt,
|
||||||
|
rectangle with rounded corners south east=0pt,
|
||||||
|
] at ($(current page.south east)+(-.1,.1)$) (b) {};
|
||||||
|
\draw[anchor=north east] node(logo) at ($(b.north east)+(.15,.15)$) { \pgfuseimage{uniheadertitle} };
|
||||||
|
%\draw[unibablueI] node(uniba) [below of=logo, anchor=center]{\scriptsize\unibastring};
|
||||||
|
\end{tikzpicture}
|
||||||
|
\vskip-0.3\beamer@headheight
|
||||||
|
\begin{beamercolorbox}[sep=8pt]{institute}
|
||||||
|
\usebeamerfont{institute}\insertinstitute
|
||||||
|
\end{beamercolorbox}
|
||||||
|
\vskip2em\par
|
||||||
|
\begin{beamercolorbox}[sep=16pt]{title}
|
||||||
|
\usebeamerfont{title}\inserttitle\par%
|
||||||
|
\ifx\insertsubtitle\@empty%
|
||||||
|
\else%
|
||||||
|
\vskip0.25em%
|
||||||
|
{\usebeamerfont{subtitle}\usebeamercolor[fg]{subtitle}\insertsubtitle\par}%
|
||||||
|
\fi%
|
||||||
|
\end{beamercolorbox}%
|
||||||
|
\vskip2em\par
|
||||||
|
\begin{beamercolorbox}[sep=16pt]{date}
|
||||||
|
\usebeamerfont{date}\insertdate
|
||||||
|
\end{beamercolorbox}\vskip-0.5em
|
||||||
|
\begin{beamercolorbox}[sep=16pt]{author}
|
||||||
|
\usebeamerfont{author}\insertauthor
|
||||||
|
\end{beamercolorbox}
|
||||||
|
\vfill
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
\setbeamertemplate{frametitle}
|
||||||
|
{
|
||||||
|
\ifx\insertframesubtitle\empty
|
||||||
|
\vskip+0.1cm
|
||||||
|
\usebeamerfont*{frametitle}\insertframetitle
|
||||||
|
\vskip+0.15cm
|
||||||
|
\else
|
||||||
|
\usebeamerfont*{frametitle}\insertframetitle
|
||||||
|
\vskip+0.1cm
|
||||||
|
\hskip+0.5cm\usebeamerfont*{framesubtitle}\insertframesubtitle
|
||||||
|
\vskip+0.15cm
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
|
||||||
|
%\setbeamertemplate{headline}
|
||||||
|
%{
|
||||||
|
% \vskip -\beamer@headheight
|
||||||
|
% \linethickness{0pt}
|
||||||
|
% \framelatex{
|
||||||
|
% \begin{beamercolorbox}[wd=\paperwidth,ht=\beamer@headheight]{Title bar}
|
||||||
|
% \usebeamerfont{section in head/foot}
|
||||||
|
% %\insertsectionnavigationhorizontal{0pt}{\hskip0.22cm}{}%
|
||||||
|
% \end{beamercolorbox}}
|
||||||
|
%}
|
||||||
|
|
||||||
|
\setbeamertemplate{footline}
|
||||||
|
{
|
||||||
|
\begin{tikzpicture}[remember picture, overlay]
|
||||||
|
\draw[thick, unibablueI] ($(current page.south west)+(.1,0.37\beamer@headheight)$) -- ($(current page.south east)+(-.1,0.37\beamer@headheight)$);
|
||||||
|
\end{tikzpicture}
|
||||||
|
|
||||||
|
\linethickness{0pt}
|
||||||
|
\framelatex{
|
||||||
|
\begin{beamercolorbox}[leftskip=0.2cm, rightskip=0.2cm, wd=\paperwidth,ht=0.35\beamer@headheight,sep=0.05cm]{Location bar}
|
||||||
|
\usebeamerfont{section in head/foot}%
|
||||||
|
\begin{tikzpicture}[remember picture, overlay]
|
||||||
|
\node[anchor=south west] at ($(current page.south west)+(.1,0)$){\insertshorttitle \ | \insertshortauthor \ | \insertshortinstitute};
|
||||||
|
\node[anchor=south] at (current page.south){\ifgit\gitMarkFormat{\gitMarkPref\,\textbullet{}\,\gitMark}\fi};
|
||||||
|
\node[anchor=south east] at ($(current page.south east)+(-.1,0)$){\insertframenumber/\inserttotalframenumber};
|
||||||
|
\end{tikzpicture}
|
||||||
|
\end{beamercolorbox}}
|
||||||
|
}
|
||||||
|
|
||||||
|
\setbeamertemplate{sidebar canvas \beamer@sidebarside}[vertical shading]
|
||||||
|
[top=white,bottom=white]
|
||||||
|
|
||||||
|
\setbeamertemplate{sidebar \beamer@sidebarside}
|
||||||
|
{
|
||||||
|
\begin{tikzpicture}[remember picture,overlay]
|
||||||
|
\node[
|
||||||
|
anchor=south east,
|
||||||
|
draw=unibablueV,
|
||||||
|
thin,
|
||||||
|
fill=unibablueV,
|
||||||
|
shape=rectangle with rounded corners,
|
||||||
|
minimum height=\paperheight-.2cm, minimum width=\beamer@sidebarwidth-.2cm,
|
||||||
|
rectangle with rounded corners north west=0pt,
|
||||||
|
rectangle with rounded corners south west=0pt,
|
||||||
|
rectangle with rounded corners north east=18pt,
|
||||||
|
rectangle with rounded corners south east=0pt,
|
||||||
|
] at ($(current page.south east)+(-.1,.1)$) (b) {};
|
||||||
|
\draw[anchor=north east] node(logo) at ($(b.north east)+(.15,.15)$) { \pgfuseimage{uniheadertitle} };
|
||||||
|
\end{tikzpicture}
|
||||||
|
\vskip12em%
|
||||||
|
\hskip1em\insertverticalnavigation{\beamer@sidebarwidth}%
|
||||||
|
\vfill
|
||||||
|
\ifx\beamer@sidebarside\beamer@lefttext%
|
||||||
|
\else%
|
||||||
|
\usebeamercolor{normal text}%
|
||||||
|
\llap{\usebeamertemplate***{navigation symbols}\hskip0.1cm}%
|
||||||
|
\vskip2pt%
|
||||||
|
\fi%
|
||||||
|
%
|
||||||
|
|
||||||
|
\ifx\beamer@sidebarside\beamer@lefttext%
|
||||||
|
\defbeamertemplate*{sidebar right}{sidebar theme}
|
||||||
|
{%
|
||||||
|
\vfill%
|
||||||
|
\llap{\usebeamertemplate***{navigation symbols}\hskip0.1cm}%
|
||||||
|
\vskip2pt}
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,250 @@
|
||||||
|
%Berkeley / Goettingen / Hannover / Marburg / PaloAlto / Rochester
|
||||||
|
\usetheme{Rochester}
|
||||||
|
|
||||||
|
\RequirePackage{pgf}
|
||||||
|
\RequirePackage{tikz}
|
||||||
|
|
||||||
|
\tikzset{
|
||||||
|
rectangle with rounded corners north west/.initial=4pt,
|
||||||
|
rectangle with rounded corners south west/.initial=4pt,
|
||||||
|
rectangle with rounded corners north east/.initial=4pt,
|
||||||
|
rectangle with rounded corners south east/.initial=4pt,
|
||||||
|
}
|
||||||
|
%\makeatletter
|
||||||
|
\pgfdeclareshape{rectangle with rounded corners}{
|
||||||
|
\inheritanchorborder[from=rectangle]
|
||||||
|
\savedmacro{\neoffset}{
|
||||||
|
\pgfkeysgetvalue{/tikz/rectangle with rounded corners north east}{\pgf@rectc}
|
||||||
|
\let\neoffset\pgf@rectc
|
||||||
|
}
|
||||||
|
\savedmacro{\nwoffset}{
|
||||||
|
\pgfkeysgetvalue{/tikz/rectangle with rounded corners north west}{\pgf@rectc}
|
||||||
|
\let\nwoffset\pgf@rectc
|
||||||
|
}
|
||||||
|
\savedmacro{\seoffset}{
|
||||||
|
\pgfkeysgetvalue{/tikz/rectangle with rounded corners south east}{\pgf@rectc}
|
||||||
|
\let\seoffset\pgf@rectc
|
||||||
|
}
|
||||||
|
\savedmacro{\swoffset}{
|
||||||
|
\pgfkeysgetvalue{/tikz/rectangle with rounded corners south west}{\pgf@rectc}
|
||||||
|
\let\swoffset\pgf@rectc
|
||||||
|
}
|
||||||
|
\savedanchor{\north}{
|
||||||
|
\pgf@y=.5\ht\pgfnodeparttextbox
|
||||||
|
\pgf@x=0pt
|
||||||
|
\setlength{\pgf@ya}{\pgfshapeminheight}
|
||||||
|
\ifdim\pgf@y<.5\pgf@ya
|
||||||
|
\pgf@y=.5\pgf@ya
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
\savedanchor{\south}{
|
||||||
|
\pgf@y=-.5\ht\pgfnodeparttextbox
|
||||||
|
\pgf@x=0pt
|
||||||
|
\setlength{\pgf@ya}{\pgfshapeminheight}
|
||||||
|
\ifdim\pgf@y>-.5\pgf@ya
|
||||||
|
\pgf@y=-.5\pgf@ya
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
\savedanchor{\east}{
|
||||||
|
\pgf@y=0pt
|
||||||
|
\pgf@x=.5\wd\pgfnodeparttextbox
|
||||||
|
\addtolength{\pgf@x}{2ex}
|
||||||
|
\setlength{\pgf@xa}{\pgfshapeminwidth}
|
||||||
|
\ifdim\pgf@x<.5\pgf@xa
|
||||||
|
\pgf@x=.5\pgf@xa
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
\savedanchor{\west}{
|
||||||
|
\pgf@y=0pt
|
||||||
|
\pgf@x=-.5\wd\pgfnodeparttextbox
|
||||||
|
\addtolength{\pgf@x}{-2ex}
|
||||||
|
\setlength{\pgf@xa}{\pgfshapeminwidth}
|
||||||
|
\ifdim\pgf@x>-.5\pgf@xa
|
||||||
|
\pgf@x=-.5\pgf@xa
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
\savedanchor{\northeast}{
|
||||||
|
\pgf@y=.5\ht\pgfnodeparttextbox % height of the box
|
||||||
|
\pgf@x=.5\wd\pgfnodeparttextbox % width of the box
|
||||||
|
\addtolength{\pgf@x}{2ex}
|
||||||
|
\setlength{\pgf@xa}{\pgfshapeminwidth}
|
||||||
|
\ifdim\pgf@x<.5\pgf@xa
|
||||||
|
\pgf@x=.5\pgf@xa
|
||||||
|
\fi
|
||||||
|
\setlength{\pgf@ya}{\pgfshapeminheight}
|
||||||
|
\ifdim\pgf@y<.5\pgf@ya
|
||||||
|
\pgf@y=.5\pgf@ya
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
\savedanchor{\southwest}{
|
||||||
|
\pgf@y=-.5\ht\pgfnodeparttextbox
|
||||||
|
\pgf@x=-.5\wd\pgfnodeparttextbox
|
||||||
|
\addtolength{\pgf@x}{-2ex}
|
||||||
|
% \pgf@x=0pt
|
||||||
|
\setlength{\pgf@xa}{\pgfshapeminwidth}
|
||||||
|
\ifdim\pgf@x>-.5\pgf@xa
|
||||||
|
\pgf@x=-.5\pgf@xa
|
||||||
|
\fi
|
||||||
|
\setlength{\pgf@ya}{\pgfshapeminheight}
|
||||||
|
\ifdim\pgf@y>-.5\pgf@ya
|
||||||
|
\pgf@y=-.5\pgf@ya
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
\anchor{text}{%
|
||||||
|
\northeast%
|
||||||
|
\pgf@x=-.5\wd\pgfnodeparttextbox%
|
||||||
|
\pgfmathsetlength{\pgf@y}{-.5ex}
|
||||||
|
}
|
||||||
|
\anchor{north east}{
|
||||||
|
\northeast
|
||||||
|
\pgfmathsetmacro{\nw}{(1-sin(45))*\neoffset}
|
||||||
|
\addtolength{\pgf@x}{-\nw pt}
|
||||||
|
\addtolength{\pgf@y}{-\nw pt}
|
||||||
|
}
|
||||||
|
\anchor{center}{
|
||||||
|
\pgf@x=0pt
|
||||||
|
\pgf@y=0pt
|
||||||
|
}
|
||||||
|
\anchor{south west}{
|
||||||
|
\southwest
|
||||||
|
\pgfmathsetmacro{\nw}{(1-sin(45))*\swoffset}
|
||||||
|
\addtolength{\pgf@x}{\nw pt}
|
||||||
|
\addtolength{\pgf@y}{\nw pt}
|
||||||
|
}
|
||||||
|
\anchor{north west}{
|
||||||
|
\northeast
|
||||||
|
\pgfmathsetmacro{\temp@x}{\pgf@x}
|
||||||
|
\southwest
|
||||||
|
\pgfmathsetmacro{\temp@xtwo}{\pgf@x}
|
||||||
|
\northeast
|
||||||
|
\pgfmathsetmacro{\xdiff}{\temp@x-\temp@xtwo}
|
||||||
|
\def\pgf@xa{\pgf@x-\xdiff}
|
||||||
|
\
|
||||||
|
\pgfmathsetmacro{\nw}{(1-sin(45))*\nwoffset}
|
||||||
|
\def\pgf@xaa{\pgf@xa+\nw}
|
||||||
|
\def\pgf@yaa{\pgf@y-\nw}
|
||||||
|
\pgfpoint{\pgf@xaa}{\pgf@yaa}
|
||||||
|
}
|
||||||
|
\anchor{south east}{
|
||||||
|
\southwest
|
||||||
|
\pgfmathsetmacro{\temp@x}{\pgf@x}
|
||||||
|
\northeast
|
||||||
|
\pgfmathsetmacro{\temp@xtwo}{\pgf@x}
|
||||||
|
\southwest
|
||||||
|
\pgfmathsetmacro{\xdiff}{\temp@x-\temp@xtwo}
|
||||||
|
\def\pgf@xa{\pgf@x-\xdiff}
|
||||||
|
\pgfmathsetmacro{\nw}{(1-sin(45))*\seoffset}
|
||||||
|
\def\pgf@xaa{\pgf@xa-\nw}
|
||||||
|
\def\pgf@yaa{\pgf@y+\nw}
|
||||||
|
\pgfpoint{\pgf@xaa}{\pgf@yaa}
|
||||||
|
}
|
||||||
|
\anchor{south}{\south}
|
||||||
|
\anchor{north}{\north}
|
||||||
|
\anchor{east}{\east}
|
||||||
|
\anchor{west}{\west}
|
||||||
|
\backgroundpath{% this is new
|
||||||
|
% store lower right in xa/ya and upper right in xb/yb
|
||||||
|
\southwest \pgf@xa=\pgf@x \pgf@ya=\pgf@y
|
||||||
|
\northeast \pgf@xb=\pgf@x \pgf@yb=\pgf@y
|
||||||
|
% construct main path
|
||||||
|
\pgfkeysgetvalue{/tikz/rectangle with rounded corners north west}{\pgf@rectc}
|
||||||
|
\pgfsetcornersarced{\pgfpoint{\pgf@rectc}{\pgf@rectc}}
|
||||||
|
\pgfpathmoveto{\pgfpoint{\pgf@xa}{\pgf@ya}}
|
||||||
|
\pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@yb}}
|
||||||
|
\pgfkeysgetvalue{/tikz/rectangle with rounded corners north east}{\pgf@rectc}
|
||||||
|
\pgfsetcornersarced{\pgfpoint{\pgf@rectc}{\pgf@rectc}}
|
||||||
|
\pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@yb}}
|
||||||
|
\pgfkeysgetvalue{/tikz/rectangle with rounded corners south east}{\pgf@rectc}
|
||||||
|
\pgfsetcornersarced{\pgfpoint{\pgf@rectc}{\pgf@rectc}}
|
||||||
|
\pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@ya}}
|
||||||
|
\pgfkeysgetvalue{/tikz/rectangle with rounded corners south west}{\pgf@rectc}
|
||||||
|
\pgfsetcornersarced{\pgfpoint{\pgf@rectc}{\pgf@rectc}}
|
||||||
|
\pgfpathclose
|
||||||
|
}
|
||||||
|
}
|
||||||
|
%\makeatother
|
||||||
|
|
||||||
|
\pgfdeclareimage[width=0.115\textwidth]{uniheader}{\meta/config/images/logow}
|
||||||
|
|
||||||
|
\setbeamertemplate{blocks}[shadow=false]
|
||||||
|
\setbeamercovered{transparent}
|
||||||
|
|
||||||
|
\beamer@headheight=0.13\paperwidth
|
||||||
|
|
||||||
|
\setbeamercolor*{Title bar}{fg=white}
|
||||||
|
\setbeamercolor*{Location bar}{fg=unibablueI,bg=unibagrayV}
|
||||||
|
\setbeamercolor*{frametitle}{parent=Title bar}
|
||||||
|
\setbeamercolor*{block title}{bg=unibablueI,fg=white}
|
||||||
|
\setbeamercolor*{block body}{bg=unibagrayV,fg=black}
|
||||||
|
\setbeamercolor*{block title alerted}{bg=nounibaredII,fg=white}
|
||||||
|
\setbeamercolor*{block body alerted}{bg=unibaredV,fg=black}
|
||||||
|
\setbeamercolor*{block title example}{bg=unibayellowII,fg=black}
|
||||||
|
\setbeamercolor*{block body example}{bg=unibayellowV,fg=black}
|
||||||
|
\setbeamercolor*{normal text}{bg=white,fg=black}
|
||||||
|
\setbeamercolor*{alerted text}{fg=nounibaredII}
|
||||||
|
\setbeamercolor*{section in head/foot}{bg=unibablueI,fg=white}
|
||||||
|
\setbeamercolor*{item}{fg=unibablueI, bg=unibagrayV}
|
||||||
|
|
||||||
|
\usecolortheme[named=nounibagreenII]{structure}
|
||||||
|
|
||||||
|
\setbeamerfont{section in head/foot}{size=\tiny,series=\normalfont}
|
||||||
|
\setbeamerfont{frametitle}{size=\large}
|
||||||
|
|
||||||
|
\setbeamertemplate{frametitle}
|
||||||
|
{
|
||||||
|
\vskip-0.3\beamer@headheight
|
||||||
|
\vskip-\baselineskip
|
||||||
|
\vskip-0.2cm
|
||||||
|
\hskip-0.5cm\usebeamerfont*{frametitle}\insertframetitle
|
||||||
|
\vskip+0.1cm
|
||||||
|
\hskip-0.25cm\usebeamerfont*{framesubtitle}\insertframesubtitle
|
||||||
|
\vskip+0.15cm
|
||||||
|
}
|
||||||
|
|
||||||
|
\setbeamertemplate{headline}
|
||||||
|
{
|
||||||
|
|
||||||
|
\begin{tikzpicture}
|
||||||
|
\node[
|
||||||
|
anchor=south west,
|
||||||
|
draw=unibablueI,
|
||||||
|
thin,
|
||||||
|
fill=unibablueI,
|
||||||
|
shape=rectangle with rounded corners,
|
||||||
|
minimum height=\beamer@headheight, minimum width=\textwidth,
|
||||||
|
rectangle with rounded corners north west=0pt,
|
||||||
|
rectangle with rounded corners south west=0pt,
|
||||||
|
rectangle with rounded corners north east=25pt,
|
||||||
|
rectangle with rounded corners south east=0pt,
|
||||||
|
] at (0,0) (b) {};
|
||||||
|
\draw (b.east) +(-.7em,0) node(logo) [anchor=east] { \pgfuseimage{uniheader} };
|
||||||
|
\draw[white] node(uniba) [left of=logo, anchor=east]{\scriptsize\uni};
|
||||||
|
\end{tikzpicture}
|
||||||
|
|
||||||
|
\vskip -1.75cm
|
||||||
|
\linethickness{0pt}
|
||||||
|
|
||||||
|
\framelatex{
|
||||||
|
\begin{beamercolorbox}[wd=\paperwidth,ht=0.3\beamer@headheight]{Title bar}
|
||||||
|
\usebeamerfont{section in head/foot}%
|
||||||
|
\insertsectionnavigationhorizontal{0pt}{\hskip0.22cm}{}%
|
||||||
|
\end{beamercolorbox}}
|
||||||
|
|
||||||
|
\framelatex{
|
||||||
|
\begin{beamercolorbox}[wd=\paperwidth,ht=0.7\beamer@headheight]{Title bar}
|
||||||
|
\end{beamercolorbox}}
|
||||||
|
}
|
||||||
|
|
||||||
|
\setbeamertemplate{footline}
|
||||||
|
{
|
||||||
|
\linethickness{0.2pt}
|
||||||
|
\framelatex{
|
||||||
|
\begin{beamercolorbox}[leftskip=.3cm,wd=\paperwidth,ht=0.25\beamer@headheight,sep=0.1cm]{Location bar}
|
||||||
|
\usebeamerfont{section in head/foot}%
|
||||||
|
\begin{tikzpicture}[remember picture, overlay]
|
||||||
|
\node[anchor=south west] at ($(current page.south west)+(.1,0)$){\insertshorttitle \ | \insertshortauthor \ | \insertshortinstitute};
|
||||||
|
\node[anchor=south] at (current page.south){\ifgit\gitMarkFormat{\gitMarkPref\,\textbullet{}\,\gitMark}\fi};
|
||||||
|
\node[anchor=south east] at ($(current page.south east)+(-.1,0)$){\insertframenumber/\inserttotalframenumber};
|
||||||
|
\end{tikzpicture}
|
||||||
|
\end{beamercolorbox}}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,138 @@
|
||||||
|
% gitexinfo.sty
|
||||||
|
% Copyright 2015 Brent Longborough
|
||||||
|
%
|
||||||
|
% This work may be distributed and/or modified under the
|
||||||
|
% conditions of the LaTeX Project Public License, either version 1.3
|
||||||
|
% of this license or (at your option) any later version.
|
||||||
|
% The latest version of this license is in
|
||||||
|
% http://www.latex-project.org/lppl.txt
|
||||||
|
% and version 1.3 or later is part of all distributions of LaTeX
|
||||||
|
% version 2005/12/01 or later.
|
||||||
|
%
|
||||||
|
% This work has the LPPL maintenance status `maintained'.
|
||||||
|
% The Current Maintainer of this work is Brent Longborough.
|
||||||
|
%
|
||||||
|
% This work consists of these files:
|
||||||
|
% gitinfo2.sty, gitexinfo.sty, gitinfo2.tex, gitinfo2.pdf,
|
||||||
|
% gitinfo2test.tex, post-xxx-sample.txt,
|
||||||
|
% and gitHeadLocal.gin
|
||||||
|
% -----------------------------------------------------
|
||||||
|
\NeedsTeXFormat{LaTeX2e}
|
||||||
|
\ProvidesPackage{gitexinfo}[2015/11/22 v2.0.7 Auxiliary package for gitinfo2]
|
||||||
|
\SetupKeyvalOptions{family=gitinfo,prefix=gitInf@}
|
||||||
|
\DeclareStringOption{shash}
|
||||||
|
\DeclareStringOption{lhash}
|
||||||
|
\DeclareStringOption{authname}
|
||||||
|
\DeclareStringOption{authemail}
|
||||||
|
\DeclareStringOption{authsdate}
|
||||||
|
\DeclareStringOption{authidate}
|
||||||
|
\DeclareStringOption{authudate}
|
||||||
|
\DeclareStringOption{commname}
|
||||||
|
\DeclareStringOption{commemail}
|
||||||
|
\DeclareStringOption{commsdate}
|
||||||
|
\DeclareStringOption{commidate}
|
||||||
|
\DeclareStringOption{commudate}
|
||||||
|
\DeclareStringOption{refnames}
|
||||||
|
\DeclareStringOption{firsttagdescribe}
|
||||||
|
\DeclareStringOption{reltag}
|
||||||
|
\ProcessKeyvalOptions*
|
||||||
|
\renewcommand{\gitAbbrevHash}{\gitInf@shash}
|
||||||
|
\renewcommand{\gitHash}{\gitInf@lhash}
|
||||||
|
\renewcommand{\gitAuthorName}{\detokenize\expandafter{\gitInf@authname}}
|
||||||
|
\renewcommand{\gitAuthorEmail}{\gitWrapEmail{\gitInf@authemail}}
|
||||||
|
\renewcommand{\gitAuthorDate}{\gitInf@authsdate}
|
||||||
|
\renewcommand{\gitAuthorIsoDate}{\gitInf@authidate}
|
||||||
|
\renewcommand{\gitAuthorUnixDate}{\gitInf@authudate}
|
||||||
|
\renewcommand{\gitCommitterName}{\detokenize\expandafter{\gitInf@commname}}
|
||||||
|
\renewcommand{\gitCommitterEmail}{\gitWrapEmail{\gitInf@commemail}}
|
||||||
|
\renewcommand{\gitCommitterDate}{\gitInf@commsdate}
|
||||||
|
\renewcommand{\gitCommitterIsoDate}{\gitInf@commidate}
|
||||||
|
\renewcommand{\gitCommitterUnixDate}{\gitInf@commudate}
|
||||||
|
\renewcommand{\gitFirstTagDescribe}{\detokenize\expandafter{\gitInf@firsttagdescribe}}
|
||||||
|
\renewcommand{\gitReferences}{\detokenize\expandafter{\gitInf@refnames}}
|
||||||
|
\newcommand{\git@vtag}[1]{%
|
||||||
|
\def\do##1{%
|
||||||
|
\StrCut{##1}{tag: }\lcut\rcut%
|
||||||
|
\IfEq{\rcut}{}{%
|
||||||
|
\IfDecimal{\lcut}{% case where we have decimal e.g. 1.0
|
||||||
|
\renewcommand{\gitVtag}{\lcut}
|
||||||
|
\renewcommand{\gitVtags}{\space\lcut}
|
||||||
|
\renewcommand{\gitVtagn}{\space\lcut}
|
||||||
|
\listbreak
|
||||||
|
}{}%
|
||||||
|
}{%
|
||||||
|
\IfDecimal\rcut{% case where we have string: decimal e.g. tag: 1.0
|
||||||
|
\renewcommand{\gitVtag}{\rcut}
|
||||||
|
\renewcommand{\gitVtags}{\space\rcut}
|
||||||
|
\renewcommand{\gitVtagn}{\space\rcut}
|
||||||
|
\listbreak
|
||||||
|
}{}%
|
||||||
|
}%
|
||||||
|
}%
|
||||||
|
\expandafter\docsvlist\expandafter{#1}%
|
||||||
|
\StrDel{#1}{(}[\bcut]%
|
||||||
|
\StrDel{\bcut}{)}[\bcut]%
|
||||||
|
\IfSubStr{\bcut}{->}{% git version 2+?
|
||||||
|
\StrBetween{\bcut,}{HEAD -> }{,}[\bcut]% yes - no problem
|
||||||
|
}{%
|
||||||
|
\StrCount{\bcut}{, }[\xcut]%
|
||||||
|
\IfEq{\xcut}{0}{% detached head?
|
||||||
|
}{% no
|
||||||
|
\StrCut[\xcut]{\bcut}{, }{\lcut}{\bcut}% git vv < 2 - take last token
|
||||||
|
}% (not always accurate)
|
||||||
|
}
|
||||||
|
\IfEq{\bcut}{}{}{%
|
||||||
|
\IfEq{\bcut}{HEAD}{% detached head?
|
||||||
|
}{% no - we have the branch name
|
||||||
|
\renewcommand{\gitBranch}{\detokenize\expandafter{\bcut}}%
|
||||||
|
}%
|
||||||
|
}%
|
||||||
|
}%
|
||||||
|
\newcommand{\git@taglist}[1]{%
|
||||||
|
\def\do##1{%
|
||||||
|
\StrCut{##1}{tag: }\llcut\rrcut%
|
||||||
|
\IfEq{\rrcut}{}{%
|
||||||
|
\IfDecimal{\llcut}{% case where we have decimal e.g. 1.0
|
||||||
|
\StrGobbleLeft{\gitTags,\space\llcut}{0}[\gitTags]
|
||||||
|
}{}%
|
||||||
|
}{%
|
||||||
|
\StrGobbleLeft{\gitTags,\space\rrcut}{0}[\gitTags]
|
||||||
|
}%
|
||||||
|
}%
|
||||||
|
\expandafter\docsvlist\expandafter{#1}%
|
||||||
|
\StrGobbleLeft{\gitTags}{2}[\gitTags]
|
||||||
|
}%
|
||||||
|
\newcommand{\git@rtag}[1]{%
|
||||||
|
\IfEq{#1}{}{}{%
|
||||||
|
\StrRight{#1}{2}[\gitInf@dirtflag]
|
||||||
|
\StrDel{#1}{-*}[\gitInf@describe]
|
||||||
|
\IfEq{\gitInf@dirtflag}{-*}{\renewcommand{\gitDirty}{\gitInf@dirty}}{}
|
||||||
|
\StrGobbleRight{\gitInf@describe}{9}[\gitInf@describe]% Remove -g<hash>
|
||||||
|
\StrCount{\gitInf@describe}{-}[\gitInf@mcount]% Find last -
|
||||||
|
\StrCut[\gitInf@mcount]{\gitInf@describe}{-}{\gitInf@rel}{\gitInf@off}
|
||||||
|
\renewcommand{\gitRel}{\detokenize\expandafter{\gitInf@rel}}
|
||||||
|
\renewcommand{\gitRels}{\space\gitRel}
|
||||||
|
\renewcommand{\gitReln}{\space\gitRel}
|
||||||
|
\renewcommand{\gitRoff}{\gitInf@off}
|
||||||
|
\renewcommand{\gitDescribe}{#1}
|
||||||
|
}%
|
||||||
|
}%
|
||||||
|
\git@vtag{\gitInf@refnames}
|
||||||
|
\git@taglist{\gitInf@refnames}
|
||||||
|
\git@rtag{\gitInf@reltag}
|
||||||
|
\newcommand{\git@tagmark}{}
|
||||||
|
\IfEq{\gitTags}{}{%
|
||||||
|
\renewcommand{\gitTags}{\gitInf@notags}
|
||||||
|
\ifbool{gitInf@marknotags}{%
|
||||||
|
\renewcommand{\git@tagmark}{\\Head tags: \gitTags}
|
||||||
|
}{%
|
||||||
|
}
|
||||||
|
}{%
|
||||||
|
\renewcommand{\git@tagmark}{\\Head tags: \gitTags}
|
||||||
|
}
|
||||||
|
\renewcommand{\gitMark}{%
|
||||||
|
Branch: \gitBranch\,@\,\gitAbbrevHash{}
|
||||||
|
\textbullet{}
|
||||||
|
Release:\gitReln{}
|
||||||
|
(\gitAuthorDate)\git@tagmark%
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,218 @@
|
||||||
|
% gitinfo2.sty
|
||||||
|
% Copyright 2015 Brent Longborough
|
||||||
|
%
|
||||||
|
% This work may be distributed and/or modified under the
|
||||||
|
% conditions of the LaTeX Project Public License, either version 1.3
|
||||||
|
% of this license or (at your option) any later version.
|
||||||
|
% The latest version of this license is in
|
||||||
|
% http://www.latex-project.org/lppl.txt
|
||||||
|
% and version 1.3 or later is part of all distributions of LaTeX
|
||||||
|
% version 2005/12/01 or later.
|
||||||
|
%
|
||||||
|
% This work has the LPPL maintenance status `maintained'.
|
||||||
|
% The Current Maintainer of this work is Brent Longborough.
|
||||||
|
%
|
||||||
|
% This work consists of these files:
|
||||||
|
% gitinfo2.sty, gitexinfo.sty, gitinfo2.tex, gitinfo2.pdf,
|
||||||
|
% gitinfo2test.tex, post-xxx-sample.txt,
|
||||||
|
% and gitHeadLocal.gin
|
||||||
|
% -----------------------------------------------------
|
||||||
|
\NeedsTeXFormat{LaTeX2e}
|
||||||
|
\ProvidesPackage{gitinfo2}[2015/11/22 v2.0.7 git revision information]
|
||||||
|
\RequirePackage{etoolbox}
|
||||||
|
\RequirePackage{xstring}
|
||||||
|
\RequirePackage{kvoptions}
|
||||||
|
\RequirePackage{eso-pic}
|
||||||
|
\SetupKeyvalOptions{family=gitinfo,prefix=gitInf@}
|
||||||
|
\DeclareBoolOption{draft}
|
||||||
|
\DeclareBoolOption{grumpy}
|
||||||
|
\DeclareBoolOption{local}
|
||||||
|
\DeclareBoolOption{pcount}
|
||||||
|
\DeclareBoolOption{footinfo}
|
||||||
|
\DeclareBoolOption{mark}
|
||||||
|
\DeclareBoolOption{markifdraft}
|
||||||
|
\DeclareBoolOption{markifdirty}
|
||||||
|
\DeclareBoolOption{marknotags}
|
||||||
|
\DeclareStringOption[(None)]{missing}
|
||||||
|
\DeclareStringOption[(None)]{notags}
|
||||||
|
\DeclareStringOption[(*)]{dirty}
|
||||||
|
\DeclareStringOption[4]{maxdepth}
|
||||||
|
\DeclareStringOption[1.5\baselineskip]{raisemark}
|
||||||
|
\ProcessKeyvalOptions*
|
||||||
|
\newcommand{\gitAbbrevHash}{\gitInf@missing}
|
||||||
|
\newcommand{\gitHash}{\gitInf@missing}
|
||||||
|
\newcommand{\gitAuthorName}{\gitInf@missing}
|
||||||
|
\newcommand{\gitAuthorEmail}{\gitInf@missing}
|
||||||
|
\newcommand{\gitAuthorDate}{\gitInf@missing}
|
||||||
|
\newcommand{\gitAuthorIsoDate}{\gitInf@missing}
|
||||||
|
\newcommand{\gitAuthorUnixDate}{\gitInf@missing}
|
||||||
|
\newcommand{\gitCommitterName}{\gitInf@missing}
|
||||||
|
\newcommand{\gitCommitterEmail}{\gitInf@missing}
|
||||||
|
\newcommand{\gitCommitterDate}{\gitInf@missing}
|
||||||
|
\newcommand{\gitCommitterIsoDate}{\gitInf@missing}
|
||||||
|
\newcommand{\gitCommitterUnixDate}{\gitInf@missing}
|
||||||
|
\newcommand{\gitTags}{}
|
||||||
|
\newcommand{\gitFirstTagDescribe}{\gitInf@missing}
|
||||||
|
\newcommand{\gitReferences}{\gitInf@missing}
|
||||||
|
\newcommand{\gitBranch}{\gitInf@missing}
|
||||||
|
\newcommand{\gitVtag}{}
|
||||||
|
\newcommand{\gitVtags}{}
|
||||||
|
\newcommand{\gitVtagn}{\space\gitInf@missing}
|
||||||
|
\newcommand{\gitRel}{}
|
||||||
|
\newcommand{\gitRels}{}
|
||||||
|
\newcommand{\gitReln}{\space\gitInf@missing}
|
||||||
|
\newcommand{\gitDirty}{}
|
||||||
|
\newcommand{\gitRoff}{}
|
||||||
|
\newcommand{\gitDescribe}{(None)}
|
||||||
|
\newcommand{\gitMarkPref}{[git]}
|
||||||
|
\@ifpackageloaded{xcolor}{%
|
||||||
|
\newcommand{\gitMarkFormat}{\color{gray}\small\sffamily}%
|
||||||
|
}{%
|
||||||
|
\newcommand{\gitMarkFormat}{\small\sffamily}%
|
||||||
|
}
|
||||||
|
\newcommand{\gitMark}{}
|
||||||
|
\newcommand{\gitWrapEmail}[1]{#1}
|
||||||
|
% private values
|
||||||
|
\newif\ifGI@is@a@repo@
|
||||||
|
|
||||||
|
% private constants
|
||||||
|
\providecommand{\GI@repo@prefix}{}
|
||||||
|
\ifbool{gitInf@local}{%
|
||||||
|
\providecommand{\GI@githeadinfo@file}{gitHeadLocal.gin}
|
||||||
|
\def\gitInf@maxdepth{0}
|
||||||
|
}{%
|
||||||
|
\providecommand{\GI@githeadinfo@file}{\GI@repo@prefix.git/gitHeadInfo.gin}
|
||||||
|
}
|
||||||
|
\newcommand{\gitInf@dirtflag}{}
|
||||||
|
\newcommand{\gitInf@describe}{}
|
||||||
|
\newcommand{\gitInf@mcount}{}
|
||||||
|
\newcommand{\gitInf@rel}{}
|
||||||
|
\newcommand{\gitInf@off}{}
|
||||||
|
|
||||||
|
% \TeX{}nical tools
|
||||||
|
|
||||||
|
\newcommand\GI@export@macro[1]{%
|
||||||
|
\edef\@tempa{\endgroup
|
||||||
|
\def\noexpand#1{#1}}%
|
||||||
|
\@tempa}
|
||||||
|
|
||||||
|
% finding the .git directory
|
||||||
|
|
||||||
|
\newcommand\GI@check@repo@prefix{%
|
||||||
|
\GI@is@a@repo@true
|
||||||
|
\IfFileExists{./\GI@githeadinfo@file}{%
|
||||||
|
\edef\GI@repo@prefix{./}%
|
||||||
|
}{%
|
||||||
|
\GI@set@repo@prefix}}
|
||||||
|
|
||||||
|
\newcommand\GI@set@repo@prefix{%
|
||||||
|
\begingroup \count@\gitInf@maxdepth\relax
|
||||||
|
\GI@set@repo@prefix@}
|
||||||
|
|
||||||
|
\newcommand\GI@set@repo@prefix@{%
|
||||||
|
\advance\count@\m@ne
|
||||||
|
\ifnum\count@<\z@
|
||||||
|
% \expandafter\GI@not@a@git@repo
|
||||||
|
\endgroup\relax
|
||||||
|
\else
|
||||||
|
\edef\GI@repo@prefix{../\GI@repo@prefix}%
|
||||||
|
\IfFileExists{\GI@githeadinfo@file}{%
|
||||||
|
\PackageInfo{gitinfo2}{%
|
||||||
|
gitinfo2 found : \GI@githeadinfo@file \MessageBreak
|
||||||
|
}%
|
||||||
|
\GI@export@macro\GI@githeadinfo@file
|
||||||
|
}{%
|
||||||
|
\expandafter\GI@set@repo@prefix@}%
|
||||||
|
\fi}
|
||||||
|
|
||||||
|
\GI@check@repo@prefix
|
||||||
|
\InputIfFileExists{\GI@githeadinfo@file}{}{%
|
||||||
|
\ifbool{gitInf@grumpy}{%
|
||||||
|
\PackageError{gitinfo2}{I can't find the file '\GI@githeadinfo@file'\MessageBreak
|
||||||
|
Please check the manual (gitinfo2.pdf) \MessageBreak
|
||||||
|
if you need more details}{}
|
||||||
|
}{%
|
||||||
|
\PackageWarningNoLine{gitinfo2}{I can't find the file '\GI@githeadinfo@file'.\MessageBreak
|
||||||
|
All git metadata has been set to '\gitInf@missing'}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
% ---------------------------------------------------------------------
|
||||||
|
% Memoir support
|
||||||
|
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
\@ifclassloaded{memoir}{%
|
||||||
|
\ifbool{gitInf@pcount}{
|
||||||
|
\newcommand{\@gitPage}{\thepage/\thelastpage}
|
||||||
|
\addtodef{\frontmatter}{\renewcommand{\@gitPage}{\thepage}}{}
|
||||||
|
\addtodef{\mainmatter}{}{\renewcommand{\@gitPage}{\thepage/\thelastpage}}
|
||||||
|
}{%
|
||||||
|
\newcommand{\@gitPage}{\thepage}
|
||||||
|
}
|
||||||
|
\newcommand{\@gitFootRev}{Release\gitRels: \gitAbbrevHash{} (\gitAuthorDate)}
|
||||||
|
\newcommand{\@gitrFootRev}{%
|
||||||
|
\tiny\textsf{\raggedleft \@gitFootRev}%
|
||||||
|
}%
|
||||||
|
\newcommand{\@gitlFootRev}{%
|
||||||
|
\tiny\textsf{\@gitFootRev}%
|
||||||
|
}%
|
||||||
|
\copypagestyle{giplain}{plain}
|
||||||
|
\copypagestyle{giruled}{ruled}
|
||||||
|
\copypagestyle{giheadings}{headings}
|
||||||
|
\makeevenfoot{giplain}{\@gitPage}{}{\@gitrFootRev}
|
||||||
|
\makeoddfoot{giplain}{\@gitlFootRev}{}{\@gitPage}
|
||||||
|
\makeevenfoot{giruled}{\@gitPage}{}{\@gitrFootRev}
|
||||||
|
\makeoddfoot{giruled}{\@gitlFootRev}{}{\@gitPage}
|
||||||
|
\makeevenfoot{giheadings}{\@gitPage}{}{\@gitrFootRev}
|
||||||
|
\makeoddfoot{giheadings}{\@gitlFootRev}{}{\@gitPage}
|
||||||
|
\makeevenhead{giheadings}{}{}{\slshape\leftmark}
|
||||||
|
\makeoddhead{giheadings}{\slshape\rightmark}{}{}
|
||||||
|
}{}%
|
||||||
|
% ---------------------------------------------------------------------
|
||||||
|
% Watermarking
|
||||||
|
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
\ifbool{gitInf@markifdirty}{%
|
||||||
|
\IfEq{\gitDirty}{}{}{%
|
||||||
|
\booltrue{gitInf@mark}
|
||||||
|
\renewcommand{\gitMarkPref}{[Dirty]}
|
||||||
|
}%
|
||||||
|
}{}%
|
||||||
|
\ifbool{gitInf@markifdraft}{%
|
||||||
|
\ifbool{gitInf@draft}{%
|
||||||
|
\booltrue{gitInf@mark}
|
||||||
|
\renewcommand{\gitMarkPref}{[Draft]}
|
||||||
|
}{}%
|
||||||
|
}{}%
|
||||||
|
\ifbool{gitInf@mark}{%
|
||||||
|
\AddToShipoutPictureBG{%
|
||||||
|
\AtPageLowerLeft{%
|
||||||
|
\raisebox{\gitInf@raisemark}{%
|
||||||
|
\makebox[\paperwidth]{%
|
||||||
|
\begin{minipage}[b]{\paperwidth}%
|
||||||
|
\renewcommand{\baselinestretch}{1}%
|
||||||
|
\centering{\gitMarkFormat\gitMarkPref{} \textbullet{} \gitMark}%
|
||||||
|
\end{minipage}%
|
||||||
|
}%
|
||||||
|
}%
|
||||||
|
}%
|
||||||
|
}%
|
||||||
|
}{}%
|
||||||
|
% ---------------------------------------------------------------------
|
||||||
|
% Datetime integration
|
||||||
|
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
\@ifpackageloaded{datetime2}{%
|
||||||
|
\IfEq{\gitAuthorDate}{\gitInf@missing}{%
|
||||||
|
\DTMsavedate{gitdate}{\THEDAY-\THEMONTH-\THEYEAR}
|
||||||
|
}{%
|
||||||
|
\StrCut{\gitAuthorDate}{-}{\gitInf@year}{\gitInf@md}
|
||||||
|
\StrCut{\gitInf@md}{-}{\gitInf@month}{\gitInf@day}
|
||||||
|
\DTMsavenoparsedate{gitdate}{\gitInf@year}{\gitInf@month}{\gitInf@day}{-1}
|
||||||
|
}
|
||||||
|
}{}%
|
||||||
|
\@ifpackageloaded{datetime}{%
|
||||||
|
\IfEq{\gitAuthorDate}{\gitInf@missing}{%
|
||||||
|
\newdate{gitdate}{\THEDAY}{\THEMONTH}{\THEYEAR}
|
||||||
|
}{%
|
||||||
|
\StrCut{\gitAuthorDate}{-}{\gitInf@year}{\gitInf@md}
|
||||||
|
\StrCut{\gitInf@md}{-}{\gitInf@month}{\gitInf@day}
|
||||||
|
\newdate{gitdate}{\gitInf@day}{\gitInf@month}{\gitInf@year}
|
||||||
|
}
|
||||||
|
}{}%
|
||||||
|
|
@ -81,6 +81,25 @@ compress
|
||||||
|
|
||||||
\section*{}
|
\section*{}
|
||||||
\phantomsection
|
\phantomsection
|
||||||
|
\begin{frame}{First things first}\framesubtitle{Hardwareausgabe}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Verfügbare Sets: 20
|
||||||
|
\item Reserviert: ~19
|
||||||
|
\item Kosten: \EUR{8} pro Set
|
||||||
|
\begin{itemize}
|
||||||
|
\item Bank of WIAI
|
||||||
|
\item \url{https://www.paypal.me/clkl/8}
|
||||||
|
\item Cash
|
||||||
|
\end{itemize}
|
||||||
|
\end{itemize}
|
||||||
|
\begin{figure}[H]
|
||||||
|
%\centering
|
||||||
|
%\flushright
|
||||||
|
\includegraphics[width=.3\textwidth]{qr}
|
||||||
|
\label{img:qr}
|
||||||
|
\end{figure}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
\begin{frame}{Content}
|
\begin{frame}{Content}
|
||||||
\tableofcontents
|
\tableofcontents
|
||||||
\end{frame}
|
\end{frame}
|
||||||
|
|
@ -118,6 +137,7 @@ Cooler: \href{https://micropython.org/}{MicroPython}
|
||||||
\item Frei \& Open Source
|
\item Frei \& Open Source
|
||||||
\item Einige Funktionalität eingeschränkt (z.B. Multithreading)
|
\item Einige Funktionalität eingeschränkt (z.B. Multithreading)
|
||||||
\item Verscheidene Boards/Controller unterstützt: PyBoard, ESP32, \dots
|
\item Verscheidene Boards/Controller unterstützt: PyBoard, ESP32, \dots
|
||||||
|
\item Doku: \url{http://docs.micropython.org/en/latest/esp8266/index.html} (\url{http://iot.wiai/doc})
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
Lowlevel: C, Arduino Studio
|
Lowlevel: C, Arduino Studio
|
||||||
\end{frame}
|
\end{frame}
|
||||||
|
|
@ -143,7 +163,7 @@ Windows
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
Mac
|
Mac
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item Irgendwie so ähnlich\dots
|
\item Homebrew (\url{https://brew.sh}) installieren + \texttt{brew install python3 \&\& pip install esptool}
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
Offline pip: \textit{pip install -f http://iot.wiai/webrepl/}%TODO: --no-index?
|
Offline pip: \textit{pip install -f http://iot.wiai/webrepl/}%TODO: --no-index?
|
||||||
\end{frame}
|
\end{frame}
|
||||||
|
|
@ -153,12 +173,15 @@ Offline pip: \textit{pip install -f http://iot.wiai/webrepl/}%TODO: --no-index?
|
||||||
Windows-Spezial:
|
Windows-Spezial:
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item Portbezeichner: Gerätemanager $\rightarrow$ Serielle Geräte (COM+LPT) $\rightarrow$ COM$X$
|
\item Portbezeichner: Gerätemanager $\rightarrow$ Serielle Geräte (COM+LPT) $\rightarrow$ COM$X$
|
||||||
|
\item python -m esptool
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
Flashen:
|
Flashen:
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item \url{https://micropython.org/download\#esp8266} %TODO: WIAI-link
|
\item \url{https://micropython.org/download\#esp8266} %TODO: WIAI-link
|
||||||
\item \texttt{esptool.py --port /dev/ttyUSB0 erase\_flash}
|
\item[*nix] \texttt{esptool.py --port /dev/ttyUSB0 erase\_flash}
|
||||||
\item \texttt{esptool.py --port /dev/ttyUSB0 --baud 460800 write\_flash --flash\_size=detect 0 esp8266-20170823-v1.9.2.bin}
|
\item[win] \texttt{python -m esptool --port COM12 erase\_flash}
|
||||||
|
\item[*nix] \texttt{esptool.py --port /dev/ttyUSB0 --baud 460800 write\_flash --flash\_size=detect 0 esp8266-20170823-v1.9.2.bin}
|
||||||
|
\item[win] \texttt{python -m esptool --port COM12 --baud 460800 write\_flash --flash\_size=detect 0 esp8266-20170823-v1.9.2.bin}
|
||||||
\item reset
|
\item reset
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
\end{frame}
|
\end{frame}
|
||||||
|
|
@ -170,27 +193,27 @@ Flashen:
|
||||||
\item \texttt{picocom -b 115200 /dev/ttyUSB0}
|
\item \texttt{picocom -b 115200 /dev/ttyUSB0}
|
||||||
\item $n$ beherzte \textit{<ENTER>}-Drücke
|
\item $n$ beherzte \textit{<ENTER>}-Drücke
|
||||||
\item Docker: \texttt{docker-compose run esp} (evtl. TTY anpassen)
|
\item Docker: \texttt{docker-compose run esp} (evtl. TTY anpassen)
|
||||||
|
\item[exit] Ctrl-a Ctrl-x
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
Windows:
|
Windows:
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item puTTY
|
\item PuTTY
|
||||||
\item Serielle Verbindung
|
\item Serielle Verbindung
|
||||||
\item 115200 Baud
|
\item 115200 Baud
|
||||||
\item $n$ beherzte \textit{<ENTER>}-Drücke
|
\item $n$ beherzte \textit{<ENTER>}-Drücke
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
%TODO: bild mit REPL (inkl ENTERs)
|
|
||||||
\end{frame}
|
\end{frame}
|
||||||
|
|
||||||
\lstset{language=Python,captionpos=b}
|
\lstset{language=Python,captionpos=b}
|
||||||
|
|
||||||
\begin{frame}{REPL}
|
\begin{frame}{REPL}
|
||||||
\framesubtitle{Hello World!}
|
\framesubtitle{Hello World!}
|
||||||
%TODO: bild
|
\image{.7\textwidth}{repl}{REPL}{img:repl}
|
||||||
\end{frame}
|
\end{frame}
|
||||||
|
|
||||||
|
|
||||||
\subsection{Wlan}
|
\subsection{WLAN}
|
||||||
\begin{frame}[fragile]{Wlan}\framesubtitle{Put the I in IoT}
|
\begin{frame}[fragile]{WLAN}\framesubtitle{Put the I in IoT}
|
||||||
\begin{lstlisting}[caption={Descriptive Caption Text},label=DescriptiveLabel]
|
\begin{lstlisting}[caption={Descriptive Caption Text},label=DescriptiveLabel]
|
||||||
import network
|
import network
|
||||||
sta_if = network.WLAN(network.STA_IF)
|
sta_if = network.WLAN(network.STA_IF)
|
||||||
|
|
@ -211,13 +234,30 @@ import webrepl_setup
|
||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item \textit{import webrepl\_setup}
|
\item \textit{import webrepl\_setup}
|
||||||
\item reset/start webrepl (import webrepl \& webrepl.start())
|
\item reset/start webrepl (\textit{import webrepl \& webrepl.start()})
|
||||||
\item visit \url{http://iot.wiai/webrepl/} or \url{http://micropython.org/webrepl/}
|
\item visit \url{http://iot.wiai/webrepl/} or \url{http://micropython.org/webrepl/}
|
||||||
\item enter your ESP's IP (\textit{sta\_if.ifconfig()}) \& connect
|
\item enter your ESP's IP (\textit{sta\_if.ifconfig()}) \& connect
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
\end{frame}
|
\end{frame}
|
||||||
|
|
||||||
\subsection{Init}
|
\subsection{Init}
|
||||||
|
\begin{frame}[fragile]{main.py}
|
||||||
|
Wird beim starten ... gestartet
|
||||||
|
|
||||||
|
\begin{lstlisting}[caption={main.py},label=mainpy]
|
||||||
|
def connect_wifi(ssid, passphrase):
|
||||||
|
#TODO ;)
|
||||||
|
pass
|
||||||
|
|
||||||
|
def setup():
|
||||||
|
#TODO configure sensors, ...
|
||||||
|
pass
|
||||||
|
|
||||||
|
connect_wifi()
|
||||||
|
setup()
|
||||||
|
\end{lstlisting}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
\subsection{Exkurs: Flask-Server}
|
\subsection{Exkurs: Flask-Server}
|
||||||
\begin{frame}[fragile]{Gegenseite: Flask}
|
\begin{frame}[fragile]{Gegenseite: Flask}
|
||||||
\begin{lstlisting}[caption={C\&C Server},label=cnc]
|
\begin{lstlisting}[caption={C\&C Server},label=cnc]
|
||||||
|
|
@ -234,15 +274,16 @@ Starten:
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item[!] pip install Flask
|
\item[!] pip install Flask
|
||||||
\item python server.py
|
\item python server.py
|
||||||
\item docker-compose up (server.py in src/)
|
\item[||] docker-compose up (server.py in src/)
|
||||||
\item FLASK\_APP=server.py flask run
|
\item[||] FLASK\_APP=server.py flask run
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
\end{frame}
|
\end{frame}
|
||||||
|
|
||||||
\begin{frame}[fragile]{Daten übertragen}
|
\begin{frame}[fragile]{Daten übertragen}
|
||||||
\begin{lstlisting}[caption={HTTP Requests},label=http]
|
\begin{lstlisting}[caption={HTTP Requests},label=http]
|
||||||
import urequests
|
import urequests
|
||||||
host = "http://your.host.ip.here:5000"
|
host = "http://your.host.ip.here:5000"
|
||||||
response = urequests.get(host)q
|
response = urequests.get(host)
|
||||||
print(response)
|
print(response)
|
||||||
|
|
||||||
import machine
|
import machine
|
||||||
|
|
@ -258,19 +299,21 @@ urequests.post(post_url, data=data, headers=json_header)
|
||||||
\section{Basteln}
|
\section{Basteln}
|
||||||
\subsection{Blinkende LED}
|
\subsection{Blinkende LED}
|
||||||
\begin{frame}{LED anschließen}
|
\begin{frame}{LED anschließen}
|
||||||
TODO schema
|
\image{.4\textwidth}{node-led}{LED \cite{node-led}}{img:led}
|
||||||
\end{frame}
|
\end{frame}
|
||||||
\begin{frame}[fragile]{LEDs}
|
\begin{frame}[fragile]{LEDs}
|
||||||
\begin{lstlisting}[caption={LED},label=led]
|
\setbeamercovered{invisible}
|
||||||
|
\lstset{tabsize=6}
|
||||||
|
\begin{lstlisting}[caption={LED},label=led,escapeinside={(*@}{@*)}]
|
||||||
import machine, time, math
|
import machine, time, math
|
||||||
pin = machine.Pin(0, machine.Pin.OUT)
|
pin = machine.Pin(0, machine.Pin.OUT)
|
||||||
pin.on()
|
pin.on()
|
||||||
pin.off()
|
pin.off()
|
||||||
|
(*@\onslide<2->@*)
|
||||||
pwm = machine.PWM(pin)
|
pwm = machine.PWM(pin)
|
||||||
pwm.duty(512)
|
pwm.duty(512)
|
||||||
pwm.deinit()
|
pwm.deinit()
|
||||||
|
(*@\onslide<3->@*)
|
||||||
def pulse(l, t):
|
def pulse(l, t):
|
||||||
for i in range(20):
|
for i in range(20):
|
||||||
l.duty(int(math.sin(i / 10 * math.pi) * 500 + 500))
|
l.duty(int(math.sin(i / 10 * math.pi) * 500 + 500))
|
||||||
|
|
@ -280,24 +323,23 @@ pulse(led, 50)
|
||||||
for i in range(10):
|
for i in range(10):
|
||||||
pulse(led, 20)
|
pulse(led, 20)
|
||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
|
|
||||||
\end{frame}
|
\end{frame}
|
||||||
\subsection{Schalter und Taster}
|
\subsection{Schalter und Taster}
|
||||||
\begin{frame}[fragile]{Input}
|
\begin{frame}[fragile]{Input}
|
||||||
TODO: schema
|
\image{.35\textwidth}{button-nodemcu}{Taster \cite{node-button}}{img:button}
|
||||||
\begin{lstlisting}[caption={Input},label=input]
|
\begin{lstlisting}[caption={Input},label=input]
|
||||||
import machine
|
import machine
|
||||||
pin = machine.Pin(0, machine.Pin.IN, machine.Pin.PULL_UP)
|
pin = machine.Pin(0, machine.Pin.IN, machine.Pin.PULL_UP)
|
||||||
status = pin.value()
|
# status = pin.value()
|
||||||
|
|
||||||
def callback(p):
|
def callback(p):
|
||||||
print('changed', p)
|
print('changed', p)
|
||||||
|
|
||||||
pin.irq(trigger=machine.Pin.IRQ_RISING | machine.Pin.IRQ_FALLING, handler=callback)
|
pin.irq(trigger=machine.Pin.IRQ_RISING | machine.Pin.IRQ_FALLING, handler=callback)
|
||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
\end{frame}
|
\end{frame}
|
||||||
\subsection{Sensoren}
|
\subsection{Sensoren}
|
||||||
\begin{frame}[fragile]{Sensoren}
|
\begin{frame}[fragile]{Sensoren}
|
||||||
TODO: schema
|
\image{.35\textwidth}{nodemcu-dht22}{DHT22 \cite{node-dht}}{img:dht}
|
||||||
\begin{lstlisting}[caption={Sensoren},label=senors]
|
\begin{lstlisting}[caption={Sensoren},label=senors]
|
||||||
import dht
|
import dht
|
||||||
import machine
|
import machine
|
||||||
|
|
@ -308,6 +350,16 @@ d.humidity()
|
||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
\end{frame}
|
\end{frame}
|
||||||
|
|
||||||
|
\subsection{Interrupts}
|
||||||
|
\begin{frame}{Here be dragons}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Z.B. Callbacks von Tastern
|
||||||
|
\item pausieren main
|
||||||
|
\item dürfen keinen Speicher allozieren
|
||||||
|
\item Emergency exception buffer: \textit{micropython.alloc\_emergency\_exception\_buf(100)}
|
||||||
|
\end{itemize}
|
||||||
|
\cite{mp-interrupt}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
%%%%%%%%%% References %%%%%%%%%%
|
%%%%%%%%%% References %%%%%%%%%%
|
||||||
|
|
@ -327,7 +379,9 @@ d.humidity()
|
||||||
\item \url{https://learn.adafruit.com/micropython-hardware-i2c-devices/overview}
|
\item \url{https://learn.adafruit.com/micropython-hardware-i2c-devices/overview}
|
||||||
\item \url{http://luftdaten.info/}
|
\item \url{http://luftdaten.info/}
|
||||||
\item \url{https://micropython-on-esp8266-workshop.readthedocs.io/en/latest/index.html}
|
\item \url{https://micropython-on-esp8266-workshop.readthedocs.io/en/latest/index.html}
|
||||||
|
\item \url{http://micropython-iot-hackathon.readthedocs.io/en/latest/index.html}
|
||||||
\item MQTT, \href{http://nsq.io/}{nsq.io}
|
\item MQTT, \href{http://nsq.io/}{nsq.io}
|
||||||
|
\item Dateisystem
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
\end{frame}
|
\end{frame}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue