我想使用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}