Árvores florestais: reduza o tamanho do nó da árvore

Árvores florestais: reduza o tamanho do nó da árvore

Quero reduzir alguns nós da minha árvore. Mas eu não os considero menores. inner sep=0.01mmresulta no mesmo tamanho de nó que inner sep=1mm. Como isso é possível? O que eu sinto falta?

insira a descrição da imagem aqui

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 sepparece ineficaz é que o conteúdo do nó em si é bastante grande, relativamente falando. Portanto, a diferença entre 0.1mme 0.001mmfaz 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 sepconfiguraçõ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 sepconfiguraçõ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}

duas árvores

A árvore à esquerda mostra os nós com tamanhos determinados por seus inner seps. A árvore à direita mostra-os com o fantasma 00como conteúdo, exceto o pequeno nó único onde este é substituído.

informação relacionada