Agregar flechas a rectángulos en TikZ

Agregar flechas a rectángulos en TikZ

¿Es posible decorar rectángulos con flechas? Solía:

\node [draw,rectangle,minimum width=4cm,minimum height=4cm](r){};

Pero entonces es realmente difícil alinear un borde para que quede nivelado con el borde del rectángulo, ¿hay alguna manera más fácil? Quiero que se vea así:

ingrese la descripción de la imagen aquí

Respuesta1

Tu rectángulo es un node. Por lo tanto, puede colocar un nodo con forma de flecha en sus anclajes como southy east.

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes.arrows}

\tikzset{
myarrow/.style={
  draw,thick,
  single arrow,
  text width=1cm,
  fill=white
  },
}


\begin{document}
 \begin{tikzpicture}
   \node [draw,rectangle,minimum size=4cm](r){};
   \node[myarrow,rotate=90] at (r.east){};
   \node[myarrow] at (r.south){};
 \end{tikzpicture}%
\end{document}

ingrese la descripción de la imagen aquí

Para modificar la forma de la flecha, puede consultar la pgfmanualpágina 725, sección 67.5, en forma single arrow.

Respuesta2

Y aquí hay un simpleMetapostacercarse.

ingrese la descripción de la imagen aquí

prologues := 3;
outputtemplate := "%j%c.eps";

ad_phi = 1/2;
ad_rho = 7/8;

% return the path of an arrow scaled to size "s" at time "t" on path "p"
vardef arrow_decor(expr s, t, p) = 
  save a; path a;
  a = ((1,0) -- (0,ad_rho) -- (0,ad_phi) -- (-1,ad_phi) 
      -- (-1,-ad_phi) -- (0,-ad_phi) -- (0,-ad_rho) -- cycle) 
      scaled 1/2 s
      rotated angle direction t of p 
      shifted point t of p;
  unfill a;
  a
  enddef;

beginfig(1);
path R; 
R = unitsquare xscaled 55 yscaled 34;
draw R; 
for t = 1/2 step 1 until 4:
  draw arrow_decor(8, t, R);
endfor
endfig;
end.

Ajusta ad_rhoy ad_phipara controlar la forma de la flecha. O simplemente cambie la definición de aen la macro para adaptarla.

información relacionada