Растущее на восток дерево не вписывается в tikzpicture

Растущее на восток дерево не вписывается в tikzpicture

Этот код

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

дает мне

Результаты кода выше

Очевидно, что дерево выходит за пределы картинки, из-за чего оно перекрывает текст выше. Это известная ошибка или промах с моей стороны, и есть ли исправление?

решение1

Я не думаю, что это вообще хорошая идея помещать forestокружение внутрь a tikzpicture, и я сильно подозреваю, что Плохие Вещи могут произойти неожиданно. В общем, вложение tikzpictures иногда работает в простых случаях, но известно, что оно проблематично. (То есть, если это работает, то работает. Если нет, вы можете сохранить обе части.) Помните, что a forest— это a tikzpicture, поэтому вы по сути говорите

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

В вашем примере это сработает, если вы baselineсоответствующим образом настроите изображение.

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

Я думаю, что было бы безопаснее, однако, нарисовать рамку как часть forest. Я так понимаю, что вы хотите, в конечном счете, иметь что-то более причудливое, чем просто коробка. Если нет, есть более простые подходы. Но сложный фон можно легко добавить как часть forestсамой спецификации. Есть несколько способов сделать это.

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

Или команды рисования могут быть добавлены как часть спецификации дерева или в преамбулу дерева. Например,

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

деревья в коробках

Полный код для примеров:

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

Связанный контент