森林樹:減小樹節點的大小

森林樹:減小樹節點的大小

我想縮小樹的一些節點。但我不會把它們變小。inner sep=0.01mm結果與 相同的節點大小inner sep=1mm。這怎麼可能?我想念什麼?

在此輸入影像描述

我的程式碼:

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

答案1

作為Salim Bou 在評論中指出,之所以inner sep顯得無效,是因為節點本身的內容相對來說比較大。因此,0.1mm和之間的差異0.001mm幾乎沒有什麼區別,因為它只會將內容周圍的邊距從很小變成更小。

正如 Salim Bou 所建議的,一種方法是刪除將內容新增到樹節點的程式碼。在這種情況下,inner sep設定實際上將確定樹中所有節點的大小。

但是,如果您只想調整該一個節點的大小,您可能會更願意稍後覆蓋內容。如果設定為該節點的參數,這將僅更改該節點的內容。請注意,在這種情況下,可以簡單地刪除大多數inner sep設置,對外觀幾乎沒有視覺影響。

我還建議使用樣式來避免重複設定。如何最好地做到這一點取決於您的需求。這是一個可能的範例,它也說明了上面解釋的兩種更改大小的方法。

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

兩棵樹

左邊的樹顯示了節點的大小由它們的inner seps 決定。右側的樹以幻像00作為內容顯示了它們,但被覆蓋的單一小節點除外。

相關內容