Ich beantworte hier nur die erste Frage:
Für den betrachteten Node sind im verlinkten Beispiel die beiden Optionen `proc` und `join` angegeben.
Die `join` Option sorgt dafür, dass ein Node mit dem vorhergehenden Node des `chain` verbunden wird. Voraussetzung ist also, dass beide Nodes zur gleichen Kette (`chain`) gehören, für beide also die Option `on chain` gesetzt ist. Mit anderen Worten, wenn die Option `join` zwar gesetzt ist, aber für den Node kein `on chain` gilt, wird er auch nicht verbunden.
Im Beispiel ist `proc` nun wie folgt definiert:
proc/.style={base, rectangle, text width=8em}
Es wird also die Option `base` gesetzt und ein solcher Node bekommt eine Rechteckform. Zu beachten ist dabei, dass `rectangle` wirklich nur die Nodeform vorgibt, aber nicht deren Zeichnen oder Füllen veranlasst.
Die Option `base` wird in dem Code wiederum wie folgt, definiert:
base/.style={draw, on chain, on grid, align=center, minimum height=4ex}
Sie sorgt also dafür, dass der Node einerseits gezeichnet wird, aber andererseits auch zum `chain` gehört und entsprechend platziert wird.
Die Option `base` gibt in dem Beispiel also grundlegende Formatierungseinstellungen der Nodes vor, die auch für andere Optionen als Basis verwendet werden. Sie wird in den abgeleiteten Optionen zunächst gesetzt und anschließend durch weitere Optionen angepasst. Dabei überschreiben später gesetzte Optionen die vorherigen Einstellungen.
Ausschnitt aus dem in der Frage verlinkten Beispiel:
base/.style={draw, on chain, on grid, align=center, minimum height=4ex},
proc/.style={base, rectangle, text width=8em},
test/.style={base, diamond, aspect=2, text width=5em},
term/.style={proc, rounded corners},
Wenn Du die Option `proc` entfernst, wird auch `base` nicht mehr verwendet. Deshalb wird der Node nicht nur nicht mehr gezeichnet, sondern er gehört auch nicht mehr zur Kette und wird deshalb nicht mit Abstand zum vorhergehenden Node platziert und auch nicht mehr verbunden.
Wenn Du einen oder mehrere Nodes brauchst, die sich genauso verhalten wie die Nodes mit der Option `proc`, dann kannst Du das erreichen, in dem Du nach `proc` noch ein `draw=none` anfügst:
\node [proc,draw=none,join] (p1) {Box 2};
Beispiel, abgeleitet von [Example: Easy-maintenance flowchart][1]
![alt text][2]
\documentclass[margin=5pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows,chains}
\begin{document}
\begin{tikzpicture}[%
>=triangle 60, % Vorgabe einer Pfeilform
start chain=going below, % Platzierungsrichtung ist von oben nach unten
node distance=6mm and 60mm, % globale Abstände zwischen den Nodes
every join/.style={norm}, % Defaultlinienart für die Verbindung der Nodes
]
\tikzset{
base/.style={
draw,% zeichne!
on chain,% Node gehört zum chain
on grid,
align=center,
minimum height=4ex
},
proc/.style={
base,% verwende den base Stil (u.a. draw, also zeichnen)
rectangle,% Rechteckform
text width=8em },
term/.style={
proc,% verwende den proc Stil
rounded corners% aber mit abgerundeten Ecken
},
norm/.style={->, draw, blue},
it/.style={font={\small\itshape}}
}
\node [
proc,% verwende den proc Stil
densely dotted,% aber gepunktet
it% und mit anderen Schrifteinstellungen
] {New trigger message thread};
\node [
term,% vewende den term Stil (=proc mit abgerundeten Ecken)
join% verbinde mit dem vorhergehenden Node
] {Trigger scheduler};
\node [
proc,% verwende den proc Stil
draw=none,% aber zeichne nicht!
join% verbinde mit dem vorhergehenden Node
] (p1) {Box 2};
\node [
proc,% verwende den proc Stil
join% verbinde mit dem vorhergehenden Node
] {Open queue};
\end{tikzpicture}
\end{document}
[1]: http://www.texample.net/tikz/examples/flexible-flow-chart/
[2]: http://texwelt.de/wissen/upfiles/tw_chain.pnghttp://texwelt.de/wissen/upfiles/tw_chain.png