以下 MWE 按预期工作:
\documentclass[tikz, margin=3mm]{standalone}
\usetikzlibrary{quotes}
\begin{document}
\begin{tikzpicture}
\path (0,0) edge node[auto] (label) {label} (1,1);
\draw (label.south west) rectangle (label.north east);
\end{tikzpicture}
\end{document}
然而,当我尝试替换代码行时
\path (0,0) edge node[auto] (label) {label} (1,1);;
和
\path (0,0) edge ["label",name=label] (1,1);
我收到错误“没有名为 fr0 的未知形状”...
我预计,根据 TikZ 手册(第 237 页)中的描述,应该可以为引号添加名称:
具体来说,当加载 quotes 库时,每次传递给 edge 或 to path 命令的选项列表中的键值对以 " 开头时,该键值对实际上必须是以下形式的字符串:
"<text>"’<options>
该字符串转换为以下内容:
edge node=node [every edge quotes]<options>]{<text>}
问题:
- 是否可以为边缘引用添加名称,以便以后可以将其用作坐标,如上图所示?
- 如果可能的话,如何做到这一点?
答案1
您的代码不遵循指定的语法。
使用一个更简单的例子:
\documentclass[tikz]{standalone}
\usetikzlibrary{quotes}
\begin{document}
\begin{tikzpicture}
\path (0,0) edge ["My name is Harry."{name=Harry}] (1,1);
\draw (Harry.south west) rectangle (Harry.north east);
\end{tikzpicture}
\end{document}
当你说
<options>, "<text>"
<options>
适用于 而edge
不是edge quotes
。您必须使用
"<text>"<options>
正如手册所说,如果您想<options>
申请edge quotes
而不是edge
。
比较
\path (0,0) edge [blue, "My name is Harry."{name=Harry, red}] (1,1);
这适用red
于My name is Harry.
和。当然,这种差异通常无关紧要,因为路径上的节点会从这些路径继承属性。所以如果你只是blue
说edge
\path (0,0) edge [blue, "My name is Harry."{name=Harry}] (1,1);
和 都Harry
将edge
是blue
。
但这并不是因为blue
直接适用于,Harry
而只是因为路径上的节点默认从这些路径继承颜色。但是,名称不是以这种方式继承的。因此,如果你想姓名 Harry
而不是染色他,你必须使用手册中指定的语法。