可以将名称添加到边缘引号吗?

可以将名称添加到边缘引号吗?

以下 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);

红哈利

这适用redMy name is Harry.和。当然,这种差异通常无关紧要,因为路径上的节点会从这些路径继承属性。所以如果你只是blueedge

  \path (0,0) edge [blue, "My name is Harry."{name=Harry}] (1,1);

和 都Harryedgeblue

蓝色哈利

但这并不是因为blue直接适用于,Harry而只是因为路径上的节点默认从这些路径继承颜色。但是,名称不是以这种方式继承的。因此,如果你想姓名 Harry而不是染色他,你必须使用手册中指定的语法。

相关内容