diff --git a/examples/tikz-graphs_cheat-sheet.pdf b/examples/tikz-graphs_cheat-sheet.pdf new file mode 100644 index 0000000..1ce0d41 Binary files /dev/null and b/examples/tikz-graphs_cheat-sheet.pdf differ diff --git a/examples/tikz-graphs_cheat-sheet.tex b/examples/tikz-graphs_cheat-sheet.tex new file mode 100644 index 0000000..d4a2788 --- /dev/null +++ b/examples/tikz-graphs_cheat-sheet.tex @@ -0,0 +1,228 @@ +\documentclass[a4paper,fontsize=12pt,listof=totoc,toc=sectionentrywithdots]{scrartcl} + +\usepackage[T1]{fontenc} +\usepackage[utf8]{inputenc} +\usepackage{emoji} +\usepackage{polyglossia} +\setdefaultlanguage{english} +\usepackage{lmodern} +\usepackage[onehalfspacing]{setspace} +\setcounter{secnumdepth}{5} % numbered paragraphs +\usepackage{fancyhdr} + \setlength{\headheight}{15.2pt} + \pagestyle{fancy} + \fancyhf{} + \fancyhead[R]{cheat sheet} + \fancyhead[L]{tikz graphs} + \fancyfoot[C]{\thepage} + +% +% tikz +% + +\usepackage{tikz} +\usepackage{tikzsymbols} +\usetikzlibrary{trees, graphs, graphdrawing, automata, positioning, quotes, arrows} +\usegdlibrary{force, trees, circular, layered} % choosing look of graphs + +% +% define custom colors +% + +\definecolor{bmpink}{HTML}{FF91AF} +\definecolor{mauve}{HTML}{BB85AB} +\definecolor{pastyel}{HTML}{FFFFCA} + +% +% math packages +% + +\usepackage{mathtools} +\usepackage{amsxtra,amssymb,amsthm,amstext,amsfonts} +\usepackage{esint} % for circle integrals + +% +% microtype setting +% + +\usepackage{float} % better control of placements +\usepackage{microtype} % package for optimising typographic details + +% +% tables +% + +\usepackage{booktabs} % optimised display of tables +\usepackage{tabularx} % more modern display of tables with \toprule,\midrule,\bottomrule +\usepackage{multirow} % allows table cells over multiple rows within a column + +% +% misc packages +% + +\usepackage[extendedchars]{grffile} % for spaces and special chars in file paths +\usepackage{xcolor} % adds colours +\usepackage{multicol} % allows dividing (parts of) the page into multiple columns +\usepackage[hyphens]{url} % adds hyperlinks +\usepackage[]{hyperref} % adds links to toc + +% +% math related custom commands +% + +\renewcommand{\epsilon}{\varepsilon} +\renewcommand{\phi}{\varphi} +\newtheorem{lemma}{Lemma} + +% +% maketitle +% + +\title{tikz graphs} +\subject{cheat sheet} +\author{Isabell Pflug} +\date{\today} + +% +% document +% + +\begin{document} +\maketitle +\tableofcontents + +% +% Trees +% + +\pagebreak +\section{Trees} +\begin{center} + \begin{tikzpicture}[level distance=1.5cm, level 1/.style={sibling distance=2cm}, node distance={2cm}, thick, main/.style = {draw, circle}] + \node (start) {}; + \node[main] (a) [below of = start, node distance = {0.7cm}] {a} + child { node[main] (b) {b} } + child { node[main] (c) {c} } + child { node[main] (d) {d} + child { node[main] (e) {e} } }; + \node[main, draw=none] (h) [right of = a] {}; + \node[main] (f) [right of = h] {f} + child { node[main] (g) {g} }; + \end{tikzpicture} +\end{center} + +% +% Graph section +% + +\pagebreak +\section{Graphs} + +% +% Simple Necklace Layout +% + +\subsection{Simple Necklace Layout} +\begin{tikzpicture}[inner sep=2pt] + \graph [simple necklace layout, node distance=1cm, nodes={circle, draw, minimum size=0.4cm}, empty nodes] + { + $G$ // { 1[x=1,y=2], 2, 3, 4, 5, + 1 --[red] 3 --[red] 5 --[red] 2 --[red] 4 --[red] 1 + } + }; + \graph [simple necklace layout, node distance=1cm, nodes={circle, draw, minimum size=0.4cm}, empty nodes] + { + $G^{C}$ // { 1[x=4,y=2], 2, 3, 4, 5, + 1 --[green] 2 --[green] 3 --[green] 4 --[green] 5 --[green] 1 + } + }; + \graph [simple necklace layout, node distance=1cm, nodes={circle, draw, minimum size=0.4cm}, empty nodes] + { + $K_{5}$ // { 1[x=7,y=2], 2, 3, 4, 5, + 1 --[green] 2 --[green] 3 --[green] 4 --[green] 5 --[green] 1, + 1 --[red] 3 --[red] 5 --[red] 2 --[red] 4 --[red] 1 + } + }; +\end{tikzpicture} \\ +\begin{tikzpicture}[inner sep=2pt] + \centering + \graph [simple necklace layout, node distance=1cm, nodes={circle, draw, minimum size=0.4cm}, empty nodes] + { + $K_{4}$ // { 1[fill=bmpink, x=1,y=2], 2[fill=pastyel], 3[fill=mauve], 4[fill=bmpink], 3 -- 1 -- 2 -- 3 -- 4 -- 2, 1 -- 4 } + }; + \graph [simple necklace layout, node distance=1cm, nodes={circle, draw, minimum size=0.4cm}, empty nodes] + { + $H$ // { 1[fill=bmpink, x=4,y=2], 2[fill=pastyel], 3[fill=mauve], 4[fill=bmpink], 5[fill=mauve], 6[fill=pastyel], 1 -- 2 -- 3 -- 1, + 2 -- 4 -- 3, 2 -- 5, + 3 -- 6, + 5 -- 4 -- 6 -- 5, + 4, + 6 -- 1 -- 5 + } + }; +\end{tikzpicture} + +% +% Spring Layout +% + +\subsection{Spring Layout, weighted edges} +\begin{center} +\begin{tikzpicture}[inner sep=2pt, thick] +\graph [spring layout, node distance=1cm, nodes={circle, draw, minimum size=0.6cm}] + { + A[x=1,y=6] --[bmpink] B[x=5,y=6] ->[bmpink] C[x=3.5,y=4] -- A, + A -- E[x=1,y=2] -- C, + B --[bmpink] D[x=9,y=6] --[bmpink] F[x=6.5,y=4] -- C, + E --[bmpink] G[x=9,y=2] --[bmpink] D, + F -- G + }; +\path (A) edge[draw = none] node[anchor = south] {$5$} (B); +\path (B) edge[draw = none] node[anchor = south] {$14$} (D); +\path (B) edge[draw = none] node[anchor = south east] {$2$} (C); +\path (A) edge[draw = none] node[anchor = east] {$22$} (E); +\path (E) edge[draw = none] node[anchor = south east] {$20$} (C); +\path (C) edge[draw = none] node[anchor = south] {$16$} (F); +\path (F) edge[draw = none] node[anchor = south west] {$12$} (G); +\path (E) edge[draw = none] node[anchor = south] {$7$} (G); +\path (D) edge[draw = none] node[anchor = west] {$4$} (G); +\path (F) edge[draw = none] node[anchor = south east] {$10$} (D); +\path (A) edge[draw = none] node[anchor = south west] {$8$} (C); + +\end{tikzpicture} +\end{center} + +\subsection{Layered Layout} +\subsubsection{Bipartite} +\begin{center} +\begin{tikzpicture}[inner sep=2pt, thick] +\graph [layered layout, nodes={circle, draw, minimum size=0.6cm}, sibling distance=5cm, level distance=5cm]%, grow=-80] + { + {a,b,c} --[complete bipartite, bmpink] {e,d,f} + --[complete bipartite] {g,h,i}; + }; +\end{tikzpicture} +\end{center} + +% +% Automatons +% + +\pagebreak +\section{Automatons} +\begin{tikzpicture}[every initial by arrow/.style={->>}] + + \node[state,initial] (q_0) {$q_0$}; + \node[state, accepting] (q_1) [above right=of q_0] {$q_1$}; + \node[state] (q_2) [below right=of q_0] {$q_2$}; + \node[state, accepting] (q_3) [right=of q_2] {$q_3$}; + + \path[->] (q_0) edge node [above left] {0} (q_1) + edge node [below left] {1} (q_2) + (q_1) edge [loop above] node {0} () + (q_2) edge [loop below] node {1} () + (q_3) edge [bend right=22,looseness=0.8] node [above] {0} (q_2) + (q_2) edge [bend right=22,looseness=0.8] node [below] {0} (q_3); +\end{tikzpicture} + +\end{document}