diff options
author | Norbert Preining <norbert@preining.info> | 2022-04-04 03:14:42 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2022-04-04 03:14:42 +0000 |
commit | 7548e4d37c2aaefd32fe0a9bcd83f8e71326dde1 (patch) | |
tree | d335b608e63e9b3c37d7ba0e567c63e77250e171 /graphics/pgf/contrib/simplenodes/simplenodes.sty | |
parent | 506de1e2d3515161cdbc7018b4ccc9e49d7f86e8 (diff) |
CTAN sync 202204040314
Diffstat (limited to 'graphics/pgf/contrib/simplenodes/simplenodes.sty')
-rw-r--r-- | graphics/pgf/contrib/simplenodes/simplenodes.sty | 116 |
1 files changed, 116 insertions, 0 deletions
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};} |