summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/tikz-bayesnet/tikzlibrarybayesnet.code.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/latex/tikz-bayesnet/tikzlibrarybayesnet.code.tex')
-rw-r--r--Master/texmf-dist/doc/latex/tikz-bayesnet/tikzlibrarybayesnet.code.tex140
1 files changed, 140 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/tikz-bayesnet/tikzlibrarybayesnet.code.tex b/Master/texmf-dist/doc/latex/tikz-bayesnet/tikzlibrarybayesnet.code.tex
new file mode 100644
index 00000000000..4253532c9f2
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/tikz-bayesnet/tikzlibrarybayesnet.code.tex
@@ -0,0 +1,140 @@
+% tikzlibrary.code.tex
+%
+% Copyright 2010-2011 by Laura Dietz
+% Copyright 2012 by Jaakko Luttinen
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU General Public License.
+%
+% See the files LICENSE_LPPL and LICENSE_GPL for more details.
+
+% Load other libraries
+\usetikzlibrary{shapes}
+\usetikzlibrary{fit}
+\usetikzlibrary{chains}
+\usetikzlibrary{arrows}
+
+% Latent node
+\tikzstyle{latent} = [circle,fill=white,draw=black,inner sep=1pt,
+minimum size=20pt, font=\fontsize{10}{10}\selectfont, node distance=1]
+% Observed node
+\tikzstyle{obs} = [latent,fill=gray!25]
+% Constant node
+\tikzstyle{const} = [rectangle, inner sep=0pt, node distance=1]
+% Factor node
+\tikzstyle{factor} = [rectangle, fill=black,minimum size=5pt, inner
+sep=0pt, node distance=0.4]
+% Deterministic node
+\tikzstyle{det} = [latent, diamond]
+
+% Plate node
+\tikzstyle{plate} = [draw, rectangle, rounded corners, fit=#1]
+% Invisible wrapper node
+\tikzstyle{wrap} = [inner sep=0pt, fit=#1]
+% Gate
+\tikzstyle{gate} = [draw, rectangle, dashed, fit=#1]
+
+% Caption node
+\tikzstyle{caption} = [font=\footnotesize, node distance=0] %
+\tikzstyle{plate caption} = [caption, node distance=0, inner sep=0pt,
+below left=5pt and 0pt of #1.south east] %
+\tikzstyle{factor caption} = [caption] %
+\tikzstyle{every label} += [caption] %
+
+\tikzset{>={triangle 45}}
+
+%\pgfdeclarelayer{b}
+%\pgfdeclarelayer{f}
+%\pgfsetlayers{b,main,f}
+
+% \factoredge [options] {inputs} {factors} {outputs}
+\newcommand{\factoredge}[4][]{ %
+ % Connect all nodes #2 to all nodes #4 via all factors #3.
+ \foreach \f in {#3} { %
+ \foreach \x in {#2} { %
+ \draw[-,#1] (\x) edge[-] (\f) ; %
+ } ;
+ \foreach \y in {#4} { %
+ \draw[->,#1] (\f) -- (\y) ; %
+ } ;
+ } ;
+}
+
+% \edge [options] {inputs} {outputs}
+\newcommand{\edge}[3][]{ %
+ % Connect all nodes #2 to all nodes #3.
+ \foreach \x in {#2} { %
+ \foreach \y in {#3} { %
+ \draw[->,#1] (\x) -- (\y) ;%
+ } ;
+ } ;
+}
+
+% \factor [options] {name} {caption} {inputs} {outputs}
+\newcommand{\factor}[5][]{ %
+ % Draw the factor node. Use alias to allow empty names.
+ \node[factor, label={[name=#2-caption]#3}, name=#2, #1,
+ alias=#2-alias] {} ; %
+ % Connect all inputs to outputs via this factor
+ \factoredge {#4} {#2-alias} {#5} ; %
+}
+
+% \plate [options] {name} {fitlist} {caption}
+\newcommand{\plate}[4][]{ %
+ \node[wrap=#3] (#2-wrap) {}; %
+ \node[plate caption=#2-wrap] (#2-caption) {#4}; %
+ \node[plate=(#2-wrap)(#2-caption), #1] (#2) {}; %
+}
+
+% \gate [options] {name} {fitlist} {inputs}
+\newcommand{\gate}[4][]{ %
+ \node[gate=#3, name=#2, #1, alias=#2-alias] {}; %
+ \foreach \x in {#4} { %
+ \draw [-*,thick] (\x) -- (#2-alias); %
+ } ;%
+}
+
+% \vgate {name} {fitlist-left} {caption-left} {fitlist-right}
+% {caption-right} {inputs}
+\newcommand{\vgate}[6]{ %
+ % Wrap the left and right parts
+ \node[wrap=#2] (#1-left) {}; %
+ \node[wrap=#4] (#1-right) {}; %
+ % Draw the gate
+ \node[gate=(#1-left)(#1-right)] (#1) {}; %
+ % Add captions
+ \node[caption, below left=of #1.north ] (#1-left-caption)
+ {#3}; %
+ \node[caption, below right=of #1.north ] (#1-right-caption)
+ {#5}; %
+ % Draw middle separation
+ \draw [-, dashed] (#1.north) -- (#1.south); %
+ % Draw inputs
+ \foreach \x in {#6} { %
+ \draw [-*,thick] (\x) -- (#1); %
+ } ;%
+}
+
+% \hgate {name} {fitlist-top} {caption-top} {fitlist-bottom}
+% {caption-bottom} {inputs}
+\newcommand{\hgate}[6]{ %
+ % Wrap the left and right parts
+ \node[wrap=#2] (#1-top) {}; %
+ \node[wrap=#4] (#1-bottom) {}; %
+ % Draw the gate
+ \node[gate=(#1-top)(#1-bottom)] (#1) {}; %
+ % Add captions
+ \node[caption, above right=of #1.west ] (#1-top-caption)
+ {#3}; %
+ \node[caption, below right=of #1.west ] (#1-bottom-caption)
+ {#5}; %
+ % Draw middle separation
+ \draw [-, dashed] (#1.west) -- (#1.east); %
+ % Draw inputs
+ \foreach \x in {#6} { %
+ \draw [-*,thick] (\x) -- (#1); %
+ } ;%
+}
+