为什么wrapfig中的这棵森林树超出了textwidth区域?

为什么wrapfig中的这棵森林树超出了textwidth区域?

我用 forest 包绘制了一棵简单的树。当将其放入 wrapfigure 环境中时,它会超出边缘。

我有一个 MWE 和相应的结果,其中您可以看到树的一部分超出了文本宽度区域。如何修复这个问题?

\documentclass{article}
\usepackage{forest}
\usepackage{wrapfig}
\usepackage{blindtext}
\begin{document}
\begin{wrapfigure}{r}{0.25\textwidth}
    \centering
    \begin{forest}
        for tree={circle,draw,calign=center,edge=->,grow'=north}
        [A  [B [C] [D] ]    [E [F] [G] [H] ]    ]
    \end{forest}
    \caption{A tree}
    \label{fig:simple_tree}
\end{wrapfigure}
\blindtext
\end{document}

在此处输入图片描述

答案1

答案取决于您最关心的问题:您的树在页面上占用的空间量或包生成的树的大小forest

在第一种情况下(您希望将树在页面上使用的空间限制为0.25\textwidth),您可以使用graphicx带有的包使树变小resizebox

\documentclass{article}
\usepackage{forest}
\usepackage{wrapfig}
\usepackage{blindtext}
\usepackage{graphicx}
\begin{document}
\begin{wrapfigure}{r}{0.25\textwidth}
    \centering
     \resizebox{\linewidth}{!}{\begin{forest}
        for tree={circle,draw,calign=center,edge=->,grow'=north}
        [A  [B [C] [D] ]    [E [F] [G] [H] ]    ]
    \end{forest}}
    \caption{A tree}
    \label{fig:simple_tree}
\end{wrapfigure}
\blindtext
\end{document}

输出如下:

在此处输入图片描述

在第二种情况下(您希望树保持其默认大小),您可以在页面上为树提供更多空间,从而防止树离开边缘:

\begin{wrapfigure}{r}{0.4\textwidth}\centering

Herbert 在他的回答中描述了如何做到这一点,并说明了如何做到这一点,而无需反复尝试。Donald Arseneau 在他的回答中描述了另一个非常方便的解决方案:只要图形和标题不是“特殊的”(例如复杂的扩展),您就可以简单地将其用作0pt宽度并让 warpfigure 进行测量:

\begin{wrapfigure}{r}{0pt}\centering

图片: 在此处输入图片描述

答案2

\begin{wrapfigure}{r}{0.4\textwidth}\centering

如果您不想通过反复试验来实现,请先在框中写入内容:

\documentclass{article}
\usepackage{forest}
\usepackage{wrapfig}
\usepackage{blindtext}
\usepackage{graphicx}
\newsavebox\ForestBox
\begin{document}

\savebox\ForestBox{%
    \begin{forest}%
        for tree={circle,draw,calign=center,edge=->,grow'=north}
        [A  [B [C] [D] ]    [E [F] [G] [H] ]    ]
    \end{forest}}

\begin{wrapfigure}{r}{\dimexpr\wd\ForestBox+2em}
\centering
\usebox\ForestBox
\caption{A tree}\label{fig:simple_tree}
\end{wrapfigure}
\blindtext
\end{document}

在此处输入图片描述

答案3

对旧问题的迟来的回答,但如果宽度指定为零 (0pt),wrapfig 将自行进行测量。如果图形加标题不寻常,这可能会失败,但在这里可以正常工作。

相关内容