From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- macros/latex/contrib/tcolorbox/tcolorbox.sty | 2216 ++++++++++++++++++++++++++ 1 file changed, 2216 insertions(+) create mode 100644 macros/latex/contrib/tcolorbox/tcolorbox.sty (limited to 'macros/latex/contrib/tcolorbox/tcolorbox.sty') diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.sty b/macros/latex/contrib/tcolorbox/tcolorbox.sty new file mode 100644 index 0000000000..778bf12363 --- /dev/null +++ b/macros/latex/contrib/tcolorbox/tcolorbox.sty @@ -0,0 +1,2216 @@ +%% The LaTeX package tcolorbox - version 4.20 (2019/03/02) +%% tcolorbox.sty: Text color boxes +%% +%% ------------------------------------------------------------------------------------------- +%% Copyright (c) 2006-2019 by Prof. Dr. Dr. Thomas F. Sturm +%% ------------------------------------------------------------------------------------------- +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `author-maintained'. +%% +%% This work consists of all files listed in README +%% +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{tcolorbox}[2019/03/02 version 4.20 text color boxes] +\def\tcb@version{4.20} + +\RequirePackage{pgf}[2008/01/15] +\RequirePackage{verbatim}[2003/08/22] +\RequirePackage{environ}[2013/04/01] +\RequirePackage{etoolbox}[2011/01/03] + +% register +\newif\iftcb@lowerignored +\newif\iftcb@lowervisible +\newif\iftcb@uppervisible +\newif\iftcb@titlevisible +\newif\iftcb@hasTitle +\newif\iftcb@hasLower +\newif\iftcb@lowerspace +\newif\iftcb@sidebyside +\newif\iftcb@hasPhantom +\newif\iftcb@lowerseparated +\newif\iftcb@titlefilled +\newif\iftcb@fixedheight +\newif\iftcb@ignorenobreak +\newif\iftcb@checkpage + +\newbox\tcb@titlebox +\newbox\tcb@upperbox +\newbox\tcb@lowerbox +\newbox\tcb@phantombox + +\newcounter{tcbbreakpart} +\newcounter{tcblayer} +\newcount\tcolorbox@number + +\def\tcb@warning#1{\PackageWarning{tcolorbox}{#1}} +\def\tcb@error#1#2{\PackageError{tcolorbox}{#1}{#2}} + +% key management +\pgfkeys{/tcb/.is family} + +\def\tcbset{\pgfqkeys{/tcb}} +\long\def\tcbset@late@options#1{\appto\tcb@lateoptions@hook{\tcbset{#1}}} + +\def\tcb@dim@to#1#2{\def#1{\the\dimexpr#2\relax}} +\def\tcbdimto#1#2{\edef#1{\the\dimexpr#2\relax}} + +\def\tcb@defToTotalHeightStandard#1#2{\tcbdimto#1{\ht#2+\dp#2}} +\let\tcb@defToTotalHeight\tcb@defToTotalHeightStandard + +\def\tcb@zpt{0pt} + +\def\tcb@comp@arc@auto{% + \let\tcb@outer@arc=\kvtcb@top@rule@stand% + \ifdim\kvtcb@bottom@rule@stand<\tcb@outer@arc\relax% + \let\tcb@outer@arc=\kvtcb@bottom@rule@stand\fi% + \ifdim\kvtcb@left@rule<\tcb@outer@arc\relax% + \let\tcb@outer@arc=\kvtcb@left@rule\fi% + \ifdim\kvtcb@right@rule<\tcb@outer@arc\relax% + \let\tcb@outer@arc=\kvtcb@right@rule\fi% + \tcbdimto\tcb@outer@arc{\tcb@arc@scale\dimexpr\tcb@outer@arc\relax+\kvtcb@arc}% +} + +\def\tcb@comp@arc@fix{% + \tcbdimto\tcb@outer@arc{\kvtcb@outerarc}% +} + +\def\tcb@use@auto@parskip{% + \tcbset{autoparskip}% +} + +\def\tcb@hack@currenvir{\edef\tcb@temp{\noexpand\def\noexpand\@currenvir{\kvtcb@savedelimiter}}\tcb@temp} + +\def\tcb@sbs@quota@leftwidth{% + \tcbdimto\tcb@w@upper{\kvtcb@sbs@ratio}% + \tcbdimto\tcb@w@lower{\tcb@w@sbs-\tcb@w@upper}% +} + +\def\tcb@sbs@quota@rightwidth{% + \tcbdimto\tcb@w@lower{\kvtcb@sbs@ratio}% + \tcbdimto\tcb@w@upper{\tcb@w@sbs-\tcb@w@lower}% +} + +\def\tcb@sbs@quota@leftratio{% + \tcbdimto\tcb@w@upper{\kvtcb@sbs@ratio\dimexpr\tcb@w@sbs}% + \tcbdimto\tcb@w@lower{\tcb@w@sbs-\tcb@w@upper}% +} + +\def\tcb@sbs@quota@rightratio{% + \tcbdimto\tcb@w@lower{\kvtcb@sbs@ratio\dimexpr\tcb@w@sbs}% + \tcbdimto\tcb@w@upper{\tcb@w@sbs-\tcb@w@lower}% +} + +\def\tcb@shield@@externalize{% + \ifdefined\tikzexternaldisable% + \ifdefined\pgfpictureid% + \else% + \tikzexternaldisable% + \fi% + \fi} + +\def\tcb@set@embed@tcbox#1{% + \long\def\tcb@embed@tcbox##1{% + \tcbdimto\tcb@w@upper{\kvtcb@width-(\kvtcb@left@rule+\kvtcb@leftupper+(\kvtcb@boxsep)*2+\kvtcb@rightupper+\kvtcb@right@rule)}% + #1}% +} + +\def\tcb@new@skin#1#2{\tcbset{skin@#1/.style={#2}}} +\newcommand{\tcbsubskin}[3]{\tcb@new@skin{#1}{skin@#2,#3}} + +\pgfkeys{/handlers/.dimstore in/.code=\pgfkeysalso{\pgfkeyscurrentpath/.code=\def#1{\the\dimexpr##1\relax}}} +\pgfkeys{/handlers/.colorlet/.code=\pgfkeysalso{\pgfkeyscurrentpath/.code=\colorlet{#1}{##1}}} + +\newcommand\tcbtitle{\ifx\tcbtitletext\@empty\else% + \leavevmode{\color{tcbcoltitle}\kvtcb@fonttitle\kvtcb@haligntitle\kvtcb@before@title\tcbtitletext\kvtcb@after@title}\fi} + +\def\tcb@detach@title@code@{% + \let\tcbtitletext\kvtcb@title% + \let\kvtcb@title\@empty% + \tcbset{title/.store in=\tcbtitletext}% + \let\tcb@detach@title@code\@empty% + \let\tcb@attach@title@code\tcb@attach@title@code@% + \let\tcb@specialtitle@hook\@empty% +} + +\def\tcb@attach@title@code@{% + \let\kvtcb@title\tcbtitletext% + \let\tcbtitletext\@empty% + \tcbset{title/.store in=\kvtcb@title}% + \let\tcb@attach@title@code\@empty% + \let\tcb@detach@title@code\tcb@detach@title@code@% + \let\tcb@specialtitle@hook\@empty% +} + +\def\tcb@gettitle#1{\protected@edef\@currentlabelname{#1}} + +\AfterEndPreamble{% + \ifdefined\NR@gettitle% + \let\tcb@gettitle\NR@gettitle% + \fi% +} + +\def\tcb@parfillskip@restore{\ifdim\parfillskip>0pt\relax\parfillskip\@flushglue\fi} + +% analog to plain.tex +\def\tcb@raggedright@plain{\raggedright\rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax} +\def\tcb@raggedleft@plain{\raggedleft\leftskip0pt plus2em \spaceskip.3333em \xspaceskip.5em \hbadness=10000\relax} +\def\tcb@raggedcenter@plain{\centering\leftskip0pt plus2em\rightskip0pt plus2em\spaceskip.3333em \xspaceskip.5em \hbadness=10000\relax} + +\def\tcb@insert@before@upper@ignore{\kvtcb@before@upper\ignorespaces} +\def\tcb@insert@before@upper@noignore{\kvtcb@before@upper} +\def\tcb@insert@before@lower@ignore{\kvtcb@before@lower\ignorespaces} +\def\tcb@insert@before@lower@noignore{\kvtcb@before@lower} +\def\tcb@insert@after@upper@unskip{\ifvmode\else\unskip\fi\kvtcb@after@upper} +\def\tcb@insert@after@upper@nounskip{\kvtcb@after@upper} +\def\tcb@insert@after@lower@unskip{\ifvmode\else\unskip\fi\kvtcb@after@lower} +\def\tcb@insert@after@lower@nounskip{\kvtcb@after@lower} + +\tcbset{% + title/.store in=\kvtcb@title, + notitle/.style={title=}, + adjust text/.store in=\kvtcb@adjusttext, + adjusted title/.style={title={#1\vphantom{\kvtcb@adjusttext}}}, + squeezed title/.style={title={% + \setbox\z@=\color@hbox#1\color@endbox% + \ifdim\wd\z@>\linewidth\relax% + \resizebox{\linewidth}{\height}{\unhbox\z@}% + \else% + \unhbox\z@% + \fi% + }}, + squeezed title*/.style={squeezed title={#1\vphantom{\kvtcb@adjusttext}}},% + detach title/.code=\tcb@detach@title@code,% + attach title/.code=\tcb@attach@title@code,% + attach title to upper/.style={detach title,before upper={\ifx\tcbtitletext\@empty\else\tcbtitle#1\fi}}, + attach title to upper/.default=, + subtitle style/.store in=\kvtcb@subtitle@style,% + width/.store in=\kvtcb@width, + text width/.style={width={#1+\kvtcb@left@rule+\kvtcb@right@rule+\kvtcb@boxsep*2+\kvtcb@leftupper+\kvtcb@rightupper}},% + add to width/.code={\tcbdimto\kvtcb@width{\kvtcb@width+(#1)}},% + boxsep/.store in=\kvtcb@boxsep, + toprule/.code={% + \def\kvtcb@top@rule@stand{#1}% + \let\kvtcb@top@rule@break=\kvtcb@top@rule@stand% + }, + bottomrule/.code={% + \def\kvtcb@bottom@rule@stand{#1}% + \let\kvtcb@bottom@rule@break=\kvtcb@bottom@rule@stand% + }, + leftrule/.store in=\kvtcb@left@rule, + rightrule/.store in=\kvtcb@right@rule, + titlerule/.store in=\kvtcb@title@rule, + boxrule/.code={ + \def\kvtcb@top@rule@stand{#1}% + \let\kvtcb@top@rule@break=\kvtcb@top@rule@stand% + \let\kvtcb@bottom@rule@stand=\kvtcb@top@rule@stand% + \let\kvtcb@bottom@rule@break=\kvtcb@top@rule@stand% + \let\kvtcb@left@rule=\kvtcb@top@rule@stand% + \let\kvtcb@right@rule=\kvtcb@top@rule@stand% + \let\kvtcb@title@rule=\kvtcb@top@rule@stand% + }, + arc/.store in=\kvtcb@arc, + outer arc/.code={\def\kvtcb@outerarc{#1}\let\tcb@comp@arc=\tcb@comp@arc@fix}, + auto outer arc/.code={\let\tcb@comp@arc=\tcb@comp@arc@auto}, + circular arc/.style={arc=\tcb@innerwidth/2}, + bean arc/.code={% + \iftcb@fixedheight% + \ifdim\dimexpr\kvtcb@width-(\kvtcb@left@rule+\kvtcb@right@rule)>\dimexpr\kvtcb@height@fixed-(\kvtcb@top@rule@stand+\kvtcb@bottom@rule@stand)\relax% + \def\kvtcb@arc{(\kvtcb@height@fixed-(\kvtcb@top@rule@stand+\kvtcb@bottom@rule@stand))/2}% + \else% + \def\kvtcb@arc{(\kvtcb@width-(\kvtcb@left@rule+\kvtcb@right@rule))/2}% + \fi% + \else% + \def\kvtcb@arc{\tcb@innerwidth/2}% + \fi% + }, + octogon arc/.style={arc=0.292893218\dimexpr\tcb@innerwidth\relax}, + arc is curved/.code={% + \def\tcb@arc@scale{1}% + \let\tcb@apply@graph@patches=\tcbpatcharcround% + }, + arc is angular/.code={% + \def\tcb@arc@scale{0.58578644}% + \let\tcb@apply@graph@patches=\tcbpatcharcangular% + }, + sharpish corners/.style={arc=\z@,outer arc=\z@}, + lefttitle/.store in=\kvtcb@lefttitle, + leftupper/.store in=\kvtcb@leftupper, + leftlower/.store in=\kvtcb@leftlower, + left/.style={lefttitle=#1,leftupper=#1,leftlower=#1}, + left*/.style={left={#1-(\kvtcb@left@rule)-(\kvtcb@boxsep)-(\kvtcb@bbleft)}}, + righttitle/.store in=\kvtcb@righttitle, + rightupper/.store in=\kvtcb@rightupper, + rightlower/.store in=\kvtcb@rightlower, + right/.style={righttitle=#1,rightupper=#1,rightlower=#1}, + right*/.style={right={#1-(\kvtcb@right@rule)-(\kvtcb@boxsep)-(\kvtcb@bbright)}}, + top/.store in=\kvtcb@top, + toptitle/.store in=\kvtcb@toptitle, + bottom/.store in=\kvtcb@bottom, + bottomtitle/.store in=\kvtcb@bottomtitle, + middle/.store in=\kvtcb@middle, + colback/.colorlet=tcbcolback, + colframe/.colorlet=tcbcolframe, + colupper/.colorlet=tcbcolupper, + collower/.colorlet=tcbcollower, + coltext/.style={colupper=#1,collower=#1}, + coltitle/.colorlet=tcbcoltitle, + fonttitle/.store in=\kvtcb@fonttitle, + fontupper/.store in=\kvtcb@fontupper, + fontlower/.store in=\kvtcb@fontlower, + tempfile/.store in=\kvtcb@tempfile, + savelowerto/.store in=\kvtcb@savelowerto, + saveto/.store in=\kvtcb@saveupperto, + savedelimiter/.estore in=\kvtcb@savedelimiter, + floatplacement/.store in=\kvtcb@floatplacement, + float/.code={\def\kvtcb@float{#1}\def\tcb@float@env@begin{\@float}\def\tcb@float@env@end{\end@float}}, + float/.default=\kvtcb@floatplacement, + float*/.code={\def\kvtcb@float{#1}\def\tcb@float@env@begin{\@dblfloat}\def\tcb@float@env@end{\end@dblfloat}}, + float*/.default=\kvtcb@floatplacement, + every float/.store in=\kvtcb@everyfloat,% + nofloat/.style={float=}, + parfillskip restore/.is choice,% + parfillskip restore/.default=true,% + parfillskip restore/true/.code={\let\tcb@parfillskip@check=\tcb@parfillskip@restore},% + parfillskip restore/false/.code={\let\tcb@parfillskip@check=\@empty},% + before/.code={\def\kvtcb@beforebox{#1}\let\tcb@undo@before=\@empty\let\tcb@use@autoparskip=\relax}, + after/.code={\def\kvtcb@afterbox{#1}\let\tcb@use@autoparskip=\relax}, + autoparskip/.code={\let\tcb@use@autoparskip=\tcb@use@auto@parskip}, + parskip/.style={before={\ifnum\lastnodetype=-1\relax\else\par% + \ifvmode\edef\tcb@prevdepth{\the\glueexpr\prevdepth+\lineskip+\parskip}% + \def\tcb@undo@before{\addvspace{-\glueexpr\tcb@prevdepth}}% + \pagebreak[0]\fi\fi\parindent\z@}, + after={\tcb@parfillskip@check\par}}, + noparskip/.style={before={\ifnum\lastnodetype=-1\relax\else\par% + \ifvmode\edef\tcb@prevdepth{\the\glueexpr\prevdepth+\lineskip}% + \def\tcb@undo@before{\addvspace{-\glueexpr\smallskipamount+\tcb@prevdepth}}% + \pagebreak[0]\smallskip\fi\fi\parindent\z@}, + after={\tcb@parfillskip@check\par\smallskip}}, + nobeforeafter/.style={before=,after=}, + force nobeforeafter/.code={\tcbset@late@options{nobeforeafter}}, + before skip/.style={before={% + \ifnum\lastnodetype=-1\relax% + \else% + \par% + \ifvmode\tcbdimto\tcb@prevdepth{\prevdepth}\nointerlineskip% + \addvspace{\glueexpr#1-\parskip}% + \def\tcb@undo@before{\addvspace{-\glueexpr#1+\tcb@prevdepth}}% + \fi% + \fi% + \lineskip\z@skip\noindent% + }}, + after skip/.style={after={% + \tcb@parfillskip@check\par\ifvmode\nointerlineskip% + \addvspace{\glueexpr#1-\parskip}\fi% + }}, + beforeafter skip/.style={before skip={#1},after skip={#1}}, + before nobreak/.store in=\kvtcb@beforebox@nobreak, + lowerbox/.is choice, + lowerbox/visible/.code={\tcb@lowerignoredfalse\tcb@lowervisibletrue}, + lowerbox/invisible/.code={\tcb@lowerignoredfalse\tcb@lowervisiblefalse}, + lowerbox/ignored/.code={\tcb@lowerignoredtrue\tcb@lowervisiblefalse}, + upperbox/.is choice, + upperbox/visible/.code={\tcb@uppervisibletrue}, + upperbox/invisible/.code={\tcb@uppervisiblefalse}, + titlebox/.is choice, + titlebox/visible/.code={\tcb@titlevisibletrue}, + titlebox/invisible/.code={\tcb@titlevisiblefalse}, + visible/.style={upperbox=visible,lowerbox=visible,titlebox=visible}, + invisible/.style={upperbox=invisible,lowerbox=invisible,titlebox=invisible}, + natural height/.code={\tcb@fixedheightfalse\tcb@@ch@@operation{\tcb@ch@natural}}, + height/.code={\tcb@fixedheighttrue\tcb@dim@to\kvtcb@height@fixed{#1}\tcb@@ch@@operation{\tcb@ch@fixed}}, + text height/.code={\tcb@fixedheighttrue\tcb@dim@to\kvtcb@height@fixed{#1}\tcb@@ch@@operation{\tcb@ch@innerfixed}}, + inherit height/.code={% + \ifdim\dimexpr\tcb@outer@textheight>\z@\relax% + \tcbdimto\tcb@inherited@height{#1\dimexpr\tcb@outer@textheight}% + \tcbset{height=\tcb@inherited@height}% + \else% + \tcbset{natural height}% + \fi}, + inherit height/.default=1, + add to height/.code={\iftcb@fixedheight\tcbdimto\kvtcb@height@fixed{\kvtcb@height@fixed+(#1)}\fi}, + add to natural height/.code={\tcb@fixedheightfalse\def\kvtcb@height@natural@plus{#1}\tcb@@ch@@operation{\tcb@ch@natural@plus}}, + height plus/.dimstore in=\kvtcb@height@fixed@plus,% + height from/.style args={#1 to #2}{height={#1},height plus={#2-(#1)}},% + height fill/.is choice,% + height fill/false/.code={\let\tcb@height@adjust\@empty},% + square/.style={height=\kvtcb@width}, + equal height group/.code={\tcb@fixedheightfalse\edef\tcb@ehgid{#1}\tcb@@ch@@operation{\tcb@ch@equalheight}}, + minimum for equal height group/.code args={#1:#2}{\bgroup\edef\tcb@ehgid{#1}\tcbdimto\tcb@min@ehg{#2}\tcb@ehgadd{\tcb@min@ehg}\egroup}, + minimum for current equal height group/.code={\ifcsundef{tcb@ehgid}{}{% + \tcbset{minimum for equal height group=\tcb@ehgid:#1}}}, + use height from group/.code={\ifcsundef{tcb@ehg@height@#1}{}{\tcbset{height=\csuse{tcb@ehg@height@#1}}}}, + use height from group/.default={\csuse{tcb@ehgid}}, + space/.code={\def\tcb@height@fraction{#1}% + \let\tcb@ch@fixed@both=\tcb@ch@fixed@space% + \let\tcb@ch@fixed@upper=\tcb@ch@fixed@upper@standard% + }, + space to upper/.style={space=1}, + space to lower/.style={space=0}, + space to both/.style={space=0.5}, + split/.code={\def\tcb@height@fraction{#1}% + \let\tcb@ch@fixed@both=\tcb@ch@fixed@space% + \let\tcb@ch@fixed@upper=\tcb@ch@fixed@upper@standard% + }, + space to/.code={% + \ifcsdef{tcb@space@\thetcolorboxnumber}{% + \letcs{\tcb@space}{tcb@space@\thetcolorboxnumber}% + }{}% + \let#1\tcb@space% + \let\tcb@ch@fixed@both=\tcb@ch@fixed@spacesave% + \let\tcb@ch@fixed@upper=\tcb@ch@fixed@spacesave% + }, + % + halign/.is choice, + halign/flush left/.code={\let\kvtcb@halignupper=\raggedright}, + halign/flush right/.code={\let\kvtcb@halignupper=\raggedleft}, + halign/flush center/.code={\let\kvtcb@halignupper=\centering}, + halign/left/.code={\let\kvtcb@halignupper=\tcb@raggedright@plain}, + halign/right/.code={\let\kvtcb@halignupper=\tcb@raggedleft@plain}, + halign/center/.code={\let\kvtcb@halignupper=\tcb@raggedcenter@plain}, + halign/justify/.code={\let\kvtcb@halignupper=\@empty}, + halign upper/.style={halign=#1}, + % + halign lower/.is choice, + halign lower/flush left/.code={\let\kvtcb@halignlower=\raggedright}, + halign lower/flush right/.code={\let\kvtcb@halignlower=\raggedleft}, + halign lower/flush center/.code={\let\kvtcb@halignlower=\centering}, + halign lower/left/.code={\let\kvtcb@halignlower=\tcb@raggedright@plain}, + halign lower/right/.code={\let\kvtcb@halignlower=\tcb@raggedleft@plain}, + halign lower/center/.code={\let\kvtcb@halignlower=\tcb@raggedcenter@plain}, + halign lower/justify/.code={\let\kvtcb@halignlower=\@empty}, + % + halign title/.is choice, + halign title/flush left/.code={\let\kvtcb@haligntitle=\raggedright}, + halign title/flush right/.code={\let\kvtcb@haligntitle=\raggedleft}, + halign title/flush center/.code={\let\kvtcb@haligntitle=\centering}, + halign title/left/.code={\let\kvtcb@haligntitle=\tcb@raggedright@plain}, + halign title/right/.code={\let\kvtcb@haligntitle=\tcb@raggedleft@plain}, + halign title/center/.code={\let\kvtcb@haligntitle=\tcb@raggedcenter@plain}, + halign title/justify/.code={\let\kvtcb@haligntitle=\@empty}, + % + valign scale limit/.store in=\kvtcbv@valignscalelimit, + valign scale limit=1.1, + valign/.is choice, + valign/top/.code={\def\kvtcb@valignupper{top}}, + valign/center/.code={\def\kvtcb@valignupper{center}}, + valign/bottom/.code={\def\kvtcb@valignupper{bottom}}, + valign/scale/.code={\def\kvtcb@valignupper{resize}}, + valign/scale*/.code={\def\kvtcb@valignupper{resizelimited}}, + valign upper/.style={valign=#1}, + valign lower/.is choice, + valign lower/top/.code={\def\kvtcb@valignlower{top}}, + valign lower/center/.code={\def\kvtcb@valignlower{center}}, + valign lower/bottom/.code={\def\kvtcb@valignlower{bottom}}, + valign lower/scale/.code={\def\kvtcb@valignlower{resize}}, + valign lower/scale*/.code={\def\kvtcb@valignlower{resizelimited}}, + enlarge top initially by/.store in=\kvtcb@bbtop@stand,% + enlarge top at break by/.store in=\kvtcb@bbtop@break,% + enlarge top by/.style={enlarge top initially by={#1},enlarge top at break by={#1}},% + enlarge bottom finally by/.store in=\kvtcb@bbbottom@stand,% + enlarge bottom at break by/.store in=\kvtcb@bbbottom@break,% + enlarge bottom by/.style={enlarge bottom finally by={#1},enlarge bottom at break by={#1}},% + enlarge left by/.store in=\kvtcb@bbleft, + enlarge right by/.store in=\kvtcb@bbright, + enlarge by/.style={enlarge top by={#1},enlarge bottom by={#1},enlarge left by={#1},enlarge right by={#1}},% + grow to left by/.code={% + \tcbdimto\kvtcb@width{\kvtcb@width+#1}% + \pgfkeysalso{enlarge left by={-\the\dimexpr#1\relax}}},% + grow to right by/.code={% + \tcbdimto\kvtcb@width{\kvtcb@width+#1}% + \pgfkeysalso{enlarge right by={-\the\dimexpr#1\relax}}},% + grow sidewards by/.style={grow to left by={#1},grow to right by={#1}},% + left skip/.style={grow to left by={-\dimexpr#1\relax}}, + right skip/.style={grow to right by={-\dimexpr#1\relax}}, + leftright skip/.style={left skip={#1},right skip={#1}}, + spread inwards/.style={grow to left by=1in+\hoffset+\oddsidemargin+\@totalleftmargin+(#1),code={\if@twoside\tcbset{toggle enlargement}\fi}}, + spread inwards/.default=\z@, + spread outwards/.style={grow to right by=\paperwidth-\textwidth-1in-\hoffset-\oddsidemargin+(#1),code={\if@twoside\tcbset{toggle enlargement}\fi}}, + spread outwards/.default=\z@, + move upwards/.style={before={\clearpage% + \lineskip\z@skip% + \hrule\@height\z@% + \nobreak% + \vskip\glueexpr-1in-\voffset-\topmargin-\headheight-\headsep-\topskip-\parskip-(#1)\relax% + \noindent}}, + move upwards/.default=\z@, + move upwards*/.style={before={% + \lineskip\z@skip% + \hrule\@height\z@% + \vskip\z@% + \bgroup\@nobreakfalse\addpenalty\z@\egroup% + \vskip\glueexpr-1in-\voffset-\topmargin-\headheight-\headsep-\parskip+\pagegoal-\textheight-\pagetotal-(#1)\relax% + \noindent}}, + move upwards*/.default=\z@, + fill downwards/.style={height fill,enlarge bottom by={\dimexpr-\paperheight+\textheight+1in+\voffset+\topmargin+\headheight+\headsep-(#1)\relax}}, + fill downwards/.default=\z@, + spread sidewards/.style={spread inwards=#1,spread outwards=#1}, + spread sidewards/.default=\z@, + spread upwards/.style={move upwards=#1,spread inwards=#1,spread outwards=#1}, + spread upwards/.default=\z@, + spread upwards*/.style={move upwards*=#1,spread inwards=#1,spread outwards=#1}, + spread upwards*/.default=\z@, + spread downwards/.style={fill downwards=#1,spread inwards=#1,spread outwards=#1}, + spread downwards/.default=\z@, + spread/.style={move upwards=#1,fill downwards=#1,spread inwards=#1,spread outwards=#1}, + spread/.default=\z@, + toggle enlargement/.is choice, + toggle enlargement/none/.code={\let\tcb@setbb@toggle=\tcb@setbb@toggle@none}, + toggle enlargement/evenpage/.code={\let\tcb@setbb@toggle=\tcb@setbb@toggle@evenpage\tcbset{check odd page}}, + toggle enlargement/forced/.code={\let\tcb@setbb@toggle=\tcb@setbb@toggle@forced}, + toggle enlargement/.default=evenpage, + toggle left and right/.is choice, + toggle left and right/none/.code={\let\tcb@lrtoggle=\tcb@lrtoggle@none}, + toggle left and right/evenpage/.code={\let\tcb@lrtoggle=\tcb@lrtoggle@evenpage\tcbset{check odd page}}, + toggle left and right/forced/.code={\let\tcb@lrtoggle=\tcb@lrtoggle@forced}, + toggle left and right/.default=evenpage, + graphical environment/.store in=\kvtcb@graphenv, + % + frame engine/.is choice, + frame engine/standard/.style={frame code=\tcb@drawframe@standard}, + frame engine/standardjigsaw/.style={frame code=\tcb@drawframe@standardjigsaw}, + frame code/.code={\def\tcb@frame@code{#1}},% + frame code/.default=\tcb@drawframe@standard,% + frame empty/.style={frame code=}, + % + interior titled engine/.is choice, + interior titled engine/standard/.style={interior titled code=\tcb@drawwithtitle@standard}, + interior titled code/.code={\def\tcb@interiortitled@code{#1}},% + interior titled code/.default=\tcb@drawwithtitle@standard,% + interior titled empty/.style={interior titled code=}, + % + interior engine/.is choice, + interior engine/standard/.style={interior code=\tcb@drawwithouttitle@standard}, + interior code/.code={\def\tcb@interior@code{#1}},% + interior code/.default=\tcb@drawwithouttitle@standard,% + interior empty/.style={interior code=}, + % + segmentation engine/.is choice, + segmentation engine/standard/.style={segmentation code=\tcb@drawlower@standard}, + segmentation code/.code={\def\tcb@segmentation@code{#1}},% + segmentation code/.default=\tcb@drawlower@standard,% + segmentation empty/.style={segmentation code=}, + % + title engine/.is choice, + title engine/standard/.style={@title code=\tcb@drawtitle@standard}, + @title code/.code={\def\tcb@title@code{#1}},% + @title code/.default=\tcb@drawtitle@standard,% + title code/.style={title filled,@title code={#1}},% + title code/.default=\tcb@drawtitle@standard,% + title empty/.style={@title code=}, + % + geometry nodes/.store in=\kvtcb@geonodes, + geometry nodes/.default=true,% + set@extensions@preframe/.store in=\tcb@extensions@preframe,% + set@extensions@postframe/.store in=\tcb@extensions@postframe,% + set@extensions@final/.store in=\tcb@extensions@final,% + set@outerboundary/.store in=\tcb@outerboundary,% + skin first/.store in=\kvtcb@skin@first, + skin middle/.store in=\kvtcb@skin@middle, + skin last/.store in=\kvtcb@skin@last, + skin/.style={code={\edef\kvtcb@skin@current{#1}},skin@#1}, + skin first is subskin of/.style 2 args={skin@local@first/.style={skin@#1,#2},skin first=local@first},% + skin middle is subskin of/.style 2 args={skin@local@middle/.style={skin@#1,#2},skin middle=local@middle},% + skin last is subskin of/.style 2 args={skin@local@last/.style={skin@#1,#2},skin last=local@last},% + parbox/.store in=\kvtcb@parbox, + parbox/.default=true,% + hyphenationfix/.is choice,% + hyphenationfix/.default=true,% + hyphenationfix/true/.code={\def\tcb@hyph@fix{\everypar=\expandafter{\the\everypar\everypar{\hspace{0pt}}\hspace{0pt}}}},% + hyphenationfix/false/.code={\let\tcb@hyph@fix=\@empty},% + overlay unbroken/.code={\def\tcb@overlay@unbroken{#1}},% + overlay first/.code={\def\tcb@overlay@first{#1}},% + overlay middle/.code={\def\tcb@overlay@middle{#1}},% + overlay last/.code={\def\tcb@overlay@last{#1}},% + overlay/.code={\def\tcb@overlay@temp{#1}% + \let\tcb@overlay@unbroken=\tcb@overlay@temp% + \let\tcb@overlay@first=\tcb@overlay@temp% + \let\tcb@overlay@middle=\tcb@overlay@temp% + \let\tcb@overlay@last=\tcb@overlay@temp},% + overlay broken/.code={\def\tcb@overlay@temp{#1}% + \let\tcb@overlay@first=\tcb@overlay@temp% + \let\tcb@overlay@middle=\tcb@overlay@temp% + \let\tcb@overlay@last=\tcb@overlay@temp},% + overlay unbroken and first/.code={\def\tcb@overlay@temp{#1}% + \let\tcb@overlay@unbroken=\tcb@overlay@temp% + \let\tcb@overlay@first=\tcb@overlay@temp},% + overlay unbroken and last/.code={\def\tcb@overlay@temp{#1}% + \let\tcb@overlay@unbroken=\tcb@overlay@temp% + \let\tcb@overlay@last=\tcb@overlay@temp},% + overlay middle and last/.code={\def\tcb@overlay@temp{#1}% + \let\tcb@overlay@middle=\tcb@overlay@temp% + \let\tcb@overlay@last=\tcb@overlay@temp},% + overlay first and middle/.code={\def\tcb@overlay@temp{#1}% + \let\tcb@overlay@first=\tcb@overlay@temp% + \let\tcb@overlay@middle=\tcb@overlay@temp},% + no overlay/.style={overlay=},% + standard/.style={skin=standard},% + standard jigsaw/.style={skin=standard jigsaw},% + before title/.store in=\kvtcb@before@title,% + after title/.store in=\kvtcb@after@title,% + before upper/.code={\def\kvtcb@before@upper{#1}\let\tcb@insert@before@upper\tcb@insert@before@upper@ignore},% + before upper*/.code={\def\kvtcb@before@upper{#1}\let\tcb@insert@before@upper\tcb@insert@before@upper@noignore},% + after upper/.code={\def\kvtcb@after@upper{#1}\let\tcb@insert@after@upper\tcb@insert@after@upper@unskip},% + after upper*/.code={\def\kvtcb@after@upper{#1}\let\tcb@insert@after@upper\tcb@insert@after@upper@nounskip},% + before lower/.code={\def\kvtcb@before@lower{#1}\let\tcb@insert@before@lower\tcb@insert@before@lower@ignore},% + before lower*/.code={\def\kvtcb@before@lower{#1}\let\tcb@insert@before@lower\tcb@insert@before@lower@noignore},% + after lower/.code={\def\kvtcb@after@lower{#1}\let\tcb@insert@after@lower\tcb@insert@after@lower@unskip},% + after lower*/.code={\def\kvtcb@after@lower{#1}\let\tcb@insert@after@lower\tcb@insert@after@lower@nounskip},% + center title/.style={halign title=flush center},% + center upper/.style={halign upper=flush center},% + center lower/.style={halign lower=flush center},% + flushleft title/.style={halign title=flush left},% + flushleft upper/.style={halign upper=flush left},% + flushleft lower/.style={halign lower=flush left},% + flushright title/.style={halign title=flush right},% + flushright upper/.style={halign upper=flush right},% + flushright lower/.style={halign lower=flush right},% + tabularx*/.style 2 args={% + boxsep=\z@,top=\z@,bottom=\z@,leftupper=\z@,rightupper=\z@, + toptitle=1mm,bottomtitle=1mm,boxrule=0.5mm, + before upper*={\arrayrulecolor{tcbcolframe}\def\arraystretch{1.1}#1% + \tcb@hack@currenvir\tabularx{\linewidth}{#2}}, + after upper*=\endtabularx\arrayrulecolor{black}}, + tabularx/.style={tabularx*={}{#1}}, + tikz upper/.style={before upper*={\centering\tcb@shield@externalize\begin{tikzpicture}[{#1}]},after upper*=\end{tikzpicture}},% + tikz lower/.style={before lower*={\centering\tcb@shield@externalize\begin{tikzpicture}[{#1}]},after lower*=\end{tikzpicture}},% + tikznode upper/.style={before upper={\centering\tcb@shield@externalize\begin{tikzpicture}\node[{align=center,inner sep=\z@,outer sep=\z@,#1}]\bgroup},after upper={\egroup;\end{tikzpicture}}},% + tikznode lower/.style={before lower={\centering\tcb@shield@externalize\begin{tikzpicture}\node[{align=center,inner sep=\z@,outer sep=\z@,#1}]\bgroup},after lower={\egroup;\end{tikzpicture}}},% + tikznode/.style={tikznode upper={#1},tikznode lower={#1}},% + varwidth upper/.style={before upper={\tcbdimto\tcb@w@upper{#1-(\kvtcb@left@rule+\kvtcb@right@rule+(\kvtcb@boxsep)*2+\kvtcb@leftupper+\kvtcb@rightupper)}% + \begin{varwidth}{\tcb@w@upper}},after upper={\end{varwidth}}},% + varwidth upper/.default=\kvtcb@width, + text fill/.style={before upper={% + \ifdim\dimexpr\tcbtextheight>\z@\relax% + \edef\tcb@temp{\noexpand\minipage[c][\tcbtextheight]}% + \else% + \let\tcb@temp\minipage% + \fi% + \tcb@temp{\linewidth}\kvtcb@halignupper}, + after upper=\endminipage}, + oversize/.style={% + width=\the\dimexpr\dimexpr\linewidth+#1+\kvtcb@left@rule+\kvtcb@leftupper+\kvtcb@boxsep*2+\kvtcb@rightupper+\kvtcb@right@rule\relax,% + enlarge left by=-\the\dimexpr\kvtcb@left@rule+\kvtcb@leftupper+\kvtcb@boxsep+(#1)/2\relax,% + enlarge right by=-\the\dimexpr\kvtcb@boxsep+\kvtcb@rightupper+\kvtcb@right@rule+(#1)/2\relax},% + oversize/.default=\z@,% + flush right/.style={enlarge left by=\linewidth-(\kvtcb@width)}, + flush left/.style={enlarge right by=\linewidth-(\kvtcb@width)}, + center/.style={enlarge left by=(\linewidth-(\kvtcb@width))/2,enlarge right by=\kvtcb@bbleft}, + baseline/.store in=\kvtcb@baseline,% + tcbox raise/.style={baseline=-\the\dimexpr#1\relax},% + tcbox raise base/.style={baseline=\tcb@val@raisebase},% + box align/.is choice,% + box align/bottom/.style={baseline=\z@},% + box align/top/.style={baseline=\tcb@height},% + box align/center/.style={baseline=\tcb@height/2},% + box align/base/.style={baseline=\tcb@val@raisebase},% + shrink tight/.style={boxsep=0mm,top=-\the\dimexpr\kvtcb@top@rule@stand\relax,bottom=-\the\dimexpr\kvtcb@bottom@rule@stand\relax,% + left=-\the\dimexpr\kvtcb@left@rule\relax,right=-\the\dimexpr\kvtcb@right@rule\relax},% + extrude left by/.code={\tcbdimto\kvtcb@leftupper{\kvtcb@leftupper+#1}\tcbdimto\kvtcb@bbleft{\kvtcb@bbleft-(#1)}\tcbdimto\kvtcb@width{\kvtcb@width+#1}},% + extrude right by/.code={\tcbdimto\kvtcb@rightupper{\kvtcb@rightupper+#1}\tcbdimto\kvtcb@bbright{\kvtcb@bbright-(#1)}\tcbdimto\kvtcb@width{\kvtcb@width+#1}},% + extrude top by/.code={\tcbdimto\kvtcb@top{\kvtcb@top+#1}\tcbdimto\kvtcb@bbtop@stand{\kvtcb@bbtop@stand-(#1)}},% + extrude bottom by/.code={\tcbdimto\kvtcb@bottom{\kvtcb@bottom+#1}\tcbdimto\kvtcb@bbbottom@stand{\kvtcb@bbbottom@stand-(#1)}},% + extrude by/.style={extrude left by=#1,extrude right by=#1,extrude top by=#1,extrude bottom by=#1},% + sidebyside/.is if=tcb@sidebyside,% + sidebyside align/.is choice,% + sidebyside align/top/.code={\def\kvtcb@sbs@align{top}\def\tcb@box@align##1{}},% + sidebyside align/center/.code={\def\kvtcb@sbs@align{center}\def\tcb@box@align##1{}},% + sidebyside align/bottom/.code={\def\kvtcb@sbs@align{bottom}\def\tcb@box@align##1{}},% + sidebyside align/top seam/.code={\def\kvtcb@sbs@align{top}\let\tcb@box@align\tcb@box@align@top},% + sidebyside align/center seam/.code={\def\kvtcb@sbs@align{center}\let\tcb@box@align\tcb@box@align@center},% + sidebyside align/bottom seam/.code={\def\kvtcb@sbs@align{bottom}\let\tcb@box@align\tcb@box@align@bottom},% + sidebyside gap/.dimstore in=\kvtcb@sbs@gap,% + lefthand width/.code={\def\kvtcb@sbs@ratio{#1}\let\tcb@sbs@quota=\tcb@sbs@quota@leftwidth}, + righthand width/.code={\def\kvtcb@sbs@ratio{#1}\let\tcb@sbs@quota=\tcb@sbs@quota@rightwidth}, + lefthand ratio/.code={\def\kvtcb@sbs@ratio{#1}\let\tcb@sbs@quota=\tcb@sbs@quota@leftratio}, + righthand ratio/.code={\def\kvtcb@sbs@ratio{#1}\let\tcb@sbs@quota=\tcb@sbs@quota@rightratio}, + breakable@false/.code={% + \let\tcb@savebox=\tcb@lrbox% + \let\endtcb@savebox=\endtcb@lrbox% + \let\tcb@defToTotalHeight=\tcb@defToTotalHeightStandard% + \let\tcb@drawcolorbox=\tcb@drawcolorbox@standalone}, + code/.code={#1}, + capture/.store in=\kvtcb@capture,% + hbox/.style={capture=hbox},% + minipage/.style={capture=minipage},% + void/.style={capture=v@@d,capture/.code=,options@for/.code=,code={\def\tcbinputlisting@core{}}}, + nirvana/.code={\let\tcb@draw@color@box\@empty}, + check odd page/.is if=tcb@checkpage, + if odd page/.code 2 args={% + \tcbset{check odd page}% + \tcbifoddpage{\tcbset{#1}}{\tcbset{#2}}% + }, + if odd page or oneside/.code 2 args={% + \tcbset{check odd page}% + \tcbifoddpageoroneside{\tcbset{#1}}{\tcbset{#2}}% + }, + phantom/.code={\appto\kvtcb@phantom{#1}}, + step and label/.style 2 args={phantom={\refstepcounter{#1}\tcb@set@label{#2}}},% + step/.style={phantom={\refstepcounter{#1}}},% + label/.style={phantom={\tcb@set@label{#1}}},% + phantomlabel/.style={phantom={\ifdefined\phantomsection\phantomsection\fi\tcb@set@label{#1}}},% + hypertarget/.style={phantom={\ifdefined\hypertarget\Hy@raisedlink{\hypertarget{#1}{}}\fi}}, + bookmark*/.style 2 args={phantom={\ifdefined\bookmark% + \Hy@raisedlink{\hypertarget{tcb@\thetcolorboxnumber}{}}% + \bookmark[dest=tcb@\thetcolorboxnumber,rellevel=1,keeplevel,#1]{#2}% + \fi}}, + bookmark/.style={bookmark*={}{#1}}, + index/.style={phantom={\index{#1}}},% + index*/.style 2 args={phantom={\index[#1]{#2}}},% + nameref/.code={\tcb@gettitle{#1}},% + label type/.store in=\kvtcb@label@type,% + no label type/.style={label type=},% + add to list/.style 2 args={phantom={\tcb@addcontentsline{#1}{#2}}}, + nophantom/.code={\def\kvtcb@phantom{}},% + shield externalize/.is choice, + shield externalize/true/.code={\let\tcb@shield@externalize=\tcb@shield@@externalize}, + shield externalize/false/.code={\let\tcb@shield@externalize=\relax}, + shield externalize/.default=true, + external/.code={\tikzsetnextfilename{#1}}, + remake/.code={\tikzset{external/remake next={#1}}}, + remake/.default=true, + lower separated/.is if=tcb@lowerseparated, + options@for/.code={\letcs\tcb@new@colop{tcb@opt@#1}\pgfkeysalsofrom\tcb@new@colop}, + list entry/.store in=\kvtcb@listentry, + list text/.style={list entry={\protect\numberline{\thetcbcounter}{\ignorespaces #1}}}, + title filled/.is if=tcb@titlefilled,% + @colbacktitle/.colorlet=tcbcolbacktitle, + colbacktitle/.style={title filled,@colbacktitle={#1}}, + opacityupper/.store in=\kvtcb@opacityupper, + opacitylower/.store in=\kvtcb@opacitylower, + opacitytitle/.store in=\kvtcb@opacitytitle, + opacityframe/.store in=\kvtcb@opacityframe, + opacityback/.store in=\kvtcb@opacityback, + @opacitybacktitle/.store in=\kvtcb@opacitybacktitle, + opacitybacktitle/.style={title filled,@opacitybacktitle={#1}}, + opacityfill/.style={opacityframe={#1},opacityback={#1},@opacitybacktitle={#1}}, + opacitytext/.style={opacityupper={#1},opacitylower={#1}}, + spartan@fit/.code={},% + % + size/.is choice, + size/normal/.style={boxrule=0.5mm,boxsep=1mm,left=4mm,right=4mm,top=2mm,bottom=2mm,toptitle=0pt,bottomtitle=0pt, + middle=2mm,arc=1mm,auto outer arc}, + size/title/.style={boxrule=0.4mm,boxsep=1mm,left=2mm,right=2mm,top=0.25mm,bottom=0.25mm,toptitle=0pt,bottomtitle=0pt, + middle=0.75mm,arc=0.75mm,auto outer arc}, + size/small/.style={boxrule=0.3mm,boxsep=1mm,left=1mm,right=1mm,top=0pt,bottom=0pt,toptitle=0pt,bottomtitle=0pt, + middle=0.5mm,arc=0.5mm,auto outer arc}, + size/fbox/.style={boxrule=0.4pt,boxsep=3pt,left=0pt,right=0pt,top=0pt,bottom=0pt,toptitle=0pt,bottomtitle=0pt, + middle=1pt,arc=1pt,auto outer arc}, + size/tight/.style={boxrule=0.4pt,boxsep=0pt,left=0pt,right=0pt,top=0pt,bottom=0pt,toptitle=0pt,bottomtitle=0pt, + middle=0.2pt,arc=0pt,outer arc=0pt}, + size/minimal/.style={boxrule=0pt,boxsep=0pt,left=0pt,right=0pt,top=0pt,bottom=0pt,toptitle=0pt,bottomtitle=0pt, + middle=0pt,arc=0pt,outer arc=0pt}, + on line/.style={tcbox raise base,nobeforeafter}, + shape@of@skin/.store in=\tcb@shapeofskin, + ignore nobreak/.is if=tcb@ignorenobreak,% + % + tcbox width/.is choice, + tcbox width/auto/.code={\def\tcb@embed@tcbox{}}, + tcbox width/auto limited/.code={\tcb@set@embed@tcbox{% + \setbox\z@=\color@hbox##1\color@endbox\ifdim\wd\z@<\tcb@w@upper\relax\box\z@\else% + \begin{minipage}{\tcb@w@upper}##1\end{minipage}\fi}}, + tcbox width/forced center/.code={\tcb@set@embed@tcbox{\makebox[\tcb@w@upper]{##1}}}, + tcbox width/forced left/.code={\tcb@set@embed@tcbox{\makebox[\tcb@w@upper][l]{##1}}}, + tcbox width/forced right/.code={\tcb@set@embed@tcbox{\makebox[\tcb@w@upper][r]{##1}}}, + tcbox width/minimum center/.code={\tcb@set@embed@tcbox{% + \setbox\z@=\color@hbox##1\color@endbox\ifdim\wd\z@<\tcb@w@upper\relax\makebox[\tcb@w@upper]{\box\z@}\else\box\z@\fi}}, + tcbox width/minimum left/.code={\tcb@set@embed@tcbox{% + \setbox\z@=\color@hbox##1\color@endbox\ifdim\wd\z@<\tcb@w@upper\relax\makebox[\tcb@w@upper][l]{\box\z@}\else\box\z@\fi}}, + tcbox width/minimum right/.code={\tcb@set@embed@tcbox{% + \setbox\z@=\color@hbox##1\color@endbox\ifdim\wd\z@<\tcb@w@upper\relax\makebox[\tcb@w@upper][r]{\box\z@}\else\box\z@\fi}}, + verbatim ignore percent/.is choice, + verbatim ignore percent/true/.code={\def\tcb@verbatim@change@percent{\catcode`\^^e=9}}, + verbatim ignore percent/false/.code={\let\tcb@verbatim@change@percent\@empty}, + verbatim ignore percent/.default=true, +} + +\def\kvtcb@beforebox{} +\def\kvtcb@afterbox{} + +\tcbset{% + autoparskip,minipage,savedelimiter=tcolorbox,% + set@extensions@preframe=,set@extensions@postframe=,set@extensions@final=,% +}% + +\def\tcb@set@label#1{% + \ifx\kvtcb@label@type\@empty% + \label{#1}% + \else% + \label[\kvtcb@label@type]{#1}% + \fi% +} + +\let\tcb@parboxrestore=\@parboxrestore + +\def\tcb@parbox@false@settings{% + \noindent% + \linewidth\hsize% + \@totalleftmargin\z@% + \leftskip\z@skip% + \rightskip\z@skip% + \@rightskip\z@skip% +} + +\let\tcb@parbox@use@true\relax +\def\tcb@parbox@use@false{% + \def\@parboxrestore{% + \tcb@parbox@false@settings% + \let\@parboxrestore=\tcb@parboxrestore% + }% +} + +\let\tcb@afteroptions@hook\@empty + +\def\tcb@minipage@top{\minipage[t]} +\let\tcb@minipage@center=\minipage +\def\tcb@minipage@bottom{\minipage[b]} +\let\tcb@minipage=\tcb@minipage@bottom + +% lrbox with integrated minipage +\def\tcb@lrbox#1#2{% + \edef\reserved@a{% + \endgroup + \setbox#1\hbox{% + \begingroup\aftergroup}% + \def\noexpand\@currenvir{\@currenvir}% + \def\noexpand\@currenvline{\on@line}}% + \reserved@a + \@endpefalse + \let\tcbbreak\par% + \csname tcb@parbox@use@\kvtcb@parbox\endcsname% + \tcb@minipage#2\tcb@hyph@fix\ignorespaces} +\let\endtcb@lrbox=\endminipage + +\let\tcb@savebox=\tcb@lrbox +\let\endtcb@savebox=\endtcb@lrbox + +\def\tcb@saveupperbox{% +\begin{tcb@savebox}{\tcb@upperbox}{\tcb@w@upper}\kvtcb@fontupper\kvtcb@halignupper\tcb@insert@before@upper} + +\def\tcb@savelowerbox{% +\begin{tcb@savebox}{\tcb@lowerbox}{\tcb@w@lower}\kvtcb@fontlower\kvtcb@halignlower\tcb@insert@before@lower} + + +% counter for float +\AtBeginDocument{% +\@ifundefined{c@float@type}% + {\edef\ftype@tcbfloat{\ifx\c@figure\@undefined 1\else 4\fi}}% + {\edef\ftype@tcbfloat{\the\c@float@type}% + \addtocounter{float@type}{\value{float@type}}}% +\def\c@tcbfloat{\c@float@type}% tricking the caption package +\ifdim\parskip>\z@% + \tcbset{autoparskip/.style=parskip}% +\else% + \tcbset{autoparskip/.style=noparskip}% +\fi% +\tcb@use@autoparskip% +} + +\long\def\tcb@colorbox{% + \@ifnextchar[{\tcb@@icolorbox}{\tcb@@icolorbox[]}} + + +\def\tcb@set@@phantom{% + \iftcb@checkpage\tcb@phantom@savepage\fi% + \ifx\kvtcb@phantom\@empty\tcb@hasPhantomfalse\else% + \tcb@hasPhantomtrue% + \sbox\tcb@phantombox{\kvtcb@phantom}% + \let\kvtcb@phantom\@empty% + \fi% +} + +\def\tcb@set@@title{% + \ifx\kvtcb@title\@empty\tcb@hasTitlefalse\tcb@specialtitle@hook\else% + \tcb@hasTitletrue% + \tcbdimto\tcb@w@title{\kvtcb@width-(\kvtcb@left@rule+\kvtcb@right@rule+(\kvtcb@boxsep)*2+\kvtcb@lefttitle+\kvtcb@righttitle)}% + \begin{tcb@savebox}{\tcb@titlebox}{\tcb@w@title}\color{tcbcoltitle}\kvtcb@fonttitle\kvtcb@haligntitle\kvtcb@before@title\kvtcb@title\kvtcb@after@title\end{tcb@savebox}% + \fi% +} + +\def\tcb@set@@dimensions{% + % sanitize + \tcbdimto\kvtcb@left@rule{\kvtcb@left@rule}% + \tcbdimto\kvtcb@right@rule{\kvtcb@right@rule}% + \tcbdimto\kvtcb@title@rule{\kvtcb@title@rule}% + \tcbdimto\kvtcb@top@rule@stand{\kvtcb@top@rule@stand}% + \tcbdimto\kvtcb@top@rule@break{\kvtcb@top@rule@break}% + \tcbdimto\kvtcb@bottom@rule@stand{\kvtcb@bottom@rule@stand}% + \tcbdimto\kvtcb@bottom@rule@break{\kvtcb@bottom@rule@break}% + \tcbdimto\kvtcb@boxsep{\kvtcb@boxsep}% + \tcbdimto\kvtcb@lefttitle{\kvtcb@lefttitle}% + \tcbdimto\kvtcb@leftupper{\kvtcb@leftupper}% + \tcbdimto\kvtcb@leftlower{\kvtcb@leftlower}% + \tcbdimto\kvtcb@righttitle{\kvtcb@righttitle}% + \tcbdimto\kvtcb@rightupper{\kvtcb@rightupper}% + \tcbdimto\kvtcb@rightlower{\kvtcb@rightlower}% + \tcbdimto\kvtcb@top{\kvtcb@top}% + \tcbdimto\kvtcb@toptitle{\kvtcb@toptitle}% + \tcbdimto\kvtcb@bottom{\kvtcb@bottom}% + \tcbdimto\kvtcb@bottomtitle{\kvtcb@bottomtitle}% + \tcbdimto\kvtcb@middle{\kvtcb@middle}% + \tcbdimto\kvtcb@bbtop@stand{\kvtcb@bbtop@stand}% + \tcbdimto\kvtcb@bbtop@break{\kvtcb@bbtop@break}% + \tcbdimto\kvtcb@bbbottom@stand{\kvtcb@bbbottom@stand}% + \tcbdimto\kvtcb@bbbottom@break{\kvtcb@bbbottom@break}% + \tcbdimto\kvtcb@bbleft{\kvtcb@bbleft}% + \tcbdimto\kvtcb@bbright{\kvtcb@bbright}% + % computation of text width + \tcbdimto\tcb@width{\kvtcb@width}% + \tcbdimto\tcb@innerwidth{\tcb@width-\kvtcb@left@rule-\kvtcb@right@rule}% + \tcbdimto\tcb@w@upper{\tcb@innerwidth-\kvtcb@boxsep*2-\kvtcb@leftupper-\kvtcb@rightupper}% + \let\tcbtextwidth=\tcb@w@upper% + \tcbdimto\kvtcb@arc{\kvtcb@arc}% + % computation of text height + \iftcb@fixedheight% + \tcbdimto\tcbtextheight{\kvtcb@top@rule@stand+\kvtcb@bottom@rule@stand+\kvtcb@boxsep*2+\kvtcb@top+\kvtcb@bottom}% + \iftcb@hasTitle% + \tcbdimto\tcbtextheight{\tcbtextheight+\ht\tcb@titlebox+\dp\tcb@titlebox+\kvtcb@title@rule+\kvtcb@boxsep*2+\kvtcb@toptitle+\kvtcb@bottomtitle}% + \fi% + \tcbdimto\tcbtextheight{\kvtcb@height@fixed-\tcbtextheight}% + \fi% +} + +\def\tcb@set@@sidebyside{% + \iftcb@sidebyside% + \tcbset{breakable@false}% + \def\tcb@minipage{\csname tcb@minipage@\kvtcb@sbs@align\endcsname}% + \tcbdimto\tcb@w@upper@real{\tcb@w@upper}% + \tcbdimto\kvtcb@sbs@gap{\kvtcb@sbs@gap}% + \tcbdimto\tcb@w@sbs{\tcb@w@upper@real-\kvtcb@sbs@gap}% + \tcb@sbs@quota% + \fi% +} + +\def\tcb@set@color#1{% + \edef\current@color{\@nameuse{\string\color@#1}}% + \colorlet{.}{#1}% +} + +\def\tcb@reset@color{% + \colorlet{.}{tcbcol@origin}% + \edef\current@color{\@nameuse{\string\color@tcbcol@origin}}% +} + +\def\tcb@set@@upper@and@lower{% + \colorlet{tcbcol@origin}{.}% + \let\tcb@insert@after@part=\tcb@insert@after@upper% + % switch for lower box + \def\tcblower{% + \tcb@insert@after@part% + \end{tcb@savebox}% + \tcb@set@color{tcbcollower}% + \unless\iftcb@sidebyside% + \tcbdimto\tcb@w@lower{\tcb@innerwidth-\kvtcb@boxsep*2-\kvtcb@leftlower-\kvtcb@rightlower}% + \fi% + \tcb@hasLowertrue% + \let\tcb@insert@after@part=\tcb@insert@after@lower% + \ifx\kvtcb@savelowerto\@empty% + \let\tcb@startbox\tcb@savelowerbox% + \let\endtcolorbox\tcb@endboxanddraw% + \else% + \let\tcb@startbox\tcb@lowerverbatim% + \expandafter\let\csname end\kvtcb@savedelimiter\expandafter\endcsname\csname tcb@endlowerverbatimanddraw\endcsname% + \fi% + \tcb@startbox}% + % start of upper box + \tcb@set@color{tcbcolupper}% + \ifx\kvtcb@saveupperto\@empty% + \let\tcb@startbox\tcb@saveupperbox% + \let\endtcolorbox\tcb@endboxanddraw% + \else% + \let\tcb@startbox\tcb@upperverbatim% + \expandafter\let\csname end\kvtcb@savedelimiter\expandafter\endcsname\csname tcb@endupperverbatimanddraw\endcsname% + \ifx\kvtcb@savelowerto\@empty% + \else% + \tcb@warning{'saveto' and 'savelowerto' cannot be combined. I deactivate 'savelowerto'}% + \tcbset{savelowerto=}% + \fi% + \fi% + \tcb@startbox% +} + + +\def\tcb@@capture@minipage{% + \let\tcb@val@raisebase=\tcb@zpt% + \tcb@set@@phantom% + \tcb@set@@title% + \tcb@set@@dimensions% + \tcb@set@@sidebyside% + \tcb@set@@upper@and@lower% +} + +\def\tcb@@capture@hbox{% + \let\endtcolorbox=\relax% + \Collect@Body\tcbox@inner@hbox@collected% +} + +\def\tcb@@end@v@@d{% + \endcomment% + \tcb@layer@dec% +} + +\def\tcb@@capture@v@@d{% + \let\endtcolorbox\tcb@@end@v@@d% + \comment% +} + +\long\def\tcbox@inner@hbox@collected#1{% + \tcbox@inner@hbox{#1}% + \tcb@finalize@environment% +} + +\def\tcb@count@boxes{% + \global\advance\tcolorbox@number by 1\relax% + \edef\thetcolorboxnumber{\number\tcolorbox@number}% + \expandafter\ifx\csname tcolorboxpage@\thetcolorboxnumber\endcsname\relax% + \edef\thetcolorboxpage{\number\c@page}% + \else% + \expandafter\let\expandafter\thetcolorboxpage\csname tcolorboxpage@\thetcolorboxnumber\endcsname% + \fi% +} + +\def\tcolorbox@label{\@newl@bel{tcolorboxpage}}% + +%\write\@auxout{\string\providecommand\string\tcolorbox@label[2]{}}% + +\def\tcolorbox@savepage#1{% + \@bsphack% + \write\@auxout{\string\tcolorbox@label{#1}{\number\c@page}}% + \@esphack% +}% + +\def\tcb@phantom@savepage{\preto\kvtcb@phantom{\expandafter\tcolorbox@savepage\expandafter{\thetcolorboxnumber}}} + +\def\tcbifoddpage{% + \ifodd\thetcolorboxpage\relax% + \expandafter\@firstoftwo% + \else% + \expandafter\@secondoftwo% + \fi% +} + +\def\tcbifoddpageoroneside{% + \if@twoside% + \ifodd\thetcolorboxpage\relax% + \let\reserved@a\@firstoftwo% + \else% + \let\reserved@a\@secondoftwo% + \fi% + \else% + \let\reserved@a\@firstoftwo% + \fi% + \expandafter\reserved@a% +} + +\def\tcb@managed@layers@max{0} +\def\tcbsetmanagedlayers#1{% + \setcounter{tcblayer}{\tcb@managed@layers@max}% + \ifnum\c@tcblayer<#1\relax% + \loop + \stepcounter{tcblayer}% + \newbox\tcb@temp% + \cslet{tcb@footnote@\romannumeral\c@tcblayer}{\tcb@temp}% + \tcbset{every box on layer \number\c@tcblayer/.style={reset,every box}} + \ifnum\c@tcblayer<#1\repeat% + \else% + \fi% + \xdef\tcb@managed@layers@max{#1}% + \setcounter{tcblayer}{0}% +} +\@onlypreamble\tcbsetmanagedlayers +\tcbsetmanagedlayers{4}% + +\tcbset{% + every box/.style={}, + every box on layer 1/.style={every box}, + every box on higher layers/.style={reset,every box}, +} + +\def\tcb@layer@inc{% + \tcb@count@boxes% + \stepcounter{tcblayer}% + \ifnum\c@tcblayer>1% + \tcbset{breakable@true/.code=}% + \else% + \ifinner\ifhmode\tcbset{breakable@true/.code=}\fi\fi% + \fi% + \ifnum\c@tcblayer>\tcb@managed@layers@max% + \tcbset{every box on higher layers}% + \else% + \expandafter\setbox\csname tcb@footnote@\romannumeral\c@tcblayer\endcsname\box\@mpfootins% + \csedef{tcb@footnote@cnt@\romannumeral\c@tcblayer}{\the\c@mpfootnote}% + \tcbset{every box on layer \number\c@tcblayer}% + \fi% +} + +\def\tcb@layer@pushup{% + \tcb@count@boxes% + \global\advance\tcolorbox@number by -1\relax% + \stepcounter{tcblayer}% + \ifnum\c@tcblayer>1% + \tcbset{breakable@true/.code=}% + \else% + \ifinner\ifhmode\tcbset{breakable@true/.code=}\fi\fi% + \fi% + \ifnum\c@tcblayer>\tcb@managed@layers@max% + \tcbset{every box on higher layers}% + \tcbset{every box on higher layers/.code=}% + \else% + \tcbset{every box on layer \number\c@tcblayer}% + \tcbset{every box on layer \number\c@tcblayer/.code=}% + \fi% + \addtocounter{tcblayer}{-1}% +} + +\def\tcb@layer@dec{% + \ifnum\c@tcblayer>\tcb@managed@layers@max% + \else% + \expandafter\global\setbox\@mpfootins\box\csname tcb@footnote@\romannumeral\c@tcblayer\endcsname% + \setcounter{mpfootnote}{\csname tcb@footnote@cnt@\romannumeral\c@tcblayer\endcsname}% + \fi% + \addtocounter{tcblayer}{-1}% +} + +\let\tcbtextheight\tcb@zpt% + +\long\def\tcb@apply@box@options#1{% + \let\tcb@space\tcb@zpt% + \let\tcb@outer@textheight\tcbtextheight% + \let\tcbtextheight\tcb@zpt% + \let\tcbtextwidth\tcb@zpt% + \tcbset{#1}\tcb@lateoptions@hook\tcb@afteroptions@hook% + \if@nobreak% + \let\iftcb@nobreak\@firstoftwo% + \else% + \let\iftcb@nobreak\@secondoftwo% + \fi% +} + +\long\def\tcb@@icolorbox[#1]{% + \tcb@layer@inc% + \tcb@apply@box@options{capture=minipage,#1}\tcb@height@adjust% + \tcb@hasLowerfalse% + \csname tcb@@capture@\kvtcb@capture\endcsname% +} + +\let\tcolorbox\tcb@colorbox + +\def\tcb@endboxanddraw{% + \tcb@insert@after@part% + \end{tcb@savebox}% + \tcb@reset@color% + \tcb@draw@color@box% + \tcb@finalize@environment% +} + +\def\tcb@finalize@environment{% + %\color{.}% hack for some special cases + \tcb@layer@dec% +} + +\let\endtcolorbox=\tcb@endboxanddraw + +% height computations +\def\tcb@@ch@@operation#1{% + \let\tcb@ch=#1% + \let\tcb@height@adjust\@empty% +} + + +\def\tcb@ch@natural{% + \let\tcb@height\tcb@natheight% + \let\tcbheightspace\tcb@zpt% + \tcbdimto\tcb@height@upper{\ht\tcb@upperbox+\dp\tcb@upperbox}% + \iftcb@lowerspace% + \tcbdimto\tcb@height@lower{\ht\tcb@lowerbox+\dp\tcb@lowerbox}% + \fi% +} + +\def\tcb@ch@natural@plus{% + \tcbdimto\tcbheightspace{\kvtcb@height@natural@plus}% + \tcbdimto\tcb@height{\tcb@natheight+\tcbheightspace}% + \iftcb@lowerspace\tcb@ch@fixed@both\else\tcb@ch@fixed@upper\fi% +} + + +\def\tcb@ch@fixed@upper@standard{% + \tcbdimto\tcb@height@upper{\ht\tcb@upperbox+\dp\tcb@upperbox+\tcbheightspace}% +} + +\def\tcb@ch@fixed@space{% + \tcbdimto\tcb@height@spaceupper{\tcb@height@fraction\dimexpr\tcbheightspace\relax}% + \tcbdimto\tcb@height@upper{\ht\tcb@upperbox+\dp\tcb@upperbox+\tcb@height@spaceupper}% + \tcbdimto\tcb@height@lower{\ht\tcb@lowerbox+\dp\tcb@lowerbox+\tcbheightspace-\tcb@height@spaceupper}% +} + +\def\tcb@savespace#1#2{% + \immediate\write\@auxout{\string\csgdef{tcb@space@#1}{#2}}% +} + +\def\tcb@ch@fixed@spacesave{% + \tcbdimto\tcb@space{\tcb@space+\tcbheightspace}% + \ifdim\dimexpr\tcb@space<0pt\relax + \let\tcb@space\tcb@zpt% + \else% + \ifdim\dimexpr\tcb@space>\tcb@height\relax + \let\tcb@space\tcb@height% + \fi% + \fi% + \begingroup\edef\x{\endgroup\noexpand\tcb@savespace{\thetcolorboxnumber}{\tcb@space}}\x% + \tcbdimto\tcb@height@upper{\ht\tcb@upperbox+\dp\tcb@upperbox+\tcbheightspace}% + \let\tcbheightspace\tcb@zpt% + \iftcb@lowerspace% + \tcbdimto\tcb@height@lower{\ht\tcb@lowerbox+\dp\tcb@lowerbox}% + \fi% +} + +\def\tcb@ch@fixed@split{% + \tcbdimto\tcb@height@space{\tcbheightspace+\ht\tcb@upperbox+\dp\tcb@upperbox+\ht\tcb@lowerbox+\dp\tcb@lowerbox}% + \tcbdimto\tcb@height@upper{\tcb@height@fraction\dimexpr\tcb@height@space\relax}% + \tcbdimto\tcb@height@lower{\tcb@height@space-\tcb@height@upper}% +} + +\def\tcb@ch@fixed{% + \ifdim\tcb@natheight<\dimexpr\kvtcb@height@fixed\relax% + \tcbdimto\tcb@height{\kvtcb@height@fixed}% + \else% + \tcbdimto\tcb@space{\tcb@space+\kvtcb@height@fixed-\tcb@natheight}% + \tcbdimto\tcb@temp{\kvtcb@height@fixed+\kvtcb@height@fixed@plus}% + \ifdim\tcb@natheight>\tcb@temp\relax% + \let\tcb@height\tcb@temp% + \else% + \let\tcb@height\tcb@natheight% + \fi% + \fi% + \tcbdimto\tcbheightspace{\tcb@height-\tcb@natheight}% + \iftcb@lowerspace\tcb@ch@fixed@both\else\tcb@ch@fixed@upper\fi% +} + +\def\tcb@ch@innerfixed{% + \tcbdimto\kvtcb@height@fixed{\kvtcb@height@fixed+\kvtcb@top@rule+\kvtcb@bottom@rule+\tcb@h@padtitle+\kvtcb@boxsep*2+\kvtcb@top+\kvtcb@bottom}% + \tcb@ch@fixed% +} + +\def\tcbheightfromgroup#1#2{% + \ifcsundef{tcb@ehg@height@#2}{% + \let#1\tcb@zpt% + }{% + \letcs{#1}{tcb@ehg@height@#2}% + }% +} + +\def\tcb@saveehg#1{% + \immediate\write\@auxout{\string\csgdef{tcb@ehg@height@#1}{\csuse{tcb@ehg@current@#1}}}% +} + +\def\tcb@ehgadd#1{% + \ifcsdef{tcb@ehg@current@\tcb@ehgid}{% + \ifdim\csuse{tcb@ehg@current@\tcb@ehgid}<#1\relax% + \csxdef{tcb@ehg@current@\tcb@ehgid}{#1}% + \fi% + }{% + \csxdef{tcb@ehg@current@\tcb@ehgid}{#1}% + \begingroup\edef\x{\endgroup\noexpand\AtEndDocument{\noexpand\tcb@saveehg{\tcb@ehgid}}}\x% + }% +} + +\def\tcb@ch@equalheight{% + \tcbdimto\tcb@ehg@currentheight{\tcb@natheight-\tcb@space}% + \tcb@ehgadd{\tcb@ehg@currentheight}% + \ifcsdef{tcb@ehg@height@\tcb@ehgid}{% + \ifdim\csuse{tcb@ehg@height@\tcb@ehgid}<\tcb@ehg@currentheight\relax% + \let\tcb@height\tcb@ehg@currentheight% + \else% + \letcs{\tcb@height}{tcb@ehg@height@\tcb@ehgid}% + \fi% + }{% + \let\tcb@height\tcb@ehg@currentheight% + }% + \tcbdimto\tcbheightspace{\tcb@height-\tcb@natheight}% + \iftcb@lowerspace\tcb@ch@fixed@both\else\tcb@ch@fixed@upper\fi% +} + +\def\tcb@dbox@top#1#2#3#4#5{\pgftext[x=#1,y=#2+#3,left,top]{\color{#5}\box#4}}% + +\def\tcb@dbox@bottom#1#2#3#4#5{\pgftext[x=#1,y=#2,left,bottom]{\color{#5}\box#4}}% + +\def\tcb@dbox@center#1#2#3#4#5{\pgftext[x=#1,y=#2+#3/2,left]{\color{#5}\box#4}}% + +\def\tcb@resize@box#1#2#3{% + \setbox#1\hbox{\resizebox*{#2}{#3}{\box#1}}% + \wd#1=#2\relax% + \ht#1=\the\dimexpr#3-\dp#1\relax% +} + +\def\tcb@dbox@resize#1#2#3#4#5{% + \iftcb@fixedheight% + \tcbdimto\tcb@box@w@target{\wd#4}% + \tcbdimto\tcb@box@h@target{#3}% + \tcb@resize@box{#4}{\tcb@box@w@target}{\tcb@box@h@target}% + \fi% + \pgftext[x=#1,y=#2+#3,left,top]{\color{#5}\box#4}}% + +\def\tcb@dbox@resizelimited#1#2#3#4#5{% + \iftcb@fixedheight% + \tcbdimto\tcb@box@w@target{\wd#4}% + \tcbdimto\tcb@box@h@target{\kvtcbv@valignresizelimit\dimexpr(\ht#4+\dp#4)}% + \ifdim\dimexpr\tcb@box@h@target>#3\relax% + \tcbdimto\tcb@box@h@target{#3}% + \fi% + \tcb@resize@box{#4}{\tcb@box@w@target}{\tcb@box@h@target}% + \fi% + \pgftext[x=#1,y=#2+#3,left,top]{\color{#5}\box#4}}% + +\let\tcb@pgfprocess@@specialround@orig=\pgfprocess@@specialround + +% patch for \pgfprocess@@specialround +\def\tcb@pgfprocess@@specialround@angular#1#2#3{% + \pgfutil@g@addto@macro\pgfprocess@segment{#1}% + % start point + \pgf@xb=#2% + \pgf@yb=#3% + % + \edef\pgf@marshal% + {\noexpand\pgfpointlineatdistance{\pgfprocess@savex}% + {\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}% + {\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}}% + \pgf@process{\pgf@marshal}% + \pgf@xa=\pgf@x% save start point + \pgf@ya=\pgf@y% + \edef\pgfprocess@addition{{\the\pgf@x}{\the\pgf@y}}% + \expandafter\pgfutil@g@addto@macro\expandafter\pgfprocess@segment\expandafter{\pgfprocess@addition}% + % + \edef\pgf@marshal% + {\noexpand\pgfpointlineatdistance{\pgfprocess@savey}% + {\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}% + {\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}}% + \pgf@process{\pgf@marshal}% + \pgf@xc=\pgf@x% save end point + \pgf@yc=\pgf@y% + \edef\pgfprocess@addition{\noexpand\pgfsyssoftpath@linetotoken{\the\pgf@xc}{\the\pgf@yc}}% + \expandafter\pgfutil@g@addto@macro\expandafter\pgfprocess@segment\expandafter{\pgfprocess@addition}% + % + \pgf@xa=#2% + \pgf@ya=#3% + \pgfprocess@continueafterrounding% +} + +\def\tcbpatcharcround{\let\pgfprocess@@specialround=\tcb@pgfprocess@@specialround@orig} +\def\tcbpatcharcangular{\let\pgfprocess@@specialround=\tcb@pgfprocess@@specialround@angular} + +\def\tcb@arc@zpt{\pgfsetcornersarced{\pgfpointorigin}}% +\def\tcb@arc@ins{\pgfsetcornersarced{\pgfqpoint{\kvtcb@arc}{\kvtcb@arc}}}% +\def\tcb@arc@out{\pgfsetcornersarced{\pgfqpoint{\tcb@outer@arc}{\tcb@outer@arc}}}% + +\def\tcb@define@corner@mode#1{% +\tcbset{% + #1 corners/.is choice,% + #1 corners/northwest/.code={\edef\tcb@corner@mode@NW{#1}},% + #1 corners/northeast/.code={\edef\tcb@corner@mode@NE{#1}},% + #1 corners/southwest/.code={\edef\tcb@corner@mode@SW{#1}},% + #1 corners/southeast/.code={\edef\tcb@corner@mode@SE{#1}},% + #1 corners/north/.code={\edef\tcb@corner@mode@NW{#1}\edef\tcb@corner@mode@NE{#1}},% + #1 corners/south/.code={\edef\tcb@corner@mode@SW{#1}\edef\tcb@corner@mode@SE{#1}},% + #1 corners/east/.code={\edef\tcb@corner@mode@NE{#1}\edef\tcb@corner@mode@SE{#1}},% + #1 corners/west/.code={\edef\tcb@corner@mode@NW{#1}\edef\tcb@corner@mode@SW{#1}},% + #1 corners/downhill/.code={\edef\tcb@corner@mode@NW{#1}\edef\tcb@corner@mode@SE{#1}},% + #1 corners/uphill/.code={\edef\tcb@corner@mode@NE{#1}\edef\tcb@corner@mode@SW{#1}},% + #1 corners/all/.code={\edef\tcb@corner@mode@NW{#1}\edef\tcb@corner@mode@NE{#1}\edef\tcb@corner@mode@SW{#1}\edef\tcb@corner@mode@SE{#1}},% + #1 corners/.default=all}}% + +\tcb@define@corner@mode{rounded} +\tcb@define@corner@mode{sharp} + +\def\tcb@arc@out@NW{\csname tcb@arc@out@NW@\tcb@corner@mode@NW\endcsname} +\def\tcb@arc@out@NE{\csname tcb@arc@out@NE@\tcb@corner@mode@NE\endcsname} +\def\tcb@arc@out@SW{\csname tcb@arc@out@SW@\tcb@corner@mode@SW\endcsname} +\def\tcb@arc@out@SE{\csname tcb@arc@out@SE@\tcb@corner@mode@SE\endcsname} + +\def\tcb@arc@ins@NW{\csname tcb@arc@ins@NW@\tcb@corner@mode@NW\endcsname} +\def\tcb@arc@ins@NE{\csname tcb@arc@ins@NE@\tcb@corner@mode@NE\endcsname} +\def\tcb@arc@ins@SW{\csname tcb@arc@ins@SW@\tcb@corner@mode@SW\endcsname} +\def\tcb@arc@ins@SE{\csname tcb@arc@ins@SE@\tcb@corner@mode@SE\endcsname} + +\let\tcb@arc@out@NW@sharp\tcb@arc@zpt +\let\tcb@arc@out@NE@sharp\tcb@arc@zpt +\let\tcb@arc@out@SW@sharp\tcb@arc@zpt +\let\tcb@arc@out@SE@sharp\tcb@arc@zpt + +\let\tcb@arc@ins@NW@sharp\tcb@arc@zpt +\let\tcb@arc@ins@NE@sharp\tcb@arc@zpt +\let\tcb@arc@ins@SW@sharp\tcb@arc@zpt +\let\tcb@arc@ins@SE@sharp\tcb@arc@zpt + +\let\tcb@arc@out@NW@rounded\tcb@arc@out +\let\tcb@arc@out@NE@rounded\tcb@arc@out +\let\tcb@arc@out@SW@rounded\tcb@arc@out +\let\tcb@arc@out@SE@rounded\tcb@arc@out + +\let\tcb@arc@ins@NW@rounded\tcb@arc@ins +\let\tcb@arc@ins@NE@rounded\tcb@arc@ins +\let\tcb@arc@ins@SW@rounded\tcb@arc@ins +\let\tcb@arc@ins@SE@rounded\tcb@arc@ins + + +% boundaries +\def\tcb@boundary@base#1#2#3#4#5#6#7#8{% + \tcbdimto\tcb@xa{#1}% + \tcbdimto\tcb@ya{#2}% + \tcbdimto\tcb@xb{#3}% + \tcbdimto\tcb@yb{#4}% + \pgfpathmoveto{\pgfqpoint{\tcb@xa}{\tcb@ya}}% + #6\pgfpathlineto{\pgfqpoint{\tcb@xa}{\tcb@yb}}% + #7\pgfpathlineto{\pgfqpoint{\tcb@xb}{\tcb@yb}}% + #8\pgfpathlineto{\pgfqpoint{\tcb@xb}{\tcb@ya}}% + #5\pgfpathclose% +} + +\def\tcb@boundaryframe@standard{% + \tcb@boundary@base{\z@}{\z@}% + {\tcb@width}{\tcb@height}% + {\tcb@arc@out@SW}{\tcb@arc@out@NW}{\tcb@arc@out@NE}{\tcb@arc@out@SE}% +} + +\def\tcb@boundaryframe@standardjigsaw{% + \pgfseteorule% + \tcb@boundaryframe@standard% + \iftcb@hasTitle% + \tcb@boundaryinterior@title@standard% + \iftcb@titlefilled% + \tcb@boundarytitle@standard% + \fi% + \else% + \tcb@boundaryinterior@notitle@standard% + \fi% +} + +\def\tcb@boundaryinterior@title@standard{% + \tcb@boundary@base{\kvtcb@left@rule}{\kvtcb@bottom@rule}% + {\tcb@width-\kvtcb@right@rule}{\kvtcb@bottom@rule+\tcb@innerheight}% + {\tcb@arc@ins@SW}{\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@ins@SE}% +} + +\def\tcb@boundaryinterior@notitle@standard{% + \tcb@boundary@base{\kvtcb@left@rule}{\kvtcb@bottom@rule}% + {\tcb@width-\kvtcb@right@rule}{\tcb@height-\kvtcb@top@rule}% + {\tcb@arc@ins@SW}{\tcb@arc@ins@NW}{\tcb@arc@ins@NE}{\tcb@arc@ins@SE}% +} + +\def\tcb@boundarytitle@standard{% + \tcb@boundary@base{\kvtcb@left@rule}{\kvtcb@bottom@rule+\tcb@innerheight+\kvtcb@title@rule}% + {\tcb@width-\kvtcb@right@rule}{\tcb@height-\kvtcb@top@rule}% + {\tcb@arc@zpt}{\tcb@arc@ins@NW}{\tcb@arc@ins@NE}{\tcb@arc@zpt}% +} + +% fill frame +\def\tcb@drawframe@standard{% + \begin{pgfscope}% + \tcb@boundaryframe@standard% + \pgfsetfillcolor{tcbcolframe}% + \pgfsetfillopacity{\kvtcb@opacityframe}% + \pgfusepath{fill}% + \end{pgfscope}% +} + +% fill frame +\def\tcb@drawframe@standardjigsaw{% + \begin{pgfscope}% + \tcb@boundaryframe@standardjigsaw% + \pgfsetfillcolor{tcbcolframe}% + \pgfsetfillopacity{\kvtcb@opacityframe}% + \pgfusepath{fill}% + \end{pgfscope}% +} + +% fill inner box with title +\def\tcb@drawwithtitle@standard{% + \begin{pgfscope}% + \tcb@boundaryinterior@title@standard% + \pgfsetfillcolor{tcbcolback}% + \pgfsetfillopacity{\kvtcb@opacityback}% + \pgfusepath{fill}% + \end{pgfscope}% +} + +% fill inner box without title +\def\tcb@drawwithouttitle@standard{% + \begin{pgfscope}% + \tcb@boundaryinterior@notitle@standard% + \pgfsetfillcolor{tcbcolback}% + \pgfsetfillopacity{\kvtcb@opacityback}% + \pgfusepath{fill}% + \end{pgfscope}% +} + +% draw title box +\def\tcb@drawtitle@standard{% + \begin{pgfscope}% + \tcb@boundarytitle@standard% + \pgfsetfillcolor{tcbcolbacktitle}% + \pgfsetfillopacity{\kvtcb@opacitybacktitle}% + \pgfusepath{fill}% + \end{pgfscope}% +} + +% draw segmentation line +\def\tcb@drawlower@standard{% + \begin{pgfscope}% + \pgfsetdash{{1mm}{1mm}}{0.5mm}% + \iftcb@sidebyside% + \tcbdimto\tcb@seg@pos{\kvtcb@left@rule+\kvtcb@boxsep+\kvtcb@leftupper+\tcb@w@upper+\kvtcb@sbs@gap/2}% + \pgfpathmoveto{\pgfqpoint{\tcb@seg@pos}{\the\dimexpr\kvtcb@bottom@rule+\tcb@innerheight\relax}}% + \pgfpathlineto{\pgfqpoint{\tcb@seg@pos}{\kvtcb@bottom@rule}}% + \else% + \tcbdimto\tcb@seg@pos{\kvtcb@bottom@rule+\kvtcb@boxsep*2+\tcb@break@bottomsep+\kvtcb@middle+\kvtcb@bottom+\tcb@height@lower}% + \pgfpathmoveto{\pgfqpoint{\kvtcb@left@rule}{\tcb@seg@pos}}% + \pgfpathlineto{\pgfqpoint{\the\dimexpr\tcb@width-\kvtcb@right@rule\relax}{\tcb@seg@pos}}% + \fi% + \pgfsetcolor{tcbcolframe}% + \pgfsetstrokeopacity{\kvtcb@opacityframe}% + \pgfusepath{stroke}% + \end{pgfscope}% +} + +\def\tcb@setbb@toggle@none{% + \pgfpathrectanglecorners{\pgfqpoint{\the\dimexpr\z@-\kvtcb@bbleft\relax}{\the\dimexpr\z@-\kvtcb@bbbottom\relax}}% + {\pgfqpoint{\the\dimexpr\tcb@width+\kvtcb@bbright\relax}{\the\dimexpr\tcb@height+\kvtcb@bbtop\relax}}% +} + +\def\tcb@setbb@toggle@forced{% + \pgfpathrectanglecorners{\pgfqpoint{\the\dimexpr\z@-\kvtcb@bbright\relax}{\the\dimexpr\z@-\kvtcb@bbbottom\relax}}% + {\pgfqpoint{\the\dimexpr\tcb@width+\kvtcb@bbleft\relax}{\the\dimexpr\tcb@height+\kvtcb@bbtop\relax}}% +} + +\def\tcb@setbb@toggle@evenpage{% + \tcbifoddpage{\tcb@setbb@toggle@none}{\tcb@setbb@toggle@forced}% +} + +\def\tcb@creategeonodes@false{} + +\def\tcb@swap#1#2{% + \let\tcb@temp=#1% + \let#1=#2% + \let#2=\tcb@temp% +} + +\let\tcb@lrtoggle@none=\relax + +\def\tcb@lrtoggle@forced{% + \tcb@swap{\kvtcb@left@rule}{\kvtcb@right@rule}% + \tcb@swap{\kvtcb@lefttitle}{\kvtcb@righttitle}% + \tcb@swap{\kvtcb@leftupper}{\kvtcb@rightupper}% + \tcb@swap{\kvtcb@leftlower}{\kvtcb@rightlower}% + \tcb@swap{\tcb@corner@mode@NW}{\tcb@corner@mode@NE}% + \tcb@swap{\tcb@corner@mode@SW}{\tcb@corner@mode@SE}% +} + +\def\tcb@lrtoggle@evenpage{% + \tcbifoddpage{}{\tcb@lrtoggle@forced}% +} + +\def\tcb@bbdraw{% + \tcb@lrtoggle% + \tcb@setbb@toggle% + \pgfusepath{use as bounding box}% + \iftcb@hasPhantom% + \pgftext[x=\z@,y=\tcb@height-\baselineskip,left,top]{\box\tcb@phantombox}% + \tcb@hasPhantomfalse% + \fi% + \csname tcb@creategeonodes@\kvtcb@geonodes\endcsname% +} + +\def\tcb@tdraw@title@core{% + \iftcb@hasTitle\iftcb@titlevisible%% + \begin{pgfscope}% + \pgfsetfillopacity{\kvtcb@opacitytitle}% + \pgftext[x=\the\dimexpr\kvtcb@left@rule+\kvtcb@boxsep+\kvtcb@lefttitle\relax, + y=\the\dimexpr\tcb@height-\kvtcb@top@rule-\kvtcb@boxsep-\kvtcb@toptitle\relax, + left,top]{\color{tcbcoltitle}\box\tcb@titlebox}% + \end{pgfscope}% + \fi\fi% +} +\let\tcb@tdraw@title=\tcb@tdraw@title@core + +\def\tcb@tdraw@upper@core{% + \iftcb@uppervisible% + \begin{pgfscope}% + \pgfsetfillopacity{\kvtcb@opacityupper}% + \csname tcb@dbox@\kvtcb@valignupper\endcsname{\the\dimexpr\kvtcb@left@rule+\kvtcb@boxsep+\kvtcb@leftupper\relax}% + {\the\dimexpr\tcb@innerheight+\kvtcb@bottom@rule-\kvtcb@boxsep-\tcb@break@topsep-\kvtcb@top-\tcb@height@upper\relax}% + {\tcb@height@upper}{\tcb@upperbox}{tcbcolupper}% + \end{pgfscope}% + \fi% +} +\let\tcb@tdraw@upper=\tcb@tdraw@upper@core + +\def\tcb@tdraw@lower@core{% + \iftcb@lowervisible% + \begin{pgfscope}% + \pgfsetfillopacity{\kvtcb@opacitylower}% + \csname tcb@dbox@\kvtcb@valignlower\endcsname{\the\dimexpr\kvtcb@left@rule+\kvtcb@boxsep+\kvtcb@leftlower\relax}% + {\the\dimexpr\kvtcb@bottom@rule+\kvtcb@boxsep+\tcb@break@bottomsep+\kvtcb@bottom\relax}% + {\tcb@height@lower}{\tcb@lowerbox}{tcbcollower}% + \end{pgfscope}% + \fi% +} +\let\tcb@tdraw@lower=\tcb@tdraw@lower@core + +\def\tcb@box@align@top#1{% + \setbox#1=\hbox{\raise-\ht#1\box#1}% +} + +\def\tcb@box@align@center#1{% + \setbox#1=\hbox{\raise\dimexpr(\dp#1-\ht#1)/2\relax\box#1}% +} + +\def\tcb@box@align@bottom#1{% + \setbox#1=\hbox{\raise\dp#1\box#1}% +} + +\def\tcb@sbs@mix{% + \begin{tcb@savebox}{\tcb@upperbox}{\tcb@w@upper@real}% + \tcb@box@align{\tcb@upperbox}% + \iftcb@uppervisible% + \tcbdimto{\tcb@temp@wd}{\tcb@w@upper-\wd\tcb@upperbox+\kvtcb@sbs@gap}% + \noindent\unhbox\tcb@upperbox\kern\tcb@temp@wd% + \else% + \tcbdimto{\tcb@temp@wd}{\tcb@w@upper+\kvtcb@sbs@gap}% + \noindent\kern\tcb@temp@wd% + \rule[-\dp\tcb@upperbox]{\z@}{\the\dimexpr\ht\tcb@upperbox+\dp\tcb@upperbox\relax}% + \fi% + \iftcb@hasLower% + \tcb@box@align{\tcb@lowerbox}% + \iftcb@lowervisible\leavevmode\color{tcbcollower}\unhbox\tcb@lowerbox% + \else% + \iftcb@lowerignored\else\rule[-\dp\tcb@lowerbox]{\z@}{\the\dimexpr\ht\tcb@lowerbox+\dp\tcb@lowerbox\relax}\fi% + \fi% + \fi% + \end{tcb@savebox}% + \tcb@hasLowerfalse% + \tcb@uppervisibletrue% +} + +\def\tcb@draw@color@box{% + \iftcb@sidebyside\tcb@sbs@mix\fi% + \tcb@comp@arc% + \iftcb@hasTitle% + \tcbdimto\tcb@h@title{\ht\tcb@titlebox+\dp\tcb@titlebox}% + \tcbdimto\tcb@h@padtitle{\kvtcb@title@rule+\kvtcb@boxsep*2+\kvtcb@toptitle+\kvtcb@bottomtitle+\tcb@h@title}% + \else% + \let\tcb@h@title=\tcb@zpt% + \let\tcb@h@padtitle=\tcb@zpt% + \fi% + % + \tcb@defToTotalHeight\tcb@h@upper{\tcb@upperbox}% + % + \iftcb@hasLower% + \iftcb@lowerignored\tcb@lowerspacefalse\else\tcb@lowerspacetrue\fi% + \else\tcb@lowerspacefalse\fi% + \iftcb@lowerspace% + \tcbdimto\tcb@h@segment{\kvtcb@boxsep*2+\kvtcb@middle*2}% + \tcb@defToTotalHeight\tcb@h@lower{\tcb@lowerbox}% + \else + \let\tcb@h@segment=\tcb@zpt% + \let\tcb@h@lower=\tcb@zpt% + \fi% + % + \tcb@shield@externalize% + \tcb@drawcolorbox% +} + +\def\tcb@apply@overlay{\csname tcb@overlay@\tcb@split@state\endcsname}% + +\def\tcb@adraw@frame{% + \tcb@frame@code% +} + +\def\tcb@adraw@interior{% + \iftcb@hasTitle% + \tcb@interiortitled@code% + \else% + \tcb@interior@code% + \fi% +} + +\def\tcb@adraw@title{% + \iftcb@hasTitle% + \iftcb@titlefilled% + \tcb@title@code% + \fi% + \fi% +} + +\def\tcb@drawing@env@begin{% + \csname tcb@before@\tcb@split@state\endcsname% + \begin{\kvtcb@graphenv}% + \tcb@bbdraw% + \tcb@apply@graph@patches% +} + +\def\tcb@drawing@env@end{% + \end{\kvtcb@graphenv}% + \csname tcb@after@\tcb@split@state\endcsname% +} + +\def\tcb@set@normal@unbroken@beforeafter{% + \let\tcb@before@unbroken=\kvtcb@beforebox% + \iftcb@nobreak{% + \iftcb@ignorenobreak\else% + \let\tcb@before@unbroken=\kvtcb@beforebox@nobreak% + \fi% + }{}% + \let\tcb@after@unbroken=\kvtcb@afterbox% +} + +\let\tcb@extras@unbroken\@empty + +\def\tcb@drawcolorbox{% + \edef\tcb@split@state{unbroken}% + \tcb@extras@unbroken% + \let\kvtcb@top@rule=\kvtcb@top@rule@stand% + \let\kvtcb@bottom@rule=\kvtcb@bottom@rule@stand% + \let\kvtcb@bbtop=\kvtcb@bbtop@stand% + \let\kvtcb@bbbottom=\kvtcb@bbbottom@stand% + \let\tcb@break@topsep=\tcb@zpt% + \let\tcb@break@bottomsep=\tcb@zpt% + % floats + \ifx\kvtcb@float\@empty% + \tcb@set@normal@unbroken@beforeafter% + \else% + \edef\tcb@before@unbroken{\noexpand\tcb@float@env@begin{tcbfloat}[\kvtcb@float]\noexpand\kvtcb@everyfloat}% + \let\tcb@after@unbroken=\tcb@float@env@end% + \fi% + \setcounter{tcbbreakpart}{1}% + % computation of total height + \tcbdimto\tcb@natheight{\tcb@h@padtitle+\kvtcb@top@rule+\kvtcb@bottom@rule+\kvtcb@boxsep*2+\kvtcb@top+\kvtcb@bottom+\tcb@h@upper}% + \iftcb@lowerspace% + \tcbdimto\tcb@natheight{\tcb@natheight+\tcb@h@segment+\tcb@h@lower}% + \def\tcbsegmentstate{1}% + \else% + \def\tcbsegmentstate{0}% + \fi% + \tcb@ch% + \tcbdimto\tcb@innerheight{\tcb@height-\kvtcb@top@rule-\kvtcb@bottom@rule-\tcb@h@padtitle}% + \tcbdimto\tcbtextheight{\tcb@innerheight-\kvtcb@boxsep*2-\kvtcb@top-\kvtcb@bottom}% + \tcb@drawing@env@begin% + \pgfsetbaseline{\the\dimexpr\kvtcb@baseline-\kvtcb@bbbottom\relax}% + \tcb@extensions@preframe% + % draw frame and interior + \tcb@adraw@frame% + \tcb@adraw@interior% + \iftcb@lowerseparated% + \iftcb@lowerspace% + \tcb@segmentation@code% + \else\iftcb@sidebyside% + \tcb@segmentation@code% + \fi\fi% + \fi% + \tcb@adraw@title% + \tcb@extensions@postframe% + % draw text boxes + \tcb@tdraw@title% + \tcb@tdraw@upper% + \iftcb@hasLower\tcb@tdraw@lower\fi% + \tcb@extensions@final% + \tcb@drawing@env@end% +} + +\let\tcb@drawcolorbox@standalone=\tcb@drawcolorbox + +\def\tcb@draw@border#1{} + +\long\def\tcbox@inner@hbox#1{% + \tcbset{breakable@false,sidebyside=false}% + \tcb@set@@phantom% + \colorlet{tcbcol@origin}{.}% + \tcb@set@color{tcbcolupper}% + \sbox\tcb@upperbox{\tcb@embed@tcbox{\kvtcb@fontupper\kvtcb@halignupper\tcb@insert@before@upper#1\tcb@insert@after@upper}}% + \tcb@reset@color% + \tcbdimto\tcb@val@raisebase{\the\dimexpr\dp\tcb@upperbox+\kvtcb@bottom+\kvtcb@boxsep+\kvtcb@bottom@rule@stand+\kvtcb@bbbottom@stand\relax}% + \tcbdimto\kvtcb@width{\wd\tcb@upperbox+\kvtcb@left@rule+\kvtcb@leftupper+\kvtcb@boxsep*2+\kvtcb@rightupper+\kvtcb@right@rule}% + \tcb@hasLowerfalse% + \tcb@set@@title% + \tcb@set@@dimensions% + \tcb@draw@color@box% +} + +\long\def\tcbox@inner@minipage#1{% + \tcbset{breakable@false,sidebyside=false}% + \let\tcb@val@raisebase=\tcb@zpt% + \tcb@set@@phantom% + \tcb@set@@title% + \tcb@set@@dimensions% + \colorlet{tcbcol@origin}{.}% + \tcb@set@color{tcbcolupper}% + \begin{tcb@savebox}{\tcb@upperbox}{\tcb@w@upper}\kvtcb@fontupper\kvtcb@halignupper\tcb@insert@before@upper#1\tcb@insert@after@upper\end{tcb@savebox}% + \tcb@reset@color% + \tcb@hasLowerfalse% + \tcb@draw@color@box% +} + +\long\def\tcbox@inner@v@@d#1{}% + +\long\def\tcb@ox#1#2{% + \begingroup% + \tcb@layer@inc% + \tcb@apply@box@options{#1}\tcb@height@adjust% + \csname tcbox@inner@\kvtcb@capture\endcsname{#2}% + \tcb@layer@dec% + \endgroup% +} + +\newcommand{\tcbox}[2][]{% + \tcb@ox{capture=hbox,#1}{#2}% +} + +\newcommand{\tcbsubtitle}[2][]{% + \begingroup% + \colorlet{tcbtranscol@frame}{tcbcolframe}% + \iftcb@titlefilled% + \colorlet{tcbtranscol@back}{tcbcolbacktitle}% + \else% + \colorlet{tcbtranscol@back}{tcbcolframe}% + \fi% + \colorlet{tcbtranscol@upper}{tcbcoltitle}% + \let\tcb@trans@fontupper\kvtcb@fonttitle% + \let\tcb@trans@boxsep\kvtcb@boxsep% + \let\tcb@trans@left\kvtcb@leftupper% + \let\tcb@trans@right\kvtcb@rightupper% + \let\tcb@trans@top\kvtcb@toptitle% + \let\tcb@trans@bottom\kvtcb@bottomtitle% + \let\tcb@trans@rule\kvtcb@title@rule% + \let\tcb@trans@style\kvtcb@subtitle@style% + \begin{tcolorbox}[sharp corners, + before skip={0.5\baselineskip},after skip={0.5\baselineskip}, + colframe=tcbtranscol@frame,colback=tcbtranscol@back, + colupper=tcbtranscol@upper,fontupper=\tcb@trans@fontupper, + boxsep=\tcb@trans@boxsep,left=\tcb@trans@left,right=\tcb@trans@right, + top=\tcb@trans@top,bottom=\tcb@trans@bottom, + boxrule=\tcb@trans@rule,leftrule=\z@,rightrule=\z@,oversize, + code={\pgfkeysalsofrom\tcb@trans@style},#1]% + #2% + \end{tcolorbox}% + \endgroup% +} + + +\def\tcb@new@label@type{\begingroup\edef\x{\endgroup\noexpand\appto\noexpand\tcb@new@colopt{,label type=\tcb@new@boxname}}\x} + +\def\tcb@blend@beforetitle#1{#1:\ } + +\tcbset{% + blend before title code/.code={\def\tcb@blend@beforetitle##1{#1}}, + blend before title/.is choice, + blend before title/colon/.style={blend before title code={##1:\ }}, + blend before title/dash/.style={blend before title code={##1 --\ }}, + blend before title/colon hang/.style={blend before title code={% + \setbox\z@=\hbox{##1:\ }\hangindent\wd\z@\hangafter=1\mbox{\unhbox\z@}}}, + blend before title/dash hang/.style={blend before title code={% + \setbox\z@=\hbox{##1 --\ }\hangindent\wd\z@\hangafter=1\mbox{\unhbox\z@}}}, + blend before title=colon, +} + +\tcbset{% + new/.cd,% + use counter/.code={\edef\kvtcb@new@counter{#1}\let\tcb@proc@counter=\tcb@proc@counter@use}, + use counter*/.code={\edef\kvtcb@new@counter{#1}\let\tcb@proc@counter=\tcb@proc@counter@from}, + auto counter/.code={\let\tcb@proc@counter=\tcb@proc@counter@auto}, + use counter from/.code={\edef\kvtcb@new@counter{\csname tcb@cnt@#1\endcsname}\let\tcb@proc@counter=\tcb@proc@counter@from}, + no counter/.code={\let\tcb@proc@counter=\tcb@proc@counter@no}, + % + number within/.store in=\kvtcb@new@numberwithin, + number format/.store in=\kvtcb@new@format, + number freestyle/.store in=\kvtcb@new@freestyle, + % + list inside/.store in=\kvtcb@new@listof, + list type/.store in=\kvtcb@new@listtype, + % + init@hook@clear/.code={\def\kvtcb@init@hook{}}, + crefname/.code 2 args={\begingroup\edef\x{\endgroup\noexpand\crefname{\tcb@new@boxname}}\x{#1}{#2}\tcb@new@label@type}, + Crefname/.code 2 args={\begingroup\edef\x{\endgroup\noexpand\Crefname{\tcb@new@boxname}}\x{#1}{#2}\tcb@new@label@type}, + % + blend into/.is choice,% + blend into/figures/.style={use counter*=figure,list inside=lof,/tcb/code={\appto\tcb@new@colopt{,before title={\tcb@blend@beforetitle{\fnum@figure}}}}},% + blend into/tables/.style={use counter*=table,list inside=lot,/tcb/code={\appto\tcb@new@colopt{,before title={\tcb@blend@beforetitle{\fnum@table}}}}},% + blend into/listings/.style={use counter*=lstlisting,list inside=lol,/tcb/code={\appto\tcb@new@colopt{,before title={\tcb@blend@beforetitle{\lstlistingname~\thetcbcounter}}}}},% + % + reset@new/.style={no counter,number within=,number format=\arabic,number freestyle=,list inside=,list type=tcolorbox,init@hook@clear}, +} + +\def\tcb@proc@counter@autoanduse#1{% + \letcs\tcbcounter{tcb@cnt@#1}% + \ifx\kvtcb@new@numberwithin\@empty% + \csxdef{the\tcbcounter}{\expandafter\noexpand\kvtcb@new@format{\tcbcounter}}% + \else% + \@addtoreset{\tcbcounter}{\kvtcb@new@numberwithin}% + \csxdef{the\tcbcounter}{\expandafter\noexpand\csname the\kvtcb@new@numberwithin\endcsname .\expandafter\noexpand\kvtcb@new@format{\tcbcounter}}% + \fi% + \ifx\kvtcb@new@freestyle\@empty% + \else% + \csxdef{the\tcbcounter}{\kvtcb@new@freestyle}% + \fi% + \global\csletcs{thetcb@cnt@#1}{the\tcbcounter}% + \appto\tcb@new@colopt{,code={\letcs\tcbcounter{tcb@cnt@#1}\letcs\thetcbcounter{thetcb@cnt@#1}\stepcounter{\tcbcounter}\preto\kvtcb@phantom{\addtocounter{\tcbcounter}{-1}\refstepcounter{\tcbcounter}}}}% +} + +\def\tcb@proc@counter@auto#1{% + \newcounter{tcb@cnt@#1}% + \csxdef{tcb@cnt@#1}{tcb@cnt@#1}% + \tcb@proc@counter@autoanduse{#1}% +} + +\def\tcb@proc@counter@use#1{% + \csxdef{tcb@cnt@#1}{\kvtcb@new@counter}% + \tcb@proc@counter@autoanduse{#1}% +} + +\def\tcb@proc@counter@from#1{% + \csxdef{tcb@cnt@#1}{\kvtcb@new@counter}% + \global\csletcs{thetcb@cnt@#1}{the\kvtcb@new@counter}% + \appto\tcb@new@colopt{,code={\letcs\tcbcounter{tcb@cnt@#1}\letcs\thetcbcounter{thetcb@cnt@#1}\stepcounter{\tcbcounter}\preto\kvtcb@phantom{\addtocounter{\tcbcounter}{-1}\refstepcounter{\tcbcounter}}}}% +} + +\def\tcb@proc@counter@no#1{% + \appto\tcb@new@colopt{,code={\let\tcbcounter=\@empty\let\thetcbcounter=\@empty}}% +}% + +\long\def\tcb@proc@options@init#1#2{% + \tcbset{new/.cd,reset@new,#1}% + \tcb@proc@counter{#2}% + \ifx\kvtcb@new@listof\@empty% + \else% + \csedef{tcb@lstof@#2}{\kvtcb@new@listof}% + \csedef{tcb@lsttp@#2}{\kvtcb@new@listtype}% + \appto\tcb@new@colopt{,add to list={\csname tcb@lstof@#2\endcsname}{\csname tcb@lsttp@#2\endcsname}}% + \fi% + \kvtcb@init@hook% +}% + +\long\def\tcb@process@newtcolorbox#1#2{% + \edef\tcb@new@boxname{#1}% + \def\tcb@new@colopt{}% + \long\def\temp@a{#2}% + \ifx\temp@a\@empty\relax% + \else% + \tcb@proc@options@init{#2}{#1}% + \fi% + \preto\tcb@new@colopt{savedelimiter=#1}% + \cslet{tcb@opt@#1}{\tcb@new@colopt}% + \tcb@process@newtcolorbox@continue{#1}% +} + +\newcommand\tcb@process@newenvironment[2][]{% + \tcb@process@newtcolorbox{#2}{#1}% +} + +\long\def\tcb@newtcolorbox#1#2{\tcb@newenvironment{#1}{\tcolorbox[#2,options@for=#1]}{\endtcolorbox}} + +\long\def\tcb@newtcolorbox@#1[#2]#3{\tcb@newenvironment{#1}[#2]{\tcolorbox[#3,options@for=#1]}{\endtcolorbox}} + +\long\def\tcb@newtcolorbox@@#1[#2][#3]#4{\tcb@newenvironment{#1}[#2][#3]{\tcolorbox[#4,options@for=#1]}{\endtcolorbox}} + +\long\def\tcb@new@tcolorbox@#1[#2]{% + \@ifnextchar[{\tcb@newtcolorbox@@{#1}[#2]}{\tcb@newtcolorbox@{#1}[#2]}} + +\def\tcb@new@tcolorbox#1{% + \@ifnextchar[{\tcb@new@tcolorbox@{#1}}{\tcb@newtcolorbox{#1}}} + +\def\newtcolorbox{% + \let\tcb@newenvironment\newenvironment% + \let\tcb@process@newtcolorbox@continue\tcb@new@tcolorbox% + \tcb@process@newenvironment} + +\def\renewtcolorbox{% + \let\tcb@newenvironment\renewenvironment% + \let\tcb@process@newtcolorbox@continue\tcb@new@tcolorbox% + \tcb@process@newenvironment} + +\newcommand{\tcolorboxenvironment}[2]{% + \BeforeBeginEnvironment{#1}{\begin{tcolorbox}[savedelimiter={#1},#2]}% + \AfterEndEnvironment{#1}{\end{tcolorbox}}% +} + +% auxiliary code to remove a leading backspace +\newcommand{\tcb@remove@bs}[1]{% + \ifcat\relax\noexpand#1% + \expandafter\tcb@remove@bs@aux@i% + \fi + #1} +\newcommand*{\tcb@remove@bs@aux@i}{% + \romannumeral% + \if\string\ \tcb@remove@bs@aux@ii\fi% + \expandafter\tcb@remove@bs@aux@iii\string} +\newcommand{\tcb@remove@bs@aux@ii}{} +\long\def\tcb@remove@bs@aux@ii#1\tcb@remove@bs@aux@iii{% + -\number\fi\expandafter\z@} +\newcommand{\tcb@remove@bs@aux@iii}[1]{\z@} + +\newcommand\tcb@process@newcommand[2][]{% + \begingroup\edef\x{\endgroup\noexpand\tcb@process@newtcolorbox{\tcb@remove@bs{#2}}}\x{#1}% +} + +\long\def\tcb@newtcbox#1#2{\expandafter\tcb@newcommand\csname#1\endcsname{\tcbox[#2,options@for=#1]}} + +\long\def\tcb@newtcbox@#1[#2]#3{\expandafter\tcb@newcommand\csname#1\endcsname[#2]{\tcbox[#3,options@for=#1]}} + +\long\def\tcb@newtcbox@@#1[#2][#3]#4{\expandafter\tcb@newcommand\csname#1\endcsname[#2][#3]{\tcbox[#4,options@for=#1]}} + +\long\def\tcb@new@tcbox@#1[#2]{% + \@ifnextchar[{\tcb@newtcbox@@{#1}[#2]}{\tcb@newtcbox@{#1}[#2]}} + +\def\tcb@new@tcbox#1{% + \@ifnextchar[{\tcb@new@tcbox@{#1}}{\tcb@newtcbox{#1}}} + +\def\newtcbox{% + \let\tcb@newcommand\newcommand% + \let\tcb@process@newtcolorbox@continue\tcb@new@tcbox% + \tcb@process@newcommand} + +\def\renewtcbox{% + \let\tcb@newcommand\renewcommand% + \let\tcb@process@newtcolorbox@continue\tcb@new@tcbox% + \tcb@process@newcommand} + + +\def\tcb@addcontentsline#1#2{% + \ifx\kvtcb@listentry\@empty% + \ifx\kvtcb@title\@empty% + \ifx\tcbtitletext\@empty% + \addcontentsline{#1}{#2}{\protect\numberline{\thetcbcounter}{\ignorespaces\kvtcb@savedelimiter}}% + \else% + \addcontentsline{#1}{#2}{\protect\numberline{\thetcbcounter}{\ignorespaces\tcbtitletext}}% + \fi% + \else% + \addcontentsline{#1}{#2}{\protect\numberline{\thetcbcounter}{\ignorespaces\kvtcb@title}}% + \fi% + \else% + \addcontentsline{#1}{#2}{\kvtcb@listentry}% + \fi% +} + +\newcommand*\l@tcolorbox{\@dottedtocline{1}{1.5em}{2.3em}} + +\newcommand{\tcblistof}[3][\section]{% + \ifnum\c@tocdepth<1\relax% + \tcb@warning{'tocdepth' value lower than 1 for 'tcblistof'}% + \fi% + #1{#3}% + \@starttoc{#2}% +} + + + +% verbatim output as in 'verbatim' + +\newwrite\tcb@out + +\let\tcb@verbatim@begin@hook\@empty +\let\tcb@verbatim@end@hook\@empty +\let\tcb@verbatim@change@percent\@empty + +\def\tcbverbatimwrite#1{% + \@bsphack + \immediate\openout\tcb@out #1 + \tcb@verbatim@begin@hook% + \let\do\@makeother\dospecials + \tcb@verbatim@change@percent\catcode`\^^M\active \catcode`\^^I=12 + \def\verbatim@processline{% + \immediate\write\tcb@out + {\the\verbatim@line}}% + \verbatim@start}%' + + +\def\endtcbverbatimwrite{% + \tcb@verbatim@end@hook% + \immediate\closeout\tcb@out + \@esphack% +} + + +% saving of the lower box + +\def\tcb@lowerverbatim{% + \begingroup% + \tcbverbatimwrite\kvtcb@savelowerto} + +\def\tcb@endlowerverbatimanddraw{% + \endtcbverbatimwrite% + \endgroup% + \IfFileExists{\kvtcb@savelowerto}{% + \tcb@savelowerbox\input{\kvtcb@savelowerto}\end{tcb@savebox}}{}% + \tcb@draw@color@box% + \tcb@finalize@environment% +} + +% saving of the upper box + +\def\tcb@upperverbatim{% + \begingroup% + \tcbverbatimwrite\kvtcb@saveupperto} + +\def\tcb@endupperverbatimanddraw{% + \endtcbverbatimwrite% + \endgroup% + \IfFileExists{\kvtcb@saveupperto}{% + \tcb@saveupperbox\input{\kvtcb@saveupperto}\end{tcb@savebox}}{}% + \tcb@draw@color@box% + \tcb@finalize@environment% +} + +\def\tcbwritetemp{% + \begingroup% + \tcbverbatimwrite\kvtcb@tempfile} + +\def\endtcbwritetemp{% + \endtcbverbatimwrite% + \endgroup% +} + +\def\tcbusetemp{\input{\kvtcb@tempfile}} + +% recording + +\newwrite\tcb@record@out + +\def\tcb@null#1{} +\newcommand{\tcb@record}[1]{\immediate\write\tcb@record@out{#1}} + +\newcommand{\tcbstartrecording}[1][\jobname.records]{% + \let\tcbrecord\tcb@record% + \edef\tcb@record@file{#1}% + \immediate\openout\tcb@record@out\tcb@record@file% +} + +\newcommand{\tcbstoprecording}{% + \immediate\closeout\tcb@record@out% + \let\tcbrecord\tcb@null% +} + +\tcbset{% + record/.style={phantom={\tcbrecord{#1}}}, + no recording/.code={\let\tcbrecord\tcb@null}, + no recording +} + +\newcommand{\tcbinputrecords}[1][\tcb@record@file]{% + \IfFileExists{#1}{\input{#1}}{\tcb@error{record file `#1' not found}{The record file `#1' was not found}}% +} + +\tcb@new@skin{standard}{frame engine=standard,interior titled engine=standard, + interior engine=standard,segmentation engine=standard,title engine=standard, + graphical environment=pgfpicture,geometry nodes=false, + set@extensions@preframe=,set@extensions@postframe={\tcb@apply@overlay},set@extensions@final=,% + set@outerboundary=\tcb@boundaryframe@standard,% + shape@of@skin=unbroken, + skin first=standard,skin middle=standard,skin last=standard% +} + +\tcb@new@skin{standard jigsaw}{skin@standard,frame engine=standardjigsaw,% + skin first=standard jigsaw,skin middle=standard jigsaw,skin last=standard jigsaw} + +\def\tcb@reset{}% +\tcbset{% + initialize@reset/.code={\tcbset{#1}\appto\tcb@reset{\tcbset{#1}}},% + reset/.code={\tcb@reset},% + reset@core/.style={code={\let\tcbtitletext\@empty\tcb@attach@title@code@% + \let\tcb@lateoptions@hook\@empty}, + width=\linewidth,autoparskip,arc is curved, + natural height,height plus=0pt,space to lower,valign=top,valign lower=top, + size=normal,rounded corners,parfillskip restore, + enlarge top by=0mm,enlarge bottom by=0mm,enlarge left by=0mm,enlarge right by=0mm, + toggle enlargement=none,toggle left and right=none, + baseline=0pt,adjust text={\"Apgjy},upperbox=visible,lowerbox=visible,titlebox=visible,lower separated, + colback=black!5!white,colframe=black!75!white,@colbacktitle=black!50!white,coltext=black,coltitle=white, + fonttitle=,fontupper=,fontlower=,floatplacement=htb,nofloat,saveto=,savelowerto=, + tempfile={\jobname.tcbtemp}, + standard,parbox,hyphenationfix=false,overlay=, + halign=justify,halign lower=justify,halign title=justify, + before title=,after title=,before upper=,after upper=,before lower=,after lower=, + sidebyside=false,sidebyside align=center,sidebyside gap=10mm, + lefthand ratio=0.5,check odd page=false,nophantom, + shield externalize=false,list entry=,no label type, + opacityupper=1.0,opacitylower=1.0,opacitytitle=1.0,opacityframe=1.0,opacityback=1.0,@opacitybacktitle=1.0, + subtitle style=,title filled=false,every float=,ignore nobreak=false,before nobreak=\noindent, + tcbox width=auto, + }, + initialize@reset=reset@core, +} + +\def\tcbsetforeverylayer#1{\tcbset{initialize@reset={#1}}} + +% libraries +\def\tcb@optionlist{} + +\def\tcb@set@library@version#1{% + \def\tcb@library@version{#1}% + \typeout{Library (tcolorbox): '\@currname' version '\tcb@library@version'} + \tcb@check@library@version% +} + +\def\tcb@check@library@version{% + \ifx\tcb@library@version\tcb@version\else% + \tcb@error{tcolorbox version '\tcb@version' loads library '\@currname' with version '\tcb@library@version'}% + {tcolorbox is not installed correctly. At least one library is not compatible to the main package.}% + \fi% +} + +\def\tcbuselibrary#1{\tcbset{library/.cd,#1}} +\@onlypreamble\tcbuselibrary + +\providecommand{\tcbpkgprefix}{} + +\def\tcb@load@library#1#2{% + \pgfkeysifdefined{/tcb/libload/#1}{}{% + \pgfkeyssetvalue{/tcb/libload/#1}{}% + \@pushfilename% + \xdef\@currname{#2}% + \makeatletter% + \def\tcb@library@version{-}% + \input\tcbpkgprefix#2\relax% + \tcb@check@library@version% + \@popfilename% + }% +} + +\def\tcb@add@library#1#2{% + \tcbset{library/#1/.code={\tcb@load@library{#1}{#2}}}% + \DeclareOption{#1}{\appto\tcb@optionlist{,#1}}% +} +\def\tcb@add@library@style#1#2{% + \tcbset{library/#1/.style={#2}}% + \DeclareOption{#1}{\appto\tcb@optionlist{,#1}}% +} + +\tcb@add@library{pro@cessing}{tcbprocessing.code.tex} +\tcb@add@library{listings@core}{tcblistingscore.code.tex} +\tcb@add@library{listings}{tcblistings.code.tex} +\tcb@add@library{listingsutf8}{tcblistingsutf8.code.tex} +\tcb@add@library{minted}{tcbminted.code.tex} +\tcb@add@library{theorems}{tcbtheorems.code.tex} +\tcb@add@library{documentation}{tcbdocumentation.code.tex} +\tcb@add@library{raster}{tcbraster.code.tex} +\tcb@add@library{skins@jigsaw}{tcbskinsjigsaw.code.tex} +\tcb@add@library{skins}{tcbskins.code.tex} +\tcb@add@library{breakable}{tcbbreakable.code.tex} +\tcb@add@library{magazine}{tcbmagazine.code.tex} +\tcb@add@library{hooks}{tcbhooks.code.tex} +\tcb@add@library{fitting}{tcbfitting.code.tex} +\tcb@add@library{xparse}{tcbxparse.code.tex} +\tcb@add@library{external}{tcbexternal.code.tex} +\tcb@add@library{vignette}{tcbvignette.code.tex} +\tcb@add@library{poster}{tcbposter.code.tex} + +\tcb@add@library@style{many}{raster,skins,breakable,hooks,theorems,fitting,xparse} +\tcb@add@library@style{most}{many,listingsutf8,external,magazine,vignette,poster} +\tcb@add@library@style{all}{many,minted,listingsutf8,external,magazine,vignette,poster,documentation} + +\ProcessOptions* +\begingroup\edef\x{\endgroup\noexpand\tcbuselibrary{\tcb@optionlist}}\x -- cgit v1.2.3