Re. MWE

Re. MWE

Tal vez esta pregunta sea ingenua, pero ¿cuándo tendré que usarla edgeen lugar de --? y ¿cómo puedo usarla edgepara replicar el mismo resultado del comando de dibujo convencional de ruta --?

\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows,positioning,shapes.geometric,calc}
\begin{document}
    \begin{tikzpicture}[>=latex',very thick,align=center]

        \tikzset{%
    block/.style= {draw, rectangle, text width=2cm,minimum height=1cm,align=center}
    }

    \node [block]  (start1) {Start1};
    \node [block, right = 1cm of start1.east] (end1) {End1};
    \node [block, below= 2cm of start1]  (start2) {Start2};
    \node [block, right = 1cm of start2] (end2) {End2};

    \path[draw,->] 
    (start1.north) -- ++(0,1cm) -- ++(3.25cm,0) -- (end1.north);
    \path[draw,->] 
    (start2.north) edge ++(0,1cm) edge ++(3.25cm,0) edge (end2.north);
    \end{tikzpicture}
\end{document}

ingrese la descripción de la imagen aquí

Respuesta1

Esta respuesta no intenta cubrir todos los detalles, sino más bien dar una explicación de "primer paso" de algunas de las diferencias.

edgeconstruye una ruta separada que puede tener atributos completamente diferentes de la ruta principal. A diferencia de los puntos del camino principal, un borde no se mueve a ninguna parte.

Esto no es realmente lo que sucede, pero escomo siesto pasa:

  1. Supongamos que comenzamos con un camino \path [draw=blue, -{Stealth[]}] (0,0).

    • Hasta ahora no hemos ido a ninguna parte. Hemos dicho que este camino debe estar dibujado y que debe tener una determinada punta de flecha. Nos hemos desplazado al origen para el inicio del camino.
  2. Así que continuamos con ++(1,0).

    • Esto nos mueve 1 unidad hacia la derecha, aún sin dibujar nada.
  3. Ahora sumamos -- ++(1,0).

    • Esto nos mueve otro 1 hacia la derecha y, esta vez, el camino está dibujado. Si ponemos ;aquí, obtendremos la punta de nuestra flecha aquí. Pero no hacemos eso, por lo que la propina aún no es necesaria.

    etapa 3

  4. Ahora, en lugar de continuar por el camino principal, agregamos edge ++(0,1}.

    • Podemos pensar en TikZ como si detuviera temporalmente la construcción del camino principal y tomara un desvío para hacer un pequeño camino lateral. Este camino va desde nuestra posición actual hasta 1 unidad. Por defecto, hereda los atributos de la ruta principal, por lo que es azul con una flecha. Cuando edgese completa la operación, TikZ vuelve al punto en el que inició el desvío. Es como entrar en una calle lateral para comprar pan en la panadería de camino a recoger a los niños del colegio. Una vez que tienes el pan, regresas a la calle principal para continuar hacia la escuela.

    etapa 4

  5. Ahora añadimos -- ++(1,0)a nuestro camino.

    • Así que, una vez que volvemos del desvío, continuaremos nuestra recta hacia la derecha.

    etapa 5

  6. A continuación, agregamos edge [draw=red, -{Circle[fill=green]}] ++(0,1).

    • Esta es otra diversión, pero esta vez dibujamos el borde en rojo y cambiamos la punta de la flecha. Por supuesto, esto sólo se aplica a nuestra diversión.

    etapa 6

    • Tenga en cuenta que esto no es posible con una ruta normal: no puede hacer que una parte de ella sea roja y otra azul, por ejemplo, pero puede edgetener atributos bastante diferentes de los de la ruta principal y de cualquier otro edgedibujado como parte de la ruta. mismo \pathcomando.
  7. Finalmente completamos el camino con -- ++(1,0);.

    etapa 7

Código completo:

\documentclass[tikz,border=10pt,multi]{standalone}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}[x=25mm, y=25mm, line width=1pt]
  \path [draw=blue, -{Stealth[]}] (0,0) ++(1,0) -- ++(1,0) edge ++(0,1) -- ++(1,0) edge [draw=red, -{Circle[fill=green]}] ++(0,1) -- ++(1,0);
  \foreach \i/\j in {(0,0)/{(0,0)},(1,0)/{++(1,0)},(2,0)/{++(1,0)},(3,0)/{++(1,0)},(4,0)/{++(1,0)}} \path \i node [below, ] {\j};
  \foreach \i/\j in {(2,1)/{++(0,1)},(3,1)/{++(0,1)}} \path \i node [right, ] {\j};
\end{tikzpicture}
\end{document}

Re. MWE

En el caso del ejemplo de la pregunta, por supuesto, puedes simplemente escribir

\documentclass[tikz,border=10pt,multi]{standalone}
\usetikzlibrary{arrows.meta,positioning}
\begin{document}
\begin{tikzpicture}
  [
    >=Latex,
    very thick,
    align=center,
    block/.style= {draw, rectangle, text width=2cm,minimum height=1cm,align=center},
  ]
  \node [block]  (start1) {Start1};
  \node [block, right = 1cm of start1.east] (end1) {End1};
  \node [block, below= 2cm of start1]  (start2) {Start2};
  \node [block, right = 1cm of start2] (end2) {End2};
  \path [draw, ->] (start1.north) -- ++(0,1cm) -- ++(3.25cm,0) -- (end1.north);
  \path [draw, ->] (start2.north) -- ++(0,1cm) -- ++(3.25cm,0) -- (end2.north);
\end{tikzpicture}
\end{document}

para producir

dos vueltas en U

Sin embargo, supongo que le gustaría saber cómo hacer este todo en uno, por así decirlo.

Los comandos de nodo y ruta anteriores podrían reemplazarse por las siguientes 2 rutas

  \path [draw, ->] node [block]   (start1) {Start1} (start1.north) |- ++(3.25cm,1cm) node [block, right=1cm of start1] (end1)  {End1} -- (end1);
  \path [draw, ->] node [block, below= 2cm of start1]   (start2) {Start2} (start2.north) |- ++(3.25cm,1cm) node [block, right=1cm of start2] (end2)  {End2} -- (end2);

que producen una producción idéntica o, de manera más concisa pero menos obvia, con

  \coordinate (start0);
  \foreach \i [evaluate=\i as \j using int(\i-1), evaluate=\j as \k using \j*2] in {1,2}
  \path [draw, ->] node [block, below=\k cm of start\j]   (start\i) {Start\i} (start\i.north) |- ++(3.25cm,1cm) node [block, right=1cm of start\i] (end\i)  {End\i} -- (end\i);

información relacionada