floresta - mover verticalmente um nó
Aqui está uma árvore básica.
\documentclass{article}
\RequirePackage{forest}
\useforestlibrary{linguistics}
\begin{document}
\begin{forest}
for tree = {grow' = 0, sn edges},
[
[A]
[B
[C
[D]
[E]]
[F]]]
\end{forest}
\end{document}
Isso produz os seguintes gráficos, onde gostaria que o A ficasse verticalmente acima do D, conforme indicado pelas linhas desenhadas à mão. Existe uma maneira fácil e / ou elegante de fazer isso?
Respostas
Este é um trabalho para fit=band. Quando você coloca esta opção em um nó, Forest não calcula o contorno preciso de sua subárvore, mas o coloca em uma "faixa" - o menor retângulo contendo a subárvore que se estende até a direção do crescimento, ou seja, ocupa o espaço ocupado pela linha azul na imagem de OPs. Consulte a seção 3.7.2 do manual para mais informações e fotos.
\documentclass{article}
\RequirePackage{forest}
\useforestlibrary{linguistics}
\begin{document}
\begin{forest}
for tree = {grow' = 0, sn edges},
[
[A, fit = band]
[B
[C
[D]
[E]]
[F]]]
\end{forest}
\end{document}
Neste caso particular, pode ser desejável ajustar o s sepdo nó raiz, para que o nó A não termine muito ao norte. Lembre-se de que s sepcontrola a distância entre os contornos das subárvores do irmão. Acima, o contorno da subárvore A é uma banda "infinita" que se estende além de D, de modo que a raiz s sepcontrola efetivamente essa distância.
\documentclass{article}
\RequirePackage{forest}
\useforestlibrary{linguistics}
\begin{document}
\begin{forest}
for tree = {grow' = 0, sn edges},
[,s sep=0
[A, fit = band]
[B
[C
[D]
[E]]
[F]]]
\end{forest}
\end{document}
PS Para ver as distâncias mais claramente, gosto de adicionar drawdentro do for treeenquanto trabalho na árvore. Fazer isso no segundo exemplo deixa claro que o norte de D e o sul de A estão alinhados e que qualquer distância vertical restante entre A e D se deve a inner ysepesses nós.
Uma solução possível é:
\documentclass{article}
\RequirePackage{forest}
\useforestlibrary{linguistics}
\begin{document}
\begin{forest}
for tree = {grow' = 0, sn edges},
[
[A
[,no edge] % <---
]
[B
[C
[D]
[E]]
[F]]]
\end{forest}
\end{document}
Você pode criar um nó invisível adicional com [,phantom]
\documentclass{article}
\RequirePackage{forest}
\useforestlibrary{linguistics}
\begin{document}
\begin{forest}
for tree = {grow' = 0, sn edges},
[
[A][,phantom]%<-- invisible node
[B
[C
[D]
[E]]
[F]]]
\end{forest}
\end{document}