![Добавление стрелок к прямоугольникам в TikZ](https://rvso.com/image/309867/%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%20%D1%81%D1%82%D1%80%D0%B5%D0%BB%D0%BE%D0%BA%20%D0%BA%20%D0%BF%D1%80%D1%8F%D0%BC%D0%BE%D1%83%D0%B3%D0%BE%D0%BB%D1%8C%D0%BD%D0%B8%D0%BA%D0%B0%D0%BC%20%D0%B2%20TikZ.png)
Можно ли украсить прямоугольники стрелками? Я использовал:
\node [draw,rectangle,minimum width=4cm,minimum height=4cm](r){};
Но тогда действительно сложно выровнять край так, чтобы он был на одном уровне с краем прямоугольника, есть ли более простой способ? Я хочу, чтобы это выглядело так:
решение1
Ваш прямоугольник — это node
. Следовательно, вы можете разместить узел в форме стрелки на его якорях, например south
и 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}
Для изменения формы стрелки вы можете обратиться к pgfmanual
странице 725, разделу 67.5, под заголовком «Форма» single arrow
.
решение2
И вот простойМетапостподход.
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.
Отрегулируйте ad_rho
и ad_phi
для управления формой стрелки. Или просто измените определение a
в макросе, чтобы оно подходило.