![重新定位和调整圆形(弧形)路径上的箭头尖的大小](https://linux22.com/image/256753/%E9%87%8D%E6%96%B0%E5%AE%9A%E4%BD%8D%E5%92%8C%E8%B0%83%E6%95%B4%E5%9C%86%E5%BD%A2%EF%BC%88%E5%BC%A7%E5%BD%A2%EF%BC%89%E8%B7%AF%E5%BE%84%E4%B8%8A%E7%9A%84%E7%AE%AD%E5%A4%B4%E5%B0%96%E7%9A%84%E5%A4%A7%E5%B0%8F.png)
我正在处理一些图表,我想指出与顶点相关的边的特定方向。使用一些帮助我已经做到了这一点:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows}
\begin{document}
\begin{tikzpicture}
\node[style={circle,draw=black,inner sep=1.4pt,fill}] (a) at (0,0) {};
\draw[->,>=latex',dashed,line width=.8pt] (.25,0) arc (0:-340:.25);
\end{tikzpicture}
\end{document}
因此,我有一个用弧线路径和围绕中心节点的乳胶隐形箭头制成的虚线圆形路径。
从图中可以清楚地看出,箭头的尖端相当小,并且不对称于它所在的路径。如果我没有记错的话,不对称是因为箭头的锚点位于尖端本身的尖端,并且正好位于圆形路径上,而尖端的其余部分则位于路径的切线上。尺寸是另一个问题。所以:
- 我如何重新定位箭头尖,以使其相对于图形中心在圆形路径上对称?
我所说的“图形中心”是指线段的中值,沿着中心轴从尖端开始,到箭头尖端形状结束的位置结束。
- 我怎样才能使箭头变得更大?
对于后一点,我使用过(但还没有完全理解)的一个临时解决办法是
\draw[decoration={markings,mark=at position 0.999 with {\arrow[very thick]{>}}},
postaction={decorate},shorten >=1.5pt]
使用decorations.markings
tikz 包。位置设置为 0.999,因为当路径曲线急剧弯曲时,箭头尖端有时根本不会出现。这会采用very thick
样式路径的箭头尖端,但是否有其他箭头尖端(可能来自第三方包)明显更大?或者可能只是一种仅放大尖端的方法?
编辑:只需在尖端形状中绘制一个更大的形状并将其用作箭头,就可以解决使尖端变大的问题。由于有许多可调整的参数,效果很好。感谢评论中的 Luigi。
答案1
作为第一个问题的解决方案,您可以添加一个(非常)小的段来选择箭头的方向:
\documentclass[margin=5pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows}
\begin{document}
\begin{tikzpicture}
\node[style={circle,draw=black,inner sep=1.4pt,fill}] (a) at (2,3) {};
\draw[->,>=latex',dashed,line width=.8pt]
(a) ++(.25,0) arc (360:30:.25) -- ++(-45:1pt);
\end{tikzpicture}
\end{document}
答案2
- 转向:已经加载
bending
库将箭头转向正确的方向。 - 调整大小:您可以通过箭头键选项更改大小,例如
>={LaTeX[length=4pt]}
。 - 弯曲:您可以弯曲箭头以更好地适应圆形。
所有至少需要 TikZ 3.0。
比较:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,bending}
\begin{document}
\begin{tikzpicture}
\node[style={circle,draw=black,inner sep=1.4pt,fill}] (a) at (0,0) {};
\draw[->,>={LaTeX[length=4pt]},dashed,line width=.8pt] (.25,0) arc (0:-340:.25);
\end{tikzpicture}
\begin{tikzpicture}
\node[style={circle,draw=black,inner sep=1.4pt,fill}] (a) at (0,0) {};
\draw[->,>={LaTeX[length=4pt,bend]},dashed,line width=.8pt] (.25,0) arc (0:-340:.25);
\end{tikzpicture}
\end{document}