tikz 树节点的边缘始终在线上方,而不仅仅是在线上

tikz 树节点的边缘始终在线上方,而不仅仅是在线上

我正在为我的本科论文构建攻击树。我需要通过逻辑与运算符连接一些子节点。所以我只是在这些节点之间画了一条线,并在其上放置了一个节点。

遗憾的是,我无法将边缘标签直接放在(隐藏)线上,它总是在中间。我不知道为什么……希望你能帮助我。

这是一个简单的例子:

\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=falseTreeOperator设置:TreeOperator/.style={...,auto=false}. –

成功了,解决了我的问题。谢谢 :)

相关内容