
Следующий 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) должна быть возможность добавлять имя в кавычки:
Подробно, когда загружена библиотека кавычек, каждый раз, когда пара ключ-значение в списке параметров, переданных ребру или команде пути, начинается с ", пара ключ-значение фактически должна быть строкой следующего вида:
"<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
скорее, чемраскрашиваниеего, необходимо использовать синтаксис, указанный в руководстве.