Si te encuentras con alguna parte que te causa duda puedes dejarlo en la sección de comentarios y te ayudaremos lo más rápido posible.
Solución:
los decorations
La biblioteca se puede utilizar para todo tipo de cosas como esta. Desafortunadamente, es un poco detallado.
usetikzlibrarydecorations.markings
beginscope[very thick,decoration=
markings,
mark=at position 0.5 with arrow>
]
draw[postaction=decorate] (-4,0)--(4,0);
draw[postaction=decorate] (4,0)--(4,2);
draw[postaction=decorate] (4,2)--(-4,2);
draw[postaction=decorate] (-4,2)--(-4,0);
endscope
Editar: Una solución general para aplicar algunos estilos (como poner una flecha en el medio) a cada segmento de una ruta arbitraria.
Hay dos estilos:
-
la
on each segment
El estilo utiliza elshow path construction
decoración dedecorations.pathreplacing
biblioteca para aplicar algunos estilos (su argumento) en cada segmento de una ruta. -
la
mid arrow
style usa el método de la respuesta de Caramdir (a través dedecorations.markings
biblioteca) a poner una flecha en medio de un camino (su argumento es el color de la flecha).
Primero, el preámbulo:
documentclassstandalone
usepackagetikz
usetikzlibrarydecorations.pathreplacing,decorations.markings
Los dos estilos:
tikzset
% style to apply some styles to each segment of a path
on each segment/.style=
decorate,
decoration=
show path construction,
moveto code=,
lineto code=
path [#1]
(tikzinputsegmentfirst) -- (tikzinputsegmentlast);
,
curveto code=
path [#1] (tikzinputsegmentfirst)
.. controls
(tikzinputsegmentsupporta) and (tikzinputsegmentsupportb)
..
(tikzinputsegmentlast);
,
closepath code=
path [#1]
(tikzinputsegmentfirst) -- (tikzinputsegmentlast);
,
,
,
% style to add an arrow in the middle of a path
mid arrow/.style=postaction=decorate,decoration=
markings,
mark=at position .5 with arrow[#1]stealth
,
Luego el resultado y el documento:
begindocument
begintikzpicture
path [draw=blue,postaction=on each segment=mid arrow=red]
(.2,0) -- (3,1) arc (0:180:1.4 and 1) -- cycle
(4,1) circle(.8)
(6,1) ellipse(.5 and 1)
(0,3) to [bend left] (3,4)
(4,3) rectangle (6,4)
;
endtikzpicture
enddocument
Actualización: 2020-02-22: Este código ha sido reemplazado y no debe usarse. También anida tikzpictures, algo que más tarde me di cuenta de que no era bueno. La respuesta de Caramdir es la mejor solución integral, pero si desea algo parecido a este, entonces la respuesta de Kpym usando pic
s tiene el mismo espíritu que este pero sin los inconvenientes.
Dado que la sintaxis precisa que especifica no es posible, aquí hay algo que logra el efecto deseado sin tener que especificar las coordenadas de los puntos medios.
documentclassarticle
thispagestyleempty
usepackagetikz
usetikzlibraryarrows
newcommandmidarrowtikz draw[-triangle 90] (0,0) -- +(.1,0);
begindocument
begintikzpicture
beginscope[very thick, every node/.style=sloped,allow upside down]
draw (-4,0)-- node midarrow (4,0);
draw (4,0)-- node midarrow (4,2);
draw (4,2)-- node midarrow (-4,2);
draw (-4,2)-- node midarrow (-4,0);
endscope
endtikzpicture
enddocument
(la arrows
la biblioteca tikz es solo para obtener puntas de flecha más prominentes)
Esto produce:
(No estoy seguro de qué es esa línea vertical en el lado derecho. No está en el original, por lo que debe ser un artefacto del proceso pdf->png)
Te mostramos las comentarios y valoraciones de los usuarios
Agradecemos que desees añadir valor a nuestra información aportando tu experiencia en las críticas.