tikz-qtree の特別な機能

tikz-qtree の特別な機能

私は tikz-qtree パッケージを使用してこのツリーを作成しようとしています。いくつかのパーツはありますが、点線を作成できません。

ここに画像の説明を入力してください 私のコードは次のとおりです:

    \documentclass[a4paper,12pt]{article}

    \usepackage[english]{babel}
    \usepackage[utf8]{inputenc}
    \usepackage{amsfonts, amsmath, amsthm, amssymb} 
    \usepackage{tikz-qtree}

    \begin{document}

\begin{tikzpicture}[scale=1.2,every node/.style={align=center}]
\tikzset{level distance=50pt,sibling distance=5pt}


\Tree [.{$\alpha(\beta)$}:$\tau^a$
        [.{$\alpha$}:$\langle\sigma^a,\tau^a\rangle$ $\bullet$\\$\gamma:\rho^c$ 
        ]
        [.$\beta$:$\sigma^a$ $\bullet$\\$\delta:\vartheta^c$ ] ]

\end{tikzpicture} 

    \end{document}

点線を描いていただけますか?

答え1

tikz任意のオプションを使用してツリー内にノードを作成することができます。たとえば、次のように、角が丸い点線の境界線を持つラベルを持つノードを作成できます。

\begin{tikzpicture}
  [
    scale=1.2,
    every node/.style={align=center},
    level distance=50pt,
    sibling distance=5pt,
  ]
  \Tree
  [.{$\alpha(\beta)$}:$\tau^a$
    [.{$\alpha$}:$\langle\sigma^a,\tau^a\rangle$ \node[label={[draw, densely dotted, rounded corners]below:\strut$\gamma:\rho^c$}]{$\bullet$};
    ]
    [.$\beta$:$\sigma^a$ \node[label={[draw, densely dotted, rounded corners]below:\strut$\delta:\vartheta^c$}]{$\bullet$};
    ]
  ]
\end{tikzpicture}

<code>tikz-qtree</code>

しかし、私はforestTiのすべてのパワーを提供するものをお勧めしますZ などです。必要に応じて、最後の行をノードに配置し、任意のオプションを使用して Forest によって円が自動的に追加され、同時に点線の境界線などが追加されるようにすることができます。たとえば、ツリーのプリアンブルに次のコードを使用できます。

  for tree={
    math content,

デフォルトでは、ノードには数学コンテンツが含まれます。

    parent anchor=children,
    child anchor=parent,

少し整理しましょう。

  },
  before typesetting nodes={

すべての準備が整うまでこれを延期します。

    where n children=0{

ターミナルノードのみ。

      no edge,

彼らにエッジを描かないでください。

      draw,

境界線を引いてください。

      densely dotted,

その境界線を密な点線にします。

      content/.wrap value={\strut#1},

すべて同じ高さにします。

      rounded corners,

角を丸くします。

      replace by={[, circle, fill, no edge, inner sep=0pt, minimum size=5pt, append]}

終端ノードの前に、小さな塗りつぶされた円である別のノードを挿入します。そのノードへのエッジも描画しないでください。ノードは、replace by元のノードを代替ノードでアサートし、次にappend元のノードでアサートすることによってアサートされます。これを後で行うのは、そうしないと元のノードがすべて保存されず、移動しようとすると内容が失われる可能性があるためです。

    }{}

非終端ノードに対しては何も行いません。

  }

遅れたものは終わり。

これにより、常に数式モードに切り替えることなく、ツリー自体を非常に簡潔に指定できるようになります。

  [\alpha(\beta):\tau^a
    [{\alpha:\langle\sigma^a,\tau^a\rangle}
      [\gamma:\rho^c
      ]
    ]
    [\beta:\sigma^a
      [\delta:\vartheta^c
      ]
    ]
  ]

これを組み立てると、

\begin{forest}
  for tree={
    math content,
    parent anchor=children,
    child anchor=parent,
  },
  before typesetting nodes={
    where n children=0{
      no edge,
      draw,
      densely dotted,
      content/.wrap value={\strut#1},
      rounded corners,
      replace by={[, circle, fill, no edge, inner sep=0pt, minimum size=5pt, append]}
    }{}
  }
  [\alpha(\beta):\tau^a
    [{\alpha:\langle\sigma^a,\tau^a\rangle}
      [\gamma:\rho^c
      ]
    ]
    [\beta:\sigma^a
      [\delta:\vartheta^c
      ]
    ]
  ]
\end{forest}

生産する

森

\documentclass[tikz,border=10pt,multi]{standalone}
\usepackage{tikz-qtree}
\usepackage{forest}
\begin{document}
\begin{tikzpicture}
  [
    scale=1.2,
    every node/.style={align=center},
    level distance=50pt,
    sibling distance=5pt,
  ]
  \Tree
  [.{$\alpha(\beta)$}:$\tau^a$
    [.{$\alpha$}:$\langle\sigma^a,\tau^a\rangle$ \node[label={[draw, densely dotted, rounded corners]below:\strut$\gamma:\rho^c$}]{$\bullet$};
    ]
    [.$\beta$:$\sigma^a$ \node[label={[draw, densely dotted, rounded corners]below:\strut$\delta:\vartheta^c$}]{$\bullet$};
    ]
  ]
\end{tikzpicture}
\begin{forest}
  for tree={
    math content,
    parent anchor=children,
    child anchor=parent,
  },
  before typesetting nodes={
    where n children=0{
      no edge,
      draw,
      densely dotted,
      content/.wrap value={\strut#1},
      rounded corners,
      replace by={[, circle, fill, no edge, inner sep=0pt, minimum size=5pt, append]}
    }{}
  }
  [\alpha(\beta):\tau^a
    [{\alpha:\langle\sigma^a,\tau^a\rangle}
      [\gamma:\rho^c
      ]
    ]
    [\beta:\sigma^a
      [\delta:\vartheta^c
      ]
    ]
  ]
\end{forest}
\end{document}

関連情報