% -*- coding: utf-8; -*- % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -+ % | % (C)opyright A. Hilbig, mail@andrehilbig.de | % http://www.andrehilbig.de/Publications | % | % diese Datei: ahilbig-comics.sty | % | % Das Dokument steht unter der Lizenz: Creative Commons by-nc-sa Version 4.0 | % http://creativecommons.org/licenses/by-nc-sa/4.0/deed.de | % | % Nach dieser Lizenz darf das Dokument beliebig kopiert und bearbeitet werden, | % sofern das Folgeprodukt wiederum unter gleichen Lizenzbedingungen vertrieben | % und auf die ursprünglichen Urheber verwiesen wird. | % Eine kommerzielle Nutzung ist ausdrücklich ausgeschlossen. | % | % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -+ % | % HINWEISE/ERWEITERUNG | % Diese Pakete basieren auf den entsprechenden Paketen von Prof. Dr. Ludger Humbert | % (http://ddi.uni-wuppertal.de/ -- humbert@uni-wuppertal.de) und wurden zum Teil angepasst. Seine | % Pakete basieren wiederum auf Entwicklungen von Prof. Dr. Till Tantau | % (http://www.tcs.uni-luebeck.de/de/mitarbeiter/tantau/). Beiden gilt mein Dank hierfür. | % | % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -+ % | \ProvidesPackage{ahilbig-comics} \@ifclassloaded{beamer}{}{\RequirePackage{beamerarticle}} \RequirePackage{emerald} \RequirePackage{tikz} \usetikzlibrary{calc,matrix} \pgfkeys{/comics/.cd, professor says/.code=\ddiprofessorsays{#1}, professor thinks/.code=\ddiprofessorthinks{#1}, student says/.code=\ddistudentsays{#1}, student thinks/.code=\ddistudentthinks{#1}, bingo/.code={\alt
{\ddibingo#1}{\def\ddibingonow{\ddibingo#1}}}, done/.code=\ddicomicdone, } \def\ddicomicpicture[#1]{ \begin{tikzpicture}[baseline={([yshift=1.2cm]people)},inner sep=0pt,outer sep=0pt] \coordinate (last) at (0,0); \coordinate (last professor) at (0,0); \coordinate (last student) at (0,0); \ddicomicspokendonefalse \def\ddibingonow{} \pgfkeys{/comics/.cd,#1,done} \end{tikzpicture} } \mode
\def\ddicomic[#1]{ {% \setlength{\marginparsep}{.65cm}% \setlength{\marginparwidth}{4.1cm}% \marginpar{% \ddicomicpicture[#1] }% }\refstepcounter{framenumber}% \ignorespaces% } \mode \def\ddicomic[#1]{ \begin{frame} \begin{center} \ddicomicpicture[#1] \end{center} \end{frame} } \mode \newif\ifddicomicspokendone \newif\ifddicomicspokenprofessor \newif\ifddicomicspokenstudent \newif\ifddicomicthoughtprofessor \newif\ifddicomicthoughtstudent \def\ddicomicdone{ \ifddicomicspokendone\else\ddicomicpeople\fi \ifddicomicthoughtprofessor \draw[overlay,black!50] { [shift=(people),xshift=.3cm,yshift=.5cm] \foreach \angle/\radius in {0/1,20/1.2,40/1.4,60/1.6,80/1.7} { (90+\angle:.5cm) circle[radius=\radius*1pt] } let \p1 = ($ (people) - (professor thinks) + (0,10pt) $) in \foreach \pos in {3,8,...,\y1} { (-.5cm,-\pos pt) circle [radius=1.7pt] \pgfextra{\global\let\lastpos\pos} } (-.5cm+3pt,-\lastpos pt-4pt) circle [radius=1.7pt] }; \fi \ifddicomicthoughtstudent \draw[overlay,black!50] { [shift=(people),xshift=3.9cm,yshift=.6cm] \foreach \angle/\radius in {10/1.2,40/1.4,80/1.7} { (90-\angle:.3cm) circle[radius=\radius*1pt] } let \p1 = ($ (people) - (student thinks) + (0,10pt) $) in \foreach \pos in {3,8,...,\y1} { (.3cm,-\pos pt) circle [radius=1.7pt] \pgfextra{\global\let\lastpos\pos} } (.3cm-3pt,-\lastpos pt-4pt) circle [radius=1.7pt] }; \fi } \def\ddibingo#1#2#3#4#5#6#7#8#9{% \alt{\tikzset{where/.style={matrix anchor=south east,at={(-20pt,10pt)}}}}{\tikzset{where/.style={matrix anchor=north west,at=(last)}}} \matrix [where,anchor=center] (last bingo) [text width=1.1cm,align=center,matrix of nodes, inner sep=2pt, nodes={fill=black!10, anchor=center, minimum height=1.2cm, minimum width=1.2cm}, column sep=1mm, row sep=1mm, execute at begin cell=\ECFAugie\fontsize{6}{7}\selectfont\hskip0pt,ampersand replacement=\&] {#1\par\\par\\par\\#4\par\\par\\par\\#7\par\\par\ \par\\}; \node [above] at ([yshift=1em]last bingo.north) {\ECFAugie\fontsize{8}{9}\selectfont Bingo gegen Langeweile}; \coordinate (last) at ([yshift=-2em]last bingo.south west); } \newbox\testbox \long\def\ddiprofessorsays#1{% \node [below right] (last professor) at (last) [text width=3.5cm,align=left] {\ECFAugie \fontsize{8}{9}\selectfont\ignorespaces#1\par}; \coordinate (last) at ([yshift=-1em]last professor.south west); \ddicomicspokenprofessortrue } \newif\ifddicomicwide \def\dditestwide#1{ \pgfinterruptpicture% \setbox\testbox=\hbox{\ECFAugie \fontsize{8}{9}\selectfont #1}% \ifdim\wd\testbox>3.5cm% \global\ddicomicwidetrue% \else% \global\ddicomicwidefalse% \fi% \endpgfinterruptpicture% } \long\def\ddistudentsays#1{% \dditestwide{#1} \node [below right] (last student) at (last) [text width=3.5cm,xshift=5mm,align/.expanded=\ifddicomicwide left\else flush right\fi] {\ECFAugie \fontsize{8}{9}\selectfont\ignorespaces#1\par}; \coordinate (last) at ([xshift=-5mm,yshift=-1em]last student.south west); \ddicomicspokenstudenttrue } \long\def\ddiprofessorthinks#1{% \ifddicomicspokendone\else\ddicomicpeople\fi \node [below right] (x) at (last) [text width=3.5cm,align=left,text=black!50] {\ECFAugie \fontsize{8}{9}\selectfont\ignorespaces#1\par}; \coordinate (last) at ([yshift=-1em]x.south west); \ifddicomicthoughtprofessor \else \ddicomicthoughtprofessortrue \coordinate (professor thinks) at (x.north west); \fi } \long\def\ddistudentthinks#1{% \dditestwide{#1} \ifddicomicspokendone\else\ddicomicpeople\fi \node [below right] (x) at (last) [xshift=5mm,text width=3.5cm,align/.expanded=\ifddicomicwide left\else flush right\fi,text=black!50] {\ECFAugie \fontsize{8}{9}\selectfont\ignorespaces#1\par}; \coordinate (last) at ([xshift=-5mm,yshift=-1em]x.south west); \ifddicomicthoughtstudent \else \ddicomicthoughtstudenttrue \coordinate (student thinks) at (x.north east); \fi } \def\ddicomicpeople{% \ddicomicspokendonetrue \begin{scope}[shift=(last),yshift=-1.6cm] % Professor \begin{scope}[shift={(0.5,1)}] \node (head) [minimum size=6pt, draw, inner sep=0pt, circle] {}; \draw (head.south) -- ++(0,-7pt) coordinate (groin); \draw (groin) -- ++(-70:8pt) (groin) -- ++(-110:8pt); \draw ([yshift=-2pt]head.south) coordinate (shoulders) -- ++(10:5pt) (shoulders) -- ++(-30:5pt); \end{scope} \foreach \j in {3,2,1}{ \begin{scope}[xshift=1cm,shift=(20:\j*0.6)] \foreach \i in {1,...,5} { \begin{scope}[shift={(0.2,1.3)},shift=(-45:\i*.25)] \node (head) [minimum size=5pt, draw, inner sep=0pt, fill=white,circle] {}; \pgfmathsetmacro{\dir}{0.5} \draw (head.south) -- ++(70+\dir*20:-8pt) coordinate [near start] (shoulders\i); \end{scope} } \draw [line join=round] (0,1) -- (1,0) -- (1,-0.3) -- (0,0.7) -- (0,1); \filldraw [fill=white,line join=round] (0,1) -- (0.2,1) -- (1.2,0) -- (1,0) -- cycle; \foreach \i in {1,...,5} { \draw (shoulders\i) -- ++(-180+0.5*20:5pt) (shoulders\i) -- ++(-150+0.5*20:5pt); } \end{scope} } \ifddicomicspokenprofessor \draw[overlay] (.6,1.1) to [out=100,in=-86] (-0.2,1.7) to [out=94,in=-94] ([xshift=-2mm]last professor.south west) to [out=86,in=-135] ([yshift=2mm,xshift=-1mm]last professor.south west); \fi \ifddicomicspokenstudent \draw[overlay] (3.75,1.15) to [out=100,in=-94] (4.2,1.9) to [out=86,in=-86] ([xshift=2mm]last student.south east) to [out=94,in=-45] ([yshift=2mm,xshift=1mm]last student.south east); \fi \coordinate (last) at (0,-.3); \coordinate (people) at (0,0); \only{\ddibingonow} \end{scope} } \def\defddicomic#1[#2]{ \expandafter\def\csname ddi@comic@#1\endcsname{#2} } \def\useddicomic#1{% \expandafter\let\expandafter\dditemp\csname ddi@comic@#1\endcsname \expandafter\ddicomic\expandafter[\dditemp]} \endinput