我使用 tcolorbox 为概率书编写带有解决方案的练习。当我使用一些浮点数(如表格或数字)时,它会拒绝,并且我收到错误消息,如! LaTeX Error: Not in outer par mode.
或Float(s) lost
.. 所以我不得不撤消 float 命令begin{figure}.. \end{figure}
并改用caption
包,以及它的命令
\captionof{figure}{The caption}
...
现在,我想在这种情况下使用浮点数。1/ 我该如何使用它?
2/ 此外,是否可以与\NewTColorBox
包中提供的一些旋转表一起使用ctable
,例如这个:?
\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/ 此外,我可以在解决方案框架之外写一些东西吗,例如在两个连续的解决方案之间写一些注释或一些浮点数!?
我给出了一个练习的例子,其中可以注意到命令已被注释,(取消注释时\begin{figure} \end{figure}
会出现错误)Not in outer par mode
\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}
答案1
您的嵌套顺序错误,您希望彩色框浮动,因此它们应该在框里面,而figure
您不希望figure
它们在框里面。
此项工作无误
\begin{figure}[htp]
\begin{exercise}{BanachMatch}
....
\end{exercise}
\end{figure}
无需对您的文档进行任何其他更改。
\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}