
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á
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 forest
ambiente dentro de um ambiente tikzpicture
e 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, tikzpicture
então você está essencialmente dizendo
\begin{tikzpicture}[framed]
...
\begin{tikzpicture}
...
Por exemplo, funciona se você ajustar a baseline
imagem 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 forest
pró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}
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}