我试图将 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。
提前谢谢您的启发。