经过反复尝试,以及一些帮助堆栈溢出问题我能够整理出以下代码:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.pathreplacing}
\begin{document}
\begin{itemize}
\item one length
\tikz[remember picture] \node[coordinate, yshift=0.7em] (n1) {};
\item another length
\tikz[remember picture] \node[coordinate, yshift=-0.2em] (n2) {};
\item the longest length
\tikz[remember picture] \node[coordinate, yshift=-0.2em] (n3) {};
\item short
\tikz[remember picture] \node[coordinate, yshift=-0.2em] (n4) {};
\end{itemize}
\begin{tikzpicture}[overlay,remember picture]
\path (n4) -| node[coordinate] (n5) {} (n3);
\path (n1) -| node[coordinate] (n6) {} (n3);
\draw[thick,decorate,decoration={brace, amplitude=4pt}]
(n6) -- (n5) node[midway, right=3pt]{brace text};
\end{tikzpicture}
\end{document}
产生
就像期望的那样。但是,我有点不确定它为什么会起作用。
路径线是不是\path (n4) -| node[coordinate] (n5) {} (n3);
读起来像“在直角坐标系中创建一个与n4
x 和n3
y 对齐的节点”?
答案1
您基本上是对的,但我通常对此的看法略有不同:我认为这行代码应该为“在从 到n4
的矩形路径的中间位置创建一个节点n5
”。结果几乎相同,但区别在于您不仅指定坐标,而且实际上是指定完整路径,并在其上放置一个节点。
表达方式
\path (0,0) -| node {X} (3,1);
和
\path (0,0) -| (3,1) node [pos=0.5] {X};
是等效的,它们都将节点定位在坐标 处(3,0)
。位置0.5
定义为线性路径的中点,以及矩形路径的角点。node
在线类型(--
、|-
或-|
)和第二个坐标之间使用关键字将节点放置在位置 处0.5
,在第一个坐标和线类型之间使用它将节点放置在位置 处0
,在第二个坐标之后使用它将节点放置在位置 处1
。
上述表达式还将边界框(以及图片的大小)设置为包含点(0,0)
和,因为您定义了从到的(3,1)
整个路径。(0,0)
(3,1)
如果你只想定位节点而不改变边界框,则应该使用语法
\node at (0,0 -| 3,1) {X};
它指定了和之间的直角坐标系中的坐标(0,0)
,而(3,1)
无需指定整个路径。