
este codigo
\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 da
Claramente, el árbol se sale de los límites de la imagen, lo que hace que se superponga al texto de arriba. ¿Se trata de un error conocido o de un error garrafal de mi parte? ¿Existe alguna solución?
Respuesta1
No creo que sea una buena idea poner un forest
ambiente dentro de un tikzpicture
y sospecho firmemente que pueden suceder cosas malas inesperadamente. En general, el anidamiento de mensajes de correo electrónico tikzpicture
a veces funciona en casos simples, pero se sabe que es problemático. (Es decir, si funciona, funciona. Si no funciona, puedes quedarte con ambas piezas). Recuerda que a forest
es a tikzpicture
, por lo que esencialmente estás diciendo
\begin{tikzpicture}[framed]
...
\begin{tikzpicture}
...
Para su ejemplo, funciona si ajusta la baseline
imagen de manera adecuada.
\begin{tikzpicture}[framed,baseline=(current bounding box.center)]
Sin embargo, creo que sería más seguro dibujar el marco como parte del archivo forest
. Supongo que, eventualmente, querrás tener algo más elegante que una simple caja. Si no, existen enfoques más simples. Pero se puede añadir fácilmente un trasfondo complejo como parte de la forest
propia especificación. Hay varias maneras de hacer esto.
\begin{forest}
[
..
]
\begin{scope}[on background layer]
<drawing commands>
\end{scope}
\end{forest}
O los comandos de dibujo se pueden agregar como parte de la especificación del árbol o en el preámbulo del árbol. Por ejemplo,
\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 ejemplos:
\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}