A árvore que cresce no leste não cabe na imagem tikz

A árvore que cresce no leste não cabe na imagem tikz

Este código

\documentclass[a4paper]{article}

\usepackage{tikz}
    \usetikzlibrary{backgrounds}

\usepackage{forest}

\begin{document}
We are the knights who say "Ni!".
\begin{center}
\begin{tikzpicture}[framed]
    \begin{forest}
        [,for tree={grow'=east},shape=coordinate
            [
                [
                    []
                    []
                ]
                [
                    []
                    []
                ]
            ]
            [
                [
                    []
                    []
                ]
                [
                    []
                    []
                ]
            ]
        ]
        \end{forest}
\end{tikzpicture}
\end{center}
\end{document}

me dá

Resultados do código acima

Claramente, a árvore sai dos limites da imagem, o que faz com que ela se sobreponha ao texto acima. Este é um bug conhecido ou um erro da minha parte e há uma correção?

Responder1

Não acho que seja uma boa ideia colocar um forestambiente dentro de um ambiente tikzpicturee suspeito fortemente que coisas ruins possam acontecer inesperadamente. Em geral, o aninhamento tikzpictureàs vezes funciona em casos simples, mas é conhecido por ser problemático. (Ou seja, se funcionar, funciona. Se não funcionar, você fica com as duas peças.) Lembre-se de que a foresté a, tikzpictureentão você está essencialmente dizendo

\begin{tikzpicture}[framed]
  ...
  \begin{tikzpicture}
    ...

Por exemplo, funciona se você ajustar a baselineimagem adequadamente.

  \begin{tikzpicture}[framed,baseline=(current bounding box.center)]

Acho que seria mais seguro, entretanto, desenhar o quadro como parte do arquivo forest. Presumo que você queira, eventualmente, ter algo mais sofisticado do que uma mera caixa. Caso contrário, existem abordagens mais simples. Mas um histórico complexo pode ser facilmente adicionado como parte da forestprópria especificação. Existem várias maneiras de fazer isso.

\begin{forest}
  [
    ..
  ]
  \begin{scope}[on background layer]
    <drawing commands>
  \end{scope}
\end{forest}

Ou os comandos de desenho podem ser adicionados como parte da especificação da árvore ou no preâmbulo da árvore. Por exemplo,

  \begin{forest}
    [,for tree={grow'=east},shape=coordinate, tikz+={%
      \begin{scope}[on background layer]
        \node [fit=(current bounding box.north east) (current bounding box.south west), draw=blue!50!cyan, outer color=blue!50!cyan!25, inner color=blue!50!cyan!10, rounded corners, line width=1mm] {};
      \end{scope}
    }
        [
    ...
  \end{forest}

árvores encaixotadas

Código completo para exemplos:

\documentclass[a4paper]{article}
\usepackage{forest}
\usetikzlibrary{backgrounds,fit}

\begin{document}
We are the knights who say "Ni!".
\begin{center}
  \begin{tikzpicture}[framed,baseline=(current bounding box.center)]
    \begin{forest}
      [,for tree={grow'=east},shape=coordinate
          [
              [
                  []
                  []
              ]
              [
                  []
                  []
              ]
          ]
          [
              [
                  []
                  []
              ]
              [
                  []
                  []
              ]
          ]
      ]
    \end{forest}
  \end{tikzpicture}
\end{center}
We are the knights who say "Ni!".
\begin{center}
  \begin{forest}
    [,for tree={grow'=east},shape=coordinate, tikz+={%
      \begin{scope}[on background layer]
        \node [fit=(current bounding box.north east) (current bounding box.south west), draw=blue!50!cyan, outer color=blue!50!cyan!25, inner color=blue!50!cyan!10, rounded corners, line width=1mm] {};
      \end{scope}
    }
        [
            [
                []
                []
            ]
            [
                []
                []
            ]
        ]
        [
            [
                []
                []
            ]
            [
                []
                []
            ]
        ]
    ]
  \end{forest}
\end{center}
\end{document}

informação relacionada