Primero que nada quiero agradecer a la comunidad por la ayuda que obtuve en mi primera pregunta, hace unos días. Dicho esto, quiero volver a pedirles ayuda, si me lo permiten. Básicamente, actualmente estoy usando el poderoso paquete Forest
para dibujar árboles de teoría de juegos y, hasta ahora, todo bien. Pero ahora me enfrento a algo que no sé hacer y que no está explicado en el (bastante complejo) manual del Forest
paquete. Básicamente, tengo un juego (árbol) con tres nodos, siendo cada nodo el comienzo de un subjuego. Básicamente necesito dejar claro que hay tres subjuegos en el árbol. La representación gráfica de lo que estoy buscando es algo como esto:
El árbol que he dibujado se parece a este (y me gustaría conservarlo):
En pocas palabras, me gustaría dibujar los cuadrados rojos del primer árbol (Imagen 1) en mi árbol (Imagen 2). Sin embargo, probablemente necesite un rombo, dada la forma de mi árbol. Finalmente, les proporciono el código que estoy usando actualmente para mi árbol:
\begin{center}
\begin{forest} for tree={l sep=4em, s sep=8em, anchor=center}
[$P_1$, circle, draw,
[{2, 2}, edge label={node[midway,left]{$D$}}]
[$P_2$, edge label={node[midway,right]{$A$}}, circle, draw,
[{1, 1}, edge label={node[midway,left]{$d$}}]
[$P_1$, edge label={node[midway,right]{$a$}}, circle, draw,
[{0, 0}, edge label={node[midway,left]{$D$}}]
[{3, 3}, edge label={node[midway,right]{$A$}}]]]]
\node[above=30pt,align=center,anchor=center] {\textbf{Figure IV.} Extensive Form of a Centipede Game Variant};
\end{forest}
\end{center}
¿Qué necesito agregar/cambiar para incluir estos cuadrados?
Gracias a todos de antemano.
Saludos cordiales, Héctor.
Respuesta1
No es exactamente un rombo, pero puedes modificar los ángulos y las distancias si eso es importante.
\documentclass[tikz, border=10pt, multi]{standalone}
\usepackage{forest}
\usetikzlibrary{shapes.geometric,fit}
\begin{document}
\begin{forest}
/tikz/my edge label/.style={inner sep=5pt, midway},
/tikz/rhombus/.style={trapezium, trapezium left angle=105, trapezium right angle=75, draw=red},
my rhombus/.style n args=2{
tikz={\node [fit=#1, rhombus, inner sep=#2] {};},
},
for tree={
l sep=4em,
s sep=11em,
anchor=center,
fit=rectangle,
calign=fixed edge angles,
before typesetting nodes={
if n'=1{
edge label/.wrap value={\noexpand node [my edge label,right] {$#1$} }
}{
edge label/.wrap value={\noexpand node [my edge label,left] {$#1$} }
},
},
if n children=0{}{
circle,
draw,
}
}
[$P_1$, my rhombus={() (current bounding box.west) (current bounding box.south east)}{12.5pt}
[{2, 2}, edge label=D]
[$P_2$, edge label=A, my rhombus={() (!1) (!2 2)}{7.5pt}
[{1, 1}, edge label=d]
[$P_1$, edge label=a, my rhombus={() (!1) (!2)}{2.5pt}
[{0, 0}, edge label=D]
[{3, 3}, edge label=A]
]
]
]
\end{forest}
\end{document}
Respuesta2
Una solución para utilizar elistgame
paquete:
\documentclass{standalone}
\usepackage{istgame}
\begin{document}
\begin{istgame}[font=\footnotesize]
\xtdistance{15mm}{25mm}
\istrooto(0){$P_1$}
\istb{D}[l]{2,2}
\istb{A}[r]
\endist
\istrooto(1)(0-2){$P_2$}
\istb{d}[l]{1,1}
\istb{a}[r]
\endist
\istrooto(2)(1-2){$P_1$}
\istb{D}[l]{0,0}
\istb{A}[r]{3,3}
\endist
\xtSubgameBox(0){(0-1)(2-2)}
\xtSubgameBox(1){(1-1)(2-2)}[inner sep=18pt]
\xtSubgameBox(2){(2-1)(2-2)}[inner sep=16pt]
%\xtSubgameBox(2){(2-1)(2-2)}[solid,rounded corners=0pt,inner sep=16pt]
\end{istgame}
\end{document}
Es su elección agregar opciones como [sólido, esquinas redondeadas = 0pt] o color.