
¿Es posible cambiar el estilo de línea en una figura tikz en el mismo \draw
comando?
Estoy buscando algo como:
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\draw[style1] (0,0) -- ++(1,0) **CHANGE STYLE** -- ++(1,0);
\end{tikzpicture}
\end{document}
La motivación principal es que no quiero perder la coordenada relativa mientras sigo con un \draw
comando largo.
Respuesta1
No puedes tener varios estilos de línea dentro de la misma ruta. Puede insertar corchetes prácticamente en cualquier lugar de una ruta para cambiar las opciones, pero la mayoría de ellos afectarán a toda la ruta.
Una salida es utilizar la edge
operación, que es similar a un nodo en el sentido de que en realidad es una ruta separada:
\draw[style1] (0,0) -- ++(1,0) edge[style2] ++(1,0);
Esto funciona bien para líneas rectas y curvas básicas (pruebe bend left
y in angle
como out angle
opciones en style2
).
Agregando a la respuesta de Jens Polz, sugeriría usar la coordinate
operación en lugar de node
: al usarla, no es necesario proporcionar contenidos de nodo vacíos y tampoco aparecen espacios en el camino:
\draw[style1] (0,0) -- ++( 1,0) coordinate (x);
\draw[style2] (x) -- ++( 0,1) coordinate (x);
\draw[style3] (x) -- ++(-1,0);
Es posible reutilizar el mismo nombre para esta coordenada temporal.
Respuesta2
No estoy muy seguro de si se puede cambiar el estilo dentro de un comando de trazado, por lo que yo mismo estaría interesado en una respuesta a su pregunta. Sin embargo, para no perder las coordenadas relativas, puedes hacer lo siguiente. Al colocar y nombrar un nodo en la última coordenada de su comando de trazado, puede llamarlo en el siguiente, sin perder sus coordenadas relativas:
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\draw[thick] (0,1) -- ++ (1,0) -- ++ (4,2) -- ++ (1,1) node(A)[inner sep=0]{};
\draw[thick, dashed] (A) -- ++ (-2,0) -- ++ (0,-2) node(B)[inner sep=0]{};
\draw[thick] (B) -- ++ (2,0);
\end{tikzpicture}
\end{document}