![tikz 树节点的边缘始终在线上方,而不仅仅是在线上](https://linux22.com/image/348201/tikz%20%E6%A0%91%E8%8A%82%E7%82%B9%E7%9A%84%E8%BE%B9%E7%BC%98%E5%A7%8B%E7%BB%88%E5%9C%A8%E7%BA%BF%E4%B8%8A%E6%96%B9%EF%BC%8C%E8%80%8C%E4%B8%8D%E4%BB%85%E4%BB%85%E6%98%AF%E5%9C%A8%E7%BA%BF%E4%B8%8A.png)
我正在为我的本科论文构建攻击树。我需要通过逻辑与运算符连接一些子节点。所以我只是在这些节点之间画了一条线,并在其上放置了一个节点。
遗憾的是,我无法将边缘标签直接放在(隐藏)线上,它总是在中间。我不知道为什么……希望你能帮助我。
这是一个简单的例子:
\documentclass[a4paper,12pt,headsepline,dvipsnames,bibliography=totocnumbered]{scrartcl}
\usepackage{tikz}
\usepackage{tikz-qtree}
\usetikzlibrary{trees}
\begin{document}
\tikzset{
attackTree/.style={
auto,
font=\small,
edge from parent fork down,
level distance=2.5cm,
every node/.style=
{ rectangle,
minimum height=15mm,
minimum width=30mm,
draw=black,
align=center,
text depth = 0pt
},
edge from parent/.style=
{ draw=black}
},
treeOperator/.style={
minimum width=0,
minimum height=0,
draw=none
}
}
\begin{tikzpicture}[
attackTree,
sibling distance=35mm
]
\node {Open safe}
child{
node {Pick lock}
}
child{node {Learn combo}
child{node {Find written\\combo}}
child{node {Get combo\\from target}
child{node{Threaten}}
child{node{Blackmail}}
child{node{Eavesdrop}
child{node(listen){Listen to\\conversation}}
child{node(state){Get target to\\state combo}}
}
child{node{Bribe}}
}
}
child{node {Cut open safe}}
child{node {Install\\improperly}};
\draw[draw=none] (listen) -- (state) node[treeOperator,midway] {$\wedge$};
\end{tikzpicture}
\end{document}
我只想让逻辑与运算符位于隐藏线的正中央。我的设置中一定有一个选项,可以防止它位于应在的位置,但我不知道是哪一个。
在此先感谢您的帮助!
答案1
正如@esdd提到的:
添加
auto=false
到TreeOperator
设置:TreeOperator/.style={...,auto=false}
. –
成功了,解决了我的问题。谢谢 :)