![Tikz 描述节点的“范围线”样式](https://linux22.com/image/435725/Tikz%20%E6%8F%8F%E8%BF%B0%E8%8A%82%E7%82%B9%E7%9A%84%E2%80%9C%E8%8C%83%E5%9B%B4%E7%BA%BF%E2%80%9D%E6%A0%B7%E5%BC%8F.png)
我正在尝试模拟此图所示的描述性注释的风格:
我想要几个功能:
- 正交线
- 颜色
- 行尾的圆圈位于文档中的特定位置(用于注释图形或某些文本)
- 一条横跨文本描述高度的垂直线(一种“范围线”),正交线垂直连接到该线(能够将交点定位在线上的不同点)
我对如何获得 1、2 和 3 有基本的了解,我将在下面的 MWE 中演示,但 4 给我带来了一些麻烦。我考虑过使用该decorations.pathreplacing
功能,但只能获得花括号,而不能获得直线(而且我似乎甚至无法将花括号定位得非常正确,以防我也想使用它们作为另一种选择)。
任何帮助是极大的赞赏!
梅威瑟:
\documentclass[border=3mm]{standalone}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,decorations.pathreplacing}
\begin{document}
\begin{tikzpicture}
\draw (0,0) -- (8,8); % just to get something on the page
\node (n1) at (7,2) [anchor=west,text width=3cm] {Some description about something};
\draw [-{Circle},color=ForestGreen] (n1.west) -| (5,4);
\draw [decorate,decoration={brace,amplitude=2pt,mirror,raise=0pt},color=ForestGreen] (n1.north west) ++(3pt,0) coordinate (s) -- (n1.south west -| s);
\end{tikzpicture}
\end{document}
其渲染效果为:
答案1
由于您已经从节点到对象绘制了线。您可以使用相同的命令绘制所需的边框:
\documentclass[border=3mm]{standalone}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}
\draw (0,0) -- (8,8); % just to get something on the page
\node[text width=3cm, align=left, anchor=west] (n1) at (7,2) {Some description about something};
\draw [-{Circle},color=ForestGreen] (n1.north west) -- (n1.south west) (n1.west) -| (5,4);
\end{tikzpicture}
\end{document}
更新:
inner ysep=0pt
可以固定调整横条以适应文本,并且shifting
可以使用一些垂直线将交叉点移动到中心上方或下方。
\documentclass[border=3mm]{standalone}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}
\draw (0,0) -- (8,8); % just to get something on the page
\node[text width=3cm, align=left, anchor=west, inner ysep=0pt] (n1) at (7,2) {Some description about something};
\draw [-{Circle},color=ForestGreen] (n1.north west) -- (n1.south west) ([yshift=2mm]n1.west) -| (5,4);
\end{tikzpicture}
\end{document}