使用\fbox
aroundforest
会给我的图表创建不必要的水平填充:
\documentclass{scrbook}
\usepackage{tikz}
\usepackage[linguistics]{forest}
\begin{document}
\begin{figure}[bth]
\fboxsep = 4pt % Does not matter
\fbox{\begin{forest}
[A [B [D [I] [J] [K] ]
[E [L] [M] ] ]
[C [F] [G] [H] ] ]
\end{forest}}
\end{figure}
\end{document}
删除后\fbox
图表会正确对齐。但是,我无法让 TikZ 的背景库与之配合使用forest
。
使用
\usetikzlibrary{backgrounds}
% ...
\tikzset{every picture/.style={show background rectangle}}
失败并出现错误“尺寸太大”。
我现在使用 TikZ 节点在环境周围创建一个框架forest
:
\begin{forest}
tikz+={\draw
(current bounding box.south west) rectangle (current bounding box.north east);
},
[A [B [D [I] [J] [K] ]
[E [L] [M] ] ]
[C [F] [G] [H] ] ]
\end{forest}
这工作正常,但似乎太复杂而且不太干净,特别是当需要自定义内部填充时(我使用矩形上的xshift
/解决了这个问题)。yshift
有没有更好的方法来实现框架每一个TikZ 和forest
图像?
更新:适用于所有森林环境的解决方案
来自评论的这个解决方案为所有森林环境创建了所需的框架:
\forestset{default preamble={tikz+={\tikzset{show background rectangle}}}}
当然,\tikzset{every picture/.style={show background rectangle}}
还是会导致上述的错误,需要show background rectangle
在每一张图片上都进行设置。
更新 2:截至 2019-07-29 的错误修复:
正如评论中提到的:
- 阻止 tikzset 的问题可能会在下一版 Forest 中得到修复,
- 有一个拉取请求,用于删除导致 TikZ/PGF 中填充的泄漏空间。
答案1
该问题是由于 PGF/TikZ 中的一个错误造成的,现已修复。Sašo Živanović 在https://github.com/pgf-tikz/pgf/pull/723现已合并到 master 中,正如他在tikz 和森林的简单边界。