
通常のエッジにはラベルを問題なく配置できますが、エッジにスタイルが適用されている場合は、ラベルは適用されなくなります。
何が起こっているのか、これをどう修正するのか、何かご存知ですか?
\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
) に配置されます。通常のラインツーでは、これはラインの実際の中央にあります。直交パスでは-|
、|-
これはコーナーにあります。位置pos = .75
(= near end
) は、2 番目の部分の中間点にあります。(結合された 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}