I don't really get the question so I hope this is what you wanted. If you include a full document (such that we copy paste and see the problem on our systems) things are much more easier.
Here, you can change the default setting within a scope but your block
style had a node distance
which was resetting every time it is issued. I've made it 2mm such that we can see the difference easier.
\documentclass[tikz]{standalone}
\usetikzlibrary{arrows,shapes.geometric,positioning}
\begin{document}
\begin{tikzpicture}[decision/.style={diamond, draw, text width=4.5em, text badly centered, node distance=3.5cm, inner sep=0pt},
block/.style ={rectangle, draw, text width=6em, text centered, rounded corners, minimum height=4em, minimum height=2em},
cloud/.style ={draw, ellipse, minimum height=2em},
line/.style ={draw,-latex'},
node distance = 1cm,
auto]
\node [block] (1st) {1st};
\node [block, right= of 1st] (2nd1) {2nd1};
\begin{scope}[node distance=2mm and 10mm]%Here we change it for everything inside this scope
\node [block, above= of 2nd1] (2nd2) {2nd2};
\node [block, below= of 2nd1] (2nd3) {2nd3};
\node [block, right= of 2nd1] (3rd1) {3rd1};
\node [block, above= of 3rd1] (3rd2) {3rd2};
\node [block, above= of 3rd2] (3rd3) {3rd3};
\end{scope}
\node [block, below= of 3rd1] (3rd4) {3rd4};
\node [block, below= of 3rd4] (3rd5) {3rd5};
\path [line] (1st) -- (2nd1);
\path [line] (2nd1) -- (2nd2);
\path [line] (2nd1) -- (2nd3);
\path [line] (2nd2) -- (3rd3);
\path [line] (2nd1) -- (3rd1);
\path [line] (1st) -- (2nd1);
\end{tikzpicture}
\end{document}
The width of normal space depends on current font. There are global metric items in each font called \fontdimen
. The \fontdimen2
includes the basic width of normal space, \fontdimen3
includes value atfer plus
and \fontdimen4
includes value after minus
. The \fontdimen7
includes additional space used when \spacefactor\ge 2000
.
Because the \font
primitive used in the context \fontdimen<number>\font
denotes the current font (and no normal declaration primitive), we can print
the values of normal space by the code:
\message{space: \the\fontdimen2\font\space
plus \the\fontdimen3\font\space minus \the\fontdimen4\font}
Computer Modern roman at 10 pt gives the following result:
space: 3.33333pt plus 1.66666pt minus 1.11111pt
And you can use \hskip
primitive for creating normal space by
\hskip \fontdimen2\font plus\fontdimen3\font minus\fontdimen4\font
but this is only for illustration purposes. Normal people use \space
or \
(control space).
EDIT: The normal space doesn't generate the space mentioned by \hskip
above at all circumstances, because there are many exceptions. If the register \spaceskip
is nonzero then \fontdimen
s are not used but \spaceskip
register is used. Moreover, if \xspaceskip
is nonzero and the current \spacefactor\ge 2000
then \xspaceskip
is used.
There are two differences between \
(control space) and \space
(or normal space between words, token of catcode 10):
\space
is ignored in vertical mode but \
in vertical mode starts horizontal mode.
\space
respects the current \spacefactor
but \
does the same as \space
when \spacefactor=1000
.
Finally, what does mean that the space respects current \spacefactor
. Let f=\spacefactor/1000
and b is basic width of the space, p is plus value and m is minus value. Then p is modified by p:=p*f and m is modified by m:=m/f and b is kept unchanged. But, if \spacefactor\ge2000
then b:=b+\fontdimen7
(or \xspaceskip
is used if it is nonzero).
I add an example from my TeXbook naruby, page 105: Suppose the normal space (when \spacefactor=1000
) as 10pt plus10pt minus10pt. When \spacefactor=600
then
the space 10pt plus 6pt minus16.666pt is inserted, when \spacefactor=1500
then 10pt plus15pt minus6.666 is inserted. Finally when \spacefactor=3000
then 10pt+\fontdimen7
plus 30pt minus 3.333pt is inserted.
Normally, \spacefactor
is 1000, but in some languages the \nonfrenchspacing
macro sets special \sfcodes
to several characters. The \spacefactor
is set to the \sfcode
value of the last typeset character in horizontal mode. (There is an exception when \spacefactor<1000
and \sfcode>1000
. Then new \spacefactor=1000
.) For example plain TeX sets \sfcode
of period, question and exclamation mark to 3000, comma to 1250, semicolon to 1500 and colon to 2000.
Best Answer
You should put the image in a vertical version of
\rlap
so that officially it doesn't take any vertical space. You can do this like this:(Here
\rule
is a demo replacement of the\includegraphics
)This also makes the image officially 0pt wide and you can position it using the value of
\hspace
.However, you could control the position even more exact if you put both the text and the image into a picture environment like e.g.
tikzpicture
.