summaryrefslogtreecommitdiff
path: root/graphics
diff options
context:
space:
mode:
Diffstat (limited to 'graphics')
-rw-r--r--graphics/pgf/contrib/simplenodes/LICENSE24
-rw-r--r--graphics/pgf/contrib/simplenodes/README.md23
-rw-r--r--graphics/pgf/contrib/simplenodes/simplenodes.org323
-rw-r--r--graphics/pgf/contrib/simplenodes/simplenodes.pdfbin0 -> 204932 bytes
-rw-r--r--graphics/pgf/contrib/simplenodes/simplenodes.sty116
5 files changed, 486 insertions, 0 deletions
diff --git a/graphics/pgf/contrib/simplenodes/LICENSE b/graphics/pgf/contrib/simplenodes/LICENSE
new file mode 100644
index 0000000000..af138442a2
--- /dev/null
+++ b/graphics/pgf/contrib/simplenodes/LICENSE
@@ -0,0 +1,24 @@
+Licenses for the simplenode package
+===================================
+
+MIT License
+
+Copyright (c) 2022 Bob Vergauwen
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/graphics/pgf/contrib/simplenodes/README.md b/graphics/pgf/contrib/simplenodes/README.md
new file mode 100644
index 0000000000..b7261274e8
--- /dev/null
+++ b/graphics/pgf/contrib/simplenodes/README.md
@@ -0,0 +1,23 @@
+# simplenodes – Version 2022/03/31
+
+simplenodes is a TeX macro package for generating simple node base
+flow graphs or diagrams, build upon the Ti*k*Z package.
+The package provides two basic commands, one to generate a node and
+one command to create links between them.
+The positioning of the nodes is not handled by the package itself
+but is preferably done in the tabular environment.
+
+In total, 4 simple node types are defined, loosely based on the
+nomenclature and color patterns of the popular java script bootstrap
+(https://getbootstrap.com/).
+
+See the file `simplenodes.pdf` for more information on the possibilities
+and best use case of this package.
+See the file `LICENSE` for license details.
+
+## Development
+
+This package is currently maintained by Bob Vergauwen, (bob@vergauwen.me).
+Please go to the official repository at
+https://github.com/user9856749/simplenodes to submit bug reports, request
+new features, etc.
diff --git a/graphics/pgf/contrib/simplenodes/simplenodes.org b/graphics/pgf/contrib/simplenodes/simplenodes.org
new file mode 100644
index 0000000000..ea50cf78ff
--- /dev/null
+++ b/graphics/pgf/contrib/simplenodes/simplenodes.org
@@ -0,0 +1,323 @@
+#+latex_class: my-article
+#+title: Simplenodes
+#+author: Bob Vergauwen
+#+date: 2022/03/31
+
+| {{{examplenode(1,Simple)}}} | | |
+| | | {{{alertnode(2,simplenodes)}}} |
+| {{{simplenode(3,Nodes)}}} | | |
+{{{link(1,2)}}}
+{{{link(3,2)}}}
+* Introduction
+Creating tikz figures may be fun but after a while it becomes repetitive and you find yourself implementing the same
+repetitive patterns over and over again.
+This has a few negative effects on your daily productivity;
+- bad coding style by copy-pasting old solutions,
+- un-maintainable code,
+- repeating yourself over and over again,
+- inconsistent styles in a single document and over multiple documents.
+
+
+
+This package tries to solve these issues by providing two simple commands;
+- one command to create simple nodes,
+- one command to link these nodes.
+ Some simple styling options can be changed upon loading the package.
+
+* Usage
+After including the package via the command
+#+BEGIN_EXAMPLE
+\usepackage{simplenodes}
+#+END_EXAMPLE
+all package commands are available.
+** Creating a node
+Four different nodes are supported at the moment;
+
+
+| *Command* | *Result* |
+|-----------------------------+---------------------------------|
+| =\simplenode{name}{Normal}= | {{{simplenode(name,Normal)}}} |
+| =\examplenode{name}{Example}= | {{{examplenode(name,Example)}}} |
+| =\warnnode{name}{Warning}= | {{{warnnode(name,Warning)}}} |
+| =\alertnode{name}{Alert}= | {{{alertnode(name,Alert)}}} |
+The first parameter is the =name= used to link two nodes together.
+The third parameter is the =text= displayed inside the node.
+
+** Linking nodes
+Linking nodes is done via the command =\link{name1}{name2}=, where the
+name is defined upon creating the node.
+
+** Positioning nodes
+The intended use of this package is to position the nodes using the tabular environment.
+Nodes can be placed in cells of tables to create an easy and even layout.
+This usage is demonstrated in the examples.
+The usage of this package is not restricted to this usecase.
+
+* Package options
+A few packaged options are provided by using
+#+BEGIN_EXAMPLE
+\usepackage[name1=value1,name2=value2,...]{simplenodes}
+#+END_EXAMPLE
+The name, default value and description is provided in the following table
+| *Name* | *Default* | *Description* |
+|-----------+---------+-----------------------------------------------------|
+| =align= | center | Specifies the alignment of the text in the nodes. |
+| =width= | 25mm | The width of the nodes. |
+| =minheight= | 7mm | The minimum width of the nodes. |
+| =innersep= | 2pt | The inner separation between the text and the node. |
+| =outersep= | 0pt | The outer separation between the nodes. |
+| =thickness= | 0.4pt | The line thickness of the nodes and links. |
+
+* Examples
+** Hello world
+| {{{simplenode(hello,hello)}}} | {{{simplenode(world,world)}}} |
+{{{link(hello,world)}}}
+#+begin_src latex :tangel no :exports code
+\begin{tabular}{ll}
+\simplenode{hello}{hello} & \simplenode{world}{world}\\
+\end{tabular}
+\link{hello}{world}
+#+end_src
+
+** More color
+| {{{simplenode(1,simple)}}} | {{{examplenode(2,example)}}} | {{{warnnode(3,warn)}}} | {{{alertnode(4,alert)}}} |
+{{{link(1,2)}}}
+{{{link(2,3)}}}
+{{{link(3,4)}}}
+
+#+begin_src latex :tangel no :exports code
+\begin{tabular}{llll}
+\simplenode{1}{simple} &
+\examplenode{2}{example} &
+\warnnode{3}{warn} &
+\alertnode{4}{alert}\\
+\end{tabular}
+\link{1}{2}
+\link{2}{3}
+\link{3}{4}
+#+end_src
+** Order of the arrows and doule arrows
+| {{{simplenode(1,node 1)}}} | {{{examplenode(2,node 2)}}} | {{{warnnode(3,node 3)}}} |
+{{{link(1,2)}}}
+{{{link(2,3)}}}
+{{{link(3,2)}}}
+
+#+begin_src latex :tangel no :exports code
+\begin{tabular}{lll}
+\simplenode{1}{node 1} & \examplenode{2}{node 2} & \warnnode{3}{node 3}\\
+\end{tabular}
+\end{center}
+\link{1}{2}
+\link{2}{3}
+\link{3}{2}
+#+end_src
+** Overly complex
+| {{{simplenode(11, Simple node)}}} | | | | {{{simplenode(13, Simple node)}}} |
+| | | | | |
+| {{{examplenode(21, Example node)}}} | | {{{alertnode(22,Alert node)}}} | | {{{simplenode(23, Simple node)}}} |
+| | | | | |
+| {{{warnnode(31, Warn node)}}} | | | | {{{simplenode(33, Simple node)}}} |
+| | | | | |
+{{{link(22,23)}}}
+{{{link(22,21)}}}
+{{{link(22,33)}}}
+{{{link(22,31)}}}
+{{{link(22,11)}}}
+{{{link(22,13)}}}
+{{{link(11,13)}}}
+{{{link(33,31)}}}
+{{{link(21,11)}}}
+{{{link(21,31)}}}
+{{{link(13,23)}}}
+{{{link(33,23)}}}
+
+#+begin_src latex :tangel no :exports code
+\begin{tabular}{lllll}
+\simplenode{11}{ Simple node} & & & & \simplenode{13}{ Simple node}\\
+ & & & & \\
+\examplenode{21}{ Example node} & & \alertnode{22}{Alert node}
+ & & \simplenode{23}{ Simple node}\\
+ & & & & \\
+\warnnode{31}{ Warn node} & & & & \simplenode{33}{ Simple node}\\
+ & & & & \\
+\end{tabular}
+\link{22}{23} \link{22}{21} \link{22}{33}
+\link{22}{31} \link{22}{11} \link{22}{13}
+\link{11}{13} \link{33}{31} \link{21}{11}
+\link{21}{31} \link{13}{23} \link{33}{23}
+#+end_src
+* Implementation
+
+#+BEGIN_SRC latex :exports code :tangle simplenodes.sty
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% simplenodes.sty
+%% <https://github.com/user9856749/simplenodes>
+%%
+%% MIT License
+%%
+%% Copyright (c) 2022 Bob Vergauwen
+%%
+%% Permission is hereby granted, free of charge, to any person obtaining a copy
+%% of this software and associated documentation files (the "Software"), to deal
+%% in the Software without restriction, including without limitation the rights
+%% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+%% copies of the Software, and to permit persons to whom the Software is
+%% furnished to do so, subject to the following conditions:
+%%
+%% The above copyright notice and this permission notice shall be included in all
+%% copies or substantial portions of the Software.
+%%
+%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+%% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+%% SOFTWARE.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{simplenodes}[2022/03/31 A package that provides simple nodes in four colors.]
+
+\RequirePackage{kvoptions}
+
+\DeclareStringOption[25mm]{width}
+\DeclareStringOption[7mm]{minheight}
+\DeclareStringOption[center]{align}
+\DeclareStringOption[2pt]{innersep}
+\DeclareStringOption[0pt]{outersep}
+\DeclareStringOption[0.4pt]{thickness}
+\ProcessKeyvalOptions*
+
+\RequirePackage{kvoptions}
+\RequirePackage{tikz}
+\RequirePackage{color}
+\usetikzlibrary{math}
+
+% Coordinate manipulations
+
+
+\newcommand{\gettikzxy}[3]{%
+ \tikz@scan@one@point\pgfutil@firstofone#1\relax
+ \edef#2{\the\pgf@x}%
+ \edef#3{\the\pgf@y}%
+}
+
+% Define the main color
+\definecolor{InvisibleRed}{rgb}{0.97, 0.92, 0.92}
+\definecolor{InvisibleGreen}{rgb}{0.92, 0.97, 0.92}
+\definecolor{InvisibleBlue}{rgb}{0.92, 0.92, 0.97}
+\definecolor{InvisibleYellow}{rgb}{1.0, 1.0, 0.88}
+
+\definecolor{MediumRed}{rgb}{0.925, 0.345, 0.345}
+\definecolor{MediumGreen}{rgb}{0.37, 0.7, 0.66}
+\definecolor{MediumBlue}{rgb}{0.015, 0.315, 0.45}
+\definecolor{MediumYellow}{rgb}{1.0, 0.75, 0.0}
+
+% Define the node
+\newcommand\mynode[2]{
+ \tikz[remember picture,baseline]
+ \node[
+ draw=#1,fill=#2,
+ rectangle,
+ line width = \simplenodes@thickness,
+ align=\simplenodes@align,
+ text width=\simplenodes@width,
+ inner sep=\simplenodes@innersep,
+ outer sep=\simplenodes@outersep,
+ minimum height=\simplenodes@minheight,
+ ]
+}
+
+% Define the line
+\newcommand\myline[2]{
+ \draw[
+ ->,
+ line width = \simplenodes@thickness
+ ] (#1) to (#2);
+}
+
+\newcommand\link[2]{
+ \begin{tikzpicture}[remember picture, overlay, >=stealth, shift={(0,0)}]
+ \gettikzxy{(#1)}{\ax}{\ay}
+ \gettikzxy{(#2)}{\bx}{\by}
+ \tikzmath{
+ if \ax == \bx then {
+ if \ay < \by then {
+ {\myline{#1.north}{#2.south}};
+ };
+ if \ay > \by then {
+ {\myline{#1.south}{#2.north}};
+ };
+ };
+ if \ax < \bx then {
+ {\myline{#1.east}{#2.west}};
+ };
+ if \ax > \bx then {
+ {\myline{#1.west}{#2.east}};
+ };
+ };
+ \end{tikzpicture}
+}
+
+% Provide the commands
+\newcommand\simplenode[2]{\mynode{MediumBlue}{InvisibleBlue} (#1){#2};}
+\newcommand\examplenode[2]{\mynode{MediumGreen}{InvisibleGreen} (#1){#2};}
+\newcommand\alertnode[2]{\mynode{MediumRed}{InvisibleRed} (#1){#2};}
+\newcommand\warnnode[2]{\mynode{MediumYellow}{InvisibleYellow} (#1){#2};}
+#+END_SRC
+
+* Read me
+#+begin_src markdown :exports code :tangle README.md
+# simplenodes – Version 2022/03/31
+
+simplenodes is a TeX macro package for generating simple node base
+flow graphs or diagrams, build upon the Ti*k*Z package.
+The package provides two basic commands, one to generate a node and
+one command to create links between them.
+The positioning of the nodes is not handled by the package itself
+but is preferably done in the tabular environment.
+
+In total, 4 simple node types are defined, loosely based on the
+nomenclature and color patterns of the popular java script bootstrap
+(https://getbootstrap.com/).
+
+See the file `simplenodes.pdf` for more information on the possibilities
+and best use case of this package.
+See the file `LICENSE` for license details.
+
+## Development
+
+This package is currently maintained by Bob Vergauwen, (bob@vergauwen.me).
+Please go to the official repository at
+https://github.com/user9856749/simplenodes to submit bug reports, request
+new features, etc.
+#+end_src
+
+* Licence
+#+begin_src markdown :exports code :tangle LICENSE
+Licenses for the simplenode package
+===================================
+
+MIT License
+
+Copyright (c) 2022 Bob Vergauwen
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+#+end_src
diff --git a/graphics/pgf/contrib/simplenodes/simplenodes.pdf b/graphics/pgf/contrib/simplenodes/simplenodes.pdf
new file mode 100644
index 0000000000..c1458701f0
--- /dev/null
+++ b/graphics/pgf/contrib/simplenodes/simplenodes.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/simplenodes/simplenodes.sty b/graphics/pgf/contrib/simplenodes/simplenodes.sty
new file mode 100644
index 0000000000..a8cdeff728
--- /dev/null
+++ b/graphics/pgf/contrib/simplenodes/simplenodes.sty
@@ -0,0 +1,116 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% simplenodes.sty
+%% <https://github.com/user9856749/simplenodes>
+%%
+%% MIT License
+%%
+%% Copyright (c) 2022 Bob Vergauwen
+%%
+%% Permission is hereby granted, free of charge, to any person obtaining a copy
+%% of this software and associated documentation files (the "Software"), to deal
+%% in the Software without restriction, including without limitation the rights
+%% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+%% copies of the Software, and to permit persons to whom the Software is
+%% furnished to do so, subject to the following conditions:
+%%
+%% The above copyright notice and this permission notice shall be included in all
+%% copies or substantial portions of the Software.
+%%
+%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+%% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+%% SOFTWARE.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{simplenodes}[2022/03/31 A package that provides simple nodes in four colors.]
+
+\RequirePackage{kvoptions}
+
+\DeclareStringOption[25mm]{width}
+\DeclareStringOption[7mm]{minheight}
+\DeclareStringOption[center]{align}
+\DeclareStringOption[2pt]{innersep}
+\DeclareStringOption[0pt]{outersep}
+\DeclareStringOption[0.4pt]{thickness}
+\ProcessKeyvalOptions*
+
+\RequirePackage{kvoptions}
+\RequirePackage{tikz}
+\RequirePackage{color}
+\usetikzlibrary{math}
+
+% Coordinate manipulations
+
+
+\newcommand{\gettikzxy}[3]{%
+ \tikz@scan@one@point\pgfutil@firstofone#1\relax
+ \edef#2{\the\pgf@x}%
+ \edef#3{\the\pgf@y}%
+}
+
+% Define the main color
+\definecolor{InvisibleRed}{rgb}{0.97, 0.92, 0.92}
+\definecolor{InvisibleGreen}{rgb}{0.92, 0.97, 0.92}
+\definecolor{InvisibleBlue}{rgb}{0.92, 0.92, 0.97}
+\definecolor{InvisibleYellow}{rgb}{1.0, 1.0, 0.88}
+
+\definecolor{MediumRed}{rgb}{0.925, 0.345, 0.345}
+\definecolor{MediumGreen}{rgb}{0.37, 0.7, 0.66}
+\definecolor{MediumBlue}{rgb}{0.015, 0.315, 0.45}
+\definecolor{MediumYellow}{rgb}{1.0, 0.75, 0.0}
+
+% Define the node
+\newcommand\mynode[2]{
+ \tikz[remember picture,baseline]
+ \node[
+ draw=#1,fill=#2,
+ rectangle,
+ line width = \simplenodes@thickness,
+ align=\simplenodes@align,
+ text width=\simplenodes@width,
+ inner sep=\simplenodes@innersep,
+ outer sep=\simplenodes@outersep,
+ minimum height=\simplenodes@minheight,
+ ]
+}
+
+% Define the line
+\newcommand\myline[2]{
+ \draw[
+ ->,
+ line width = \simplenodes@thickness
+ ] (#1) to (#2);
+}
+
+\newcommand\link[2]{
+ \begin{tikzpicture}[remember picture, overlay, >=stealth, shift={(0,0)}]
+ \gettikzxy{(#1)}{\ax}{\ay}
+ \gettikzxy{(#2)}{\bx}{\by}
+ \tikzmath{
+ if \ax == \bx then {
+ if \ay < \by then {
+ {\myline{#1.north}{#2.south}};
+ };
+ if \ay > \by then {
+ {\myline{#1.south}{#2.north}};
+ };
+ };
+ if \ax < \bx then {
+ {\myline{#1.east}{#2.west}};
+ };
+ if \ax > \bx then {
+ {\myline{#1.west}{#2.east}};
+ };
+ };
+ \end{tikzpicture}
+}
+
+% Provide the commands
+\newcommand\simplenode[2]{\mynode{MediumBlue}{InvisibleBlue} (#1){#2};}
+\newcommand\examplenode[2]{\mynode{MediumGreen}{InvisibleGreen} (#1){#2};}
+\newcommand\alertnode[2]{\mynode{MediumRed}{InvisibleRed} (#1){#2};}
+\newcommand\warnnode[2]{\mynode{MediumYellow}{InvisibleYellow} (#1){#2};}