如何正确居中 TikZ 圆形箭头

如何正确居中 TikZ 圆形箭头

我想使用o-TikZ 中的箭头突出显示图片中的某些点并为它们分配标签。以下是 MWE:

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows}
\begin{document}

\begin{tikzpicture}
  \node at (0,0) {+};
  \draw[o-,red] (0,0) -- (1,1) node[above] {some label};
\end{tikzpicture}

\end{document}

它产生以下输出:

带标签的点 - 错误

然而,我想要这样的东西:

带标签的点 - 正确

我已经通过使用获得了正确的解决方案

\draw[o-,red, shorten <= -2.3pt] (0,0) -- (1,1) node[above] {some label};

效果很好,但是,这不是一个好的解决方案,因为如果我改变箭头的大小或线宽,事情就会变得一团糟,我必须再次找出正确的缩短值。此外,它不是很准确,找到正确的缩短值很麻烦。如果o-Tikz 中箭头的锚点位于圆的中心,那就更实用了。我该如何实现呢?

答案1

Peter Grill 的回答才是正确选择,我会说。这里只是向您展示一些选项,同时提一下,该arrows库已被取代arrows.meta

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\begin{document}

\begin{tikzpicture}
  \node[outer sep=0pt] (plus) at (0,0) {+};
  \draw[{Circle[open,width=width("+"),length=width("+")]}-,red,shorten <={-1/2*width("+")}] (plus.center) -- (1,1) node[above] {some label};
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案2

一种方法是不是使用o-箭头样式并在创建时绘制圆圈\node

\node [circle, draw=red, inner sep=-1pt] (Plus Sign) at (0,0) {+}

在这里,我命名了这个节点,(Plus Sign)以便我们不需要重新指定坐标就可以画出到这个节点的线:

\draw[-,red] (Plus Sign) -- (1,1) node[above] {some label};

在此处输入图片描述

或者你也可以使用pin

在此处输入图片描述

代码:

\documentclass[border=1pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows}
\begin{document}

\begin{tikzpicture}
  \node [circle, draw=red, inner sep=-1pt] (Plus Sign) at (0,0) {+};
  \draw[-,red] (Plus Sign) -- (1,1) node[above] {some label};
\end{tikzpicture}

\end{document}

代码:pin

\documentclass[border=1pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\begin{document}

\begin{tikzpicture}
  \node  (Plus Sign) at (0,0) {+};
  \node [circle, draw=red, inner sep=1pt, pin={[pin edge={red, thin}, pin distance=1.4cm, pin position=45, text=red] {some label}}] at (Plus Sign)  {};
\end{tikzpicture}
\end{document}

相关内容