summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/tcolorbox/tcbskins.code.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/tcolorbox/tcbskins.code.tex')
-rw-r--r--Master/texmf-dist/tex/latex/tcolorbox/tcbskins.code.tex363
1 files changed, 317 insertions, 46 deletions
diff --git a/Master/texmf-dist/tex/latex/tcolorbox/tcbskins.code.tex b/Master/texmf-dist/tex/latex/tcolorbox/tcbskins.code.tex
index 9c2bf760b1f..0d585183416 100644
--- a/Master/texmf-dist/tex/latex/tcolorbox/tcbskins.code.tex
+++ b/Master/texmf-dist/tex/latex/tcolorbox/tcbskins.code.tex
@@ -1,4 +1,4 @@
-%% The LaTeX package tcolorbox - version 2.22 (2013/05/15)
+%% The LaTeX package tcolorbox - version 2.32 (2013/06/23)
%% tcbskins.code.tex: Code for colorboxes with different skins
%%
%% -------------------------------------------------------------------------------------------
@@ -17,8 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\makeatletter
-\def\tcblibrary@skins@loaded{}
+\tcb@set@library@version{2.32}
\RequirePackage{tikz}[2010/10/13]
@@ -118,9 +117,10 @@
}
\long\def\tcb@pseudo@segmentation#1{%
-{\parskip\z@\par\nointerlineskip}\begingroup%
+{\parskip\z@\par\nointerlineskip\hfilneg\kern-\@totalleftmargin}\begingroup%
\begin{tikzpicture}%
- \path[use as bounding box] (0,{\the\dimexpr-\kvtcb@middle-\kvtcb@boxsep\relax}) rectangle (0,{\the\dimexpr\kvtcb@middle+\kvtcb@boxsep\relax});
+ \path[use as bounding box] (0,{\the\dimexpr-\kvtcb@middle-\kvtcb@boxsep\relax})
+ rectangle (\linewidth,{\the\dimexpr\kvtcb@middle+\kvtcb@boxsep\relax});
\node[line width=0mm,inner sep=0mm,draw=none,fill=none,rectangle,
name=segmentation,at={({\the\dimexpr-#1-\kvtcb@boxsep\relax},0)},right,%
minimum width=\tcb@innerwidth,minimum height=\the\dimexpr\kvtcb@middle*2\relax]{};
@@ -268,43 +268,66 @@
}
-\tcbset{skin@enhanced/.style={clear@spec,%
- graphical environment=tikzpicture,geometry nodes,
+\tcbset{%
+ base@unbroken/.style={%
+ clear@spec,graphical environment=tikzpicture,geometry nodes,%
+ set@extensions@preframe={\tcb@draw@shadow@unbroken},%
+ set@extensions@postframe={\tcb@draw@border@unbroken\tcb@apply@overlay},%
+ },%
+ base@first/.style={%
+ clear@spec,graphical environment=tikzpicture,geometry nodes,%
+ set@extensions@preframe={\tcb@draw@shadow@first},%
+ set@extensions@postframe={\tcb@draw@border@first\tcb@apply@overlay},%
+ },%
+ base@middle/.style={%
+ clear@spec,graphical environment=tikzpicture,geometry nodes,%
+ set@extensions@preframe={\tcb@draw@shadow@middle},%
+ set@extensions@postframe={\tcb@draw@border@middle\tcb@apply@overlay},%
+ },%
+ base@last/.style={%
+ clear@spec,graphical environment=tikzpicture,geometry nodes,%
+ set@extensions@preframe={\tcb@draw@shadow@last},%
+ set@extensions@postframe={\tcb@draw@border@last\tcb@apply@overlay},%
+ },%
+}
+
+\tcbset{skin@enhanced/.style={base@unbroken,%
frame engine=path,interior titled engine=path,
interior engine=path,segmentation engine=path,title engine=path,
skin first=enhancedfirst,skin middle=enhancedmiddle,skin last=enhancedlast},
- enhanced/.style={skin=enhanced}}
+ enhanced/.style={skin=enhanced},%
+ enhanced standard/.style={skin=enhanced,
+ skin first=enhanced,skin middle=enhanced,skin last=enhanced},%
+ blank/.style={enhanced,frame hidden,interior hidden,segmentation hidden,%
+ arc=0pt,boxsep=0pt,top=0pt,bottom=0pt,left=0pt,right=0pt,boxrule=0pt,%
+ bottomtitle=6pt,middle=3pt},%
+}
-\tcbset{skin@enhancedfirst/.style={clear@spec,%
- graphical environment=tikzpicture,geometry nodes,
+\tcbset{skin@enhancedfirst/.style={base@first,%
frame engine=pathfirst,interior titled engine=pathfirst,
interior engine=pathfirst,segmentation engine=path,title engine=pathfirst,
skin first=enhancedfirst,skin middle=enhancedmiddle,skin last=enhancedmiddle
}}
-\tcbset{skin@enhancedmiddle/.style={clear@spec,%
- graphical environment=tikzpicture,geometry nodes,
+\tcbset{skin@enhancedmiddle/.style={base@middle,%
frame engine=pathmiddle,interior titled engine=pathmiddle,
interior engine=pathmiddle,segmentation engine=path,title engine=pathmiddle,
skin first=enhancedmiddle,skin middle=enhancedmiddle,skin last=enhancedmiddle
}}
-\tcbset{skin@enhancedlast/.style={clear@spec,%
- graphical environment=tikzpicture,geometry nodes,
+\tcbset{skin@enhancedlast/.style={base@last,%
frame engine=pathlast,interior titled engine=pathlast,
interior engine=pathlast,segmentation engine=path,title engine=pathlast,
skin first=enhancedmiddle,skin middle=enhancedmiddle,skin last=enhancedlast
}}
-\tcbset{skin@freelance/.style={clear@spec,%
- graphical environment=tikzpicture,geometry nodes,
+\tcbset{skin@freelance/.style={base@unbroken,%
frame engine=freelance,interior titled engine=freelance,
interior engine=freelance,segmentation engine=freelance,title engine=freelance,
skin first=freelance,skin middle=freelance,skin last=freelance},
freelance/.style={skin=freelance}}
-\tcbset{skin@bicolor/.style={clear@spec,%
- graphical environment=tikzpicture,geometry nodes,
+\tcbset{skin@bicolor/.style={base@unbroken,%
frame engine=path,interior titled engine=freelance,
interior engine=freelance,segmentation engine=freelance,title engine=path,
interior titled code={%
@@ -329,8 +352,7 @@
skin first=bicolorfirst,skin middle=bicolormiddle,skin last=bicolorlast},
bicolor/.style={skin=bicolor}}
-\tcbset{skin@bicolorfirst/.style={clear@spec,%
- graphical environment=tikzpicture,geometry nodes,
+\tcbset{skin@bicolorfirst/.style={base@first,%
frame engine=pathfirst,interior titled engine=freelance,
interior engine=freelance,segmentation engine=freelance,title engine=pathfirst,
interior titled code={%
@@ -355,8 +377,7 @@
skin first=bicolorfirst,skin middle=bicolormiddle,skin last=bicolormiddle
}}
-\tcbset{skin@bicolormiddle/.style={clear@spec,%
- graphical environment=tikzpicture,geometry nodes,
+\tcbset{skin@bicolormiddle/.style={base@middle,%
frame engine=pathmiddle,interior titled engine=freelance,
interior engine=freelance,segmentation engine=freelance,title engine=pathmiddle,
interior titled code={%
@@ -381,8 +402,7 @@
skin first=bicolormiddle,skin middle=bicolormiddle,skin last=bicolormiddle
}}
-\tcbset{skin@bicolorlast/.style={clear@spec,%
- graphical environment=tikzpicture,geometry nodes,
+\tcbset{skin@bicolorlast/.style={base@last,%
frame engine=pathlast,interior titled engine=freelance,
interior engine=freelance,segmentation engine=freelance,title engine=pathlast,
interior titled code={%
@@ -411,8 +431,7 @@
\tikzset{beamer@color/.style={top color=\kvtcb@colback,bottom color=\kvtcb@colback!85!black}}
\tcbset{%
- skin@beamer/.style={clear@spec,%
- graphical environment=tikzpicture,geometry nodes,
+ skin@beamer/.style={base@unbroken,%
frame engine=path,interior titled engine=freelance,
interior engine=freelance,segmentation engine=freelance,title engine=path,
interior titled code={%
@@ -431,12 +450,12 @@
segmentation code={\iftcb@sidebyside\tcb@drawlower@path\else\tcb@drawspec@LR{beamer@color}\fi},%
skin first=beamerfirst,skin middle=beamermiddle,skin last=beamerlast},
beamer/.style={skin=beamer,boxrule=0mm,titlerule=1mm,toptitle=0.5mm,arc=2mm,fonttitle=\bfseries,
- frame style={fill=\kvtcb@colframe,drop shadow}},
+ drop fuzzy shadow,
+ },
}
\tcbset{%
- skin@beamerfirst/.style={clear@spec,%
- graphical environment=tikzpicture,geometry nodes,
+ skin@beamerfirst/.style={base@first,%
frame engine=pathfirst,interior titled engine=freelance,
interior engine=freelance,segmentation engine=freelance,title engine=pathfirst,
interior titled code={%
@@ -455,8 +474,7 @@
skin first=beamerfirst,skin middle=beamermiddle,skin last=beamermiddle}}
\tcbset{%
- skin@beamermiddle/.style={clear@spec,%
- graphical environment=tikzpicture,geometry nodes,
+ skin@beamermiddle/.style={base@middle,%
frame engine=pathmiddle,interior titled engine=freelance,
interior engine=freelance,segmentation engine=freelance,title engine=pathmiddle,
interior titled code={%
@@ -476,8 +494,7 @@
skin first=beamermiddle,skin middle=beamermiddle,skin last=beamermiddle}}
\tcbset{%
- skin@beamerlast/.style={clear@spec,%
- graphical environment=tikzpicture,geometry nodes,
+ skin@beamerlast/.style={base@last,%
frame engine=pathlast,interior titled engine=freelance,
interior engine=freelance,segmentation engine=freelance,title engine=pathlast,
interior titled code={%
@@ -508,8 +525,7 @@
\tikzset{widget@color/.style={left color=\kvtcb@colframe!75!white,right color=\kvtcb@colframe!75!white!25!\kvtcb@colback}}
-\tcbset{skin@widget/.style={clear@spec,%
- graphical environment=tikzpicture,geometry nodes,
+\tcbset{skin@widget/.style={base@unbroken,%
frame engine=path,interior titled engine=path,
interior engine=path,segmentation engine=freelance,title engine=freelance,
title code={{\tcb@spec{widget@color}\tcb@drawtitle@path}},
@@ -519,16 +535,14 @@
titlerule=0mm,toprule at break=0mm},
}
-\tcbset{skin@widgetfirst/.style={clear@spec,%
- graphical environment=tikzpicture,geometry nodes,
+\tcbset{skin@widgetfirst/.style={base@first,%
frame engine=pathfirst,interior titled engine=pathfirst,
interior engine=pathfirst,segmentation engine=freelance,title engine=freelance,
title code={{\tcb@spec{widget@color}\tcb@drawtitle@pathfirst}},
segmentation code={\tcb@drawspec@widgetsegment},%
skin first=widgetfirst,skin middle=widgetmiddle,skin last=widgetmiddle}}
-\tcbset{skin@widgetmiddle/.style={clear@spec,%
- graphical environment=tikzpicture,geometry nodes,
+\tcbset{skin@widgetmiddle/.style={base@middle,%
frame engine=pathmiddle,interior titled engine=pathmiddle,
interior engine=pathmiddle,segmentation engine=freelance,title engine=freelance,
title code={{\tcb@spec{widget@color}\tcb@drawtitle@pathmiddle}},
@@ -536,13 +550,12 @@
skin first=widgetmiddle,skin middle=widgetmiddle,skin last=widgetmiddle}}
-\tcbset{skin@widgetlast/.style={clear@spec,%
- graphical environment=tikzpicture,geometry nodes,
+\tcbset{skin@widgetlast/.style={base@last,%
frame engine=pathlast,interior titled engine=pathlast,
interior engine=pathlast,segmentation engine=freelance,title engine=freelance,
title code={{\tcb@spec{widget@color}\tcb@drawtitle@pathlast}},
segmentation code={\tcb@drawspec@widgetsegment},%
- skin first=widgetmiddle,skin middle=widgetmiddle,skin last=widgetlast}}
+ skin first=widgetmiddle,skin middle=widgetmiddle,skin last=widgetlast}}
\tcbset{skin@draft/.style={clear@spec,%
@@ -590,7 +603,7 @@
+(\tcb@w@lower,\tcb@height@upper);
\fi%
\or%
- \ifvoid\tcb@upperbox
+ \ifdim\wd\tcb@upperbox=0pt\relax
\path[fill=white,draw,dotted]
([xshift={\kvtcb@boxsep},yshift={\kvtcb@boxsep+\tcb@break@bottomsep}]interior.south west) rectangle
([xshift={-\kvtcb@boxsep},yshift={-\kvtcb@boxsep-\tcb@break@topsep}]interior.north east);
@@ -627,9 +640,46 @@
\path[draw=blue!10!white,double,line width=1pt,dashed,opacity=0.3] (current bounding box.south west) rectangle (current bounding box.north east);
\pgfsetfillopacity{0.3}
},
- interior titled code=,interior code=,overlay=,},
+ set@extensions@postframe={},%
+ interior titled code=,interior code=,},
draft/.style={skin=draft}}
+\def\tcb@clip@interior{%
+ \begingroup%
+ \tcbset{interior hidden}%
+ \tcb@spec{forced clip}%
+ \def\tcb@spec##1{}%
+ \iftcb@hasTitle%
+ \csname tcb@drawwithtitle@\kvtcb@engine@interiortitled\endcsname%
+ \else%
+ \csname tcb@drawwithouttitle@\kvtcb@engine@interior\endcsname%
+ \fi%
+ \endgroup%
+}
+
+\def\tcb@clip@frame{%
+ \begingroup%
+ \tcbset{frame hidden}%
+ \tcb@spec{forced clip}%
+ \def\tcb@spec##1{}%
+ \csname tcb@drawframe@\kvtcb@engine@frame\endcsname%
+ \endgroup%
+}
+
+\def\tcb@clip@title{%
+ \begingroup%
+ \tcbset{title hidden}%
+ \tcb@spec{forced clip}%
+ \def\tcb@spec##1{}%
+ \iftcb@hasTitle%
+ \csname tcb@drawtitle@\kvtcb@engine@title\endcsname%
+ \fi%
+ \endgroup%
+}
+
+\newenvironment{tcbclipinterior}{\begin{scope}\tcb@clip@interior}{\end{scope}}
+\newenvironment{tcbclipframe}{\begin{scope}\tcb@clip@frame}{\end{scope}}
+\newenvironment{tcbcliptitle}{\begin{scope}\tcb@clip@title}{\end{scope}}
\newbox\tcb@waterbox
@@ -648,11 +698,23 @@
\ifdim\dimexpr\tcb@scale@x pt\relax<\dimexpr\tcb@scale@y pt\relax\let\tcb@scale@y=\tcb@scale@x\else\let\tcb@scale@x=\tcb@scale@y\fi%
}
-\def\tcb@drawspec@watermark{%
+\def\tcb@comp@wm@overzoom{%
+ \tcb@setratiorobust\tcb@scale@x{\dimexpr\kvtcb@watermark@factor\dimexpr\tcb@innerwidth\relax\relax}{\wd\tcb@waterbox}%
+ \tcb@setratiorobust\tcb@scale@y{\dimexpr\kvtcb@watermark@factor\dimexpr\tcb@innerheight\relax\relax}{\ht\tcb@waterbox+\dp\tcb@waterbox}%
+ \ifdim\dimexpr\tcb@scale@x pt\relax>\dimexpr\tcb@scale@y pt\relax\let\tcb@scale@y=\tcb@scale@x\else\let\tcb@scale@x=\tcb@scale@y\fi%
+}
+
+\def\tcb@drawspec@watermark@@noclip{%
\tcb@comp@wm%
\node[opacity=\kvtcb@watermark@opacity,anchor=center] at (interior) {\scalebox{\tcb@scale@x}[\tcb@scale@y]{\box\tcb@waterbox}};%
}
+\def\tcb@drawspec@watermark@@clip{%
+ \begin{tcbclipinterior}%
+ \tcb@drawspec@watermark@@noclip%
+ \end{tcbclipinterior}%
+}
+
\def\tcb@drawspec@watermark@tikz#1{%
\setbox\tcb@waterbox=\hbox{\pgfinterruptpicture{\begin{tikzpicture}[color=\kvtcb@watermark@color]#1\end{tikzpicture}}\endpgfinterruptpicture}%
\tcb@drawspec@watermark%
@@ -667,10 +729,13 @@
\tcb@drawspec@watermark@tikz{\node[inner sep=0pt,align=flush center]{#1};}%
}
+\tikzset{forced clip/.code={\tikz@addmode{\tikz@mode@cliptrue}\let\tikz@options=\pgfutil@empty}}
+
\tcbset{%
watermark opacity/.store in=\kvtcb@watermark@opacity,%
watermark color/.store in=\kvtcb@watermark@color,%
watermark zoom/.code={\def\kvtcb@watermark@factor{#1}\let\tcb@comp@wm=\tcb@comp@wm@zoom},%
+ watermark overzoom/.code={\def\kvtcb@watermark@factor{#1}\let\tcb@comp@wm=\tcb@comp@wm@overzoom},%
watermark stretch/.code={\def\kvtcb@watermark@factor{#1}\let\tcb@comp@wm=\tcb@comp@wm@stretch},%
%
watermark tikz/.style={overlay={\tcb@drawspec@watermark@tikz{#1}}},
@@ -680,10 +745,48 @@
watermark text/.style={overlay={\tcb@drawspec@watermark@text{#1}}},
watermark text on/.style args={#1 is #2}{overlay #1={\tcb@drawspec@watermark@text{#2}}},
no watermark/.style={no overlay},
+ clip watermark/.is choice,
+ clip watermark/true/.code={\let\tcb@drawspec@watermark=\tcb@drawspec@watermark@@clip},
+ clip watermark/false/.code={\let\tcb@drawspec@watermark=\tcb@drawspec@watermark@@noclip},
+ clip watermark/.default=true,
%
watermark opacity=1.00,
watermark color=\kvtcb@colback!85!\kvtcb@colframe,
watermark zoom=0.75,
+ clip watermark,
+}
+
+\def\tcb@tdraw@title@clip{%
+ \begin{tcbcliptitle}%
+ \tcb@tdraw@title@core%
+ \end{tcbcliptitle}%
+}
+
+\def\tcb@tdraw@upper@clip{%
+ \begin{tcbclipinterior}%
+ \tcb@tdraw@upper@core%
+ \end{tcbclipinterior}%
+}
+
+\def\tcb@tdraw@lower@clip{%
+ \begin{tcbclipinterior}%
+ \tcb@tdraw@lower@core%
+ \end{tcbclipinterior}%
+}
+
+\tcbset{%
+ clip title/.is choice,
+ clip title/true/.code={\let\tcb@tdraw@title=\tcb@tdraw@title@clip},
+ clip title/false/.code={\let\tcb@tdraw@title=\tcb@tdraw@title@core},
+ clip title/.default=true,
+ clip upper/.is choice,
+ clip upper/true/.code={\let\tcb@tdraw@upper=\tcb@tdraw@upper@clip},
+ clip upper/false/.code={\let\tcb@tdraw@upper=\tcb@tdraw@upper@core},
+ clip upper/.default=true,
+ clip lower/.is choice,
+ clip lower/true/.code={\let\tcb@tdraw@lower=\tcb@tdraw@lower@clip},
+ clip lower/false/.code={\let\tcb@tdraw@lower=\tcb@tdraw@lower@core},
+ clip lower/.default=true,
}
@@ -703,7 +806,175 @@
width=\the\dimexpr\linewidth+1.6cm\relax,
frame style={top color=\kvtcb@colframe,bottom color=\kvtcb@colframe,middle color=yellow!75!\kvtcb@colframe},
title style={left color=\kvtcb@colframe,right color=\kvtcb@colframe,middle color=yellow!75!\kvtcb@colframe},
- watermark tikz={\draw[line width=2mm] (interior) circle (1cm) node{\fontfamily{ptm}\fontseries{b}\fontsize{20mm}{20mm}\selectfont!};},
+ watermark tikz={\draw[line width=2mm] circle (1cm) node{\fontfamily{ptm}\fontseries{b}\fontsize{20mm}{20mm}\selectfont!};},
watermark zoom=0.75,
}}
+
+\def\tcb@border@prepare#1#2{%
+ \tcbdimto\tcb@border@ts{#2+(#1)/2}%
+ \ifdim\dimexpr\tcb@outer@arc>\tcb@border@ts\relax%
+ \tcbdimto\tcb@border@arc{\tcb@outer@arc-\tcb@border@ts}%
+ \else%
+ \let\tcb@border@arc=\tcb@zpt%
+ \fi%
+}
+
+\def\tcb@border@unbroken#1#2#3{%
+ \tcb@border@prepare{#1}{#2}%
+ \draw[line width=#1,rounded corners=\tcb@border@arc,#3]
+ ([xshift=\tcb@border@ts,yshift=\tcb@border@ts]frame.south west)%
+ rectangle ([xshift=-\tcb@border@ts,yshift=-\tcb@border@ts]frame.north east);%
+}
+
+\def\tcb@border@first#1#2#3{%
+ \tcb@border@prepare{#1}{#2}%
+ \draw[line width=#1,rounded corners=\tcb@border@arc,#3]
+ ([xshift=\tcb@border@ts]frame.south west) --
+ ([xshift=\tcb@border@ts,yshift=-\tcb@border@ts]frame.north west) --
+ ([xshift=-\tcb@border@ts,yshift=-\tcb@border@ts]frame.north east) --
+ ([xshift=-\tcb@border@ts]frame.south east);%
+}
+
+\def\tcb@border@middle#1#2#3{%
+ \tcb@border@prepare{#1}{#2}%
+ \draw[line width=#1,#3]
+ ([xshift=\tcb@border@ts]frame.north west) -- ([xshift=\tcb@border@ts]frame.south west);%
+ \draw[line width=#1,#3]
+ ([xshift=-\tcb@border@ts]frame.north east) -- ([xshift=-\tcb@border@ts]frame.south east);%
+}
+
+\def\tcb@border@last#1#2#3{%
+ \tcb@border@prepare{#1}{#2}%
+ \draw[line width=#1,rounded corners=\tcb@border@arc,#3]
+ ([xshift=\tcb@border@ts]frame.north west) --
+ ([xshift=\tcb@border@ts,yshift=\tcb@border@ts]frame.south west) --
+ ([xshift=-\tcb@border@ts,yshift=\tcb@border@ts]frame.south east) --
+ ([xshift=-\tcb@border@ts]frame.north east);%
+}
+
+
+\def\tcb@draw@border@unbroken{%
+ \let\tcb@border=\tcb@border@unbroken%
+ \kvtcb@borderline%
+}
+
+\def\tcb@draw@border@first{%
+ \let\tcb@border=\tcb@border@first%
+ \kvtcb@borderline%
+}
+
+\def\tcb@draw@border@middle{%
+ \let\tcb@border=\tcb@border@middle%
+ \kvtcb@borderline%
+}
+
+\def\tcb@draw@border@last{%
+ \let\tcb@border=\tcb@border@last%
+ \kvtcb@borderline%
+}
+
+\tcbset{%
+ border@line app/.code={\tcb@appto\kvtcb@borderline{#1}},%
+ borderline/.style args={#1#2#3}{border@line app={\tcb@border{#1}{#2}{#3}}},%
+ no borderline/.code={\def\kvtcb@borderline{}},%
+ %
+ no borderline,%
+}
+
+\def\tcb@shadow@prepare#1#2{%
+ \ifdim#2>0pt\relax\tcbdimto\tcb@shadow@ts{#1-#2/2}%%
+ \else\tcbdimto\tcb@shadow@ts{#1+#2/2}\fi%
+ \ifdim\dimexpr\tcb@outer@arc>\tcb@shadow@ts\relax%
+ \tcbdimto\tcb@shadow@arc{\tcb@outer@arc-\tcb@shadow@ts}%
+ \else%
+ \let\tcb@shadow@arc=\tcb@zpt%
+ \fi%
+}
+
+\def\tcb@shadow@unbroken#1#2#3#4{%
+ \tcb@shadow@prepare{#3}{#1}%
+ \fill[line width=0pt,rounded corners=\tcb@shadow@arc,#4]%
+ ([xshift=#1+#3,yshift=#2+#3]frame.south west)%
+ rectangle ([xshift=#1-#3,yshift=#2-#3]frame.north east);%
+}
+
+
+\def\tcb@shadow@first#1#2#3#4{%
+ \tcb@shadow@prepare{#3}{#1}%
+ \fill[line width=0pt,rounded corners=\tcb@shadow@arc,#4]
+ ([xshift=#1+#3,yshift=#2+#3]frame.south west) --
+ ([xshift=#1+#3,yshift=#2-#3]frame.north west) --
+ ([xshift=#1-#3,yshift=#2-#3]frame.north east)[sharp corners] --
+ ([xshift=#1-#3,yshift=#2+#3]frame.south east) -- cycle;%
+}
+
+\def\tcb@shadow@middle#1#2#3#4{%
+ \tcb@shadow@prepare{#3}{#1}%
+ \fill[line width=0pt,sharp corners,#4]%
+ ([xshift=#1+#3,yshift=#2+#3]frame.south west)%
+ rectangle ([xshift=#1-#3,yshift=#2-#3]frame.north east);%
+}
+
+\def\tcb@shadow@last#1#2#3#4{%
+ \tcb@shadow@prepare{#3}{#1}%
+ \fill[line width=0pt,rounded corners=\tcb@shadow@arc,#4]
+ ([xshift=#1-#3,yshift=#2-#3]frame.north east) --
+ ([xshift=#1-#3,yshift=#2+#3]frame.south east) --
+ ([xshift=#1+#3,yshift=#2+#3]frame.south west)[sharp corners] --
+ ([xshift=#1+#3,yshift=#2-#3]frame.north west) -- cycle;%
+}
+
+\def\tcb@draw@shadow@unbroken{%
+ \let\tcb@shadow=\tcb@shadow@unbroken%
+ \kvtcb@shadow%
+}
+
+\def\tcb@draw@shadow@first{%
+ \let\tcb@shadow=\tcb@shadow@first%
+ \kvtcb@shadow%
+}
+
+\def\tcb@draw@shadow@middle{%
+ \let\tcb@shadow=\tcb@shadow@middle%
+ \kvtcb@shadow%
+}
+
+\def\tcb@draw@shadow@last{%
+ \let\tcb@shadow=\tcb@shadow@last%
+ \kvtcb@shadow%
+}
+
+
+\tcbset{%
+ shad@w app/.code={\tcb@appto\kvtcb@shadow{#1}},%
+ shadow/.style args={#1#2#3#4}{shad@w app={\tcb@shadow{#1}{#2}{#3}{#4}}},%
+ no shadow/.code={\def\kvtcb@shadow{}},%
+ fuzzy shadow/.style args={#1#2#3#4#5}{shad@w app={%
+ \begin{scope}[#5]%
+ \tcb@shadow{#1}{#2}{\the\dimexpr#3-4\dimexpr#4\relax}{opacity=0.01}%
+ \tcb@shadow{#1}{#2}{\the\dimexpr#3-3\dimexpr#4\relax}{opacity=0.02}%
+ \tcb@shadow{#1}{#2}{\the\dimexpr#3-2\dimexpr#4\relax}{opacity=0.04}%
+ \tcb@shadow{#1}{#2}{\the\dimexpr#3-#4\relax}{opacity=0.07}%
+ \tcb@shadow{#1}{#2}{#3}{opacity=0.11}%
+ \tcb@shadow{#1}{#2}{\the\dimexpr#3+#4\relax}{opacity=0.11}%
+ \tcb@shadow{#1}{#2}{\the\dimexpr#3+2\dimexpr#4\relax}{opacity=0.07}%
+ \tcb@shadow{#1}{#2}{\the\dimexpr#3+3\dimexpr#4\relax}{opacity=0.04}%
+ \tcb@shadow{#1}{#2}{\the\dimexpr#3+4\dimexpr#4\relax}{opacity=0.02}%
+ \tcb@shadow{#1}{#2}{\the\dimexpr#3+5\dimexpr#4\relax}{opacity=0.01}%
+ \end{scope}}},%
+ %
+ drop shadow/.style={shadow={0.9mm}{-0.9mm}{0mm}{opacity=0.5,#1}},
+ drop shadow/.default={black!50!white},%
+ halo/.style args={#1 with #2}{shadow={0mm}{0mm}{-#1}{opacity=0.5,#2}},
+ halo/.default={0.9mm with yellow},%
+ drop fuzzy shadow/.style={fuzzy shadow={1.0mm}{-1.0mm}{0mm}{0.12mm}{#1}},
+ drop fuzzy shadow/.default={black!50!white},%
+ fuzzy halo/.style args={#1 with #2}{fuzzy shadow={0mm}{0mm}{-#1}{0.12mm}{#2}},
+ fuzzy halo/.default={1.0mm with yellow},%
+ %
+ no shadow,%
+ %
+ %
+}
+