Tcolorbox und verlorene Floats

Tcolorbox und verlorene Floats

Ich verwende tcolorbox, um Übungen mit Lösungen für ein Wahrscheinlichkeitsbuch zu schreiben. Wenn ich Floats verwende, wie Tabellen oder Abbildungen, wird es abgelehnt und ich erhalte Fehlermeldungen wie ! LaTeX Error: Not in outer par mode.oder Float(s) lost..., daher muss ich den Float-Befehl rückgängig machen und stattdessen das Paket und dessen Befehl begin{figure}.. \end{figure}verwenden ...caption\captionof{figure}{The caption}

Nun möchte ich in solchen Fällen Floats verwenden. 1/ Wie kann ich sie verwenden?

\NewTColorBox2/ Ist es darüber hinaus möglich, einige im Paket enthaltene gedrehte Tabellen zu verwenden ctable, wie zum Beispiel diese: ?

\ctable[
caption={Mycaption},
label={tab:Mytable},
botcap, % caption below table
sideways % This rotates the table
]
{ccc}
{
% Table footnotes here
}
{
Column 1 & Column 2 & Column 3 \\
Row 2, 1 & 2, 2     & 2, 3 \\
}

3/ Darüber hinaus: Kann ich einige Dinge außerhalb des Lösungsrahmens schreiben, zum Beispiel einige Kommentare oder einige Floats (!) zwischen zwei aufeinanderfolgenden Lösungen?

Ich gebe ein Beispiel einer Übung, bei der man feststellen kann, dass die Befehle \begin{figure} \end{figure}kommentiert sind (der Fehler tritt auf, Not in outer par modewenn sie nicht kommentiert sind).

\documentclass{book}

\usepackage[most]{tcolorbox} 
\tcbuselibrary{skins,breakable,xparse}

\usepackage{caption}

\usepackage[most]{tcolorbox}
\tcbuselibrary{skins,breakable,xparse}

\usepackage{tikz}
\usetikzlibrary{arrows,backgrounds,plotmarks,calc,positioning,shadings,patterns,tikzmark}
\usepackage{pgfplots}

%\usepackage{ctable}% Uncomment If one wants to compile the ctable given as example
\usepackage{polyglossia}
\setmainlanguage{english}

\NewTColorBox[auto counter,number within=chapter]{exercise}{m+O{}}{%
    enhanced,
    colframe=green!20!black,
    colback=yellow!10!white,
    coltitle=green!40!black,
    fonttitle=\bfseries,
    underlay={\begin{tcbclipinterior}
        \shade[inner color=green!80!yellow,outer color=yellow!10!white]
            (interior.north west) circle (2cm);
        \draw[help lines,step=5mm,yellow!80!black,shift={(interior.north west)}]
            (interior.south west) grid (interior.north east);
        \end{tcbclipinterior}},
    title={Exercise~ \thetcbcounter:},
    label={exercise:#1},
    attach title to upper=\quad,
    after upper={\par\hfill\textcolor{green!40!black}%
        {\itshape Solution on page~\pageref{solution:#1}}},
    lowerbox=ignored,
    savelowerto=solutions/exercise-\thetcbcounter.tex,
    record={\string\solution{#1}{solutions/exercise-\thetcbcounter.tex}},
    #2
}

\NewTotalTColorBox{\solution}{mm}{%
    enhanced,
    colframe=red!20!black,
    colback=yellow!10!white,
    coltitle=red!40!black,
    fonttitle=\bfseries,
    underlay={\begin{tcbclipinterior}
        \shade[inner color=red!50!yellow,outer color=yellow!10!white]
            (interior.north west) circle (2cm);
        \draw[help lines,step=5mm,yellow!80!black,shift={(interior.north west)}]
            (interior.south west) grid (interior.north east);
        \end{tcbclipinterior}},
    title={Solution of Exercise~\ref{exercise:#1} on page~\pageref{exercise:#1}:},
    phantomlabel={solution:#1},
    attach title to upper=\par,
}{\input{#2}}

\tcbset{no solution/.style={no recording,after upper=}}

\begin{document}
%% Uncomment If one wants to compile this ctable
%%  \ctable[
%%  caption={Your table caption},
%%  label={tab:mytable},
%%  botcap, % caption below table
%%  sideways % This rotates the table
%%  ]
%%  {ccc}
%%  {
%%  % Table footnotes here
%%  }
%%  {
%%  Column 1 & Column 2 & Column 3 \\
%%  Row 2, 1 & 2, 2     & 2, 3 \\
%%  }
\chapter{The first chapter}
\tcbstartrecording
\begin{exercise}{BanachMatch}
The bar graph of the distribution of Banach matches..
\tcblower
%   \begin{figure}[h]
    {\centering
\begin{tikzpicture}[
    declare function={
    comb(\n,\k)=\n!/(\k!*(\n-\k)!);
    albanach(\k,\n,\p)=comb(2*\n-\k,\n)*(\p^(\n+1)*(1-\p)^(\n-\k)+\p^(\n-\k)*(1-\p)^(\n+1));
    }
]
\begin{axis}[
    xlabel={$x$}, ylabel={$P(X=x)$},
    yticklabel style={
        /pgf/number format/fixed,
        /pgf/number format/fixed zerofill,
        /pgf/number format/precision=2
    },
    legend style={
cells={anchor=east},
legend pos=outer north east,
    xlabel={$x$}, ylabel={$P(X=x)$},samples at={0,...,50},
    yticklabel style={
        /pgf/number format/fixed,
        /pgf/number format/fixed zerofill,
        /pgf/number format/precision=2
                     }
              },
    ybar=0pt, bar width=2
]
\addplot [fill=orange, fill opacity=0.5] {albanach(x,50,0.5)}; \addlegendentry{$p=0.5$}
\addplot [fill=cyan, fill opacity=0.5] {albanach(x,50,0.4)}; \addlegendentry{$p=0.4$}
\addplot [fill=blue, fill opacity=0.5] {albanach(x,50,0.3)}; \addlegendentry{$p=0.3$}
\end{axis}
\end{tikzpicture}
\par}
\captionof{figure}{Banach matches}
%\end{figure}
\end{exercise}
\tcbstoprecording
\tcbinputrecords
\end{document}

und seine Kompilierung mit xelatex: Bildbeschreibung hier eingeben

Antwort1

Sie haben die Verschachtelung in der falschen Reihenfolge, Sie möchten, dass Ihre farbigen Kästchen schweben, also sollten sie sich in dem Kästchen befinden, in dem figureSie sie nicht figurehaben möchten.

das funktioniert ohne Fehler

\begin{figure}[htp]
\begin{exercise}{BanachMatch}

....

\end{exercise}
\end{figure}

ohne dass weitere Änderungen an Ihrem Dokument erforderlich sind.


\documentclass{book}

\usepackage[most]{tcolorbox} 
\tcbuselibrary{skins,breakable,xparse}

\usepackage{caption}

\usepackage[most]{tcolorbox}
\tcbuselibrary{skins,breakable,xparse}

\usepackage{tikz}
\usetikzlibrary{arrows,backgrounds,plotmarks,calc,positioning,shadings,patterns,tikzmark}
\usepackage{pgfplots}

%\usepackage{ctable}% Uncomment If one wants to compile the ctable given as example
\usepackage{polyglossia}
\setmainlanguage{english}

\NewTColorBox[auto counter,number within=chapter]{exercise}{m+O{}}{%
    enhanced,
    colframe=green!20!black,
    colback=yellow!10!white,
    coltitle=green!40!black,
    fonttitle=\bfseries,
    underlay={\begin{tcbclipinterior}
        \shade[inner color=green!80!yellow,outer color=yellow!10!white]
            (interior.north west) circle (2cm);
        \draw[help lines,step=5mm,yellow!80!black,shift={(interior.north west)}]
            (interior.south west) grid (interior.north east);
        \end{tcbclipinterior}},
    title={Exercise~ \thetcbcounter:},
    label={exercise:#1},
    attach title to upper=\quad,
    after upper={\par\hfill\textcolor{green!40!black}%
        {\itshape Solution on page~\pageref{solution:#1}}},
    lowerbox=ignored,
    savelowerto=solutions/exercise-\thetcbcounter.tex,
    record={\string\solution{#1}{solutions/exercise-\thetcbcounter.tex}},
    #2
}

\NewTotalTColorBox{\solution}{mm}{%
    enhanced,
    colframe=red!20!black,
    colback=yellow!10!white,
    coltitle=red!40!black,
    fonttitle=\bfseries,
    underlay={\begin{tcbclipinterior}
        \shade[inner color=red!50!yellow,outer color=yellow!10!white]
            (interior.north west) circle (2cm);
        \draw[help lines,step=5mm,yellow!80!black,shift={(interior.north west)}]
            (interior.south west) grid (interior.north east);
        \end{tcbclipinterior}},
    title={Solution of Exercise~\ref{exercise:#1} on page~\pageref{exercise:#1}:},
    phantomlabel={solution:#1},
    attach title to upper=\par,
}{\input{#2}}

\tcbset{no solution/.style={no recording,after upper=}}

\begin{document}
%% Uncomment If one wants to compile this ctable
%%  \ctable[
%%  caption={Your table caption},
%%  label={tab:mytable},
%%  botcap, % caption below table
%%  sideways % This rotates the table
%%  ]
%%  {ccc}
%%  {
%%  % Table footnotes here
%%  }
%%  {
%%  Column 1 & Column 2 & Column 3 \\
%%  Row 2, 1 & 2, 2     & 2, 3 \\
%%  }
\chapter{The first chapter}
\tcbstartrecording
\begin{figure}[htp]
\begin{exercise}{BanachMatch}
The bar graph of the distribution of Banach matches..
\tcblower
    {\centering
\begin{tikzpicture}[
    declare function={
    comb(\n,\k)=\n!/(\k!*(\n-\k)!);
    albanach(\k,\n,\p)=comb(2*\n-\k,\n)*(\p^(\n+1)*(1-\p)^(\n-\k)+\p^(\n-\k)*(1-\p)^(\n+1));
    }
]
\begin{axis}[
    xlabel={$x$}, ylabel={$P(X=x)$},
    yticklabel style={
        /pgf/number format/fixed,
        /pgf/number format/fixed zerofill,
        /pgf/number format/precision=2
    },
    legend style={
cells={anchor=east},
legend pos=outer north east,
    xlabel={$x$}, ylabel={$P(X=x)$},samples at={0,...,50},
    yticklabel style={
        /pgf/number format/fixed,
        /pgf/number format/fixed zerofill,
        /pgf/number format/precision=2
                     }
              },
    ybar=0pt, bar width=2
]
\addplot [fill=orange, fill opacity=0.5] {albanach(x,50,0.5)}; \addlegendentry{$p=0.5$}
\addplot [fill=cyan, fill opacity=0.5] {albanach(x,50,0.4)}; \addlegendentry{$p=0.4$}
\addplot [fill=blue, fill opacity=0.5] {albanach(x,50,0.3)}; \addlegendentry{$p=0.3$}
\end{axis}
\end{tikzpicture}
\par}
\captionof{figure}{Banach matches}
\end{exercise}
\end{figure}
\tcbstoprecording
\tcbinputrecords
\end{document}

verwandte Informationen