summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/tcolorbox/tcbdocumentation.code.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/tcolorbox/tcbdocumentation.code.tex')
-rw-r--r--macros/latex/contrib/tcolorbox/tcbdocumentation.code.tex509
1 files changed, 509 insertions, 0 deletions
diff --git a/macros/latex/contrib/tcolorbox/tcbdocumentation.code.tex b/macros/latex/contrib/tcolorbox/tcbdocumentation.code.tex
new file mode 100644
index 0000000000..ecd2d24dd2
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcbdocumentation.code.tex
@@ -0,0 +1,509 @@
+%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% tcbdocumentation.code.tex: Code for LaTeX documentations
+%%
+%% -------------------------------------------------------------------------------------------
+%% Copyright (c) 2006-2019 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% -------------------------------------------------------------------------------------------
+%%
+%% 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
+%%
+\tcb@set@library@version{4.20}
+
+\tcbuselibrary{listings,skins,xparse,external}
+
+\RequirePackage{pifont}[2005/04/12]
+\RequirePackage{marvosym}[2011/07/20]
+\ifdefined\printindex\else\RequirePackage{makeidx}[2000/03/29]\fi
+\RequirePackage{refcount}[2011/10/16]
+\RequirePackage{hyperref}[2012/02/06]
+\ifdefined\marginnote\else\RequirePackage{marginnote}[2012/03/29]\fi
+
+\definecolor{Option}{rgb}{0.118,0.546,0.222}
+\definecolor{Definition}{rgb}{0.784,0.06,0.176}
+\definecolor{ExampleFrame}{rgb}{0.628,0.705,0.942}
+\definecolor{ExampleBack}{rgb}{0.963,0.971,0.994}
+\definecolor{Hyperlink}{rgb}{0.281,0.275,0.485}
+
+\def\colDef#1{\textcolor{\kvtcb@col@command}{#1}}
+\def\colOpt#1{\textcolor{\kvtcb@col@opt}{#1}}
+
+\lstdefinestyle{tcbdocumentation}{language={[LaTeX]TeX},
+ aboveskip={0\p@ \@plus 6\p@},
+ belowskip={0\p@ \@plus 6\p@},
+ columns=fullflexible,
+ keepspaces=true,
+ breaklines=true,
+ prebreak={\Righttorque},
+ postbreak={\space\Lefttorque},
+ breakatwhitespace=true,
+ basicstyle=\ttfamily\footnotesize,
+ extendedchars=true,
+ moredelim={[is][\itshape\rmfamily]{^^a7}{^^a7}},
+ nolol,inputencoding=\kvtcb@listingencoding}
+
+% The following macros are taken from ltxdoc
+\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
+\def\meta@font@select{\rmfamily\itshape}
+
+\AtEndPreamble{%
+ \@ifpackageloaded{doc}{%
+ }{% code taken from doc.sty
+ \ifx\l@nohyphenation\undefined
+ \newlanguage\l@nohyphenation
+ \fi
+ \DeclareRobustCommand\meta[1]{%
+ \ensuremath\langle
+ \ifmmode \expandafter \nfss@text \fi
+ {%
+ \meta@font@select
+ \edef\meta@hyphen@restore
+ {\hyphenchar\the\font\the\hyphenchar\font}%
+ \hyphenchar\font\m@ne
+ \language\l@nohyphenation
+ #1\/%
+ \meta@hyphen@restore
+ }\ensuremath\rangle
+ }%
+ }%
+}%
+
+\def\marg#1{%
+ {\ttfamily\char`\{}\meta{#1}{\ttfamily\char`\}}}
+\def\oarg#1{%
+ \colOpt{{\ttfamily[}\meta{#1}{\ttfamily]}}}
+
+\newrobustcmd\tcb@cs[1]{{\catcode`\_=12\relax\catcode`\@11\relax\ttfamily\char`\\\scantokens{#1}\unskip}}
+\newrobustcmd\tcb@scantokens[1]{{\catcode`\_=12\relax\catcode`\@11\relax\ttfamily\scantokens{#1}\unskip}}
+
+\newif\iftcb@doc@toindex
+\newif\iftcb@doc@colorize
+\newif\iftcb@doc@annotate
+
+% language specific texts
+\tcbset{
+ doclang/.cd,
+ color/.store in=\kvtcb@text@color,
+ colors/.store in=\kvtcb@text@colors,
+ counter/.store in=\kvtcb@text@counter,
+ counters/.store in=\kvtcb@text@counters,
+ environment content/.store in=\kvtcb@text@envcontent,
+ environment/.store in=\kvtcb@text@env,
+ environments/.store in=\kvtcb@text@envs,
+ index/.store in=\kvtcb@text@index,
+ key/.store in=\kvtcb@text@key,
+ keys/.store in=\kvtcb@text@keys,
+ length/.store in=\kvtcb@text@length,
+ lengths/.store in=\kvtcb@text@lengths,
+ new/.store in=\kvtcb@text@new,
+ pageshort/.store in=\kvtcb@text@pageshort,
+ updated/.store in=\kvtcb@text@updated,
+ value/.store in=\kvtcb@text@value,
+ values/.store in=\kvtcb@text@values,
+}
+
+% documentation options
+\tcbset{
+ documentation listing options/.store in=\kvtcb@doclistingoptions,%
+ documentation listing style/.style={documentation listing options={style=#1}},%
+ documentation minted language/.store in=\kvtcb@docminted@language,
+ documentation minted style/.store in=\kvtcb@docmintstyle,
+ documentation minted options/.store in=\kvtcb@docmintoptions,
+ color command/.store in=\kvtcb@col@command,
+ color environment/.store in=\kvtcb@col@environment,
+ color key/.store in=\kvtcb@col@key,
+ color value/.store in=\kvtcb@col@value,
+ color counter/.store in=\kvtcb@col@counter,
+ color length/.store in=\kvtcb@col@length,
+ color color/.store in=\kvtcb@col@color,
+ color definition/.style={color command={#1},color environment={#1},color key={#1},
+ color value={#1},color color={#1},color counter={#1},color length={#1}},
+ color option/.store in=\kvtcb@col@opt,
+ color hyperlink/.store in=\kvtcb@colhyper,
+ color frame/.store in=\kvtcb@colhyper,
+ index actual/.store in=\idx@actual,
+ index quote/.store in=\idx@quote,
+ index level/.store in=\idx@level,
+ index format/.store in=\idx@format,
+ index colorize/.is if=tcb@doc@colorize,%
+ index annotate/.is if=tcb@doc@annotate,%
+ index command/.code={\def\kvtcb@index@command##1{#1{##1}}},%
+ index command name/.code={\def\kvtcb@index@command##1{\index[#1]{##1}}},%
+ doc left/.dimstore in=\kvtcb@doc@left,
+ doc right/.dimstore in=\kvtcb@doc@right,
+ doc left indent/.dimstore in=\kvtcb@doc@indentleft,
+ doc right indent/.dimstore in=\kvtcb@doc@indentright,
+ doc head command/.style={doc@head@command/.style={#1}},
+ doc head environment/.style={doc@head@environment/.style={#1}},
+ doc head key/.style={doc@head@key/.style={#1}},
+ doc head/.style={doc head command={#1},doc head environment={#1},doc head key={#1}},
+ before doc body command/.store in=\kvtcb@doc@body@command@before,
+ after doc body command/.store in=\kvtcb@doc@body@command@after,
+ before doc body environment/.store in=\kvtcb@doc@body@environment@before,
+ after doc body environment/.store in=\kvtcb@doc@body@environment@after,
+ before doc body key/.store in=\kvtcb@doc@body@key@before,
+ after doc body key/.store in=\kvtcb@doc@body@key@after,
+ before doc body/.style={before doc body command={#1},before doc body environment={#1},before doc body key={#1}},
+ after doc body/.style={after doc body command={#1},after doc body environment={#1},after doc body key={#1}},
+ doc description/.store in=\kvtcb@doc@description,%
+ doc into index/.is if=tcb@doc@toindex,%
+ doc updated/.style={before upper={\tcbdocmarginnote{\tcbdocupdated{#1}}}},
+ doc new/.style={before upper={\tcbdocmarginnote{\tcbdocnew{#1}}}},
+ doc new and updated/.style 2 args={before upper={\tcbdocmarginnote{\tcbdocnew{#1}\\\tcbdocupdated{#2}}}},
+ doc marginnote/.style={doc@marginnote/.style={#1}},
+ keywords bold/.is choice,%
+ keywords bold/.default=true,%
+ keywords bold/true/.code={\let\tcb@doc@bfseries\bfseries},
+ keywords bold/false/.code={\let\tcb@doc@bfseries\mdseries},
+}
+
+
+% styles
+\tcbset{
+ docexample/.style={colframe=ExampleFrame,colback=ExampleBack,
+ before skip=\medskipamount,after skip=\medskipamount,
+ fontlower=\footnotesize},
+ documentation minted language=latex,
+ documentation minted style=,
+ documentation minted options={tabsize=2,fontsize=\small},
+ index default settings/.style={index actual={@},index quote={"},index level={!}},
+ index german settings/.style={index actual={=},index quote={!},index level={>}},
+ english language/.code={\tcbset{doclang/.cd,
+ color=color,colors=Colors,
+ counter=counter,counters=Counters,
+ environment content=environment content,
+ environment=environment,environments=Environments,
+ index=Index,
+ key=key,keys=Keys,
+ length=length,lengths=Lengths,
+ new=New,
+ pageshort={P.},
+ updated=Updated,
+ value=value,values=Values}},
+}
+
+\AtBeginDocument{%
+ \csname tcb@doc@index@\idx@format\endcsname%
+ \hypersetup{
+ citecolor=\kvtcb@colhyper,
+ linkcolor=\kvtcb@colhyper,
+ urlcolor=\kvtcb@colhyper,
+ filecolor=\kvtcb@colhyper,
+ menucolor=\kvtcb@colhyper
+}}
+
+\def\dispExample{\tcb@layer@pushup\tcbset{docexample}\begingroup\tcbwritetemp}
+
+\def\enddispExample{%
+ \endtcbwritetemp\endgroup%
+ \begin{tcolorbox}%
+ \tcb@doc@usetemplisting%
+ \tcblower%
+ \tcbusetemp%
+ \end{tcolorbox}%
+}
+
+\newenvironment{dispExample*}[1]{%
+ \tcb@layer@pushup\tcbset{docexample,#1}\begingroup\tcbwritetemp%
+ }{\enddispExample}
+
+\def\dispListing{\tcb@layer@pushup\tcbset{docexample}\begingroup\tcbwritetemp}
+
+\def\enddispListing{%
+ \endtcbwritetemp\endgroup%
+ \begin{tcolorbox}%
+ \tcb@doc@usetemplisting%
+ \end{tcolorbox}%
+}
+
+\newenvironment{dispListing*}[1]{%
+ \tcb@layer@pushup\tcbset{docexample,#1}\begingroup\tcbwritetemp%
+ }{\enddispListing}
+
+% index auxiliary macros
+\def\tcb@Index@Print@CA#1#2#3{%
+ \iftcb@doc@colorize\textcolor{#2}{\tcb@scantokens{#1}}\else\tcb@scantokens{#1}\fi%
+ \iftcb@doc@annotate\ #3\fi%
+}
+
+\def\tcb@Index@Print@C#1#2{%
+ \iftcb@doc@colorize\textcolor{#2}{\tcb@scantokens{#1}}\else\tcb@scantokens{#1}\fi%
+}
+
+\def\tcb@Index@Print@ComCA#1#2#3{%
+ \iftcb@doc@colorize\textcolor{#2}{\tcb@cs{#1}}\else\tcb@cs{#1}\fi%
+ \iftcb@doc@annotate\ #3\fi%
+}
+
+\def\tcb@Index@Print@ComC#1#2{%
+ \iftcb@doc@colorize\textcolor{#2}{\tcb@cs{#1}}\else\tcb@cs{#1}\fi%
+}
+
+\newrobustcmd{\tcbIndexPrintComC}[1]{\tcb@Index@Print@ComC{#1}{\kvtcb@col@command}}
+\def\tcb@Print@Com#1{\textcolor{\kvtcb@col@command}{\tcb@doc@bfseries\tcb@cs{#1}}}
+
+\newrobustcmd{\tcbIndexPrintEnvCA}[1]{\tcb@Index@Print@CA{#1}{\kvtcb@col@environment}{\kvtcb@text@env}}
+\newrobustcmd{\tcbIndexPrintEnvC}[1]{\tcb@Index@Print@C{#1}{\kvtcb@col@environment}}
+\def\tcb@Print@Env#1{\textcolor{\kvtcb@col@environment}{\tcb@doc@bfseries\tcb@scantokens{#1}}}
+
+\newrobustcmd{\tcbIndexPrintKeyCA}[1]{\tcb@Index@Print@CA{#1}{\kvtcb@col@key}{\kvtcb@text@key}}
+\newrobustcmd{\tcbIndexPrintKeyC}[1]{\tcb@Index@Print@C{#1}{\kvtcb@col@key}}
+\def\tcb@Print@Key#1{\textcolor{\kvtcb@col@key}{\tcb@doc@bfseries\tcb@scantokens{#1}}}
+
+\newrobustcmd{\tcbIndexPrintValCA}[1]{\tcb@Index@Print@CA{#1}{\kvtcb@col@value}{\kvtcb@text@value}}
+\newrobustcmd{\tcbIndexPrintValC}[1]{\tcb@Index@Print@C{#1}{\kvtcb@col@value}}
+\def\tcb@Print@Val#1{\textcolor{\kvtcb@col@value}{\tcb@doc@bfseries\tcb@scantokens{#1}}}
+
+\newrobustcmd{\tcbIndexPrintColCA}[1]{\tcb@Index@Print@CA{#1}{\kvtcb@col@color}{\kvtcb@text@color}}
+\newrobustcmd{\tcbIndexPrintColC}[1]{\tcb@Index@Print@C{#1}{\kvtcb@col@color}}
+\def\tcb@Print@Col#1{\textcolor{\kvtcb@col@color}{\tcb@doc@bfseries\tcb@scantokens{#1}}}
+
+\newrobustcmd{\tcbIndexPrintCountCA}[1]{\tcb@Index@Print@CA{#1}{\kvtcb@col@counter}{\kvtcb@text@counter}}
+\newrobustcmd{\tcbIndexPrintCountC}[1]{\tcb@Index@Print@C{#1}{\kvtcb@col@counter}}
+\def\tcb@Print@Count#1{\textcolor{\kvtcb@col@counter}{\tcb@doc@bfseries\tcb@scantokens{#1}}}
+
+\newrobustcmd{\tcbIndexPrintLenCA}[1]{\tcb@Index@Print@ComCA{#1}{\kvtcb@col@length}{\kvtcb@text@length}}
+\newrobustcmd{\tcbIndexPrintLenC}[1]{\tcb@Index@Print@ComC{#1}{\kvtcb@col@length}}
+\def\tcb@Print@Len#1{\textcolor{\kvtcb@col@length}{\tcb@doc@bfseries\tcb@cs{#1}}}
+
+\def\tcb@index@Com#1{\iftcb@doc@toindex\kvtcb@index@command{#1\idx@actual\tcbIndexPrintComC{#1}}\fi}
+\def\tcb@index@Env#1{\iftcb@doc@toindex\kvtcb@index@command{#1\idx@actual\tcbIndexPrintEnvCA{#1}}\kvtcb@index@command{\kvtcb@text@envs\idx@level#1\idx@actual\tcbIndexPrintEnvC{#1}}\fi}
+\def\tcb@index@Key#1{\iftcb@doc@toindex\kvtcb@index@command{#1\idx@actual\tcbIndexPrintKeyCA{#1}}\kvtcb@index@command{\kvtcb@text@keys\idx@level#1\idx@actual\tcbIndexPrintKeyC{#1}}\fi}%
+\def\tcb@index@KeyPath#1#2{\iftcb@doc@toindex\kvtcb@index@command{#2\idx@actual\tcbIndexPrintKeyCA{#2}}\kvtcb@index@command{\kvtcb@text@keys\idx@level#1\idx@actual\tcbIndexPrintKeyC{/#1/}\idx@level#2\idx@actual\tcbIndexPrintKeyC{#2}}\fi}%
+\def\tcb@index@Val#1{\iftcb@doc@toindex\kvtcb@index@command{#1\idx@actual\tcbIndexPrintValCA{#1}}\kvtcb@index@command{\kvtcb@text@values\idx@level#1\idx@actual\tcbIndexPrintValC{#1}}\fi}
+\def\tcb@index@Col#1{\iftcb@doc@toindex\kvtcb@index@command{#1\idx@actual\tcbIndexPrintColCA{#1}}\kvtcb@index@command{\kvtcb@text@colors\idx@level#1\idx@actual\tcbIndexPrintColC{#1}}\fi}
+\def\tcb@index@Count#1{\iftcb@doc@toindex\kvtcb@index@command{#1\idx@actual\tcbIndexPrintCountCA{#1}}\kvtcb@index@command{\kvtcb@text@counters\idx@level#1\idx@actual\tcbIndexPrintCountC{#1}}\fi}
+\def\tcb@index@Len#1{\iftcb@doc@toindex\kvtcb@index@command{#1\idx@actual\tcbIndexPrintLenCA{#1}}\kvtcb@index@command{\kvtcb@text@lengths\idx@level#1\idx@actual\tcbIndexPrintLenC{#1}}\fi}
+
+\def\brackets#1{{\ttfamily\char`\{}#1{\ttfamily\char`\}}}
+
+\newenvironment{tcb@manual@entry}{\begin{list}{}{%
+ \setlength{\leftmargin}{\kvtcb@doc@left}%
+ \setlength{\itemindent}{0pt}%
+ \setlength{\itemsep}{0pt}%
+ \setlength{\parsep}{0pt}%
+ \setlength{\rightmargin}{\kvtcb@doc@right}%
+ }\item}{\end{list}}
+
+\def\tcb@manual@top#1{\itemsep=0pt\parskip=0pt\item\strut{#1}\par\topsep=0pt}
+
+\def\tcb@doc@do@description{%
+ \ifx\kvtcb@doc@description\@empty\else\tcblower\raggedleft(\kvtcb@doc@description)\fi%
+}
+
+\newtcolorbox{tcb@doc@head}[1]{blank,colback=white,colframe=white,
+ code={\tcbdimto\tcb@temp@grow@left{-\kvtcb@doc@indentleft}%
+ \tcbdimto\tcb@temp@grow@right{-\kvtcb@doc@indentright}},
+ grow to left by=\tcb@temp@grow@left,%
+ grow to right by=\tcb@temp@grow@right,
+ sidebyside,sidebyside align=top,
+ sidebyside gap=-\tcb@w@upper@real,
+ phantom=\phantomsection,%
+ enlarge bottom by=-0.2\baselineskip,#1}
+
+% main documentation environments
+\newenvironment{docCommand}[3][]{\tcbset{#1}%
+ \begin{tcb@manual@entry}%
+ \begin{tcb@doc@head}{doc@head@command}%
+ \tcb@Print@Com{#2}\tcb@index@Com{#2}\protected@edef\@currentlabel{\noexpand\tcb@cs{#2}}\label{com:#2}{\ttfamily #3}%
+ \tcb@doc@do@description%
+ \end{tcb@doc@head}\nobreak\tcbset{before upper=}\kvtcb@doc@body@command@before\ignorespaces}%
+ {\ifvmode\else\unskip\fi\kvtcb@doc@body@command@after\end{tcb@manual@entry}}
+
+\newenvironment{docCommand*}{\bgroup\tcb@doc@toindexfalse\begin{docCommand}}{\end{docCommand}\egroup}
+
+\newenvironment{docEnvironment}[3][]{\tcbset{#1}%
+ \begin{tcb@manual@entry}%
+ \begin{tcb@doc@head}{doc@head@environment}%
+ \strut\cs{begin}\brackets{\tcb@Print@Env{#2}}\tcb@index@Env{#2}\protected@edef\@currentlabel{#2}\label{env:#2}{\ttfamily #3}\par%
+ \strut~~\meta{\kvtcb@text@envcontent}\par%
+ \strut\cs{end}\brackets{\tcb@Print@Env{#2}}%
+ \tcb@doc@do@description%
+ \end{tcb@doc@head}\nobreak\tcbset{before upper=}\kvtcb@doc@body@environment@before\ignorespaces}%
+ {\ifvmode\else\unskip\fi\kvtcb@doc@body@environment@after\end{tcb@manual@entry}}
+
+\newenvironment{docEnvironment*}{\bgroup\tcb@doc@toindexfalse\begin{docEnvironment}}{\end{docEnvironment}\egroup}
+
+\NewDocumentEnvironment{docKey}{ O{} +O{} m m +m }{\tcbset{#2,doc description={#5}}%
+ \begin{tcb@manual@entry}%
+ \begin{tcb@doc@head}{doc@head@key}%
+ \ifblank{#1}{%
+ \tcb@Print@Key{#3}\tcb@index@Key{#3}\protected@edef\@currentlabel{#3}\label{key:#3}{\ttfamily #4}%
+ }{%
+ \tcb@Print@Key{/#1/#3}%
+ \tcb@index@KeyPath{#1}{#3}\protected@edef\@currentlabel{/#1/#3}\label{key:/#1/#3}{\ttfamily #4}%
+ }%
+ \tcb@doc@do@description%
+ \end{tcb@doc@head}\nobreak\tcbset{before upper=}\kvtcb@doc@body@key@before\ignorespaces}%
+ {\ifvmode\else\unskip\fi\kvtcb@doc@body@key@after\end{tcb@manual@entry}}
+
+\newenvironment{docKey*}{\bgroup\tcb@doc@toindexfalse\begin{docKey}}{\end{docKey}\egroup}
+
+\def\tcbmakedocSubKey#1#2{%
+ \NewDocumentEnvironment{#1}{ O{} +O{} m m +m }{%
+ \ifblank{##1}{\def\tcb@key@path{#2}}{\def\tcb@key@path{#2/##1}}%
+ \begin{docKey}[\tcb@key@path][##2]{##3}{##4}{##5}}%
+ {\end{docKey}}%
+ \newenvironment{#1*}{\bgroup\tcb@doc@toindexfalse\begin{#1}}{\end{#1}\egroup}%
+}
+
+\DeclareDocumentCommand\docAuxCommand{sm}{%
+ \tcb@Print@Com{#2}%
+ \IfBooleanTF{#1}{}{\tcb@index@Com{#2}}%
+}
+
+\DeclareDocumentCommand\docAuxEnvironment{sm}{%
+ \tcb@Print@Env{#2}%
+ \IfBooleanTF{#1}{}{\tcb@index@Env{#2}}%
+}
+
+\DeclareDocumentCommand\docAuxKey{sO{}m}{%
+ \ifblank{#2}{%
+ \tcb@Print@Key{#3}%
+ \IfBooleanTF{#1}{}{\tcb@index@Key{#3}}%
+ }{%
+ \tcb@Print@Key{/#2/#3}%
+ \IfBooleanTF{#1}{}{\tcb@index@KeyPath{#2}{#3}}%
+}}
+
+\DeclareDocumentCommand\docColor{sm}{%
+ \tcb@Print@Col{#2}%
+ \IfBooleanTF{#1}{}{\tcb@index@Col{#2}}%
+}
+
+\DeclareDocumentCommand\docCounter{sm}{%
+ \tcb@Print@Count{#2}%
+ \IfBooleanTF{#1}{}{\tcb@index@Count{#2}}%
+}
+
+\DeclareDocumentCommand\docLength{sm}{%
+ \tcb@Print@Len{#2}%
+ \IfBooleanTF{#1}{}{\tcb@index@Len{#2}}%
+}
+
+\DeclareDocumentCommand\docValue{sm}{%
+ \tcb@Print@Val{#2}%
+ \IfBooleanTF{#1}{}{\tcb@index@Val{#2}}%
+}
+
+\setrefcountdefault{-1}
+\DeclareDocumentCommand\tcb@ref@doc{msm}{%
+ \hyperref[#1:#3]{\texttt{\ref*{#1:#3}}%
+ \IfBooleanTF{#2}{}{%
+ \ifnum\getpagerefnumber{#1:#3}=\thepage%
+ \else%
+ \textsuperscript{\ding{213}\,\kvtcb@text@pageshort\,\pageref*{#1:#3}}%
+ \fi}}%
+}
+
+\def\refCom{\tcb@ref@doc{com}}
+\def\refEnv{\tcb@ref@doc{env}}
+\def\refKey{\tcb@ref@doc{key}}
+
+\def\refAux#1{\textcolor{\kvtcb@colhyper}{\tcb@scantokens{#1}}}
+\def\refAuxcs#1{\textcolor{\kvtcb@colhyper}{\tcb@cs{#1}}}
+
+\newenvironment{absquote}
+ {\list{}{\leftmargin2cm\rightmargin\leftmargin}%
+ \item\relax\footnotesize}
+ {\endlist}
+
+\newcommand{\tcbdocmarginnote}[2][]{%
+ \marginnote{%
+ \begin{tcolorbox}[enhanced jigsaw,size=fbox,boxrule=1pt,leftrule=0pt,rightrule=0pt,
+ arc=0pt,outer arc=1pt,boxsep=1pt,top=1pt,bottom=1pt,
+ nobeforeafter,width=\marginparwidth,
+ colframe=red!50!white,colback=red!25!yellow!5!white,fontupper=\scriptsize,
+ if odd page or oneside={flushright upper}{flushleft upper},
+ doc@marginnote,#1]#2\end{tcolorbox}}}
+
+\newcommand*{\tcbdocnew}[1]{\kvtcb@text@new: #1}
+\newcommand*{\tcbdocupdated}[1]{\kvtcb@text@updated: #1}
+
+%--- index macros taken from pgfmanual-en-macros
+\def\tcb@doc@index@pgf@{%
+ \ifdefined\c@IndexColumns%
+ \c@IndexColumns=2%
+ \fi%
+ \def\theindex{\@restonecoltrue
+ \columnseprule \z@ \columnsep 29\p@
+ \twocolumn[\index@prologue]%
+ \parindent -30pt%
+ \columnsep 15pt%
+ \parskip 0pt plus 1pt%
+ \leftskip 30pt%
+ \rightskip 0pt plus 2cm%
+ \small%
+ \def\@idxitem{\par}%
+ \let\item\@idxitem\ignorespaces}
+ \def\endtheindex{\onecolumn}%
+ \def\noindexing{\let\index=\@gobble}%
+}
+
+\def\tcb@doc@index@pgfsection{%
+ \def\index@prologue{\section*{\kvtcb@text@index}\addcontentsline{toc}{section}{\kvtcb@text@index}%
+ \par\noindent%
+ }%
+ \tcb@doc@index@pgf@%
+}
+
+\def\tcb@doc@index@pgfchapter{%
+ \def\index@prologue{\ifdefined\phantomsection\phantomsection\fi\@makeschapterhead{\kvtcb@text@index}\addcontentsline{toc}{chapter}{\kvtcb@text@index}}%
+ \tcb@doc@index@pgf@%
+}
+
+\let\tcb@doc@index@pgf=\tcb@doc@index@pgfsection%
+
+\def\tcb@doc@index@doc{%
+ \let\tcb@index@Com=\SpecialMainIndex%%
+ \let\tcb@index@Env=\SpecialMainEnvIndex%
+ \tcbset{index german settings}%
+ \EnableCrossrefs%
+ \PageIndex%
+}
+
+\def\tcb@doc@index@off{}%
+
+\tcbset{%
+ reset@documentation/.style={%
+ },
+ documentation listing style=tcbdocumentation,
+ doc left=2em,
+ doc right=0pt,
+ doc left indent=-2em,
+ doc right indent=0pt,
+ doc head=,
+ before doc body=,
+ after doc body=,
+ doc description=,
+ doc into index=true,
+ doc marginnote=,
+ initialize@reset=reset@documentation,
+ color option=Option,
+ color definition=Definition,
+ color hyperlink=Hyperlink,
+ index command=\index,%
+ index format=pgf,
+ index default settings,
+ index colorize=false,
+ index annotate=true,
+ english language,
+ keywords bold,
+}
+
+% deprecated
+\tcbset{
+ before example/.store in=\kvtcb@beforeexample,
+ after example/.store in=\kvtcb@afterexample,
+ before example=\par\smallskip,
+ after example=,
+}