tikz 和森林的简单边界

tikz 和森林的简单边界

使用\fboxaroundforest会给我的图表创建不必要的水平填充:

\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 与 forest 结合使用

删除后\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}

使用 tikz 节点绘制框架

这工作正常,但似乎太复杂而且不太干净,特别是当需要自定义内部填充时(我使用矩形上的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 的错误修复:

正如评论中提到的:

  1. 阻止 tikzset 的问题可能会在下一版 Forest 中得到修复,
  2. 有一个拉取请求,用于删除导致 TikZ/PGF 中填充的泄漏空间。

答案1

该问题是由于 PGF/TikZ 中的一个错误造成的,现已修复。Sašo Živanović 在https://github.com/pgf-tikz/pgf/pull/723现已合并到 master 中,正如他在tikz 和森林的简单边界

相关内容