texlive[57617] Master/texmf-dist: kblocks (4feb21)

commits+karl at tug.org commits+karl at tug.org
Thu Feb 4 22:27:29 CET 2021


Revision: 57617
          http://tug.org/svn/texlive?view=revision&revision=57617
Author:   karl
Date:     2021-02-04 22:27:28 +0100 (Thu, 04 Feb 2021)
Log Message:
-----------
kblocks (4feb21)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/kblocks/README.md
    trunk/Master/texmf-dist/doc/latex/kblocks/kblocks-doc.pdf
    trunk/Master/texmf-dist/doc/latex/kblocks/kblocks-doc.tex
    trunk/Master/texmf-dist/tex/latex/kblocks/kblocks.sty

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/kblocks/intro.png

Modified: trunk/Master/texmf-dist/doc/latex/kblocks/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/kblocks/README.md	2021-02-04 21:26:27 UTC (rev 57616)
+++ trunk/Master/texmf-dist/doc/latex/kblocks/README.md	2021-02-04 21:27:28 UTC (rev 57617)
@@ -1,7 +1,10 @@
-This is the file README for the kblocks package, v.1.0.
+kblocks package, v.2.0.
+![kblocks example demo diagram](/intro.png)
 
-Description: Easily typeset Control Block Diagrams and Signal Flow Graphs with TikZ/PGF
+## Description
+A Macro Package to Easily typeset Control Block Diagrams and Signal Flow Graphs with TikZ/PGF
 
+## Statement of Need
 Desiring to typeset control block diagrams in LaTeX and dissatisfied 
 with the other LaTeX macro packages that can be found online, 
 I thought: why not write my own macro package for this purpose. 
@@ -13,6 +16,7 @@
 This macro reduces the length of this learning curve and serves as a frontend, 
 by focusing the theme on control block diagrams only.
 
+## Getting Started
 You will find a demo and an introduction in kblocks-doc.pdf file. 
 
 Fortunately this documentation in kblocks-doc.pdf as it grows and gets to be improved, 
@@ -19,13 +23,13 @@
 will come with a number of slowly-paced tutorials, which will guide you 
 on creating control block diagrams with the kblocks macro.
 
+## Licensing
 Licensing of this package is covered by the MIT Licence.
 
-Any feedback is welcome: oasomefun at futa.edu.ng
+## Issues and Feedback
 My wish is that you find it helpful. Don’t forget to share and like. 
 Please feel free to e-mail me for any improvement or suggestion with respect to 
 using kblocks and making it useful for researchers, students and others involved
 in the applications and field of control theory.
 
-
-Author: Oluwasegun Somefun
+Any feedback is welcome: oasomefun at futa.edu.ng<Oluwasegun Somefun>.

Added: trunk/Master/texmf-dist/doc/latex/kblocks/intro.png
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/kblocks/intro.png
===================================================================
--- trunk/Master/texmf-dist/doc/latex/kblocks/intro.png	2021-02-04 21:26:27 UTC (rev 57616)
+++ trunk/Master/texmf-dist/doc/latex/kblocks/intro.png	2021-02-04 21:27:28 UTC (rev 57617)

Property changes on: trunk/Master/texmf-dist/doc/latex/kblocks/intro.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Modified: trunk/Master/texmf-dist/doc/latex/kblocks/kblocks-doc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/kblocks/kblocks-doc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/kblocks/kblocks-doc.tex	2021-02-04 21:26:27 UTC (rev 57616)
+++ trunk/Master/texmf-dist/doc/latex/kblocks/kblocks-doc.tex	2021-02-04 21:27:28 UTC (rev 57617)
@@ -1,10 +1,27 @@
 \documentclass[onecolumn,a4paper,10pt]{IEEEtran}
+%\documentclass{article}
 
+\usepackage{kblocks}
+%\tikzexternalize[prefix=figs/] % activate tikzpicture exports
 
-\usepackage{kblocks}
 \usepackage{bm}
 \usepackage{listings}
 
+\usepackage{verbatim}
+\usepackage{fancyvrb} % extended verbatim environments
+\usepackage{fancyvrb-ex}
+
+
+\usepackage{units}
+
+\usepackage{zi4}
+%\usepackage{garamondx}
+%\usepackage[lig=true]{baskervald}
+%\usepackage{palatino}
+%\def\rmdefault{zi4}
+%\def\sfdefault{zi4}
+\usepackage[defaultsans]{lato}
+
 \usepackage{csquotes}
 
 \newcommand*{\kblocks}{\relax~\textit{k}\textsc{blocks}}
@@ -14,25 +31,37 @@
 \newcommand*{\TikzPGF}{\relax~{Ti\textit{k}Z/\textsc{pgf}}}
 \newcommand*{\spacetweak}{\medskip\medskip}
 
+\DefineVerbatimEnvironment
+{cvl}{Verbatim}
+{formatcom=\color{blue!10!black!90},
+	numbers=left,numbersep=2mm,gobble=0,
+	frame=lines,rulecolor=\color{gray},framesep=1mm,
+	fontseries=,labelposition=none,fontsize=\normalsize,
+	xrightmargin=1cm, samepage=false}
+%
+\newenvironment{apilist}{
+	\vspace{1ex}}%
+{\vspace{1em}}
+%
+\newcommand{\cvhd}[1]{{
+		{\subsection{#1}}{\mbox{}\break}\vspace{-5ex}
+}}
+
+%
+\fvset{formatcom=\color{darkgray},
+	fontfamily=tt,fontsize=\footnotesize, fontseries=b,
+	frame=single,rulecolor=\color{olive},label=\fbox{A},
+	numbers=left,numbersep=5pt}
+%red,green,blue,cyan,magenta,yellow,black,gray,white,
+%darkgray,lightgray,brown,lime,olive,orange,pink,purple,teal,violet
+
+\usepackage[open]{bookmark}
+\newcommand*{\urlink}[1]{{
+		{\texttt{\url{#1}}}
+}}
+
 \begin{document}
 
-\lstset{
-    keywordstyle=\color{magenta},
-    numberstyle=\tiny\color{gray},
-    stringstyle=\color{purple},
-    basicstyle=\sffamily\bfseries\scriptsize,
-    breakatwhitespace=false,
-    breaklines=true,
-    captionpos=b,
-    keepspaces=true,
-    numbers=left,
-    numbersep=5pt,
-    showspaces=false,
-    showstringspaces=false,
-    showtabs=false,
-    tabsize=2
-}
-
 \title{\kblocks~Package}
 \author{
 
@@ -43,7 +72,7 @@
 
 }
 
-\markboth{\kblocks~Demo. Version~1.0. 13, October~2019};
+\markboth{01,~February~2021.~\kblocks~Documentation.~Version~2.0};
 
 \maketitle
 
@@ -53,7 +82,7 @@
 
 I wish to start with the question, \enquote{What is\kblocks?} The\kblocks~macro package is the product of using\TikzPGF~to
 directly typeset beautiful control block diagrams and signal flow graphs in my Masters' dissertation and papers directly with \LaTeX.
-Basically, it just defines a dedicated \enquote{kblock} environment and a number of macro commands to make drawing control block diagrams using\TikzPGF~ more structured and easier. In a sense, when you
+Basically, it just defines a dedicated \enquote{kblock} environment and a number of macro commands to make drawing control block diagrams with\TikzPGF{} more structured and easier. In a sense, when you
 use\kblocks~you \textit{program} or typeset graphics for control block diagrams, just as you “program” graphics in your document when you use
 \LaTeX~using\TikzPGF.
 
@@ -60,276 +89,537 @@
 The powerful options offered by\TikzPGF~often intimidates beginner users not ready to spend careful time learning about\TikzPGF. Like all
 \LaTeX~packages,\TikzPGF~inherits the steep learning curve of \LaTeX, that is, no \textit{what you see is what you get}.
 The\kblocks~macro reduces the length of this learning curve, by focusing the graphics theme on control block diagrams only.
-Fortunately this documentation as it grows and gets to be improved, will come with a number of slowly-paced
-tutorials, which will guide you on creating control block diagrams with\kblocks~without your having to read the\TikzPGF~manual.
 
-My wish is that you do find it useful and helpful. Please, don't forget to share and like if you did.
 
-I will readily welcome any e-mails for improvement or suggestion with respect to
-using\kblocks~and making it useful for researchers, students and others involved in the applications and field of control theory.
+Fortunately this documentation as it grows and gets to be improved, will come with a number of demos and proper documentation of the\kblocks{} API, which will guide you on creating control block diagrams with\kblocks{} without your having to read the\TikzPGF~manual.
 
-\centering
+My wish is that you do find it useful and helpful. 
 
+Please, don't forget to share and star the Github repo: \urlink{https://github.com/somefunAgba/kblocks}, if you did.
+
+I will readily welcome any issues or emails for improvement or suggestion with respect to
+using\kblocks{} and making it useful for researchers, students and others involved in the applications and field of control theory and signal processing.
+
+
+\pagebreak
 \section{Demos}
-\subsection{}\spacetweak
+\centering
+\spacetweak
+\subsection{Ex:A}\spacetweak
+\begin{SideBySideExample}[label=\fbox{A},xrightmargin=10cm]
 \begin{kblock}
-  \kStartNode[$r$]{R1}
-  \kPlusMinusDown{R1}{S1}{0cm}
-  \kTFRight[0cm]{S1}{B1}{$\frac{1}{s}$}
-  \kMarkNodeRight[0cm]{}{B1}{N1}
-  \kOutRight{N1}{Y1}{$y$}{0cm}
+% global ref point
+\kJumpCS{init}
+%% blocks
+\kMarkNodeRight{0.2cm}{0cm}{$r$}{init}{rin}
+\kPlusPlusMinus{rin}{sb1}{0.2cm}
+\kTFRight[0.2cm]{sb1}{tfb1}{$\frac{1}{s}$}
+\kMarkNodeRight{0.2cm}{0cm}{}{tfb1}{ny}
+\kOutRight[0.2cm]{ny}{yout}{$y$}{0cm}
+%% links
+\kLink[]{rin}{sb1}
+\kLink[$e$]{sb1}{tfb1}
+\kLinkn[]{tfb1}{ny}
+\kLinkVHHVBelow[0cm]{$1$}{ny}{sb1}{0cm}{0cm}
+\kLinkVHHVAbove[0cm]{$1$}{ny}{sb1}{0cm}{0cm}
+\end{kblock}
+\end{SideBySideExample}
 
-  \kLinkVHHVAbove[0cm]{$1$}{N1}{S1}{0}{0}
-  \kLinkVHHVBelow[0cm]{$1$}{N1}{S1}{0}{0}
-  \kLink[]{R1}{S1}
-  \kLink[$e$]{S1}{B1}
-  \kLinkn[]{B1}{N1}
+\subsection{Ex:B}
+\spacetweak\spacetweak
+\begin{SideBySideExample}[label=\fbox{B},xrightmargin=10cm]
+\begin{kblock}
+% global ref point
+\kJumpCS{init}
+%% blocks
+\kMarkNodeRight{0.2cm}{0cm}{$r$}{init}{rin}
+\kPlusMinusDown{rin}{sb1}{0.2cm}
+\kTFRight[0.25cm]{sb1}{tfb1}{$G\left( s \right)$}
+\kTFBelow[0.2cm]{tfb1}{tfb2}{$H\left( s \right)$}
+\kMarkNodeRight{0.2cm}{0cm}{}{tfb1}{ny}
+\kOutRight[0.2cm]{ny}{yout}{$y$}{0cm}
+%% links
+\kLinkVH[$y$]{ny}{tfb2}{0cm}{0cm}{0cm}{}
+\kLinkHV[$\hat{y}$]{tfb2}{sb1}{0cm}{0cm}{9}{}
+\kLink[]{rin}{sb1}
+\kLink[$e$]{sb1}{tfb1}
+\kLinkn[]{tfb1}{ny}
+%% coverings
+\kCoverRect[blue]{sb1}{1cm}{2cm}{0.5cm}{3cm}
+\kCoverTextLeft{2cm}{1cm}{covtx}{Closed-loop system};
 \end{kblock}
+\end{SideBySideExample}
 
-\begin{lstlisting}
+\subsection{Ex:C}	
+\spacetweak\spacetweak
+\begin{SideBySideExample}[label=\fbox{C},xrightmargin=10cm]
 \begin{kblock}
-  \kStartNode[$r$]{R1}
-  \kPlusMinusDown{R1}{S1}{0cm}
-  \kTFRight[0cm]{S1}{B1}{$\frac{1}{s}$}
-  \kMarkNodeRight[0cm]{}{B1}{N1}
-  \kOutRight{N1}{Y1}{$y$}{0cm}
-
-  \kLinkVHHVAbove[0cm]{$1$}{N1}{S1}{0}{0}
-  \kLinkVHHVBelow[0cm]{$1$}{N1}{S1}{0}{0}
-  \kLink[]{R1}{S1}
-  \kLink[$e$]{S1}{B1}
-  \kLinkn[]{B1}{N1}
+% ref
+\kJumpCS{spt}
+% top blocks
+\kMarkNodeRight{0cm}{0cm}{$I^\star$}{spt}{inI}
+\kPlusMinusDown{inI}{sb1}{1.cm}
+\kTFRight[0.2cm]{sb1}{tfb1}{$s$}
+\kTFBelow[0.5cm]{sb1}{tfb2}{$\frac{1}{2}$}	
+\kPlusDownPlusUpL{tfb2}{sb2}{0cm}
+\kMinusPlusUp{tfb1}{sb3}{0cm}
+\kTFRight[0cm]{sb3}{tfb3}{$0.2$}
+\kTFRight[0cm]{tfb3}{tfb4}{$K_3$}
+\kMarkNodeAbove{0cm}{0cm}{$V_{dc}$}{inI}{inVdc}
+\kMarkNodeBelow{0cm}{0.3cm}{$V_2$}{inI}{inV2}
+\kMarkNodeBelow{0cm}{-0.4cm}{$V_3$}{inV2}{inV3}
+% bottom blocks
+\kMarkNodeBelow{3cm}{0cm}{$V_1$}{inI}{inV1}
+\kPlusPlusUpB{tfb4}{sb4}{3cm}
+\kPlusMinusDown{inV1}{sb5}{0cm}
+\kTFRight[0cm]{sb5}{tfb5}{$\lambda$}
+\kOutRight[0cm]{sb4}{outV}{$V_{out}^{\star}$}{0cm}
+\kMarkNodeBelow{0cm}{0cm}{$V_4$}{inV1}{inV4}
+% top links
+\kLinkHV[]{inVdc}{sb3}{0cm}{0cm}{0}{}
+\kLinkHV[]{inV2}{sb2}{0cm}{0cm}{0}{}
+\kLinkHV[]{inV3}{sb2}{0cm}{0cm}{0}{}
+\kLink[]{inI}{sb1}
+\kLink[]{sb1}{tfb1}
+\kLink[$I_{\beta}$]{tfb2}{sb1}
+\kLink[]{tfb1}{sb3}
+\kLink[]{sb2}{tfb2}
+\kLink[]{sb3}{tfb3}
+\kLink[]{tfb3}{tfb4}
+\kLink[$V_{\alpha}$]{tfb4}{sb4}
+% bottom links
+\kLink[]{inV1}{sb5}
+\kLink[]{sb5}{tfb5}
+\kLink[]{tfb5}{sb4}
+\kLinkHV[]{inV4}{sb5}{0cm}{0cm}{0}{}
 \end{kblock}
-\end{lstlisting}
+\end{SideBySideExample}
 
-
-\spacetweak
-
-\subsection{}\spacetweak
+\subsection{Ex:D}
+\spacetweak\spacetweak
+\begin{SideBySideExample}[label=\fbox{D},xrightmargin=10cm]
 \begin{kblock}
-  \kStartNodec[$r$]{(0,5)}{R1}
-  \kPlusMinusDown{R1}{S1}{0cm}
-  \kTFRight[0.33cm]{S1}{B1}{$G\left( s \right)$}
-  \kTFBelow[0cm]{B1}{B2}{$H\left( s \right)$}
-  \kMarkNodeRight[0.2cm]{}{B1}{N1}
-  \kOutRight{N1}{Y1}{$y$}{0}
+% ref
+\kJumpCS{ioref}
 
-  \kLinkVHTFHVBelow{$y$}{$\hat{y}$}{N1}{B2}{S1}{0}{0}{0}
-  \kLink[]{R1}{S1}
-  \kLink[$e$]{S1}{B1}
-  \kLinkn[]{B1}{N1}
+% blks
+\kTFRight[0cm]{ioref}{tfb1}{
+$\bm{\hat{m}$}\\\textbf{PID}
+\\\textbf{model}}
+\kTFRight[1cm]{tfb1}{tfb2}{$\bm{K\left(y_m,y\right)}$
+\\\textbf{PID}\\\textbf{controller}}
+\kTFBelowRight{0.25cm}{0.5cm}{tfb2}{tfb3}
+{$\bm{P\left(s\right)}$\\\textbf{process}}
 
-  \kCoverRect[blue]{B1}{0.5cm}{1.5cm}{1.8cm}{1.5cm}
-  \kCoverTextRight{1cm}{0.5cm}{TX1}{Closed-loop system};
+% links
+\kInLeft[0cm]{tfb1}{inR}{$r$}{0cm}
+\kOutDown[0cm]{tfb1}{outU}{$u_m$}{0cm}
+\kLink[$y_m$]{tfb1}{tfb2}
+\kLinkHV[$u$]{tfb2}{tfb3}{0cm}{0cm}{1}{}
+\kLinkHV[$y$]{tfb3}{tfb2}{0cm}{0cm}{4}{}
 \end{kblock}
+\end{SideBySideExample}
 
-\begin{lstlisting}
+\subsection{Ex:E}
+\spacetweak\spacetweak
+\begin{SideBySideExample}[label=\fbox{E},xrightmargin=10cm]
 \begin{kblock}
-  \kStartNodec[$r$]{(0,5)}{R1}
-  \kPlusMinusDown{R1}{S1}{0cm}
-  \kTFRight[0.33cm]{S1}{B1}{$G\left( s \right)$}
-  \kTFBelow[0cm]{B1}{B2}{$H\left( s \right)$}
-  \kMarkNodeRight[0.2cm]{}{B1}{N1}
-  \kOutRight{N1}{Y1}{$y$}{0}
+% ref
+\kJumpCS{refpt}
 
-  \kLinkVHTFHVBelow{$y$}{$\hat{y}$}{N1}{B2}{S1}{0}{0}{0}
-  \kLink[]{R1}{S1}
-  \kLink[$e$]{S1}{B1}
-  \kLinkn[]{B1}{N1}
+% blks
+\kTFRight[0cm]{refpt}{tfb1}{
+	$\bm{\hat{m}$}\\\textbf{closed PID-loop}
+	\\\textbf{model}}
+\kTFRight[2cm]{tfb1}{tfb2}{\textbf{PID}$\bm{(y_m,y)}$}
+\kTFBelow[0.25cm]{tfb2}{tfb3}
+{$\bm{P\left(s\right)}$\\\textbf{process}}
 
-  \kCoverRect[blue]{B1}{0.5cm}{1.5cm}{1.8cm}{1.5cm}
-  \kCoverTextRight{1cm}{0.5cm}{TX1}{Closed-loop system};
+% links
+\kInLeft[0cm]{tfb1}{inR}{$r$}{0cm}
+\kOutDown[0cm]{tfb1}{outU}{$u_m$}{0cm}
+\kLink[$y_m$]{tfb1}{tfb2}
+\kLinkHVHRight[0]{$u$}{tfb2}{tfb3}{0cm}{0cm}{1cm}
+\kLinkHVHLeft[0.8cm]{$y$}{tfb3}{tfb2}{0cm}{-0.2cm}
 \end{kblock}
-\end{lstlisting}
-\spacetweak
+\end{SideBySideExample}
 
-\subsection{}\spacetweak
-
+\subsection{Ex:F}
+\spacetweak\spacetweak
+\begin{SideBySideExample}[label=\fbox{F},xrightmargin=10cm]
 \begin{kblock}
-  \kStartNodec[]{(5,-5)}{R1}
-  \kTFRight{R1}{M1}{$\bm{\hat{m}$}\\\textbf{PID}\\\textbf{model}}
-  \kOutDown[]{M1}{um}{$u_m$}{0}
-  \kScaleDistX[1.5]
-  \kTFRight{M1}{C1}{$\bm{K\left(y_m,y\right)}$\\\textbf{PID}\\\textbf{controller}}
-  \kTFBelowRight{0cm}{0.2cm}{C1}{P1}{$\bm{P\left(s\right)}$\\\textbf{process}}
+% generic coordinate reference points
+%\kJumpCS[$(0,0)$]{i}
+\kJumpCS{i}
+\kJumpCSRight[-0.5cm]{i}{iR}{0cm}{3}
+\kJumpCSLeft[-0.5cm]{i}{iL}{0cm}{9}
+\kJumpCSAbove[-0.5cm]{i}{iA}{0cm}{12}
+\kJumpCSBelow[-0.5cm]{i}{iB}{0cm}{6}
 
-  \kLink[$r$]{R1}{M1}
-  \kLink[$y_m$]{M1}{C1}
-  \kLinkHV[$u$]{C1}{P1}{north}{0}
-  \kLinkHV[$y$]{P1}{C1}{south}{0}
-\end{kblock}
+% blks
+\kTFBelow[]{iB}{tfb1}{\kmT{\mathcal{K}(\cdot)}}
+\kTFBelow[]{tfb1}{tfb2}{\kmT{\mathcal{P}(s)}}
 
-\begin{lstlisting}
-\begin{kblock}
-  \kStartNodec[]{(5,-5)}{R1}
-  \kTFRight{R1}{M1}{$\bm{\hat{m}$}\\\textbf{PID}\\\textbf{model}}
-  \kOutDown[]{M1}{um}{$u_m$}{0}
-  \kScaleDistX[1.5]
-  \kTFRight{M1}{C1}{$\bm{K\left(y_m,y\right)}$\\\textbf{PID}\\\textbf{controller}}
-  \kTFBelowRight{0cm}{0.2cm}{C1}{P1}{$\bm{P\left(s\right)}$\\\textbf{process}}
+% links
+\kInLeftM[0cm]{tfb1}{inR}{$r$}{0.05cm}{6}
+\kMarkNodeLeft{0cm}{0cm}{}{tfb2}{ny}
+\kOutLeft[-0.5cm]{ny}{outY}{$y$}{0cm}
+\kLinkn[]{ny}{tfb2}
+\kLinkVH[$y$]{ny}{tfb1}{-0.1cm}{0cm}{2}{}
+\kLinkHVHRight[0.6cm]{$u$}{tfb1}{tfb2}{0cm}{0cm}
 
-  \kLink[$r$]{R1}{M1}
-  \kLink[$y_m$]{M1}{C1}
-  \kLinkHV[$u$]{C1}{P1}{north}{0}
-  \kLinkHV[$y$]{P1}{C1}{south}{0}
+% covers
+\kCoverRect[magenta!5!red]{tfb2}
+{0.1cm}{0.1cm}{0.3cm}{0.3cm}
+\kCoverTextBelow{0cm}{0cm}{txt1}
+{physical system (e.g: a dc motor)};
+%
+\kCoverRect[green!75!blue!80!]{tfb1}
+{0.1cm}{0.1cm}{0.2cm}{0.2cm}
+\kCoverTextAbove{0cm}{0cm}{txt2}
+{computing system (embedded control algorithm)};
 \end{kblock}
-\end{lstlisting}
-\spacetweak
+\end{SideBySideExample}
 
-\subsection{}\spacetweak
+\subsection{Ex:G}
+\spacetweak\spacetweak
+\begin{SideBySideExample}[label=\fbox{G},xrightmargin=10cm]
+\centering
 
 \begin{kblock}
-  \kStartNodec[]{(-5,-5)}{R1}
-  \kTFRight{R1}{M1}{$\bm{\hat{m}$}\\\textbf{PID}\\\textbf{model}}
-  \kOutDown[]{M1}{um}{$u_m$}{0}
-  \kScaleDistX[1.75]
-  \kTFRight{M1}{C1}{$\bm{K\left(y_m,y\right)}$\\\textbf{PID}\\\textbf{controller}}
-  \kScaleDistX[1]
-  \kTFBelow{C1}{P1}{$\bm{P\left(s\right)}$\\\textbf{process}}
+\kJumpCS{R}
 
-  \kLink[$r$]{R1}{M1}
-  \kLink[$y_m$]{M1}{C1}
-  \kLinkHVHRight[0]{$u$}{C1}{P1}{0}{0}
-  \kLinkHVHLeft[0.33]{$y$}{P1}{C1}{0}{-0.25}
-\end{kblock}
-\begin{lstlisting}
-\begin{kblock}
-  \kStartNodec[]{(-5,-5)}{R1}
-  \kTFRight{R1}{M1}{$\bm{\hat{m}$}\\\textbf{PID}\\\textbf{model}}
-  \kOutDown[]{M1}{um}{$u_m$}{0}
-  \kScaleDistX[1.75]
-  \kTFRight{M1}{C1}{$\bm{K\left(y_m,y\right)}$\\\textbf{PID}\\\textbf{controller}}
-  \kScaleDistX[1]
-  \kTFBelow{C1}{P1}{$\bm{P\left(s\right)}$\\\textbf{process}}
+% blks
+\kTFRight{R}{tfb1}{$\bm{P}$}
+\kTFBelow{tfb1}{tfb2}{$\bm{C}$}
 
-  \kLink[$r$]{R1}{M1}
-  \kLink[$y_m$]{M1}{C1}
-  \kLinkHVHRight[0]{$u$}{C1}{P1}{0}{0}
-  \kLinkHVHLeft[0.33]{$y$}{P1}{C1}{0}{-0.25}
+% links
+\kInLeftM[0cm]{tfb1}{inW}{$w$}{0.05cm}{2}
+\kInLeftM[0cm]{tfb2}{inR}{$r$}{-0.05cm}{5}
+\kOutRight[0cm]{tfb1}{outZ}{$z$}{0.05cm}
+\kOutRight[0cm]{tfb2}{outV}{$v$}{-0.05cm}
+\kLinkHVHRight[0.6cm]{$y$}{tfb1}{tfb2}{-0.1cm}{0.1cm}
+\kLinkHVHLeft[0.6cm]{$u$}{tfb2}{tfb1}{0.1cm}{-0.1cm}
+
+% covers
+\kCoverRect[blue!50!]{tfb1}
+{0.1cm}{0.1cm}{0.3cm}{0.3cm}
+\kCoverTextAbove{0cm}{0cm}{txt1}{Physical System};
+%
+\kCoverRect[red]{tfb2}
+{0.1cm}{0.1cm}{0.3cm}{0.3cm}
+\kCoverTextBelow{0cm}{0cm}{txt2}{Computing System};
 \end{kblock}
-\end{lstlisting}
-\spacetweak
+\end{SideBySideExample}
 
-\subsection{}\spacetweak
-
+\subsection{Ex:H}
+\spacetweak\spacetweak
+\begin{SideBySideExample}[label=\fbox{H},xrightmargin=10cm]
+% Description: Closed PID-loop
+\centering
 \begin{kblock}
-    \kJumpCS{R}{$(0,0)$}
+% global ref point
+\kJumpCS{SRef}
 
-    \kJumpCSRight[-0.5cm]{R}{CR}{0}{3}
-    \kJumpCSLeft[-0.5cm]{R}{CR}{0}{9}
-    \kJumpCSAbove[-0.5cm]{R}{CR}{0}{12}
-    \kJumpCSBelow[-0.5cm]{R}{CR}{0}{6}
+%% blocks
+\kTFAbove[5cm]{SRef}{tfD}{\kmT{D}}
+\kMarkNodeLeft{0.1cm}{0cm}{}{tfD}{yin}
+\kPlusMinusDownPlaceAbove{yin}{S1}{0cm}
+\kTFAbove[]{tfD}{tfA}{\kmT{A}}
+\kTFAbove[]{tfA}{tfB}{\kmT{B}}
+\kPlusPlusMinus{tfA}{S2}{0cm}
+\kTFRight[0.5cm]{S2}{tfP}{\kmT{\mathcal{P}(s)}}
 
-    \kTFBelow{R}{C1}{\bfseries{PID}$\bm{(\cdot)}$}
-    \kScaleDistX[0.67]
-    \kTFBelow{C1}{P1}{$\bm{P(s)}$}
-    \kScaleDistX[1]
-
-    \kInLeft[0cm]{C1}{RI}{$r$}{0.1}
-
-    \kMarkNodeLeft[0cm]{}{P1}{ON}
-    \kLinkn[]{P1}{ON}
-    \kOutLeft[-0.5cm]{ON}{Y}{$y$}{0}
-    \kLinkVH[$y$]{ON}{C1}{west}{-0.1}
-
-    \kLinkHVHRight[0]{$u$}{C1}{P1}{0}{0}
+%% other nodes-paths
+\kMarkNodeRight{0cm}{0cm}{}{tfP}{ycut}
+\kInLeft[0.1cm]{S1}{rin}{$r$}{0cm}
+\kOutRight[0.1cm]{ycut}{yout}{$y^*$}{0cm}
+\kMarkNodeRight{-0.4cm}{0cm}{}{rin}{rcut}
+	
+%% links
+\kLink[$e$]{S1}{tfA}
+\kLinkVH[]{rcut}{tfB}{0cm}{0cm}{0}{}
+\kLink[]{tfA}{S2}
+\kLinkHV[]{tfB}{S2}{0cm}{0cm}{0}{}
+\kLink[$u^*$]{S2}{tfP}
+\kLinkHV[]{tfD}{S2}{0cm}{0cm}{0}{}
+\kLinkn[]{tfP}{ycut}
+\kLinknVHHVBelow[1.2cm]{}{ycut}{yin}{0cm}{0cm}
+\kLink[]{yin}{tfD}
+\kLink[]{yin}{S1}	
 \end{kblock}
+\end{SideBySideExample}
 
-\begin{lstlisting}
+\subsection{Ex:I}
+\spacetweak\spacetweak
+\begin{SideBySideExample}[label=\fbox{I},xrightmargin=10cm]
+% Description: Closed PID-loop
+\centering
 \begin{kblock}
-    \kJumpCS{R}{$(0,0)$}
+% global ref point
+\kJumpCS{SRef}
 
-    \kJumpCSRight[-0.5cm]{R}{CR}{0}{3}
-    \kJumpCSLeft[-0.5cm]{R}{CR}{0}{9}
-    \kJumpCSAbove[-0.5cm]{R}{CR}{0}{12}
-    \kJumpCSBelow[-0.5cm]{R}{CR}{0}{6}
+%% blocks
 
-    \kTFBelow{R}{C1}{\bfseries{PID}$\bm{(\cdot)}$}
-    \kScaleDistX[0.67]
-    \kTFBelow{C1}{P1}{$\bm{P(s)}$}
-    \kScaleDistX[1]
+\kTFAbove[]{SRef}{tfA}{\kmT{A}}
+\kPlusMinusDownL{tfA}{S1}{0cm}
+\kTFAbove[]{tfA}{tfB}{\kmT{B}}
+\kPlusPlusMinus{tfA}{S2}{0cm}
+\kTFRight[0.5cm]{S2}{tfP}{\kmT{\mathcal{P}(s)}}
+\kTFBelow[0cm]{tfP}{tfD}{\kmT{D}}
+\kMarkNodeRight{0cm}{0cm}{}{tfP}{ycut}
+\kMarkNodeBelow{0cm}{0cm}{}{ycut}{yin}
+\kInLeftM[0.1cm]{S1}{rin}{$r$}{0cm}{0}
+\kOutRight[0.1cm]{ycut}{yout}{$y^*$}{0cm}
+\kMarkNodeRight{-0.4cm}{0cm}{}{rin}{rcut}
 
-    \kInLeft[0cm]{C1}{RI}{$r$}{0.1}
+%% links
+\kLink[$e$]{S1}{tfA}
+\kLinkVH[]{rcut}{tfB}{0cm}{0cm}{0}{}
+\kLink[]{tfA}{S2}
+\kLinkHV[]{tfB}{S2}{0cm}{0cm}{0}{}
+\kLink[$u^*$]{S2}{tfP}
+\kLinkHV[]{tfD}{S2}{0cm}{0cm}{0}{}
+\kLinkn[]{tfP}{ycut}
+\kLinkn[]{ycut}{yin}
+\kLinknVHHVBelow[0.5cm]{}{yin}{S1}{0cm}{0cm}
+\kLink[]{yin}{tfD}	
+\end{kblock}
+\end{SideBySideExample}
 
-    \kMarkNodeLeft[0cm]{}{P1}{ON}
-    \kLinkn[]{P1}{ON}
-    \kOutLeft[-0.5cm]{ON}{Y}{$y$}{0}
-    \kLinkVH[$y$]{ON}{C1}{west}{-0.1}
+\subsection{Ex:J}
+\spacetweak\spacetweak
+\begin{SideBySideExample}[label=\fbox{J},xrightmargin=10cm]
+% Description: Anon
+\centering
+\begin{kblock}
+% global ref point
+\kJumpCS{o}
+	
+%% blocks
+\kTFAbove[0cm]{o}{tfi}{\kmT{f_i(\cdot)}}
+\kTFAbove[0.5cm]{tfi}{tfd}{\kmT{f_d(\cdot)}}
+\kTFAbove[0.5cm]{tfd}{tfp}{\kmT{f_p(\cdot)}}
 
-    \kLinkHVHRight[0]{$u$}{C1}{P1}{0}{0}
+%% links
+\kInUpM[0cm]{tfp}{inu}{$u$}{0cm}{0}
+\kOutRight[0.3cm]{tfp}{kp}{$K_p$}{0cm}
+\kOutRight[0.3cm]{tfi}{ki}{$K_i$}{0cm}
+\kOutRight[0.3cm]{tfd}{kd}{$K_d$}{0cm}
+\kInLeftM[0cm]{tfd}{inwn}{$\omega_n$}{0cm}{6}
+\kInLeftM[0cm]{tfp}{iny}{$y$}{0.15cm}{6}
+\kInLeftM[0cm]{tfp}{inym}{$y_m$}{-0.15cm}{4}
+\kMarkNodeLeft{-0.35cm}{0cm}{}{kp}{kpcut}
+\kLinkVH[$\lambda$]{kpcut}{tfd}{0.2cm}{0cm}{2}{kpcutb}
+\kLinkVH[]{kpcutb}{tfi}{0.2cm}{0cm}{0}{}
+\kMarkNodeRight{-0.8cm}{0cm}{}{inwn}{wncut}
+\kLinkVH[]{wncut}{tfi}{0cm}{0cm}{0}{}
 \end{kblock}
-\end{lstlisting}
+\end{SideBySideExample}
+
+\subsection{Ex:K}
 \spacetweak
-
-\subsection{}\spacetweak
-
+\begin{SideBySideExample}[label=\fbox{K},xrightmargin=10cm]
+% DESCRIPTION: CPLMFC-Algorithm
 \begin{kblock}
-  \kJumpCS{R1}{$(5,5)$}
+% global ref point
+\kJumpCS{SRef}
+%% blocks
+% place TF_fts right of global ref.
+\kTFRight[4cm]{SRef}{TF_fts}{ \kmTw{f_\mathrm{t_s}} }
+% place TF_mfc at h cm above TF_fts
+\kTFAbove[0.3cm]{TF_fts}{TF_mfc}{ \kmT{f_\mathrm{MFC}} }
+\kTFAbove[0.3cm]{TF_mfc}{TF_pid}{ \kmT{f_\mathrm{PID}} }
+\kTFRight[3cm]{TF_mfc}{TF_sys}{ \kmTw{ \mathcal{P} } }
 
-  \kTFRight{R1}{P1}{$\bm{P}$}
-  \kScaleDistX[0.67]
-  \kTFBelow{P1}{C1}{$\bm{C}$}
-  \kScaleDistX[1]
+%% nodes and links
+% mark visible node N1 right of TF_mfc
+\kMarkNodeRight{0.6cm}{0cm}{}{TF_mfc}{N1}
+\kMarkNodeBelow{-0.8cm}{0cm}{}{N1}{N2}
+\kMarkNodeRight{-0.6cm}{0cm}{}{N1}{N3}
+\kMarkNodeRight{0cm}{}{}{TF_sys}{N4}
+% extend node-path outwards
+\kOutRight[0.1cm]{N4}{Y1}{$y^*$}{0cm}
+\kMarkNodeLeft{0.3cm}{0cm}{}{TF_fts}{N5}
+\kMarkNodeLeft{0.3cm}{-0.12cm}{}{TF_mfc}{N6}
+\kInLeft[0.12cm]{TF_pid}{R1}{$r$}{-0.12cm}
+\kMarkNodeLeft{0cm}{-0.12cm}{}{TF_pid}{N7}
+% link TF_sys to N4
+\kLinkn[]{TF_sys}{N4}
+\kLink[$u^*$]{N3}{TF_sys}
+\kLink[]{N1}{TF_mfc}
+\kLinkHV[]{TF_fts}{N2}{0cm}{0cm}{0}{}
+% HV link from TF_pid to N1
+%\kLinkHV[]{$(TF_pid.east) + (0,0cm)$}{N1}{0cm}{0cm}{0}{}
+\kLinkHV[]{TF_pid}{N1}{0cm}{0cm}{0}{}
+% link N1 to N3
+%\kLink[]{N1}{N3}
+% link N2 to N3
+\kLink[]{N2}{N3}
+% VHHV feedback link from N4 to N5
+\kLinknVHHVBelow[1.5cm]{}{N4}{N5}{0cm}{0cm}
+\kLink[]{N5}{TF_fts}
+\kLink[]{N6}{$(TF_mfc.west) + (0,-0.12cm)$}
+% arrowless link N5 and N6
+\kLinkn[]{N5}{N6}
+\kLinkVH[]{N6}{TF_pid}{0.12cm}{0cm}{0}{}
+\kLinkVH[]{N7}{TF_mfc}{0.12cm}{0cm}{0}{}
+%% vector links
+% link from inside TF_fts to TF_mfc
+\kVecLink[$$]{TF_fts}{TF_mfc}
+% link from inside TF_mfc to TF_pid
+%\kVecLink[$$]{TF_mfc}{TF_pid}
+\kVecLink[$$]{$(TF_mfc.north) + (-0.15cm,0cm)$}
+{$(TF_pid.south) + (-0.15cm,0cm)$}
+% link from inside TF_pid to TF_mfc
+\kVecLink[$$]{$(TF_pid.south) + (0.15cm,0cm)$}
+{$(TF_mfc.north) + (0.15cm,0cm)$}
 
-  \kInLeft[]{P1}{RI}{$w$}{0.1}
-  \kInLeft[]{C1}{RC}{$r$}{-0.1}
+%% cover-sectioning
+\kCoverRect[gray]{TF_mfc}
+{1.8cm}{1.8cm}{1.5cm}{1.6cm}
+\kCoverTextAbove{0cm}{0cm}{CT1}{CPLMFC Algorithm};%
 
-  \kLinkHVHRight[0.2]{$y$}{P1}{C1}{-0.1}{0.1}
-  \kLinkHVHLeft[0.2]{$u$}{C1}{P1}{0.1}{-0.1}
-
-  \kOutRight[0cm]{P1}{Z}{$z$}{0.1}
-  \kOutRight[]{C1}{V}{$v$}{-0.1}
-
-  \kCoverRect[blue!50!]{P1}{0.1cm}{0.1cm}{0.2cm}{0.2cm}
-  \kCoverTextAbove{0}{0}{TX1}{Physical System};
-
-  \kCoverRect[red]{C1}{0.1cm}{0.1cm}{0.2cm}{0.2cm}
-  \kCoverTextBelow{0cm}{0cm}{TX2}{Computing System};
 \end{kblock}
+\end{SideBySideExample}
+% \kLinkVH[$\bm{\omega_n}$]{T3}{T1}{0cm}{0cm}{0}{}
+%
+% \kVecLinkVH[$\bm{\kappa_{pid}}$]{T2}{T3}{0.1cm}{-0.1cm}{8}
+% \kVecLinkHV[$\bm{\kappa_{pid,\lambda_{id}}}$]{T3}{T2}{-0.1cm}{0.1cm}{1}
+% \kVecInUp[-0.3cm]{T3}{TS2}{$\bm{t_s,\tau_l}$}{0.5cm}
 
-\begin{lstlisting}
+\subsection{Ex:L}\spacetweak\spacetweak
+\spacetweak\spacetweak
+\begin{SideBySideExample}[label=\fbox{L},xrightmargin=10cm]
 \begin{kblock}
-  \kJumpCS{R1}{$(5,5)$}
+\kJumpCS{fspt}
 
-  \kTFRight{R1}{P1}{$\bm{P}$}
-  \kScaleDistX[0.67]
-  \kTFBelow{P1}{C1}{$\bm{C}$}
-  \kScaleDistX[1]
+% blks
+\kTFBelow[0.5cm]{fspt}{plt}{\kmT{P(s)}}
+\kTFBelow[0cm]{plt}{pidcm}{
+\textbf{PID closed-loop model}\\
+$
+\begin{array}{c}
+	\bm{\dot{x}_m=\mathcal{S}({x_m},{r})}
+\end{array}
+$
+}
+\kTFBelow[0.33cm]{pidcm}{tscalc}
+{\kmT{f_{\omega_n}(\cdot)}}
+\kTFBelow[0.33cm]{tscalc}{fis}{\kmT{f_{x_s}(\cdot)}}
+\kTFBelow[0.2cm]{fis}{pid}{
+\textbf{PID Control Law}\\
+\kmT{u = f_{pid}(\cdot)}
+}
+\kTFRight[2.5cm]{tscalc}{obs}{
+\textbf{State Observer}\\
+$
+\begin{array}{c}
+	\bm{\hat{\dot{x}}=\mathcal{S}(\hat{x},{r})}\\
+\end{array}
+$
+}
 
-  \kInLeft[]{P1}{RI}{$w$}{0.1}
-  \kInLeft[]{C1}{RC}{$r$}{-0.1}
-
-  \kLinkHVHRight[0.2]{$y$}{P1}{C1}{-0.1}{0.1}
-  \kLinkHVHLeft[0.2]{$u$}{C1}{P1}{0.1}{-0.1}
-
-  \kOutRight[0cm]{P1}{Z}{$z$}{0.1}
-  \kOutRight[]{C1}{V}{$v$}{-0.1}
-
-  \kCoverRect[blue!50!]{P1}{0.1cm}{0.1cm}{0.2cm}{0.2cm}
-  \kCoverTextAbove{0}{0}{TX1}{Physical System};
-
-  \kCoverRect[red]{C1}{0.1cm}{0.1cm}{0.2cm}{0.2cm}
-  \kCoverTextBelow{0cm}{0cm}{TX2}{Computing System};
+% links
+\kInDown[-0.4cm]{pid}{cp}{\kmT{\lambda_p}}{-0.6cm}
+\kInDown[-0.4cm]{pid}{ci}{\kmT{\lambda_i}}{0.6cm}
+\kInDown[-0.2cm]{pid}{cd}{\kmT{\lambda_d}}{0cm}
+\kLinkHVHLeft[2cm]{\kmT{u}}{pid}{plt}{0cm}{0cm}{}
+\kLinkHV[\kmT{y}]{plt}{obs}{0cm}{0cm}{1}{}
+\kLinkVH[\kmT{\hat{x}}]{obs}{pid}{-0.1cm}{0cm}{3}{}
+\kLinkHVHRight[]{\kmT{{x}_m}}{pidcm}{pid}{0cm}{0.1cm}
+\kLink[$\bm{\omega_n}$]{tscalc}{pidcm}
+\kLink[$\bm{x_s}$]{fis}{tscalc}
+\kLink[$\bm{b,c}$]{pid}{fis}
+\kMarkNodeAbove{-0.5cm}{0cm}{}{tscalc}{mkwn}
+\kLinkHV[]{mkwn}{pid}{0cm}{1cm}{0cm}{}
+\kMarkNodeAbove{-0.5cm}{0cm}{}{fis}{mkxts}
+\kLinkHV[]{mkxts}{pid}{0cm}{0.8cm}{0}{}
+\kInLeftM[0cm]{pidcm}{rin}{$\bm{r}$}{-0.15cm}{3}
+\kOutLeft[0cm]{pidcm}{umout}{$\bm{u_m}$}{0.15cm}
+\kInLeftM[0.2cm]{tscalc}{tsl}{$\bm{t_s,t_l}$}{0cm}{6}
+\kMarkNodeRight{-0.84cm}{0cm}{}{tsl}{mktsl}
+\kLinkVH[]{mktsl}{pid}{0.15cm}{0cm}{0}{}
+\kMarkNodeBelow{0cm}{0cm}{}{obs}{mkxhat}
+\kLinkHV[]{mkxhat}{obs}{0cm}{-0.5cm}{0}{}
 \end{kblock}
-\end{lstlisting}
+\end{SideBySideExample}
 
-\spacetweak
+\pagebreak
+%% API
+\spacetweak\spacetweak
+\section{\kblocks{} API}
+\bfseries TODO ...
+%\begin{apilist}
+%\cvhd{Place an invisible Node at origin, as reference point}
+%\begin{cvl}
+%\kJumpCS{current coordinate label}
+%\end{cvl}
+%
+%\cvhd{Place Node with variable x-y coordinate shift}
+%\begin{cvl}
+%\kMarkNodeLeft{node x distance shift}{node y distance shift}
+%{node text-label}{from node label}{to node or current node label}
+%
+%\kMarkNodeRight{node x distance shift}{node y distance shift}
+%{node text-label}{from node label}{to node or current node label}
+%
+%\kMarkNodeAbove{node x distance shift}{node y distance shift}
+%{node text-label}{from node label}{to node or current node label}
+%
+%\kMarkNodeBelow{node x distance shift}{node y distance shift}
+%{node text-label}{from node label}{to node or current node label}
+%\end{cvl}
+%	
+%\cvhd{Place a Node at a specific coordinate}
+%\begin{cvl}
+%\kMarkNode{optional x distance shift}{optional y distance shift}
+%{node label}{current node coordinate}
+%\end{cvl}
+%
+%\cvhd{Arithmetic Summer Blocks}
+%\begin{cvl}
+%\kPlusPlusMinus{from node label}{to current sum node label}
+%{optional horizontal position shift}
+%\end{cvl}
+%
+%\cvhd{Transfer-Function block}
+%\begin{cvl}
+%\kTFRight[optional shift dimension]{from node label}
+%{to current tf node label}{tf text content}
+%\end{cvl}
+%
+%\cvhd{Scalar Link (arrowed) and Linkn (no arrow)}
+%\begin{cvl}
+%\kLink[optional signal label]{from node label}{to node label}
+%
+%\kLinkn[optional signal label]{from node label}{to node label}
+%\end{cvl}
+%
+%
+%\cvhd{Output Link from a node point}
+%\begin{cvl}
+%\kOutRight[optional distance shift]{from node label}
+%{to current node label}{out signal label}{direction shift}
+%\end{cvl}
+%
+%
+%\cvhd{Scalar Link Full Feedback/FeedForward Vertical (Up or Down) to Horizontal (Right or Left) to Vertical (Up or Down)}
+%\begin{cvl}
+%\kLinkVHHVBelow[optional link shift]{unity link label}
+%{from node{to node}{from node direction shift}{to node direction shift}
+%
+%\kLinkVHHVAbove[optional link shift]{unity link label}
+%{from node}{to node}{from node direction shift}{to node direction shift}
+%\end{cvl}
+%
+%
+%
+%
+%\end{apilist}
+\spacetweak\spacetweak
 
-\subsection{}\spacetweak
-\begin{kblock}
-\kJumpCS{io}{$(0,0)$}
-\kJumpCSLeft[-0.5cm]{io}{jl}{0}{9}
-\kCoverRect[blue]{jl}{2cm}{2cm}{2cm}{2cm}
-\end{kblock}
 
-\begin{lstlisting}
-\begin{kblock}
-\kJumpCS{io}{$(0,0)$}
-\kJumpCSLeft[-0.5cm]{io}{jl}{0}{9}
-\kCoverRect[blue]{jl}{2cm}{2cm}{2cm}{2cm}
-\end{kblock}
-\end{lstlisting}
 
-\spacetweak
 
 \end{document}

Modified: trunk/Master/texmf-dist/tex/latex/kblocks/kblocks.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/kblocks/kblocks.sty	2021-02-04 21:26:27 UTC (rev 57616)
+++ trunk/Master/texmf-dist/tex/latex/kblocks/kblocks.sty	2021-02-04 21:27:28 UTC (rev 57617)
@@ -1,6 +1,9 @@
+% some LaTeX code
 %  kblocks.sty
 %       TikZ-based block-diagram package for control theory applications
+%		version 2.0 (February 2021)
 %       version 1.0 (October 2019)
+%
 %       Author: Somefun Oluwasegun {oasomefun at futa.edu.ng}
 %		Change Log:
 %		significant improvements and introduction of new macros and annotation
@@ -10,7 +13,7 @@
 %		(2005): motivated by the TikZ-bloques package by Alejandro Garces {Alejandro Garcesalejandrogarces at gmail.com}
 %		
 
-% Copyright (c) 2019 by Oluwasegun Somefun <oasomefun at futa.edu.ng>.
+% Copyright (c) 2021 by Oluwasegun Somefun <oasomefun at futa.edu.ng>.
 
 % MIT LICENSE
 % Permission is hereby granted, free of charge, to any person obtaining a copy of this software
@@ -33,7 +36,7 @@
 \typeout{kblocks: A package to easily typeset Control Block Diagrams and Signal
 Flow Graphs with TikZ/PGF.}
 
-\typeout{(c) 2019. Oluwasegun Somefun}
+\typeout{(c) 2021. Oluwasegun Somefun}
 
 \typeout{*}
 
@@ -47,7 +50,8 @@
 \RequirePackage{tikz,circuitikz}
 \usepgflibrary{shapes.misc}
 \usetikzlibrary{math,calc,arrows,decorations.pathmorphing,decorations.markings,
-arrows.meta,backgrounds,fit,shadows}
+arrows.meta,backgrounds,fit,shadows,matrix,chains,scopes,positioning,
+	decorations.pathreplacing,decorations.text,shapes.multipart,graphs,external}
 
 % Helpful
 
@@ -64,6 +68,10 @@
 \newcommand{\linetype}{very thick}
 \newcommand{\linepathtype}{semithick}
 
+\newcommand{\kmT}[1]{$\:\bm{#1}\:$} % block math text with 1 left-right border spacing
+
+\newcommand{\kmTw}[1]{$\:\:\: \bm{#1} \:\:\:$} %block math text with wider left-right border spacing
+
 \newcommand{\kShadow}{\renewcommand{\dark}{1}}
 \newcommand{\kColorB}[1]{\renewcommand{\backgroundcolor}{#1}}
 \newcommand{\kColorT}[1]{\renewcommand{\colortext}{#1}}
@@ -77,6 +85,9 @@
 \renewcommand{\horizdist}{1.5cm * #1}
 }
 
+% to add very very thick width for vector lines
+\tikzset{veclinetype/.style={line width=2.0pt}}
+
 % Global variables for Coordinate Calculations
 \newdimen\xc
 \newdimen\yc
@@ -117,7 +128,7 @@
 
 
 % Area Cover Rectangle
-%% Usage [colour]{ref node}{north shift}{south shift}{west shift}{east shift}
+%% Usage [colour]{ref node}{north shift dimension}{south shift dimension}{west shift dimension}{east shift dimension}
 
 \newcommand{\kCoverRect}[6][black]{
 
@@ -273,7 +284,7 @@
 
 % Arithmetic Summer Blocks
 %% Usage: {from node label}{to current sum node label}{optional horizontal position shift}
-
+% left down
 \newcommand{\kMinusPlusDown}[3]{
 
     \def\dxpm{#3};
@@ -289,6 +300,51 @@
     \node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
     \node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
 }
+\newcommand{\kMinusPlusDownL}[3]{
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, left of= #1, node distance= \horizdist + \dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, left of= #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
+	\node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+}
+\newcommand{\kMinusPlusDownA}[3]{
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, above of= #1, node distance= \horizdist + \dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, above of= #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
+	\node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+}
+\newcommand{\kMinusPlusDownB}[3]{
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, below of= #1, node distance= \horizdist + \dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, below of= #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
+	\node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+}
 
 \newcommand{\kMinusMinusDown}[3]{
 
@@ -305,6 +361,51 @@
     \node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
     \node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
 }
+\newcommand{\kMinusMinusDownL}[3]{
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, left of= #1, node distance= \horizdist + \dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, left of= #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
+	\node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
+}
+\newcommand{\kMinusMinusDownA}[3]{
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, above of = #1, node distance= \horizdist + \dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, above of = #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
+	\node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
+}
+\newcommand{\kMinusMinusDownB}[3]{
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, below of = #1, node distance= \horizdist + \dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, below of = #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
+	\node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
+}
 
 \newcommand{\kPlusMinusDown}[3]{
 
@@ -321,8 +422,114 @@
     \node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
     \node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
 }
+\newcommand{\kPlusMinusDownL}[3]{
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, left of= #1, node distance= \horizdist + \dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, left of= #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+	\node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
+}
+\newcommand{\kPlusMinusDownA}[3]{
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, above of= #1, node distance= \horizdist + \dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, above of= #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+	\node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
+}
+\newcommand{\kPlusMinusDownB}[3]{
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, below of= #1, node distance= \horizdist + \dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, below of= #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+	\node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
+}
 
 \newcommand{\kPlusPlusDown}[3]{
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, right of= #1, node distance= \horizdist + \dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, right of= #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+	\node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+}
+\newcommand{\kPlusPlusDownL}[3]{
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, left of= #1, node distance= \horizdist + \dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, left of= #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+	\node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+}
+\newcommand{\kPlusPlusDownA}[3]{
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, above of= #1, node distance= \horizdist + \dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, above of= #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+	\node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+}
+\newcommand{\kPlusPlusDownB}[3]{
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, below of= #1, node distance= \horizdist + \dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, below of= #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+	\node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+}
+
+\newcommand{\kPlusMinusDownPlaceAbove}[3]{
+
     \def\dxpm{#3};
 
     \ifx\dxpm\empty
@@ -330,13 +537,31 @@
     \else
     \fi
 
-    \node [draw=\linecolor, circle,minimum size=1.5em, right of= #1, node distance= \horizdist + \dxpm, \linetype,
+    \node [draw=\linecolor, circle,minimum size=1.5em, above of= #1, node distance= \horizdist + \dxpm, \linetype,
     fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
-    \node [draw, cross out, minimum size=1.0em, right of= #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+    \node [draw, cross out, minimum size=1.0em, above of= #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
     \node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
-    \node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+    \node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
 }
 
+\newcommand{\kPlusMinusDownPlaceBelow}[3]{
+
+    \def\dxpm{#3};
+
+    \ifx\dxpm\empty
+    \def\dxpm{0};
+    \else
+    \fi
+
+    \node [draw=\linecolor, circle,minimum size=1.5em, below of= #1, node distance= \horizdist + \dxpm, \linetype,
+    fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+    \node [draw, cross out, minimum size=1.0em, below of= #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+    \node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+    \node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
+}
+
+
+% left up
 \newcommand{\kMinusPlusUp}[3]{
 
     \def\dxpm{#3};
@@ -352,6 +577,52 @@
     \node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
     \node [above of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
 }
+\newcommand{\kMinusPlusUpL}[3]{
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, left of = #1, node distance= \horizdist+\dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, left of = #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
+	\node [above of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+}
+\newcommand{\kMinusPlusUpA}[3]{
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, above of = #1, node distance= \horizdist+\dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, above of = #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
+	\node [above of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+}
+\newcommand{\kMinusPlusUpB}[3]{
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, below of = #1, node distance= \horizdist+\dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, below of = #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
+	\node [above of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+}
+
 \newcommand{\kMinusMinusUp}[3]{
 
     \def\dxpm{#3};
@@ -367,7 +638,53 @@
     \node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
     \node [above of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
 }
+\newcommand{\kMinusMinusUpL}[3]{
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, left of = #1, node distance= \horizdist+\dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, left of = #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
+	\node [above of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
+}
+\newcommand{\kMinusMinusUpA}[3]{
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, above of = #1, node distance= \horizdist+\dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, above of = #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
+	\node [above of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
+}
+\newcommand{\kMinusMinusUpB}[3]{
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, below of = #1, node distance= \horizdist+\dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, below of = #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
+	\node [above of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
+}
 
+
 \newcommand{\kPlusMinusUp}[3]{
 
     \def\dxpm{#3};
@@ -383,6 +700,51 @@
     \node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
     \node [above of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
 }
+\newcommand{\kPlusMinusUpB}[3]{
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, below of= #1, node distance= \horizdist+\dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, below of= #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+	\node [above of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
+}
+\newcommand{\kPlusMinusUpA}[3]{
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, above of= #1, node distance= \horizdist+\dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, above of= #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+	\node [above of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
+}
+\newcommand{\kPlusMinusUpL}[3]{	
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, left of= #1, node distance= \horizdist+\dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, left of= #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+	\node [above of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
+}
 
 \newcommand{\kPlusPlusUp}[3]{
 
@@ -399,6 +761,115 @@
     \node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
     \node [above of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
 }
+\newcommand{\kPlusPlusUpB}[3]{
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, below of= #1, node distance= \horizdist+\dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, below of= #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+	\node [above of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+}
+\newcommand{\kPlusPlusUpA}[3]{
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, above of= #1, node distance= \horizdist+\dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, above of= #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+	\node [above of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+}
+\newcommand{\kPlusPlusUpL}[3]{	
+	
+\def\dxpm{#3};
+
+\ifx\dxpm\empty
+\def\dxpm{0};
+\else
+\fi
+
+\node [draw=\linecolor, circle,minimum size=1.5em, left of= #1, node distance= \horizdist+\dxpm, \linetype,
+fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+\node [draw, cross out, minimum size=1.0em, left of= #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+\node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+\node [above of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+}
+
+% up down
+\newcommand{\kPlusDownPlusUp}[3]{
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, right of= #1, node distance= \horizdist+\dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, right of= #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+	\node [above of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+}
+\newcommand{\kPlusDownPlusUpB}[3]{
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, below of= #1, node distance= \horizdist+\dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, below of= #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+	\node [above of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+}
+\newcommand{\kPlusDownPlusUpA}[3]{
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, above of= #1, node distance= \horizdist+\dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, above of= #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+	\node [above of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+}
+\newcommand{\kPlusDownPlusUpL}[3]{	
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, left of= #1, node distance= \horizdist+\dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, left of= #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+	\node [above of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+}
+
+% left up down
 \newcommand{\kPlusPlusMinus}[3]{
 
     \def\dxpm{#3};
@@ -415,6 +886,55 @@
     \node [above of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
     \node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
 }
+\newcommand{\kPlusPlusMinusB}[3]{
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, below of = #1, node distance= \horizdist+\dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, below of = #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+	\node [above of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+	\node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
+}
+\newcommand{\kPlusPlusMinusA}[3]{
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, above of = #1, node distance= \horizdist+\dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, above of = #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+	\node [above of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+	\node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
+}
+\newcommand{\kPlusPlusMinusL}[3]{
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, left of = #1, node distance= \horizdist+\dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, left of = #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+	\node [above of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+	\node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
+}
+
 \newcommand{\kPlusMinusMinus}[3]{
 
     \def\dxpm{#3};
@@ -431,6 +951,54 @@
     \node [above of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
     \node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
 }
+\newcommand{\kPlusMinusMinusL}[3]{
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, left of = #1, node distance= \horizdist+\dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, left of = #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+	\node [above of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
+	\node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
+}
+\newcommand{\kPlusMinusMinusA}[3]{
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, above of = #1, node distance= \horizdist+\dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, above of = #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+	\node [above of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
+	\node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
+}
+\newcommand{\kPlusMinusMinusB}[3]{
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, below of = #1, node distance= \horizdist+\dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, below of = #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+	\node [above of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
+	\node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
+}
 
 \newcommand{\kPlusMinusPlus}[3]{
 
@@ -448,6 +1016,54 @@
     \node [above of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
     \node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
 }
+\newcommand{\kPlusMinusPlusB}[3]{
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, below of = #1, node distance= \horizdist+\dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, below of = #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+	\node [above of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
+	\node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+}
+\newcommand{\kPlusMinusPlusA}[3]{
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, above of = #1, node distance= \horizdist+\dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, above of = #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+	\node [above of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
+	\node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+}
+\newcommand{\kPlusMinusPlusL}[3]{
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, left of = #1, node distance= \horizdist+\dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, left of = #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+	\node [above of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$-$}};
+	\node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+}
 
 \newcommand{\kPlusPlusPlus}[3]{
 
@@ -465,7 +1081,56 @@
     \node [above of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
     \node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
 }
+\newcommand{\kPlusPlusPlusL}[3]{
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, left of = #1, node distance= \horizdist+\dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, left of = #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+	\node [above of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+	\node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+}
+\newcommand{\kPlusPlusPlusA}[3]{
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, above of = #1, node distance= \horizdist+\dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, above of = #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+	\node [above of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+	\node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+}
+\newcommand{\kPlusPlusPlusB}[3]{
+	
+	\def\dxpm{#3};
+	
+	\ifx\dxpm\empty
+	\def\dxpm{0};
+	\else
+	\fi
+	
+	\node [draw=\linecolor, circle,minimum size=1.5em, below of = #1, node distance= \horizdist+\dxpm, \linetype,
+	fill=\backgroundcolor, drop shadow={opacity=\dark}, font=\textsize] (#2) {};
+	\node [draw, cross out, minimum size=1.0em, below of = #1, node distance= \horizdist + \dxpm, thin, draw=black] {};
+	\node [left of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+	\node [above of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+	\node [below of= #2, node distance = 0.45em] () { \color{\colortext}\tiny{$+$}};
+}
 
+
 % Circular Gain Block
 \newcommand{\kGain}[4][]{
     \node [draw=\linecolor, circle, right of= #1, node distance= \horizdist,
@@ -632,60 +1297,100 @@
 
 
 %  Mark Visible Circular Nodes
-%% Usage: [optional distance shift]{optional node label}{from node label}{to current node label}
 
-% Place Node Right
-\newcommand{\kMarkNodeRight}[4][]{
-    \def\dxnr{#1};
+% Place Node with variable x-y coordinate shift
+%% Usage: {node x distance shift}{node y distance shift}{node text label}{from node label}{to current node label}
 
-    \ifx\dxnr\empty
-    \def\dxnr{0};
+% Place Node Left
+\newcommand{\kMarkNodeLeft}[5]{
+    \def\dxnlx{#1};
+	\def\dynly{#2};
+	
+    \ifx\dxnlx\empty
+    \def\dxnlx{0};
     \else
-    \fi
-    \node[fill=\linecolor,circle,inner sep=0pt, outer sep=0pt, minimum size=.3em,
-    right of = #3, node distance= 1.2cm + \dxnr] (#4) {\textsize{#2}};
-
+    \fi	
+	\ifx\dynly\empty
+    \def\dynly{0};
+    \else
+    \fi		
+    \node[fill=\linecolor,circle,inner sep=0pt, outer sep=0pt, minimum size=0.3em,
+    left of = #4, node distance= 1.2cm + \dxnlx, yshift=\dynly, label=\textsize{#3}] (#5) {};	
 }
 
-% Place Node Left
-\newcommand{\kMarkNodeLeft}[4][]{
-    \def\dxnl{#1};
 
-    \ifx\dxnl\empty
-    \def\dxnl{0};
+% Place Node Right
+\newcommand{\kMarkNodeRight}[5]{
+    \def\dxnrx{#1};
+	\def\dynry{#2};
+	
+    \ifx\dxnrx\empty
+    \def\dxnrx{0};
     \else
-    \fi
-    \node[fill=\linecolor,circle,inner sep=0pt, outer sep=0pt, minimum size=.3em,
-    left of = #3, node distance= 1.2cm + \dxnl] (#4) {\textsize{#2}};
+    \fi	
+	\ifx\dynry\empty
+    \def\dynry{0};
+    \else
+    \fi		
+    \node[fill=\linecolor,circle,inner sep=0pt, outer sep=0pt, minimum size=0.3em,
+    right of = #4, node distance= 1.2cm + \dxnrx, yshift=\dynry, label=\textsize{#3}] (#5) {};	
+}
 
+% Place Node Above
+\newcommand{\kMarkNodeAbove}[5]{
+    \def\dxnax{#1};
+	\def\dynay{#2};
+	
+    \ifx\dxnax\empty
+    \def\dxnax{0};
+    \else
+    \fi	
+	\ifx\dynay\empty
+    \def\dynay{0};
+    \else
+    \fi		
+    \node[fill=\linecolor,circle,inner sep=0pt, outer sep=0pt, minimum size=0.3em,
+    above of = #4, node distance= 1.2cm + \dxnax, yshift=\dynay, label=\textsize{#3}] (#5) {};	
 }
-% Place Node Above
-\newcommand{\kMarkNodeAbove}[4][]{
-    \def\dxna{#1};
 
-    \ifx\dxna\empty
-    \def\dxna{0};
+% Place Node Below
+\newcommand{\kMarkNodeBelow}[5]{
+    \def\dxnbx{#1};
+	\def\dynby{#2};
+	
+    \ifx\dxnbx\empty
+    \def\dxnbx{0};
     \else
-    \fi
-    \node[fill=\linecolor,circle,inner sep=0pt, outer sep=0pt, minimum size=.3em,
-    above of = #3, node distance= 1.2cm + \dxna] (#4) {\textsize{#2}};
-    \node[fill=\linecolor,circle,inner sep=0pt, outer sep=0pt, minimum size=.3em,
-    above of = #3, node distance= 1.2cm + \dxna] (#4) {\textsize{#2}};
-
+    \fi	
+	\ifx\dynby\empty
+    \def\dynby{0};
+    \else
+    \fi		
+    \node[fill=\linecolor,circle,inner sep=0pt, outer sep=0pt, minimum size=0.3em,
+    below of = #4, node distance= 1.2cm + \dxnbx, yshift=\dynby, label=\textsize{#3}] (#5) {};	
 }
-% Place Node Below
-\newcommand{\kMarkNodeBelow}[4][]{
-    \def\dxnb{#1};
 
-    \ifx\dxnb\empty
-    \def\dxnb{0};
+% Place Node At Coordinate
+%% Usage: {optional x distance shift}{optional y distance shift}{empty text-label}{current node coordinate}
+\newcommand{\kMarkNode}[4]{
+    \def\dxncsx{#1};
+	\def\dyncsy{#2};
+	
+    \ifx\dxncsx\empty
+    \def\dxncsx{0};
     \else
-    \fi
-    \node[fill=\linecolor,circle,inner sep=0pt, outer sep=0pt, minimum size=.3em,
-    below of = #3, node distance= 1.2cm + \dxnb] (#4) {\textsize{#2}};
+    \fi	
+	\ifx\dyncsy\empty
+    \def\dyncsy{0};
+    \else
+    \fi	
+	
+    \node[fill=\linecolor,circle,inner sep=0pt, outer sep=0pt, minimum size=.3em, 
+	node distance= 0cm + \dxncsx, yshift=\dyncsy, label=\textsize{#3}] (#4) {};
 
 }
 
+
 % Place a Reference Invisible Node relative to other nodes
 %% Usage: [optional distance shift]{from node label}{to current coordinate label}{direction shift}{coordinate text label}
 
@@ -732,39 +1437,791 @@
 
 % Place a Reference Invisible Node at any specific coordinate
 %% Usage: {current coordinate label}{coordinate (x,y)}
-\newcommand{\kJumpCS}[2]{
-    \coordinate (#1) at (#2);
+\newcommand{\kJumpCS}[2][$(0,0)$]{
+    \coordinate (#2) at (#1);
 }
 
 % Links %% swap, near end,mid, add label text above lines or besides
 %% Usage: [optional signal label]{from node label}{to node label}
-
 % Link Left or Right, Up or Down
 \newcommand{\kLink}[3][]{
-    \draw [-latex,\linecolor, \linepathtype] (#2) -- node[auto,above] {\textsize{#1}} (#3);
+    \draw [-latex,\linecolor, \linepathtype] (#2) -- node[auto] {\textsize{#1}} (#3);
 }
 % no arrow
 \newcommand{\kLinkn}[3][]{
     \draw [\linecolor, \linepathtype] (#2) -- node[auto,above] {\textsize{#1}} (#3);
 }
+%% Vector link variant
+% Link Left or Right, Up or Down
+\newcommand{\kVecLink}[3][]{
+    \draw [-latex,\linecolor, veclinetype] (#2) -- node[auto] {\textsize{#1}} (#3);
+}
+% no arrow
+\newcommand{\kVecLinkn}[3][]{
+    \draw [\linecolor, veclinetype] (#2) -- node[auto,above] {\textsize{#1}} (#3);
+}
+
+%% Link Directed TODO: investigate use
+%% Usage: [optional signal link label]{from node label}{to node label}{from-to node direction shift}
+% Directed Link Left or Right, Up or Down
+\newcommand{\kLinkdir}[4][]{
+    \coordinate (tmp) at ($(#2.west) + (0,#4)$);
+    \draw[-latex, \linecolor, \linepathtype] (tmp) -- node[auto] {\textsize{#1}} ($(#3.east) + (0,#4)$);
+}
+% no arrow
+\newcommand{\kLinkndir}[4][]{
+    \coordinate (tmp) at ($(#2.west) + (0,#4)$);
+    \draw[\linecolor, \linepathtype] (tmp) -- node[auto] {\textsize{#1}} ($(#3.east) + (0,#4)$);
+}
+
+%% Vector link variant
+\newcommand{\kVecLinkdir}[4][]{
+    \coordinate (tmp) at ($(#2.west) + (0,#4)$);
+    \draw[-latex, \linecolor, veclinetype] (tmp) -- node[auto] {\textsize{#1}} ($(#3.east) + (0,#4)$);
+}
+% no arrow
+\newcommand{\kVecLinkndir}[4][]{
+    \coordinate (tmp) at ($(#2.west) + (0,#4)$);
+    \draw[\linecolor, veclinetype] (tmp) -- node[auto] {\textsize{#1}} ($(#3.east) + (0,#4)$);
+}
+
 % Link Horizontal(Right or Left) Vertical(Up or Down)
-%% Usage: [optional link label]{from node label}{to current node label}{direction}{direction shift}
-
+%% Usage: [optional link label]{from node label}{to current node label}{direction shift y}{direction shift x}{link label position}
 % Link: Left Up, Left Down, Right Up, Right Down
 
-\newcommand{\kLinkHV}[5][]{
-    \def\direct{#4};
-    \draw[-latex, \linecolor, \linepathtype] (#2) -|  node[near end, above left] {\textsize{#1}} ($(#3.\direct) + (0,#5)$);
+\newcommand{\kLinkHV}[7][]{% TODO:DONE
+    \def\dxpos{#5};
+    \ifx\dxpos\empty
+    \def\dxpos{0};
+    \else
+    \fi
+	
+	\def\dypos{#4};
+    \ifx\dypos\empty
+    \def\dypos{0};
+    \else
+    \fi
+	
+    \coordinate (fromn) at (#2);% from node coordinate
+    \coordinate (ton) at (#3);% to node coordinate
+
+
+    % extract x and y coordinates
+    \newdimen\xf;%
+    \newdimen\yf;%
+    \path (fromn); \pgfgetlastxy{\xf}{\yf};
+    \newdimen\xt;%
+    \newdimen\yt;%
+    \path (ton); \pgfgetlastxy{\xt}{\yt};
+
+    \newdimen\asumxft;
+
+    \tikzmath{
+        \asumxft = \yt - \yf;
+        if \asumxft>0 then {let \directn = south;} else {
+            if \asumxft<0 then {let \directn = north;} else {
+                let \directn = 0;
+            };
+        };
+	    \asumxft = \xt - \xf;
+        if \asumxft>0 then {let \fdirectn = east;} else {
+            if \asumxft<0 then {let \fdirectn = west;} else {
+                let \fdirectn = 0;
+            };
+        };
+    }
+
+	% immediate marking of perpendicular edge of VH or HV links
+	\def\mkpt{#7};
+	\ifx\mkpt\empty
+	\else
+	\coordinate (hat3) at ($(#3.\directn) + (0,\dypos)$);
+	\newdimen\xtohat;
+	\newdimen\ytohat;%
+	\path (hat3); \pgfgetlastxy{\xtohat}{\ytohat};
+	\coordinate (#7) at (\xf,\ytohat); % markpt coordinate
+	%\coordinate (#1) at (\xf,\yt); % markpt coordinate
+	\node[fill=\linecolor,circle,inner sep=0pt, outer sep=0pt, minimum size=0.3em] at (\xf,\ytohat) {};
+	\fi
+	
+	% label positioning: 10 options (0 - 9)
+	\def\poslabel{#6};
+	\ifx\poslabel\empty
+	\def\poslabel{5};
+	\else
+	\fi
+	
+	% integer register, count0 (0-255)
+	\count0=\poslabel\relax;
+
+	\ifnum\count0=0
+	\draw[-latex, \linecolor, \linepathtype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[above, pos=0.15] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+	\else
+	\ifnum\count0=1
+	\draw[-latex, \linecolor, \linepathtype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[below, pos=0.15] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+	\else
+	\ifnum\count0=2
+	\draw[-latex, \linecolor, \linepathtype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[above, pos=0.3] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+	\else
+	\ifnum\count0=3
+	\draw[-latex, \linecolor, \linepathtype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[below, pos=0.3] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+	\else
+	\ifnum\count0=4
+	\draw[-latex, \linecolor, \linepathtype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[above left,pos=0.5] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+	\else
+	\ifnum\count0=5
+	\draw[-latex, \linecolor, \linepathtype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[above right,pos=0.5] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+	\else
+	\ifnum\count0=6
+	\draw[-latex, \linecolor, \linepathtype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[below left,pos=0.5] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+	\else
+	\ifnum\count0=7
+	\draw[-latex, \linecolor, \linepathtype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[below right,pos=0.5] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+	\else
+	\ifnum\count0=8
+	\draw[-latex, \linecolor, \linepathtype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[left,pos=0.75] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+	\else
+	\ifnum\count0=9
+	\draw[-latex, \linecolor, \linepathtype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[right,pos=0.75] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+	\else
+	\draw[-latex, \linecolor, \linepathtype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[above left,pos=0.5] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+	\fi
+	\fi
+	\fi
+	\fi
+	\fi
+	\fi
+	\fi
+	\fi
+	\fi
+	\fi
 }
+
+
+%% vector variant
+\newcommand{\kVecLinkHV}[6][]{% TODO:extend changes made here to its other HV variants
+    \def\dxpos{#5};
+    \ifx\dxpos\empty
+    \def\dxpos{0};
+    \else
+    \fi
+	
+	\def\dypos{#4};
+    \ifx\dypos\empty
+    \def\dypos{0};
+    \else
+    \fi
+	
+    \coordinate (fromn) at (#2);% from node coordinate
+    \coordinate (ton) at (#3);% to node coordinate
+
+
+    % extract x and y coordinates
+    \newdimen\xf;%
+    \newdimen\yf;%
+    \path (fromn); \pgfgetlastxy{\xf}{\yf};
+    \newdimen\xt;%
+    \newdimen\yt;%
+    \path (ton); \pgfgetlastxy{\xt}{\yt};
+
+    \newdimen\asumxft;
+
+    \tikzmath{
+        \asumxft = \yt - \yf;
+        if \asumxft>0 then {let \directn = south;} else {
+            if \asumxft<0 then {let \directn = north;} else {
+                let \directn = 0;
+            };
+        };
+	    \asumxft = \xt - \xf;
+        if \asumxft>0 then {let \fdirectn = east;} else {
+            if \asumxft<0 then {let \fdirectn = west;} else {
+                let \fdirectn = 0;
+            };
+        };
+    }
+
+\ifnum#6=0
+\draw[-latex, \linecolor, veclinetype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[near end, above left] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+\else
+\ifnum#6=1
+\draw[-latex, \linecolor, veclinetype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[near end, above right] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+\else
+\ifnum#6=2
+\draw[-latex, \linecolor, veclinetype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[near end, below left] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+\else
+\ifnum#6=3
+\draw[-latex, \linecolor, veclinetype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[near end, below right] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+\else
+\ifnum#6=4
+\draw[-latex, \linecolor, veclinetype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[midway, above left] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+\else
+\ifnum#6=5
+\draw[-latex, \linecolor, veclinetype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[midway, above right] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+\else
+\ifnum#6=6
+\draw[-latex, \linecolor, veclinetype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[midway, below left] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+\else
+\ifnum#6=7
+\draw[-latex, \linecolor, veclinetype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[midway, below right] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+\else
+\ifnum#6=8
+\draw[-latex, \linecolor, veclinetype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[midway, below] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+\else
+\draw[-latex, \linecolor, veclinetype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[near end, above] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+\fi
+\fi
+\fi
+\fi
+\fi
+\fi
+\fi
+\fi
+\fi
+
+}
+
+%% No direction
+\newcommand{\kLinknHV}[6][]{% TODO:extend changes made here to its other HV variants
+    \def\dxpos{#5};
+    \ifx\dxpos\empty
+    \def\dxpos{0};
+    \else
+    \fi
+	
+	\def\dypos{#4};
+    \ifx\dypos\empty
+    \def\dypos{0};
+    \else
+    \fi
+	
+    \coordinate (fromn) at (#2);% from node coordinate
+    \coordinate (ton) at (#3);% to node coordinate
+
+
+    % extract x and y coordinates
+    \newdimen\xf;%
+    \newdimen\yf;%
+    \path (fromn); \pgfgetlastxy{\xf}{\yf};
+    \newdimen\xt;%
+    \newdimen\yt;%
+    \path (ton); \pgfgetlastxy{\xt}{\yt};
+
+    \newdimen\asumxft;
+
+    \tikzmath{
+        \asumxft = \yt - \yf;
+        if \asumxft>0 then {let \directn = south;} else {
+            if \asumxft<0 then {let \directn = north;} else {
+                let \directn = 0;
+            };
+        };
+	    \asumxft = \xt - \xf;
+        if \asumxft>0 then {let \fdirectn = east;} else {
+            if \asumxft<0 then {let \fdirectn = west;} else {
+                let \fdirectn = 0;
+            };
+        };
+    }
+
+\ifnum#6=0
+\draw[\linecolor, \linepathtype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[near end, above left] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+\else
+\ifnum#6=1
+\draw[\linecolor, \linepathtype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[near end, above right] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+\else
+\ifnum#6=2
+\draw[\linecolor, \linepathtype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[near end, below left] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+\else
+\ifnum#6=3
+\draw[\linecolor, \linepathtype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[near end, below right] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+\else
+\ifnum#6=4
+\draw[\linecolor, \linepathtype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[midway, above left] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+\else
+\ifnum#6=5
+\draw[\linecolor, \linepathtype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[midway, above right] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+\else
+\ifnum#6=6
+\draw[\linecolor, \linepathtype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[midway, below left] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+\else
+\ifnum#6=7
+\draw[\linecolor, \linepathtype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[midway, below right] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+\else
+\ifnum#6=8
+\draw[\linecolor, \linepathtype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[midway, below] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+\else
+\draw[\linecolor, \linepathtype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[near end, above] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+\fi
+\fi
+\fi
+\fi
+\fi
+\fi
+\fi
+\fi
+\fi
+
+    % \def\mkpt{#5};
+    % \ifx\mkpt\empty
+    % \else
+    % \coordinate (#5) at (\xf,\yt); % markpt coordinate
+    % \node[fill=\linecolor,circle,inner sep=0pt, outer sep=0pt, minimum size=0.3em] at (\xt,\yf) {};
+    % \fi
+}
+%% vector variant
+\newcommand{\kVecLinknHV}[6][]{% TODO:extend changes made here to its other HV variants
+    \def\dxpos{#5};
+    \ifx\dxpos\empty
+    \def\dxpos{0};
+    \else
+    \fi
+	
+	\def\dypos{#4};
+    \ifx\dypos\empty
+    \def\dypos{0};
+    \else
+    \fi
+	
+    \coordinate (fromn) at (#2);% from node coordinate
+    \coordinate (ton) at (#3);% to node coordinate
+
+
+    % extract x and y coordinates
+    \newdimen\xf;%
+    \newdimen\yf;%
+    \path (fromn); \pgfgetlastxy{\xf}{\yf};
+    \newdimen\xt;%
+    \newdimen\yt;%
+    \path (ton); \pgfgetlastxy{\xt}{\yt};
+
+    \newdimen\asumxft;
+
+    \tikzmath{
+        \asumxft = \yt - \yf;
+        if \asumxft>0 then {let \directn = south;} else {
+            if \asumxft<0 then {let \directn = north;} else {
+                let \directn = 0;
+            };
+        };
+	    \asumxft = \xt - \xf;
+        if \asumxft>0 then {let \fdirectn = east;} else {
+            if \asumxft<0 then {let \fdirectn = west;} else {
+                let \fdirectn = 0;
+            };
+        };
+    }
+
+\ifnum#6=0
+\draw[\linecolor, veclinetype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[near end, above left] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+\else
+\ifnum#6=1
+\draw[\linecolor, veclinetype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[near end, above right] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+\else
+\ifnum#6=2
+\draw[\linecolor, veclinetype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[near end, below left] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+\else
+\ifnum#6=3
+\draw[\linecolor, veclinetype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[near end, below right] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+\else
+\ifnum#6=4
+\draw[\linecolor, veclinetype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[midway, above left] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+\else
+\ifnum#6=5
+\draw[\linecolor, veclinetype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[midway, above right] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+\else
+\ifnum#6=6
+\draw[\linecolor, veclinetype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[midway, below left] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+\else
+\ifnum#6=7
+\draw[\linecolor, veclinetype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[midway, below right] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+\else
+\ifnum#6=8
+\draw[\linecolor, veclinetype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[midway, below] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+\else
+\draw[\linecolor, veclinetype] ($(#2.\fdirectn) + (0,\dypos)$) -|  node[near end, above] {\textsize{#1}} ($(#3.\directn) + (\dxpos,0)$);
+\fi
+\fi
+\fi
+\fi
+\fi
+\fi
+\fi
+\fi
+\fi
+
+}
+
+
 % Link Vertical(Up or Down) Horizontal(Right or Left)
 % Link Up Left, Up Right, Down Left, Down Right
-\newcommand{\kLinkVH}[5][]{
-    \def\direct{#4};
-    \draw[-latex, \linecolor, \linepathtype] (#2) |-  node[near end, below] {\textsize{#1}} ($(#3.\direct) + (0,#5)$);
+\newcommand{\kLinkVH}[7][]{ % TODO:DONE
+
+    \def\dypos{#4};
+	\def\dxpos{#5};
+    \ifx\dypos\empty
+    \def\dypos{0};
+    \else
+    \fi
+	\ifx\dxpos\empty
+    \def\dxpos{0};
+    \else
+    \fi
+
+    \coordinate (fromn) at (#2);% from node coordinate
+    \coordinate (ton) at (#3);% to node coordinate
+
+
+    % extract x and y coordinates
+    \newdimen\xf;%
+    \newdimen\yf;%
+    \path (fromn); \pgfgetlastxy{\xf}{\yf};
+    \newdimen\xt;%
+    \newdimen\yt;%
+    \path (ton); \pgfgetlastxy{\xt}{\yt};
+
+    \newdimen\asumxft;
+
+    \tikzmath{
+        \asumxft = \xt - \xf;
+        if \asumxft>0 then {let \directn = west;} else {
+            if \asumxft<0 then {let \directn = east;} else {
+                let \directn = 0;
+            };
+        };
+		\asumyft = \yt - \yf;
+        if \asumyft>0 then {let \fdirectn = north;} else {
+            if \asumyft<0 then {let \fdirectn = south;} else {
+                let \fdirectn = 0;
+            };
+        };
+    }
+
+	
+	% immediate marking of perpendicular edge of VH or HV links
+	\def\mkpt{#7};
+	\ifx\mkpt\empty
+	\else
+	\coordinate (hat3) at ($(#3.\directn) + (0,\dypos)$);
+	\newdimen\xtohat;
+	\newdimen\ytohat;%
+	\path (hat3); \pgfgetlastxy{\xtohat}{\ytohat};
+	\coordinate (#7) at (\xf,\ytohat); % markpt coordinate
+	%\coordinate (#1) at (\xf,\yt); % markpt coordinate
+	\node[fill=\linecolor,circle,inner sep=0pt, outer sep=0pt, minimum size=0.3em] at (\xf,\ytohat) {};
+	\fi
+	
+	
+	% label positioning: 10 options (0 - 9)
+	\def\poslabel{#6};
+	\ifx\poslabel\empty
+	\def\poslabel{5};
+	\else
+	\fi
+	
+	% integer register, count0 (0-255)
+	\count0=\poslabel\relax;
+	
+	\ifnum\count0=0
+	\draw[-latex, \linecolor, \linepathtype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[left,pos=0.15] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+	\else
+	\ifnum\count0=1
+	\draw[-latex, \linecolor, \linepathtype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[right, pos=0.15] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+	\else
+	\ifnum\count0=2
+	\draw[-latex, \linecolor, \linepathtype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[left,pos=0.3] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+	\else
+	\ifnum\count0=3
+	\draw[-latex, \linecolor, \linepathtype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[right,pos=0.3] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+	\else
+	\ifnum\count0=4
+	\draw[-latex, \linecolor, \linepathtype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[above left,pos=0.5] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+	\else
+	\ifnum\count0=5
+	\draw[-latex, \linecolor, \linepathtype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[above right,pos=0.5] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+	\else
+	\ifnum\count0=6
+	\draw[-latex, \linecolor, \linepathtype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[below left,pos=0.5] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+	\else
+	\ifnum\count0=7
+	\draw[-latex, \linecolor, \linepathtype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[below right,pos=0.5] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+	\else
+	\ifnum\count0=8
+	\draw[-latex, \linecolor, \linepathtype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[above, pos=0.75] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+	\else
+	\ifnum\count0=9
+	\draw[-latex, \linecolor, \linepathtype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[below, pos=0.75] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+	\else
+	\draw[-latex, \linecolor, \linepathtype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[above right,pos=0.5] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+	\fi
+	\fi
+	\fi
+	\fi
+	\fi
+	\fi
+	\fi
+	\fi
+	\fi
+	\fi
+
 }
 
-%% Usage: {optional link scale}{link label}{from node}{to node}{from node direction shift}{to node direction shift}
+%% vector variant
+\newcommand{\kVecLinkVH}[6][]{ % TODO:extend changes made here to its other VH variants
 
+    \def\dypos{#4};
+	\def\dxpos{#5};
+    \ifx\dypos\empty
+    \def\dypos{0};
+    \else
+    \fi
+	\ifx\dxpos\empty
+    \def\dxpos{0};
+    \else
+    \fi
+
+    \coordinate (fromn) at (#2);% from node coordinate
+    \coordinate (ton) at (#3);% to node coordinate
+
+
+    % extract x and y coordinates
+    \newdimen\xf;%
+    \newdimen\yf;%
+    \path (fromn); \pgfgetlastxy{\xf}{\yf};
+    \newdimen\xt;%
+    \newdimen\yt;%
+    \path (ton); \pgfgetlastxy{\xt}{\yt};
+
+    \newdimen\asumxft;
+
+    \tikzmath{
+        \asumxft = \xt - \xf;
+        if \asumxft>0 then {let \directn = west;} else {
+            if \asumxft<0 then {let \directn = east;} else {
+                let \directn = 0;
+            };
+        };
+		\asumyft = \yt - \yf;
+        if \asumyft>0 then {let \fdirectn = north;} else {
+            if \asumyft<0 then {let \fdirectn = south;} else {
+                let \fdirectn = 0;
+            };
+        };
+    }
+
+
+\ifnum#6=0
+\draw[-latex, \linecolor, veclinetype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[near end, above] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+\else
+\ifnum#6=1
+\draw[-latex, \linecolor, veclinetype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[near end, above right] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+\else
+\ifnum#6=2
+\draw[-latex, \linecolor, veclinetype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[near end, below] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+\else
+\ifnum#6=3
+\draw[-latex, \linecolor, veclinetype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[near end, below right] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+\else
+\ifnum#6=4
+\draw[-latex, \linecolor, veclinetype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[midway, above] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+\else
+\ifnum#6=5
+\draw[-latex, \linecolor, veclinetype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[midway, above right] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+\else
+\ifnum#6=6
+\draw[-latex, \linecolor, veclinetype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[midway, above left] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+\else
+\ifnum#6=7
+\draw[-latex, \linecolor, veclinetype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[midway, below right] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+\else
+\ifnum#6=8
+\draw[-latex, \linecolor, veclinetype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[midway, below left] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+\else
+\draw[-latex, \linecolor, veclinetype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[auto, above] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+\fi
+\fi
+\fi
+\fi
+\fi
+\fi
+\fi
+\fi
+\fi
+
+}
+
+%% No Direction
+\newcommand{\kLinknVH}[6][]{ % TODO:extend changes made here to its other VH variants
+
+    \def\dypos{#4};
+	\def\dxpos{#5};
+    \ifx\dypos\empty
+    \def\dypos{0};
+    \else
+    \fi
+	\ifx\dxpos\empty
+    \def\dxpos{0};
+    \else
+    \fi
+
+    \coordinate (fromn) at (#2);% from node coordinate
+    \coordinate (ton) at (#3);% to node coordinate
+
+
+    % extract x and y coordinates
+    \newdimen\xf;%
+    \newdimen\yf;%
+    \path (fromn); \pgfgetlastxy{\xf}{\yf};
+    \newdimen\xt;%
+    \newdimen\yt;%
+    \path (ton); \pgfgetlastxy{\xt}{\yt};
+
+    \newdimen\asumxft;
+
+    \tikzmath{
+        \asumxft = \xt - \xf;
+        if \asumxft>0 then {let \directn = west;} else {
+            if \asumxft<0 then {let \directn = east;} else {
+                let \directn = 0;
+            };
+        };
+		\asumyft = \yt - \yf;
+        if \asumyft>0 then {let \fdirectn = north;} else {
+            if \asumyft<0 then {let \fdirectn = south;} else {
+                let \fdirectn = 0;
+            };
+        };
+    }
+	
+\ifnum#6=0
+\draw[\linecolor, \linepathtype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[near end, above] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+\else
+\ifnum#6=1
+\draw[\linecolor, \linepathtype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[near end, above right] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+\else
+\ifnum#6=2
+\draw[\linecolor, \linepathtype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[near end, below] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+\else
+\ifnum#6=3
+\draw[\linecolor, \linepathtype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[near end, below right] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+\else
+\ifnum#6=4
+\draw[\linecolor, \linepathtype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[midway, above] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+\else
+\ifnum#6=5
+\draw[\linecolor, \linepathtype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[midway, above right] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+\else
+\ifnum#6=6
+\draw[\linecolor, \linepathtype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[midway, above left] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+\else
+\ifnum#6=7
+\draw[\linecolor, \linepathtype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[midway, below right] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+\else
+\ifnum#6=8
+\draw[\linecolor, \linepathtype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[midway, below left] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+\else
+\draw[\linecolor, \linepathtype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[auto, above] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+\fi
+\fi
+\fi
+\fi
+\fi
+\fi
+\fi
+\fi
+\fi
+
+}
+
+%% vector variant
+\newcommand{\kVecLinknVH}[6][]{ % TODO:extend changes made here to its other VH variants
+
+    \def\dypos{#4};
+	\def\dxpos{#5};
+    \ifx\dypos\empty
+    \def\dypos{0};
+    \else
+    \fi
+	\ifx\dxpos\empty
+    \def\dxpos{0};
+    \else
+    \fi
+
+    \coordinate (fromn) at (#2);% from node coordinate
+    \coordinate (ton) at (#3);% to node coordinate
+
+
+    % extract x and y coordinates
+    \newdimen\xf;%
+    \newdimen\yf;%
+    \path (fromn); \pgfgetlastxy{\xf}{\yf};
+    \newdimen\xt;%
+    \newdimen\yt;%
+    \path (ton); \pgfgetlastxy{\xt}{\yt};
+
+    \newdimen\asumxft;
+
+    \tikzmath{
+        \asumxft = \xt - \xf;
+        if \asumxft>0 then {let \directn = west;} else {
+            if \asumxft<0 then {let \directn = east;} else {
+                let \directn = 0;
+            };
+        };
+		\asumyft = \yt - \yf;
+        if \asumyft>0 then {let \fdirectn = north;} else {
+            if \asumyft<0 then {let \fdirectn = south;} else {
+                let \fdirectn = 0;
+            };
+        };
+    }
+
+
+\ifnum#6=0
+\draw[\linecolor, veclinetype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[near end, above] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+\else
+\ifnum#6=1
+\draw[\linecolor, veclinetype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[near end, above right] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+\else
+\ifnum#6=2
+\draw[\linecolor, veclinetype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[near end, below] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+\else
+\ifnum#6=3
+\draw[\linecolor, veclinetype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[near end, below right] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+\else
+\ifnum#6=4
+\draw[\linecolor, veclinetype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[midway, above] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+\else
+\ifnum#6=5
+\draw[\linecolor, veclinetype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[midway, above right] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+\else
+\ifnum#6=6
+\draw[\linecolor, veclinetype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[midway, above left] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+\else
+\ifnum#6=7
+\draw[\linecolor, veclinetype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[midway, below right] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+\else
+\ifnum#6=8
+\draw[\linecolor, veclinetype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[midway, below left] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+\else
+\draw[\linecolor, veclinetype] ($(#2.\fdirectn) + (\dxpos,0)$) |-  node[auto, above] {\textsize{#1}} ($(#3.\directn) + (0,\dypos)$);
+\fi
+\fi
+\fi
+\fi
+\fi
+\fi
+\fi
+\fi
+\fi
+
+}
+
+
+% Link Full Feedback/FeedForward Horizontal(Right or Left) to Vertical(Up or Down)
+% to  Horizontal(Right or Left)
+%% Usage: [optional link scale]{link label}{from node}{to node}{from node direction shift}{to node direction shift}
+
 \newcommand{\kLinkHVHRight}[6][]{
     \def\dxr{#1};
     \ifx\dxr\empty
@@ -775,6 +2232,17 @@
     \coordinate (tmp) at ($(#3.east) + (0,#5) + (0.33+\dxr,0)$);
     \draw[-latex, \linecolor, \linepathtype] (tmplr) -| (tmp) node[at end, below right] {\textsize{#2}} |-($(#4.east) + (0,#6)$);
 }
+% vector
+\newcommand{\kVLinkHVHRight}[6][]{
+    \def\dxr{#1};
+    \ifx\dxr\empty
+    \def\dxr{0};
+    \else
+    \fi
+    \coordinate (tmplr) at ($(#3.east) + (0,#5)$);
+    \coordinate (tmp) at ($(#3.east) + (0,#5) + (0.33+\dxr,0)$);
+    \draw[-latex, \linecolor, veclinetype] (tmplr) -| (tmp) node[at end, below right] {\textsize{#2}} |-($(#4.east) + (0,#6)$);
+}
 \newcommand{\kLinkHVHLeft}[6][]{
     \def\dxl{#1};
     \ifx\dxl\empty
@@ -785,7 +2253,8 @@
     \coordinate (tmp) at ($(#3.west) + (0,#5) + (-0.33-\dxl,0)$);
     \draw[-latex, \linecolor, \linepathtype] (tmpll) -| (tmp) node[at end, above left] {\textsize{#2}} |- ($(#4.west) + (0,#6)$);
 }
-% Link Full Feedback/FeedForward Horizontal(Right or Left) Vertical(Up or Down)
+
+% Link Full Feedback/FeedForward Vertical(Up or Down) to Horizontal(Right or Left) to Vertical(Up or Down)
 %% Usage: {optional link shift}{unity link label}{from node}{to node}{from node direction shift}{to node direction shift}
 
 % Above
@@ -814,6 +2283,7 @@
 	\coordinate [label=\tiny{#2}] (tmp) at ($ (\xcr,\yca)  + (0,1cm-\dxb) $);
     \draw [-latex,\linecolor, \linepathtype] (tmpb) |- (tmp) -| ($(#4.north) + (#6,0)$);
 }
+
 % Below
 \newcommand{\kLinkVHHVBelow}[6][]{
     \def\dxb{#1};
@@ -842,6 +2312,62 @@
     \draw [-latex,\linecolor, \linepathtype] (tmpb) |- (tmp) -| ($(#4.south) + (#6,0)$);
 }
 
+% No directions
+% Above
+\newcommand{\kLinknVHHVAbove}[6][]{
+    \def\dxb{#1};
+    \ifx\dxb\empty
+    \def\dxb{0};
+    \else
+    \fi
+    \coordinate (tmpb) at ($(#3.north) + (#5,0)$);
+    \coordinate (tmpc) at ($(#4.north) + (#6,0)$);
+
+    \newdimen\xca;
+    \newdimen\yca;
+    \path (tmpb); \pgfgetlastxy{\xca}{\yca};
+    \newdimen\xcb;
+    \newdimen\ycb;
+    \path (tmpc); \pgfgetlastxy{\xcb}{\ycb};
+
+    \newdimen\xcr;
+
+    \tikzmath{
+        \xcr = 0.5 * (\xca+\xcb);
+    }
+
+	\coordinate [label=\tiny{#2}] (tmp) at ($ (\xcr,\yca)  + (0,1cm-\dxb) $);
+    \draw [\linecolor, \linepathtype] (tmpb) |- (tmp) -| ($(#4.north) + (#6,0)$);
+}
+
+% Below
+\newcommand{\kLinknVHHVBelow}[6][]{
+    \def\dxb{#1};
+
+    \ifx\dxb\empty
+    \def\dxb{0};
+    \else
+    \fi
+    \coordinate (tmpb) at ($(#3.south) + (#5,0)$);
+    \coordinate (tmpc) at ($(#4.south) + (#6,0)$);
+
+    \newdimen\xca;
+    \newdimen\yca;
+    \path (tmpb); \pgfgetlastxy{\xca}{\yca};
+    \newdimen\xcb;
+    \newdimen\ycb;
+    \path (tmpc); \pgfgetlastxy{\xcb}{\ycb};
+
+    \newdimen\xcr;
+
+    \tikzmath{
+        \xcr = 0.5 * (\xca+\xcb);
+    }
+
+	\coordinate [label=\tiny{#2}] (tmp) at ($ (\xcr,\yca)  + (0,-1cm-\dxb) $);
+    \draw [\linecolor, \linepathtype] (tmpb) |- (tmp) -| ($(#4.south) + (#6,0)$);
+}
+
 % Link  Feedback/FeedForward with a TF Block in between
 %% Usage: {signal label before tf}{signal label after tf}{from node}{tf node}{to node}{from node direction shift}{tf direction shift}{to node direction shift}
 \newcommand{\kLinkVHTFHVBelow}[8]{
@@ -896,9 +2422,13 @@
 }
 
 
-% Link Inputs Invisible Node
+% Link Inputs and Outputs Invisible Node
 %% Usage: [optional distance shift]{from node label}{to current node label}{in label}{direction}{direction shift}
 
+% Marked Link Inputs and Outputs Visible Node
+%% Usage: [optional distance shift]{from node label}{to current node label}{in label}{direction}{direction shift}{label position}
+
+% Inputs
 \newcommand{\kInRight}[5][]{
     \def\dxinr{#1};
     \ifx\dxinr\empty
@@ -905,8 +2435,15 @@
     \def\dxinr{0};
     \else
     \fi
+    
+	% to add to all
+	\def\dypos{#5};
+	\ifx\dypos\empty
+	\def\dypos{0};
+	\else
+	\fi
 
-    \coordinate (tmpn) at ($(#2.east) + (0,#5)$);
+	\coordinate (tmpn) at ($(#2.east) + (0,\dypos)$);
 
     \node[right of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3) {\color{\colortext}#4};
 
@@ -920,8 +2457,15 @@
     \else
     \fi
 
-    \coordinate (tmpn) at ($(#2.west) + (0,#5)$);
+    % to add to all
+    \def\dypos{#5};
+    \ifx\dypos\empty
+    \def\dypos{0};
+    \else
+    \fi
 
+    \coordinate (tmpn) at ($(#2.west) + (0,\dypos)$);
+
     \node[left of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3) {\color{\colortext}#4};
 
     \draw[-latex, \linecolor, \linepathtype] (#3)--(tmpn);
@@ -934,7 +2478,13 @@
     \else
     \fi
 
-    \coordinate (tmpn) at ($(#2.north) + (#5,0)$);
+	\def\dxpos{#5};
+	\ifx\dxpos\empty
+	\def\dxpos{0};
+	\else
+	\fi
+	
+	\coordinate (tmpn) at ($(#2.north) + (\dxpos,0)$);
 
     \node[above of= tmpn, node distance= 1.2cm + \dxina, font=\textsize] (#3) {\color{\colortext}#4};
 
@@ -942,22 +2492,231 @@
 }
 
 \newcommand{\kInDown}[5][]{
-    \def\dxinr{#1};
-    \ifx\dxinr\empty
-    \def\dxinr{0};
+    \def\dxina{#1};
+    \ifx\dxina\empty
+    \def\dxina{0};
     \else
     \fi
+    
+	\def\dxpos{#5};
+	\ifx\dxpos\empty
+	\def\dxpos{0};
+	\else
+	\fi
+	
+	\coordinate (tmpn) at ($(#2.south) + (\dxpos,0)$);
 
-    \coordinate (tmpn) at ($(#2.south) + (#5,0)$);
+    \node[below of= tmpn, node distance= 1.2cm + \dxina, font=\textsize] (#3) {\color{\colortext}#4};
 
-    \node[below of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3) {\color{\colortext}#4};
-
     \draw[-latex, \linecolor, \linepathtype] (#3)--(tmpn);
 }
 
+% Marked (visible node) Link Inputs
+\newcommand{\kInLeftM}[6][]{
+	\def\dxinr{#1};
+	\ifx\dxinr\empty
+	\def\dxinr{0};
+	\else
+	\fi
+	
+	% to add to all
+	\def\dypos{#5};
+	\ifx\dypos\empty
+	\def\dypos{0};
+	\else
+	\fi
+	
+	\coordinate (tmpn) at ($(#2.west) + (0,\dypos)$);
+	
+	\ifnum#6=0
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, left of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=above:\color{\colortext}{#4}] {};
+	\else
+	\ifnum#6=1	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, left of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=above left:\color{\colortext}{#4}] {};
+	\else
+	\ifnum#6=2	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, left of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=above right:\color{\colortext}{#4}] {};
+	%
+	\else
+	\ifnum#6=3		
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, left of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=below:\color{\colortext}{#4}] {};
+	\else
+	\ifnum#6=4	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, left of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=below left:\color{\colortext}{#4}] {};	
+	\else
+	\ifnum#6=5	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, left of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=below right:\color{\colortext}{#4}] {};	
+	%
+	\else
+	\ifnum#6=6	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, left of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=left:\color{\colortext}{#4}] {};
+	\else
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, left of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=above:\color{\colortext}{#4}] {};
+	\fi
+	\fi
+	\fi
+	\fi
+	\fi
+	\fi
+	\fi
+	%
+	\draw[-latex, \linecolor, \linepathtype] (#3) -- (tmpn);
+}
 
-% Link Outputs Invisible Node
-%% Usage: [optional distance shift]{from node label}{to current node label}{out signal label}{direction shift}
+\newcommand{\kInRightM}[6][]{
+	\def\dxinr{#1};
+	\ifx\dxinr\empty
+	\def\dxinr{0};
+	\else
+	\fi
+	
+	% to add to all
+	\def\dypos{#5};
+	\ifx\dypos\empty
+	\def\dypos{0};
+	\else
+	\fi
+	
+	\coordinate (tmpn) at ($(#2.east) + (0,\dypos)$);
+	
+	\ifnum#6=0
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, right of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=above:\color{\colortext}{#4}] {};
+	\else
+	\ifnum#6=1	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, right of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=above left:\color{\colortext}{#4}] {};
+	\else
+	\ifnum#6=2	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, right of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=above right:\color{\colortext}{#4}] {};
+	%
+	\else
+	\ifnum#6=3		
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, right of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=below:\color{\colortext}{#4}] {};
+	\else
+	\ifnum#6=4	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, right of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=below left:\color{\colortext}{#4}] {};	
+	\else
+	\ifnum#6=5	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, right of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=below right:\color{\colortext}{#4}] {};	
+	%
+	\else
+	\ifnum#6=6	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, right of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=left:\color{\colortext}{#4}] {};
+	\else
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, right of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=above:\color{\colortext}{#4}] {};
+	\fi
+	\fi
+	\fi
+	\fi
+	\fi
+	\fi
+	\fi
+	%
+	\draw[-latex, \linecolor, \linepathtype] (#3) -- (tmpn);
+}
+
+\newcommand{\kInUpM}[6][]{
+	\def\dxina{#1};
+	\ifx\dxina\empty
+	\def\dxina{0};
+	\else
+	\fi
+	
+	% to add to all
+	\def\dxpos{#5};
+	\ifx\dxpos\empty
+	\def\dxpos{0};
+	\else
+	\fi
+	
+	\coordinate (tmpn) at ($(#2.north) + (\dxpos,0)$);
+	
+	\ifnum#6=0
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, above of= tmpn, node distance= 1.2cm + \dxina, font=\textsize, label=above:\color{\colortext}{#4}] (#3) {};
+	\else
+	\ifnum#6=1	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, above of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=above left:\color{\colortext}{#4}] {};
+	\else
+	\ifnum#6=2	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, above of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=above right:\color{\colortext}{#4}] {};
+	%
+	\else
+	\ifnum#6=3		
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, above of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=below:\color{\colortext}{#4}] {};
+	\else
+	\ifnum#6=4	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, above of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=below left:\color{\colortext}{#4}] {};	
+	\else
+	\ifnum#6=5	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, above of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=below right:\color{\colortext}{#4}] {};	
+	%
+	\else
+	\ifnum#6=6	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, above of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=left:\color{\colortext}{#4}] {};
+	\else
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, above of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=above:\color{\colortext}{#4}] {};
+	\fi
+	\fi
+	\fi
+	\fi
+	\fi
+	\fi
+	\fi
+	%
+	\draw[-latex, \linecolor, \linepathtype] (#3) -- (tmpn);
+}
+
+\newcommand{\kInDownM}[6][]{
+	\def\dxina{#1};
+	\ifx\dxina\empty
+	\def\dxina{0};
+	\else
+	\fi
+	
+	% to add to all
+	\def\dxpos{#5};
+	\ifx\dxpos\empty
+	\def\dxpos{0};
+	\else
+	\fi
+	
+	\coordinate (tmpn) at ($(#2.south) + (\dxpos,0)$);
+	
+	\ifnum#6=0
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, below of= tmpn, node distance= 1.2cm + \dxina, font=\textsize] (#3)  [label=above:\color{\colortext}{#4}] {};
+	\else
+	\ifnum#6=1	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, below of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=above left:\color{\colortext}{#4}] {};
+	\else
+	\ifnum#6=2	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, below of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=above right:\color{\colortext}{#4}] {};
+	%
+	\else
+	\ifnum#6=3		
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, below of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=below:\color{\colortext}{#4}] {};
+	\else
+	\ifnum#6=4	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, below of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=below left:\color{\colortext}{#4}] {};	
+	\else
+	\ifnum#6=5	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, below of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=below right:\color{\colortext}{#4}] {};	
+	%
+	\else
+	\ifnum#6=6	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, below of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=left:\color{\colortext}{#4}] {};
+	\else
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, below of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=above:\color{\colortext}{#4}] {};
+	\fi
+	\fi
+	\fi
+	\fi
+	\fi
+	\fi
+	\fi
+	%
+	\draw[-latex, \linecolor, \linepathtype] (#3) -- (tmpn);
+}
+
+% Outputs
 \newcommand{\kOutRight}[5][]{
     \def\dxoutr{#1};
     \ifx\dxoutr\empty
@@ -1014,39 +2773,373 @@
     \draw[-latex, \linecolor, \linepathtype] (tmpo)--(#3);
 }
 
+
+% Marked (visible node) Link Outputs (Redundant): To Remove this
+\newcommand{\kOutLeftM}[6][]{
+	\def\dxinr{#1};
+	\ifx\dxinr\empty
+	\def\dxinr{0};
+	\else
+	\fi
+	
+	% to add to all
+	\def\dypos{#5};
+	\ifx\dypos\empty
+	\def\dypos{0};
+	\else
+	\fi
+	
+	\coordinate (tmpn) at ($(#2.west) + (0,\dypos)$);
+	
+	\ifnum#6=0
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, left of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=above:\color{\colortext}{#4}] {};
+	\else
+	\ifnum#6=1	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, left of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=above left:\color{\colortext}{#4}] {};
+	\else
+	\ifnum#6=2	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, left of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=above right:\color{\colortext}{#4}] {};
+	%
+	\else
+	\ifnum#6=3		
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, left of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=below:\color{\colortext}{#4}] {};
+	\else
+	\ifnum#6=4	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, left of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=below left:\color{\colortext}{#4}] {};	
+	\else
+	\ifnum#6=5	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, left of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=below right:\color{\colortext}{#4}] {};	
+	%
+	\else
+	\ifnum#6=6	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, left of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=left:\color{\colortext}{#4}] {};
+	\else
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, left of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=above:\color{\colortext}{#4}] {};
+	\fi
+	\fi
+	\fi
+	\fi
+	\fi
+	\fi
+	\fi
+	%
+	\draw[-latex, \linecolor, \linepathtype]  (tmpn) -- (#3);
+}
+
+\newcommand{\kOutRightM}[6][]{
+	\def\dxinr{#1};
+	\ifx\dxinr\empty
+	\def\dxinr{0};
+	\else
+	\fi
+	
+	% to add to all
+	\def\dypos{#5};
+	\ifx\dypos\empty
+	\def\dypos{0};
+	\else
+	\fi
+	
+	\coordinate (tmpn) at ($(#2.east) + (0,\dypos)$);
+	
+	\ifnum#6=0
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, right of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=above:\color{\colortext}{#4}] {};
+	\else
+	\ifnum#6=1	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, right of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=above left:\color{\colortext}{#4}] {};
+	\else
+	\ifnum#6=2	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, right of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=above right:\color{\colortext}{#4}] {};
+	%
+	\else
+	\ifnum#6=3		
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, right of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=below:\color{\colortext}{#4}] {};
+	\else
+	\ifnum#6=4	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, right of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=below left:\color{\colortext}{#4}] {};	
+	\else
+	\ifnum#6=5	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, right of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=below right:\color{\colortext}{#4}] {};	
+	%
+	\else
+	\ifnum#6=6	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, right of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=left:\color{\colortext}{#4}] {};
+	\else
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, right of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=above:\color{\colortext}{#4}] {};
+	\fi
+	\fi
+	\fi
+	\fi
+	\fi
+	\fi
+	\fi
+	%
+	\draw[-latex, \linecolor, \linepathtype]  (tmpn) -- (#3);
+}
+
+\newcommand{\kOutUpM}[6][]{
+	\def\dxina{#1};
+	\ifx\dxina\empty
+	\def\dxina{0};
+	\else
+	\fi
+	
+	% to add to all
+	\def\dxpos{#5};
+	\ifx\dxpos\empty
+	\def\dxpos{0};
+	\else
+	\fi
+	
+	\coordinate (tmpn) at ($(#2.north) + (\dxpos,0)$);
+	
+	\ifnum#6=0
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, above of= tmpn, node distance= 1.2cm + \dxina, font=\textsize] (#3)  [label=above:\color{\colortext}{#4}] {};
+	\else
+	\ifnum#6=1	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, above of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=above left:\color{\colortext}{#4}] {};
+	\else
+	\ifnum#6=2	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, above of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=above right:\color{\colortext}{#4}] {};
+	%
+	\else
+	\ifnum#6=3		
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, above of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=below:\color{\colortext}{#4}] {};
+	\else
+	\ifnum#6=4	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, above of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=below left:\color{\colortext}{#4}] {};	
+	\else
+	\ifnum#6=5	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, above of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=below right:\color{\colortext}{#4}] {};	
+	%
+	\else
+	\ifnum#6=6	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, above of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=left:\color{\colortext}{#4}] {};
+	\else
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, above of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=above:\color{\colortext}{#4}] {};
+	\fi
+	\fi
+	\fi
+	\fi
+	\fi
+	\fi
+	\fi
+	%
+	\draw[-latex, \linecolor, \linepathtype]  (tmpn) -- (#3);
+}
+
+\newcommand{\kOutDownM}[6][]{
+	\def\dxina{#1};
+	\ifx\dxina\empty
+	\def\dxina{0};
+	\else
+	\fi
+	
+	% to add to all
+	\def\dxpos{#5};
+	\ifx\dxpos\empty
+	\def\dxpos{0};
+	\else
+	\fi
+	
+	\coordinate (tmpn) at ($(#2.south) + (\dxpos,0)$);
+	
+	\ifnum#6=0
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, below of= tmpn, node distance= 1.2cm + \dxina, font=\textsize] (#3)  [label=above:\color{\colortext}{#4}] {};
+	\else
+	\ifnum#6=1	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, below of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=above left:\color{\colortext}{#4}] {};
+	\else
+	\ifnum#6=2	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, below of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=above right:\color{\colortext}{#4}] {};
+	%
+	\else
+	\ifnum#6=3		
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, below of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=below:\color{\colortext}{#4}] {};
+	\else
+	\ifnum#6=4	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, below of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=below left:\color{\colortext}{#4}] {};	
+	\else
+	\ifnum#6=5	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, below of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=below right:\color{\colortext}{#4}] {};	
+	%
+	\else
+	\ifnum#6=6	
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, below of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=left:\color{\colortext}{#4}] {};
+	\else
+	\node[fill=\linecolor, circle, inner sep=0pt, outer sep=0pt, minimum size=0.3em, below of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3)  [label=above:\color{\colortext}{#4}] {};
+	\fi
+	\fi
+	\fi
+	\fi
+	\fi
+	\fi
+	\fi
+	%
+	\draw[-latex, \linecolor, \linepathtype]  (tmpn) -- (#3);
+}
+
+
+
+
+
+%% Vector variants
+\newcommand{\kVecInRight}[5][]{
+    \def\dxinr{#1};
+    \ifx\dxinr\empty
+    \def\dxinr{0};
+    \else
+    \fi
+
+    \coordinate (tmpn) at ($(#2.east) + (0,#5)$);
+
+    \node[right of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3) {\color{\colortext}#4};
+
+    \draw[-latex, \linecolor, veclinetype] (#3)--(tmpn);
+}
+
+\newcommand{\kVecInLeft}[5][]{
+    \def\dxinr{#1};
+    \ifx\dxinr\empty
+    \def\dxinr{0};
+    \else
+    \fi
+
+    % to add to all
+    \def\dypos{#5};
+    \ifx\dypos\empty
+    \def\dypos{0};
+    \else
+    \fi
+
+    \coordinate (tmpn) at ($(#2.west) + (0,\dypos)$);
+
+    \node[left of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3) {\color{\colortext}#4};
+
+    \draw[-latex, \linecolor, veclinetype] (#3)--(tmpn);
+}
+
+\newcommand{\kVecInUp}[5][]{
+    \def\dxina{#1};
+    \ifx\dxina\empty
+    \def\dxina{0};
+    \else
+    \fi
+
+    \coordinate (tmpn) at ($(#2.north) + (#5,0)$);
+
+    \node[above of= tmpn, node distance= 1.2cm + \dxina, font=\textsize] (#3) {\color{\colortext}#4};
+
+    \draw[-latex, \linecolor, veclinetype] (#3)--(tmpn);
+}
+
+\newcommand{\kVecInDown}[5][]{
+    \def\dxinr{#1};
+    \ifx\dxinr\empty
+    \def\dxinr{0};
+    \else
+    \fi
+
+    \coordinate (tmpn) at ($(#2.south) + (#5,0)$);
+
+    \node[below of= tmpn, node distance= 1.2cm + \dxinr, font=\textsize] (#3) {\color{\colortext}#4};
+
+    \draw[-latex, \linecolor, veclinetype] (#3)--(tmpn);
+}
+
+
+% Link Outputs Invisible Node
+%% Usage: [optional distance shift]{from node label}{to current node label}{out signal label}{direction shift}
+\newcommand{\kVecOutRight}[5][]{
+    \def\dxoutr{#1};
+    \ifx\dxoutr\empty
+    \def\dxoutr{0};
+    \else
+    \fi
+
+    \coordinate (tmpo) at ($(#2.east) + (0,#5)$);
+
+    \node[right of= tmpo, node distance= 1.2cm + \dxoutr, font=\textsize] (#3) {\color{\colortext}#4};
+
+    \draw[-latex, \linecolor, veclinetype] (tmpo)--(#3);
+}
+
+\newcommand{\kVecOutLeft}[5][]{
+    \def\dxoutr{#1};
+    \ifx\dxoutr\empty
+    \def\dxoutr{0};
+    \else
+    \fi
+
+    \coordinate (tmpo) at ($(#2.west) + (0,#5)$);
+
+    \node[left of= tmpo, node distance= 1.2cm + \dxoutr, font=\textsize] (#3) {\color{\colortext}#4};
+
+    \draw[-latex, \linecolor, veclinetype] (tmpo)--(#3);
+}
+
+\newcommand{\kVecOutUp}[5][]{
+    \def\dxoutr{#1};
+    \ifx\dxoutr\empty
+    \def\dxoutr{0};
+    \else
+    \fi
+
+    \coordinate (tmpo) at ($(#2.north) + (#5,0)$);
+
+    \node[above of= tmpo, node distance= 1.2cm + \dxoutr, font=\textsize] (#3) {\color{\colortext}#4};
+
+    \draw[-latex, \linecolor, veclinetype] (tmpo)--(#3);
+}
+
+\newcommand{\kVecOutDown}[5][]{
+    \def\dxoutr{#1};
+    \ifx\dxoutr\empty
+    \def\dxoutr{0};
+    \else
+    \fi
+
+    \coordinate (tmpo) at ($(#2.south) + (#5,0)$);
+
+    \node[below of= tmpo, node distance= 1.2cm + \dxoutr, font=\textsize] (#3) {\color{\colortext}#4};
+
+    \draw[-latex, \linecolor, veclinetype] (tmpo)--(#3);
+}
+
+
 % ----------------------------------------------------------------------------------------
 
 % SIGNAL FLOW GRAPHS
 
-\newcommand{\sfgStart}[3]{
+\newcommand{\ksfgStart}[3]{
 	\node[draw,circle,fill=\linecolor,inner sep=0pt, outer sep=0pt, minimum size=0.5em,
 	node distance= \horizdist,label=below:\color{\colortext}\textsize{#3}] (#1) at #2 {};
 }
 
-\newcommand{\sfgNStart}[3]{
+\newcommand{\ksfgNStart}[3]{
 	\node[draw,circle,fill=\linecolor,inner sep=0pt, outer sep=0pt, minimum size=0.5em,
 	node distance= \horizdist,label=below:\color{\colortext}\textsize{#3}] (#1) at #2 {};
 }
 
-\newcommand{\sfgNodeR}[5][]{
+\newcommand{\ksfgNodeR}[5][]{
     \node[fill=\linecolor,circle,inner sep=0pt, outer sep=0pt, minimum size=.5em,
 	right of = #2, node distance= \sfghorizdist,label=#5:\color{\colortext}\textsize{#4}] (#3) {};
     \draw [\linecolor, \linepathtype, midarrow] (#2)-- node[auto,above] {\textsize{#1}} (#3);
 }
 
-\newcommand{\sfgNodeL}[5][]{
+\newcommand{\ksfgNodeL}[5][]{
     \node[fill=\linecolor,circle,inner sep=0pt, outer sep=0pt, minimum size=.5em,
 	left of = #2, node distance= \sfghorizdist,label=#5:\color{\colortext}\textsize{#4}] (#3) {};
     \draw [\linecolor, \linepathtype, midarrow] (#2)-- node[auto,above] {\textsize{#1}} (#3);
 }
 
-\newcommand{\sfgNodeU}[5][]{
+\newcommand{\ksfgNodeU}[5][]{
     \node[fill=\linecolor,circle,inner sep=0pt, outer sep=0pt, minimum size=.5em,
 	above of = #2, node distance= \sfghorizdist,label=#5:\color{\colortext}\textsize{#4}] (#3) {};
     \draw [\linecolor, \linepathtype, midarrow] (#2)-- node[auto,above] {\textsize{#1}} (#3);
 }
 
-\newcommand{\sfgNodeD}[5][]{
+\newcommand{\ksfgNodeD}[5][]{
     \node[fill=\linecolor,circle,inner sep=0pt, outer sep=0pt, minimum size=.5em,
 	below of = #2, node distance= \sfghorizdist,label=#5:\color{\colortext}\textsize{#4}] (#3) {};
     \draw [\linecolor, \linepathtype, midarrow] (#2)-- node[auto,above] {\textsize{#1}} (#3);
@@ -1053,30 +3146,30 @@
 }
 
 
-\newcommand{\sfgLinkSelfR}[2][]{
+\newcommand{\ksfgLinkSelfR}[2][]{
 	\draw[\linecolor, \linepathtype, midarrow,looseness=50]
 	(#2) to [out=45,in=-45] node[right] {\textsize{#1}} (#2);
 }
 
-\newcommand{\sfgLinkSelfL}[2][]{
+\newcommand{\ksfgLinkSelfL}[2][]{
 	\draw[\linecolor, \linepathtype, midarrow,looseness=50]
 	(#2) to [out=-135,in=-135] node[left] {\textsize{#1}} (#2);
 }
 
-\newcommand{\sfgLinkSelfU}[2][]{
+\newcommand{\ksfgLinkSelfU}[2][]{
 	\draw[\linecolor, \linepathtype, midarrow,looseness=50]
 	(#2) to [in=45,out=135] node[above] {\textsize{#1}} (#2);
 }
 
-\newcommand{\sfgLinkSelfD}[2][]{
+\newcommand{\ksfgLinkSelfD}[2][]{
 	\draw[\linecolor, \linepathtype, midarrow,looseness=50]
 	(#2) to [in=225,out=315] node[below] {\textsize{#1}} (#2);
 }
 
-\newcommand{\sfgCLinkFlip}[4][]{
+\newcommand{\ksfgCLinkFlip}[4][]{
 	\draw[midarrow, bend right=60] (#2) to node[#4] {\textsize{#1}} (#3);
 }
-\newcommand{\sfgCLink}[4][]{
+\newcommand{\ksfgCLink}[4][]{
 	\draw[midarrow, bend left=60] (#2) to node[#4] {\textsize{#1}} (#3);
 }
 %% node label positioning: at start near start midway near end at end, above below, sloped



More information about the tex-live-commits mailing list.