
Tengo la siguiente imagen tikz:
\documentclass{book}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node(x1) {$x_1$};
\node(x2) [right of = x1] {$x_2$};
\node(x3) [right of = x2]{$x_3$};
\node(x4) [right of = x3]{$x_4$};
\draw [->] (x1) -- (x2) ;
\draw [->] (x2) -- (x3) ;
\draw [->] (x3) -- (x4) ;
\node(y1) [below of = x1]{$y_1$};
\node(y2) [right of = y1] {$y_2$};
\node(y3) [right of = y2] {$y_3$};
\node(y4) [right of = y3] {$y_4$};
\draw [->] (y1) -- (x1) ;
\draw [->] (y2) -- (x2) ;
\draw [->] (y3) -- (x3) ;
\draw [->] (y4) -- (x4) ;
\end{tikzpicture}
\end{document}
Quiero que las flechas sean más largas. Cuando uso "acortar >= -5pt", por ejemplo, en el comando de dibujo entre corchetes, las flechas se alargan, pero pasan por encima de los nodos. ¿Hay alguna manera de hacer todo más espacioso, además de alargar las flechas?
Además, ¿hay alguna forma de insertar otro nodo a la izquierda de una de las flechas verticales? (o más específicamente, ¿cómo puedo indicar "abajo de" o "izquierda de", etc. para una flecha, y no un nodo?) Intenté \draw(arr1) etiquetar la flecha y luego puse un nodo en el a la izquierda de arr1, pero aparece un error.
Respuesta1
No deberías usar below of = node
. Está en desuso (verDiferencia entre "derecha de=" y "derecha=de" en PGF/TikZ). En su lugar, utilice la positioning
biblioteca de tikz. Te permite escribir right = 1.5cm of node
. Puedes variar u omitir la distancia.
Para etiquetar una ruta, simplemente agregue node[left] {label 1}
detrás del archivo --
. Puede agregar pos=value
un valor entre 0 y 1 a las opciones del nodo para especificar la posición en la ruta.
Ejemplo
(tu código modificado)
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\node(x1) {$x_1$};
\node(x2) [right = 1.5cm of x1] {$x_2$};
\node(x3) [right = 1.5cm of x2]{$x_3$};
\node(x4) [right = 1.5cm of x3]{$x_4$};
\draw [->] (x1) -- (x2) ;
\draw [->] (x2) -- (x3) ;
\draw [->] (x3) -- (x4) ;
\node(y1) [below = 2 of x1]{$y_1$};
\node(y2) [below = 2 of x2] {$y_2$};
\node(y3) [below = 2 of x3] {$y_3$};
\node(y4) [below = 2 of x4] {$y_4$};
\draw [->] (y1) -- node[left, pos=0.2] {beginning} (x1) ;
\draw [->] (y2) -- node[left, pos=.8] {ending} (x2) ;
\draw [->] (y3) -- node[left] {label 3} (x3) ;
\draw [->] (y4) -- node[left] {label 4} (x4) ;
\end{tikzpicture}
\end{document}
Resultados en:
Respuesta2
Observaciones
Puede especificar la distancia predeterminada entre los nodos, que se colocan usando right of=
, left of=
etc. usando la tecla node distance=<length>
.
Para colocar un nodo a lo largo de una ruta, simplemente insértelo después de la operación de línea, es decir
\draw (0,0) -- node {on the path} (4,0);
Si desea que el texto tenga pendiente con su trazado, utilice la sloped
clave como opción para el nodo.
Lea más sobre la colocación de nodos en elDocumentación de TikZen la sección 16.8 en la página 190. También podría interesarle el tutorial "Una red de Petri para Hagen", que investiga en nodos y se puede encontrar en el capítulo 3 en la página 40.
Implementación
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}[node distance=2.5cm]
\node(x1) {$x_1$};
\node(x2) [right of = x1] {$x_2$};
\node(x3) [right of = x2] {$x_3$};
\node(x4) [right of = x3] {$x_4$};
\draw [->] (x1) -- (x2) ;
\draw [->] (x2) -- (x3) ;
\draw [->] (x3) -- (x4) ;
\node(y1) [below of = x1]{$y_1$};
\node(y2) [right of = y1] {$y_2$};
\node(y3) [right of = y2] {$y_3$};
\node(y4) [right of = y3] {$y_4$};
\draw [->] (y1) -- node[sloped,below] {(y1) $\to$ (x1)} (x1) ;
\draw [->] (y2) -- node[sloped,below] {(y2) $\to$ (x2)} (x2) ;
\draw [->] (y3) -- node[sloped,below] {(y3) $\to$ (x3)} (x3) ;
\draw [->] (y4) -- node[sloped,below] {(y4) $\to$ (x4)} (x4) ;
\end{tikzpicture}
\end{document}