I don't understand: the space in "Dr. Doolittle" should be the same as the normal interword space. I've seen nowhere reduced spacing in this case, the only place where reduced spacing is used is between initials: somebody tells to write
D.\,E.~Knuth
instead of
D.~E.~Knuth
(which I prefer, but it's personal preference). In any case, your "non sentence ending periods" should be marked somehow, so why bother?
Note. I usually put the tie before the family name, it's easy to change it to a normal space in case of typesetting problems.
Addition
As I said, the "non sentence ending periods" must be marked somehow. Since you are using \frenchspacing
, we can overload \@
:
\frenchspacing
\makeatletter
\def\@{\@ifnextchar.{.\,\@gobbledot}{}}
\def\@gobbledot#1{\ignorespaces}
\makeatother
This way
Dr\@. Treemunch i.e\@. a main character in ``The Joy of TeX''
will result in a reduced space after the period. I don't see how "non sentence ending periods" can be recognized automatically, since they can be after uppercase as well as lowercase letters.
The reason of the different spaces are linked to the use of minipage
: you define blocks of fixed width and your picture inside these blocks does not fill the whole blocks, leaving different empty spaces. You can see them if you put your minipages in an \fbox{...}
block.
You may better take a look at the subcaption package, or position manually the spaces using \hspace{dimension}
like that:
\begin{tikzpicture}
% picture A
\end{tikzpicture}
\hspace{5mm}
\begin{tikzpicture}
% picture B
\end{tikzpicture}
Edit: usage of subcaption package
\documentclass[a4paper]{article}
\usepackage{subcaption}
\usepackage{tikz}
\usetikzlibrary{
shapes.geometric,
positioning,
fit,
calc
}
\usepackage{scalefnt}
\begin{document}
\begin{figure}[htbp]
\centering
\subcaptionbox{}{
\tikzset{
block/.style = {circle, draw,align=center,inner sep=0pt},
line/.style = {draw,->},
}
\scalefont{0.8}
\begin{tikzpicture}[node distance=15mm]
\node[block,minimum size=6mm] (s2) {1};
\node[block,right of =s2,anchor=center,minimum size=4mm] (s3){2};
\node[block, right of=s2,anchor=center,,minimum size=6mm] (s4) {};
\path[line] (-0.8,0)-- (s2){};
\path[line] (s2)-- node[above]{Err}(s4);
\path[line] (s2) to [out=120,in=40,looseness=5] node[above] {$\Sigma$/Err}(s2);
\path[line] (s4) to [out=120,in=40,looseness=5]node[above] {$\Sigma$}(s4);
\end{tikzpicture}
}
\subcaptionbox{}{
\tikzset{
block/.style = {circle, draw,align=center,inner sep=0pt},
line/.style = {draw,->},
}
\scalefont{0.8}
\begin{tikzpicture}[node distance=15mm]
\node[block,minimum size=6mm](s2) {1};
\node[block,right of =s2,anchor=center,minimum size=4mm] (s3){2};
\node[block, right of=s2,anchor=center,minimum size=6mm] (s4) {};
\path[line] (-0.8,0)-- (s2){};
\path[line] (s2)-- node[above]{ru}(s4);
\path[line] (s2) to [out=120,in=40,looseness=5] node[above] {$\Sigma$/ru}(s2);
\path[line] (s4) to [out=120,in=40,looseness=5]node[above] {$\Sigma$}(s4);
\end{tikzpicture}
}
\subcaptionbox{}{
\tikzset{
block/.style = {ellipse, draw,align=center,inner sep=0pt},
line/.style = {draw,->},
}
\scalefont{0.8}
\begin{tikzpicture}[node distance=10mm]
\node[align=center](s1) {\ldots};
\node[block,minimum size=3.5mm,below of =s1](s5) {(19,1)};
\node[block,minimum size=3.5mm,below of = s5](s6) {(20,2)};
\path[line] (s1)-- (s5);
\path[line] (s5)-- node[right]{ru}(s6);
\end{tikzpicture}
}
\caption{Monitoring Automata}
\label{fig:monitoringAutomata}
\end{figure}
\end{document}
** Edit 2:**
To put all the picture in the same row, you could use \resizebox{width}{height}{box}
.
On the below example, I have rescaled the middle picture to demonstrate the use of the command.
\documentclass[a4paper]{article}
\usepackage{subcaption}
\usepackage{tikz}
\usepackage{lipsum}
\usetikzlibrary{
shapes.geometric,
positioning,
fit,
calc
}
\usepackage{scalefnt}
\begin{document}
\lipsum[1]
\begin{figure}[h!]
\centering
\resizebox{\linewidth}{!}{%
\subcaptionbox{}{%
\tikzset{
block/.style = {circle, draw,align=center,inner sep=0pt},
line/.style = {draw,->},
}
\scalefont{0.8}
\begin{tikzpicture}[node distance=15mm]
\node[block,minimum size=6mm] (s2) {1};
\node[block,right of =s2,anchor=center,minimum size=4mm] (s3){2};
\node[block, right of=s2,anchor=center,,minimum size=6mm] (s4) {};
\path[line] (-0.8,0)-- (s2){};
\path[line] (s2)-- node[above]{Err}(s4);
\path[line] (s2) to [out=120,in=40,looseness=5] node[above] {$\Sigma$/Err}(s2);
\path[line] (s4) to [out=120,in=40,looseness=5]node[above] {$\Sigma$}(s4);
\end{tikzpicture}
}
\subcaptionbox{}{\scalebox{4}{% For demonstration purpose!
\tikzset{
block/.style = {circle, draw,align=center,inner sep=0pt},
line/.style = {draw,->},
}
\scalefont{0.8}
\begin{tikzpicture}[node distance=15mm]
\node[block,minimum size=6mm](s2) {1};
\node[block,right of =s2,anchor=center,minimum size=4mm] (s3){2};
\node[block, right of=s2,anchor=center,minimum size=6mm] (s4) {};
\path[line] (-0.8,0)-- (s2){};
\path[line] (s2)-- node[above]{ru}(s4);
\path[line] (s2) to [out=120,in=40,looseness=5] node[above] {$\Sigma$/ru}(s2);
\path[line] (s4) to [out=120,in=40,looseness=5]node[above] {$\Sigma$}(s4);
\end{tikzpicture}
}}
\subcaptionbox{}{%
\tikzset{
block/.style = {ellipse, draw,align=center,inner sep=0pt},
line/.style = {draw,->},
}
\scalefont{0.8}
\begin{tikzpicture}[node distance=10mm]
\node[align=center](s1) {\ldots};
\node[block,minimum size=3.5mm,below of =s1](s5) {(19,1)};
\node[block,minimum size=3.5mm,below of = s5](s6) {(20,2)};
\path[line] (s1)-- (s5);
\path[line] (s5)-- node[right]{ru}(s6);
\end{tikzpicture}
}
} % resizebox
\caption{Monitoring Automata}
\label{fig:monitoringAutomata}
\end{figure}
\lipsum[2]
\end{document}
Note: ! as height means "calculate the height to keep the aspect ratio"
Best Answer
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 atferplus
and\fontdimen4
includes value afterminus
. 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:Computer Modern roman at 10 pt gives the following result:
And you can use
\hskip
primitive for creating normal space bybut 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.