Tikz: ¿Es posible cambiar el estilo de línea dentro del mismo comando \draw?

Tikz: ¿Es posible cambiar el estilo de línea dentro del mismo comando \draw?

¿Es posible cambiar el estilo de línea en una figura tikz en el mismo \drawcomando?

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 \drawcomando 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 edgeoperació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 lefty in anglecomo out angleopciones en style2).

Agregando a la respuesta de Jens Polz, sugeriría usar la coordinateoperació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}

información relacionada