我可以画出三角形,但我不知道如何轻松画出箭头。这是我的尝试:
\documentclass[12pt]{book}
\usepackage{tikz}
\usetikzlibrary{arrows}
\usepackage{amsmath}
\begin{document}
\begin{tikzpicture}
\draw (-6, -3) -- (6, -3) -- (-2, 3) -- cycle; % Left - Right - Top
\draw (-4,0) -- (2, 0); % Horizontal Bisector
\draw (0, -3) -- (-4,0); % Left Bisector
\draw(0,-3) -- (2,0); % Right Bisector
\draw [->] (0.5, 0.825) -- (-0.5, 1.575); % slope -3/4
\end{tikzpicture}
\end{document}
看起来像这样:
计算每个箭头的长度、方向和位置会花掉我几个小时。有没有办法通过给出初始点、长度和方向来指定箭头?如果没有,有没有其他方法来绘制此图?我是 TikZ(以及 LaTeX)的初学者,所以我不一定非要寻找绝对最短的解决方案,而更需要寻找我能理解的解决方案。谢谢。
答案1
这是一个修改的版本to path
。因此,您需要用 替换--
,to
然后应用样式,例如
\draw[pft] (-6, -3) to (0, -3) to (-4,0) to cycle;
to path
经过修改,在路径中间附加了一个倾斜的箭头(来自库shapes.arrows
)。allow upside down
用于避免 Ti钾Z 以适合文本的方式智能地旋转箭头。我还将使用符号坐标,并且可以使用 将节点放置在三角形的中心barycentric cs:
。
\documentclass[tikz,border=3.14mm]{standalone}
\usetikzlibrary{shapes.arrows}
\begin{document}
\begin{tikzpicture}[pft/.style={to path={--(\tikztotarget)
node[midway,above=0.6em,marrow,allow upside down]{}}},
marrow/.style={sloped,fill, minimum height=3cm, single arrow, single arrow
head extend=.5cm, single arrow head indent=.25cm,xscale=0.3,yscale=0.15}]
\path (-6, -3) coordinate (A) (6, -3) coordinate (B) (-2, 3) coordinate (C)
(A) -- (B) coordinate[midway] (AB) (B) -- (C) coordinate[midway] (BC)
(C) -- (A) coordinate[midway] (CA);
\draw[pft] (A) to (AB) to (CA) to cycle
(AB) to (B) to (BC) to cycle
(CA) to (BC) to (C) to cycle
(CA) to (AB) to (BC) to cycle;
\path (barycentric cs:A=1,AB=1,CA=1) node{$T_1^{(1)}$}
(barycentric cs:AB=1,BC=1,CA=1) node{$T_2^{(1)}$}
(barycentric cs:CA=1,BC=1,C=1) node{$T_3^{(1)}$}
(barycentric cs:B=1,AB=1,BC=1) node{$T_4^{(1)}$};
\end{tikzpicture}
\end{document}
答案2
您可以使用show path construction
和markings
装饰在每个路径段旁边放置一个箭头。限制在于您必须重复路径中的最后一个点(-- cycle
单独使用是不行的),并且必须注意绘制路径的方向。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.markings,decorations.pathreplacing}
\begin{document}
\begin{tikzpicture}[
parallel arrows/.style={
postaction=decorate,
decoration={
show path construction,
lineto code={
\path[
postaction=decorate,
decoration={
markings,
mark=at position .5 with {
\draw[red,-stealth] (-.5,.1) -- (.5,.1);
}
}
] (\tikzinputsegmentfirst) -- (\tikzinputsegmentlast);
}
}
}
]
\draw[parallel arrows] (-6,-3) -- (0,-3) -- (-4,0) -- (-6,-3) -- cycle;
\draw[parallel arrows] (0,-3) -- (6,-3) -- (2,0) -- (0,-3) -- cycle;
\path[parallel arrows] (-4,0) -- (0,-3) -- (2,0) -- (-4,0) -- cycle;
\draw[parallel arrows] (-4,0) -- (2,0) -- (-2,3) -- (-4,0) -- cycle;
\end{tikzpicture}
\end{document}