Quero reduzir alguns nós da minha árvore. Mas eu não os considero menores. inner sep=0.01mm
resulta no mesmo tamanho de nó que inner sep=1mm
. Como isso é possível? O que eu sinto falta?
Meu 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}
Responder1
ComoSalim Bou apontou em um comentário, a razão pela qual inner sep
parece ineficaz é que o conteúdo do nó em si é bastante grande, relativamente falando. Portanto, a diferença entre 0.1mm
e 0.001mm
faz pouca diferença, pois apenas altera a margem ao redor do conteúdo de minúscula para ainda mais minúscula.
Como sugeriu Salim Bou, uma abordagem é excluir o código adicionando o conteúdo aos nós da árvore. Nesse caso, as inner sep
configurações determinarão o tamanho de todos os nós da árvore.
No entanto, se você quiser ajustar apenas o tamanho desse nó, poderá preferir substituir o conteúdo posteriormente. Isto mudará apenas o conteúdo desse nó, se definido como um argumento para esse nó. Observe que a maioria das inner sep
configurações pode ser simplesmente excluída neste caso, quase sem efeito visual na aparência.
Também sugiro usar estilos para evitar duplicação de configurações. A melhor forma de fazer isso depende do que você precisa. Aqui está um exemplo possível que também ilustra os dois métodos de alteração do dimensionamento explicados acima.
\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}
A árvore à esquerda mostra os nós com tamanhos determinados por seus inner sep
s. A árvore à direita mostra-os com o fantasma 00
como conteúdo, exceto o pequeno nó único onde este é substituído.