
Я решил, что мне не нравится поведение функциональности меток TikZ. Я хочу получить метки, которые позиционируются с использованием якоря напротив указанного угла метки. Так, например, если метка будет указана в списке параметров узла как , [..., label = {210: my label}, ...]
то метка должна быть позиционирована под углом 210 с использованием ее (метки) 30
якоря (210 +/- 180 равно 30 по модулю 360). (Логика позиционирования меток TikZ этого не делает. Вместо этого (согласно руководству 3.00) она выбирает один из 8 якорей north
, north east
, east
, ..., north west
для метки, в зависимости от угла.)
Поскольку маркированные узлы будут создаваться внутри макроса, а не путем непосредственного ввода кода TikZ, казалось, что будет достаточно просто создать узел метки самому, не используя функциональность «метки». Однако нужно еще получить право label distance
. И я хочу, чтобы расстояние метки реагировало на изменения ключа TikZ label distance
, как это делают настоящие метки TikZ.
Однако, похоже, нет ключа /tikz/ или /pgf/, который хранит label distance
. Есть /tikz/label distance
, но он, по-видимому, используется для установки расстояния между метками, а не для их хранения; если вы попытаетесь прочитать его с помощью \pgfkeysgetvalue
, вы получите \relax
. Просматривая код для TikZ, кажется, что текущее расстояние между метками хранится в макросе с именем \tikz@label@distance
. Поэтому я попробовал код, который копирует значение этого макроса и использует его для позиционирования эрзац-метки, и он, похоже, работает правильно.
Мой вопрос в том, является ли это тем способом, которым я "должен" определять расстояние между метками? Под этим я подразумеваю, что то, что я делаю здесь, это заглядываю "под капот" Tikz/PGF и ковыряюсь в его внутренностях. Если более поздняя версия TikZ/PGF переименует макрос \tikz@label@distance
или начнет использовать, скажем, ключ PGFkeys для его хранения, мой код сломается. Есть ли лучший способ?