
Я могу нормально размещать метки на обычных краях, но если к краю применить стиль, метка перестает применяться.
Есть идеи, что происходит/как это исправить?
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{graphs,quotes}
\begin{document}
\tikz[hv path/.style = {to path={-| (\tikztotarget)}}]
\graph[grow down sep, branch right = 4em] {
A ->["this prints"] B ->{C,D};
A ->[hv path,"this doesn't"] D;
};
\end{document}
решение1
Узлы фактически применяются, однако они не отображаются, поскольку to path
объявление hv path
не содержит \tikztonodes
макрос, который затем будет расширен до узлов, собранных в какой-то момент библиотекой quotes
.
Полное и правильное определение hv path
:
hv path/.style = {to path={-| (\tikztotarget) \tikztonodes}
Узлы по умолчанию размещаются в точке pos = .5
(= midway
) вдоль пути. В обычных линиях-tos это фактическая середина линии. В ортогональных путях -|
это |-
угол. Позиция pos = .75
(= near end
) находится в средней точке второй части. (См. такжеУзел на соединенном пути TikZ.)
Клавишу swap
(или ее сокращение '
) можно использовать для размещения узла вдоль пути на другой стороне. (Граф использует внутренне параметр, auto
который по умолчанию равен auto=left
. swap
Клавиша меняет его на auto=right
и наоборот.)
Код
\documentclass[tikz]{standalone}
\usetikzlibrary{graphs,quotes}
\begin{document}
\tikz[hv path/.style = {to path={-| (\tikztotarget) \tikztonodes}}]
\graph[grow down sep, branch right = 4em] {
A ->["this prints", '] B ->{C,D};
A ->[hv path,"this doesn't" near end] D;
};
\end{document}