% -*- coding: utf-8; -*- % Adrian Salamon % Bergische Universitaet Wuppertal % since 2017-09-23 % to 2018-04-03 % LaTeX project public license, version 1.3c % % notes for further development: % % TODO: Versionnummerierung fixen (evtl besseres) Konzept finden % TODO: maybe remove LED-Background? % % % % \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{tikzcodeblocks}[2018/04/03 v.0.12 - TikZ Styles and macros for typesetting blockwise graphic programming languages like scratch, nepo or pxt] \RequirePackage{adjustbox} \RequirePackage{xcolor} \RequirePackage{colortbl} \RequirePackage{fontawesome} \RequirePackage{tikz} \RequirePackage{longtable} \usetikzlibrary{matrix, positioning, fit,calc,shapes,backgrounds,math,trees,decorations.markings,shapes,arrows.meta,arrows} \usetikzlibrary{decorations,decorations.pathmorphing} \RequirePackage{translations} \RequirePackage{xspace} \RequirePackage{ifthen} \newboolean{no-colors} \setboolean{no-colors}{false} \DeclareOption{print}{ \setboolean{no-colors}{true} } \ProcessOptions\relax % % % % Translations % % % \DeclareTranslationFallback {if}{if} \DeclareTranslation{English}{if}{if} \DeclareTranslation{German} {if}{wenn} \DeclareTranslationFallback {then}{then} \DeclareTranslation{English}{then}{then} \DeclareTranslation{German} {then}{dann} \DeclareTranslationFallback {else}{else} \DeclareTranslation{English}{else}{else} \DeclareTranslation{German} {else}{sonst} \DeclareTranslationFallback {do}{do} \DeclareTranslation{English}{do}{do} \DeclareTranslation{German} {do}{mache} % % % % Variables for intents and positioning % % % % xshift= \blockhspace % xshift= -\blockhspace \newlength{\blockhspace} \setlength{\blockhspace}{1em} \newlength{\blockvspace} \setlength{\blockvspace}{2pt} \newboolean{noIndentForPin} \setboolean{noIndentForPin}{true} \newcommand{\einruecken}[1]{\setboolean{noIndentForPin}{false}#1\setboolean{noIndentForPin}{true}} % % % % Colordefinitions like pxt.calliope.cc % % % % \definecolor{grundlagen-color}{HTML}{54C9C9} \definecolor{eingaben-color}{HTML}{C90072} \definecolor{musik-color}{HTML}{DF4600} \definecolor{led-color}{HTML}{8169E6} \definecolor{schleifen-color}{HTML}{107C10} \definecolor{logik-color}{HTML}{006970} \definecolor{platzhalter-color}{HTML}{A80000} \definecolor{mathematik-color}{HTML}{712672} \definecolor{funk-color}{HTML}{E3008C} \definecolor{motoren-color}{HTML}{008272} \definecolor{text-color}{HTML}{996600} \definecolor{spiel-color}{HTML}{008272} \definecolor{bilder-color}{HTML}{5C2D91} \definecolor{pins-color}{HTML}{A80000} \definecolor{konsole-color}{HTML}{002050} \definecolor{steuerung-color}{HTML}{42495F} \definecolor{bluetooth-color}{HTML}{0082FB} % \definecolor{int-color}{HTML}{C6A8C7} \definecolor{string-color}{HTML}{D6C299} \definecolor{boolean-color}{HTML}{99C3C6} \definecolor{color-color}{HTML}{BBE9E9} % Fallback LED-BG \definecolor{led-bg-color}{HTML}{54C9C9} \definecolor{led-on-color}{HTML}{F6F0A6} %das hier ist NEPO color \pgfdeclarelayer{background} \pgfsetlayers{background,main} % allow local colordefinitions \newcommand{\setcolor}[2]{\definecolor{#1}{HTML}{#2}} % % % % Code-Block Objects % % % % global styles \tikzset{ codeblocks/.style = { font = \ttfamily,rounded corners=2pt, rectangle,thick, align=left, node distance=6pt, transform shape, % for scaling anchor=base, baseline, robertashape, }, eckig/.style ={rounded corners = 0pt}, nocolor/.style={fill=white, text = black, draw = black!60}, } % % PXT-Nodes % % % % % Colordefinitions like lab.open-roberta.org % \tikzset{ % grundlage/.style = {fill=grundlagen-color, text = white, draw = grundlagen-color!60!black,}, eingabe/.style = {fill=eingaben-color, text = white, draw = eingaben-color!60!black, }, schleife/.style = {fill=schleifen-color, text = white, draw = schleifen-color!60!black, }, logik/.style = {fill=logik-color, text = white, draw = logik-color!60!black, }, musik/.style = {fill=musik-color, text = white, draw = musik-color!60!black, }, led/.style = {fill=led-color, text = white, draw = led-color!60!black, }, platzhalter/.style = {fill=platzhalter-color, text = white, draw = platzhalter-color!60!black, }, mathe/.style = {fill=mathematik-color, text = white, draw = mathematik-color!60!black, }, funk/.style = {fill=funk-color, text = white, draw = funk-color!60!black, }, motor/.style = {fill=motoren-color, text = white, draw = motoren-color!60!black, }, zeichenkette/.style = {fill=text-color, text = white, draw = text-color!60!black, }, spiel/.style = {fill=spiel-color, text = white, draw = spiel-color!60!black, }, bild/.style = {fill=bilder-color, text = white, draw = bilder-color!60!black,align=left, }, pins/.style = {fill=pins-color, text = white, draw = pins-color!60!black, }, konsole/.style = {fill=konsole-color, text = white, draw = konsole-color!60!black, }, steuerung/.style = {fill=steuerung-color, text = white, draw = steuerung-color!60!black, }, bluetooth/.style = {fill=bluetooth-color, text = white, draw = bluetooth-color!60!black, }, % % Fallback styles / for NEPO commandos aktion/.style = {grundlage}, farbe/.style={grundlage}, % kontrolle/.style = {schleife}, sensor/.style={pins}, start/.style={grundlage}, sensor/.style={eingabe}, liste/.style={konsole}, variablen/.style={platzhalter}, nachricht/.style={bluetooth}, funktion/.style={steuerung}, } % % END PXT colors % % % % % % START OpenRoberta-Nodes colors % % % OpenRoberta Colors als package option: \tikzset{ define color/.code 2 args={ \definecolor{#1}{HTML}{#2} }, openroberta/.style={ square, %keine Rundungen define color={start-color}{E2001A}, define color={aktion-color}{F29400}, define color={sensoren-color}{8FA402}, define color={kontrolle-color}{EB6A0A}, define color={logik-color}{33B8CA}, define color={mathematik-color}{005A94}, define color={text-color}{BACC1E}, define color={listen-color}{39378B}, define color={farben-color}{EBC300}, define color={bilder-color}{DF01D7}, define color={led-bg-color}{DF01D7}, define color={led-on-color}{EDFEA0}, define color={led-off-color}{F299EF}, define color={variablen-color}{9085BA}, define color={funktionen-color}{179C7D}, define color={nachrichten-color}{FF69B4}, % define color={int-color}{005A94}, define color={string-color}{BACC1E}, define color={boolean-color}{33B8CA}, define color={color-color}{EBC300}, % start/.style = {fill=start-color, text = white, draw = start-color!60!black,}, aktion/.style = {fill=aktion-color, text = white, draw = aktion-color!60!black,}, sensor/.style = {fill=sensoren-color, text = white, draw = sensoren-color!60!black,}, kontrolle/.style = {fill=kontrolle-color, text = white, draw = kontrolle-color!60!black,}, logik/.style = {fill=logik-color, text = white, draw = logik-color!60!black,}, mathe/.style = {fill=mathematik-color, text = white, draw = mathematik-color!60!black,}, zeichenkette/.style = {fill=text-color, text = white, draw = text-color!60!black,}, liste/.style = {fill=listen-color, text = white, draw = listen-color!60!black,}, farbe/.style = {fill=farben-color, text = white, draw = farben-color!60!black,}, bild/.style = {fill=bilder-color, text = white, draw = bilder-color!60!black,}, variablen/.style = {fill=variablen-color, text = white, draw = variablen-color!60!black,}, funktion/.style = {fill=funktionen-color, text = white, draw = funktionen-color!60!black,}, nachricht/.style = {fill=nachrichten-color, text = white, draw = nachrichten-color!60!black,}, % % Fallback styles / for PXT commandos schleife/.style = {kontrolle}, pins/.style = {sensor}, grundlage/.style = {start}, eingabe/.style = {sensor}, konsole/.style = {liste}, platzhalter/.style= {variablen}, bluetooth/.style = {nachricht}, steuerung/.style = {funktion}, ledOn/.style = {node distance = 1mm, circle,radius=2mm,fill=led-on-color, draw=black,opacity=1,draw}, %TODO Color fixen ledOff/.style = {node distance = 1mm, circle,radius=2mm,fill=led-off-color, draw=black,opacity=1,draw}, %TODO Color fixen }%robertafarben }%tikzset % % % % % ENDE Open Roberta % % % % % % % global style definitions % \tikzset{ umgebung/.style = {draw,line width=2pt,transform shape=false}, % yshift ausgleich for each element % Pictures/LED-Matrix ledOn/.style = {node distance = 1mm, circle, radius=2mm, fill=red, draw=black,opacity=1, draw}, ledOff/.style = {node distance = 1mm, circle, radius=2mm, fill=white, draw=black,opacity=0.7, draw}, % % Boxes and smaller elements % dropdown/.style = { fill=white, draw=none, opacity=0.7, % Leider auch Schriftsichtbarkeit rectangle, rounded corners=2pt, inner sep=2pt, anchor = base, text = black, text depth=0.50ex, }, intbox/.style = { fill=int-color, draw=none, opacity=0.7, % Leider auch Schriftsichtbarkeit rectangle, rounded corners=2pt, inner sep=3pt, text = black, anchor=west, }, stringbox/.style = { fill=string-color, draw=none, opacity=0.7, % Leider auch Schriftsichtbarkeit rectangle, rounded corners=2pt, inner sep=3pt, text = black, anchor=west, }, boolbox/.style = { fill=color-color, draw=none, opacity=0.7, % Leider auch Schriftsichtbarkeit rectangle, rounded corners=2pt, inner sep=3pt, text = black, anchor=west, }, % ledanzeige/.style = {% LEDs Help matrix of nodes, row sep=4pt, column sep=4pt, ampersand replacement=\&, anchor=base, fill=led-bg-color, nopins }, % boden/.style = {% Für Baseline anordnung der Dropdown baseline, anchor=base, text height=1.7ex, text depth=0.3ex, minimum width=1em }, % base/.style = {% Für Baseline anordnung der Dropdown anchor=base, baseline}, keinezacken/.style = {% Für Deaktivierung der OpenRobertaZacken rectangle}, % % unter={NODENAME}{X-distance}{Y-distance} unter/.style n args={3}{below right = #3\blockvspace and #2\blockhspace of #1.south west}, % % https://tex.stackexchange.com/questions/223910/reference-a-nodes-color-by-using-node-name % get color of 'this' element every text node part/.add code={}{% \globalcolorstrue% \ifx\tikz@fillcolor\pgfutil@empty% \pgfutil@colorlet{\tikz@fig@name.fill}{.}% \else% \pgfutil@colorlet{\tikz@fig@name.fill}{\tikz@fillcolor}% \fi% \ifx\tikz@strokecolor\pgfutil@empty% \pgfutil@colorlet{\tikz@fig@name.draw}{.}% \else% \pgfutil@colorlet{\tikz@fig@name.draw}{\tikz@strokecolor}% \fi% \ifx\tikz@textcolor\pgfutil@empty% \pgfutil@colorlet{\tikz@fig@name.text}{.}% \else% \pgfutil@colorlet{\tikz@fig@name.text}{\tikz@textcolor}% \fi% }, } %end tikzset % % % % macros for boxes, LEDs, etc. % % % \newcommand{\dropdown}[1]{\hspace*{-0.5em} \tikz[boden]\node[dropdown]{ #1\,\tikz[scale=0.3,baseline=-0.3em] \draw [fill,rounded corners=0mm,] (0,0)--(0.5,0)--(0.25,-0.5)--cycle;% Dreieck };\hspace*{-0.5em} } \newcommand{\intbox}[2][]{ \tikz[anchor=center,baseline=-4.0pt,]\strut\node[intbox,#1,text width = {width("{#2}")+0.5em}]{ %this is tikz-magic... 1 \tikz[boden]\strut\node[fill=white,rounded corners=6pt,opacity=1,keinezacken,text width = {width("{#2}")-0.0em} %this is tikz-magic... 2 ]{ #2}; };\xspace } % Fix for print option at stringboxes \ifthenelse {\boolean{no-colors}}% if {\newcommand{\setupquotes}{\normalfont \bfseries \huge \vspace*{1em}\color{black}}}% then {\newcommand{\setupquotes}{\normalfont \bfseries \huge \vspace*{1em}\color{white}}}% else % box containing strings \newcommand{\stringbox}[2][]{ \begin{tikzpicture}[anchor=center,baseline=-4.0pt,] \strut\node[stringbox,#1](string1){ {\setupquotes ``}\,\tikz[boden]\strut\node[yshift=0.5em,fill=white,rounded corners=2pt,opacity=1,keinezacken]{#2} ;\setupquotes\,''\vspace*{-0.9em}}; \end{tikzpicture} } % box containing boolean \newcommand{\boolbox}[2][]{ \tikz[anchor=center,baseline=-4.0pt,]\strut\node[boolbox,#1]{ \tikz[boden]\strut\node[fill=white,rounded corners=2pt,opacity=1,keinezacken]{#2}; }; } % % % % % % % % % Images / LEDs % Bilder / LEDs % container for pictures \newcommand{\bild}[2][1]{ \hspace*{-16pt} %macht es etwas kompakter \scalebox{#1}[#1]{ \tikz\matrix[ledanzeige] %TODO: outer sep einfuegen/entfernen {#2}; \hspace*{-16pt} % Ausgleich des zuvielen & } } \newcommand{\0}{|[ledOff]|\&} \newcommand{\X}{|[ledOn]|\&} % template for all LEDs off \newcommand{\emptyled} { \0 \0 \0 \0 \0 \\ \0 \0 \0 \0 \0 \\ \0 \0 \0 \0 \0 \\ \0 \0 \0 \0 \0 \\ \0 \0 \0 \0 \0 \\ } % template for all LEDs on \newcommand{\fullled} { \X \X \X \X \X \\ \X \X \X \X \X \\ \X \X \X \X \X \\ \X \X \X \X \X \\ \X \X \X \X \X \\ } % % % % % % END images % % % % % % % % % Structures: Branches and Loops % Strukturen: Wenn-Dann/ Wenn-Dann-Sonst / Schleife \def\myspace{\vspace{5pt}} \def\myshift{0.95em} \newcommand{\wenndann}[4][]{ \node[logik,#1](#4){% % \renewcommand{\arraystretch}{1} \hspace*{-1em}\setboolean{noIndentForPin}{true} \begin{tabular}{@{}ll} \GetTranslation{if} \myspace\\%\hline \GetTranslation{then} &\begin{tikzpicture}[anchor=north,yshift=\myshift ]#3\end{tikzpicture}\myspace\\[0.5em] \end{tabular}}; } \newcommand{\wenndannsonst}[5][]{ \node[logik,#1](#5){% % \renewcommand{\arraystretch}{1} \hspace*{-1em}\setboolean{noIndentForPin}{true} \begin{tabular}{@{}ll} \GetTranslation{if} \myspace\\ %\hline \GetTranslation{then} &\begin{tikzpicture}[anchor=north, yshift=\myshift ]#3\end{tikzpicture}\myspace\\ \GetTranslation{else}&\begin{tikzpicture}[anchor=north, yshift=\myshift ]#4\end{tikzpicture}\myspace\\ \end{tabular}}; } \newcommand{\schleife}[5][]{ \node[kontrolle,#1](#5){\\ \renewcommand{\arraystretch}{1} \hspace*{-1em}\setboolean{noIndentForPin}{true} \begin{tabular}{@{}ll} #2 & #3\\[0,5em] \GetTranslation{do} & \begin{tikzpicture}[anchor=north, yshift=\myshift]#4\end{tikzpicture}\\ \end{tabular} }; } % % % % % % END structures % % % % % % % % % Shapes % Formen % Open Roberta Shapes with pins top and bottom % \pgfdeclareshape{robertashape} { % This piece is from \pgflibarayshapes.code.tex \inheritsavedanchors[from=rectangle] \inheritanchorborder[from=rectangle] \inheritanchor[from=rectangle]{north} \inheritanchor[from=rectangle]{north west} \inheritanchor[from=rectangle]{north east} \inheritanchor[from=rectangle]{center} \inheritanchor[from=rectangle]{west} \inheritanchor[from=rectangle]{east} \inheritanchor[from=rectangle]{mid} \inheritanchor[from=rectangle]{mid west} \inheritanchor[from=rectangle]{mid east} \inheritanchor[from=rectangle]{base} \inheritanchor[from=rectangle]{base west} \inheritanchor[from=rectangle]{base east} \inheritanchor[from=rectangle]{south} \inheritanchor[from=rectangle]{south west} \inheritanchor[from=rectangle]{south east} \inheritbackgroundpath[from=rectangle] \inheritbeforebackgroundpath[from=rectangle] \inheritbehindforegroundpath[from=rectangle] \inheritforegroundpath[from=rectangle] \inheritbeforeforegroundpath[from=rectangle] \backgroundpath{ % \southwest \pgf@xa=\pgf@x \pgf@ya=\pgf@y \northeast \pgf@xb=\pgf@x \pgf@yb=\pgf@y \xdef\blockhspaceoben{1\blockhspace} \ifthenelse{\boolean{noIndentForPin}}{ % TODO Bedingungen verschönern? Aktuell globales boolean \xdef\blockhspaceunten{\blockhspaceoben}}{ \xdef\blockhspaceunten{2*\blockhspaceoben}} \def\dreieckseite{4} \pgfpathmoveto{\pgfpoint{\pgf@xa}{\pgf@ya}} %<-- south west % \pgfpathlineto{\pgfpoint{\pgf@xa+\blockhspaceunten}{\pgf@ya}} \pgfpathlineto{\pgfpoint{\pgf@xa+\blockhspaceunten+\dreieckseite}{\pgf@ya-\dreieckseite}} %Spitze unten \pgfpathlineto{\pgfpoint{\pgf@xa+\blockhspaceunten+2*\dreieckseite}{\pgf@ya}} % \pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@ya}} % south east \pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@yb}} % north east % \pgfpathlineto{\pgfpoint{\pgf@xa+\blockhspaceoben+2*\dreieckseite}{\pgf@yb}} \pgfpathlineto{\pgfpoint{\pgf@xa+\blockhspaceoben+\dreieckseite}{\pgf@yb-\dreieckseite}} %Spitze oben \pgfpathlineto{\pgfpoint{\pgf@xa+\blockhspaceoben}{\pgf@yb}} % \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@yb}} %<-- north west \pgfpathclose } } % % Open Roberta Shapes with pins ONLY bottom % \pgfdeclareshape{pinlow} { % This piece is from \pgflibarayshapes.code.tex \inheritsavedanchors[from=rectangle] \inheritanchorborder[from=rectangle] \inheritanchor[from=rectangle]{north} \inheritanchor[from=rectangle]{north west} \inheritanchor[from=rectangle]{north east} \inheritanchor[from=rectangle]{center} \inheritanchor[from=rectangle]{west} \inheritanchor[from=rectangle]{east} \inheritanchor[from=rectangle]{mid} \inheritanchor[from=rectangle]{mid west} \inheritanchor[from=rectangle]{mid east} \inheritanchor[from=rectangle]{base} \inheritanchor[from=rectangle]{base west} \inheritanchor[from=rectangle]{base east} \inheritanchor[from=rectangle]{south} \inheritanchor[from=rectangle]{south west} \inheritanchor[from=rectangle]{south east} \inheritbackgroundpath[from=rectangle] \inheritbeforebackgroundpath[from=rectangle] \inheritbehindforegroundpath[from=rectangle] \inheritforegroundpath[from=rectangle] \inheritbeforeforegroundpath[from=rectangle] \backgroundpath{ % \southwest \pgf@xa=\pgf@x \pgf@ya=\pgf@y \northeast \pgf@xb=\pgf@x \pgf@yb=\pgf@y \xdef\blockhspaceoben{1\blockhspace} \ifthenelse{\boolean{noIndentForPin}}{ % TODO Bedingungen verschönern? Aktuell globales boolean \xdef\blockhspaceunten{\blockhspaceoben}}{ \xdef\blockhspaceunten{2*\blockhspaceoben}} \def\dreieckseite{4} \pgfpathmoveto{\pgfpoint{\pgf@xa}{\pgf@ya}} %<-- south west % \pgfpathlineto{\pgfpoint{\pgf@xa+\blockhspaceunten}{\pgf@ya}} \pgfpathlineto{\pgfpoint{\pgf@xa+\blockhspaceunten+\dreieckseite}{\pgf@ya-\dreieckseite}} %Spitze unten \pgfpathlineto{\pgfpoint{\pgf@xa+\blockhspaceunten+2*\dreieckseite}{\pgf@ya}} % \pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@ya}} % south east \pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@yb}} % north east % \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@yb}} %<-- north west \pgfpathclose } } % % Open Roberta Shapes with pins ONLY top % \pgfdeclareshape{pinhigh} { % This piece from \pgflibarayshapes.code.tex \inheritsavedanchors[from=rectangle] \inheritanchorborder[from=rectangle] \inheritanchor[from=rectangle]{north} \inheritanchor[from=rectangle]{north west} \inheritanchor[from=rectangle]{north east} \inheritanchor[from=rectangle]{center} \inheritanchor[from=rectangle]{west} \inheritanchor[from=rectangle]{east} \inheritanchor[from=rectangle]{mid} \inheritanchor[from=rectangle]{mid west} \inheritanchor[from=rectangle]{mid east} \inheritanchor[from=rectangle]{base} \inheritanchor[from=rectangle]{base west} \inheritanchor[from=rectangle]{base east} \inheritanchor[from=rectangle]{south} \inheritanchor[from=rectangle]{south west} \inheritanchor[from=rectangle]{south east} \inheritbackgroundpath[from=rectangle] \inheritbeforebackgroundpath[from=rectangle] \inheritbehindforegroundpath[from=rectangle] \inheritforegroundpath[from=rectangle] \inheritbeforeforegroundpath[from=rectangle] \backgroundpath{ % \southwest \pgf@xa=\pgf@x \pgf@ya=\pgf@y \northeast \pgf@xb=\pgf@x \pgf@yb=\pgf@y \xdef\blockhspaceoben{1\blockhspace} \ifthenelse{\boolean{noIndentForPin}}{ % TODO Bedingungen verschönern? Aktuell globales boolean \xdef\blockhspaceunten{\blockhspaceoben}}{ \xdef\blockhspaceunten{2*\blockhspaceoben}} \def\dreieckseite{4} \pgfpathmoveto{\pgfpoint{\pgf@xa}{\pgf@ya}} %<-- south west % \pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@ya}} % south east \pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@yb}} % north east % \pgfpathlineto{\pgfpoint{\pgf@xa+\blockhspaceoben+2*\dreieckseite}{\pgf@yb}} \pgfpathlineto{\pgfpoint{\pgf@xa+\blockhspaceoben+\dreieckseite}{\pgf@yb-\dreieckseite}} %Spitze oben \pgfpathlineto{\pgfpoint{\pgf@xa+\blockhspaceoben}{\pgf@yb}} % \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@yb}} %<-- north west \pgfpathclose } } % % puzzlepiece Shapes mit hole at left side % \pgfdeclareshape{puzzleteil} { % This piece is from \pgflibarayshapes.code.tex \inheritsavedanchors[from=rectangle] \inheritanchorborder[from=rectangle] \inheritanchor[from=rectangle]{north} \inheritanchor[from=rectangle]{north west} \inheritanchor[from=rectangle]{north east} \inheritanchor[from=rectangle]{center} \inheritanchor[from=rectangle]{west} \inheritanchor[from=rectangle]{east} \inheritanchor[from=rectangle]{mid} \inheritanchor[from=rectangle]{mid west} \inheritanchor[from=rectangle]{mid east} \inheritanchor[from=rectangle]{base} \inheritanchor[from=rectangle]{base west} \inheritanchor[from=rectangle]{base east} \inheritanchor[from=rectangle]{south} \inheritanchor[from=rectangle]{south west} \inheritanchor[from=rectangle]{south east} \inheritbackgroundpath[from=rectangle] \inheritbeforebackgroundpath[from=rectangle] \inheritbehindforegroundpath[from=rectangle] \inheritforegroundpath[from=rectangle] \inheritbeforeforegroundpath[from=rectangle] \backgroundpath{ % \southwest \pgf@xa=\pgf@x \pgf@ya=\pgf@y \northeast \pgf@xb=\pgf@x \pgf@yb=\pgf@y \pgfpathmoveto{\pgfpoint{\pgf@xa}{\pgf@ya}} %<-- south west \pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@ya}} % south east \pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@yb}} % north east \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@yb}} %<-- north west % Anpassung \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@yb-4pt}} % \pgfpathlineto{\pgfpoint{\pgf@xa-5pt}{\pgf@yb-2pt}} \pgfpathlineto{\pgfpoint{\pgf@xa-5pt}{\pgf@yb-5pt}} \pgfpathlineto{\pgfpoint{\pgf@xa-5pt}{\pgf@yb-13pt}} \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@yb-11pt}} \pgfpathclose } } % % % % % END shapes % % colors % % print a small box with a certain color in it \newcommand{\farbe}[1]{\tikz\node[rectangle,minimum width=1em,minimum height = 1em,fill=#1]{};} % % symbols % \newcommand{\usb}{\faUsb} %USB-symbol % % Option: print (no-colors) % % % % TODO: Geht das mir einer Schleife? \ifthenelse{\boolean{no-colors}}{ \tikzset { % % pxt % grundlage/.append style={nocolor}, eingabe/.append style={nocolor}, schleife/.append style={nocolor}, logik/.append style={nocolor}, musik/.append style={nocolor}, led/.append style={nocolor}, platzhalter/.append style={nocolor}, mathe/.append style={nocolor}, funk/.append style={nocolor}, motor/.append style={nocolor}, zeichenkette/.append style={nocolor}, spiel/.append style={nocolor}, bild/.append style={nocolor}, pins/.append style={nocolor}, konsole/.append style={nocolor}, steuerung/.append style={nocolor}, bluetooth/.append style={nocolor}, % % openroberta % start/.append style={nocolor}, aktion/.append style={nocolor}, sensor/.append style={nocolor}, kontrolle/.append style={nocolor}, logik/.append style={nocolor}, mathe/.append style={nocolor}, zeichenkette/.append style={nocolor}, liste/.append style={nocolor}, farbe/.append style={nocolor}, bild/.append style={nocolor}, variablen/.append style={nocolor}, funktion/.append style={nocolor}, nachricht/.append style={nocolor}, % % Fallback styles / Für PXT Kommandos schleife/.append style={nocolor}, pins/.append style={nocolor}, grundlage/.append style={nocolor}, eingabe/.append style={nocolor}, konsole/.append style={nocolor}, platzhalte/.append style={nocolor}, bluetooth/.append style={nocolor}, steuerung/.append style={nocolor}, % % etc. dropdown/.append style={fill=white, draw=black!60, opacity=1}, ledOn/.append style={nocolor}, ledOff/.append style={nocolor}, intbox/.append style={nocolor}, stringbox/.append style={nocolor}, boolbox/.append style={nocolor}, %TODO: Farben bei Openroberta LEDS entfernen } }{} % (local) Style print \tikzset{ print/.style={ % % pxt % grundlage/.append style={nocolor}, eingabe/.append style={nocolor}, schleife/.append style={nocolor}, logik/.append style={nocolor}, musik/.append style={nocolor}, led/.append style={nocolor}, platzhalter/.append style={nocolor}, mathe/.append style={nocolor}, funk/.append style={nocolor}, motor/.append style={nocolor}, zeichenkette/.append style={nocolor}, spiel/.append style={nocolor}, bild/.append style={nocolor}, pins/.append style={nocolor}, konsole/.append style={nocolor}, steuerung/.append style={nocolor}, bluetooth/.append style={nocolor}, % % openroberta % start/.append style={nocolor}, aktion/.append style={nocolor}, sensor/.append style={nocolor}, kontrolle/.append style={nocolor}, logik/.append style={nocolor}, mathe/.append style={nocolor}, zeichenkette/.append style={nocolor}, liste/.append style={nocolor}, farbe/.append style={nocolor}, bild/.append style={nocolor}, variablen/.append style={nocolor}, funktion/.append style={nocolor}, nachricht/.append style={nocolor}, % % Fallback styles / Für PXT Kommandos schleife/.append style={nocolor}, pins/.append style={nocolor}, grundlage/.append style={nocolor}, eingabe/.append style={nocolor}, konsole/.append style={nocolor}, platzhalte/.append style={nocolor}, bluetooth/.append style={nocolor}, steuerung/.append style={nocolor}, % % etc. dropdown/.append style={fill=white, draw=black!60, opacity=1}, ledOn/.append style={nocolor}, intbox/.append style={nocolor}, stringbox/.append style={text-color=black, nocolor,}, % TODO: quotationmarks are still white... boolbox/.append style={nocolor}, %TODO: Farben bei Openroberta LEDS entfernen } }% print % % Redefine Commands for international usage ínto english language % % Controlstructures \newcommand{\ifthenblocks}{\wenndann} \newcommand{\ifthenelseblocks}{\wenndannsonst} \newcommand{\loopblocks}{\schleife} \newcommand{\moveindent}{\einruecken} %styles: \tikzset{ floor/.style={boden}, under/.style n args={3}{below right = #3\blockvspace and #2\blockhspace of #1.south west}, square/.style={eckig}, nopins/.style={keinezacken}, puzzlepiece/.style={puzzleteil}, }