将 Tikz 图形包裹在可破坏的 tcolorbox 中

将 Tikz 图形包裹在可破坏的 tcolorbox 中

我试图将 tikz 图形包装在可破坏的 tcolorbox 中,但由于分页符而失败。我尝试使用 minipage 包装它,但这显然是一个坏主意,因为 minipage 不处理分页符 - 顾名思义。但我遇到了与 wrapfigure 相同的问题:文本不会引起任何问题,但图形可能会在分页符之前离开 tcolorbox。下面是一个 MWE - MWE 中的 M 可能不太正确,但我发现我会使用与运行该问题的完全相同的代码。

    \documentclass{article}

    \usepackage[utf8]{inputenc}
    \usepackage[OT1]{fontenc}
    \usepackage[french]{babel}
    \usepackage{wrapfig}
    \usepackage[breakable,skins]{tcolorbox}
    \usepackage{tikz}
    \usepackage{tkz-euclide}
    \usepackage{amsmath}

    \newcommand{\ang}[1]{\widehat{#1}}



    \begin{document}

    \begin{tcolorbox}[boxrule=0.5pt,breakable,enhanced,colframe=black,parbox=false]%
        \textbf{\MakeUppercase{Démonstration}} 
        \begin{wrapfigure}{r}{0.4\textwidth}
            \begin{center}
                \begin{tikzpicture}
                    \tkzDefPoint(2,1){A'}
                    \tkzDefPoint(-2,1.3){B'}
                    \tkzDefPoint(0.1,-1){C'}
                    \tkzDefPoint(0,0){O}
                    \tkzInterLC(O,A')(O,A') \tkzGetSecondPoint{A}
                    \tkzInterLC(O,B')(O,A') \tkzGetSecondPoint{B}
                    \tkzInterLC(O,C')(O,A') \tkzGetSecondPoint{C}
                    \tkzDefPointBy[symmetry=center O](C) \tkzGetPoint{C'}
                    \tkzDrawCircle(O,A')
                    \tkzDrawSegments[line width=0.3pt](O,A A,B B,O B,C C,A O,C)
                    \tkzDrawSegments[line width=0.6pt, dotted](O,C')
                    \tkzDrawPoints(A,B,C,O,C')
                    \tkzLabelPoints(C,O,C')
                    \tkzLabelPoints[above left](B)
                    \tkzLabelPoints[above right](A)
                    \tkzMarkAngle[size=0.5,mark=none](O,A,C)
                    \tkzMarkAngle[size=0.5,mark=none](A,C,O)
                    \tkzMarkAngle[size=0.7,mark=none](C,B,O)
                    \tkzMarkAngle[size=0.7,mark=none](O,C,B)
                    \tkzMarkAngle[size=0.73,mark=none](C,B,O)
                    \tkzMarkAngle[size=0.73,mark=none](O,C,B)
                \end{tikzpicture}
            \end{center}
        \end{wrapfigure}
        Nous traitons d'abord le cas où le centre du cercle $O$ est contenu dans le triangle $ABC$.

        On commence par remarquer que le triangle $OAC$ est isocèle en $O$ ainsi 
        \begin{align*}
            \ang{OAC} = \ang{ACO}
        \end{align*} Puisque la somme des angles d'un triangle vaut $180^{\circ}$,         nous avons 
        \begin{align*}
            \ang{COA} = 180^{\circ} - 2 \cdot \ang{ACO}
        \end{align*} Le triangle $OBC$ est également isocèle en $O$, ainsi 
        \begin{align*}
            \ang{OCB} = \ang{CBO}
        \end{align*} et par le même raisonnement qu'avant 
        \begin{align*}
            \ang{BOC} = 180^{\circ} - 2 \cdot \ang{OCB}
        \end{align*}

        Soit $C'$ le point du cercle diamétralement opposé à $C$. Alors les angles $\ang{COA}$ et $\ang{AOC'}$ sont supplémentaires. On a alors 
        \begin{align*}
            \ang{AOC'} &= 180 -\ang{AOC} \\
            &= 180 -\left(180-2\cdot\ang{ACO}\right) \\
            &= 2\cdot\ang{ACO}
        \end{align*}
        Par le même raisonnement, nous trouvons $\ang{C'OB} = 2\cdot \ang{OCB}$. Nous obtenons:
        \begin{align*}
            \ang{AOB} &= \ang{AOC'} + \ang{C'OB} \\
            &= 2\cdot\ang{ACO} + 2\cdot\ang{OCB} \\
            &= 2\cdot\left(\ang{ACO} + \ang{OCB}\right) \\
            &= 2\cdot\ang{ACB}
        \end{align*}

        \begin{wrapfigure}{r}{0.4\textwidth}
            \begin{center}
                \begin{tikzpicture}
                    \tkzDefPoint(2,1){A'}
                    \tkzDefPoint(0.1,1.3){B'}
                    \tkzDefPoint(1,-1){C'}
                    \tkzDefPoint(0,0){O}
                    \tkzInterLC(O,A')(O,A') \tkzGetSecondPoint{A}
                    \tkzInterLC(O,B')(O,A') \tkzGetSecondPoint{B}
                    \tkzInterLC(O,C')(O,A') \tkzGetSecondPoint{C}
                    \tkzDefPointBy[symmetry=center O](C) \tkzGetPoint{C'}
                    \tkzDrawCircle(O,A')
                    \tkzDrawSegments[line width=0.3pt](O,A A,B B,O B,C C,A O,C)
                    \tkzDrawSegments[line width=0.6pt, dotted](O,C')
                    \tkzDrawPoints(A,B,C,O,C')
                    \tkzLabelPoints(C)
                    \tkzLabelPoints[below left](O)
                    \tkzLabelPoints[above right](A,B)
                    \tkzLabelPoints[above left](C')
                    \tkzMarkAngle[size=0.5,mark=none](O,A,C)
                    \tkzMarkAngle[size=0.5,mark=none](A,C,O)
                    \tkzMarkAngle[size=0.7,mark=none](O,B,C)
                    \tkzMarkAngle[size=0.7,mark=none](B,C,O)
                    \tkzMarkAngle[size=0.73,mark=none](O,B,C)
                    \tkzMarkAngle[size=0.73,mark=none](B,C,O)
                \end{tikzpicture}
            \end{center}
        \end{wrapfigure}
        Il nous reste à traiter le cas où $O$ est à l'extérieur du triangle $ABC$.         Sans nuire à la généralité, on suppose que les points sont dans l'ordre $ABC$ (sens anti-horaire) - le cas $ACB$ étant similaire. On pose à nouveau $C'$ le point du cercle diamétralement opposé à $C$. Par le cas précèdent nous obtenons 
        \begin{align*}
            \ang{AOC'} = 2 \cdot \ang{ACC'}
        \end{align*} et 
        \begin{align*}
            \ang{BOC'} = 2 \cdot \ang{BCC'}
        \end{align*} Finalement :
        \begin{align*}
            \ang{AOB} &= \ang{AOC'} - \ang{BOC'} \\
            &= 2\cdot \ang{ACC'} - 2 \cdot \ang{BCC'} \\
            &= 2 \cdot \left(\ang{ACC'} - \ang{BCC'}\right) \\
            &= 2 \cdot \ang{ACB}
        \end{align*}
    \end{tcolorbox}

    \end{document}

正如您所见,第二个代码运行良好,甚至超出了此代码中的页面。

有没有办法将 wrapfigure 和可破坏的 tcolorbox 结合起来,或者这两者根本不兼容?如果可以,我可以使用什么组合与 tcolorbox - 我可能会使用 wrapfigure 以外的其他东西,但我不想放弃 tcolorbox。

提前谢谢您的启发。

相关内容