Característica especial en tikz-qtree

Característica especial en tikz-qtree

He estado intentando hacer este árbol con el paquete tikz-qtree. Tengo varias partes pero no puedo hacer la línea de puntos.

ingrese la descripción de la imagen aquí Mi código es el siguiente:

    \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}

¿Podrías hacer esa línea de puntos?

Respuesta1

Puede utilizar tikzpara crear nodos en el árbol con las opciones que prefiera. Por ejemplo, podrías crear un nodo con una etiqueta con un borde punteado y esquinas redondeadas como esta:

\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}

<código>tikz-qtree</código>

Sin embargo, recomendaríaforest el que ofrece todo el poder del Ti.kZ y más. Si lo desea, puede colocar las líneas finales en un nodo y hacer que Forest agregue los círculos automáticamente con las opciones que desee, agregando el borde de puntos, etc. al mismo tiempo. Por ejemplo, podría utilizar el siguiente código para el preámbulo del árbol.

  for tree={
    math content,

De forma predeterminada, los nodos tienen contenido matemático.

    parent anchor=children,
    child anchor=parent,

Ordenar un poco las cosas.

  },
  before typesetting nodes={

Retrase esto hasta que todo esté listo para funcionar.

    where n children=0{

Sólo para los nodos terminales.

      no edge,

No les pongas ventaja.

      draw,

Dibújales un borde.

      densely dotted,

Haz ese borde densamente punteado.

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

Hazlos todos de la misma altura.

      rounded corners,

Redondea las esquinas.

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

Inserte otro nodo antes del nodo terminal, que es solo un círculo pequeño y relleno. Tampoco dibujes un borde hacia ese nodo. el nodo se afirma replace bycombinando el original con el sustituto y luego appendcombinando el original. Hacemos esto más tarde porque, de lo contrario, no se habrán guardado todos los nodos originales y podemos perder cosas si intentamos moverlos.

    }{}

No hagas nada con los nodos no terminales.

  }

Fin de las cosas retrasadas.

Esto nos permite especificar el árbol en sí de manera bastante concisa y sin cambiar al modo matemático todo el tiempo.

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

Al montar esto,

\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}

produce

Bosque

\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}

información relacionada