Update on Overleaf.

This commit is contained in:
2024-06-21 09:01:23 +00:00
committed by node
parent 6c6bcf0319
commit fa768c2305
11 changed files with 626 additions and 80275 deletions

369
blocks.tex Normal file
View File

@@ -0,0 +1,369 @@
\usetikzlibrary{shapes.multipart}
\usetikzlibrary {shapes.geometric}
\tikzset{inport/.style={
draw=black, minimum width=0.1cm, minimum height=0.1cm, anchor=north, outer sep=0, inner sep=2.75
}}
\tikzset{outport/.style={
draw=black, fill=black, minimum width=0.1cm, minimum height=0.1cm, anchor=south, outer sep=0, inner sep=2.75
}}
\makeatletter
\pgfdeclareshape{coverage}{
% Minimum required anchors:
\savedanchor{\northeast}{
\pgf@y=1cm
\pgf@x=1.5cm
}
\savedanchor{\southwest}{
\pgf@y=-\pgf@y
\pgf@x=-\pgf@x
}
% Special Anchors, that can be calculated from the others (lazy calculation)
\anchor{south west} {\southwest}
\anchor{north east} {\northeast}
\anchor{north west} {\northeast \pgf@y=\pgf@y \pgf@x=-\pgf@x}
\anchor{south east} {\southwest \pgf@y=\pgf@y \pgf@x=-\pgf@x}
\anchor{west} {\southwest \pgf@y=0cm \pgf@x=\pgf@x}
\anchor{east} {\northeast \pgf@y=0cm \pgf@x=\pgf@x}
\anchor{north} {\northeast \pgf@y=\pgf@y \pgf@x=0cm}
\anchor{south} {\southwest \pgf@y=\pgf@y \pgf@x=0cm}
\anchor{center} {\pgfpointorigin}
\anchor{out 2} {\northeast \pgfpoint{0.5\pgf@x}{\pgf@y+0.2cm}}
\anchor{out 1} {\northeast \pgf@y=\pgf@y \pgf@x=-\pgf@x \pgfpoint{0.5\pgf@x}{\pgf@y+0.2cm}}
\anchor{in} {\southwest \pgf@y=\pgf@y \pgf@x=0cm \pgfpoint{0.5\pgf@x}{\pgf@y-0.2cm}}
\anchor{text} {\pgfpoint{-.5\wd\pgfnodeparttextbox}{-.5\ht\pgfnodeparttextbox+0.5cm}}
\backgroundpath{
\pgfsetstrokecolor{black}
\pgfsetfillcolor{black}
\pgfsetarrowsstart{}
\pgfsetarrowsend{}
% Construct main path
\northeast \pgf@xb=\pgf@x \pgf@yb=\pgf@y
\southwest \pgf@xa=\pgf@x \pgf@ya=\pgf@y
\pgfpathmoveto{\pgfpoint{\pgf@xa}{\pgf@ya}}
\pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@yb}}
\pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@yb}}
\pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@ya}}
\pgfpathclose
\pgfusepath{stroke}
% construct middle line:
\southwest \pgf@ya=0cm \pgf@xa=\pgf@x
\northeast \pgf@yb=0cm \pgf@xb=\pgf@x
\pgfpathmoveto{\pgfpoint{\pgf@xa}{\pgf@ya}}
\pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@yb}}
\pgfusepath{stroke}
% Coverage lable:
\southwest \pgf@ya=0.5\pgf@y \pgf@xa=0cm
\pgftext[at=\pgfpoint{\pgf@xa}{\pgf@ya}]{\bf Coverage}
\pgfusepath{stroke}
% Construct Output1:
\northeast \pgf@ya=\pgf@y \pgf@xa=0.5\pgf@x
\southwest \pgf@yb=\pgf@y \pgf@xb=0.5\pgf@x
\pgfpathmoveto{\pgfpoint{\pgf@xb+0.1cm}{\pgf@ya}}
\pgfpathlineto{\pgfpoint{\pgf@xb+0.1cm}{\pgf@ya+0.2cm}}
\pgfpathlineto{\pgfpoint{\pgf@xb-0.1cm}{\pgf@ya+0.2cm}}
\pgfpathlineto{\pgfpoint{\pgf@xb-0.1cm}{\pgf@ya}}
\pgfpathclose
\pgfusepath{stroke, fill}
% Construct Output2:
\northeast \pgf@ya=\pgf@y \pgf@xa=0.5\pgf@x
\pgfpathmoveto{\pgfpoint{\pgf@xa+0.1cm}{\pgf@ya}}
\pgfpathlineto{\pgfpoint{\pgf@xa+0.1cm}{\pgf@ya+0.2cm}}
\pgfpathlineto{\pgfpoint{\pgf@xa-0.1cm}{\pgf@ya+0.2cm}}
\pgfpathlineto{\pgfpoint{\pgf@xa-0.1cm}{\pgf@ya}}
\pgfpathclose
\pgfusepath{stroke, fill}
% Construct Input1:
\southwest \pgf@ya=\pgf@y \pgf@xa=0cm
\pgfpathmoveto{\pgfpoint{\pgf@xa+0.1cm}{\pgf@ya}}
\pgfpathlineto{\pgfpoint{\pgf@xa+0.1cm}{\pgf@ya-0.2cm}}
\pgfpathlineto{\pgfpoint{\pgf@xa-0.1cm}{\pgf@ya-0.2cm}}
\pgfpathlineto{\pgfpoint{\pgf@xa-0.1cm}{\pgf@ya}}
\pgfpathclose
\pgfusepath{stroke}
}
}
%%%%%%%%%%%%%%%%%%%%%%
\pgfkeys{/tikz/split1 top/.initial = 50\%}
\pgfdeclareshape{split1}{%
% Minimum required anchors:
\savedanchor{\northeast}{
\pgf@y=1cm
\pgf@x=0.75cm
}
\savedanchor{\southwest}{
\pgf@y=-\pgf@y
\pgf@x=-\pgf@x
}
% Special Anchors, that can be calculated from the others (lazy calculation)
\anchor{south west} {\southwest}
\anchor{north east} {\northeast}
\anchor{north west} {\northeast \pgf@y=\pgf@y \pgf@x=-\pgf@x}
\anchor{south east} {\southwest \pgf@y=\pgf@y \pgf@x=-\pgf@x}
\anchor{west} {\southwest \pgf@y=0cm \pgf@x=\pgf@x}
\anchor{east} {\northeast \pgf@y=0cm \pgf@x=\pgf@x}
\anchor{north} {\northeast \pgf@y=\pgf@y \pgf@x=0cm}
\anchor{south} {\southwest \pgf@y=\pgf@y \pgf@x=0cm}
\anchor{center} {\pgfpointorigin}
\anchor{out 1} {\northeast \pgf@y=\pgf@y \pgf@x=-\pgf@x \pgfpoint{0.0\pgf@x}{\pgf@y+0.2cm}}
\anchor{in} {\southwest \pgf@y=\pgf@y \pgf@x=0cm \pgfpoint{0.5\pgf@x}{\pgf@y-0.2cm}}
\anchor{text} {\pgfpoint{-.5\wd\pgfnodeparttextbox}{-.5\ht\pgfnodeparttextbox+0.5cm}}
\backgroundpath{
\pgfsetfillcolor{black}
\pgfsetstrokecolor{black}
\pgfsetarrowsstart{}
\pgfsetarrowsend{}
% Construct main path
\northeast \pgf@xb=\pgf@x \pgf@yb=\pgf@y
\southwest \pgf@xa=\pgf@x \pgf@ya=\pgf@y
\pgfpathmoveto{\pgfpoint{\pgf@xa}{\pgf@ya}}
\pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@yb}}
\pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@yb}}
\pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@ya}}
\pgfpathclose
\pgfusepath{stroke}
% Construct middle line:
\southwest \pgf@ya=0cm \pgf@xa=\pgf@x
\northeast \pgf@yb=0cm \pgf@xb=\pgf@x
\pgfpathmoveto{\pgfpoint{\pgf@xa}{\pgf@ya}}
\pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@yb}}
% Coverage lable:
\southwest \pgf@ya=0.5\pgf@y \pgf@xa=0cm
\pgftext[at=\pgfpoint{\pgf@xa}{\pgf@ya}]{\bf Split}
\pgfusepath{stroke}
% Left lable:
\northeast \pgf@ya=0.5\pgf@y \pgf@xa=0cm
\pgftext[at=\pgfpoint{\pgf@xa}{\pgf@ya}]{\pgfkeysvalueof{/tikz/split1 top}}
\pgfusepath{stroke}
% Construct Output1:
\northeast \pgf@ya=\pgf@y \pgf@xa=1.0\pgf@x
\southwest \pgf@yb=\pgf@y \pgf@xb=0.0\pgf@x
\pgfpathmoveto{\pgfpoint{\pgf@xb+0.1cm}{\pgf@ya}}
\pgfpathlineto{\pgfpoint{\pgf@xb+0.1cm}{\pgf@ya+0.2cm}}
\pgfpathlineto{\pgfpoint{\pgf@xb-0.1cm}{\pgf@ya+0.2cm}}
\pgfpathlineto{\pgfpoint{\pgf@xb-0.1cm}{\pgf@ya}}
\pgfpathclose
\pgfusepath{stroke, fill}
% Construct Input1:
\southwest \pgf@ya=\pgf@y \pgf@xa=0cm
\pgfpathmoveto{\pgfpoint{\pgf@xa+0.1cm}{\pgf@ya}}
\pgfpathlineto{\pgfpoint{\pgf@xa+0.1cm}{\pgf@ya-0.2cm}}
\pgfpathlineto{\pgfpoint{\pgf@xa-0.1cm}{\pgf@ya-0.2cm}}
\pgfpathlineto{\pgfpoint{\pgf@xa-0.1cm}{\pgf@ya}}
\pgfpathclose
\pgfusepath{stroke}
}
}
\pgfkeys{/tikz/split2 left/.initial = 50\%}
\pgfkeys{/tikz/split2 right/.initial = 50\%}
\pgfdeclareshape{split2}{%
% Minimum required anchors:
\savedanchor{\northeast}{
\pgf@y=1cm
\pgf@x=1.5cm
}
\savedanchor{\southwest}{
\pgf@y=-\pgf@y
\pgf@x=-\pgf@x
}
% Special Anchors, that can be calculated from the others (lazy calculation)
\anchor{south west} {\southwest}
\anchor{north east} {\northeast}
\anchor{north west} {\northeast \pgf@y=\pgf@y \pgf@x=-\pgf@x}
\anchor{south east} {\southwest \pgf@y=\pgf@y \pgf@x=-\pgf@x}
\anchor{west} {\southwest \pgf@y=0cm \pgf@x=\pgf@x}
\anchor{east} {\northeast \pgf@y=0cm \pgf@x=\pgf@x}
\anchor{north} {\northeast \pgf@y=\pgf@y \pgf@x=0cm}
\anchor{south} {\southwest \pgf@y=\pgf@y \pgf@x=0cm}
\anchor{center} {\pgfpointorigin}
\anchor{out 2} {\northeast \pgfpoint{0.5\pgf@x}{\pgf@y+0.2cm}}
\anchor{out 1} {\northeast \pgf@y=\pgf@y \pgf@x=-\pgf@x \pgfpoint{0.5\pgf@x}{\pgf@y+0.2cm}}
\anchor{in} {\southwest \pgf@y=\pgf@y \pgf@x=0cm \pgfpoint{0.5\pgf@x}{\pgf@y-0.2cm}}
\anchor{text} {\pgfpoint{-.5\wd\pgfnodeparttextbox}{-.5\ht\pgfnodeparttextbox+0.5cm}}
\backgroundpath{
\pgfsetfillcolor{black}
\pgfsetstrokecolor{black}
\pgfsetarrowsstart{}
\pgfsetarrowsend{}
% Construct main path
\northeast \pgf@xb=\pgf@x \pgf@yb=\pgf@y
\southwest \pgf@xa=\pgf@x \pgf@ya=\pgf@y
\pgfpathmoveto{\pgfpoint{\pgf@xa}{\pgf@ya}}
\pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@yb}}
\pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@yb}}
\pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@ya}}
\pgfpathclose
\pgfusepath{stroke}
% Construct middle line:
\southwest \pgf@ya=0cm \pgf@xa=\pgf@x
\northeast \pgf@yb=0cm \pgf@xb=\pgf@x
\pgfpathmoveto{\pgfpoint{\pgf@xa}{\pgf@ya}}
\pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@yb}}
% Vertical Middle Line:
\northeast \pgf@yb=\pgf@y \pgf@xb=\pgf@x
\pgfpathmoveto{\pgfpoint{0cm}{0cm}}
\pgfpathlineto{\pgfpoint{0cm}{\pgf@yb}}
\pgfusepath{stroke}
% Coverage lable:
\southwest \pgf@ya=0.5\pgf@y \pgf@xa=0cm
\pgftext[at=\pgfpoint{\pgf@xa}{\pgf@ya}]{\bf Split}
\pgfusepath{stroke}
% Left lable:
\northeast \pgf@ya=0.5\pgf@y \pgf@xa=-0.5\pgf@x
\pgftext[at=\pgfpoint{\pgf@xa}{\pgf@ya}]{\pgfkeysvalueof{/tikz/split2 left}}
\pgfusepath{stroke}
% Right lable:
\northeast \pgf@ya=0.5\pgf@y \pgf@xa=0.5\pgf@x
\pgftext[at=\pgfpoint{\pgf@xa}{\pgf@ya}]{\pgfkeysvalueof{/tikz/split2 right}}
\pgfusepath{stroke}
% Construct Output1:
\northeast \pgf@ya=\pgf@y \pgf@xa=0.5\pgf@x
\southwest \pgf@yb=\pgf@y \pgf@xb=0.5\pgf@x
\pgfpathmoveto{\pgfpoint{\pgf@xb+0.1cm}{\pgf@ya}}
\pgfpathlineto{\pgfpoint{\pgf@xb+0.1cm}{\pgf@ya+0.2cm}}
\pgfpathlineto{\pgfpoint{\pgf@xb-0.1cm}{\pgf@ya+0.2cm}}
\pgfpathlineto{\pgfpoint{\pgf@xb-0.1cm}{\pgf@ya}}
\pgfpathclose
\pgfusepath{stroke, fill}
% Construct Output2:
\northeast \pgf@ya=\pgf@y \pgf@xa=0.5\pgf@x
\pgfpathmoveto{\pgfpoint{\pgf@xa+0.1cm}{\pgf@ya}}
\pgfpathlineto{\pgfpoint{\pgf@xa+0.1cm}{\pgf@ya+0.2cm}}
\pgfpathlineto{\pgfpoint{\pgf@xa-0.1cm}{\pgf@ya+0.2cm}}
\pgfpathlineto{\pgfpoint{\pgf@xa-0.1cm}{\pgf@ya}}
\pgfpathclose
\pgfusepath{stroke, fill}
% Construct Input1:
\southwest \pgf@ya=\pgf@y \pgf@xa=0cm
\pgfpathmoveto{\pgfpoint{\pgf@xa+0.1cm}{\pgf@ya}}
\pgfpathlineto{\pgfpoint{\pgf@xa+0.1cm}{\pgf@ya-0.2cm}}
\pgfpathlineto{\pgfpoint{\pgf@xa-0.1cm}{\pgf@ya-0.2cm}}
\pgfpathlineto{\pgfpoint{\pgf@xa-0.1cm}{\pgf@ya}}
\pgfpathclose
\pgfusepath{stroke}
}
}
\pgfkeys{/tikz/split3 left/.initial = 50\%}
\pgfkeys{/tikz/split3 middle/.initial = 50\%}
\pgfkeys{/tikz/split3 right/.initial = 50\%}
\pgfdeclareshape{split3}{%
% Minimum required anchors:
\savedanchor{\northeast}{
\pgf@y=1cm
\pgf@x=1.5cm
}
\savedanchor{\southwest}{
\pgf@y=-\pgf@y
\pgf@x=-\pgf@x
}
% Special Anchors, that can be calculated from the others (lazy calculation)
\anchor{south west} {\southwest}
\anchor{north east} {\northeast}
\anchor{north west} {\northeast \pgf@y=\pgf@y \pgf@x=-\pgf@x}
\anchor{south east} {\southwest \pgf@y=\pgf@y \pgf@x=-\pgf@x}
\anchor{west} {\southwest \pgf@y=0cm \pgf@x=\pgf@x}
\anchor{east} {\northeast \pgf@y=0cm \pgf@x=\pgf@x}
\anchor{north} {\northeast \pgf@y=\pgf@y \pgf@x=0cm}
\anchor{south} {\southwest \pgf@y=\pgf@y \pgf@x=0cm}
\anchor{center} {\pgfpointorigin}
\anchor{out 1} {\northeast \pgf@y=\pgf@y \pgf@x=-\pgf@x \pgfpoint{0.666\pgf@x}{\pgf@y+0.2cm}}
\anchor{out 2} {\northeast \pgfpoint{0.0\pgf@x}{\pgf@y+0.2cm}}
\anchor{out 3} {\northeast \pgfpoint{0.666\pgf@x}{\pgf@y+0.2cm}}
\anchor{in} {\southwest \pgf@y=\pgf@y \pgf@x=0cm \pgfpoint{0.5\pgf@x}{\pgf@y-0.2cm}}
\anchor{text} {\pgfpoint{-.5\wd\pgfnodeparttextbox}{-.5\ht\pgfnodeparttextbox+0.5cm}}
\backgroundpath{
\pgfsetfillcolor{black}
\pgfsetstrokecolor{black}
\pgfsetarrowsstart{}
\pgfsetarrowsend{}
% Construct main path
\northeast \pgf@xb=\pgf@x \pgf@yb=\pgf@y
\southwest \pgf@xa=\pgf@x \pgf@ya=\pgf@y
\pgfpathmoveto{\pgfpoint{\pgf@xa}{\pgf@ya}}
\pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@yb}}
\pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@yb}}
\pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@ya}}
\pgfpathclose
\pgfusepath{stroke}
% Construct middle line:
\southwest \pgf@ya=0cm \pgf@xa=\pgf@x
\northeast \pgf@yb=0cm \pgf@xb=\pgf@x
\pgfpathmoveto{\pgfpoint{\pgf@xa}{\pgf@ya}}
\pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@yb}}
% Vertical Middle Lines:
\southwest \pgf@ya=0cm \pgf@xa=\pgf@x
\northeast \pgf@yb=\pgf@y \pgf@xb=\pgf@x
\pgfpathmoveto{\pgfpoint{\pgf@xa+1cm}{0cm}}
\pgfpathlineto{\pgfpoint{\pgf@xa+1cm}{\pgf@yb}}
\pgfusepath{stroke}
%
\northeast \pgf@ya=\pgf@y \pgf@xa=\pgf@x
\southwest \pgf@yb=\pgf@y \pgf@xb=\pgf@x
\pgfpathmoveto{\pgfpoint{\pgf@xa-1cm}{0cm}}
\pgfpathlineto{\pgfpoint{\pgf@xa-1cm}{\pgf@ya}}
\pgfusepath{stroke}
% Coverage lable:
\southwest \pgf@ya=0.5\pgf@y \pgf@xa=0cm
\pgftext[at=\pgfpoint{\pgf@xa}{\pgf@ya}]{\bf Split}
\pgfusepath{stroke}
% Left lable:
\northeast \pgf@ya=0.5\pgf@y \pgf@xa=-0.666\pgf@x
\pgftext[at=\pgfpoint{\pgf@xa}{\pgf@ya}]{\pgfkeysvalueof{/tikz/split3 left}}
\pgfusepath{stroke}
% Middle lable:
\northeast \pgf@ya=0.5\pgf@y \pgf@xa=0.000\pgf@x
\pgftext[at=\pgfpoint{\pgf@xa}{\pgf@ya}]{\pgfkeysvalueof{/tikz/split3 middle}}
\pgfusepath{stroke}
% Right lable:
\northeast \pgf@ya=0.5\pgf@y \pgf@xa=0.666\pgf@x
\pgftext[at=\pgfpoint{\pgf@xa}{\pgf@ya}]{\pgfkeysvalueof{/tikz/split3 right}}
\pgfusepath{stroke}
% Construct Output1:
\northeast \pgf@ya=\pgf@y \pgf@xa=0.666\pgf@x
\southwest \pgf@yb=\pgf@y \pgf@xb=0.666\pgf@x
\pgfpathmoveto{\pgfpoint{\pgf@xb+0.1cm}{\pgf@ya}}
\pgfpathlineto{\pgfpoint{\pgf@xb+0.1cm}{\pgf@ya+0.2cm}}
\pgfpathlineto{\pgfpoint{\pgf@xb-0.1cm}{\pgf@ya+0.2cm}}
\pgfpathlineto{\pgfpoint{\pgf@xb-0.1cm}{\pgf@ya}}
\pgfpathclose
\pgfusepath{stroke, fill}
% Construct Output2:
\northeast \pgf@ya=\pgf@y \pgf@xa=0.0\pgf@x
\southwest \pgf@yb=\pgf@y \pgf@xb=0.0\pgf@x
\pgfpathmoveto{\pgfpoint{\pgf@xb+0.1cm}{\pgf@ya}}
\pgfpathlineto{\pgfpoint{\pgf@xb+0.1cm}{\pgf@ya+0.2cm}}
\pgfpathlineto{\pgfpoint{\pgf@xb-0.1cm}{\pgf@ya+0.2cm}}
\pgfpathlineto{\pgfpoint{\pgf@xb-0.1cm}{\pgf@ya}}
\pgfpathclose
\pgfusepath{stroke, fill}
% Construct Output3:
\northeast \pgf@ya=\pgf@y \pgf@xa=0.666\pgf@x
\pgfpathmoveto{\pgfpoint{\pgf@xa+0.1cm}{\pgf@ya}}
\pgfpathlineto{\pgfpoint{\pgf@xa+0.1cm}{\pgf@ya+0.2cm}}
\pgfpathlineto{\pgfpoint{\pgf@xa-0.1cm}{\pgf@ya+0.2cm}}
\pgfpathlineto{\pgfpoint{\pgf@xa-0.1cm}{\pgf@ya}}
\pgfpathclose
\pgfusepath{stroke, fill}
% Construct Input1:
\southwest \pgf@ya=\pgf@y \pgf@xa=0cm
\pgfpathmoveto{\pgfpoint{\pgf@xa+0.1cm}{\pgf@ya}}
\pgfpathlineto{\pgfpoint{\pgf@xa+0.1cm}{\pgf@ya-0.2cm}}
\pgfpathlineto{\pgfpoint{\pgf@xa-0.1cm}{\pgf@ya-0.2cm}}
\pgfpathlineto{\pgfpoint{\pgf@xa-0.1cm}{\pgf@ya}}
\pgfpathclose
\pgfusepath{stroke}
}
}
\makeatother