1

In the following TikZ diagram, I have depicted an expanding graph - a sequence of simple graphs. An inconsistency in this diagram is the distances between consecutive steps in the expansion. For the first four steps, I just decreased the y-coordinate by 3 of each of the vertices. A multi-line node under a vertex of the fourth graph prevented that from happening. I just put the last graph 6 cm under the fourth graph. It is unseemly.

How do I define a length between (label_for_Vertex_b.south) and (label_for_Farey_Fraction_at_Vertex_b.north) and use that distance to position the fraction (2n+1)/2 on the last graph, and from this node, draw the last horizontal line?

\documentclass{amsart}
\usepackage{amssymb}
\usepackage{mathtools,array}

\usepackage{tikz}
\usetikzlibrary{calc,intersections}

\begin{document}

\begin{tikzpicture}[nodes={inner sep=0, font=\scriptsize,
execute at begin node={\setlength\abovedisplayskip{0.75ex}%
\setlength\belowdisplayskip{0.5ex}%
\setlength\abovedisplayshortskip{0.75ex}%
\setlength\belowdisplayshortskip{0.5ex}}},
shorten/.style={shorten >=#1,shorten <=#1}]

%A sequence of graphs is drawn, starting with the vertex with the b-label b.


%Here is the blow-up of the vertex labeled b.
\draw[fill] (-4,0) circle (1.5pt);
\node[anchor=north] (label_for_Vertex_b) at ($(-4,0) +(0,-0.25)$){\textit{b}};
\node[anchor=south] at ($(-4,0) +(0,0.25)$){$\dfrac{0}{1}$};
%
%
\draw (-4,-3) -- (-2,-3);
\draw[fill] (-4,-3) circle (1.5pt);
\draw[fill] (-2,-3) circle (1.5pt);
%
\node[anchor=north] at ($(-4,-3) +(0,-0.25)$){\textit{b}};
\node[anchor=south] (label_for_Farey_Fraction_at_Vertex_b) at ($(-4,-3) +(0,0.25)$){$\dfrac{0}{1}$};
%
\node[anchor=north] (label_for_Vertex_b-1) at ($(-2,-3) +(0,-0.25)$){$b - 1$};
\node[anchor=south] at ($(-2,-3) +(0,0.25)$){$\dfrac{1}{1}$};
%
%
%An arrow is drawn to the next diagram.
\draw[-latex, line width=0.8pt, shorten=7.5pt] (label_for_Vertex_b) to[bend right=30] node[midway, left=1.5mm, align=center]
{Blow-up of\\vertex \textit{b}} (label_for_Farey_Fraction_at_Vertex_b);


%Here is the blow-up of the vertex labeled b-1.
\draw (-4,-6) -- (-2,-6) -- (0,-6);
\draw[fill] (-4,-6) circle (1.5pt);
\draw[fill] (-2,-6) circle (1.5pt);
\draw[fill] (0,-6) circle (1.5pt);
%
\node[anchor=north] at ($(-4,-6) +(0,-0.25)$){\textit{b}};
\node[anchor=south] at ($(-4,-6) +(0,0.25)$){$\dfrac{0}{1}$};
%
\node[anchor=north] at ($(-2,-6) +(0,-0.25)$){$b-1$};
\node[anchor=south] (label_for_Farey_Fraction_at_Vertex_b-1) at ($(-2,-6) +(0,0.25)$){$\dfrac{1}{1}$};
%
\node[anchor=north] (label_for_Vertex_b-2) at ($(0,-6) +(0,-0.25)$){$b-2$};
\node[anchor=south] at ($(0,-6) +(0,0.25)$){$\dfrac{2}{1}$};
%
%
\draw[-latex, line width=0.8pt, shorten=7.5pt] (label_for_Vertex_b-1) to[bend right=30] node[midway, left=1.5mm, align=center]
{Blow-up of\\vertex $b - 1$} (label_for_Farey_Fraction_at_Vertex_b-1);


%Here is the blow-up of the vertex labeled b-n.
\draw (-4,-9) -- (-2,-9) -- (0,-9) (2,-9) -- (5,-9);
\draw[fill] (-4,-9) circle (1.5pt);
\draw[fill] (-2,-9) circle (1.5pt);
\draw[fill] (0,-9) circle (1.5pt);
\node at (1,-9){$\ldots$};
\draw[fill] (2,-9) circle (1.5pt);
\draw[fill] (5,-9) circle (1.5pt);
%
\node[anchor=north] at ($(-4,-9) +(0,-0.25)$){\textit{b}};
\node[anchor=south] at ($(-4,-9) +(0,0.25)$){$\dfrac{0}{1}$};
%
\node[anchor=north] at ($(-2,-9) +(0,-0.25)$){$b-1$};
\node[anchor=south] at ($(-2,-9) +(0,0.25)$){$\dfrac{1}{1}$};
%
\node[anchor=north] at ($(0,-9) +(0,-0.25)$){$b-2$};
\node[anchor=south] at ($(0,-9) +(0,0.25)$){$\dfrac{2}{1}$};
%
\node[anchor=south, green] (label_for_phantom_Farey_Fraction_at_ellipses) at ($(1,-9) +(0,0.25)$){$\dfrac{1}{1}$};
%
\node[anchor=north] at ($(2,-9) +(0,-0.25)$){\textit{b-n}};
\node[anchor=south] at ($(2,-9) +(0,0.25)$){$\dfrac{n}{1}$};
%
\node[anchor=north] at ($(5,-9) +(0,-0.25)$){$b-(n+1)$};
\node[anchor=south] at ($(5,-9) +(0,0.25)$){$\dfrac{n+1}{1}$};
%
%
%
%
\draw[-latex, line width=0.8pt, shorten=7.5pt] (label_for_Vertex_b-2) to[bend right=30] node[midway, left=1.5mm, align=center]
{Blow-up of\\more vertices} (label_for_phantom_Farey_Fraction_at_ellipses);
%
%
%A "pin" is drawn between the midpoint of last two vertices and the label of the mediants of these vertices.
\draw[-latex, dashed, line width=0.8pt, shorten <=3mm, shorten >=1mm] ($(3.5,-9) +(60:2)$) -- (3.5,-9);
\path node[anchor=south, align=center, text width={width("future vertex")}]
at ($(3.5,-9) +(60:2)$){future mediant\\for vertex\[\dfrac{2n+1}{2}\]};
%
%A "pin" is drawn between the midpoint of the edge between the last two vertices and its label.
\coordinate (label_for_Edge) at ($(3.5,-9.5) +(0,-0.75)$);
\draw[draw=gray, line width=0.8pt, shorten <=1mm, shorten >=1mm] (3.5,-9) -- (label_for_Edge);
\node[anchor=north, align=center, inner sep=0, font=\scriptsize] (actual_label_for_Edge) at (label_for_Edge)
{$\begin{aligned} &\text{Present edge label of} \\[-1.5ex]
&\quad 2\bigl[(b-n)+(b-(n+1))\bigr] \\[-1.5ex]
&\qquad=2^{2}b-(2n+1)2
\end{aligned}$};



\draw[-latex, line width=0.8pt, shorten=7.5pt] (label_for_Vertex_b-1) to[bend right=30] node[midway, left=1.5mm, align=center]
{Blow-up of\\vertex $b - 1$} (label_for_Farey_Fraction_at_Vertex_b-1);


\draw[-latex, line width=0.8pt, shorten <=30pt, shorten >=7.5pt] (label_for_Edge.south) -- ($(label_for_Edge.south) +(0,-4)$);

%Here is the vertex placed at the broken edge.
\draw (-4,-15) -- (-2,-15) -- (0,-15) (2,-15) -- (5,-15);
\draw[fill] (-4,-15) circle (1.5pt);
\draw[fill] (-2,-15) circle (1.5pt);
\draw[fill] (0,-15) circle (1.5pt);
\node at (1,-15){$\ldots$};
\draw[fill] (2,-15) circle (1.5pt);
\draw[fill] ({(2+5)/2},-15) circle (1.5pt);
\draw[fill] (5,-15) circle (1.5pt);
%
\node[anchor=north] at ($(-4,-15) +(0,-0.25)$){\textit{b}};
\node[anchor=south] at ($(-4,-15) +(0,0.25)$){$\dfrac{0}{1}$};
%
\node[anchor=north] at ($(-2,-15) +(0,-0.25)$){$b-1$};
\node[anchor=south] at ($(-2,-15) +(0,0.25)$){$\dfrac{1}{1}$};
%
\node[anchor=north] at ($(0,-15) +(0,-0.25)$){$b-2$};
\node[anchor=south] at ($(0,-15) +(0,0.25)$){$\dfrac{2}{1}$};
%
\node[anchor=north] at ($(2,-15) +(0,-0.25)$){\textit{b-n}};
\node[anchor=south] at ($(2,-15) +(0,0.25)$){$\dfrac{n}{1}$};
%
\node[anchor=north] at ($(5,-15) +(0,-0.25)$){$b-(n+1)$};
\node[anchor=south] at ($(5,-15) +(0,0.25)$){$\dfrac{n+1}{1}$};
%
%A "pin" is drawn between the midpoint of the edge between the last two vertices and its label.
\draw[draw=gray, line width=0.8pt, shorten <=1mm, shorten >=1mm] ({(2+5)/2},-15) -- ({(2+5)/2},-16);
\node[anchor=north] at ({(2+5)/2},-16){$2^{2}b-(n+1)2$};
\node[anchor=south] (Last_Farey_Fraction_in_diagram) at ($({(2+5)/2},-15) +(0,0.25)$){$\dfrac{2n+1}{2}$};


%Extra code to display distances I want between graphs.
\draw[|<->|, green] (label_for_Farey_Fraction_at_Vertex_b) -- (label_for_Vertex_b);
\node[green, anchor=west] at ($($(label_for_Farey_Fraction_at_Vertex_b)!0.5!(label_for_Vertex_b)$) +(0.1,0)$){\textit{D}};
%
\draw[|<->|, green] ($(actual_label_for_Edge.south) +(0.5,0)$) -- ($(Last_Farey_Fraction_in_diagram.north) +(0.5,0)$);
\node[green, anchor=west] at ($($(actual_label_for_Edge.south) +(0.6,0)$)!0.5!($(Last_Farey_Fraction_in_diagram.north) +(0.6,0)$)$){\textbf{Want this to be \textit{D}}};

\end{tikzpicture}

\end{document}

5
  • I get errors ! Package pgf Error: No shape named label_for_Vertex_b-2 is known. when running your MWE.
    – user194703
    Dec 4, 2019 at 5:46
  • Somehow, (label_for_Vertex_b-2) was missing from the name for one of the nodes. The code has been edited.
    – user74973
    Dec 4, 2019 at 15:28
  • Is this question related to your previous one: tex.stackexchange.com/questions/519117/…? There you have an answer, which solve your issues ...
    – Zarko
    Dec 4, 2019 at 16:25
  • @Zarko No. The code is the same, but the modifications requested in the posts are different. In the previous post, I wanted code to draw a bent arrow to the last graph. (I included the edited code in this post. The bent arrow ends just above a fraction typeset in green.) In the current post, I want to position the last graph … using the specification described in it.
    – user74973
    Dec 4, 2019 at 16:30
  • But in my answer this is solved. Well, all is up to you.
    – Zarko
    Dec 4, 2019 at 16:33

1 Answer 1

3

To shift complete blocks, you can put them in scopes,

\begin{scope}[yshift=-3cm]
 ...
\end{scope}

This allows you to shift the last block 3cm below the south anchor of the edge label.

\documentclass{amsart}
\usepackage{amssymb}
\usepackage{mathtools,array}

\usepackage{tikz}
\usetikzlibrary{calc,intersections}

\begin{document}


\begin{tikzpicture}[nodes={inner sep=0, font=\scriptsize,
execute at begin node={\setlength\abovedisplayskip{0.75ex}%
\setlength\belowdisplayskip{0.5ex}%
\setlength\abovedisplayshortskip{0.75ex}%
\setlength\belowdisplayshortskip{0.5ex}}},
shorten/.style={shorten >=#1,shorten <=#1}]

%A sequence of graphs is drawn, starting with the vertex with the b-label b.


%Here is the blow-up of the vertex labeled b.
\draw[fill] (-4,0) circle (1.5pt);
\node[anchor=north] (label_for_Vertex_b) at ($(-4,0) +(0,-0.25)$){\textit{b}};
\node[anchor=south] at ($(-4,0) +(0,0.25)$){$\dfrac{0}{1}$};
%
%
\begin{scope}[yshift=-3cm]
 \draw (-4,0) -- (-2,0);
 \draw[fill] (-4,0) circle (1.5pt);
 \draw[fill] (-2,0) circle (1.5pt);
 %
 \node[anchor=north] at ($(-4,0) +(0,-0.25)$){\textit{b}};
 \node[anchor=south] (label_for_Farey_Fraction_at_Vertex_b) at ($(-4,0) +(0,0.25)$){$\dfrac{0}{1}$};
 %
 \node[anchor=north] (label_for_Vertex_b-1) at ($(-2,0) +(0,-0.25)$){$b - 1$};
 \node[anchor=south] at ($(-2,0) +(0,0.25)$){$\dfrac{1}{1}$};
 %
 %
 %An arrow is drawn to the next diagram.
 \draw[-latex, line width=0.8pt, shorten=7.5pt] (label_for_Vertex_b) to[bend right=30] node[midway, left=1.5mm, align=center]
 {Blow-up of\\vertex \textit{b}} (label_for_Farey_Fraction_at_Vertex_b);
\end{scope}

\begin{scope}[yshift=-6cm]
 %Here is the blow-up of the vertex labeled b-1.
 \draw (-4,0) -- (-2,0) -- (0,0);
 \draw[fill] (-4,0) circle (1.5pt);
 \draw[fill] (-2,0) circle (1.5pt);
 \draw[fill] (0,0) circle (1.5pt);
 %
 \node[anchor=north] at ($(-4,0) +(0,-0.25)$){\textit{b}};
 \node[anchor=south] at ($(-4,0) +(0,0.25)$){$\dfrac{0}{1}$};
 %
 \node[anchor=north] at ($(-2,0) +(0,-0.25)$){$b-1$};
 \node[anchor=south] (label_for_Farey_Fraction_at_Vertex_b-1) at ($(-2,0) +(0,0.25)$){$\dfrac{1}{1}$};
 %
 \node[anchor=north] (label_for_Vertex_b-2) at ($(0,0) +(0,-0.25)$){$b-2$};
 \node[anchor=south] at ($(0,0) +(0,0.25)$){$\dfrac{2}{1}$};
\end{scope} 
%
%
\draw[-latex, line width=0.8pt, shorten=7.5pt] (label_for_Vertex_b-1) to[bend right=30] node[midway, left=1.5mm, align=center]
{Blow-up of\\vertex $b - 1$} (label_for_Farey_Fraction_at_Vertex_b-1);

\begin{scope}[yshift=-9cm]
%Here is the blow-up of the vertex labeled b-n.
 \draw (-4,0) -- (-2,0) -- (0,0) (2,0) -- (5,0);
 \draw[fill] (-4,0) circle (1.5pt);
 \draw[fill] (-2,0) circle (1.5pt);
 \draw[fill] (0,0) circle (1.5pt);
 \node at (1,0){$\ldots$};
 \draw[fill] (2,0) circle (1.5pt);
 \draw[fill] (5,0) circle (1.5pt);
 %
 \node[anchor=north] at ($(-4,0) +(0,-0.25)$){\textit{b}};
 \node[anchor=south] at ($(-4,0) +(0,0.25)$){$\dfrac{0}{1}$};
 %
 \node[anchor=north] at ($(-2,0) +(0,-0.25)$){$b-1$};
 \node[anchor=south] at ($(-2,0) +(0,0.25)$){$\dfrac{1}{1}$};
 %
 \node[anchor=north] at ($(0,0) +(0,-0.25)$){$b-2$};
 \node[anchor=south] at ($(0,0) +(0,0.25)$){$\dfrac{2}{1}$};
 %
 \node[anchor=south, green] (label_for_phantom_Farey_Fraction_at_ellipses) at ($(1,0) +(0,0.25)$){$\dfrac{1}{1}$};
 %
 \node[anchor=north] at ($(2,0) +(0,-0.25)$){\textit{b-n}};
 \node[anchor=south] at ($(2,0) +(0,0.25)$){$\dfrac{n}{1}$};
 %
 \node[anchor=north] at ($(5,0) +(0,-0.25)$){$b-(n+1)$};
 \node[anchor=south] at ($(5,0) +(0,0.25)$){$\dfrac{n+1}{1}$};
 %
 %
 %
 %
 \draw[-latex, line width=0.8pt, shorten=7.5pt] (label_for_Vertex_b-2) to[bend right=30] node[midway, left=1.5mm, align=center]
 {Blow-up of\\more vertices} (label_for_phantom_Farey_Fraction_at_ellipses);
 %
 %
 %A "pin" is drawn between the midpoint of last two vertices and the label of the mediants of these vertices.
 \draw[-latex, dashed, line width=0.8pt, shorten <=3mm, shorten >=1mm] ($(3.5,0) +(60:2)$) -- (3.5,0);
 \path node[anchor=south, align=center, text width={width("future vertex")}]
 at ($(3.5,0) +(60:2)$){future mediant\\for vertex\[\dfrac{2n+1}{2}\]};
 %
 %A "pin" is drawn between the midpoint of the edge between the last two vertices and its label.
 \coordinate (label_for_Edge) at ($(3.5,-0.5) +(0,-0.75)$);
 \draw[draw=gray, line width=0.8pt, shorten <=1mm, shorten >=1mm] (3.5,0) -- (label_for_Edge);
 \node[anchor=north, align=center, inner sep=0, font=\scriptsize] (edge label) at (label_for_Edge)
 {$\begin{aligned} &\text{Present edge label of} \\[-1.5ex]
 &\quad 2\bigl[(b-n)+(b-(n+1))\bigr] \\[-1.5ex]
 &\qquad=2^{2}b-(2n+1)2
 \end{aligned}$};
\end{scope}


\draw[-latex, line width=0.8pt, shorten=7.5pt] (label_for_Vertex_b-1) to[bend right=30] node[midway, left=1.5mm, align=center]
{Blow-up of\\vertex $b - 1$} (label_for_Farey_Fraction_at_Vertex_b-1);



\path ($(0,0|-edge label.south)+(0,-3)$) coordinate(auxp);
\begin{scope}[shift={(auxp)}]
 %Here is the vertex placed at the broken edge.
 \draw (-4,0) -- (-2,0) -- (0,0) (2,0) -- (5,0);
 \draw[fill] (-4,0) circle (1.5pt);
 \draw[fill] (-2,0) circle (1.5pt);
 \draw[fill] (0,0) circle (1.5pt);
 \node at (1,0){$\ldots$};
 \draw[fill] (2,0) circle (1.5pt);
 \draw[fill] ({(2+5)/2},0) circle (1.5pt);
 \draw[fill] (5,0) circle (1.5pt);
 %
 \node[anchor=north] at ($(-4,0) +(0,-0.25)$){\textit{b}};
 \node[anchor=south] at ($(-4,0) +(0,0.25)$){$\dfrac{0}{1}$};
 %
 \node[anchor=north] at ($(-2,0) +(0,-0.25)$){$b-1$};
 \node[anchor=south] at ($(-2,0) +(0,0.25)$){$\dfrac{1}{1}$};
 %
 \node[anchor=north] at ($(0,0) +(0,-0.25)$){$b-2$};
 \node[anchor=south] at ($(0,0) +(0,0.25)$){$\dfrac{2}{1}$};
 %
 \node[anchor=north] at ($(2,0) +(0,-0.25)$){\textit{b-n}};
 \node[anchor=south] at ($(2,0) +(0,0.25)$){$\dfrac{n}{1}$};
 %
 \node[anchor=north] at ($(5,0) +(0,-0.25)$){$b-(n+1)$};
 \node[anchor=south] at ($(5,0) +(0,0.25)$){$\dfrac{n+1}{1}$};
 %
 %A "pin" is drawn between the midpoint of the edge between the last two vertices and its label.
 \draw[draw=gray, line width=0.8pt, shorten <=1mm, shorten >=1mm] ({(2+5)/2},0)
 -- ({(2+5)/2},-1);
 \node[anchor=north] at ({(2+5)/2},-1){$2^{2}b-(n+1)2$};
 \node[anchor=south] (f2n) at ($({(2+5)/2},0) +(0,0.25)$){$\dfrac{2n+1}{2}$};
\end{scope}
\draw[-latex, line width=0.8pt, shorten <=30pt, shorten >=7.5pt] 
(label_for_Edge.south) -- (f2n.north);
\end{tikzpicture}

\end{document}

enter image description here

As mentioned here, you would possibly benefit greatly using positioning to position the blocks relative to each other. This answer is written under the assumption that there are some reasons why you do not want to use positioning.

Here is another attempt to make you happy. The trick is to put of these layers in pics and to put the ("fake") pics in a matrix.

The vertical distance between these layers/pics is entirely fixed by column sep.

If you want to add annotations that should not alter the size of these pics, use either overlay or add them outside of the matrix. Examples for both can be found in the MWE

\documentclass{amsart}
\usepackage{amssymb}
\usepackage{mathtools,array}

\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}


\begin{tikzpicture}[nodes={inner sep=0, font=\scriptsize,
execute at begin node={\setlength\abovedisplayskip{0.75ex}%
\setlength\belowdisplayskip{0.5ex}%
\setlength\abovedisplayshortskip{0.75ex}%
\setlength\belowdisplayshortskip{0.5ex}}},
shorten/.style={shorten >=#1,shorten <=#1},
pics/fpic/.style={code={#1}}]

%A sequence of graphs is drawn, starting with the vertex with the b-label b.

\matrix[row sep=4.5em]{%<- this defines the difference between pics
%Here is the blow-up of the vertex labeled b.
\pic{fpic={%
\draw[fill] (-4,0) circle (1.5pt);
\node[anchor=north] (label_for_Vertex_b) at ($(-4,0) +(0,-0.25)$){\textit{b}};
\node[anchor=south] at ($(-4,0) +(0,0.25)$){$\dfrac{0}{1}$};
}};\\
%
%
\pic{fpic={%
\draw (-4,0) -- (-2,0) coordinate(lcompare);
 \draw[fill] (-4,0) circle (1.5pt);
 \draw[fill] (-2,0) circle (1.5pt);
 %
 \node[anchor=north] (bcompare) at ($(-4,0) +(0,-0.25)$){\textit{b}};
 \node[anchor=south] (label_for_Farey_Fraction_at_Vertex_b) at ($(-4,0) +(0,0.25)$){$\dfrac{0}{1}$};
 %
 \node[anchor=north] (label_for_Vertex_b-1) at ($(-2,0) +(0,-0.25)$){$b - 1$};
 \node[anchor=south] at ($(-2,0) +(0,0.25)$){$\dfrac{1}{1}$};
 }};\\
 %
 %
\pic{fpic={%
 %Here is the blow-up of the vertex labeled b-1.
 \draw (-4,0) -- (-2,0) -- (0,0);
 \draw[fill] (-4,0) circle (1.5pt);
 \draw[fill] (-2,0) circle (1.5pt);
 \draw[fill] (0,0) circle (1.5pt);
 %
 \node[anchor=north] at ($(-4,0) +(0,-0.25)$){\textit{b}};
 \node[anchor=south] at ($(-4,0) +(0,0.25)$){$\dfrac{0}{1}$};
 %
 \node[anchor=north] at ($(-2,0) +(0,-0.25)$){$b-1$};
 \node[anchor=south] (label_for_Farey_Fraction_at_Vertex_b-1) at ($(-2,0) +(0,0.25)$){$\dfrac{1}{1}$};
 %
 \node[anchor=north] (label_for_Vertex_b-2) at ($(0,0) +(0,-0.25)$){$b-2$};
 \node[anchor=south] at ($(0,0) +(0,0.25)$){$\dfrac{2}{1}$};
}};\\
\pic{fpic={
%Here is the blow-up of the vertex labeled b-n.
 \draw (-4,0) -- (-2,0) -- (0,0) (2,0) -- (5,0);
 \draw[fill] (-4,0) circle (1.5pt);
 \draw[fill] (-2,0) circle (1.5pt);
 \draw[fill] (0,0) circle (1.5pt);
 \node at (1,0){$\ldots$};
 \draw[fill] (2,0) circle (1.5pt);
 \draw[fill] (5,0) circle (1.5pt);
 %
 \node[anchor=north] at ($(-4,0) +(0,-0.25)$){\textit{b}};
 \node[anchor=south] at ($(-4,0) +(0,0.25)$){$\dfrac{0}{1}$};
 %
 \node[anchor=north] at ($(-2,0) +(0,-0.25)$){$b-1$};
 \node[anchor=south] at ($(-2,0) +(0,0.25)$){$\dfrac{1}{1}$};
 %
 \node[anchor=north] at ($(0,0) +(0,-0.25)$){$b-2$};
 \node[anchor=south] at ($(0,0) +(0,0.25)$){$\dfrac{2}{1}$};
 %
 \node[anchor=south, green] (label_for_phantom_Farey_Fraction_at_ellipses) at ($(1,0) +(0,0.25)$){$\dfrac{1}{1}$};
 %
 \node[anchor=north] at ($(2,0) +(0,-0.25)$){\textit{b-n}};
 \node[anchor=south] at ($(2,0) +(0,0.25)$){$\dfrac{n}{1}$};
 %
 \node[anchor=north] at ($(5,0) +(0,-0.25)$){$b-(n+1)$};
 \node[anchor=south] at ($(5,0) +(0,0.25)$){$\dfrac{n+1}{1}$};
 %
 %
 %
 %
 %
 %A "pin" is drawn between the midpoint of last two vertices and the label of the mediants of these vertices.
 \draw[-latex, dashed, line width=0.8pt, shorten <=3mm, shorten >=1mm,overlay] ($(3.5,0) +(60:2)$) -- (3.5,0);
 \path node[anchor=south, align=center, text width={width("future
 vertex")},overlay]
 at ($(3.5,0) +(60:2)$){future mediant\\for vertex\[\dfrac{2n+1}{2}\]};
 %
 %A "pin" is drawn between the midpoint of the edge between the last two vertices and its label.
 \coordinate (label_for_Edge) at ($(3.5,-0.5) +(0,-0.75)$);
 \draw[draw=gray, line width=0.8pt, shorten <=1mm, shorten >=1mm] (3.5,0) -- (label_for_Edge);
 \node[anchor=north, align=center, inner sep=0, font=\scriptsize] (edge label) at (label_for_Edge)
 {$\begin{aligned} &\text{Present edge label of} \\[-1.5ex]
 &\quad 2\bigl[(b-n)+(b-(n+1))\bigr] \\[-1.5ex]
 &\qquad=2^{2}b-(2n+1)2
 \end{aligned}$};
}};\\
\pic{fpic={
 %Here is the vertex placed at the broken edge.
 \draw (-4,0) -- (-2,0) -- (0,0) (2,0) -- (5,0);
 \draw[fill] (-4,0) circle (1.5pt);
 \draw[fill] (-2,0) circle (1.5pt);
 \draw[fill] (0,0) circle (1.5pt);
 \node at (1,0){$\ldots$};
 \draw[fill] (2,0) circle (1.5pt);
 \draw[fill] ({(2+5)/2},0) circle (1.5pt);
 \draw[fill] (5,0) circle (1.5pt);
 %
 \node[anchor=north] at ($(-4,0) +(0,-0.25)$){\textit{b}};
 \node[anchor=south] at ($(-4,0) +(0,0.25)$){$\dfrac{0}{1}$};
 %
 \node[anchor=north] at ($(-2,0) +(0,-0.25)$){$b-1$};
 \node[anchor=south] at ($(-2,0) +(0,0.25)$){$\dfrac{1}{1}$};
 %
 \node[anchor=north] at ($(0,0) +(0,-0.25)$){$b-2$};
 \node[anchor=south] at ($(0,0) +(0,0.25)$){$\dfrac{2}{1}$};
 %
 \node[anchor=north] at ($(2,0) +(0,-0.25)$){\textit{b-n}};
 \node[anchor=south] at ($(2,0) +(0,0.25)$){$\dfrac{n}{1}$};
 %
 \node[anchor=north] at ($(5,0) +(0,-0.25)$){$b-(n+1)$};
 \node[anchor=south] at ($(5,0) +(0,0.25)$){$\dfrac{n+1}{1}$};
 %
 %A "pin" is drawn between the midpoint of the edge between the last two vertices and its label.
 \draw[draw=gray, line width=0.8pt, shorten <=1mm, shorten >=1mm] ({(2+5)/2},0)
 -- ({(2+5)/2},-1);
 \node[anchor=north] at ({(2+5)/2},-1){$2^{2}b-(n+1)2$};
 \node[anchor=south] (f2n) at ($({(2+5)/2},0) +(0,0.25)$){$\dfrac{2n+1}{2}$};
}};\\
};
%An arrow is drawn to the next diagram.
\draw[-latex, line width=0.8pt, shorten=7.5pt] (label_for_Vertex_b) to[bend right=30] node[midway, left=1.5mm, align=center]
 {Blow-up of\\vertex \textit{b}} (label_for_Farey_Fraction_at_Vertex_b);
%
\draw[-latex, line width=0.8pt, shorten=7.5pt] (label_for_Vertex_b-1) to[bend right=30] node[midway, left=1.5mm, align=center]
{Blow-up of\\vertex $b - 1$} (label_for_Farey_Fraction_at_Vertex_b-1);
%
\draw[-latex, line width=0.8pt, shorten=7.5pt] (label_for_Vertex_b-2) to[bend right=30] node[midway, left=1.5mm, align=center]
 {Blow-up of\\more vertices} (label_for_phantom_Farey_Fraction_at_ellipses);
%
\draw[-latex, line width=0.8pt, shorten=7.5pt] (label_for_Vertex_b-1) to[bend right=30] node[midway, left=1.5mm, align=center]
{Blow-up of\\vertex $b - 1$} (label_for_Farey_Fraction_at_Vertex_b-1);
%
\draw[-latex, line width=0.8pt, shorten <=30pt, shorten >=7.5pt] 
(label_for_Edge.south) -- (f2n.north);
\end{tikzpicture}
\end{document}

enter image description here

21
  • 1
    Using the scope environment is what I want! (I had forgotten about it.) I much prefer to keep the code using basic commands of TikZ. I only have a handful of diagrams that need to be typeset in my dissertation, and this is by far the most detailed of them. As this modification is the last one for this diagram, I would very much like to use the scope environment. This will keep the preamble in this file to little more than the mathtools and tikz packages.
    – user74973
    Dec 4, 2019 at 18:06
  • The last arrow is still too long. I magnified the image to verify.
    – user74973
    Dec 4, 2019 at 18:09
  • @user74973 The distance is set by \path ($(0,0|-edge label.south)+(0,-3)$) coordinate(auxp);, If you want some other distance, you need either to say \path ($(0,0|-edge label.center)+(0,-3)$) coordinate(auxp); or change -3 to your preferred value. I do not know which distance you want.
    – user194703
    Dec 4, 2019 at 18:12
  • I agree that that \path ($(0,0|-edge label.south)+(0,-3)$); should move the next scope environment 3cm down ... but do you see that the distances between the scope environments are not the same?
    – user74973
    Dec 4, 2019 at 18:19
  • 3
    @user74973 I believe to have found a much simpler and more precise method: put the layers into ("fake") pics. Then they will be measured by TikZ and changing the vertical distance between them is as simple as changing row sep. (BTW, I reopened your question, which was closed by a user who linked it to a post where this user wrote an answer. This seems to be a new feature, and only users above a certain reputation you can see what happened. Needless to spell out what I think of this.)
    – user194703
    Dec 6, 2019 at 4:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.