Procházet zdrojové kódy

added my TikZ examples

Martin Thoma před 13 roky
rodič
revize
fef9415b3d
92 změnil soubory, kde provedl 3624 přidání a 0 odebrání
  1. 25 0
      tikz/arbelos/Makefile
  2. 42 0
      tikz/arbelos/arbelos.tex
  3. 31 0
      tikz/arc/Makefile
  4. 43 0
      tikz/arc/arc.tex
  5. 31 0
      tikz/array/Makefile
  6. 25 0
      tikz/array/array.tex
  7. 31 0
      tikz/b-tree-2-small-2/Makefile
  8. 75 0
      tikz/b-tree-2-small-2/b-tree-2-small-2.tex
  9. 31 0
      tikz/b-tree-2-small-3/Makefile
  10. 82 0
      tikz/b-tree-2-small-3/b-tree-2-small-3.tex
  11. 31 0
      tikz/b-tree-2-small-4/Makefile
  12. 84 0
      tikz/b-tree-2-small-4/b-tree-2-small-4.tex
  13. 31 0
      tikz/b-tree-2-small/Makefile
  14. 73 0
      tikz/b-tree-2-small/b-tree-2-small.tex
  15. 31 0
      tikz/b-tree-3-evolution/Makefile
  16. 198 0
      tikz/b-tree-3-evolution/b-tree-3-evolution.tex
  17. 31 0
      tikz/b-tree-node/Makefile
  18. 70 0
      tikz/b-tree-node/b-tree-node.tex
  19. 31 0
      tikz/b-tree/Makefile
  20. 32 0
      tikz/b-tree/b-tree-2.tex
  21. 29 0
      tikz/b-tree/b-tree-3.tex
  22. 27 0
      tikz/bellman-ford-algorithm/Makefile
  23. 1 0
      tikz/bellman-ford-algorithm/README
  24. 112 0
      tikz/bellman-ford-algorithm/bellman-ford-algorithm.tex
  25. 31 0
      tikz/binary-search-tree/Makefile
  26. 59 0
      tikz/binary-search-tree/binary-search-tree.tex
  27. 31 0
      tikz/binary-tree/Makefile
  28. 45 0
      tikz/binary-tree/binary-tree.tex
  29. 31 0
      tikz/birthday-paradox/Makefile
  30. 49 0
      tikz/birthday-paradox/birthday-paradox.tex
  31. 14 0
      tikz/birthday-paradox/calculate.py
  32. 62 0
      tikz/birthday-paradox/data.csv
  33. 25 0
      tikz/circular-cone/Makefile
  34. 31 0
      tikz/circular-cone/circular-cone.tex
  35. 31 0
      tikz/cyclic-graph/Makefile
  36. 36 0
      tikz/cyclic-graph/cyclic-graph.tex
  37. 25 0
      tikz/dijkstra-fail/Makefile
  38. 34 0
      tikz/dijkstra-fail/dijkstra-fail.tex
  39. 25 0
      tikz/dijkstra/Makefile
  40. 2 0
      tikz/dijkstra/README
  41. 93 0
      tikz/dijkstra/dijkstra.py
  42. 24 0
      tikz/dijkstra/dot-product-1.tex
  43. 25 0
      tikz/dot-product-1/Makefile
  44. 24 0
      tikz/dot-product-1/dot-product-1.tex
  45. 25 0
      tikz/dot-product-2/Makefile
  46. 30 0
      tikz/dot-product-2/dot-product-2.tex
  47. 25 0
      tikz/dot-product-3/Makefile
  48. 23 0
      tikz/dot-product-3/dot-product-3.1.tex
  49. 25 0
      tikz/dot-product-3/dot-product-3.2.tex
  50. 25 0
      tikz/dot-product-3/dot-product-3.3.tex
  51. 25 0
      tikz/dot-product-4/Makefile
  52. 34 0
      tikz/dot-product-4/dot-product-4.tex
  53. 25 0
      tikz/dot-product-5/Makefile
  54. 40 0
      tikz/dot-product-5/dot-product-5.tex
  55. 25 0
      tikz/dot-product-6/Makefile
  56. 24 0
      tikz/dot-product-6/dot-product-6.tex
  57. 31 0
      tikz/doubly-linked-list/Makefile
  58. 51 0
      tikz/doubly-linked-list/doubly-linked-list.tex
  59. 25 0
      tikz/equilateral-triangle-heights/Makefile
  60. 73 0
      tikz/equilateral-triangle-heights/equilateral-triangle-heights.tex
  61. 25 0
      tikz/equilateral-triangle/Makefile
  62. 42 0
      tikz/equilateral-triangle/equilateral-triangle.tex
  63. 25 0
      tikz/evaluation-tree/Makefile
  64. 26 0
      tikz/evaluation-tree/evaluation-tree.tex
  65. 31 0
      tikz/heap/Makefile
  66. 47 0
      tikz/heap/heap.tex
  67. 25 0
      tikz/isosceles-triangle-more/Makefile
  68. 107 0
      tikz/isosceles-triangle-more/isosceles-triangle-more.tex
  69. 25 0
      tikz/isosceles-triangle/Makefile
  70. 40 0
      tikz/isosceles-triangle/isosceles-triangle.tex
  71. 25 0
      tikz/parse-tree/Makefile
  72. 32 0
      tikz/parse-tree/parse-tree.tex
  73. 31 0
      tikz/path/Makefile
  74. 34 0
      tikz/path/path.tex
  75. 31 0
      tikz/red-black-tree-small/Makefile
  76. 27 0
      tikz/red-black-tree-small/red-black-tree.tex
  77. 31 0
      tikz/red-black-tree/Makefile
  78. 76 0
      tikz/red-black-tree/red-black-tree.tex
  79. 31 0
      tikz/right-triangle/Makefile
  80. 53 0
      tikz/right-triangle/right-triangle.tex
  81. 31 0
      tikz/singly-linked-list/Makefile
  82. 44 0
      tikz/singly-linked-list/singly-linked-list.tex
  83. 31 0
      tikz/stack/Makefile
  84. 19 0
      tikz/stack/stack.tex
  85. 31 0
      tikz/teststrategien-anschaulich/Makefile
  86. 51 0
      tikz/teststrategien-anschaulich/teststrategien-anschaulich.tex
  87. 31 0
      tikz/teststrategien/Makefile
  88. 61 0
      tikz/teststrategien/teststrategien.tex
  89. 31 0
      tikz/triangle/Makefile
  90. 56 0
      tikz/triangle/triangle.tex
  91. 31 0
      tikz/url-structure/Makefile
  92. 43 0
      tikz/url-structure/url-structure.tex

+ 25 - 0
tikz/arbelos/Makefile

@@ -0,0 +1,25 @@
+SOURCE = arbelos
+DELAY = 80
+DENSITY = 300
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 42 - 0
tikz/arbelos/arbelos.tex

@@ -0,0 +1,42 @@
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+\usepackage{tikz}
+
+\begin{document}
+\begin{preview}
+\begin{tikzpicture}
+
+    % Draw A
+    \coordinate[label=left:$A$]  (A) at (0,0);
+    
+    % Draw the Arbelos
+    \begin{scope}[shift={(4,0)}, scale=4]
+        \draw[fill=green!30, thick](-1,0) 
+            arc (180:0:1) 
+            arc (0:180:0.25) 
+            arc (0:180:0.75);
+    \end{scope}
+
+    \begin{scope}[shift={(4,0)}]
+        % Draw D
+        \coordinate[label=below:$D$] (D) at (2,0);
+
+        % Perpendicular CD
+        \draw[thick] (2,0) -- node[] {} (2,3.47);
+
+        % Draw C
+        \coordinate[label=above:$C$] (C) at (2,3.47);
+    \end{scope}
+
+    % Draw B
+    \coordinate[label=below:$B$] (B) at (8,0);
+
+    % Cirlce CD
+    \draw[thick] (6,1.735) circle (1.735cm);
+
+    % Bottom line AB
+    \draw[thick] (0,0) -- node[] {} (8,0);
+  \end{tikzpicture}
+\end{preview}
+\end{document}

+ 31 - 0
tikz/arc/Makefile

@@ -0,0 +1,31 @@
+SOURCE = arc
+DELAY = 80
+DENSITY = 300
+WIDTH = 500
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+png:
+	make
+	make svg
+	inkscape $(SOURCE).svg -w $(WIDTH) --export-png=$(SOURCE).png
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 43 - 0
tikz/arc/arc.tex

@@ -0,0 +1,43 @@
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+\usepackage{tikz}
+\usetikzlibrary{shapes, calc, shapes,snakes} 
+\usepackage{amsmath,amssymb}
+
+\begin{document}
+\begin{preview}
+\resizebox{250px}{250px}{
+\begin{tikzpicture}[]
+    \newcommand\R{1.3cm}
+
+    \draw[fill=gray!2] (0,0) circle (\R);
+
+    % draw the background
+    \draw [line width=0.1pt, fill=gray!10] 
+        (0,0) -- 
+        (170: \R) -- 
+        (45:\R) -- cycle;
+
+    \begin{scope}[color=green]
+        \draw[fill=green!15] (0,0) -- 
+                        (170:{\R*0.3}) arc (170:45:{{(\R)*0.3}});
+    \end{scope}
+
+    % Kreisbogen
+    \begin{scope}[thick, color=red]
+        \draw[] (170:\R) arc (170:45:\R);
+    \end{scope}
+
+    % Winkel
+    \draw[] (0,0) -- (170:\R);
+    \draw[] (0,0) -- (45:\R);
+    \draw[thick, color=blue] (170:\R) -- (45:\R);
+
+    % draw alpha
+    \coordinate[label=$\alpha$] (Alpha) at (-{\R/20}, 0);
+    \coordinate[label=$r$] (Alpha) at ({\R/2}, {\R/5});
+\end{tikzpicture}
+}
+\end{preview}
+\end{document}

+ 31 - 0
tikz/array/Makefile

@@ -0,0 +1,31 @@
+SOURCE = array
+DELAY = 80
+DENSITY = 300
+WIDTH = 500
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+png:
+	make
+	make svg
+	inkscape $(SOURCE).svg -w $(WIDTH) --export-png=$(SOURCE).png
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 25 - 0
tikz/array/array.tex

@@ -0,0 +1,25 @@
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+ 
+\usepackage{tikz}
+\usetikzlibrary{shapes.multipart, calc} 
+
+\begin{document}
+\begin{preview}
+\begin{tikzpicture}[array/.style={rectangle split,rectangle split horizontal, rectangle split parts=#1,draw, anchor=center, fill=white}]
+\node[array=5] (a) {
+\nodepart{one}d
+\nodepart{two}
+\nodepart{three}c
+\nodepart{four}c
+\nodepart{five}b
+};
+\node[color=gray, anchor=north, yshift=-0.5] at (a.one)   {\tiny $0$};
+\node[color=gray, anchor=north, yshift=-2] at (a.two)   {\tiny $1$};
+\node[color=gray, anchor=north, yshift=-2] at (a.three) {\tiny $2$};
+\node[color=gray, anchor=north, yshift=-2] at (a.four)  {\tiny $3$};
+\node[color=gray, anchor=north, yshift=-0.5] at (a.five)  {\tiny $4$};
+\end{tikzpicture}
+\end{preview}
+\end{document}

+ 31 - 0
tikz/b-tree-2-small-2/Makefile

@@ -0,0 +1,31 @@
+SOURCE = b-tree-2-small-2
+DELAY = 80
+DENSITY = 300
+WIDTH = 500
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+png:
+	make
+	make svg
+	inkscape $(SOURCE).svg -w $(WIDTH) --export-png=$(SOURCE).png
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 75 - 0
tikz/b-tree-2-small-2/b-tree-2-small-2.tex

@@ -0,0 +1,75 @@
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+ 
+\usepackage{tikz}
+\usetikzlibrary{calc,shapes.multipart,chains,arrows,positioning} 
+
+\tikzset{
+    font=\tt, 
+    >= stealth, 
+    every picture/.style={thick}, 
+    pointer/.style={*->},
+    node/.style={
+        align=center,
+        rectangle split, rectangle split horizontal,
+        rectangle split parts=#1,
+        draw, 
+        anchor=center, 
+        rectangle split part align={center},
+        rectangle split empty part width=1.5,
+        rectangle split part fill = {white}
+    }
+}
+
+\begin{document}
+\begin{preview}
+\begin{tikzpicture}
+    \node[align=center, draw, fill=yellow] at (3,3){
+        \tikz \node[node=5] (A) {
+            \nodepart{one}
+            \nodepart{two}7
+            \nodepart{three}
+            \nodepart{four}11
+            \nodepart{five}
+        };
+    };
+
+    \node[align=center, draw, fill=yellow] at (0,0){
+        \tikz \node[node=5] (B) {
+            \nodepart{one}
+            \nodepart{two}1
+            \nodepart{three}
+            \nodepart{four}4
+            \nodepart{five}
+        };
+    };
+
+    \node[align=center, draw, fill=yellow] at (3,0){
+        \tikz \node[node=5] (C) {
+            \nodepart{one}
+            \nodepart{two}4
+            \nodepart{three}
+            \nodepart{four}8
+            \nodepart{five}
+        };
+    };
+
+    \node[align=center, draw, fill=yellow] at (6.7,0){
+        \tikz \node[node=7, rectangle split part fill={red, white, green, white, blue, white, purple}] (D) {
+            \nodepart{one}
+            \nodepart{two}14
+            \nodepart{three}
+            \nodepart{four}15
+            \nodepart{five}
+            \nodepart{six}16
+            \nodepart{seven}
+        };
+    };
+
+    \draw[pointer] (1.9, 3.1) -- ($(B)+(0,0.4)$) node[] {};
+    \draw[pointer] (2.8, 3.1) -- ($(B)+(2.8,0.4)$) node[] {};
+    \draw[pointer] (3.9, 3.1) -- ($(B)+(6,0.4)$) node[] {};
+\end{tikzpicture}
+\end{preview}
+\end{document}

+ 31 - 0
tikz/b-tree-2-small-3/Makefile

@@ -0,0 +1,31 @@
+SOURCE = b-tree-2-small-3
+DELAY = 80
+DENSITY = 300
+WIDTH = 500
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+png:
+	make
+	make svg
+	inkscape $(SOURCE).svg -w $(WIDTH) --export-png=$(SOURCE).png
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 82 - 0
tikz/b-tree-2-small-3/b-tree-2-small-3.tex

@@ -0,0 +1,82 @@
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+ 
+\usepackage{tikz}
+\usetikzlibrary{calc,shapes.multipart,chains,arrows,positioning} 
+
+\tikzset{
+    font=\tt, 
+    >= stealth, 
+    every picture/.style={thick}, 
+    pointer/.style={*->},
+    node/.style={
+        align=center,
+        rectangle split, rectangle split horizontal,
+        rectangle split parts=#1,
+        draw, 
+        anchor=center, 
+        rectangle split part align={center},
+        rectangle split empty part width=1.5,
+        rectangle split part fill = {white}
+    }
+}
+
+\begin{document}
+\begin{preview}
+\begin{tikzpicture}
+    \node[align=center, draw, fill=yellow] at (3,3){
+        \tikz \node[node=7] (A) {
+            \nodepart{one}
+            \nodepart{two}7
+            \nodepart{three}
+            \nodepart{four}11
+            \nodepart{five}
+            \nodepart{six}15
+            \nodepart{seven}
+        };
+    };
+
+    \node[align=center, draw, fill=yellow] at (0,0){
+        \tikz \node[node=5] (B) {
+            \nodepart{one}
+            \nodepart{two}1
+            \nodepart{three}
+            \nodepart{four}4
+            \nodepart{five}
+        };
+    };
+
+    \node[align=center, draw, fill=yellow] at (3,0){
+        \tikz \node[node=5] (C) {
+            \nodepart{one}
+            \nodepart{two}4
+            \nodepart{three}
+            \nodepart{four}8
+            \nodepart{five}
+        };
+    };
+
+    \node[align=center, draw, fill=yellow] at (5.6,0){
+        \tikz \node[node=3, rectangle split part fill={red, white, green}] (D) {
+            \nodepart{one}
+            \nodepart{two}14
+            \nodepart{three}
+        };
+    };
+
+    \node[align=center, draw, fill=yellow] at (7.8,0){
+        \tikz \node[node=3, rectangle split part fill={blue, white, purple}] (D) {
+            \nodepart{one}
+            \nodepart{two}16
+            \nodepart{three}
+        };
+    };
+
+    \draw[pointer] (1.4, 3.1) -- ($(B)+(0,0.4)$) node[] {};
+    \draw[pointer] (2.25, 3.1) -- ($(B)+(3,0.4)$) node[] {};
+    \draw[pointer] (3.3, 3.1) -- ($(B)+(5.6,0.4)$) node[] {};
+    \draw[pointer] (4.4, 3.1) -- ($(B)+(7.8,0.4)$) node[] {};
+\end{tikzpicture}
+\end{preview}
+\end{document}

+ 31 - 0
tikz/b-tree-2-small-4/Makefile

@@ -0,0 +1,31 @@
+SOURCE = b-tree-2-small-4
+DELAY = 80
+DENSITY = 300
+WIDTH = 500
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+png:
+	make
+	make svg
+	inkscape $(SOURCE).svg -w $(WIDTH) --export-png=$(SOURCE).png
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 84 - 0
tikz/b-tree-2-small-4/b-tree-2-small-4.tex

@@ -0,0 +1,84 @@
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+ 
+\usepackage{tikz}
+\usetikzlibrary{calc,shapes.multipart,chains,arrows,positioning} 
+
+\tikzset{
+    font=\tt, 
+    >= stealth, 
+    every picture/.style={thick}, 
+    pointer/.style={*->},
+    node/.style={
+        align=center,
+        rectangle split, rectangle split horizontal,
+        rectangle split parts=#1,
+        draw, 
+        anchor=center, 
+        rectangle split part align={center},
+        rectangle split empty part width=1.5,
+        rectangle split part fill = {white}
+    }
+}
+
+\begin{document}
+\begin{preview}
+\begin{tikzpicture}
+    \node[align=center, draw, fill=yellow] at (3,3){
+        \tikz \node[node=7] (A) {
+            \nodepart{one}
+            \nodepart{two}7
+            \nodepart{three}
+            \nodepart{four}11
+            \nodepart{five}
+            \nodepart{six}15
+            \nodepart{seven}
+        };
+    };
+
+    \node[align=center, draw, fill=yellow] at (0,0){
+        \tikz \node[node=5] (B) {
+            \nodepart{one}
+            \nodepart{two}1
+            \nodepart{three}
+            \nodepart{four}4
+            \nodepart{five}
+        };
+    };
+
+    \node[align=center, draw, fill=yellow] at (3,0){
+        \tikz \node[node=5] (C) {
+            \nodepart{one}
+            \nodepart{two}4
+            \nodepart{three}
+            \nodepart{four}8
+            \nodepart{five}
+        };
+    };
+
+    \node[align=center, draw, fill=yellow] at (5.6,0){
+        \tikz \node[node=3, rectangle split part fill={red, white, green}] (D) {
+            \nodepart{one}
+            \nodepart{two}14
+            \nodepart{three}
+        };
+    };
+
+    \node[align=center, draw, fill=yellow] at (8.4,0){
+        \tikz \node[node=5, rectangle split part fill={blue, white, purple, white}] (D) {
+            \nodepart{one}
+            \nodepart{two}16
+            \nodepart{three}
+            \nodepart{four}17
+            \nodepart{five}
+        };
+    };
+
+    \draw[pointer] (1.4, 3.1) -- ($(B)+(0,0.4)$) node[] {};
+    \draw[pointer] (2.25, 3.1) -- ($(B)+(3,0.4)$) node[] {};
+    \draw[pointer] (3.3, 3.1) -- ($(B)+(5.6,0.4)$) node[] {};
+    \draw[pointer] (4.4, 3.1) -- ($(B)+(8.4,0.4)$) node[] {};
+\end{tikzpicture}
+\end{preview}
+\end{document}

+ 31 - 0
tikz/b-tree-2-small/Makefile

@@ -0,0 +1,31 @@
+SOURCE = b-tree-2-small
+DELAY = 80
+DENSITY = 300
+WIDTH = 500
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+png:
+	make
+	make svg
+	inkscape $(SOURCE).svg -w $(WIDTH) --export-png=$(SOURCE).png
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 73 - 0
tikz/b-tree-2-small/b-tree-2-small.tex

@@ -0,0 +1,73 @@
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+ 
+\usepackage{tikz}
+\usetikzlibrary{calc,shapes.multipart,chains,arrows,positioning} 
+
+\tikzset{
+    font=\tt, 
+    >= stealth, 
+    every picture/.style={thick}, 
+    pointer/.style={*->},
+    node/.style={
+        align=center,
+        rectangle split, rectangle split horizontal,
+        rectangle split parts=#1,
+        draw, 
+        anchor=center, 
+        rectangle split part align={center},
+        rectangle split empty part width=1.5,
+        rectangle split part fill = {white}
+    }
+}
+
+\begin{document}
+\begin{preview}
+\begin{tikzpicture}
+    \node[align=center, draw, fill=yellow] at (3,3){
+        \tikz \node[node=5] (A) {
+            \nodepart{one}
+            \nodepart{two}7
+            \nodepart{three}
+            \nodepart{four}11
+            \nodepart{five}
+        };
+    };
+
+    \node[align=center, draw, fill=yellow] at (0,0){
+        \tikz \node[node=5] (B) {
+            \nodepart{one}
+            \nodepart{two}1
+            \nodepart{three}
+            \nodepart{four}4
+            \nodepart{five}
+        };
+    };
+
+    \node[align=center, draw, fill=yellow] at (3,0){
+        \tikz \node[node=5] (C) {
+            \nodepart{one}
+            \nodepart{two}4
+            \nodepart{three}
+            \nodepart{four}8
+            \nodepart{five}
+        };
+    };
+
+    \node[align=center, draw, fill=yellow] at (6.2,0){
+        \tikz \node[node=5] (D) {
+            \nodepart{one}
+            \nodepart{two}14
+            \nodepart{three}
+            \nodepart{four}15
+            \nodepart{five}
+        };
+    };
+
+    \draw[pointer] (1.9, 3.1) -- ($(B)+(0,0.4)$) node[] {};
+    \draw[pointer] (2.8, 3.1) -- ($(B)+(2.8,0.4)$) node[] {};
+    \draw[pointer] (3.9, 3.1) -- ($(B)+(6,0.4)$) node[] {};
+\end{tikzpicture}
+\end{preview}
+\end{document}

+ 31 - 0
tikz/b-tree-3-evolution/Makefile

@@ -0,0 +1,31 @@
+SOURCE = b-tree-3-evolution
+DELAY = 80
+DENSITY = 300
+WIDTH = 500
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+png:
+	make
+	make svg
+	inkscape $(SOURCE).svg -w $(WIDTH) --export-png=$(SOURCE).png
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 198 - 0
tikz/b-tree-3-evolution/b-tree-3-evolution.tex

@@ -0,0 +1,198 @@
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+ 
+\usepackage{tikz}
+\usetikzlibrary{calc,shapes.multipart,chains,arrows,positioning} 
+
+\tikzset{
+    font=\tt, 
+    >= stealth, 
+    every picture/.style={thick}, 
+    pointer/.style={*->},
+    node/.style={
+        align=center,
+        rectangle split, rectangle split horizontal,
+        rectangle split parts=#1,
+        draw, 
+        anchor=center, 
+        rectangle split part align={center},
+        rectangle split empty part width=1.5,
+        rectangle split part fill = {white}
+    }
+}
+
+\begin{document}
+\begin{preview}
+\begin{tabular}{c | c}
+\begin{tikzpicture}
+    \node[align=center, draw, fill=yellow] at (3,3){
+        \tikz \node[node=1, rectangle split part fill={gray}] (A) {
+            \nodepart{one}
+        };
+    };
+\end{tikzpicture}
+
+&
+
+\begin{tikzpicture}
+    \node[align=center, draw, fill=yellow] at (3,3){
+        \tikz \node[node=3, rectangle split part fill={gray, white, gray}] (A) {
+            \nodepart{one}
+            \nodepart{two}2
+            \nodepart{three}
+        };
+    };
+\end{tikzpicture} \\
+
+\hline
+
+\\
+
+\begin{tikzpicture}
+    \node[align=center, draw, fill=yellow] at (3,3){
+        \tikz \node[node=5, rectangle split part fill={gray, white, gray, white, gray}] (A) {
+            \nodepart{one}
+            \nodepart{two}2
+            \nodepart{three}
+            \nodepart{four}4
+            \nodepart{five}
+        };
+    };
+\end{tikzpicture}
+
+&
+
+\begin{tikzpicture}
+    \node[align=center, draw, fill=yellow] at (3,3){
+        \tikz \node[node=7, rectangle split part fill={gray, white, gray, white, gray, white, gray}] (A) {
+            \nodepart{one}
+            \nodepart{two}2
+            \nodepart{three}
+            \nodepart{four}4
+            \nodepart{five}
+            \nodepart{six}6
+            \nodepart{seven}
+        };
+    };
+\end{tikzpicture} \\
+
+\hline
+
+\\
+
+\begin{tikzpicture}
+    \node[align=center, draw, fill=yellow] at (3,3){
+        \tikz \node[node=9, rectangle split part fill={gray, white, gray, white, gray, white, gray, white, gray}] (A) {
+            \nodepart{one}
+            \nodepart{two}2
+            \nodepart{three}
+            \nodepart{four}4
+            \nodepart{five}
+            \nodepart{six}6
+            \nodepart{seven}
+            \nodepart{eight}8
+            \nodepart{nine}
+        };
+    };
+\end{tikzpicture}
+
+&
+
+\begin{tikzpicture}
+    \node[align=center, draw, fill=yellow] at (3,3){
+        \tikz \node[node=11, rectangle split part fill={gray, white, gray, white, gray, white, gray, white, gray, white, gray}] (A) {
+            \nodepart{one}
+            \nodepart{two}2
+            \nodepart{three}
+            \nodepart{four}4
+            \nodepart{five}
+            \nodepart{six}6
+            \nodepart{seven}
+            \nodepart{eight}8
+            \nodepart{nine}
+            \nodepart{ten}10
+            \nodepart{eleven}
+        };
+    };
+\end{tikzpicture}
+
+\\
+
+\hline
+
+Node is full $\rightarrow$ first split node\\
+
+\begin{tikzpicture}
+    \node[align=center, draw, fill=yellow] at (2,3){
+        \tikz \node[node=3, rectangle split part fill={gray, white, gray, white, gray, white, gray, white, gray, white, gray}] (A) {
+            \nodepart{one}
+            \nodepart{two}6
+            \nodepart{three}
+        };
+    };
+
+    \node[align=center, draw, fill=yellow] at (0,0){
+        \tikz \node[node=5, rectangle split part fill={gray, white, gray, white, gray, white, gray, white, gray, white, gray}] (B) {
+            \nodepart{one}
+            \nodepart{two}2
+            \nodepart{three}
+            \nodepart{four}4
+            \nodepart{five}
+        };
+    };
+
+    \node[align=center, draw, fill=yellow] at (3,0){
+        \tikz \node[node=5, rectangle split part fill={gray, white, gray, white, gray, white, gray, white, gray, white, gray}] (C) {
+            \nodepart{one}
+            \nodepart{two}8
+            \nodepart{three}
+            \nodepart{four}10
+            \nodepart{five}
+        };
+    };
+
+    \draw[pointer] (1.5, 3.1) -- ($(B)+(0,0.4)$) node[] {};
+    \draw[pointer] (2.3, 3.1) -- ($(B)+(3,0.4)$) node[] {};
+\end{tikzpicture}
+
+&
+
+\begin{tikzpicture}
+    \node[align=center, draw, fill=yellow] at (2,3){
+        \tikz \node[node=3, rectangle split part fill={gray, white, gray, white, gray, white, gray, white, gray, white, gray}] (A) {
+            \nodepart{one}
+            \nodepart{two}6
+            \nodepart{three}
+        };
+    };
+
+    \node[align=center, draw, fill=yellow] at (0,0){
+        \tikz \node[node=5, rectangle split part fill={gray, white, gray, white, gray, white, gray, white, gray, white, gray}] (B) {
+            \nodepart{one}
+            \nodepart{two}2
+            \nodepart{three}
+            \nodepart{four}4
+            \nodepart{five}
+        };
+    };
+
+    \node[align=center, draw, fill=yellow] at (3.5,0){
+        \tikz \node[node=7, rectangle split part fill={gray, white, gray, white, gray, white, gray, white, gray, white, gray}] (C) {
+            \nodepart{one}
+            \nodepart{two}8
+            \nodepart{three}
+            \nodepart{four}10
+            \nodepart{five}
+            \nodepart{six}12
+            \nodepart{seven}
+        };
+    };
+
+    \draw[pointer] (1.5, 3.1) -- ($(B)+(0,0.4)$) node[] {};
+    \draw[pointer] (2.3, 3.1) -- ($(B)+(3.5,0.4)$) node[] {};
+\end{tikzpicture}
+
+\end{tabular}
+\end{preview}
+\end{document}

+ 31 - 0
tikz/b-tree-node/Makefile

@@ -0,0 +1,31 @@
+SOURCE = b-tree-node
+DELAY = 80
+DENSITY = 300
+WIDTH = 500
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+png:
+	make
+	make svg
+	inkscape $(SOURCE).svg -w $(WIDTH) --export-png=$(SOURCE).png
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 70 - 0
tikz/b-tree-node/b-tree-node.tex

@@ -0,0 +1,70 @@
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+ 
+\usepackage{tikz}
+\usetikzlibrary{calc,shapes.multipart,chains,arrows,positioning} 
+
+\tikzset{
+    font=\tt, 
+    >= stealth, 
+    every picture/.style={thick}, 
+    pointer/.style={*->},
+    node/.style={
+        align=center,
+        rectangle split, rectangle split horizontal,
+        rectangle split parts=#1,
+        draw, 
+        anchor=center, 
+        rectangle split part align={center},
+        rectangle split empty part width=1.5,
+        rectangle split part fill = {orange!50, blue!50, white}
+    }
+}
+
+\begin{document}
+\begin{preview}
+\begin{tikzpicture}
+
+    \node[align=center, draw, fill=yellow]{
+        \tikz \node[node=13] (A) {
+            \nodepart{one}\tiny False
+            \nodepart{two}5
+            \nodepart{three}
+            \nodepart{four}-3
+            \nodepart{five}
+            \nodepart{six}0
+            \nodepart{seven}
+            \nodepart{eight}4
+            \nodepart{nine}
+            \nodepart{ten}17
+            \nodepart{eleven}
+            \nodepart{twelve}42
+            \nodepart{thirteen}
+        };
+    };
+
+    \node[orange!80] at ($(A.one)+(0, 0.6)$)     {$\scriptscriptstyle isLeaf$};
+    \node[blue!80] at ($(A.two)+(0, -0.5)$)    {$\scriptscriptstyle n$};
+    \node[gray] at ($(A.three)+(0, 0.6)$)   {$\scriptscriptstyle c_1$};
+    \node[gray] at ($(A.four)+(0, -0.5)$)    {$\scriptscriptstyle key_1$};
+    \node[gray] at ($(A.five)+(0, 0.6)$)   {$\scriptscriptstyle c_2$};
+    \node[gray] at ($(A.six)+(0, -0.5)$)    {$\scriptscriptstyle key_2$};
+    \node[gray] at ($(A.seven)+(0, 0.6)$)   {$\scriptscriptstyle c_3$};
+    \node[gray] at ($(A.eight)+(0, -0.5)$)    {$\scriptscriptstyle key_3$};
+    \node[gray] at ($(A.nine)+(0, 0.6)$)   {$\scriptscriptstyle c_4$};
+    \node[gray] at ($(A.ten)+(0, -0.5)$)    {$\scriptscriptstyle key_4$};
+    \node[gray] at ($(A.eleven)+(0, 0.6)$)   {$\scriptscriptstyle c_5$};
+    \node[gray] at ($(A.twelve)+(0, -0.5)$)    {$\scriptscriptstyle key_5$};
+    \node[gray] at ($(A.thirteen)+(0, 0.6)$)   {$\scriptscriptstyle c_1$};
+
+    \draw[pointer] ($(A.three) + (0, 0.15)$) -- +(0,-1) node[] {};
+    \draw[pointer] ($(A.five)  + (0, 0.15)$) -- +(0,-1) node[] {};
+    \draw[pointer] ($(A.seven)  + (0, 0.15)$) -- +(0,-1) node[] {};
+    \draw[pointer] ($(A.nine)  + (0, 0.15)$) -- +(0,-1) node[] {};
+    \draw[pointer] ($(A.eleven)  + (0, 0.15)$) -- +(0,-1) node[] {};
+    \draw[pointer] ($(A.thirteen)  + (0, 0.15)$) -- +(0,-1) node[] {};
+
+\end{tikzpicture}
+\end{preview}
+\end{document}

+ 31 - 0
tikz/b-tree/Makefile

@@ -0,0 +1,31 @@
+SOURCE = b-tree-2
+DELAY = 80
+DENSITY = 300
+WIDTH = 500
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+png:
+	make
+	make svg
+	inkscape $(SOURCE).svg -w $(WIDTH) --export-png=$(SOURCE).png
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 32 - 0
tikz/b-tree/b-tree-2.tex

@@ -0,0 +1,32 @@
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+ 
+\usepackage{tikz}
+\usetikzlibrary{shapes.multipart, calc} 
+
+\begin{document}
+\begin{preview}
+\begin{tikzpicture}
+    \tikzstyle{bplus}=[rectangle split, rectangle split horizontal,rectangle split ignore empty parts,draw, fill=white]
+    \tikzstyle{every node}=[bplus]
+    \tikzstyle{level 1}=[sibling distance=60mm]
+    \tikzstyle{level 2}=[sibling distance=15mm]
+
+    \node {8 \nodepart{two} 14} [->]
+      child {node {2 \nodepart{two} 5}
+        child {node {0 \nodepart{two} 1}}
+        child {node {3 \nodepart{two} 4}}
+        child {node {6 \nodepart{two} 7}}    
+      } 
+      child {node {11}
+        child {node { 9 \nodepart{two} 10}}
+        child {node {12 \nodepart{two} 13}}
+      }
+      child {node {17}
+        child {node {15 \nodepart{two} 16}}
+        child {node {18 \nodepart{two} 19}}
+      };
+\end{tikzpicture}
+\end{preview}
+\end{document}

+ 29 - 0
tikz/b-tree/b-tree-3.tex

@@ -0,0 +1,29 @@
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+ 
+\usepackage{tikz}
+\usetikzlibrary{shapes.multipart, calc} 
+
+\begin{document}
+\begin{preview}
+\begin{tikzpicture}
+    \tikzstyle{bplus}=[rectangle split, rectangle split horizontal,rectangle split ignore empty parts,draw, fill=white]
+    \tikzstyle{every node}=[bplus]
+    \tikzstyle{level 1}=[sibling distance=60mm]
+    \tikzstyle{level 2}=[sibling distance=15mm]
+
+    \node {11} [->]
+      child {node {3 \nodepart{two} 7}
+        child {node {0 \nodepart{two} 1 \nodepart{three} 2}}
+        child {node {4 \nodepart{two} 5 \nodepart{three} 6}}
+        child {node {8 \nodepart{two} 9 \nodepart{three} 10}}    
+      } 
+      child {node {15 \nodepart{two} 18}
+        child[sibling distance=20mm] {node {12 \nodepart{two} 13 \nodepart{three} 14}}
+        child {node {16 \nodepart{two} 17}}
+        child {node {19}}
+      };
+\end{tikzpicture}
+\end{preview}
+\end{document}

+ 27 - 0
tikz/bellman-ford-algorithm/Makefile

@@ -0,0 +1,27 @@
+SOURCE = bellman-ford-algorithm
+ 
+DELAY = 80
+DENSITY = 300
+ 
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+ 
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux *.toc *.snm *.out *.nav
+ 
+animatedGif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+ 
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+ 
+svg:
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg
+	# Alternatively, only this one (produces worse results):
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg

+ 1 - 0
tikz/bellman-ford-algorithm/README

@@ -0,0 +1 @@
+TODO: Not ready, make ready!

+ 112 - 0
tikz/bellman-ford-algorithm/bellman-ford-algorithm.tex

@@ -0,0 +1,112 @@
+\documentclass{beamer}
+\usepackage{tikz}
+\usepackage{verbatim}
+\usetikzlibrary{arrows,shapes}
+
+\begin{document}
+\pgfdeclarelayer{background}
+\pgfsetlayers{background,main}
+
+\tikzset{
+    vertex/.style={
+        circle,
+        fill=black!25,
+        minimum size=20pt,
+        inner sep=0pt,
+        text height=1ex,
+        text depth=1ex,
+        label={[weight label]center:\weight},
+        label={[pred label]center:\pred}
+    },
+    pred label/.style={
+        font=\tiny,
+        xshift=0.3em,
+        yshift=-0.8ex,
+        text height=1ex,
+        text depth=0pt
+    },
+    weight label/.style={
+        font=\tiny,
+        xshift=-0.3em,
+        yshift=-0.8ex,
+        text height=1ex,
+        text depth=0pt
+    }
+}
+
+\tikzstyle{vertexOnly}=[circle,fill=black!25,minimum size=20pt,inner sep=0pt]
+\tikzstyle{selected vertex} = [vertex, fill=red!24]
+\tikzstyle{edge} = [->,draw,thick]
+\tikzstyle{weight} = [font=\small]
+\tikzstyle{selected edge} = [draw,line width=5pt,-,red!50]
+\tikzstyle{ignored edge} = [draw,line width=5pt,-,black!20]
+
+\begin{frame}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Given Graph                                                       %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{figure}
+\begin{tikzpicture}[scale=2.5, auto,swap]
+    % First we draw the vertices
+    \foreach \pos/\name in {{(0,2)/a}, {(1,2)/b}, {(2,2)/c},
+                            {(0,1)/d}, {(1,1)/e}, {(2,1)/f}, 
+                            {(0,0)/g}, {(1,0)/h}, {(2,0)/i}}
+        \node[vertexOnly] (\name) at \pos {$\name$};
+    % Connect vertices with edges and draw weights
+    \foreach \source/ \dest /\weight/\style in {a/b/0/, b/c/1/, a/d/2/, e/d/5/,
+                                        b/e/3/bend right, e/b/-1/bend right, b/f/4/above, f/i/3/,
+                                        i/e/1/, g/h/1/}
+        \path (\source) edge[->,\style, thick] node {$\weight$} (\dest);
+\end{tikzpicture}
+\end{figure}
+\end{frame}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Initialisation                                                    %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{frame}
+    \begin{figure}
+        \begin{tikzpicture}[scale=2.5, auto,swap]
+            % First we draw the vertices
+            \foreach \pos/\name/\weight/\pred in {
+                {(0,2)/a/$0$/-},{(1,2)/b/$\infty$/-}, {(2,2)/c/$\infty$/-},
+                {(0,1)/d/$\infty$/-}, {(1,1)/e/$\infty$/-}, {(2,1)/f/$\infty$/-}, 
+                {(0,0)/g/$\infty$/-}, {(1,0)/h/$\infty$/-}, {(2,0)/i/$\infty$/-}}
+                    \node[vertex] (\name) at \pos {$\name$};
+
+            % Connect vertices with edges and draw weights
+            \foreach \source/ \dest /\weight/\style in {
+                a/b/0/, b/c/1/, a/d/2/, e/d/5/, b/e/3/bend right, 
+                e/b/-1/bend right, b/f/4/above, f/i/3/, i/e/1/, 
+                g/h/1/}
+                    \path (\source) edge[->,\style, thick] node {$\weight$} (\dest);
+        \end{tikzpicture}
+    \end{figure}
+\end{frame}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% first iteraton                                                    %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{frame}
+    \begin{figure}
+        \begin{tikzpicture}[scale=2.5, auto,swap]
+            % First we draw the vertices
+            \foreach \pos/\name/\weight/\pred in {
+                {(1,2)/b/$\infty$/-}, {(2,2)/c/$\infty$/-},
+                {(0,1)/d/$\infty$/-}, {(1,1)/e/$\infty$/-}, {(2,1)/f/$\infty$/-}, 
+                {(0,0)/g/$\infty$/-}, {(1,0)/h/$\infty$/-}, {(2,0)/i/$\infty$/-}}
+                    \node[vertex] (\name) at \pos {$\name$};
+
+            % Connect vertices with edges and draw weights
+            \foreach \source/ \dest /\weight/\style in {
+                a/b/0/, b/c/1/, a/d/2/, e/d/5/, b/e/3/bend right, 
+                e/b/-1/bend right, b/f/4/above, f/i/3/, i/e/1/, 
+                g/h/1/}
+                    \path (\source) edge[->,\style, thick] node {$\weight$} (\dest);
+        \end{tikzpicture}
+    \end{figure}
+\end{frame}
+
+\end{document}

+ 31 - 0
tikz/binary-search-tree/Makefile

@@ -0,0 +1,31 @@
+SOURCE = binary-search-tree
+DELAY = 80
+DENSITY = 300
+WIDTH = 500
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+png:
+	make
+	make svg
+	inkscape $(SOURCE).svg -w $(WIDTH) --export-png=$(SOURCE).png
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 59 - 0
tikz/binary-search-tree/binary-search-tree.tex

@@ -0,0 +1,59 @@
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+ 
+\usepackage{tikz}
+\usetikzlibrary{arrows,positioning, calc} 
+\tikzstyle{vertex}=[draw,fill=black!15,circle,minimum size=18pt,inner sep=0pt]
+
+
+\begin{document}
+\begin{preview}
+\begin{tikzpicture}[very thick,level/.style={sibling distance=70mm/#1}]
+\node [vertex] (r){$17$}
+  child {
+    node [vertex] (a) {$9$}
+    child {
+      node [vertex] {$3$}
+      child {
+        node [vertex] {$-3$}
+        child {node [vertex] {$-4$}}
+        child {
+            node [vertex] {$2$}
+            child {
+                node [vertex] {$2$}
+            }
+        }
+      } 
+      child {
+        node [vertex] {$8$}
+        child {
+            node [vertex] {$6$}
+            child {
+                node [vertex] {$5$}
+            }
+            child {
+                node [vertex] {$7$}
+            }
+        }
+      }
+    }
+    child {
+      node [vertex] {$11$}
+      child {
+        node [vertex] {$17$}
+          child {
+            node [vertex] {$17$}
+          }
+      }
+    }
+  }
+  child {
+    node [vertex] {$19$}
+    child {
+      node [vertex] {$20$}
+    }
+  };
+\end{tikzpicture}
+\end{preview}
+\end{document}

+ 31 - 0
tikz/binary-tree/Makefile

@@ -0,0 +1,31 @@
+SOURCE = binary-tree
+DELAY = 80
+DENSITY = 300
+WIDTH = 500
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+png:
+	make
+	make svg
+	inkscape $(SOURCE).svg -w $(WIDTH) --export-png=$(SOURCE).png
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 45 - 0
tikz/binary-tree/binary-tree.tex

@@ -0,0 +1,45 @@
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+ 
+\usepackage{tikz}
+\usetikzlibrary{arrows,positioning, calc} 
+\tikzstyle{vertex}=[draw,fill=black!15,circle,minimum size=20pt,inner sep=0pt]
+
+
+\begin{document}
+\begin{preview}
+\begin{tikzpicture}[very thick,level/.style={sibling distance=60mm/#1}]
+\node [vertex] (r){$17$}
+  child {
+    node [vertex] (a) {$19$}
+    child {
+      node [vertex] {$20$}
+      child {
+        node [vertex] {$-3$}
+        child {node [vertex] {$17$}}
+        child {node [vertex] {$5$}}
+      } 
+      child {node [vertex] {$6$}}
+    }
+    child {
+      node [vertex] {$3$}
+      child {node [vertex] {$7$}}
+      child {node [vertex] {$2$}}
+    }
+  }
+  child {
+    node [vertex] {$9$}
+    child {
+      node [vertex] {$8$}
+      child {node [vertex] {$2$}}
+    }
+    child {
+      node [vertex] {$11$}
+      child {node [vertex] {$17$}}
+      child {node [vertex] {$-4$}}
+    }
+  };
+\end{tikzpicture}
+\end{preview}
+\end{document}

+ 31 - 0
tikz/birthday-paradox/Makefile

@@ -0,0 +1,31 @@
+SOURCE = birthday-paradox
+DELAY = 80
+DENSITY = 300
+WIDTH = 500
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+png:
+	make
+	make svg
+	inkscape $(SOURCE).svg -w $(WIDTH) --export-png=$(SOURCE).png
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 49 - 0
tikz/birthday-paradox/birthday-paradox.tex

@@ -0,0 +1,49 @@
+% Plot of the probability that two people out of n people have the
+% same birthday.
+% Author: Martin Thoma
+% Source: http://martin-thoma.com/plotting-graphs-with-pgfplots/
+
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+ 
+\usepackage{pgfplots}
+\usepackage{tikz}
+\usetikzlibrary{arrows, positioning, calc}
+
+\begin{document}
+\begin{preview}
+\begin{tikzpicture}
+    \begin{axis}[
+        width=15cm, height=8cm,     % size of the image
+        grid = major,
+        grid style={dashed, gray!30},
+        %xmode=log,log basis x=10,
+        %ymode=log,log basis y=10,
+        xmin=0,     % start the diagram at this x-coordinate
+        xmax=62,    % end   the diagram at this x-coordinate
+        ymin=0,     % start the diagram at this y-coordinate
+        ymax=1.1,   % end   the diagram at this y-coordinate
+        /pgfplots/xtick={0,5,...,60}, % make steps of length 5
+        extra x ticks={23},
+        extra y ticks={0.507297},
+        axis background/.style={fill=white},
+        ylabel=probability of at least one birthday-collision,
+        xlabel=people,
+        tick align=outside]
+
+      % import the correct data from a CSV file
+      \addplot table [id=exp]{data.csv};
+
+      % mark x=23
+      \coordinate (a) at (axis cs:23,0.507297);
+      \draw[blue, dashed, thick](a -| current plot begin) -- (a);
+      \draw[blue, dashed, thick](a |- current plot begin) -- (a);
+
+      % plot the stirling-formulae
+      \addplot[domain=0:60, red, thick] 
+        {1-(365/(365-x))^(365.5-x)*e^(-x)}; 
+    \end{axis} 
+\end{tikzpicture}
+\end{preview}
+\end{document}

+ 14 - 0
tikz/birthday-paradox/calculate.py

@@ -0,0 +1,14 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+from math import factorial
+from gmpy import bincoef
+
+f = open('data.csv', 'w')
+f.write('People\tprobability\n')
+
+def prob(people):
+    return 1.0 - float(factorial(people)*bincoef(365,people))/(365**people)
+
+for people in xrange(60+1):
+    f.write("%i\t%f\n" % (people, prob(people)))

+ 62 - 0
tikz/birthday-paradox/data.csv

@@ -0,0 +1,62 @@
+People	probability
+0	0.000000
+1	0.000000
+2	0.002740
+3	0.008204
+4	0.016356
+5	0.027136
+6	0.040462
+7	0.056236
+8	0.074335
+9	0.094624
+10	0.116948
+11	0.141141
+12	0.167025
+13	0.194410
+14	0.223103
+15	0.252901
+16	0.283604
+17	0.315008
+18	0.346911
+19	0.379119
+20	0.411438
+21	0.443688
+22	0.475695
+23	0.507297
+24	0.538344
+25	0.568700
+26	0.598241
+27	0.626859
+28	0.654461
+29	0.680969
+30	0.706316
+31	0.730455
+32	0.753348
+33	0.774972
+34	0.795317
+35	0.814383
+36	0.832182
+37	0.848734
+38	0.864068
+39	0.878220
+40	0.891232
+41	0.903152
+42	0.914030
+43	0.923923
+44	0.932885
+45	0.940976
+46	0.948253
+47	0.954774
+48	0.960598
+49	0.965780
+50	0.970374
+51	0.974432
+52	0.978005
+53	0.981138
+54	0.983877
+55	0.986262
+56	0.988332
+57	0.990122
+58	0.991665
+59	0.992989
+60	0.994123

+ 25 - 0
tikz/circular-cone/Makefile

@@ -0,0 +1,25 @@
+SOURCE = circular-cone
+DELAY = 80
+DENSITY = 300
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 31 - 0
tikz/circular-cone/circular-cone.tex

@@ -0,0 +1,31 @@
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+\usepackage{tikz}
+\usepackage{tikz-3dplot}
+\usetikzlibrary{shapes, calc} 
+\begin{document}
+\begin{preview}
+\tdplotsetmaincoords{70}{0}
+\begin{tikzpicture}[tdplot_main_coords]
+    \def\RI{2}
+    \def\RII{1.25}
+
+    \draw[thick] (\RI,0)
+      \foreach \x in {0,300,240,180} { --  (\x:\RI) node at (\x:\RI) (R1-\x) {} };
+    \draw[dashed,thick] (R1-0.center)
+      \foreach \x in {60,120,180} { --  (\x:\RI) node at (\x:\RI) (R1-\x) {} };
+    \path[fill=gray!30] (\RI,0)
+      \foreach \x in {0,60,120,180,240,300} { --  (\x:\RI)};
+
+    \begin{scope}[yshift=2cm]
+    \draw[thick,fill=gray!30,opacity=0.2] (\RII,0)
+      \foreach \x in {0,60,120,180,240,300,360}
+        { --  (\x:\RII) node at (\x:\RII) (R2-\x) {}};
+    \end{scope}
+
+    \foreach \x in {0,180,240,300} { \draw (R1-\x.center)--(R2-\x.center); };
+    \foreach \x in {60,120} { \draw[dashed] (R1-\x.center)--(R2-\x.center); };
+\end{tikzpicture}
+\end{preview}
+\end{document}

+ 31 - 0
tikz/cyclic-graph/Makefile

@@ -0,0 +1,31 @@
+SOURCE = cyclic-graph
+DELAY = 80
+DENSITY = 300
+WIDTH = 500
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+png:
+	make
+	make svg
+	inkscape $(SOURCE).svg -w $(WIDTH) --export-png=$(SOURCE).png
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 36 - 0
tikz/cyclic-graph/cyclic-graph.tex

@@ -0,0 +1,36 @@
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+ 
+\usepackage{tikz}
+\usetikzlibrary{arrows,positioning, calc} 
+\tikzstyle{vertex}=[draw,fill=black!15,circle,minimum size=20pt,inner sep=0pt]
+\tikzstyle{selected edge} = [draw,line width=5pt,-,red!50]
+
+\begin{document}
+\pgfdeclarelayer{background}
+\pgfsetlayers{background,main}
+
+\begin{preview}
+\begin{tikzpicture}  [scale=1.2]
+  \node (a)[vertex] at (0,2) {a};
+  \node (b)[vertex] at (1,1) {b};
+  \node (c)[vertex] at (3,2) {c};
+  \node (d)[vertex] at (4,1) {d};
+  \node (e)[vertex] at (2,0) {e};
+  \node (f)[vertex] at (1,3) {f};
+  \node (g)[vertex] at (5,3) {g};
+  \node (h)[vertex] at (0,1) {h};
+
+  \foreach \from/\to in {a/f,f/g,h/b,b/c,c/d,d/e,e/b,f/c}
+    \draw (\from) -- (\to);
+
+  \begin{pgfonlayer}{background}
+    \draw (b.center) edge[selected edge] (c.center);
+    \draw (c.center) edge[selected edge] (d.center);
+    \draw (d.center) edge[selected edge] (e.center);
+    \draw (e.center) edge[selected edge] (b.center);
+  \end{pgfonlayer}
+\end{tikzpicture}
+\end{preview}
+\end{document}

+ 25 - 0
tikz/dijkstra-fail/Makefile

@@ -0,0 +1,25 @@
+SOURCE = dijkstra-fail
+DELAY = 80
+DENSITY = 300
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 34 - 0
tikz/dijkstra-fail/dijkstra-fail.tex

@@ -0,0 +1,34 @@
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+\usepackage{tikz}
+\usetikzlibrary{arrows,positioning, calc}
+\tikzset{
+    %Define standard arrow tip
+    ->,>=stealth',shorten >=1pt,auto,node distance=3cm, very thick,
+    % Define arrow style
+    main node/.style={
+        circle,
+        fill=blue!20,
+        draw,
+        font=\sffamily\Large\bfseries
+    }
+}
+
+\begin{document}
+\begin{preview}
+\begin{tikzpicture}[,]
+
+  \node[main node] (A) {A};
+  \node[main node] (C) [below of=A] {C};
+  \node[main node] (B) [right of=A] {B};
+  \node[main node] (D) [right of=C] {D};
+
+  \path[every node/.style={font=\sffamily\small}]
+    (A) edge node {4} (C)
+        edge node {3} (B)
+    (C) edge node {-2} (B)
+    (B) edge node {1} (D);
+\end{tikzpicture}
+\end{preview}
+\end{document}

+ 25 - 0
tikz/dijkstra/Makefile

@@ -0,0 +1,25 @@
+SOURCE = dot-product-1
+DELAY = 80
+DENSITY = 300
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 2 - 0
tikz/dijkstra/README

@@ -0,0 +1,2 @@
+Das ist nicht fertig!
+TODO: Fertig stellen

+ 93 - 0
tikz/dijkstra/dijkstra.py

@@ -0,0 +1,93 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+class Node(object):
+    """ A node. """
+
+    def __init__(self, x, y, data):
+        self._data  = data  # data connected to the node
+        self._x     = x     # x-position
+        self._y     = y     # y-position
+
+    data    = property(fget=lambda self: self._data)
+    x       = property(fget=lambda self: self._x)
+    y       = property(fget=lambda self: self._y)
+
+    def __str__(self):
+        return "{(%i,%i)/%s}" % (self.x, self.y, str(self.data))
+
+    def __repr__(self):
+        return "{(%i,%i)/%s}" % (self.x, self.y, str(self.data))
+
+class Edge(object):
+    """ An edge. """
+
+    def __init__(self, startNode, endNode, weight=0, directed=False):
+        self._startNode = startNode
+        self._endNode   = endNode
+        self._weight    = weight
+        self._directed  = directed
+
+    startNode   = property(fget=lambda self: self._startNode)
+    endNode     = property(fget=lambda self: self._endNode)
+    weight      = property(fget=lambda self: self._weight)
+    directed    = property(fget=lambda self: self._directed)
+
+    def __str__(self):
+        return "%s/%s/%i" % (str(id(self.startNode)), str(id(self.endNode)), self.weight)
+
+    def __repr__(self):
+        return "%s/%s/%i" % (str(id(self.startNode)), str(id(self.endNode)), self.weight)
+
+class Graph(object):
+    """ A graph. """
+
+    def __init__(self, directed=False):
+        self._directed  = directed
+        self._edges     = []
+        self._vertices  = []
+
+    directed    = property(fget=lambda self: self._directed)
+    edges       = property(fget=lambda self: self._edges)
+    vertices    = property(fget=lambda self: self._vertices)
+
+    def printVertices(self):
+        vertexString = ""
+        for vertex in self.vertices:
+            vertexString += str(vertex)
+        return vertexString
+
+    def printEdges(self):
+        edgeString = "% Connect vertices with edges and draw weights\n"
+        edgeString += "\\foreach \source/ \dest /\weight in {"
+        for i, edge in enumerate(self.edges):
+            if i != 0:
+                edgeString += ", "
+            edgeString += str(edge)
+        edgeString += "}\n"
+        edgeString += "\path[edge] (\source) -- node[weight] {$\weight$} (\dest);"
+        return edgeString
+
+    def printGraph(self):
+        print("\\begin{tikzpicture}[scale=1.8, auto,swap]")
+        print("\\foreach \pos/\\name in {" + self.printVertices() + "}")
+        print("\t\\node[vertex] (\\name) at \pos {$\\name$};")
+        print(self.printEdges())
+        print("\end{tikzpicture}")
+
+if '__main__' == __name__:
+    graph = Graph()
+    k1 = Node(1,2, 1)
+    k2 = Node(3,0, 2)
+    k3 = Node(3,3, 3)
+    k6 = Node(1,4, 6)
+    k5 = Node(4,5, 5)
+    k4 = Node(5,3, 4)
+    graph._vertices.append(k1)
+    graph._vertices.append(k2)
+    graph._vertices.append(k3)
+    graph._vertices.append(k4)
+    graph._vertices.append(k5)
+    graph._vertices.append(k6)
+    graph._edges.append(Edge(k1,k2, 7))
+    graph.printGraph()

+ 24 - 0
tikz/dijkstra/dot-product-1.tex

@@ -0,0 +1,24 @@
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+\usepackage{tikz}
+\usetikzlibrary{arrows,positioning} 
+\tikzset{
+    %Define standard arrow tip
+    >=stealth',
+    % Define arrow style
+    pil/.style={
+           ->,
+           thick}
+}
+
+\begin{document}
+\begin{preview}
+\begin{tikzpicture}
+    \draw[fill=green!30] (0,0) -- (90:.75cm) arc (90:27:.75cm);
+    \draw[pil,color=black] (0,0) -- node[right=2pt] {$\vec a$} (27:2.2cm);
+    \draw[pil,color=black] (0,0) -- node[near end, right=-3pt] {$\vec b$} (90:2cm);
+    \draw(60:0.5cm) node {$\varphi$};
+  \end{tikzpicture}
+\end{preview}
+\end{document}

+ 25 - 0
tikz/dot-product-1/Makefile

@@ -0,0 +1,25 @@
+SOURCE = dot-product-1
+DELAY = 80
+DENSITY = 300
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 24 - 0
tikz/dot-product-1/dot-product-1.tex

@@ -0,0 +1,24 @@
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+\usepackage{tikz}
+\usetikzlibrary{arrows,positioning} 
+\tikzset{
+    %Define standard arrow tip
+    >=stealth',
+    % Define arrow style
+    pil/.style={
+           ->,
+           thick}
+}
+
+\begin{document}
+\begin{preview}
+\begin{tikzpicture}
+    \draw[fill=green!30] (0,0) -- (90:.75cm) arc (90:27:.75cm);
+    \draw[pil,color=black] (0,0) -- node[right=2pt] {$\vec a$} (27:2.2cm);
+    \draw[pil,color=black] (0,0) -- node[near end, right=-3pt] {$\vec b$} (90:2cm);
+    \draw(60:0.5cm) node {$\varphi$};
+  \end{tikzpicture}
+\end{preview}
+\end{document}

+ 25 - 0
tikz/dot-product-2/Makefile

@@ -0,0 +1,25 @@
+SOURCE = dot-product-2
+DELAY = 80
+DENSITY = 300
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 30 - 0
tikz/dot-product-2/dot-product-2.tex

@@ -0,0 +1,30 @@
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+\usepackage{tikz}
+\usetikzlibrary{arrows,positioning} 
+\tikzset{
+    %Define standard arrow tip
+    >=stealth',
+    % Define arrow style
+    pil/.style={
+           ->,
+           thick}
+}
+
+\begin{document}
+\begin{preview}
+\begin{tikzpicture}
+    \draw[fill=gray!30] (27:0.90) -- node[right=-0.28cm, near end] {$\cdot$} (27:1.08)
+                        arc (27:117:.18cm);
+    \draw[fill=green!30] (0,0) -- (90:.55cm) arc (90:27:.55cm);
+    \draw[pil,color=red] (0,0) -- node[right=2pt] {$\vec a$} (27:3cm);
+    \draw[pil,color=blue] (0,0) -- node[near end, right=-3pt] {$\vec b$} (90:2cm);
+
+    \draw[pil,color=violet] (0,0) -- node[near start, right=7pt] {$\vec b_{\vec a}$} (27:0.90cm);
+    \draw[color=gray, dashed] (27:0.90) -- node[near end, right] {} (90:2cm);
+
+    \draw(60:0.35cm) node {$\varphi$};
+  \end{tikzpicture}
+\end{preview}
+\end{document}

+ 25 - 0
tikz/dot-product-3/Makefile

@@ -0,0 +1,25 @@
+SOURCE = dot-product-3.3
+DELAY = 80
+DENSITY = 300
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 23 - 0
tikz/dot-product-3/dot-product-3.1.tex

@@ -0,0 +1,23 @@
+\documentclass{article}
+\usepackage{gensymb}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+\usepackage{tikz}
+\usetikzlibrary{arrows,positioning,decorations.pathreplacing,shapes} 
+\tikzset{
+    %Define standard arrow tip
+    >=stealth',
+    % Define arrow style
+    pil/.style={
+           ->,
+           thick}
+}
+
+\begin{document}
+\begin{preview}
+\begin{tikzpicture}
+    \draw[pil] (0,0)   -- node[near end, above] {$\vec a$} (3cm, 0cm);
+    \draw[pil] (0,0.5cm) -- node[near end, above] {$\vec b$} (2cm,0.5cm);
+  \end{tikzpicture}
+\end{preview}
+\end{document}

+ 25 - 0
tikz/dot-product-3/dot-product-3.2.tex

@@ -0,0 +1,25 @@
+\documentclass{article}
+\usepackage{gensymb}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+\usepackage{tikz}
+\usetikzlibrary{arrows,positioning,decorations.pathreplacing,shapes} 
+\tikzset{
+    %Define standard arrow tip
+    >=stealth',
+    % Define arrow style
+    pil/.style={
+           ->,
+           thick}
+}
+
+\begin{document}
+\begin{preview}
+\begin{tikzpicture}
+    \draw[fill=gray!30, label=$a$] (0,0) -- node[above, near start] {$\cdot$} (0.5,0)
+                        arc (0:90:0.5cm);
+    \draw[pil] (0,0) -- node[near end, above] {$\vec a$} (3cm, 0);
+    \draw[pil]  (0,0) -- node[near end, right] {$\vec b$} (90:2cm);
+  \end{tikzpicture}
+\end{preview}
+\end{document}

+ 25 - 0
tikz/dot-product-3/dot-product-3.3.tex

@@ -0,0 +1,25 @@
+\documentclass{article}
+\usepackage{gensymb}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+\usepackage{tikz}
+\usetikzlibrary{arrows,positioning,decorations.pathreplacing,shapes} 
+\tikzset{
+    %Define standard arrow tip
+    >=stealth',
+    % Define arrow style
+    pil/.style={
+           ->,
+           thick}
+}
+
+\begin{document}
+\begin{preview}
+\begin{tikzpicture}
+    \draw[fill=green!30, label=$a$] (0,0) -- node[above] {$\varphi$} (0.7,0)
+                        arc (0:60:0.7cm);
+    \draw[pil] (0,0) -- node[near end, above] {$\vec a$} (3cm, 0);
+    \draw[pil]  (0,0) -- node[near end, right] {$\vec b$} (60:2cm);
+  \end{tikzpicture}
+\end{preview}
+\end{document}

+ 25 - 0
tikz/dot-product-4/Makefile

@@ -0,0 +1,25 @@
+SOURCE = dot-product-4
+DELAY = 80
+DENSITY = 300
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 34 - 0
tikz/dot-product-4/dot-product-4.tex

@@ -0,0 +1,34 @@
+\documentclass{article}
+\usepackage{gensymb}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+\usepackage{tikz}
+\usetikzlibrary{arrows,positioning, calc} 
+\tikzset{
+    %Define standard arrow tip
+    >=stealth',
+    % Define arrow style
+    pil/.style={
+           ->,
+           thick}
+}
+
+\begin{document}
+\begin{preview}
+\begin{tikzpicture}
+    \draw[fill=green!30, dotted] (0,0) -- (90:1.00cm) arc (90:25:1.00cm);
+    \draw[fill=green!30, dotted] (6.8,3) -- (6.8,2) arc (-90:-155:1.00cm);
+    \draw(6.5,2.5) node {$\scriptstyle \varphi$};
+    \draw(50:0.6cm) node {$\scriptscriptstyle \varphi = 63 \degree$};
+    \coordinate[label=left:$\vec F$] (F) at (0cm, 3cm);
+    \coordinate[label=120:$A$,color=red] (A) at (0cm, 0cm);
+    \coordinate[label=right:$B$,color=red] (B) at (6.8cm, 3cm);
+    \draw[->, very thick, color=red] (A) to[] node[above, rotate=27] {$\vec s$} (B);
+    \draw[pil]  (0,0) -- node[near end, right] {$F = 5 \mathrm{N}$} (0, 3cm);
+    \draw[color=gray, dashed] (0cm,0) -- node {} (6.8cm, 0cm);
+    \draw[color=gray, dashed] (6.8cm,0) -- node {} (6.8cm, 3cm);
+    \node (s) at ($(A)!0.5!(B)$) [below,rotate=25] {$s = 3\mathrm{m}$};
+    \node (txt) at ($(6.8,0)!0.4!(B)$) [below,rotate=90] {$\scriptscriptstyle h = s \cdot \cos(\varphi)$};
+  \end{tikzpicture}
+\end{preview}
+\end{document}

+ 25 - 0
tikz/dot-product-5/Makefile

@@ -0,0 +1,25 @@
+SOURCE = dot-product-5
+DELAY = 80
+DENSITY = 300
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 40 - 0
tikz/dot-product-5/dot-product-5.tex

@@ -0,0 +1,40 @@
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+\usepackage{tikz}
+\usetikzlibrary{arrows,positioning, calc} 
+\tikzset{
+    %Define standard arrow tip
+    >=stealth',
+    % Define arrow style
+    pil/.style={
+           ->,
+           thick}
+}
+
+\begin{document}
+\begin{preview}
+\begin{tikzpicture}[scale=0.8]
+    % draw the background
+    \draw [line width=0.1pt, fill=gray!2] (0,0) -- (3, 3) -- (5,0) -- cycle;
+
+    % angle gamma
+    \begin{scope}[shift={(3, 3)}]
+        \draw[fill=green!30] (0,0) -- (-135:.75cm) arc (-135:-55:.75cm);
+        \draw (-90:0.5cm) node {$\gamma$};
+    \end{scope}
+
+    \coordinate[label=left:$A$] (A) at (0,0);
+    \coordinate[label=right:$B$] (B) at (5,0);
+    \coordinate[label=above:$C$] (C) at (3,3);
+    \
+    \draw[->, very thick] (A) to[] node[above] {$\vec c$} (B);
+    \draw[->, very thick] (C) to[] node[above] {$\vec b$} (A);
+    \draw[->, very thick] (C) to[] node[above=0.1cm] {$\vec a$} (B);
+
+    \coordinate[label=-90:$c$] (c) at ($(A)!0.5!(B)$);
+    \coordinate[label=-120:$a$] (a) at ($(B)!0.5!(C)$);
+    \coordinate[label=-45:$b$] (b) at ($(C)!0.5!(A)$);
+  \end{tikzpicture}
+\end{preview}
+\end{document}

+ 25 - 0
tikz/dot-product-6/Makefile

@@ -0,0 +1,25 @@
+SOURCE = dot-product-6
+DELAY = 80
+DENSITY = 300
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 24 - 0
tikz/dot-product-6/dot-product-6.tex

@@ -0,0 +1,24 @@
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+\usepackage{tikz}
+\usetikzlibrary{arrows,positioning} 
+\tikzset{
+    %Define standard arrow tip
+    >=stealth',
+    % Define arrow style
+    pil/.style={
+           ->,
+           thick}
+}
+
+\begin{document}
+\begin{preview}
+\begin{tikzpicture}
+    \draw[fill=gray!30, label=$a$] (0,0) -- node[above, near start] {$\cdot$} (0.5,0)
+                        arc (0:90:0.5cm);
+    \draw[pil] (0,0) -- node[near end, above] {$\vec e_1$} (2cm, 0);
+    \draw[pil]  (0,0) -- node[near end, right] {$\vec e_2$} (0, 2cm);
+  \end{tikzpicture}
+\end{preview}
+\end{document}

+ 31 - 0
tikz/doubly-linked-list/Makefile

@@ -0,0 +1,31 @@
+SOURCE = doubly-linked-list
+DELAY = 80
+DENSITY = 300
+WIDTH = 500
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+png:
+	make
+	make svg
+	inkscape $(SOURCE).svg -w $(WIDTH) --export-png=$(SOURCE).png
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 51 - 0
tikz/doubly-linked-list/doubly-linked-list.tex

@@ -0,0 +1,51 @@
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+ 
+\usepackage{tikz}
+\usetikzlibrary{calc,shapes.multipart,chains,arrows,positioning}
+
+\tikzset{
+    squarecross/.style={
+        draw, rectangle,minimum size=18pt, fill=orange!80,
+        inner sep=0pt, text=black,
+        path picture = {
+            \draw[black]
+            (path picture bounding box.north west) -- 
+            (path picture bounding box.south east)
+            (path picture bounding box.south west) -- 
+            (path picture bounding box.north east);
+        }
+    }
+}
+
+\begin{document}
+\begin{preview}
+\begin{tikzpicture}[
+        list/.style={
+            very thick, rectangle split, 
+            rectangle split parts=3, draw, 
+            rectangle split horizontal, minimum size=18pt,
+            inner sep=5pt, text=black,
+            rectangle split part fill={blue!20, red!20, blue!20}
+        }, 
+        ->, start chain, very thick
+      ]
+
+  \node[list,on chain] (A) {\nodepart{second} 12};
+  \node[list,on chain] (B) {\nodepart{second} 99};
+  \node[list,on chain] (C) {\nodepart{second} 37};
+
+  \node[squarecross]   (D) [right=of C] {};
+  \node[squarecross]   (E) [left= of A] {};
+
+  \path[*->] let \p1 = (A.three), \p2 = (A.center) in (\x1,\y2) edge [bend left] ($(B.one)+(0,0.2)$);
+  \path[*->] let \p1 = (B.three), \p2 = (B.center) in (\x1,\y2) edge [bend left] ($(C.one)+(0,0.2)$);
+  \draw[*->] let \p1 = (C.three), \p2 = (C.center) in (\x1,\y2) -- (D);
+
+  \draw[*->] ($(A.one)+(0.2,0.1)$) -- (E);
+  \path[*->] ($(B.one)+(0.1,0.1)$) edge [bend left] ($(A.three)+(0,-0.05)$);
+  \path[*->] ($(C.one)+(0.1,0.1)$) edge [bend left] ($(B.three)+(0,-0.05)$);
+\end{tikzpicture}
+\end{preview}
+\end{document}

+ 25 - 0
tikz/equilateral-triangle-heights/Makefile

@@ -0,0 +1,25 @@
+SOURCE = equilateral-triangle-heights
+DELAY = 80
+DENSITY = 300
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 73 - 0
tikz/equilateral-triangle-heights/equilateral-triangle-heights.tex

@@ -0,0 +1,73 @@
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+\usepackage{tikz}
+\usetikzlibrary{arrows,positioning, calc}
+\tikzset{
+    %Define standard arrow tip
+    >=stealth',
+    % Define arrow style
+    pil/.style={
+           ->,
+           thick}
+}
+
+\begin{document}
+\begin{preview}
+\begin{tikzpicture}
+
+    % draw the background
+    \draw [line width=1.5pt, fill=gray!2] (0,0) -- (60:4) -- (4,0) -- cycle;
+
+    \coordinate[label=left:$A$]  (A) at (0,0);
+    \coordinate[label=right:$B$] (B) at (4,0);
+    \coordinate[label=above:$C$] (C) at (2,3.464);
+
+    \coordinate[label=below:$c$](c) at ($ (A)!.5!(B) $);
+    \coordinate[label=left:$b$](b) at ($ (A)!.5!(C) $);
+    \coordinate[label=right:$a$](a) at ($ (B)!.5!(C) $);
+
+    % angle alpha
+    \draw[fill=green!30] (0,0) -- (0:0.75cm) arc (0:60:.75cm);
+    \draw (0.35cm,0.25cm) node {$\alpha$};
+
+    % angle beta
+    \begin{scope}[shift={(4cm,0cm)}]
+        \draw[fill=green!30] (0,0) -- (-180:0.75cm) arc (180:120:0.75cm);
+        \draw[color=gray, dashed] (0,0) -- node[sloped, above=-0.1cm] {$\scriptstyle h_b$} (150:3.464cm);
+        \draw (150:0.5cm) node {$\beta$};
+    \end{scope}
+
+    % angle gamma
+    \begin{scope}[shift={(60:4)}]
+        \draw[fill=green!30] (0,0) -- (-120:.75cm) arc (-120:-60:.75cm);
+        \draw[color=gray, dashed] (0,0) -- node[right=-0.1cm] {$\scriptstyle h_c$} (-90:3.464cm);
+        \draw (-90:0.5cm) node {$\gamma$};
+    \end{scope}
+
+    % Sign for right angle of h_c
+    \begin{scope}[shift={(2,0)}]
+        \draw[fill=gray!30] (0,0) -- node[above=-0.15cm,near start] {$\cdot$} (0:0.18cm)
+                            arc (0:90:.18cm);
+    \end{scope}
+
+    % sign of right angle of h_a
+    \begin{scope}[shift={(30:3.464cm)}]
+        \draw[fill=gray!30] (0,0) -- node[near end,right=-0.28cm] {$\cdot$} (-60:0.18cm)
+                            arc (-60:-150:.18cm);
+    \end{scope}
+
+    % sign of right angle of h_b
+    \begin{scope}[shift={(60:2cm)}]
+        \draw[fill=gray!30] (0,0) -- node[right=-0.08cm, near start] {$\cdot$} (60:0.18cm)
+                            arc (60:-30:.18cm);
+    \end{scope}
+
+    % Height with label
+    \draw[color=gray, dashed] (0,0) -- node[sloped, above=-0.1cm] {$\scriptstyle h_a$} (30:3.464cm);
+
+    % The triangle
+    \draw [line width=1.5pt] (0,0) -- (60:4) -- (4,0) -- cycle;
+  \end{tikzpicture}
+\end{preview}
+\end{document}

+ 25 - 0
tikz/equilateral-triangle/Makefile

@@ -0,0 +1,25 @@
+SOURCE = equilateral-triangle
+DELAY = 80
+DENSITY = 300
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 42 - 0
tikz/equilateral-triangle/equilateral-triangle.tex

@@ -0,0 +1,42 @@
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+\usepackage{tikz}
+\usetikzlibrary{positioning, calc}
+
+\begin{document}
+\begin{preview}
+\begin{tikzpicture}[scale=0.8]
+
+    % draw the background
+    \draw [line width=1.5pt, fill=gray!2] (0,0) -- (60:4) -- (4,0) -- cycle;
+
+    \coordinate[label=left:$A$]  (A) at (0,0);
+    \coordinate[label=right:$B$] (B) at (4,0);
+    \coordinate[label=above:$C$] (C) at (2,3.464);
+
+    \coordinate[label=below:$c$](c) at ($ (A)!.5!(B) $);
+    \coordinate[label=left:$b$] (b) at ($ (A)!.5!(C) $);
+    \coordinate[label=right:$a$](a) at ($ (B)!.5!(C) $);
+
+    % angle alpha
+    \draw[fill=green!30] (0,0) -- (0:0.75cm) arc (0:60:.75cm);
+    \draw (0.35cm,0.25cm) node {$\alpha$};
+
+    % angle beta
+    \begin{scope}[shift={(4cm,0cm)}]
+        \draw[fill=green!30] (0,0) -- (-180:0.75cm) arc (180:120:0.75cm);
+        \draw (150:0.5cm) node {$\beta$};
+    \end{scope}
+
+    % angle gamma
+    \begin{scope}[shift={(60:4)}]
+        \draw[fill=green!30] (0,0) -- (-120:.75cm) arc (-120:-60:.75cm);
+        \draw (-90:0.5cm) node {$\gamma$};
+    \end{scope}
+
+    % the triangle
+    \draw [line width=1.5pt] (A) -- (B) -- (C) -- cycle;
+  \end{tikzpicture}
+\end{preview}
+\end{document}

+ 25 - 0
tikz/evaluation-tree/Makefile

@@ -0,0 +1,25 @@
+SOURCE = evaluation-tree
+DELAY = 80
+DENSITY = 300
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 26 - 0
tikz/evaluation-tree/evaluation-tree.tex

@@ -0,0 +1,26 @@
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+\usepackage{tikz}
+\usetikzlibrary{shapes, calc} 
+\tikzstyle{vertex}=[draw,fill=black!15,circle,minimum size=20pt,inner sep=0pt]
+
+\begin{document}
+\begin{preview}
+\begin{tikzpicture}
+    \node[vertex] {+}
+        child { 
+            node[vertex] {+}
+            child { 
+                node[vertex] {+} 
+                child { node[vertex] {i} }
+                child { node[vertex] {++i} }
+            }
+            child { node[vertex] {i++} }
+        } child {
+            node[vertex] {++i}
+        }
+    ;
+\end{tikzpicture}
+\end{preview}
+\end{document}

+ 31 - 0
tikz/heap/Makefile

@@ -0,0 +1,31 @@
+SOURCE = heap
+DELAY = 80
+DENSITY = 300
+WIDTH = 500
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+png:
+	make
+	make svg
+	inkscape $(SOURCE).svg -w $(WIDTH) --export-png=$(SOURCE).png
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 47 - 0
tikz/heap/heap.tex

@@ -0,0 +1,47 @@
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+ 
+\usepackage{tikz}
+\usetikzlibrary{arrows,positioning, calc} 
+\tikzstyle{vertex}=[draw,fill=black!15,circle,minimum size=18pt,inner sep=0pt]
+
+
+\begin{document}
+\begin{preview}
+\begin{tikzpicture}[very thick,level/.style={sibling distance=70mm/#1}]
+\node [vertex] (r){$-4$}
+  child {
+    node [vertex] (a) {$2$}
+    child {
+      node [vertex] {$5$}
+      child {
+        node [vertex] {$6$}
+        child {node [vertex] {$20$}}
+      } 
+      child {
+        node [vertex] {$9$}
+      }
+    }
+    child {
+      node [vertex] {$3$}
+      child {node [vertex] {$19$}}
+      child {node [vertex] {$7$}}
+    }
+  }
+  child {
+    node [vertex] {$-3$}
+    child {
+      node [vertex] {$8$}
+      child {node [vertex] {$17$}}
+      child {node [vertex] {$17$}}
+    }
+    child {
+      node [vertex] {$2$}
+      child {node [vertex] {$11$}}
+      child {node [vertex] {$17$}}
+    }
+  };
+\end{tikzpicture}
+\end{preview}
+\end{document}

+ 25 - 0
tikz/isosceles-triangle-more/Makefile

@@ -0,0 +1,25 @@
+SOURCE = isosceles-triangle-more
+DELAY = 80
+DENSITY = 300
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 107 - 0
tikz/isosceles-triangle-more/isosceles-triangle-more.tex

@@ -0,0 +1,107 @@
+\documentclass{article}
+
+\usepackage{xcolor}
+\definecolor{cWinkelhalbierende}{HTML}{00940A}
+\definecolor{cSeitenhalbierende}{HTML}{FF0000}
+\definecolor{cAchse}{HTML}            {94008A}
+\definecolor{cMittelsenkrechten}{HTML}{181FED}
+
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+\usepackage{tikz}
+\usetikzlibrary{shapes, calc} 
+
+\begin{document}
+\begin{preview}
+\begin{tikzpicture}
+    \coordinate[label=left:$A$]  (A) at (0,0);
+    \coordinate[label=right:$B$] (B) at (3.2,0);
+    \coordinate[label=left:$C$] (C) at (1.6,4);
+
+    % Draw the background of the triangle
+    \node[isosceles triangle, isosceles triangle apex angle=44,draw,
+        inner sep=0pt,anchor=lower side,rotate=90,draw=black,
+        line width=1.5pt, minimum height=4cm, fill=gray!2] 
+        (triangle) at (1.6,-0.05) {};
+
+    % Rechte Winkel
+    \begin{scope}[shift={($(A)!0.5!(C)$)}, rotate=-22]
+        \draw[fill=gray!30] (0,0) -- (-180:0.25cm) arc (180:90:0.25cm);
+        \draw (140:0.15cm) node {$\cdot$};
+    \end{scope}
+
+    \begin{scope}[shift={($(B)!0.5!(C)$)}, rotate=-70]
+        \draw[fill=gray!30] (0,0) -- (-180:0.25cm) arc (180:90:0.25cm);
+        \draw (140:0.15cm) node {$\cdot$};
+    \end{scope}
+
+    \begin{scope}[shift={($(A)!0.5!(B)$)}]
+        \draw[fill=gray!30] (0,0) -- (-180:0.25cm) arc (180:90:0.25cm);
+        \draw (140:0.15cm) node {$\cdot$};
+    \end{scope}
+
+    % Mittelsenkrechten
+    % y = m * x + t
+    % Für die Mittelsenkrechte m_AB gilt ($(A)!0.5!(B)$) ist auf m_AB
+    % m = - (delta x) / (delta y) = - (A.x - B.x) / (A.y - B.y)
+    % t = y - m*x
+
+    % AB
+    \draw[color=cAchse, thick] (1.6cm,-0.3) -- node {} (1.6cm, 4.2cm);
+
+    % AC
+    % (0.8, 2) \in  Mittelsenkrechte auf b
+    % m = - (-1.6)/(-4) = - 0.4
+    % t = 2 + 0.4 * 0.8 = 2.32
+    % y = -0.4 * x + 2.32
+    % (0, 2.32) und (3, 1.12)
+    \draw[color=cMittelsenkrechten] (0,2.32) -- node {} (3, 1.12);
+
+    % Umkreismittelpunkt
+    % x = 1.6
+    % y = -0.4*1.6 + 2.32 = 1.68
+    \node [circle,inner sep=1pt,fill=cMittelsenkrechten] at (1.6,1.68) {};
+
+    % ((3.2+1.6)/2, (0+4)/2) ) = (2.4, 2) \in Mittelsenkrechte auf a
+    % 2 = m * 2.4 + t
+    % m_BC = delta y / delta x = (0-4)/(3.2-1.6) = -2.5 = -5/2
+    % m = 2/5
+    % t = y - m*x = 2 - 2.4 * 2/5  = 1.04
+    % => y = 2/5 * x + 1.04
+    % (0, 1.04) und (3, 2.24)
+    \draw[color=cMittelsenkrechten] (0, 1.04) -- node {} (3, 2.24);
+
+    % Seitenhalbierende
+    \draw[color=cSeitenhalbierende,dashed] (A) -- node {} ($(B)!0.5!(C)$);
+    \draw[color=cSeitenhalbierende,dashed] (B) -- node {} ($(A)!0.5!(C)$);
+    %\draw[color=red, dashed] (C) -- node {} ($(A)!0.5!(B)$);
+
+    % Schwerpunkt
+    % x = 1.6
+    \node [circle,inner sep=1pt,fill=cSeitenhalbierende] at (1.6,1.34) {};
+
+    % Winkelhalbierende
+    % apex angle = 44° => alpha = 68° => 34°
+    \draw[color=cWinkelhalbierende, densely dashed] (A) -- node {} (34:4);
+
+    \begin{scope}[shift={($(B)$)}]
+        \draw (146:4) node (BEnd) {};
+    \end{scope}
+    
+    \draw[color=cWinkelhalbierende, densely dashed] (B) -- node {} (BEnd);
+    %\draw[color=red, dashed] (C) -- node {} ($(A)!0.5!(B)$);
+
+    % Inkreismittelpunkt
+    % x = 1.6
+    % tan(68/2) = y/x => y = tan(34)*x = 1.48
+    \node [circle,inner sep=1pt,fill=cWinkelhalbierende] at (1.6,1.08) {};
+
+
+    % Draw the triangle
+    \node[isosceles triangle, isosceles triangle apex angle=44,draw,
+        inner sep=0pt,anchor=lower side,rotate=90,draw=black,
+        line width=1.5pt, minimum height=4cm] 
+        (triangle) at (1.6,-0.05) {};
+  \end{tikzpicture}
+\end{preview}
+\end{document}

+ 25 - 0
tikz/isosceles-triangle/Makefile

@@ -0,0 +1,25 @@
+SOURCE = isosceles-triangle
+DELAY = 80
+DENSITY = 300
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 40 - 0
tikz/isosceles-triangle/isosceles-triangle.tex

@@ -0,0 +1,40 @@
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+\usepackage{tikz}
+\usetikzlibrary{shapes, calc} 
+\begin{document}
+\begin{preview}
+\begin{tikzpicture}
+
+    \node[isosceles triangle, isosceles triangle apex angle=44,draw,
+        inner sep=0pt,anchor=lower side,rotate=90,draw=black,
+        line width=1.5pt, minimum height=4cm, fill=gray!2] (triangle) at (1.6,-0.05) {};
+
+    \draw[fill=green!30] (0,0) -- (0:0.50cm) arc (0:68:.50cm);
+    \begin{scope}[shift={(3.2cm,0cm)}]
+        \draw[fill=green!30] (0,0) -- (-180:0.50cm) arc (180:110:0.5cm);
+        \draw (150:0.35cm) node {$\beta$};
+    \end{scope}
+
+    \begin{scope}[shift={(1.6cm,4cm)}]
+        \draw[fill=red!30] (0,0) -- (250:.75cm) arc (250:292:.75cm);
+        \draw (-90:0.5cm) node {$\gamma$};
+    \end{scope}
+
+    \coordinate[label=left:$A$] (A) at (0,0);
+    \coordinate[label=right:$B$] (B) at (3.2,0);
+    \coordinate[label=above:$C$] (C) at (1.6,4);
+
+    \coordinate[label=below:$c$](c) at ($ (A)!.5!(B) $);
+    \coordinate[label=left:$b$](b) at ($ (A)!.5!(C) $);
+    \coordinate[label=right:$a$](a) at ($ (B)!.5!(C) $);
+
+    \node[isosceles triangle, isosceles triangle apex angle=44,draw,
+        inner sep=0pt,anchor=lower side,rotate=90,draw=black,
+        line width=1.5pt, minimum height=4cm] (triangle) at (1.6,-0.05) {};
+
+    \coordinate[label=45:$\alpha$] (Alpha) at (A);
+  \end{tikzpicture}
+\end{preview}
+\end{document}

+ 25 - 0
tikz/parse-tree/Makefile

@@ -0,0 +1,25 @@
+SOURCE = parse-tree
+DELAY = 80
+DENSITY = 300
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 32 - 0
tikz/parse-tree/parse-tree.tex

@@ -0,0 +1,32 @@
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+\usepackage{tikz}
+\usetikzlibrary{shapes, calc} 
+\tikzstyle{vertex}=[draw,fill=black!15,circle,minimum size=20pt,inner sep=0pt]
+
+\begin{document}
+\begin{preview}
+\begin{tikzpicture}[font=\sffamily,thick,level/.style={sibling distance=50mm/#1}]
+    \node[vertex] {S}
+        child { 
+            node[vertex] {A}
+            child { 
+                node[vertex] {a} 
+            }
+            child { 
+                node[vertex] {A} 
+                child { node[vertex] {a} }
+                child { 
+                    node[vertex] {A}
+                    child { node[vertex] {$\varepsilon$} }
+                }
+            }
+        } child {
+            node[vertex] {B}
+            child { node[vertex] {b} }
+        }
+    ;
+\end{tikzpicture}
+\end{preview}
+\end{document}

+ 31 - 0
tikz/path/Makefile

@@ -0,0 +1,31 @@
+SOURCE = path
+DELAY = 80
+DENSITY = 300
+WIDTH = 500
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+png:
+	make
+	make svg
+	inkscape $(SOURCE).svg -w $(WIDTH) --export-png=$(SOURCE).png
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 34 - 0
tikz/path/path.tex

@@ -0,0 +1,34 @@
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+ 
+\usepackage{tikz}
+\usetikzlibrary{arrows,positioning, calc} 
+\tikzstyle{vertex}=[draw,fill=black!15,circle,minimum size=20pt,inner sep=0pt]
+\tikzstyle{selected edge} = [draw,line width=5pt,-,red!50]
+
+\begin{document}
+\pgfdeclarelayer{background}
+\pgfsetlayers{background,main}
+
+\begin{preview}
+\begin{tikzpicture}  [scale=1.2]
+  \node (a)[vertex] at (0,2) {a};
+  \node (b)[vertex] at (1,1) {b};
+  \node (c)[vertex] at (3,2) {c};
+  \node (d)[vertex] at (4,1) {d};
+  \node (e)[vertex] at (2,0) {e};
+  \node (f)[vertex] at (1,3) {f};
+  \node (g)[vertex] at (5,3) {g};
+  \node (h)[vertex] at (0,1) {h};
+
+  \foreach \from/\to in {a/f,f/g,h/b,b/c,c/d,d/e,e/b,f/c}
+    \draw (\from) -- (\to);
+
+  \begin{pgfonlayer}{background}
+      \foreach \from/\to in {a/f,f/c,c/d,d/e,e/b,b/h}
+          \draw (\from.center) edge[selected edge] (\to.center);
+  \end{pgfonlayer}
+\end{tikzpicture}
+\end{preview}
+\end{document}

+ 31 - 0
tikz/red-black-tree-small/Makefile

@@ -0,0 +1,31 @@
+SOURCE = red-black-tree
+DELAY = 80
+DENSITY = 300
+WIDTH = 500
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+png:
+	make
+	make svg
+	inkscape $(SOURCE).svg -w $(WIDTH) --export-png=$(SOURCE).png
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 27 - 0
tikz/red-black-tree-small/red-black-tree.tex

@@ -0,0 +1,27 @@
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+ 
+\usepackage{tikz}
+\usetikzlibrary{trees,arrows,positioning, calc} 
+\tikzstyle{redVertex}  =[draw,fill=red,     circle,minimum size=18pt,inner sep=0pt, text=white]
+\tikzstyle{blackVertex}=[draw,fill=black,   circle,minimum size=18pt,inner sep=0pt, text=white]
+\tikzstyle{nil}        =[draw,fill=black,rectangle,minimum size=18pt,inner sep=0pt, text=white]
+
+\begin{document}
+\begin{preview}
+\begin{tikzpicture}[font=\sffamily,very thick,level/.style={sibling distance=80mm/#1}]
+\node [blackVertex] (r){2}
+      child {
+        node [blackVertex] {1}
+        child {node [nil] {NIL}}
+        child {node [nil] {NIL}}
+      }
+      child {
+        node [blackVertex] {3}
+        child {node [nil] {NIL}}
+        child {node [nil] {NIL}}
+      };
+\end{tikzpicture}
+\end{preview}
+\end{document}

+ 31 - 0
tikz/red-black-tree/Makefile

@@ -0,0 +1,31 @@
+SOURCE = red-black-tree
+DELAY = 80
+DENSITY = 300
+WIDTH = 500
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+png:
+	make
+	make svg
+	inkscape $(SOURCE).svg -w $(WIDTH) --export-png=$(SOURCE).png
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 76 - 0
tikz/red-black-tree/red-black-tree.tex

@@ -0,0 +1,76 @@
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+ 
+\usepackage{tikz}
+\usetikzlibrary{trees,arrows,positioning, calc} 
+\tikzstyle{redVertex}  =[draw,fill=red,     circle,minimum size=18pt,inner sep=0pt, text=white]
+\tikzstyle{blackVertex}=[draw,fill=black,   circle,minimum size=18pt,inner sep=0pt, text=white]
+\tikzstyle{nil}        =[draw,fill=black,rectangle,minimum size=18pt,inner sep=0pt, text=white]
+
+\begin{document}
+\begin{preview}
+\begin{tikzpicture}[font=\sffamily,very thick,level/.style={sibling distance=80mm/#1}]
+\node [blackVertex] (r){8}
+  child {
+    node [blackVertex] {3}
+    child {
+      node [redVertex] {2}
+      child {
+        node [blackVertex] {-3}
+        child {
+            node [redVertex] {-4}
+            child {node [nil] {NIL}}
+            child {node [nil] {NIL}}
+        }
+      } 
+      child {
+        node [blackVertex] {2}
+        child {node [nil] {NIL}}
+        child {node [nil] {NIL}}
+      }
+    }
+    child {
+      node [blackVertex] {6}
+      child {
+        node [redVertex] {5}
+        child {node [nil] {NIL}}
+        child {node [nil] {NIL}}
+      }
+      child {
+        node [redVertex] {7}
+        child {node [nil] {NIL}}
+        child {node [nil] {NIL}}
+      }
+    }
+  }
+  child {
+    node [blackVertex] {17}
+    child {
+      node [blackVertex] {9}
+      child {
+        node [redVertex] {11}
+        child {node [nil] {NIL}}
+        child {node [nil] {NIL}}
+      }
+    }
+    child {
+      node [redVertex] {19}
+      child {
+        node [blackVertex] {17}
+        child {
+          node [redVertex] {17}
+          child {node [nil] {NIL}}
+          child {node [nil] {NIL}}
+        }
+      }
+      child {
+        node [blackVertex] {20}
+        child {node [nil] {NIL}}
+        child {node [nil] {NIL}}
+      }
+    }
+  };
+\end{tikzpicture}
+\end{preview}
+\end{document}

+ 31 - 0
tikz/right-triangle/Makefile

@@ -0,0 +1,31 @@
+SOURCE = right-triangle
+DELAY = 80
+DENSITY = 300
+WIDTH = 500
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+png:
+	make
+	make svg
+	inkscape $(SOURCE).svg -w $(WIDTH) --export-png=$(SOURCE).png
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 53 - 0
tikz/right-triangle/right-triangle.tex

@@ -0,0 +1,53 @@
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+\usepackage{tikz}
+\usetikzlibrary{shapes, calc, shapes,snakes} 
+\usepackage{amsmath,amssymb}
+
+\begin{document}
+\begin{preview}
+\begin{tikzpicture}
+    \newcommand\XC{4}
+    \newcommand\ALPHA{30}
+
+    \newcommand\XB{{(\XC*(cos(\ALPHA)*cos(\ALPHA) - sin(\ALPHA)*sin(\ALPHA)) + \XC)*0.5}}
+    \newcommand\YB{{sqrt(cos(\ALPHA)*\XC*cos(\ALPHA)*\XC - (\XC*(cos(\ALPHA)*cos(\ALPHA) - sin(\ALPHA)*sin(\ALPHA)) + \XC)*0.5*(\XC*(cos(\ALPHA)*cos(\ALPHA) - sin(\ALPHA)*sin(\ALPHA)) + \XC)*0.5)}}
+
+    % Draw the triangle
+    \draw[fill=gray!10]  (0,    0) coordinate (A) 
+        -- (\XB,\YB) coordinate (C) 
+        -- (\XC,  0) coordinate (B) 
+        -- (0,    0);
+
+    % Draw nodes
+    \node at (A)[anchor=north] {A};
+    \node at (B)[anchor=north] {B};
+    \node at (C)[anchor=south] {C};
+
+    % Draw edge text
+    \node (c) at ($(A)!0.50!(B)$) [below,font=\tiny] {Hypothenuse};
+    \node (b) at ($(A)!0.50!(C)$) [above,rotate=\ALPHA,font=\tiny] 
+                {Ankathete zu Winkel $\alpha$};
+    \node (a) at ($(B)!0.35!(C)$) [above,rotate={\ALPHA-90},font=\tiny] 
+                {\parbox{2cm}{Gegenkathete\\ zu Winkel $\alpha$}};
+
+
+    % draw alpha
+    \draw[fill=green!30] (0,0) -- (0:0.75cm) arc (0:\ALPHA:.75cm);
+    \coordinate[label=right:$\alpha$] (Alpha) at (0.25,0.15);
+
+    % draw beta
+    \begin{scope}[shift={(\XC, 0)}]
+        \draw[fill=red!30] (0,0) -- (-180:0.50cm) arc (180:{180-(90-\ALPHA)}:0.5cm);
+        \draw (150:0.35cm) node {$\beta$};
+    \end{scope}
+
+    % draw gamma
+    \begin{scope}[shift={(\XB, \YB)}]
+        \draw[fill=blue!30] (0,0) -- ({180+\ALPHA}:0.5cm) arc ({180+\ALPHA}:{180+\ALPHA+90}:0.5cm);
+        \draw (-0.1, -0.05) node[below] {$\gamma$};
+    \end{scope}
+\end{tikzpicture}
+\end{preview}
+\end{document}

+ 31 - 0
tikz/singly-linked-list/Makefile

@@ -0,0 +1,31 @@
+SOURCE = singly-linked-list
+DELAY = 80
+DENSITY = 300
+WIDTH = 500
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+png:
+	make
+	make svg
+	inkscape $(SOURCE).svg -w $(WIDTH) --export-png=$(SOURCE).png
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 44 - 0
tikz/singly-linked-list/singly-linked-list.tex

@@ -0,0 +1,44 @@
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+ 
+\usepackage{tikz}
+\usetikzlibrary{calc,shapes.multipart,chains,arrows}
+
+\tikzset{
+    squarecross/.style={
+        draw, rectangle,minimum size=18pt, fill=orange!80,
+        inner sep=0pt, text=black,
+        path picture = {
+            \draw[black]
+            (path picture bounding box.north west) -- 
+            (path picture bounding box.south east)
+            (path picture bounding box.south west) -- 
+            (path picture bounding box.north east);
+        }
+    }
+}
+
+\begin{document}
+\begin{preview}
+\begin{tikzpicture}[
+        list/.style={
+            very thick, rectangle split, 
+            rectangle split parts=2, draw, 
+            rectangle split horizontal, minimum size=18pt,
+            inner sep=4pt, text=black,
+            rectangle split part fill={red!20, blue!20}
+        }, 
+        ->, start chain, very thick
+      ]
+
+  \node[list,on chain] (A) {12};
+  \node[list,on chain] (B) {99};
+  \node[list,on chain] (C) {37};
+  \node[squarecross]   (D) [right=of C] {};
+  \draw[*->] let \p1 = (A.two), \p2 = (A.center) in (\x1,\y2) -- (B);
+  \draw[*->] let \p1 = (B.two), \p2 = (B.center) in (\x1,\y2) -- (C);
+  \draw[*->] let \p1 = (C.two), \p2 = (C.center) in (\x1,\y2) -- (D);
+\end{tikzpicture}
+\end{preview}
+\end{document}

+ 31 - 0
tikz/stack/Makefile

@@ -0,0 +1,31 @@
+SOURCE = stack
+DELAY = 80
+DENSITY = 300
+WIDTH = 500
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+png:
+	make
+	make svg
+	inkscape $(SOURCE).svg -w $(WIDTH) --export-png=$(SOURCE).png
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 19 - 0
tikz/stack/stack.tex

@@ -0,0 +1,19 @@
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+ 
+\usepackage{tikz}
+\usetikzlibrary{shapes.multipart} 
+
+\begin{document}
+\begin{preview}
+\begin{tikzpicture}[stack/.style={rectangle split, rectangle split parts=#1,draw, anchor=center, fill=white}]
+\node[stack=5]  {
+\nodepart{two}a
+\nodepart{three}c
+\nodepart{four}c
+\nodepart{five}b
+};
+\end{tikzpicture}
+\end{preview}
+\end{document}

+ 31 - 0
tikz/teststrategien-anschaulich/Makefile

@@ -0,0 +1,31 @@
+SOURCE = teststrategien-anschaulich
+DELAY = 80
+DENSITY = 300
+WIDTH = 500
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+png:
+	make
+	make svg
+	inkscape $(SOURCE).svg -w $(WIDTH) --export-png=$(SOURCE).png
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 51 - 0
tikz/teststrategien-anschaulich/teststrategien-anschaulich.tex

@@ -0,0 +1,51 @@
+\documentclass{article}
+
+\usepackage[utf8]{inputenc} % this is needed for umlauts
+\usepackage[ngerman]{babel} % this is needed for umlauts
+\usepackage[T1]{fontenc}    % this is needed for correct output of umlauts in pdf
+
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+\usepackage{tikz}
+\usetikzlibrary{shapes, calc, shapes,snakes, automata} 
+\usepackage{amsmath,amssymb}
+
+\tikzstyle{midnode}=[
+    draw=blue!70,   % draw the border with 70% transparent blue
+    rectangle,      % the shape of the node is a rectangle
+    fill=blue!10,   % fill the box with 20% blue
+    text width=1cm,
+    text centered]
+
+\tikzstyle{smallnode}=[
+    draw=blue!70,   % draw the border with 70% transparent blue
+    rectangle,      % the shape of the node is a rectangle
+    fill=blue!10,   % fill the box with 20% blue
+    text width=0.4cm,
+    text centered]
+
+\begin{document}
+\begin{preview}
+\begin{tikzpicture}[->,>=stealth,auto, very thick, scale=5]
+        % Draw the vertices.
+        \node[midnode] (s) {Start};
+        \node[smallnode, right of=s, node distance=1.8cm] (a) {1};
+        \node[smallnode, below of=a] (b) {2};
+        \node[smallnode, right of=a, node distance=1.8cm] (c) {3};
+        \node[smallnode, below of=c] (d) {4};
+        \node[smallnode, right of=c, node distance=1.8cm] (e) {5};
+        \node[midnode, below of=e] (x) {Stopp};
+ 
+        % Connect vertices with edges
+        \path (s) edge node {} (a);
+        \path (a) edge node {} (c);
+        \path (a) edge node {} (b);
+        \path (b) edge node {} (c);
+        \path (c) edge node {} (d);
+        \path (c) edge node {} (e);
+        \path (d) edge node {} (e);
+        \path (e) edge node {} (x);
+
+\end{tikzpicture}
+\end{preview}
+\end{document}

+ 31 - 0
tikz/teststrategien/Makefile

@@ -0,0 +1,31 @@
+SOURCE = teststrategien
+DELAY = 80
+DENSITY = 300
+WIDTH = 500
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+png:
+	make
+	make svg
+	inkscape $(SOURCE).svg -w $(WIDTH) --export-png=$(SOURCE).png
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 61 - 0
tikz/teststrategien/teststrategien.tex

@@ -0,0 +1,61 @@
+\documentclass{article}
+
+\usepackage[utf8]{inputenc} % this is needed for umlauts
+\usepackage[ngerman]{babel} % this is needed for umlauts
+\usepackage[T1]{fontenc}    % this is needed for correct output of umlauts in pdf
+
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+\usepackage{tikz}
+\usetikzlibrary{shapes, calc, shapes,snakes, automata} 
+\usepackage{amsmath,amssymb}
+
+\tikzstyle{textnode}=[
+    draw=blue!70,   % draw the border with 70% transparent blue
+    rectangle,      % the shape of the node is a rectangle
+    fill=blue!10,   % fill the box with 20% blue
+    text width=4cm,
+    inner xsep=3pt,
+    text centered]
+
+\tikzstyle{smallnode}=[
+    draw=blue!70,   % draw the border with 70% transparent blue
+    rectangle,      % the shape of the node is a rectangle
+    fill=blue!10,   % fill the box with 20% blue
+    text width=1cm,
+    text centered]
+
+\begin{document}
+\begin{preview}
+\begin{tikzpicture}[->,>=stealth,auto, very thick]
+        % Draw the vertices.
+        \node[textnode] (a) {Pfadüberdeckung};
+        \node[textnode, below of=a, node distance=4cm] (b) {Zweigüberdeckung};
+        \node[textnode, below of=b] (c) {Anweisungsüberdeckung};
+
+        \node[textnode, right of=a, node distance=5cm] (d) {Mehrfache\\Bedingungsüberdeckung};
+        \node[textnode, below of=d, node distance=2cm] (e) {Minimal-mehrfache Bedinungsüberdeckung};
+        \node[textnode, below of=e, node distance=2.2cm] (f) {Einfache\\Bedinungsüberdeckung};
+
+        % Legende
+        \node[smallnode, below of=c, node distance=1.5cm] (x) {x};
+        \node[smallnode, below of=x] (y) {y};
+        \draw (x.south) -- (y.north)
+            node    [midway, 
+                    right of=x, 
+                    node distance=3cm, 
+                    draw=none, 
+                    text width=4cm] 
+                    {Testverfahren x\\subsummiert\\Testverfahren y};
+ 
+        % Connect vertices with edges and draw weights
+        \path (a) edge node {} (b);
+        \path (b) edge node {} (c);
+        \path (d) edge node {} (e);
+        \path (e) edge node {} (f);
+        \path (e) edge node {} (b.east);
+
+        \path (x) edge node {} (y);
+\end{tikzpicture}
+\end{preview}
+\end{document}

+ 31 - 0
tikz/triangle/Makefile

@@ -0,0 +1,31 @@
+SOURCE = triangle
+DELAY = 80
+DENSITY = 300
+WIDTH = 500
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+png:
+	make
+	make svg
+	inkscape $(SOURCE).svg -w $(WIDTH) --export-png=$(SOURCE).png
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 56 - 0
tikz/triangle/triangle.tex

@@ -0,0 +1,56 @@
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+\usepackage{tikz}
+\usetikzlibrary{shapes, calc, shapes,snakes} 
+\usepackage{amsmath,amssymb}
+
+\begin{document}
+\begin{preview}
+\begin{tikzpicture}[thick]
+    \newcommand\XC{4}
+    \newcommand\ALPHA{30}
+
+    \newcommand\XB{{(\XC*(cos(\ALPHA)*cos(\ALPHA) - sin(\ALPHA)*sin(\ALPHA)) + \XC)*0.5}}
+    \newcommand\YB{{sqrt(cos(\ALPHA)*\XC*cos(\ALPHA)*\XC - (\XC*(cos(\ALPHA)*cos(\ALPHA) - sin(\ALPHA)*sin(\ALPHA)) + \XC)*0.5*(\XC*(cos(\ALPHA)*cos(\ALPHA) - sin(\ALPHA)*sin(\ALPHA)) + \XC)*0.5)}}
+
+    % Draw the triangle
+    \draw[fill=gray!10]  (0,    0) coordinate (A) 
+        -- (\XB,\YB) coordinate (C) 
+        -- (\XC,  0) coordinate (B) 
+        -- (0,    0);
+
+    % Draw nodes
+    \node at (A)[anchor=north] {A};
+    \node at (B)[anchor=north] {B};
+    \node at (C)[anchor=south] {C};
+
+    % Draw edge text
+    \node (c) at ($(A)!0.5!(B)$) [below] {c};
+    \node (b) at ($(A)!0.5!(C)$) [above] {b};
+    \node (a) at ($(B)!0.6!(C)$) [right] {a};
+
+
+    % draw alpha
+    \draw[fill=green!30] (0,0) -- (0:0.75cm) arc (0:\ALPHA:.75cm);
+    \coordinate[label=right:$\alpha$] (Alpha) at (0.25,0.15);
+
+    % draw beta
+    \begin{scope}[shift={(\XC, 0)}]
+        \draw[fill=red!30] (0,0) -- (-180:0.50cm) arc (180:{180-(90-\ALPHA)}:0.5cm);
+        \draw (150:0.35cm) node {$\beta$};
+    \end{scope}
+
+    % draw gamma
+    \begin{scope}[shift={(\XB, \YB)}]
+        \draw[fill=blue!30] (0,0) -- ({180+\ALPHA}:0.5cm) arc ({180+\ALPHA}:{180+\ALPHA+90}:0.5cm);
+        \draw (-0.1, -0.05) node[below] {$\gamma$};
+    \end{scope}
+
+    \draw  (0,    0) coordinate (X) 
+        -- (\XB,\YB) coordinate (Y) 
+        -- (\XC,  0) coordinate (Z) 
+        -- (0,    0);
+\end{tikzpicture}
+\end{preview}
+\end{document}

+ 31 - 0
tikz/url-structure/Makefile

@@ -0,0 +1,31 @@
+SOURCE = url-structure
+DELAY = 80
+DENSITY = 300
+WIDTH = 500
+
+make:
+	pdflatex $(SOURCE).tex -output-format=pdf
+	make clean
+
+clean:
+	rm -rf  $(TARGET) *.class *.html *.log *.aux
+
+gif:
+	pdfcrop $(SOURCE).pdf
+	convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
+	make clean
+
+png:
+	make
+	make svg
+	inkscape $(SOURCE).svg -w $(WIDTH) --export-png=$(SOURCE).png
+
+transparentGif:
+	convert $(SOURCE).pdf -transparent white result.gif
+	make clean
+
+svg:
+	#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
+	pdf2svg $(SOURCE).pdf $(SOURCE).svg
+	# Necessary, as pdf2svg does not always create valid svgs:
+	inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg

+ 43 - 0
tikz/url-structure/url-structure.tex

@@ -0,0 +1,43 @@
+\documentclass{article}
+\usepackage[pdftex,active,tightpage]{preview}
+\setlength\PreviewBorder{2mm}
+\usepackage{tikz}
+\usetikzlibrary{shapes,snakes} 
+\usepackage{amsmath,amssymb}
+
+\begin{document}
+\begin{preview}
+
+
+% Define box and box title style
+\tikzstyle{mybox} = [
+    draw=red, 
+    fill=blue!20, 
+    very thick,
+    rectangle, 
+    rounded corners, 
+    inner sep=10pt, 
+    inner ysep=20pt
+]
+\tikzstyle{fancytitle} =[fill=red, text=white]
+
+
+\begin{tikzpicture}
+\node [mybox] (box){
+    \begin{minipage}{0.9\textwidth}
+        $\underbrace{\text{http}}_{\text{protocol}}
+          \text{://}
+          \underbrace{
+                \overbrace{\text{martin-thoma}}^\text{2\textsuperscript{nd} level domain}
+                \text{.}
+                \overbrace{\text{com}}^\text{TLD}
+          }_\text{hostname}
+          \underbrace{\text{/why-to-study-math/}}_\text{path}
+          \text{\#}
+          \underbrace{\text{Math\_is\_fun}}_\text{Fragment identifier}$
+    \end{minipage}
+};
+\node[fancytitle, right=10pt] at (box.north west) {The URL};
+\end{tikzpicture}
+\end{preview}
+\end{document}