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}
You have defined your subfigure
environments to have a width of .3\textwidth
, but your images are wider than that, so they will stick out on the right side. This is also the reason the captions are narrow, as they have the same width as the subfigure
s. So to fix this, just increase the width. You can use \columnwidth
to make them as wide as the columns.
See the below code for an example, where I also added an \fbox
around the each subfigure
, so their boundaries are obvious.
\documentclass{article}
\usepackage{graphicx}
\usepackage{subcaption}
\begin{document}
\begin{figure}
\centering
% this is wide enough
\fbox{\begin{subfigure}[b]{\textwidth}
\centering
\includegraphics[width=7cm,clip=false]{example-image-a}
\caption{Some long caption some long caption some long caption}
\end{subfigure}}
% this has a too narrow subfigure
\fbox{\begin{subfigure}[b]{0.3\textwidth}
\includegraphics[width=7cm,clip=false]{example-image-b}
\caption{Some long caption some long caption some long caption}
\end{subfigure}}
\caption{Label predictions using cross-correlation-, GTW-, and LSTM-based classifiers}
\end{figure}
\end{document}
Best Answer
The row of images is too wide for the line.
\hspace
introduces a breakpoint so the line breaks after the B and the space is discarded at the start of the next line.with
\hspace*
no line break is allowed and so they stay on one line producing an overfull lineIt is overfull due to the word spaces added after the
\hspace
.Note with
\hspace{0.05\textwidth}
rounding error makes it slightly over full so I had to reduce it a bit. In practice it is best not to use such fixed lengths and just use\hfill
between the images, this will expand to space out the images without needing to worry about rounding error.