Quiero reducir algunos nodos de mi árbol. Pero no los hago más pequeños. inner sep=0.01mm
da como resultado el mismo tamaño de nodo que inner sep=1mm
. ¿Cómo es eso posible? ¿Qué extraño?
Mi código:
\documentclass[border=10pt]{standalone}
\usepackage{verbatim}
\usepackage{tikz}
\usepackage{forest}
\usepackage{graphicx}
\begin{document}
\begin{forest}
for tree={delay={where content={}{content={\phantom{00}}}{}},s sep+=5mm,l+=5mm}
[,circle,fill=black,inner sep=1mm
[,circle,fill=red,inner sep=0.5mm
[,circle,draw,black,inner sep=0.1mm]
[]
[,circle,draw,black,inner sep=0.1mm]
[]
]
[]
[,circle,fill=red,inner sep=0.5mm
[,circle,fill=red,inner sep=0.25mm
[,circle,draw,black,inner sep=0.1mm]
[,circle,draw,black,inner sep=0.1mm]
[,circle,draw,black,inner sep=0.1mm]
[,circle,draw,black,inner sep=0.001mm]%%% <------------- ??
]
[]
[]
[,circle,draw,black,inner sep=0.1mm]
]
[,circle,fill=red,inner sep=0.5mm]
]
\end{forest}
\end{document}
Respuesta1
ComoSalim Bou señaló en un comentario, la razón por la que inner sep
parece ineficaz es que el contenido del nodo en sí es bastante grande, relativamente hablando. Entonces, la diferencia entre 0.1mm
y 0.001mm
hace poca diferencia ya que eso solo cambia el margen alrededor del contenido de pequeño a más pequeño.
Como sugirió Salim Bou, un enfoque es eliminar el código agregando el contenido a los nodos del árbol. En este caso, la inner sep
configuración determinará el tamaño de todos los nodos del árbol.
Sin embargo, si solo desea ajustar el tamaño de ese nodo, es posible que prefiera anular el contenido más adelante. Esto cambiará sólo el contenido de ese nodo, si se establece como argumento para ese nodo. Tenga en cuenta que la mayoría de las inner sep
configuraciones podrían simplemente eliminarse en este caso, sin casi ningún efecto visual en la apariencia.
También sugeriría hacer uso de estilos para evitar duplicar configuraciones. La mejor manera de hacerlo depende de lo que necesite. A continuación se muestra un posible ejemplo que también ilustra los dos métodos para modificar el tamaño explicados anteriormente.
\documentclass[border=10pt]{standalone}
\usepackage{forest}
\begin{document}
\begin{forest}
for tree={
s sep'+=5mm,
l'+=5mm,
},
my circle/.style={
circle, fill=#1,
},
red circle/.style={
my circle=red, inner sep=#1mm,
},
black circle/.style={
my circle=black, inner sep=#1mm,
},
black hole/.style={
circle, draw=black, inner sep=#1mm,
}
[, black circle=1
[, red circle=0.5
[, black hole=0.1]
[]
[, black hole=0.1]
[]
]
[]
[, red circle=0.5
[, red circle=0.25
[, black hole=0.1]
[, black hole=0.1]
[, black hole=0.1]
[, black hole=0.001]
]
[]
[]
[, black hole=0.1]
]
[, red circle=0.5]
]
\end{forest}
\begin{forest}
for tree={
delay={where content={}{content={\phantom{00}}}{}},
s sep'+=5mm,
l'+=5mm,
},
my circle/.style={
circle, fill=#1,
},
red circle/.style={
my circle=red, inner sep=#1mm,
},
black circle/.style={
my circle=black, inner sep=#1mm,
},
black hole/.style={
circle, draw=black, inner sep=#1mm,
}
[, black circle=1
[, red circle=0.5
[, black hole=0.1]
[]
[, black hole=0.1]
[]
]
[]
[, red circle=0.5
[, red circle=0.25
[, black hole=0.1]
[, black hole=0.1]
[, black hole=0.1]
[, black hole=0.001, before typesetting nodes={content=}]%%% <------------- ??
]
[]
[]
[, black hole=0.1]
]
[, red circle=0.5]
]
\end{forest}
\end{document}
El árbol de la izquierda muestra los nodos con tamaños determinados por sus inner sep
s. El árbol de la derecha los muestra con el fantasma 00
como contenido, excepto el pequeño nodo donde esto se anula.