summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/tcolorbox
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/tcolorbox
Initial commit
Diffstat (limited to 'macros/latex/contrib/tcolorbox')
-rw-r--r--macros/latex/contrib/tcolorbox/Basilica_5.pngbin0 -> 22407 bytes
-rw-r--r--macros/latex/contrib/tcolorbox/CHANGES1086
-rw-r--r--macros/latex/contrib/tcolorbox/README95
-rw-r--r--macros/latex/contrib/tcolorbox/blueshade.pngbin0 -> 62882 bytes
-rw-r--r--macros/latex/contrib/tcolorbox/crinklepaper.pngbin0 -> 21663 bytes
-rw-r--r--macros/latex/contrib/tcolorbox/goldshade.pngbin0 -> 76829 bytes
-rw-r--r--macros/latex/contrib/tcolorbox/lichtspiel.jpgbin0 -> 35224 bytes
-rw-r--r--macros/latex/contrib/tcolorbox/pink_marble.pngbin0 -> 15166 bytes
-rw-r--r--macros/latex/contrib/tcolorbox/tcbbreakable.code.tex1029
-rw-r--r--macros/latex/contrib/tcolorbox/tcbdocumentation.code.tex509
-rw-r--r--macros/latex/contrib/tcolorbox/tcbexternal.code.tex286
-rw-r--r--macros/latex/contrib/tcolorbox/tcbfitting.code.tex397
-rw-r--r--macros/latex/contrib/tcolorbox/tcbhooks.code.tex123
-rw-r--r--macros/latex/contrib/tcolorbox/tcblistings.code.tex97
-rw-r--r--macros/latex/contrib/tcolorbox/tcblistingscore.code.tex332
-rw-r--r--macros/latex/contrib/tcolorbox/tcblistingsutf8.code.tex33
-rw-r--r--macros/latex/contrib/tcolorbox/tcbmagazine.code.tex185
-rw-r--r--macros/latex/contrib/tcolorbox/tcbminted.code.tex73
-rw-r--r--macros/latex/contrib/tcolorbox/tcbposter.code.tex274
-rw-r--r--macros/latex/contrib/tcolorbox/tcbprocessing.code.tex79
-rw-r--r--macros/latex/contrib/tcolorbox/tcbraster.code.tex242
-rw-r--r--macros/latex/contrib/tcolorbox/tcbskins.code.tex1899
-rw-r--r--macros/latex/contrib/tcolorbox/tcbskinsjigsaw.code.tex229
-rw-r--r--macros/latex/contrib/tcolorbox/tcbtheorems.code.tex175
-rw-r--r--macros/latex/contrib/tcolorbox/tcbvignette.code.tex320
-rw-r--r--macros/latex/contrib/tcolorbox/tcbxparse.code.tex288
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox-example-poster.pdfbin0 -> 273214 bytes
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox-example-poster.tex177
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox-example.pdfbin0 -> 456409 bytes
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox-example.tex230
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.pdfbin0 -> 440925 bytes
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.tex1383
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.abstract.tex116
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.beamer.tex210
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.bib203
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.breakable.tex842
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.coremacros.tex304
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.coreoptions.tex4392
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.documentation.tex1023
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.external.tex644
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.filling.tex522
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.fitting.tex540
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.graphics.tex198
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.hooks.tex577
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.index.tex3
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.initoptions.tex345
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.intro.tex225
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.listings.tex1567
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.magazine.tex516
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.picturecredits.tex33
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.poster.tex608
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.quickref.tex118
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.raster.tex946
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.recording.tex187
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.references.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.s_main.sty272
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.s_snippet.sty183
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.sidebyside.tex408
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.skins.tex4936
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.technical.tex769
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.theorems.tex1065
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.verbatim.tex117
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.vignette.tex760
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.xparse.tex589
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.pdfbin0 -> 7938126 bytes
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.sty2216
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.tex95
67 files changed, 35074 insertions, 0 deletions
diff --git a/macros/latex/contrib/tcolorbox/Basilica_5.png b/macros/latex/contrib/tcolorbox/Basilica_5.png
new file mode 100644
index 0000000000..1a9f191001
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/Basilica_5.png
Binary files differ
diff --git a/macros/latex/contrib/tcolorbox/CHANGES b/macros/latex/contrib/tcolorbox/CHANGES
new file mode 100644
index 0000000000..721d974d1e
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/CHANGES
@@ -0,0 +1,1086 @@
+%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%%
+%% -------------------------------------------------------------------------------------------
+%% 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
+%%
+
+(2006-2011): pre publication usage
+
+version 1.00 (2011/12/08): initial public release
+
+version 1.01 (2012/01/26):
+- dates amended to \RequirePackage(s)
+- provision of the tcolorbox.tds.zip file for easier installation
+
+version 1.02 (2012/02/15)
+- documentation language changed from German to English
+- small correction of the theorem title line appearance
+
+version 1.10 (2012/03/01)
+- tcblatex style for listings changed (nolol added)
+- improved hyperref support
+- new keys parskip and noparskip
+- source code of the documentation added
+- new library 'documentation' to support LaTeX documentations
+ with several library commands, environments and keys (see documentation)
+
+version 1.20 (2012/03/16)
+- new geometry keys:
+ 'lefttitle', 'leftupper', 'leftlower', 'righttitle', 'rightupper', 'rightlower'
+ and implementation changed for 'left' and 'right'
+- implementation for tcolorbox changed (adaption to height options)
+- new fixed height option keys:
+ 'natural height', 'height', 'equal height group', 'minimum for equal height group',
+ 'space', 'space to upper', 'space to lower', 'space to both', 'split',
+ 'valign', 'valign lower',
+ 'adjusted title'
+- new bounding box option keys:
+ 'enlarge top by', 'enlarge bottom by', 'enlarge left by', 'enlarge right by',
+ 'toggle enlargement'
+- preparations for a future skin changing option implemented
+- commands \brackets and \docAuxCommand added to the documentation library
+- documentation rearranged
+
+version 1.30 (2012/04/20)
+- several internal code changes to provide a 'skin' exchange mechanism
+- new keys for the core package:
+ 'frame engine', 'interior titled engine', 'interior engine', 'segmentation engine'
+ 'skin', 'graphical environment', 'geometry nodes', 'colupper', 'collower'
+- tcolorbox now defined as 'long' macro
+- new keys for the library 'listings':
+ 'comment', 'listing and comment', 'comment and listing'
+- new library 'skins' with the skins
+ 'standard', 'enhanced', 'freelance', 'bicolor', 'beamer', 'widget'
+- keys for the library 'skins':
+ 'frame style', 'interior style', 'segmentation style'
+ 'frame code', 'interior titled code', 'interior code', 'segmentation code',
+ 'colbacklower'
+
+version 2.00 (2013/03/01)
+- breaking news: the new library 'breakable' adds breaking support to tcolorbox.
+- e-TeX now used instead of calc
+- new key 'adjust text' and new implementation for 'adjusted title'
+- new geometry keys:
+ 'toprule', 'toprule at break', 'bottomrule', 'bottomrule at break',
+ 'leftrule', 'rightrule', 'titlerule', 'outer arc', 'auto outer arc',
+ 'toptitle', 'bottomtitle'
+- new bounding box keys:
+ 'enlarge top at break by', 'enlarge bottom at break by'
+- new overlay keys:
+ 'overlay', 'no overlay', 'overlay broken', 'overlay unbroken',
+ 'overlay first', 'overlay middle', 'overlay last',
+ 'overlay unbroken and first', 'overlay middle and last'
+- new key: 'parbox' to change text behaviour
+- new library 'breakable' for breakable boxes with the new keys:
+ 'breakable', 'unbreakable', 'title after break', 'notitle after break',
+ 'adjusted title after break', 'lines before break', 'shrink break goal'
+- new keys for the 'skins' library
+ 'skin first', 'skin middle', 'skin last', 'title engine', 'pathfirst',
+ 'pathmiddle', 'pathlast', 'title style', 'title code', 'enhancedfirst',
+ 'enhancedmiddle', 'enhancedlast', 'enhanced', 'marker', 'bicolor',
+ 'bicolorfirst', 'bicolormiddle', 'bicolorlast', 'beamer',
+ 'beamerfirst', 'beamermiddle', 'beamerlast', 'draft', 'freelance', 'standard'
+- NOTE: skins 'beamer' and 'widget' changed
+ use the new style options 'beamer' and 'widget' to get the old appearance
+- new watermark keys:
+ 'watermark text', 'watermark text on', 'watermark graphics',
+ 'watermark graphics on', 'watermark tikz', 'watermark tikz on',
+ 'no watermark', 'watermark opacity', 'watermark color',
+ 'watermark zoom', 'watermark stretch'
+
+version 2.01 (2013/03/07)
+- bug fix: superfluous vertical space for a breakable box which appeared after a page break
+- bug fix: height computation error when a broken boxed starts with a segmentation line
+- new key for the 'listings' library:
+ 'listing inputencoding'
+- new library 'listingsutf8' as variant of 'listings' with new key
+ 'listing utf8'
+- keys 'toprule at break', 'bottomrule at break',
+ 'enlarge top at break by', 'enlarge bottom at break by'
+ moved from core package to 'breakable' library.
+- new keys for the 'breakable' library:
+ 'topsep at break', 'bottomsep at break', 'pad before break',
+ 'pad after break', 'pad at break'
+
+version 2.02 (2013/03/13)
+- minor bug fix: segmentation line of 'enhanced' now matches 'standard'
+- new macro '\tcbox' to draw a colorbox fitted to the content width
+- new key 'autoparskip' to detect usage of package parskip automatically
+- new key 'nobeforeafter'
+- new macro '\tcbline' in the 'skins' library to draw 'just lines'
+- new key 'colbacktitle' for the 'skins' library
+
+version 2.10 (2013/04/09)
+- bug fix: \tcbox ignored font settings
+- outdated documentation in German removed from package
+- new core package keys:
+ 'oversize', 'tcbox raise', 'tcbox raise base',
+ 'before title', 'after title', 'before upper', 'after upper', 'before lower',
+ 'after lower', 'center title', 'center upper', 'center lower',
+ 'tabularx*', 'tabularx', 'tikz upper', 'tikz lower',
+ 'shrink tight', 'extrude left by', 'extrude right by', 'extrude top by',
+ 'extrude bottom by', 'extrude by'
+- the 'theorems' library now loads 'amsmath'
+- new macros for the 'theorems' library:
+ '\tcboxmath', '\tcbhighmath'
+- new keys for the 'theorems' library:
+ 'math upper', 'math lower', 'math', 'highlight math', 'highlight math style',
+ 'ams equation upper', 'ams equation lower', 'ams equation', 'ams equation* upper',
+ 'ams equation* lower', 'ams equation*', 'ams align upper', 'ams align lower',
+ 'ams align', 'ams align* upper', 'ams align* lower', 'ams align*',
+ 'ams gather upper', 'ams gather lower', 'ams gather', 'ams gather* upper',
+ 'ams gather* lower', 'ams gather*',
+ 'ams nodisplayskip upper', 'ams nodisplayskip lower', 'ams nodisplayskip'
+- new library 'hooks' for hook options with the new keys:
+ 'before upper app', 'before upper pre', 'after upper app', 'after upper pre',
+ 'before lower app', 'before lower pre', 'after lower app', 'after lower pre',
+ 'before title app', 'before title pre', 'after title app', 'after title pre',
+ 'before app', 'before pre', 'after app', 'after pre',
+ 'overlay unbroken app', 'overlay unbroken pre', 'overlay first app', 'overlay first pre',
+ 'overlay middle app', 'overlay middle pre', 'overlay last app', 'overlay last pre',
+ 'overlay app', 'overlay pre', 'overlay broken app', 'overlay broken pre',
+ 'overlay unbroken and first app', 'overlay unbroken and first pre',
+ 'overlay middle and last app', 'overlay middle and last pre',
+ 'watermark tikz app', 'watermark tikz pre', 'watermark tikz app on', 'watermark tikz pre on',
+ 'watermark graphics app', 'watermark graphics pre', 'watermark graphics app on', 'watermark graphics pre on',
+ 'watermark text app', 'watermark text pre', 'watermark text app on', 'watermark text pre on',
+ 'frame code app', 'frame code pre', 'interior titled code app', 'interior titled code pre',
+ 'interior code app', 'interior code pre', 'segmentation code app', 'segmentation code pre',
+ 'title code app', 'title code pre'
+- colorization of source code snippets in the documentation
+
+version 2.20 (2013/04/17)
+- bug fix: problem with breaking boxes after headings
+- new feature: support for boxes with side by side content
+- new keys:
+ 'sidebyside', 'sidebyside align', 'sidebyside gap',
+ 'lefthand width', 'righthand width', 'lefthand ratio', 'righthand ratio'
+- key 'nofloat' documented
+- new keys for the 'listings' library:
+ 'listing side text', 'text side listing'
+ 'listing outside text', 'text outside listing'
+- new keys for the 'skins' library:
+ 'frame hidden', 'interior hidden', 'segmentation hidden', 'title hidden'
+- new environments for the 'documentation' library:
+ 'dispExample*', 'dispListing*'
+- the default style for 'highlight math' is changed to have no title
+- minor change of internal width computation
+- minor internal fixes
+- slight overhaul of the documentation
+
+version 2.21 (2013/04/23)
+- bug fix: \tcbox and 'sidebyside' needed 'breakable' library
+- bug fix: library 'tcbhooks' relied on etoolbox package
+- bug fix: breaking boxes between upper part and box frame
+- new macro '\newtcolorbox'
+- new macro '\newtcblisting' for the 'listings' library
+- new key 'code'
+- documentation corrections and extensions
+
+version 2.22 (2013/05/15)
+- bug fix: text color bleeded out of the box in some cases
+- bug fix: breakable boxes were too large in some cases (leading to blank pages)
+- bug fix: breaking boxes produced empty boxes in some cases
+- documentation forgot naming package 'colortbl' for the 'tabularx' option
+- new feature: breakable boxes allow footnotes now (like minipages)
+- new macro '\newtcbox'
+
+version 2.30 (2013/06/04)
+- bug fix: handling of 'before' and 'after' for \tcbox corrected
+- \tcbline now also works for centered environments
+- implementation for \tcbox made more efficient
+- new capture mode for automated content fit by font size adjustment
+ with the new macros '\tcboxfit' and '\newtcboxfit'
+ and the new keys 'fit', 'fit to', 'fit to height', 'fit basedim', 'fit skip',
+ 'fit maxstep'
+- new keys 'baseline', 'capture', 'hbox', 'minipage'
+- new stackable borderlines with the 'skins' library:
+ 'borderline', 'no borderline'
+- new keys for the 'skins' library:
+ 'enhanced standard', 'blank'
+- new key 'index format' for the 'documentation' library
+
+version 2.31 (2013/06/18)
+- several internal changes
+- library loading mechanism revisited
+- internal label change for '\tcbmaketheorem'
+- new library options 'most' and 'all'
+- \tcbline now also works for ragged environments
+- new keys:
+ 'flushleft title', 'flushleft upper', 'flushleft lower',
+ 'flushright title', 'flushright upper', 'flushright lower'
+- new key 'no listing options' for the 'listings' library
+- new shadow features for the 'skins' library with the options:
+ 'shadow', 'fuzzy shadow', 'drop shadow', 'drop fuzzy shadow', 'halo', 'fuzzy halo'
+- shadows for the 'beamer' skin changed to fuzzy
+- new library 'fitting' for the content fit operations.
+ NOTE: '\tcboxfit' and the fit options introduced in version 2.30 are moved
+ to this new library
+- the fit algorithm is completey revisited and extended
+- new macro '\tcbfontsize' ('fitting library') for relative font sizes
+- new keys for the 'fitting' library:
+ 'fit fontsize macros', 'fit height plus', 'fit width plus',
+ 'fit width from', 'fit height from'
+
+version 2.32 (2013/06/23)
+- bug fix: 'ams nodisplayskip lower' was applied to upper.
+- new option 'check odd page'
+- new environments for the 'skins' library:
+ 'tcbclipinterior', 'tcbclipframe', 'tcbcliptitle'
+- new keys for the 'skins' library:
+ 'watermark overzoom', 'clip watermark'
+ 'clip title', 'clip upper', 'clip lower'
+- NOTE: watermarks are now clipped by default.
+ To get the old behaviour add the option 'clip watermark=false'
+
+version 2.33 (2013/07/04)
+- new options 'phantom', 'step and label', 'nophantom',
+ 'lower separated', 'reset', 'toggle left and right'
+- 'highlight math' sets 'notitle,nophantom' automatically
+- hyper anchor setting for theorems and LaTeX examples improved
+- new key 'shield externalize' for externalization
+- additional empty-first-box test for breakable boxes
+- new key 'enlargepage' for fine-tuning breakable boxes
+- parameter added to option 'oversize'
+- option 'toggle enlargement' has a default value 'evenpage' now
+
+version 2.40 (2013/07/15)
+- bug fix: wrong footnote text width for breakable boxes
+- bug fix: watermarks were influenced by baseline settings
+- package etoolbox is now loaded by default
+- 'phantom' changed to be stackable (!)
+- introducing the new initialization option type for easy
+ numbering and list generation. New options:
+ 'use counter', 'auto counter', 'use counter from',
+ 'no counter', 'number within', 'number format', 'number freestyle',
+ 'list inside', 'list type'
+- '\newtcolorbox' and 'newtcbox' take initialization options now
+- new macros '\tcblistof', '\tcbsetmanagedlayers'
+- introducing the layered box concept for boxes in boxes improvement:
+ * boxes inside boxes are automatically reset to default values
+ * new option 'every box', 'every box on layer x', 'every box on higher layers'
+ * support for footnotes for boxes in boxes (default: up to layer 4)
+- new options 'step', 'label', 'list entry', 'add to list'
+- library 'listings':
+ * '\newtcblisting' takes initialization options now
+ * new macro '\newtcbinputlisting'
+- library 'theorems':
+ * '\tcbmaketheorem' takes initialization options now
+ * new macro '\newtcbtheorem'
+- library 'fitting':
+ * 'newtcboxfit' takes initialization options now
+- library 'documentation':
+ * the \ref... macros suppress the page numbers now if on the same page
+ * new macros '\refCom*', '\refEnv*', '\refKey*'
+ * docCommand and docEnvironment take options now
+
+version 2.41 (2013/07/23)
+- NOTE: The deprecated macro '\tcbmaketheorem' is redefined to its signature
+ of v2.33 and before to ensure backward compatibility. This may break code
+ written with v2.40 using '\tcbmaketheorem'.
+- minor internal improvements
+- support for the cleveref package with
+ * new initialization options 'crefname', 'Crefname'
+ * new options 'label type', 'no label type'
+- library 'theorems':
+ * new options: 'separator sign', 'separator sign colon', 'separator sign dash'
+- library 'listings':
+ * capture mode can be changed for 'tcblisting' and '\tcbinputlisting'
+ * new option: 'listing remove caption'
+
+version 2.50 (2013/07/29)
+- first line indent corrected for 'parbox=false'
+- minor internal improvements
+- new option keys
+ 'height plus', 'height from'
+- new library 'minted' with support for the minted package (Pygments support)
+ * new options 'minted language', 'minted options', 'minted style'
+- new library option 'many'
+- new common listings options:
+ 'listing engine'
+- library 'documentation':
+ * new options 'documentation minted style', 'documentation minted options'
+
+version 2.51 (2013/09/16)
+- bug fix: processing of 'initialization option keys' fixed
+ for \newtcbox, \newtcbinputlisting, and \newtcboxfit
+- bug fix: disturbing horizontal space in \tcboxfix removed
+- new macros '\renewtcolorbox', '\renewtcbox'
+- library 'skins':
+ * implementation for the skin families 'enhanced', 'beamer', and 'bicolor' changed
+ * break sequence changed for skin 'freelance'
+ * new skins: 'freelancefirst', 'freelancemiddle', 'freelancelast'
+ * new options: 'extend freelance', 'extend freelancefirst',
+ 'extend freelancemiddle', 'extend freelancelast',
+ 'drop midday shadow', 'drop fuzzy midday shadow'
+ * new environment 'tcbinvclipframe'
+- library 'listings':
+ * new macros '\renewtcblisting', '\renewtcbinputlisting'
+- library 'theorems':
+ * new macro '\renewtcbtheorem'
+- library 'fitting':
+ * new macro '\renewtcboxfit'
+- library 'documentation':
+ * new option 'documentation listing options'
+
+version 2.60 (2013/12/17)
+- new 'jigsaw' variants for the skins 'standard' and 'enhanced' for
+ advanced transparency and similar effects.
+- new package core skin 'standard jigsaw'
+- 'tabularx' and 'tabularx*' reset the arrayrulecolor to black after the table now.
+- option 'colbacktitle' moved from library 'skins' to package core
+- new options:
+ 'title filled', 'opacityupper', 'opacitylower', 'opacitytitle', 'opacityframe',
+ 'opacityback', 'opacitybacktitle', 'opacityfill', 'opacitytext','hyphenationfix',
+ 'standard jigsaw', 'enlarge by', 'grow to left by', 'grow to right by'
+- library 'skins':
+ * new skin: 'enhanced jigsaw', 'enhancedfirst jigsaw', 'enhancedmidle jigsaw',
+ 'enhancedlast jigsaw'
+ * marker style now based on 'enhancedmiddle jigsaw'
+ * new options:
+ 'enhanced jigsaw', 'tikz', 'tikz reset', 'show bounding box',
+ 'at begin tikz', 'at begin tikz reset', 'at end tikz', 'at end tikz reset',
+ 'rotate', 'scale', 'remember', 'remember as',
+ 'drop shadow southeast', 'drop shadow south', 'drop shadow southwest', 'drop shadow west',
+ 'drop shadow northwest', 'drop shadow north', 'drop shadow northeast', 'drop shadow east',
+ 'drop fuzzy shadow southeast', 'drop fuzzy shadow south', 'drop fuzzy shadow southwest',
+ 'drop fuzzy shadow west', 'drop fuzzy shadow northwest', 'drop fuzzy shadow north',
+ 'drop fuzzy shadow northeast','drop fuzzy shadow east',
+- library 'listings':
+ new options 'text above listing' and 'listing above text'
+- library 'theorems':
+ \newtcbtheorem creates an additional starred theorem environment
+- library 'fitting':
+ fit algorithm warning switched off by default.
+ new options:
+ 'fit warning'
+- library 'documentation': more values for 'index format'
+- documentation extended
+- major internal implementation changes and optimizations
+
+version 2.61 (2014/01/10)
+- bug fix: '@' was set as letter in some situations
+- typing error corrections
+- new macro \tcbsetforeverylayer
+- library 'skins':
+ * new macros and environments:
+ '\tcbstartdraftmode', '\tcbstopdraftmode', '\tcbinterruptdraftmode', '\tcbcontinuedraftmode'
+ * new skin: 'spartan'
+ * new options: 'spartan', 'draftmode'
+- library 'fitting':
+ * alternative fitting algorithms implemented (fontsize, areasize, hybrid, squeeze)
+ * new option: 'fit algorithm'
+
+version 2.70 (2014/02/06)
+- bug fix: global setting of 'before' or 'after' may produce errors or
+ side effects for layered boxes.
+- compatibility issue with TikZ 3.00 solved
+- new options:
+ 'detach title', 'attach title', 'attach title to upper',
+ 'tikznode upper', 'tikznode lower', 'tikznode'
+- library 'theorems':
+ * new options:
+ 'separator sign none', 'terminator sign', 'terminator sign colon',
+ 'terminator sign dash', 'terminator sign none', 'description delimiters',
+ 'description delimiters parenthesis', 'description delimiters none',
+ 'theorem name and number', 'theorem number and name', 'theorem name',
+ 'theorem style'
+- library 'documentation':
+ * re-implementation of the documenting environments
+ (may alter existing documents slightly)
+ * new environments:
+ 'docCommand*', 'docEnvironment*', 'docKey*'
+ * new commands:
+ '\docAuxCommand*', '\docAuxEnvironment', '\docAuxEnvironment*',
+ '\docValue', '\docValue*', '\docAuxKey', '\docAuxKey*',
+ '\docColor*', '\refAux', '\refAuxcs'
+ * new options:
+ 'doc left', 'doc right', 'doc left indent', 'doc right indent',
+ 'doc head', 'doc head command', 'doc head environment', 'doc head key',
+ 'doc description', 'doc into index', 'value', 'values'
+
+version 2.71 (2014/02/21)
+- bug fix: sidebyside setting with empty left hand side caused false positioning
+- new options:
+ 'external', 'remake'
+- library 'listings':
+ * new options:
+ 'comment side listing', 'listing side comment', 'comment above listing',
+ 'listing above comment', 'comment outside listing', 'listing outside comment',
+ 'image comment',
+- library 'documentation':
+ * automatic inclusion of the 'skins' library
+ * inclusion of 'makeidx' made dependent on the existence of '\printindex'
+ * new options:
+ 'keys', 'index colorize', 'index annotate',
+ 'color command', 'color environment', 'color key', 'color value', 'color color'
+
+version 2.72 (2014/03/18)
+- bug fix: mixing \newtcblisting with 'ams align' and similar options was not possible
+- bug fix: footnotes lost for 'listing outside text' and similar options
+- sidebyside and outside implementation slightly changed for beamer usage
+- bicolor skin respects 'opacityback' for the upper part now
+- new TikZ options:
+ 'fill image opacity', 'fill image options',
+ 'fill plain image', 'fill plain image*', 'fill stretch image', 'fill stretch image*',
+ 'fill overzoom image', 'fill overzoom image*', 'fill zoom image', 'fill zoom image*',
+ 'fill shrink image', 'fill shrink image*', 'fill tile image', 'fill tile image*'
+- library 'skins':
+ * new options:
+ 'frame style image', 'frame style tile', 'interior style image', 'interior style tile',
+ 'title style image', 'title style tile'
+- library 'listings':
+ * new options:
+ 'every listing line', 'every listing line*'
+
+version 2.80 (2014/03/31)
+- implementation changed for all '\newtcolorbox', '\newtcbox', etc., macros.
+- new option:
+ 'float*'
+- new TikZ option:
+ 'fill image scale'
+- library 'skins' new option:
+ 'watermark shrink'
+- new library 'xparse' with new commands:
+ '\DeclareTColorBox', '\NewTColorBox', '\RenewTColorBox', '\ProvideTColorBox',
+ '\DeclareTotalTColorBox', '\NewTotalTColorBox', '\RenewTotalTColorBox', '\ProvideTotalTColorBox',
+ '\DeclareTCBox', '\NewTCBox', '\RenewTCBox', '\ProvideTCBox',
+ '\DeclareTotalTCBox', '\NewTotalTCBox', '\RenewTotalTCBox', '\ProvideTotalTCBox',
+ '\DeclareTCBListing', '\NewTCBListing', '\RenewTCBListing', '\ProvideTCBListing',
+ '\DeclareTCBInputListing', '\NewTCBInputListing', '\RenewTCBInputListing', '\ProvideTCBInputListing',
+ '\DeclareTCBoxFit', '\NewTCBoxFit', '\RenewTCBoxFit', '\ProvideTCBoxFit',
+ '\DeclareTotalTCBoxFit', '\NewTotalTCBoxFit', '\RenewTotalTCBoxFit', '\ProvideTotalTCBoxFit',
+ '\tcboxverb'
+
+version 3.00 (2014/05/08)
+- bug fix: 'title code app', 'title code pre' changed wrong code
+- documentation corrections
+- implementation of graphical engines changed (!)
+- note: optical backward compatibility issues with breakable 'freelance' boxes possible
+- 'frame code' and similar options are moved from the 'skins' library to the core package
+- 'enlarge top at break by' and 'enlarge bottom at break by' moved from 'breakable' library to the core package
+- new macros:
+ '\tcbnewsubskin'
+- new options:
+ 'skin first is subskin of', 'skin middle is subskin of', 'skin last is subskin of',
+ 'enlarge top initially by', 'enlarge finally last by', 'overlay unbroken and last'
+ 'size', 'on line', 'varwidth upper',
+ 'frame empty', 'interior empty', 'interior titled empty', 'segmentation empty', 'title empty'
+- new TikZ options:
+ 'tcb fill frame', 'tcb fill interior', 'tcb fill title'
+ 'fill plain picture', 'fill stretch picture', 'fill overzoom picture',
+ 'fill zoom picture', 'fill shrink picture', 'fill tile picture', 'fill tile picture*'
+- library 'skins' new options (concerning 'underlay', 'finish' and 'boxed title'):
+ 'underlay unbroken', 'underlay first', 'underlay middle', 'underlay last',
+ 'underlay', 'underlay broken', 'underlay unbroken and first',
+ 'underlay middle and last', 'underlay unbroken and last',
+ 'no underlay unbroken', 'no underlay first',
+ 'no underlay middle', 'no underlay last', 'no underlay',
+ 'finish unbroken', 'finish first', 'finish middle', 'finish last',
+ 'finish', 'finish broken', 'finish unbroken and first',
+ 'finish middle and last', 'finish unbroken and last',
+ 'no finish unbroken', 'no finish first',
+ 'no finish middle', 'no finish last', 'no finish',
+ 'empty', 'blanker',
+ 'boxed title style', 'varwidth boxed title', 'varwidth boxed title*',
+ 'minipage boxed title', 'minipage boxed title*', 'tikznode boxed title',
+ 'hbox boxed title', 'boxtitle/xshift', 'boxtitle/yshift', 'boxtitle/yshifttext',
+ 'boxtitle/yshift*', 'attach boxed title to top left', 'attach boxed title to top center',
+ 'attach boxed title to top right', 'attach boxed title to bottom left',
+ 'attach boxed title to bottom center', 'attach boxed title to bottom right',
+- new engine and skin 'empty'
+- implementation of 'show bounding box' changed to be a border line.
+- library 'hooks' new options:
+ 'underlay unbroken pre', 'underlay first pre', 'underlay middle pre',
+ 'underlay last pre', 'underlay pre', 'underlay broken pre',
+ 'underlay unbroken and first pre', 'underlay middle and last pre',
+ 'underlay unbroken and last pre'
+ 'finish unbroken pre', 'finish first pre', 'finish middle pre',
+ 'finish last pre', 'finish pre', 'finish broken pre',
+ 'finish unbroken and first pre', 'finish middle and last pre',
+ 'finish unbroken and last pre'
+ 'overlay unbroken and last app', 'overlay unbroken and last pre'
+- library 'theorems':
+ * new options:
+ 'description color', 'description font', 'description formatter'
+
+version 3.01 (2014/05/13)
+- bug fix: 'parbox=false' plus 'breakable' had an unwanted indent
+- compatibility fix for tabularx 2014/04/22 v2.09
+
+version 3.02 (2014/05/13)
+- compatibility fix for tabularx 2014/04/22 v2.09 (again)
+
+version 3.03 (2014/05/16)
+- bug fix: some initialization option keys for \newtcblisting did not operate correctly
+- bug fix: boxed title shape 'title' was unknown in underlays
+- more boxed title example documented
+
+version 3.04 (2014/05/18)
+- compatibility fix for tabularx removed; compatible with tabularx 2014/05/13 v2.10
+- boxed title improvements:
+ * the 'title' node is accessible now from inside 'frame code' and 'interior code'
+ * new keys 'underlay boxed title', 'no underlay boxed title', 'underlay boxed title pre'
+ * documentation example updated
+
+version 3.05 (2014/05/28)
+- compatibility fix for the upcoming version 2.0 of the package minted
+- inner boxes are enforced to be unbreakable now
+- library 'breakable':
+ new key 'enforce breakable' (for breaking inner boxed deliberately)
+- library 'skins':
+ * new options:
+ 'lifted shadow', 'drop small lifted shadow', 'drop lifted shadow', 'drop large lifted shadow'
+
+version 3.10 (2014/07/23)
+- box breaking algorithm revised:
+ * breakable boxes now always have \noindent
+ * distance to preceeding text corrected
+ * interaction with floating objects fixed
+ * dimensioning of partial boxes improved
+ * splitting of an empty closing frame can now be avoided (depending on 'pad at break*')
+ * The upper total height limit for breakable boxes is extended from
+ about 16384pt to about 65536pt
+ * experimental code added (breakable=unlimited) for breakable boxes
+ without height limit besides memory
+ * splitting boxes inside multicols environments supported (to a certain degree)
+ * limited orphan control added ('enlargepage flexible')
+- library 'breakable':
+ * new options:
+ 'break at', 'height fixed for', 'enlargepage flexible',
+ 'pad before break*', 'pad at break*'
+- Corners can be set individually now to be 'rounded' or 'sharp'
+ for all types of boxes, skins, borders, and shadows:
+ * new options: 'sharpish corners', 'sharp corners', and 'rounded corners'
+- library 'skins':
+ * new macros: '\tcbline*'
+ * bug fix: skin families 'bicolor' and 'beamer' did not respect 'colbacktitle'
+- pictures 'blueshade.png', 'crinklepaper.png', 'goldshade.png', 'pink_marble.png'
+ moved to package folder
+
+version 3.11 (2014/07/25)
+- regresssion: vertical space at end of breakable boxes was not removed
+- example file updated with new features
+
+version 3.12 (2014/07/29)
+- text color implementation changed to circumvent xelatex color problems
+- multicol vs. twocolumn detection fixed
+- code for breakable boxes without height limit improved
+- before box \noindent is replaced by \parindent=0pt (bidi package compatibilty)
+- library 'breakable':
+ * new option: 'vfill before first'
+
+version 3.20 (2014/09/22)
+- bug fix: titles set with 'detach' or 'boxed title' options were not considered
+ for lists of tcolorboxes.
+- bug fix: 'extrude left by', 'extrude right by' worked only for '\tcbox' but not for 'tcolorbox'
+- bug fix: 'pad before break*' and 'pad at break*' were always setting to 0pt
+- new options: 'every float', 'list text', 'overlay first and middle',
+ 'height fill'
+- new initialization options:
+ 'use counter*', 'blend into'
+- library 'skins':
+ * new macros: '\tcbsettowidthofnode', '\tcbsetmacrotowidthofnode',
+ '\tcbsettoheightofnode', '\tcbsetmacrotoheightofnode'
+ * new options: 'underlay first and middle', 'finish first and middle'
+- library 'hooks':
+ * new options: 'underlay first and middle pre',
+ 'overlay first and middle app', 'overlay first and middle pre',
+ 'finish first and middle pre'
+- library 'documentation':
+ * new macros: '\tcbdocmarginnote', '\tcbdocnew', '\tcbdocupdated'
+ * The 'docKey' and 'docKey*' environments take tcolorbox options now
+ * new options:
+ 'doclang/new', 'doclang/updated',
+ 'doc marginnote', 'doc updated', 'doc new', 'doc new and updated'
+
+version 3.21 (2014/10/10)
+- bug fix: empty key path handling inside the 'docKey' and 'docKey*' environments was faulty
+- bug fix: wrong coloring for '\docAuxCommand' and '\docAuxCommand*'
+- bug fix: draft mode for inner boxes deactivated in v3.20
+- subtitles added
+- new macros:
+ '\tcbsubtitle'
+- new options:
+ 'subtitle style', 'before skip', 'after skip', 'beforeafter skip',
+- library 'documentation':
+ implementation of handling macro and key names changed to accept underscores
+ several internal implementation changes
+
+version 3.22 (2014/10/31)
+- new macro: '\tcolorboxenvironment'
+- new options:
+ 'text width', 'text height'
+- library 'skins':
+ * new options: 'borderline north', 'borderline south',
+ 'borderline east', 'borderline west', 'borderline horizontal', 'borderline vertical'
+- library 'breakable':
+ * internal change for compatibility with the 'perpage' option of the 'footmisc' package
+- library 'theorems':
+ * compatibility fix: The 'ams equation' options left too much vertical
+ space for the 'fleqn' case
+- library 'fitting':
+ * new 'fit algorithm' settings: 'fontsize*', 'areasize*', 'hybrid*'
+
+version 3.30 (2014/11/17)
+- bug fix: compilation errors using colors like 'red!10' in some skins like 'beamer'
+- '\thetcbcounter' can now be used as part of a 'listing file' name for 'tcblisting'
+- implementation of 'before skip' and 'after skip' improved
+- implementation of 'equal height group' improved to take arbitrary id's
+- Quick Reference added
+- new options:
+ 'add to width', 'add to height',
+ 'box align', 'left skip', 'right skip', 'leftright skip'
+- library 'skins':
+ * new macros:
+ '\tcbincludegraphics', '\tcbincludepdf'
+ * new options:
+ 'graphics options', 'graphics directory', 'graphics pages'
+- library 'listings', 'listingsut8', 'minted':
+ * 'listing file' now usable inside 'tcblisting' and 'tcbinputlisting'
+ * new options:
+ 'comment only', 'text above* listing', 'listing above* text',
+ 'comment above* listing', 'listing above* comment',
+ 'comment style', 'tcbimage comment', 'pdf extension', 'pdf comment',
+ 'process code', 'no process', 'run system command', 'run pdflatex',
+ 'run xelatex', 'run lualatex', 'run makeindex', 'run bibtex', 'run biber',
+ 'run arara', 'run latex', 'run dvips', 'run ps2pdf',
+ 'compilable listing'
+- new library 'raster':
+ * new macros and environments:
+ 'tcbraster', 'tcbitemize', 'tcbitem'
+ * new options:
+ 'raster columns', 'raster rows', 'raster width', 'raster height', 'raster before skip',
+ 'raster after skip', 'raster left skip', 'raster right skip', 'raster column skip',
+ 'raster row skip', 'raster halign', 'raster valign', 'raster equal height',
+ 'raster equal height group', 'raster force size' ,'raster reset',
+ 'raster odd column', 'raster even column', 'raster column n', 'raster odd row',
+ 'raster even row', 'raster row m','raster odd number', 'raster even number',
+ 'raster row m column n', 'raster number n'
+
+version 3.31 (2014/11/28)
+- new macros: '\tcbstartrecording', '\tcbrecord', '\tcbstoprecording', '\tcbinputrecords'
+- new options: 'squeezed title', 'squeezed title*', 'phantomlabel',
+ 'record', 'no recording'
+- 'savelowerto' changed to need only one run instead of two
+- library 'skins':
+ * '\imagename' macro can be used in more situations
+ * '\tcbincludegraphics' made aware of 'grffile' package
+- new library 'raster':
+ * tcbraster safeguarded against restricted horizontal mode
+ * new option: 'raster every box'
+
+version 3.32 (2014/12/01)
+- bug fix for 'crefname' and 'Crefname' options (cleveref support)
+
+version 3.33 (2014/12/11)
+- The nobreak settings after a heading are respected now for breakable and
+ unbreakable boxes. Use the new option 'ignore nobreak' to restore the old
+ behavior.
+- vertical skip of two successive tcbraster environments fixed
+
+version 3.34 (2014/12/16)
+- 'height fill' now fills gapless and can be overruled by other height options
+- 'before skip' and 'after skip' accept glue values now
+- library 'breakable':
+ * new option 'compress page':
+ Use the new option 'compress page=none' to restore the old behavior.
+- library 'raster':
+ * 'raster before skip' and 'raster after skip' accept glue values now
+
+version 3.35 (2015/01/07)
+- fix: 'tcbdocumentation.code.tex' changed to US-ASCII
+- text color implementation changed to fix some color problems
+- new options: 'upperbox', 'visible', 'invisible'
+- documentation complemented
+
+version 3.36 (2015/01/09)
+- bug fix: dimension settings with 'em' or 'ex' units were sometimes converted to 0pt
+- bug fix: 'boxed title' options and some algorithms of the 'fitting' library were not compatible
+- bug fix: 'fit width from' ('fitting' library) may have updated counter too often
+- new option: 'only'
+- library 'fitting': fit process can now also includes the title
+- library 'raster': new option 'raster equal skip'
+- library 'documentation':
+ * new macros and environments:
+ '\docCounter', '\docCounter*', '\docLength', '\docLength*'
+ * new options:
+ 'index command', 'index command name' (for imakeidx),
+ 'color counter', 'color length',
+ 'doclang/counter', 'doclang/counters', 'doclang/length', 'doclang/lengths'
+
+version 3.40 (2015/01/14)
+- bug fix: list environments had too much leading space if set as first elements in a box
+- library 'skins':
+ * new option: 'titlerule style'
+- library 'breakable':
+ algorithm for handling overfull boxes revised; new warnings implemented
+
+version 3.50 (2015/03/16)
+- bug fix: \tcbline was broken for \tcboxfit-boxes since 3.36
+- text color implementation changed to fix some color problems
+- before/after settings changed to detect special situations
+- 'sidebyside align': new selections 'top seam', 'center seam', 'bottom seam'
+- new options:
+ 'force nobeforeafter', 'blend before title', 'blend before title code'
+- library 'documentation':
+ 'before example', 'after example' are deprecated; 'docexample' is changed
+- new library 'external'
+ * new macros and environments:
+ 'tcbexternal', '\tcbEXTERNALIZE', 'extikzpicture', 'extcolorbox',
+ '\tcbifexternal',
+ '\newtcbexternalizeenvironment', 'renewtcbexternalizeenvironment',
+ 'newtcbexternalizetcolorbox', 'renewtcbexternalizetcolorbox'
+ * new options:
+ 'runner', 'externalize', 'force remake', '!',
+ 'name', 'externalize listing', 'externalize listing!',
+ 'externalize example', 'externalize example!',
+ 'prefix', 'environment', 'minipage', 'plain', 'compiler', 'runs',
+ 'input source on error', 'safety', 'preamble'
+- documentation structure revised
+
+version 3.60 (2015/05/07)
+- bug fix: dimension settings with 'em' or 'ex' units for 'enlarge .. by' converted to 0pt
+- bug fix: 'bicolor' skin sometimes ignored color for lower part when broken
+- new macros: '\tcbpatcharcangular', '\tcbpatcharcround'
+- implementation of text alignment changed with new options:
+ 'halign', 'halign upper', 'halign lower', 'halign title', 'valign upper'
+- new options:
+ 'saveto', 'circular arc', 'bean arc', 'arc is angular', 'arc is curved',
+ 'square', 'tcbox width'
+- library 'skins':
+ * new option: 'smart shadow arc'
+- library 'documentation':
+ package 'doc' removed from list of required packages
+- library 'external':
+ * new options:
+ 'environment with percent', 'preamble tcbset', 'preclass', 'clear preclass',
+ 'PassOptionsToPackage', 'PassOptionsToClass'
+
+version 3.61 (2015/06/12)
+- bug fix: nobreak settings after a heading were sometimes ignored depending
+ on the box content
+- library 'external':
+ * now throws an error if the same external job name is used twice
+ * new option: '-'
+- documentation bug fixes
+
+version 3.70 (2015/07/16)
+- bug fix: 'attach title to upper' attached also empty titles
+- bug fix: library 'raster': blank line after tcbitemize or tcbraster could give an error message
+- new options:
+ 'text fill', 'valign scale bound',
+ 'valign=scale', 'valigns=scale*', 'valign lower=scale', 'valign lower=scale*'
+- library 'breakable':
+ * Settings for broken box parts are now shielded by TeX grouping. This may
+ break code which used side-effects with unproper skins.
+ * new options:
+ 'extras unbroken', 'extras first', 'extras middle', 'extras last',
+ 'extras', 'extras broken', 'extras unbroken and first',
+ 'extras unbroken and last', 'extras middle and last',
+ 'extras first and middle', 'no extras unbroken', 'no extras first',
+ 'no extras middle', 'no extras last', 'no extras',
+- library 'hooks':
+ * new options:
+ 'extras unbroken pre', 'extras first pre', 'extras middle pre',
+ 'extras last pre', 'extras pre', 'extras broken pre',
+ 'extras unbroken and first pre', 'extras unbroken and last pre',
+ 'extras middle and last pre', 'extras first and middle pre',
+- new library 'magazine'
+ * new macros and environments:
+ '\newboxarray', '\boxarraygetsize', '\boxarrayreset', '\boxarrayclear',
+ '\boxarraygetbox', '\boxarraygetwidth', '\boxarraygetheight', '\boxarraygetdepth',
+ '\boxarraygettotalheight', '\useboxarray', '\usetcboxarray',
+ '\consumeboxarray', '\consumetcboxarray', 'boxarraystore',
+ * new options:
+ 'store to box array', 'reset box array', 'do not store to box array',
+ 'reset and store to box array'
+
+version 3.71 (2015/07/23)
+- bug fix: An error introduced in 3.70 broke all code without 'breakable' library
+- bug fix: library 'external': spurious blank in source input removed
+- documentation extended
+
+version 3.72 (2015/08/12)
+- bug fix: bounding box changes and boxed title additions were not considered
+ correctly by 'height fixed for' or 'height fill' (resulting in wrong page breaks)
+- library loading made compatible with expl3
+- cosmetic documentation changes
+
+version 3.73 (2015/10/16)
+- bug fix: '\tcbdocmarginnote' had a spurious blank.
+- parbox=false settings adapted for embedded lists
+- library 'documentation':
+ * new options:
+ 'before doc body command', 'after doc body command',
+ 'before doc body environment', 'after doc body environment',
+ 'before doc body key', 'after doc body key',
+ 'before doc body', 'after doc body'
+
+version 3.80 (2015/11/27)
+- superfluous and sometimes troublesome \unskip's were removed.
+ Note that this changed the behavior of 'after upper' and 'after lower'.
+ Some user code may need to apply the new 'after upper*' / 'after lower*'
+ options or insert an \unskip.
+- even/odd page testing completely rewritten.
+- some difference formulas were revised.
+- new macros:
+ '\thetcolorboxnumber', '\thetcolorboxpage',
+ '\tcbifoddpage', '\tcbheightfromgroup'
+- new options:
+ 'after upper*', 'after lower*',
+ 'center', 'flush right', 'flush left',
+ 'if odd page', 'if odd page*',
+ 'use height from group'
+- library 'xparse':
+ * new macro: '\tcbsidebyside'
+ * new options: 'sidebyside adapt', 'sidebyside switch'
+
+version 3.90 (2016/02/29)
+- bug fix: 'height fill' after headings (nobreak) produced an error
+- implementation for 'before' and 'before skip' changed to avoid spacing
+ problems when there is a page break before breakable/unbreakable boxes
+- the 'height fill' option can be applied also for boxed inside a tcbraster
+- new options:
+ 'add to natural height', 'space to', 'use height from group' (new default)
+- new macros:
+ '\tcbheightspace', '\tcbtextwidth', '\tcbtextheight'
+- library 'skins':
+ * 'halign title' works with 'boxed title' now
+ * 'boxed title style' changed to be stackable
+ * better support for titles at the bottom of the box
+ * new skin: 'tile'
+ * new options:
+ 'blankest', 'tile', 'no boxed title style', 'boxed title size',
+ 'attach boxed title to bottom', 'attach boxed title to bottom*',
+ 'attach boxed title to top', 'attach boxed title to top*',
+ 'flip title'
+- library 'raster':
+ * new environment:
+ 'tcboxedraster'
+ * new options:
+ 'raster multicolumn', 'raster multirow'
+- library 'documentation':
+ removal of some unwanted blanks
+
+version 3.91 (2016/04/27)
+- bug fix: '\tcbline' was indented when setting '\parindent' inside a box
+- bug fix: 'minimum for equal height group' changed current equal height group
+ and settings with 'em' or 'ex' units were converted to 0pt
+- bug fix: setting '-output-directory' and 'outputdir=' for the minted package
+ broke \tcblisting for 'listing engine=minted'
+- documentation: biber problem with latin1 encoding circumvented
+- new options:
+ 'minimum for current equal height group'
+- library 'theorems':
+ * new option: 'label separator'
+- new library 'vignette' for ornamental frames:
+ * new fadings: 'semi west', 'semi east', 'semi north', 'semi south'
+ * new macros: '\tcbvignette'
+ * new options:
+ 'xmin', 'xmax', 'ymin', 'ymax',
+ 'lower left corner', 'upper right corner', 'inside node', 'outside node',
+ 'over node', 'over node offset', 'north size', 'south size', 'east size',
+ 'west size', 'size', 'north style', 'south style', 'east style', 'west style',
+ 'draw method', 'fade out', 'semi fade out', 'fade in', 'semi fade in',
+ 'base color', 'raised color', 'lowered color',
+ 'underlay vignette', 'underlay raised fading vignette',
+ 'underlay raised shading vignette', 'underlay shade in vignette',
+ 'finish vignette', 'finish raised fading vignette', 'finish fading vignette'
+- library 'raster':
+ * new environment: 'tcboxeditemize'
+
+version 3.92 (2016/05/28)
+- bug fix: 'compilable listing' used no '.tex' extension causing problems with minted
+- compatibility patch for \vsplit in luatex 0.95 causing problems with breakable boxes
+- settings inside \tcbvignette are now inside a group
+- library 'vignette': new option 'scope'
+
+version 3.93 (2016/06/01)
+- bug fix: compatibility patch for \vsplit in luatex 0.95 was buggy
+- system commands are now accessed using the 'shellesc' package for
+ compatibility with luatex
+
+version 3.94 (2016/07/14)
+- bug fix: '\tcbincludegraphics' for fixed height boxes was broken since v3.90 (2016/02/29)
+- new option 'nameref'
+- library 'theorems':
+ Theorems made nameref-aware
+- library 'listings':
+ * new options:
+ 'freeze file', 'freeze none', 'freeze extension',
+ 'freeze pdf', 'freeze png', 'freeze jpg'
+- library 'external':
+ * implementation improved for lualatex and xelatex
+ * new macro '\tcbiffileprocess'
+
+version 3.95 (2016/10/21)
+- The behaviors of 'after upper' and 'after lower' are reverted back to
+ prior version 3.80 to have an automatic \unskip inserted.
+ Therefore, 'after upper*' and 'after lower*' are deprecated now.
+- new option 'void'
+- library 'skins':
+ '\tcbincludegraphics' made compatible with 'height fill' boxes.
+- library 'minted':
+ now, included source files are searched for in relation to an optional
+ 'output-directory' and also locally.
+- library 'documentation':
+ Language settings are not longer reset to English for embedded boxes.
+
+version 3.96 (2016/11/18)
+- bug fix: unprotected definition of the 'nameref' option induced serious errors
+- bug fix: nameref package was not detected if loaded after tcolorbox
+- new macros:
+ '\tcbifoddpageoroneside'
+- new options:
+ 'if odd page or oneside', 'if odd page or oneside*',
+- library 'documentation':
+ * Documentation options are not longer reset to default values for embedded
+ boxes. User code may be affected by this change.
+ * marginnotes adapt to twosided documents now
+
+version 4.00 (2017/02/16)
+- Code adaptions to support \parfillskip changing packages like KOMA-Script:
+ 'parskip', 'noparskip', 'after skip', 'breakable', 'raster'
+- 'toggle left and right' toggles corners now
+- new options:
+ 'left*', 'right*',
+ 'spread inwards', 'spread outwards', 'move upwards', 'move upwards*', 'fill downwards',
+ 'spread sidewards', 'spread upwards', 'spread upwards*', 'spread downwards', 'spread',
+ 'hypertarget', 'bookmark', 'bookmark*'
+- library 'skins':
+ * new macro '\tcbhypernode'
+ * new options:
+ 'hyperref', 'hyperref node', 'hyperref interior', 'hyperref title',
+ 'hyperlink', 'hyperlink node', 'hyperlink interior', 'hyperlink title',
+ 'hyperurl', 'hyperurl node', 'hyperurl interior', 'hyperurl title',
+ 'hyperurl*', 'hyperurl* node', 'hyperurl* interior', 'hyperurl* title'
+
+version 4.01 (2017/02/19)
+- bug fix: 'raster halign=center' was broken by 4.00 code changes
+
+version 4.02 (2017/02/24)
+- Further code adaptions to support \parfillskip changing packages like KOMA-Script
+ and to respect center environments
+ 'parskip', 'noparskip', 'after skip', 'breakable', 'raster'
+- new option: 'parfillskip restore'
+- bug fix: 'segmentation style' was not applied correctly to breakable boxes with
+ 'bicolor' skin
+- bug fix: '/tcb/external/!' and '/tcb/external/-' were not usable inside \tcbset
+- documentation optimizations
+
+version 4.03 (2017/04/25)
+- Implementation of 'raster equal height' changed to be more robust e.g. for loops
+- Implementation of several fill options like 'fill stretch image' changed
+ to be more efficient and to be independent from TikZ node positioning options.
+- Bug fix: 'fill plain image' and 'fill plain picture' ignored 'fill image opacity'.
+- new macro: '\tcbsegmentstate'
+- library 'breakable':
+ * new option: 'segmentation at break'
+- library 'documentation':
+ * new options: 'documentation minted language', 'keywords bold'
+- Creation of leaflets documented
+
+version 4.10 (2017/07/05)
+- new options:
+ 'inherit height', 'verbatim ignore percent'
+- library 'skins'
+ * new style 'enhanced standard jigsaw'
+- library 'magazine':
+ * new macro: '\ifboxarrayempty'
+- library 'breakable':
+ * option 'break at' allows negative values now.
+ * the algorithm for breaks inside a multicolumn environment was improved
+ (user code may be affected by this change).
+ * new macro: '\tcbbreak'
+- library 'minted':
+ * the default settings for 'minted options'
+ are supplemented by 'breaklines,autogobble'
+- new library 'poster'
+ * new macros and environments:
+ 'tcbposter', '\tcbposterset', '\posterbox', 'posterboxenv',
+ 'tcbposterwidth', 'tcbposterheight', 'tcbpostercolspacing', 'tcbposterrowspacing',
+ 'tcbpostercolumns', 'tcbposterrows', 'tcbpostercolwidth', 'tcbposterrowheight'
+ * new options:
+ 'poster', 'columns', 'rows', 'colspacing', 'rowspacing', 'spacing',
+ 'showframe', 'width', 'height', 'prefix', 'coverage', 'no coverage',
+ 'boxes', 'fontsize', 'name', 'column', 'column*', 'span', 'row', 'rowspan',
+ 'fixed height', 'below', 'above', 'at', 'between', 'sequence',
+ 'placeholder', 'xshift', 'yshift'
+- New example file 'tcolorbox-example-poster'
+- New tutorial 'tcolorbox-tutorial-poster' for poster creation
+
+version 4.11 (2017/09/14)
+- Standard internal minipage settings changed from 'c' to 'b' which should
+ fix some glitches
+
+version 4.12 (2018/01/12)
+- color implementation changed to fix problems with expl3 (thanks to Ulrike Fischer)
+- Documentation typo corrected ('tcbsetmanagedlayers' instead of 'tcbsetmanagedlayer')
+- Bug fix: 'borderline south' and 'borderline north' created 'Missing character'
+ messages for breakable boxes
+- library 'theorems':
+ * new options 'theorem label supplement', 'theorem full label supplement'
+
+version 4.13 (2018/03/22)
+- typos in 'tcolorbox-tutorial-poster' corrected
+- new options:
+ 'grow sidewards by'
+- library 'breakable':
+ * Warning for discarded zero height box content added
+- library 'listings':
+ * Documentation for 'text side listing', 'listing side text',
+ 'comment side listing', 'listing side comment' supplemented with notes.
+- library 'skins':
+ * Options given by '/tcb/graphics options' and '/tikz/fill image options'
+ are now fully expanded while applied to underlying '\includegraphics'
+ * new option:
+ 'graphics orientation'
+
+version 4.14 (2018/07/26)
+- bug fix (#40): 'tikz lower' and 'tikz upper' failed to take more than one parameter
+- '\tcblistof' issues a warning if tocdepth is lower than 1 (#42)
+- macro definition of \tcolorbox@label removed from aux file (#47)
+- documentation adapted to the changed argument collection of the xparse package (#43)
+- new options: 'index', 'index*'
+- library 'breakable':
+ * (#41) 'title after break' inherits the title alignment now
+ (may change output of existing documents!)
+ * new options 'extras title after break', 'no extras title after break'
+
+version 4.15 (2018/12/07)
+- bug fix (#40): 'tikz upper', 'tikz lower' failed to take more than one parameter (again)
+- bug fix: 'tcboxedraster' could not be set to be 'breakable'
+- library 'breakable': Implementation of 'pad after break' changed to be
+ consistent with a boxed title.
+- library 'raster':
+ * dimension settings changed to be more robust
+ * new options (#52) 'raster width center', 'raster width flush left', 'raster width flush right'
+- Example source code of 'tcolorbox-example-poster' and 'tcolorbox-tutorial-poster'
+ adapted to be compatible with lipsum package version 2.0
+
+version 4.20 (2019/03/02)
+- bug fix (#60): \multicolumn could not be used for first cell with option 'tabularx'
+- internal colors names renamend and offially documented (Section 9.5 Color Names):
+ 'tcbcolframe', 'tcbcolback', 'tcbcolbacktitle', 'tcbcolbacklower',
+ 'tcbcolupper', 'tcbcollower', 'tcbcoltitle'
+- listingsutf8 compatability better documented (#58)
+- semantic changed for options: 'after upper*', 'after lower*'
+- new options: 'before upper*', 'before lower*', 'titlebox', 'nirvana'
+- library 'skins':
+ * new options: 'beamer hidden', 'beamer alerted', 'hide', 'alert'
+ * option 'only' moved from package to skins library
+- new documentation section '13 Beamer Support'
diff --git a/macros/latex/contrib/tcolorbox/README b/macros/latex/contrib/tcolorbox/README
new file mode 100644
index 0000000000..67e8c16547
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/README
@@ -0,0 +1,95 @@
+%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%%
+%% -------------------------------------------------------------------------------------------
+%% 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
+%%
+
+tcolorbox provides an environment for colored and framed text boxes with a
+heading line. Optionally, such a box can be split in an upper and a lower
+part. The package tcolorbox can be used for the setting of LaTeX examples where
+one part of the box displays the source code and the other part shows the
+output. Another common use case is the setting of theorems. The package supports
+saving and reuse of source code and text parts.
+
+Contents of the package
+=======================
+ 'README' this file
+ 'CHANGES' log of changes (history)
+ 'tcolorbox.sty' LaTeX package file (style file)
+ 'tcbbreakable.code.tex' LaTeX package file (library of tcolorbox)
+ 'tcbdocumenation.code.tex' LaTeX package file (library of tcolorbox)
+ 'tcbexternal.code.tex' LaTeX package file (library of tcolorbox)
+ 'tcbfitting.code.tex' LaTeX package file (library of tcolorbox)
+ 'tcbhooks.code.tex' LaTeX package file (library of tcolorbox)
+ 'tcblistings.code.tex' LaTeX package file (library of tcolorbox)
+ 'tcblistingscore.code.tex' LaTeX package file (library of tcolorbox)
+ 'tcblistingsutf8.code.tex' LaTeX package file (library of tcolorbox)
+ 'tcbmagazine.code.tex' LaTeX package file (library of tcolorbox)
+ 'tcbminted.code.tex' LaTeX package file (library of tcolorbox)
+ 'tcbposter.code.tex' LaTeX package file (library of tcolorbox)
+ 'tcbprocessing.code.tex' LaTeX package file (library of tcolorbox)
+ 'tcbraster.code.tex' LaTeX package file (library of tcolorbox)
+ 'tcbskins.code.tex' LaTeX package file (library of tcolorbox)
+ 'tcbskinsjigsaw.code.tex' LaTeX package file (library of tcolorbox)
+ 'tcbtheorems.code.tex' LaTeX package file (library of tcolorbox)
+ 'tcbvignette.code.tex' LaTeX package file (library of tcolorbox)
+ 'tcbxparse.code.tex' LaTeX package file (library of tcolorbox)
+ 'blueshade.png' Picture (package)
+ 'crinklepaper.png' Picture (package)
+ 'goldshade.png' Picture (package)
+ 'pink_marble.png' Picture (package)
+ 'tcolorbox.pdf' Documentation for tcolorbox
+ 'tcolorbox.tex' Source code of the documentation (main file)
+ '*.doc.*' Source code of the documentation (include files)
+ 'tcolorbox-tutorial-poster.pdf' Tutorial for poster creation
+ 'tcolorbox-tutorial-poster.tex' Source code of the tutorial
+ 'tcolorbox-example.tex' Example file for package usage
+ 'tcolorbox-example.pdf' Compiled example
+ 'tcolorbox-example-poster.tex' Example file for package usage
+ 'tcolorbox-example-poster.pdf' Compiled example
+ 'Basilica_5.png' Example picture
+ 'lichtspiel.jpg' Example picture
+
+Installation
+============
+Copy the contents of the 'tcolorbox.tds.zip' from CTAN to your local TeX file tree.
+
+Alternatively, put the files to their respective locations within the TeX installation:
+ 'tcolorbox.sty' -> /tex/latex/tcolorbox
+ 'tcbbreakable.code.tex' -> /tex/latex/tcolorbox
+ 'tcbdocumenation.code.tex' -> /tex/latex/tcolorbox
+ 'tcbexternal.code.tex' -> /tex/latex/tcolorbox
+ 'tcbfitting.code.tex' -> /tex/latex/tcolorbox
+ 'tcbhooks.code.tex' -> /tex/latex/tcolorbox
+ 'tcblistings.code.tex' -> /tex/latex/tcolorbox
+ 'tcblistingscore.code.tex' -> /tex/latex/tcolorbox
+ 'tcblistingsutf8.code.tex' -> /tex/latex/tcolorbox
+ 'tcbmagazine.code.tex' -> /tex/latex/tcolorbox
+ 'tcbminted.code.tex' -> /tex/latex/tcolorbox
+ 'tcbposter.code.tex' -> /tex/latex/tcolorbox
+ 'tcbprocessing.code.tex' -> /tex/latex/tcolorbox
+ 'tcbraster.code.tex' -> /tex/latex/tcolorbox
+ 'tcbskins.code.tex' -> /tex/latex/tcolorbox
+ 'tcbskinsjigsaw.code.tex' -> /tex/latex/tcolorbox
+ 'tcbtheorems.code.tex' -> /tex/latex/tcolorbox
+ 'tcbvignette.code.tex' -> /tex/latex/tcolorbox
+ 'tcbxparse.code.tex' -> /tex/latex/tcolorbox
+ 'blueshade.png' -> /tex/latex/tcolorbox
+ 'crinklepaper.png' -> /tex/latex/tcolorbox
+ 'goldshade.png' -> /tex/latex/tcolorbox
+ 'pink_marble.png' -> /tex/latex/tcolorbox
+
+ all other files -> /doc/latex/tcolorbox
diff --git a/macros/latex/contrib/tcolorbox/blueshade.png b/macros/latex/contrib/tcolorbox/blueshade.png
new file mode 100644
index 0000000000..4b1713e657
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/blueshade.png
Binary files differ
diff --git a/macros/latex/contrib/tcolorbox/crinklepaper.png b/macros/latex/contrib/tcolorbox/crinklepaper.png
new file mode 100644
index 0000000000..c030edf765
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/crinklepaper.png
Binary files differ
diff --git a/macros/latex/contrib/tcolorbox/goldshade.png b/macros/latex/contrib/tcolorbox/goldshade.png
new file mode 100644
index 0000000000..7e08264053
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/goldshade.png
Binary files differ
diff --git a/macros/latex/contrib/tcolorbox/lichtspiel.jpg b/macros/latex/contrib/tcolorbox/lichtspiel.jpg
new file mode 100644
index 0000000000..76fb962f01
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/lichtspiel.jpg
Binary files differ
diff --git a/macros/latex/contrib/tcolorbox/pink_marble.png b/macros/latex/contrib/tcolorbox/pink_marble.png
new file mode 100644
index 0000000000..d3279dff5c
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/pink_marble.png
Binary files differ
diff --git a/macros/latex/contrib/tcolorbox/tcbbreakable.code.tex b/macros/latex/contrib/tcolorbox/tcbbreakable.code.tex
new file mode 100644
index 0000000000..69f5899e5c
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcbbreakable.code.tex
@@ -0,0 +1,1029 @@
+%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% tcbbreakable.code.tex: Code for breakable colorboxes
+%%
+%% -------------------------------------------------------------------------------------------
+%% 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}
+
+\let\tcb@parboxrestore@true=\tcb@parboxrestore
+\let\tcb@parboxrestore@false\tcb@parbox@false@settings
+
+% total height for boxes smaller than 0.4375\maxdimen and 0.4375\maxdimen else (ca 2.5m)
+\def\tcb@defToTotalHeightBreakable#1#2{%
+ \ifnum\ht#2<0 %
+ \edef#1{7168pt}%
+ \else\ifnum\ht#2<469762048 %
+ \tcbdimto#1{\ht#2+\dp#2}%
+ \else%
+ \edef#1{7168pt}%
+ \fi\fi%
+}
+
+\newbox\tcb@testbox
+
+% for oversized boxes height is detected as \textheight or larger
+\def\tcb@defToTotalHeightUnlimited#1#2{%
+ \tcb@defToTotalHeightBreakable#1#2%
+ \ifdim\dimexpr#1<\textheight\relax%
+ \edef\tcb@thevfuzz{\the\vfuzz}%
+ \edef\tcb@thevbadness{\the\vbadness}%
+ \vfuzz=\maxdimen\vbadness=10000%
+ \splittopskip=0pt%
+ \splitmaxdepth=0pt%
+ \savingvdiscards=1%
+ \setbox\tcb@testbox=\vsplit#2 to \textheight%
+ \vbadness=\tcb@thevbadness\vfuzz=\tcb@thevfuzz%
+ \ifdim\wd#2=0pt\relax%
+ \tcb@swap{#2}{\tcb@testbox}%
+ \tcbdimto#1{\ht#2+\dp#2}%
+ \else%
+ \setbox#2=\vbox{%
+ \unvbox\tcb@testbox%
+ \splitdiscards%
+ \unvbox#2}%
+ \edef#1{7168pt}%
+ \fi%
+ \savingvdiscards=0%
+ \fi%
+}
+
+\def\tcb@@break{\par\xleaders\vbox{\rule{0pt}{2\textheight}}\vskip 2\textheight\par}
+
+\def\tcb@vbox#1#2{%
+ \edef\reserved@a{%
+ \endgroup%
+ \setbox#1\vbox{\hsize=#2%
+ \begingroup\aftergroup}%
+ \def\noexpand\@currenvir{\@currenvir}%
+ \def\noexpand\@currenvline{\on@line}}%
+ \reserved@a%
+ \@endpefalse%
+ \let\tcbbreak\tcb@@break%
+ \color@begingroup%
+ \textwidth\hsize%
+ \columnwidth\hsize%
+ \csname tcb@parboxrestore@\kvtcb@parbox\endcsname%
+ \def\@mpfn{mpfootnote}%
+ \def\thempfn{\thempfootnote}%
+ \c@mpfootnote\z@%
+ \let\@footnotetext\@mpfootnotetext%
+ \let\@listdepth\@mplistdepth \@mplistdepth\z@%
+ \@setminipage\tcb@hyph@fix%
+ \let\tcb@drawcolorbox\tcb@drawcolorbox@standalone%
+ \let\FN@pp@footnote\@empty% disable perpage mode of 'footmisc' package
+ \ignorespaces%
+}
+
+\def\endtcb@vbox{%
+ \par%
+ \unskip%
+ \ifvoid\@mpfootins\else%
+ \vskip\skip\@mpfootins%
+ \normalcolor%
+ \footnoterule%
+ \unvbox\@mpfootins%
+ \fi%
+ \@minipagefalse%
+ \color@endgroup}
+
+% remaining height
+\def\tcb@comp@h@page{%
+ \tcb@breakat@next%
+ \ifdim\tcb@breakat@dim>0pt\relax%
+ \tcbdimto\tcb@h@page{\tcb@breakat@dim-\kvtcb@shrinkbreakgoal}%
+ \else%
+ \ifx\kvtcb@float\@empty%
+ \iftcb@multicol%
+ \ifnum\c@tcbbreakpart>1\relax%
+ \tcbdimto\tcb@h@page{\@colroom}%
+ \else%
+ \ifdim\pagegoal=16383.99998pt
+ \tcbdimto\tcb@h@page{\@colroom}%
+ \else%
+ \@tempdima\pagetotal%
+ \@whiledim \@tempdima>\@colroom \do{\advance\@tempdima-\@colroom}%
+ \tcbdimto\tcb@h@page{\@colroom-\@tempdima}%
+ \fi%
+ \fi%
+ \else%
+ \ifdim\pagegoal=16383.99998pt
+ \tcbdimto\tcb@h@page{\vsize}% detects floating objects
+ \else%
+ \tcb@comp@compress%
+ \tcbdimto\tcb@h@page{\pagegoal-\pagetotal+\tcb@compress@height}%
+ \fi%
+ \fi%
+ \else%
+ \tcbdimto\tcb@h@page{\textheight}%
+ \fi%
+ \tcbdimto\tcb@h@page{\tcb@h@page+\tcb@breakat@dim-\kvtcb@shrinkbreakgoal}%
+ \fi%
+}
+
+\def\tcb@comp@h@total@standalone{%
+ \tcbdimto\tcb@h@padding{\kvtcb@bbtop@stand+\kvtcb@bbbottom@stand+\kvtcb@top@rule@stand+\kvtcb@bottom@rule@stand+\kvtcb@boxsep*2+\kvtcb@top+\kvtcb@bottom}%
+ \tcbdimto\tcb@h@total{\tcb@h@padding+\tcb@h@padtitle+\tcb@h@upper+\tcb@h@segment+\tcb@h@lower}%
+}
+
+
+\newif\iftcb@final@box
+
+\def\tcb@check@for@final@box{%
+ \ifdim\tcb@h@total>\tcb@h@page\relax%
+ \iftcb@multicol%
+ \tcb@final@boxfalse%
+ \else%
+ \ifdim\tcb@h@total>\dimexpr\tcb@h@page+\kvtcb@enlargepage@flex\relax%
+ \tcb@final@boxfalse%
+ \else%
+ \tcbdimto\tcb@temp{\tcb@h@total-\tcb@h@page}%
+ \enlargethispage*{\tcb@temp}%
+ \tcbdimto\tcb@h@page{\tcb@h@page+\tcb@temp}%
+ \tcb@final@boxtrue%
+ \fi%
+ \fi%
+ \else%
+ \tcb@final@boxtrue%
+ \fi%
+}
+
+\def\tcb@following@title{%
+ \ifx\kvtcb@followingtitle\@empty%
+ \tcb@hasTitlefalse%
+ \let\tcb@h@title=\tcb@zpt%
+ \let\tcb@h@padtitle=\tcb@zpt%
+ \else%
+ \tcb@hasTitletrue%
+ \tcbdimto\tcb@w@title{\tcb@innerwidth-\kvtcb@boxsep*2-\kvtcb@lefttitle-\kvtcb@righttitle}%
+ \begin{tcb@savebox}{\tcb@titlebox}{\tcb@w@title}\tcb@extras@followingtitle\color{tcbcoltitle}\kvtcb@fonttitle\kvtcb@haligntitle\kvtcb@followingtitle\end{tcb@savebox}%
+ \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}%
+ \fi%
+}
+
+\newbox\tcb@totalupperbox
+\newbox\tcb@totallowerbox
+\newif\iftcb@break@allowed
+
+\def\tcb@enlbreak@next@final{%
+ \ifdim\dimexpr\tcb@enlbreak@dim=0pt\relax
+ \else%
+ \iftcb@multicol\else\enlargethispage{\tcb@enlbreak@dim}\fi%
+ \fi%
+}
+
+\def\tcb@enlbreak@next@scan#1/#2@{%
+ \def\temp@a{#2}%
+ \tcbdimto\tcb@enlbreak@dim{#1}%
+ \ifx\temp@a\@empty%
+ \let\tcb@enlbreak@next=\tcb@enlbreak@next@final%
+ \else%
+ \edef\tcb@enlbreak@seq{\temp@a @}%
+ \fi%
+ \tcb@enlbreak@next@final%
+}
+
+\def\tcb@enlbreak@next@step{%
+ \edef\tcb@temp{\noexpand\tcb@enlbreak@next@scan\tcb@enlbreak@seq}%
+ \tcb@temp%
+}
+
+\def\tcb@enlbreak@init{%
+ \edef\tcb@enlbreak@seq{\kvtcb@enlargepage/@}%
+ \let\tcb@enlbreak@next=\tcb@enlbreak@next@step%
+ \tcb@enlbreak@next%
+}
+
+
+\def\tcb@breakat@next@scan#1/#2@{%
+ \def\temp@a{#2}%
+ \tcbdimto\tcb@breakat@dim{#1}%
+ \ifx\temp@a\@empty%
+ \let\tcb@breakat@next=\@empty%
+ \else%
+ \edef\tcb@breakat@seq{\temp@a @}%
+ \fi%
+}
+
+\def\tcb@breakat@next@step{%
+ \edef\tcb@temp{\noexpand\tcb@breakat@next@scan\tcb@breakat@seq}%
+ \tcb@temp%
+}
+
+\def\tcb@breakat@init{%
+ \edef\tcb@breakat@seq{\kvtcb@breakatdim/@}%
+ \let\tcb@breakat@next=\tcb@breakat@next@step%
+}
+
+
+\newif\iftcb@multicol
+\newif\iftcb@vfillbeforefirst
+
+\def\tcb@do@nobreak@warning{%
+ \iftcb@ignorenobreak%
+ \tcb@warning{Using nobreak failed. You should set `ignore nobreak=false' to avoid this}%
+ \else%
+ \tcb@warning{Using nobreak failed. Try to enlarge `lines before break' or set page breaks manually}%
+ \fi%
+}
+
+\def\tcb@handle@nobreak{%
+ \tcb@enlbreak@init%
+ \tcb@breakat@init%
+ \tcb@comp@h@page%
+ \tcbdimto\tcb@h@page{\tcb@h@page-1.5\baselineskip-\parskip-\lineskip}% security surcharge
+ \tcb@comp@h@total@standalone%
+ \tcb@check@for@final@box%
+ \iftcb@final@box%
+ \else%
+ \ifdim\dimexpr\tcb@h@page-\tcb@h@padding-\tcb@h@padtitle<\kvtcb@breakminlines\baselineskip\relax%
+ \tcbdimto\tcb@h@page{\tcb@h@page+3.5\baselineskip+\parskip+\lineskip}%
+ \vspace{\tcb@h@page}%
+ {\parskip\z@\nointerlineskip\noindent}%
+ \vspace{-\tcb@h@page}%
+ \par%
+ \fi%
+ \fi%
+}
+
+\def\tcb@prepare@break@operation{%
+ \setcounter{tcbbreakpart}{0}%
+ \let\tcb@nobreak@warning\@empty%
+ \@ifundefined{columnbreak}{\tcb@multicolfalse}{%
+ \ifnum\doublecol@number>\z@ %
+ \tcb@multicoltrue%
+ \else%
+ \tcb@multicolfalse%
+ \fi}%
+ \ifx\kvtcb@float\@empty%
+ \iftcb@nobreak{%
+ \let\tcb@nobreak@warning\tcb@do@nobreak@warning%
+ \iftcb@ignorenobreak%
+ \kvtcb@beforebox%
+ \else%
+ \tcb@handle@nobreak%
+ \fi%
+ }{\kvtcb@beforebox}%
+ \def\kvtcb@beforebox{\parskip\z@\nointerlineskip\noindent}%
+ \noindent% applies parskip
+ \vskip\lineskip{\parskip\z@\par\vskip\z@}\bgroup\@nobreakfalse\addpenalty\z@\egroup% force update vertical list
+ \tcb@break@allowedtrue%
+ \tcb@enlbreak@init%
+ \else%
+ \tcb@break@allowedfalse%
+ \fi%
+}
+
+\def\tcb@height@fill@unbroken#1{%
+ \ifnum\c@tcblayer<2\relax%
+ \tcb@ignorenobreaktrue%
+ \tcb@prepare@break@operation%
+ \tcb@breakat@init%
+ \tcbset{compress page=#1}%
+ \tcb@comp@h@page%
+ \tcbset{height=\tcb@h@page-\kvtcb@bbtop@stand-\kvtcb@bbbottom@stand}%
+ \fi%
+}
+
+\def\tcb@height@fill@unbroken@normal{\tcb@height@fill@unbroken{none}}
+\def\tcb@height@fill@unbroken@compressed{\tcb@height@fill@unbroken{all}}
+
+\def\tcb@use@after@lastbox{\bgroup\tcb@after@lastbox\egroup}
+
+\def\tcb@drawcolorbox@breakable{%
+ \tcbdimto\kvtcb@topsep{\kvtcb@topsep}%
+ \tcb@prepare@break@operation%
+ \global\let\tcb@after@lastbox=\kvtcb@afterbox%
+ \let\kvtcb@afterbox=\@empty%
+ \begingroup%
+ \parskip\z@skip%
+ \parindent\z@%
+ \lineskip\z@skip%
+ \topskip\z@skip%
+ \tcb@parfillskip@check%
+ \tcb@split@start%
+ \endgroup%
+ \color{.}% hack for some special cases
+ \ifx\kvtcb@float\@empty%
+ \aftergroup\tcb@use@after@lastbox%
+ \fi%
+}
+
+\def\tcb@split@pagebreak{%
+ \tcb@undo@before%
+ \iftcb@multicol\columnbreak\else\pagebreak\fi%
+ \tcb@nobreak@warning%
+ \tcb@enlbreak@init\tcb@break@allowedfalse%
+}
+
+\def\tcb@split@start{%
+ \tcb@breakat@init%
+ \tcb@comp@h@page%
+ % height calculation
+ \tcb@comp@h@total@standalone%
+ %
+ \let\tcb@split@next=\relax%
+ \tcb@check@for@final@box%
+ \iftcb@final@box%
+ \tcb@drawcolorbox@standalone%
+ \else%
+ \iftcb@break@allowed%
+ \ifdim\dimexpr\tcb@h@page-\tcb@h@padding-\tcb@h@padtitle<\kvtcb@breakminlines\baselineskip\relax%
+ \tcb@split@pagebreak%
+ \tcb@comp@h@page%
+ \tcb@check@for@final@box%
+ \iftcb@final@box%
+ \tcb@drawcolorbox@standalone%
+ \else%
+ \let\tcb@split@next=\tcb@split@first%
+ \fi%
+ \else%
+ \let\tcb@split@next=\tcb@split@first%
+ \fi%
+ \else%
+ \let\tcb@split@next=\tcb@split@first%
+ \fi%
+ \fi%
+ \tcb@split@next%
+}
+
+
+\def\tcb@setbox#1#2#3{%
+ \setbox#1=\vbox{\unvbox#3}%
+ \ifdim\dimexpr\ht#1+\dp#1>#2\relax%
+ %\tcb@warning{Splitted box part too large by \the\dimexpr\ht#1+\dp#1-#2\relax}% switched off (99% useless/annoying)
+ \setbox#1=\vbox to\the\dimexpr#2-\dp#1\relax{\unvbox#1}%
+ \fi%
+}
+
+
+\def\tcb@setbox@upper#1#2{%
+ \tcb@setbox\tcb@upperbox{#1}{#2}%
+ \tcbdimto\tcb@h@upper{\ht\tcb@upperbox+\dp\tcb@upperbox}%
+}
+
+\def\tcb@vsplit@upper{%
+ \setbox\tcb@upperbox=\vsplit\tcb@totalupperbox to\tcb@split@dim%
+ \edef\tcb@upper@box@badness{\the\badness}%
+}
+
+\def\tcb@split@upper@box@and@assemble{%
+ \vfuzz=\maxdimen\vbadness=10000\savingvdiscards=1%
+ \tcb@vsplit@upper%
+ \ifnum\tcb@upper@box@badness=1000000\relax%
+ \setbox\tcb@totalupperbox=\vbox{%
+ \unvbox\tcb@upperbox%
+ \splitdiscards%
+ \unvbox\tcb@totalupperbox}%
+ \else%
+ \tcb@setbox@upper{\tcb@split@dim}{\tcb@upperbox}%
+ \fi%
+ \vbadness=\tcb@thevbadness\vfuzz=\tcb@thevfuzz\savingvdiscards=0%
+}
+
+\def\tcb@split@upper@box{%
+ \vfuzz=\maxdimen\vbadness=10000%
+ \tcb@vsplit@upper%
+ \ifnum\tcb@upper@box@badness=1000000\relax%
+ \tcb@warning{The upper box part has become overfull}%
+ \fi%
+ \tcb@setbox@upper{\tcb@split@dim}{\tcb@upperbox}%
+ \vbadness=\tcb@thevbadness\vfuzz=\tcb@thevfuzz%
+}
+
+\def\tcb@setbox@lower#1#2{%
+ \tcb@setbox\tcb@lowerbox{#1}{#2}%
+ \tcbdimto\tcb@h@lower{\ht\tcb@lowerbox+\dp\tcb@lowerbox}%
+}
+
+\def\tcb@vsplit@lower{%
+ \setbox\tcb@lowerbox=\vsplit\tcb@totallowerbox to\tcb@split@dim%
+ \edef\tcb@lower@box@badness{\the\badness}%
+}
+
+\def\tcb@split@lower@box@and@assemble{%
+ \vfuzz=\maxdimen\vbadness=10000\savingvdiscards=1%
+ \tcb@vsplit@lower%
+ \ifnum\tcb@lower@box@badness=1000000\relax%
+ \setbox\tcb@totallowerbox=\vbox{%
+ \unvbox\tcb@lowerbox%
+ \splitdiscards%
+ \unvbox\tcb@totallowerbox}%
+ \else%
+ \tcb@setbox@lower{\tcb@split@dim}{\tcb@lowerbox}%
+ \fi%
+ \vbadness=\tcb@thevbadness\vfuzz=\tcb@thevfuzz\savingvdiscards=0%
+}
+
+
+\def\tcb@split@lower@box{%
+ \vfuzz=\maxdimen\vbadness=10000%
+ \tcb@vsplit@lower%
+ \ifnum\tcb@lower@box@badness=1000000\relax%
+ \tcb@warning{The lower box part has become overfull}%
+ \fi%
+ \tcb@setbox@lower{\tcb@split@dim}{\tcb@lowerbox}%
+ \vbadness=\tcb@thevbadness\vfuzz=\tcb@thevfuzz%
+}
+
+% patch for luatex 0.95 (thanks to Jeremy Engel)
+\ifdefined\directlua
+ \RequirePackage{ifluatex}
+ \ifnum\luatexversion=95\relax
+ \def\tcb@vsplit@upper{%
+ \directlua{%
+ tex.savingvdiscards = 1
+ local vlist = tex.splitbox("tcb@totalupperbox", tex.sp("\tcb@split@dim"), "exactly")
+ tex.setbox("tcb@upperbox", vlist)
+ tex.savingvdiscards = 0
+ }%
+ \edef\tcb@upper@box@badness{\the\badness}%
+ }
+ \def\tcb@vsplit@lower{%
+ \directlua{%
+ tex.savingvdiscards = 1
+ local vlist = tex.splitbox("tcb@totallowerbox", tex.sp("\tcb@split@dim"), "exactly")
+ tex.setbox("tcb@lowerbox", vlist)
+ tex.savingvdiscards = 0
+ }%
+ \edef\tcb@lower@box@badness{\the\badness}%
+ }
+\fi\fi
+
+\def\tcb@split@setstate@first{%
+ \edef\tcb@split@state{first}%
+ \let\kvtcb@top@rule=\kvtcb@top@rule@stand%
+ \let\kvtcb@bottom@rule=\kvtcb@bottom@rule@break%
+ \let\kvtcb@bbtop=\kvtcb@bbtop@stand%
+ \let\kvtcb@bbbottom=\kvtcb@bbbottom@break%
+ \let\tcb@break@topsep=\tcb@zpt%
+ \let\tcb@break@bottomsep=\kvtcb@bottomsep%
+}
+
+\def\tcb@split@setstate@middle{%
+ \edef\tcb@split@state{middle}%
+ \let\kvtcb@top@rule=\kvtcb@top@rule@break%
+ \let\kvtcb@bottom@rule=\kvtcb@bottom@rule@break%
+ \let\kvtcb@bbtop=\kvtcb@bbtop@break%
+ \let\kvtcb@bbbottom=\kvtcb@bbbottom@break%
+ \let\tcb@break@topsep=\kvtcb@topsep%
+ \let\tcb@break@bottomsep=\kvtcb@bottomsep%
+}
+
+\def\tcb@split@setstate@last{%
+ \edef\tcb@split@state{last}%
+ \let\kvtcb@top@rule=\kvtcb@top@rule@break%
+ \let\kvtcb@bottom@rule=\kvtcb@bottom@rule@stand%
+ \let\kvtcb@bbtop=\kvtcb@bbtop@break%
+ \let\kvtcb@bbbottom=\kvtcb@bbbottom@stand%
+ \let\tcb@break@topsep=\kvtcb@topsep%
+ \let\tcb@break@bottomsep=\tcb@zpt%
+}
+
+
+\def\tcb@split@force@standalone{%
+ \tcb@comp@h@total@standalone%
+ \ifdim\tcb@h@total>\tcb@h@page\relax%
+ \tcbdimto\kvtcb@bbbottom@stand{\kvtcb@bbbottom@stand+\tcb@h@page-\tcb@h@total}%
+ \fi%
+}
+
+
+\def\tcb@split@break@to@start{%
+ \tcb@swap{\tcb@totalupperbox}{\tcb@upperbox}%
+ \tcb@swap{\tcb@totallowerbox}{\tcb@lowerbox}%
+ \tcbdimto\tcb@h@upper{\ht\tcb@upperbox+\dp\tcb@upperbox}%
+ \tcbdimto\tcb@h@lower{\ht\tcb@lowerbox+\dp\tcb@lowerbox}%
+ \tcb@split@pagebreak%
+ \let\tcb@split@next=\tcb@split@start%
+}
+
+\def\tcb@split@first{%
+ \setcounter{tcbbreakpart}{1}%
+ \ifx\kvtcb@float\@empty%
+ \iftcb@vfillbeforefirst%
+ \let\tcb@before@first=\vfill%
+ \else%
+ \let\tcb@before@first=\@empty%
+ \fi%
+ \let\tcb@before@middle=\@empty%
+ \let\tcb@before@last=\@empty%
+ \iftcb@multicol%
+ \long\def\tcb@after@first{\par}% using \columnbreak here kills multicols' algortihm sometimes
+ \long\def\tcb@after@middle{\par\vfill}%
+ \else%
+ \long\def\tcb@after@first{\par\pagebreak\tcb@enlbreak@next}%
+ \long\def\tcb@after@middle{\par\vfill\eject\tcb@enlbreak@next}%
+ \fi%
+ \let\tcb@after@last=\par%
+ \else%
+ \edef\tcb@before@first{\noexpand\tcb@float@env@begin{tcbfloat}[\kvtcb@float]\noexpand\kvtcb@everyfloat}%
+ \let\tcb@before@middle=\tcb@before@first%
+ \let\tcb@before@last=\tcb@before@first%
+ \let\tcb@after@first=\tcb@float@env@end%
+ \let\tcb@after@middle=\tcb@float@env@end%
+ \let\tcb@after@last=\tcb@float@env@end%
+ \fi%
+ %
+ \edef\kvtcb@skin@@first{\kvtcb@skin@first}%
+ \edef\kvtcb@skin@@middle{\kvtcb@skin@middle}%
+ \edef\kvtcb@skin@@last{\kvtcb@skin@last}%
+ %
+ \let\tcb@h@breaksep@first=\kvtcb@bottomsep%
+ \tcbdimto\tcb@h@breaksep@middle{\kvtcb@bottomsep+\kvtcb@topsep}%
+ \let\tcb@h@breaksep@last=\kvtcb@topsep%
+ \tcbdimto\tcb@h@padding@first{\kvtcb@bbtop@stand+\kvtcb@bbbottom@break+\kvtcb@top@rule@stand+\kvtcb@bottom@rule@break+\tcb@h@breaksep@first+\kvtcb@boxsep*2+\kvtcb@top+\kvtcb@bottom}%
+ \tcbdimto\tcb@h@padding@middle{\kvtcb@bbtop@break+\kvtcb@bbbottom@break+\kvtcb@top@rule@break+\kvtcb@bottom@rule@break+\tcb@h@breaksep@middle+\kvtcb@boxsep*2+\kvtcb@top+\kvtcb@bottom}%
+ \tcbdimto\tcb@h@padding@last{\kvtcb@bbtop@break+\kvtcb@bbbottom@stand+\kvtcb@top@rule@break+\kvtcb@bottom@rule@stand+\tcb@h@breaksep@last+\kvtcb@boxsep*2+\kvtcb@top+\kvtcb@bottom}%
+ %
+ \tcb@split@setstate@first%
+ %
+ \splittopskip=0pt%
+ \splitmaxdepth=0pt%
+ \edef\tcb@thevfuzz{\the\vfuzz}%
+ \edef\tcb@thevbadness{\the\vbadness}%
+ %
+ \tcb@swap{\tcb@totalupperbox}{\tcb@upperbox}%
+ \tcb@swap{\tcb@totallowerbox}{\tcb@lowerbox}%
+ %
+ \let\tcb@split@next=\relax%
+ \tcbdimto\tcb@split@dim{\tcb@h@page-\tcb@h@padding@first-\tcb@h@padtitle}%
+ \ifdim\tcb@split@dim<\tcb@h@upper\relax%
+ %
+ %
+ \iftcb@break@allowed%
+ \tcb@split@upper@box@and@assemble%
+ \ifnum\tcb@upper@box@badness=1000000\relax%
+ \tcb@split@break@to@start%
+ \else%
+ \ifdim\wd\tcb@totalupperbox=0pt\relax%
+ \iftcb@lowerspace%
+ \tcb@sdraw@U%
+ \let\tcb@split@next=\tcb@split@SL%
+ \else%
+ \tcb@split@force@standalone%
+ \tcb@drawcolorbox@standalone%
+ \fi%
+ \else%
+ \ifdim\dimexpr\tcb@h@upper=0pt\relax%
+ \tcb@warning{Discard zero height first box part due to break problems (possible loss of zero height content)}%
+ \tcb@split@break@to@start%
+ \else%
+ \tcb@sdraw@U%
+ \let\tcb@split@next=\tcb@split@USL%
+ \fi%
+ \fi%
+ \fi%
+ \else%
+ \tcb@split@upper@box%
+ \ifdim\wd\tcb@totalupperbox=0pt\relax%
+ \iftcb@lowerspace%
+ \tcb@sdraw@U%
+ \let\tcb@split@next=\tcb@split@SL%
+ \else%
+ \tcb@split@force@standalone%
+ \tcb@drawcolorbox@standalone%
+ \fi%
+ \else%
+ \tcb@sdraw@U%
+ \let\tcb@split@next=\tcb@split@USL%
+ \fi%
+ \fi%
+ \else%
+ \tcb@swap{\tcb@totalupperbox}{\tcb@upperbox}%
+ \iftcb@lowerspace%
+ \tcbdimto\tcb@split@dim{\tcb@split@dim-\tcb@h@upper-\tcb@h@segment}%
+ \ifdim\tcb@split@dim<\kvtcb@breakminlines\baselineskip\relax%
+ \tcb@sdraw@U%
+ \let\tcb@split@next=\tcb@split@SL%
+ \else
+ \tcb@split@lower@box@and@assemble%
+ \ifnum\tcb@lower@box@badness=1000000\relax%
+ \tcb@sdraw@U%
+ \let\tcb@split@next=\tcb@split@SL%
+ \else%
+ \ifdim\wd\tcb@totallowerbox=0pt\relax%
+ \tcb@split@force@standalone%
+ \tcb@drawcolorbox@standalone%
+ \else%
+ \tcb@sdraw@USL%
+ \let\tcb@split@next=\tcb@split@L%
+ \fi%
+ \fi%
+ \fi%
+ \else%
+ \tcb@split@force@standalone%
+ \tcb@drawcolorbox@standalone%
+ \fi%
+ \fi%
+ \tcb@split@next%
+}
+
+
+\def\tcb@split@force@last{%
+ \tcb@split@setstate@last%
+ \ifdim\tcb@h@total>\tcb@h@page%
+ \tcbdimto\kvtcb@bbbottom{\kvtcb@bbbottom+\tcb@h@page-\tcb@h@total}%
+ \fi%
+}
+
+\def\tcb@nextbreakpart{%
+ \stepcounter{tcbbreakpart}%
+ \tcb@count@boxes%
+ \iftcb@checkpage%
+ \tcb@phantom@savepage%
+ \tcb@hasPhantomtrue%
+ \sbox\tcb@phantombox{\kvtcb@phantom}%
+ \let\kvtcb@phantom\@empty%
+ \fi%
+ \tcb@following@title%
+}
+
+
+\def\tcb@split@USL{%
+ \tcb@nextbreakpart%
+ \tcb@comp@h@page%
+ \tcb@defToTotalHeight\tcb@h@upper{\tcb@totalupperbox}%
+ \tcbdimto\tcb@h@total{\tcb@h@padding@last+\tcb@h@padtitle+\tcb@h@upper+\tcb@h@segment+\tcb@h@lower}%
+ %
+ \let\tcb@split@next=\relax%
+ \tcb@check@for@final@box%
+ \iftcb@final@box%
+ \tcb@split@setstate@last%
+ \tcb@setbox@upper{\tcb@h@upper}{\tcb@totalupperbox}%
+ \iftcb@lowerspace%
+ \tcb@setbox@lower{\tcb@h@lower}{\tcb@totallowerbox}%
+ \tcb@sdraw@USL%
+ \else
+ \tcb@sdraw@U%
+ \fi%
+ \else
+ \tcb@split@setstate@middle%
+ \tcbdimto\tcb@split@dim{\tcb@h@page-\tcb@h@padding@middle-\tcb@h@padtitle}%
+ \ifdim\tcb@split@dim<\tcb@h@upper\relax%
+ \tcb@split@upper@box%
+ \ifdim\wd\tcb@totalupperbox=0pt\relax%
+ \iftcb@lowerspace%
+ \tcb@sdraw@U%
+ \let\tcb@split@next=\tcb@split@SL%
+ \else%
+ \tcb@split@force@last%
+ \tcb@sdraw@U%
+ \fi%
+ \else%
+ \tcb@sdraw@U%
+ \let\tcb@split@next=\tcb@split@USL%
+ \fi%
+ \else%
+ \tcb@setbox@upper{\tcb@h@upper}{\tcb@totalupperbox}%
+ \iftcb@lowerspace%
+ \tcbdimto\tcb@split@dim{\tcb@split@dim-\tcb@h@upper-\tcb@h@segment}
+ \ifdim\tcb@split@dim<\kvtcb@breakminlines\baselineskip\relax%
+ \tcb@sdraw@U%
+ \let\tcb@split@next=\tcb@split@SL%
+ \else
+ \tcb@split@lower@box@and@assemble%
+ \ifnum\tcb@lower@box@badness=1000000\relax%
+ \tcb@sdraw@U%
+ \let\tcb@split@next=\tcb@split@SL%
+ \else%
+ \ifdim\wd\tcb@totallowerbox=0pt\relax%
+ \tcb@split@force@last%
+ \tcb@sdraw@USL%
+ \else%
+ \tcb@sdraw@USL%
+ \let\tcb@split@next=\tcb@split@L%
+ \fi%
+ \fi%
+ \fi%
+ \else%
+ \tcb@split@force@last%
+ \tcb@sdraw@U%
+ \fi%
+ \fi%
+ \fi%
+ \tcb@split@next%
+}
+
+
+\def\tcb@split@SL@displayed{%
+ \tcb@nextbreakpart%
+ \tcb@comp@h@page%
+ \let\tcb@h@upper=\tcb@zpt%
+ \tcb@defToTotalHeight\tcb@h@lower{\tcb@totallowerbox}%
+ \tcbdimto\tcb@h@total{\tcb@h@padding@last-\kvtcb@top-\kvtcb@boxsep+\tcb@h@padtitle+\tcb@h@segment+\tcb@h@lower}%
+ %
+ \let\tcb@split@next=\relax%
+ \tcb@check@for@final@box%
+ \iftcb@final@box%
+ \tcb@split@setstate@last%
+ \tcb@setbox@lower{\tcb@h@lower}{\tcb@totallowerbox}%
+ \tcb@sdraw@SL%
+ \else
+ \tcb@split@setstate@middle%
+ \tcbdimto\tcb@split@dim{\tcb@h@page-\tcb@h@padding@middle+\kvtcb@top+\kvtcb@boxsep-\tcb@h@padtitle-\tcb@h@segment}%
+ \tcb@split@lower@box%
+ \ifdim\wd\tcb@totallowerbox=0pt\relax%
+ \tcb@split@force@last%
+ \tcb@sdraw@SL%
+ \else
+ \tcb@sdraw@SL%
+ \let\tcb@split@next=\tcb@split@L%
+ \fi%
+ \fi%
+ \tcb@split@next%
+}
+
+
+\def\tcb@split@L{%
+ \tcb@nextbreakpart%
+ \tcb@comp@h@page%
+ \let\tcb@h@upper=\tcb@zpt%
+ \tcb@defToTotalHeight\tcb@h@lower{\tcb@totallowerbox}%
+ \tcbdimto\tcb@h@total{\tcb@h@padding@last+\tcb@h@padtitle+\tcb@h@lower}%
+ %
+ \let\tcb@split@next=\relax%
+ \tcb@check@for@final@box%
+ \iftcb@final@box%
+ \tcb@split@setstate@last%
+ \tcb@setbox@lower{\tcb@h@lower}{\tcb@totallowerbox}%
+ \tcb@sdraw@L%
+ \else
+ \tcb@split@setstate@middle%
+ \tcbdimto\tcb@split@dim{\tcb@h@page-\tcb@h@padding@middle-\tcb@h@padtitle}%
+ \tcb@split@lower@box%
+ \ifdim\wd\tcb@totallowerbox=0pt\relax%
+ \tcb@split@force@last%
+ \tcb@sdraw@L%
+ \else
+ \tcb@sdraw@L%
+ \let\tcb@split@next=\tcb@split@L%
+ \fi%
+ \fi%
+ \tcb@split@next%
+}
+
+
+\def\tcb@break@ch@fixed{%
+ \ifdim\tcb@natheight<\tcb@h@page\relax%
+ \tcbdimto\kvtcb@height@fixed{\tcb@h@page-\kvtcb@bbtop-\kvtcb@bbbottom}%
+ \tcb@ch@fixed%
+ \else%
+ \tcb@ch@natural%
+ \fi%
+}
+
+
+\def\tcb@sdraw@USL{%
+ \begingroup%
+ \tcbset{skin=\csname kvtcb@skin@@\tcb@split@state\endcsname}%
+ \csuse{tcb@extras@\tcb@split@state}%
+ \tcb@afteroptions@hook%
+ \def\tcbsegmentstate{1}%
+ \tcbdimto\tcb@natheight{\tcb@h@padtitle+\kvtcb@top@rule+\kvtcb@bottom@rule+\kvtcb@boxsep*2+\kvtcb@top+\kvtcb@bottom+\tcb@h@upper+\tcb@h@segment+\tcb@h@lower+\csname tcb@h@breaksep@\tcb@split@state\endcsname}%
+ \csname tcb@break@ch@\tcb@split@state\endcsname%
+ \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%
+ \tcb@extensions@preframe%
+ % draw frame and interior
+ \tcb@adraw@frame%
+ \tcb@adraw@interior%
+ \iftcb@lowerseparated%
+ \tcb@segmentation@code%
+ \fi%
+ \tcb@adraw@title%
+ \tcb@extensions@postframe%
+ % draw text boxes
+ \tcb@tdraw@title%
+ \tcb@tdraw@upper%
+ \tcb@tdraw@lower%
+ \tcb@extensions@final%
+ \tcb@drawing@env@end%
+ \endgroup%
+}
+
+
+\def\tcb@sdraw@U{%
+ \begingroup%
+ \tcbset{skin=\csname kvtcb@skin@@\tcb@split@state\endcsname}%
+ \csuse{tcb@extras@\tcb@split@state}%
+ \tcb@afteroptions@hook%
+ \def\tcbsegmentstate{0}%
+ \tcbdimto\tcb@natheight{\tcb@h@padtitle+\kvtcb@top@rule+\kvtcb@bottom@rule+\kvtcb@boxsep*2+\kvtcb@top+\kvtcb@bottom+\tcb@h@upper+\csname tcb@h@breaksep@\tcb@split@state\endcsname}%
+ \csname tcb@break@ch@\tcb@split@state\endcsname%
+ \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%
+ \tcb@extensions@preframe%
+ % draw frame and interior
+ \tcb@adraw@frame%
+ \tcb@adraw@interior%
+ \tcb@adraw@title%
+ \tcb@extensions@postframe%
+ % draw text boxes
+ \tcb@tdraw@title%
+ \tcb@tdraw@upper%
+ \tcb@extensions@final%
+ \tcb@drawing@env@end%
+ \endgroup%
+}
+
+
+\def\tcb@sdraw@SL{%
+ \begingroup%
+ \tcbset{skin=\csname kvtcb@skin@@\tcb@split@state\endcsname}%
+ \csuse{tcb@extras@\tcb@split@state}%
+ \tcb@afteroptions@hook%
+ \def\tcbsegmentstate{1}%
+ \tcbdimto\tcb@natheight{\tcb@h@padtitle+\kvtcb@top@rule+\kvtcb@bottom@rule+\kvtcb@bottom+\kvtcb@boxsep+\tcb@h@segment+\tcb@h@lower+\csname tcb@h@breaksep@\tcb@split@state\endcsname}%
+ \csname tcb@break@ch@\tcb@split@state\endcsname%
+ \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%
+ \tcb@extensions@preframe%
+ % draw frame and interior
+ \tcb@adraw@frame%
+ \tcb@adraw@interior%
+ \iftcb@lowerseparated%
+ \tcb@segmentation@code%
+ \fi%
+ \tcb@adraw@title%
+ \tcb@extensions@postframe%
+ % draw text boxes
+ \tcb@tdraw@title%
+ \tcb@tdraw@lower%
+ \tcb@extensions@final%
+ \tcb@drawing@env@end%
+ \endgroup%
+}
+
+
+\def\tcb@sdraw@L{%
+ \begingroup%
+ \tcbset{skin=\csname kvtcb@skin@@\tcb@split@state\endcsname}%
+ \csuse{tcb@extras@\tcb@split@state}%
+ \tcb@afteroptions@hook%
+ \def\tcbsegmentstate{2}%
+ \tcbdimto\tcb@natheight{\tcb@h@padtitle+\kvtcb@top@rule+\kvtcb@bottom@rule+\kvtcb@boxsep*2+\kvtcb@top+\kvtcb@bottom+\ht\tcb@lowerbox+\dp\tcb@lowerbox+\csname tcb@h@breaksep@\tcb@split@state\endcsname}%
+ \csname tcb@break@ch@\tcb@split@state\endcsname%
+ \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%
+ \tcb@extensions@preframe%
+ % draw frame and interior
+ \tcb@adraw@frame%
+ \tcb@adraw@interior%
+ \tcb@adraw@title%
+ \tcb@extensions@postframe%
+ % draw text boxes
+ \tcb@tdraw@title%
+ \tcb@tdraw@lower%
+ \tcb@extensions@final%
+ \tcb@drawing@env@end%
+ \endgroup%
+}
+
+
+
+\tcbset{%
+ breakable@true/.code={%
+ \let\tcb@savebox=\tcb@vbox%
+ \let\endtcb@savebox=\endtcb@vbox%
+ \let\tcb@defToTotalHeight=\tcb@defToTotalHeightBreakable%
+ \let\tcb@drawcolorbox=\tcb@drawcolorbox@breakable},
+ breakable@unlimited/.code={%
+ \let\tcb@savebox=\tcb@vbox%
+ \let\endtcb@savebox=\endtcb@vbox%
+ \let\tcb@defToTotalHeight=\tcb@defToTotalHeightUnlimited%
+ \let\tcb@drawcolorbox=\tcb@drawcolorbox@breakable},
+ breakable/.style={breakable@#1},
+ breakable/.default=true,%
+ unbreakable/.style={breakable=false},%
+ enforce breakable/.code={%
+ \let\tcb@savebox=\tcb@vbox%
+ \let\endtcb@savebox=\endtcb@vbox%
+ \let\tcb@defToTotalHeight=\tcb@defToTotalHeightBreakable%
+ \let\tcb@drawcolorbox=\tcb@drawcolorbox@breakable},
+ title after break/.store in=\kvtcb@followingtitle,%
+ notitle after break/.style={title after break=},%
+ adjusted title after break/.style={title after break={#1\vphantom{\kvtcb@adjusttext}}},%
+ lines before break/.store in=\kvtcb@breakminlines,%
+ shrink break goal/.store in=\kvtcb@shrinkbreakgoal,%
+ toprule at break/.store in=\kvtcb@top@rule@break,
+ bottomrule at break/.store in=\kvtcb@bottom@rule@break,
+ topsep at break/.store in=\kvtcb@topsep,%
+ bottomsep at break/.store in=\kvtcb@bottomsep,%
+ pad before break/.code={\let\kvtcb@bottom@rule@break=\tcb@zpt%
+ \tcbdimto\kvtcb@bottomsep{#1-\kvtcb@bottom-\kvtcb@boxsep}},%
+ pad before break*/.style={pad before break={#1},%
+ code={\tcbdimto\tcb@temp{\kvtcb@bottom@rule@stand-\kvtcb@bottomsep}%
+ \ifdim\tcb@temp>0pt\relax%
+ \tcbdimto\kvtcb@enlargepage@flex{\kvtcb@enlargepage@flex+\tcb@temp}\fi}},%
+ pad after break/.code={\let\kvtcb@top@rule@break=\tcb@zpt%
+ \def\kvtcb@topsep{#1-\kvtcb@top-\kvtcb@boxsep}},%
+ pad at break/.style={pad before break={#1},pad after break={#1}},%
+ pad at break*/.style={pad before break*={#1},pad after break={#1}},%
+ enlargepage/.store in=\kvtcb@enlargepage,%
+ enlargepage flexible/.store in=\kvtcb@enlargepage@flex,%
+ break at/.store in=\kvtcb@breakatdim,%
+ height fixed for/.is choice,%
+ height fixed for/none/.code={%
+ \let\tcb@break@ch@first=\tcb@ch@natural%
+ \let\tcb@break@ch@middle=\tcb@ch@natural%
+ \let\tcb@break@ch@last=\tcb@ch@natural},%
+ height fixed for/first/.code={%
+ \let\tcb@break@ch@first=\tcb@break@ch@fixed%
+ \let\tcb@break@ch@middle=\tcb@ch@natural%
+ \let\tcb@break@ch@last=\tcb@ch@natural},%
+ height fixed for/middle/.code={%
+ \let\tcb@break@ch@first=\tcb@ch@natural%
+ \let\tcb@break@ch@middle=\tcb@break@ch@fixed%
+ \let\tcb@break@ch@last=\tcb@ch@natural},%
+ height fixed for/last/.code={%
+ \let\tcb@break@ch@first=\tcb@ch@natural%
+ \let\tcb@break@ch@middle=\tcb@ch@natural%
+ \let\tcb@break@ch@last=\tcb@break@ch@fixed},%
+ height fixed for/first and middle/.code={%
+ \let\tcb@break@ch@first=\tcb@break@ch@fixed%
+ \let\tcb@break@ch@middle=\tcb@break@ch@fixed%
+ \let\tcb@break@ch@last=\tcb@ch@natural},%
+ height fixed for/middle and last/.code={%
+ \let\tcb@break@ch@first=\tcb@ch@natural%
+ \let\tcb@break@ch@middle=\tcb@break@ch@fixed%
+ \let\tcb@break@ch@last=\tcb@break@ch@fixed},%
+ height fixed for/all/.code={%
+ \let\tcb@break@ch@first=\tcb@break@ch@fixed%
+ \let\tcb@break@ch@middle=\tcb@break@ch@fixed%
+ \let\tcb@break@ch@last=\tcb@break@ch@fixed},%
+ vfill before first/.is if=tcb@vfillbeforefirst,%
+ height fill/true/.code={\let\tcb@height@adjust\tcb@height@fill@unbroken@normal},%
+ height fill/maximum/.code={\let\tcb@height@adjust\tcb@height@fill@unbroken@compressed},%
+ height fill/.default=true,%
+ compress page/.is choice,%
+ compress page/all/.code={\def\tcb@comp@compress{\def\tcb@compress@height{\pageshrink-1sp}}},%
+ compress page/none/.code={\def\tcb@comp@compress{\let\tcb@compress@height\tcb@zpt}},%
+ compress page/baselineskip/.code={\def\tcb@comp@compress{%
+ \ifdim\pageshrink>\baselineskip%
+ \let\tcb@compress@height\baselineskip%
+ \else%
+ \def\tcb@compress@height{\pageshrink-1sp}%
+ \fi}},%
+ compress page/.default=all,%
+ compress page=baselineskip,% global setting
+ extras unbroken/.code={\appto\tcb@extras@unbroken{\tcbset{#1}}},%
+ extras first/.code={\appto\tcb@extras@first{\tcbset{#1}}},%
+ extras middle/.code={\appto\tcb@extras@middle{\tcbset{#1}}},%
+ extras last/.code={\appto\tcb@extras@last{\tcbset{#1}}},%
+ extras title after break/.code={\appto\tcb@extras@followingtitle{\tcbset{#1}}},%
+ extras/.style={extras unbroken={#1},extras first={#1},extras middle={#1},extras last={#1}},%
+ extras broken/.style={extras first={#1},extras middle={#1},extras last={#1}},%
+ extras unbroken and first/.style={extras unbroken={#1},extras first={#1}},%
+ extras unbroken and last/.style={extras unbroken={#1},extras last={#1}},%
+ extras middle and last/.style={extras middle={#1},extras last={#1}},%
+ extras first and middle/.style={extras first={#1},extras middle={#1}},%
+ no extras unbroken/.code={\let\tcb@extras@unbroken\@empty},%
+ no extras first/.code={\let\tcb@extras@first\@empty},%
+ no extras middle/.code={\let\tcb@extras@middle\@empty},%
+ no extras last/.code={\let\tcb@extras@last\@empty},%
+ no extras title after break/.code={\let\tcb@extras@followingtitle\@empty},
+ no extras/.code={\let\tcb@extras@unbroken\@empty\let\tcb@extras@first\@empty\let\tcb@extras@middle\@empty\let\tcb@extras@last\@empty\let\tcb@extras@followingtitle\@empty},%
+ if odd page*/.style 2 args={check odd page,extras={if odd page={#1}{#2}}},%
+ if odd page or oneside*/.style 2 args={check odd page,extras={if odd page or oneside={#1}{#2}}},%
+ segmentation at break/.is choice,%
+ segmentation at break/true/.code={\let\tcb@split@SL\tcb@split@SL@displayed},
+ segmentation at break/false/.code={\let\tcb@split@SL\tcb@split@L},
+ segmentation at break/.default=true,
+}
+
+
+\tcbset{%
+ reset@breakable/.style={%
+ unbreakable,notitle after break,
+ shrink break goal=0pt,
+ lines before break=2,
+ topsep at break=0pt,
+ bottomsep at break=0pt,
+ enlargepage=0pt,enlargepage flexible=0pt,
+ break at=0pt,
+ height fixed for=none,
+ vfill before first=false,
+ no extras,
+ segmentation at break
+ },
+ initialize@reset=reset@breakable,
+}
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=,
+}
diff --git a/macros/latex/contrib/tcolorbox/tcbexternal.code.tex b/macros/latex/contrib/tcolorbox/tcbexternal.code.tex
new file mode 100644
index 0000000000..0f3f68546f
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcbexternal.code.tex
@@ -0,0 +1,286 @@
+%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% tcbexternal.code.tex: Code for externalization
+%%
+%% -------------------------------------------------------------------------------------------
+%% 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{pro@cessing}
+
+{
+\catcode`\"=12
+\xdef\tcbexternal@normal@dq{"}
+\catcode`\"=13
+\gdef\tcbexternal@activate@normal@dq{\let"=\tcbexternal@normal@dq}
+}
+
+\long\def\tcbifexternal#1#2{%
+ \ifdefined\TCBEXTERNALINPUT%
+ #1%
+ \else%
+ #2%
+ \fi%
+}
+
+\tcbifexternal{%
+ \def\tcbEXTERNALIZE{%
+ \RequirePackage{incgraph}%
+ \TCBEXTERNALPREAMBLE%
+ \begin{document}%
+ \begin{inctext}[border=\TCBEXTERNALSAFETY]%
+ \input{\TCBEXTERNALINPUT}%
+ \end{inctext}%
+ \end{document}%
+ }%
+}{%
+ \def\tcbEXTERNALIZE{%
+ \tcbset{
+ external/.cd,
+ externalize/.is if=tcb@externalize,
+ externalize=true,
+ }%
+ }%
+}
+
+\@onlypreamble\tcbEXTERNALIZE
+
+\def\tcbexternal@setbasename#1{%
+ \edef\tcbexternal@job@name{\expandonce{\tcbexternal@prefix}\expandonce{#1}}%
+ \edef\tcbexternal@job@mdfive{\expandonce{\tcbexternal@job@name.md5}}%
+ \edef\tcbexternal@job@source{\expandonce{\tcbexternal@job@name.tex}}%
+ \edef\tcbexternal@job@pdf{\expandonce{\tcbexternal@job@name.pdf}}%
+}
+
+\def\tcbexternal@corecompile{%
+ \begingroup%
+ \ifnum\the\catcode`\"=13 \tcbexternal@activate@normal@dq\fi%
+ \message{=== Compile external '\tcbexternal@job@name': }%
+ \immediate\openout\tcb@out="\tcbexternal@run@tex"
+ \immediate\write\tcb@out{\string\gdef\string\TCBEXTERNALINPUT{"\tcbexternal@job@source"}}%
+ \immediate\write\tcb@out{\string\gdef\string\TCBEXTERNALSAFETY{\tcbexternal@safety}}%
+ \immediate\write\tcb@out{\string\gdef\string\TCBEXTERNALPREAMBLE{\expandonce{\tcbexternal@preamble}}}%
+ \ifdefempty{\tcbexternal@preclass}{}{\immediate\write\tcb@out{\expandonce{\tcbexternal@preclass}}}%
+ \immediate\write\tcb@out{\string\input{"\jobname.tex"}}%
+ \immediate\closeout\tcb@out%
+ \foreach \n in {1,...,\tcbexternal@runs}
+ {%
+ \ShellEscape{%
+ \tcbexternal@compiler\space
+ -shell-escape
+ -halt-on-error
+ -interaction=batchmode
+ -jobname="\tcbexternal@job@name"
+ "\tcbexternal@run@tex"
+ }%
+ }%
+ \endgroup%
+}
+
+\def\tcbexternal@compile#1{%
+ \tcbiffileprocess{#1}%
+ {\tcbexternal@job@source}{\tcbexternal@job@mdfive}{\tcbexternal@job@pdf}%
+ {\tcbexternal@corecompile}{}%
+}
+
+\def\tcbexternal@inputsource{%
+ \IfFileExists{\tcbexternal@job@source}%
+ {\input{\tcbexternal@job@source}}%
+ {\tcb@error{File '\tcbexternal@job@source' missing.}{}}%
+}
+
+\def\tcbexternal@pdfmissing@warning{%
+ \tcb@warning{File '\tcbexternal@job@pdf' missing.
+ Compilation error or shell-escape wasn't enabled or a subdirectory could'nt be generated}%
+ \message{Load '\tcbexternal@job@source' instead}%
+ \tcbexternal@inputsource%
+}
+
+\def\tcbexternal@pdfmissing@error{%
+ \tcb@error{File '\tcbexternal@job@pdf' missing.
+ Compilation error or shell-escape wasn't enabled or a subdirectory could'nt be generated}{}%
+}
+
+\def\tcbexternal@inputpdf{%
+ \IfFileExists{\tcbexternal@job@pdf}%
+ {%
+ \begingroup\edef\x{\endgroup%
+ \noexpand\includegraphics[trim=\tcbexternal@safety\space\tcbexternal@safety%
+ \space\tcbexternal@safety\space\tcbexternal@safety]{\expandonce{\tcbexternal@job@pdf}}}%
+ \x%
+ }%
+ {\tcbexternal@pdfmissing}%
+}
+
+\newif\iftcb@externalize
+\tcb@externalizefalse
+
+\def\tcb@useexternal{%
+ \iftcb@externalize%
+ \tcbexternal@compile{\tcbexternal@condition}%
+ \tcbexternal@inputpdf%
+ \else%
+ \tcbexternal@compile{2}%
+ \tcbexternal@inputsource%
+ \fi%
+}
+
+\newenvironment{tcbexternal}[2][]{%
+ \tcbset{external/.cd,#1,name=#2}%
+ \@ifundefined{@tcbexternal@JN@\tcbexternal@job@name}{%
+ \global\@namedef{@tcbexternal@JN@\tcbexternal@job@name}{}%
+ }{%
+ \tcb@error{External job name '\tcbexternal@job@name' already used}%
+ {Give a new unique name to the current external job.}%
+ }%
+ \begingroup%
+ \let\tcb@verbatim@begin@hook=\tcbexternal@out@begin%
+ \let\tcb@verbatim@end@hook=\tcbexternal@out@end%
+ \tcbverbatimwrite{\tcbexternal@job@source}}%
+{%
+ \endtcbverbatimwrite\endgroup%
+ \tcb@useexternal%
+}
+
+\long\def\new@tcb@externalizeenvironment#1#2#3#4#5{%
+ \tcb@newenvironment{#1}[2][]{%
+ #4%
+ \begingroup%
+ \tcbexternal[#3,##1,environment=#2]{##2}%
+ }{%
+ \endtcbexternal%
+ \endgroup%
+ #5%
+ }%
+}
+
+\def\newtcbexternalizeenvironment{%
+ \let\tcb@newenvironment\newenvironment%
+ \new@tcb@externalizeenvironment%
+}
+
+\def\renewtcbexternalizeenvironment{%
+ \let\tcb@newenvironment\renewenvironment%
+ \new@tcb@externalizeenvironment%
+}
+
+\long\def\new@tcb@externalizetcolorbox#1#2#3#4{%
+ \new@tcb@externalizeenvironment{#1}{#2}%
+ {preamble tcbset={force nobeforeafter},#3}%
+ {\tcb@layer@pushup\tcb@apply@box@options{#4}\tcb@set@normal@unbroken@beforeafter\tcb@before@unbroken}%
+ {\tcb@after@unbroken}%
+}
+
+\def\newtcbexternalizetcolorbox{%
+ \let\tcb@newenvironment\newenvironment%
+ \new@tcb@externalizetcolorbox%
+}
+
+\def\renewtcbexternalizetcolorbox{%
+ \let\tcb@newenvironment\renewenvironment%
+ \new@tcb@externalizetcolorbox%
+}
+
+
+\newtcbexternalizeenvironment{extikzpicture}{tikzpicture}{}{}{}
+
+\newtcbexternalizetcolorbox{extcolorbox}{tcolorbox}{}{}
+
+
+\tcbset{
+ external/.cd,
+ %
+ runner/.code={%
+ \edef\tcbexternal@run@tex{\expandonce{#1}}%
+ },
+ %
+ prefix/.store in=\tcbexternal@prefix,
+ compiler/.store in=\tcbexternal@compiler,
+ runs/.code={\numdef\tcbexternal@runs{#1}},
+ name/.code={\tcbexternal@setbasename{#1}},
+ safety/.store in=\tcbexternal@safety,
+ preamble/.code={\appto\tcbexternal@preamble{#1}},
+ preamble tcbset/.code={\appto\tcbexternal@preamble{\tcbset{#1}}},
+ clear preamble/.code={\def\tcbexternal@preamble{}},
+ preclass/.code={\appto\tcbexternal@preclass{#1}},
+ clear preclass/.code={\def\tcbexternal@preclass{}},
+ PassOptionsToPackage/.code 2 args={\appto\tcbexternal@preclass{\PassOptionsToPackage{#1}{#2}}},
+ PassOptionsToClass/.code 2 args={\appto\tcbexternal@preclass{\PassOptionsToClass{#1}{#2}}},
+ externalize/.code={},
+ -/.style={/tcb/external/externalize=false},
+ %
+ force remake/.is choice,
+ force remake/true/.code={\def\tcbexternal@condition{0}},
+ force remake/false/.code={\def\tcbexternal@condition{1}},
+ force remake/.default=true,
+ !/.style={/tcb/external/force remake},
+ %
+ input source on error/.is choice,
+ input source on error/true/.code={\let\tcbexternal@pdfmissing=\tcbexternal@pdfmissing@warning},
+ input source on error/false/.code={\let\tcbexternal@pdfmissing=\tcbexternal@pdfmissing@error},
+ input source on error/.default=true,
+ %
+ plain/.code={%
+ \let\tcbexternal@out@begin=\@empty%
+ \let\tcbexternal@out@end=\@empty%
+ },
+ minipage/.code={%
+ \appto\tcbexternal@out@begin{\immediate\write\tcb@out{\string\begin{minipage}{\the\dimexpr#1\relax}\string\ignorespaces\@percentchar}}%
+ \preto\tcbexternal@out@end{\immediate\write\tcb@out{\string\end{minipage}\@percentchar}}%
+ },
+ minipage/.default=\linewidth,
+ %
+ environment with percent/.is choice,
+ environment with percent/true/.style={%
+ /tcb/external/environment/.code={%
+ \appto\tcbexternal@out@begin{\immediate\write\tcb@out{\string\begin{##1}\@percentchar}}%
+ \preto\tcbexternal@out@end{\immediate\write\tcb@out{\string\end{##1}\@percentchar}}%
+ }
+ },
+ environment with percent/false/.style={%
+ /tcb/external/environment/.code={%
+ \appto\tcbexternal@out@begin{\immediate\write\tcb@out{\string\begin{##1}}}%
+ \preto\tcbexternal@out@end{\immediate\write\tcb@out{\string\end{##1}}}%
+ }
+ },
+ environment with percent/.default=true,
+ %
+ runner=\jobname_run.tex,
+ prefix={external/},
+ compiler=pdflatex,
+ runs=1,
+ name=unnamed,
+ safety=2mm,
+ clear preamble,
+ clear preclass,
+ force remake=false,
+ input source on error,
+ environment with percent,
+ plain
+}
+
+\tcbset{%
+ externalize example/.style={%
+ external/name=#1,tempfile=\tcbexternal@job@source,
+ code={\let\tcbusetemp=\tcb@useexternal}%
+ },
+ externalize example!/.style={externalize example=#1,external/force remake},
+ externalize listing/.style={%
+ external/name=#1,listing file=\tcbexternal@job@source,
+ code={\let\tcbuselistingtext@input=\tcb@useexternal}%
+ },
+ externalize listing!/.style={externalize listing=#1,external/force remake},
+}
diff --git a/macros/latex/contrib/tcolorbox/tcbfitting.code.tex b/macros/latex/contrib/tcolorbox/tcbfitting.code.tex
new file mode 100644
index 0000000000..7e32bdec72
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcbfitting.code.tex
@@ -0,0 +1,397 @@
+%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% tcbfitting.code.tex: Code for fit boxes
+%%
+%% -------------------------------------------------------------------------------------------
+%% 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
+%%
+%\makeatletter
+\tcb@set@library@version{4.20}
+
+\newdimen\tcbfitdim
+\newdimen\tcb@lowerfitdim
+\newdimen\tcb@upperfitdim
+\newif\iftcb@continue
+
+\tcbset{%
+ fit/.style={capture=fitbox},%
+ fit to/.style args={#1 and #2}{capture=fitbox,width=#1,height=#2},%
+ fit to height/.style={capture=fitbox,height=#1},%
+ fit basedim/.code={\def\kvtcb@fit@basedim{#1}\tcbfitdim\kvtcb@fit@basedim},%
+ fit skip/.store in=\kvtcb@fit@skip,%
+ fit fontsize macros/.code={%
+ \renewcommand\tiny{\tcb@setfontsize\tiny{0.5}}%
+ \renewcommand\scriptsize{\tcb@setfontsize\scriptsize{0.7}}%
+ \renewcommand\footnotesize{\tcb@setfontsize\footnotesize{0.8}}%
+ \renewcommand\small{\tcb@setfontsize\small{0.9}}%
+ \renewcommand\normalsize{\tcb@setfontsize\normalsize{1}}%
+ \renewcommand\large{\tcb@setfontsize\large{1.2}}%
+ \renewcommand\Large{\tcb@setfontsize\Large{1.44}}%
+ \renewcommand\LARGE{\tcb@setfontsize\LARGE{1.728}}%
+ \renewcommand\huge{\tcb@setfontsize\huge{2.0736}}%
+ \renewcommand\Huge{\tcb@setfontsize\Huge{2.48832}}},%
+ fit height plus/.style={fit,height plus=#1},%
+ fit width plus/.dimstore in=\kvtcb@fit@plus@width,%
+ fit height from/.style args={#1 to #2}{fit,height from={#1} to {#2}},
+ fit width from/.style args={#1 to #2}{fit,width={#1},fit width plus={#2-#1}},
+ fit maxstep/.store in=\kvtcb@fit@maxstep,%
+ fit maxfontdiff/.store in=\kvtcb@fit@maxfontdiff,%
+ fit maxfontdiffgap/.store in=\kvtcb@fit@maxfontdiffgap,%
+ fit maxwidthdiff/.store in=\kvtcb@fit@maxwidthdiff,%
+ fit maxwidthdiffgap/.store in=\kvtcb@fit@maxwidthdiffgap,%
+ fit warning/.is choice,
+ fit warning/on/.code={\let\tcb@fit@warn@begin=\@empty%
+ \let\tcb@fit@warn@end=\@empty},
+ fit warning/off/.code={\def\tcb@fit@warn@begin{\hbadness=10000\relax}%
+ \let\tcb@fit@warn@end=\@empty},
+ fit warning/final/.code={\tcb@cur@hbadness=\hbadness\def\tcb@fit@warn@begin{\hbadness=10000\relax}%
+ \def\tcb@fit@warn@end{\hbadness=\tcb@cur@hbadness\relax\tcb@fit@@box}},
+ fit algorithm/.is choice,
+ fit algorithm/fontsize/.code={\let\tcbox@fitalgorithm=\tcbox@fitalgorithm@fontsize},
+ fit algorithm/fontsize*/.code={\let\tcbox@fitalgorithm=\tcbox@fitalgorithm@fontsize@star},
+ fit algorithm/areasize/.code={\let\tcbox@fitalgorithm=\tcbox@fitalgorithm@areasize},
+ fit algorithm/areasize*/.code={\let\tcbox@fitalgorithm=\tcbox@fitalgorithm@areasize@star},
+ fit algorithm/hybrid/.code={\let\tcbox@fitalgorithm=\tcbox@fitalgorithm@hybrid},
+ fit algorithm/hybrid*/.code={\let\tcbox@fitalgorithm=\tcbox@fitalgorithm@hybrid@star},
+ fit algorithm/squeeze/.code={\let\tcbox@fitalgorithm=\tcbox@fitalgorithm@squeeze},
+ spartan@fit/.style={fit algorithm=squeeze},
+}
+
+\def\tcb@@capture@fitbox{%
+ \let\endtcolorbox=\relax%
+ \Collect@Body\tcbox@inner@fitbox@collected%
+}
+
+\def\tcbfontsize#1{\fontsize{#1\tcbfitdim}{#1\dimexpr\kvtcb@fit@skip\tcbfitdim}\selectfont}
+
+\def\tcb@setfontsize#1#2{\@setfontsize#1{#2\tcbfitdim}{#2\dimexpr\kvtcb@fit@skip\tcbfitdim}}
+
+\long\def\tcbox@inner@fitbox@collected#1{%
+ \tcbox@inner@fitbox{#1}%
+ \tcb@finalize@environment%
+}
+
+\newcount\tcb@cur@hbadness
+
+\def\tcbox@fitalgorithm@fontsize{%
+ \tcb@continuetrue%
+ \loop%
+ \tcbfitdim.5\tcbfitdim%
+ \tcb@fit@@box%
+ \ifnum\count@=\kvtcb@fit@maxstep\relax%
+ \tcb@continuefalse%
+ \else%
+ \ifdim\dimexpr\tcb@fit@@h>\tcb@fit@@target\relax%
+ \ifdim\tcbfitdim<18000sp\relax%
+ \count@\kvtcb@fit@maxstep\relax%
+ \tcb@continuefalse%
+ \fi%
+ \else%
+ \tcb@continuefalse%
+ \fi%
+ \fi%
+ \iftcb@continue \repeat%
+ \ifnum\count@<\kvtcb@fit@maxstep\relax%
+ \tcbdimto\tcb@fit@@gap{\tcb@fit@@target-\tcb@fit@@h}%
+ \tcb@lowerfitdim\tcbfitdim%
+ \tcb@upperfitdim2\tcbfitdim%
+ \tcbfitdim1.5\tcbfitdim%
+ \loop%
+ \tcb@fit@@box%
+ \tcb@continuetrue%
+ \ifnum\count@<\kvtcb@fit@maxstep\relax%
+ \ifdim\dimexpr\tcb@upperfitdim-\tcb@lowerfitdim<\kvtcb@fit@maxfontdiff\relax%
+ \tcb@continuefalse%
+ \else%
+ \ifdim\dimexpr\tcb@upperfitdim-\tcb@lowerfitdim<\kvtcb@fit@maxfontdiffgap\relax%
+ \ifdim\dimexpr\tcb@fit@@gap<\tcb@fit@@line\relax%
+ \tcb@continuefalse%
+ \fi%
+ \fi%
+ \fi%
+ \else%
+ \tcb@continuefalse%
+ \fi%
+ \iftcb@continue%
+ \ifdim\dimexpr\tcb@fit@@h>\tcb@fit@@target\relax%
+ \tcb@upperfitdim\tcbfitdim%
+ \advance\tcbfitdim\tcb@lowerfitdim%
+ \tcbfitdim0.5\tcbfitdim%
+ \else%
+ \tcbdimto\tcb@fit@@gap{\tcb@fit@@target-\tcb@fit@@h}%
+ \tcb@lowerfitdim\tcbfitdim%
+ \advance\tcbfitdim\tcb@upperfitdim%
+ \tcbfitdim0.5\tcbfitdim%
+ \fi%
+ \else%
+ \ifdim\dimexpr\tcb@fit@@h>\tcb@fit@@target\relax%
+ \tcbfitdim\tcb@lowerfitdim%
+ \tcb@fit@@box%
+ \fi%
+ \fi%
+ \iftcb@continue \repeat%
+ \fi%
+}
+
+\def\tcbox@fitalgorithm@fontsize@star{%
+ \tcbox@fitalgorithm@fontsize%
+ \tcb@resize@box{\tcb@upperbox}{\tcb@w@upper}{\tcb@fit@@target}%
+ \tcbdimto\tcb@fit@@h{\ht\tcb@upperbox+\dp\tcb@upperbox}%
+}
+
+\def\tcbox@fitalgorithm@areasize@core{%
+ \pgfmathdivide{\tcb@fit@@h}{\tcb@fit@@target}%
+ \pgfmathsqrt{\pgfmathresult}%
+ \let\tcb@temp=\pgfmathresult%
+ \tcbdimto\tcb@w@upper@temp{\pgfmathresult\dimexpr\tcb@w@upper}%
+ \tcb@fit@@boxsave{\tcb@w@upper@temp}%
+ %
+ \tcbdimto\tcb@fit@@h{\ht\tcb@upperbox+\dp\tcb@upperbox}%
+ \pgfmathdivide{\tcb@fit@@h}{\tcb@fit@@target}%
+ \pgfmathdivide{\pgfmathresult}{\tcb@temp}%
+ \pgfmathsqrt{\pgfmathresult}%
+ \ifdim\dimexpr\pgfmathresult pt<0.98pt\relax
+ \tcbdimto\tcb@w@upper@temp{\pgfmathresult\dimexpr\tcb@w@upper@temp}%
+ \tcb@fit@@boxsave{\tcb@w@upper@temp}%
+ \else\ifdim\dimexpr\pgfmathresult pt>1.02pt\relax
+ \tcbdimto\tcb@w@upper@temp{\pgfmathresult\dimexpr\tcb@w@upper@temp}%
+ \tcb@fit@@boxsave{\tcb@w@upper@temp}%
+ \fi\fi%
+ %
+ \tcbdimto\tcb@fit@@h{\ht\tcb@upperbox+\dp\tcb@upperbox}%
+}
+
+\def\tcbox@fitalgorithm@areasize{%
+ \tcbox@fitalgorithm@areasize@core%
+ \pgfmathdivide{\tcb@w@upper}{\tcb@w@upper@temp}%
+ \tcbdimto\tcb@fit@@h{\pgfmathresult\dimexpr\tcb@fit@@h}%
+ \ifdim\dimexpr\tcb@fit@@h>\tcb@fit@@target\relax%
+ \let\tcb@fit@@h=\tcb@fit@@target%
+ \fi
+ \tcb@resize@box{\tcb@upperbox}{\tcb@w@upper}{\tcb@fit@@h}%
+ %
+ \tcbdimto\tcb@fit@@h{\ht\tcb@upperbox+\dp\tcb@upperbox}%
+}
+
+\def\tcbox@fitalgorithm@areasize@star{%
+ \tcbox@fitalgorithm@areasize@core%
+ \tcb@resize@box{\tcb@upperbox}{\tcb@w@upper}{\tcb@fit@@target}%
+ \tcbdimto\tcb@fit@@h{\ht\tcb@upperbox+\dp\tcb@upperbox}%
+}
+
+\def\tcbox@fitalgorithm@squeeze{%
+ \tcb@resize@box{\tcb@upperbox}{\tcb@w@upper}{\tcb@fit@@target}%
+ \tcbdimto\tcb@fit@@h{\ht\tcb@upperbox+\dp\tcb@upperbox}%
+}
+
+\def\tcbox@fitalgorithm@hybrid@core{%
+ \pgfmathdivide{\tcb@fit@@target}{\tcb@fit@@h}%
+ \pgfmathsqrt{\pgfmathresult}%
+ \tcbfitdim=\pgfmathresult\tcbfitdim%
+ \tcb@fit@@box%
+ %
+ \pgfmathdivide{\tcb@fit@@target}{\tcb@fit@@h}%
+ \pgfmathsqrt{\pgfmathresult}%
+ \ifdim\dimexpr\pgfmathresult pt<0.85pt\relax
+ \tcbfitdim=\pgfmathresult\tcbfitdim%
+ \tcb@fit@@box%
+ \else\ifdim\dimexpr\pgfmathresult pt>1.15pt\relax
+ \tcbfitdim=\pgfmathresult\tcbfitdim%
+ \tcb@fit@@box%
+ \fi\fi%
+}
+
+\def\tcbox@fitalgorithm@hybrid{%
+ \tcbox@fitalgorithm@hybrid@core%
+ \tcbox@fitalgorithm@areasize%
+}
+
+\def\tcbox@fitalgorithm@hybrid@star{%
+ \tcbox@fitalgorithm@hybrid@core%
+ \tcbox@fitalgorithm@areasize@star%
+}
+
+\def\tcb@fit@@box{%
+ \iftcb@hasTitle%
+ \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}%
+ \tcbdimto\tcb@h@titletotal{\ht\tcb@titlebox+\dp\tcb@titlebox+\kvtcb@title@rule+(\kvtcb@boxsep)*2+\kvtcb@toptitle+\kvtcb@bottomtitle}%
+ \else%
+ \let\tcb@h@titletotal=\tcb@zpt%
+ \fi%
+ \tcbdimto\tcb@fit@@line{\kvtcb@fit@skip\tcbfitdim}%
+ \tcbdimto\tcb@w@upper{\kvtcb@width-(\kvtcb@left@rule)-(\kvtcb@right@rule)-(\kvtcb@boxsep)*2-(\kvtcb@leftupper)-(\kvtcb@rightupper)}%
+ \tcb@fit@@boxsave{\tcb@w@upper}%
+ \tcbdimto\tcb@fit@@h{\ht\tcb@upperbox+\dp\tcb@upperbox}%
+ \tcbdimto\tcb@fit@@target{\kvtcb@height@fixed-(\kvtcb@top@rule@stand)-(\kvtcb@bottom@rule@stand)-(\kvtcb@top)-(\kvtcb@bottom)-(\kvtcb@boxsep)*2-\tcb@h@titletotal}%
+}%
+
+\long\def\tcbox@inner@fitbox#1{%
+ \tcbset{breakable@false,sidebyside=false}%
+ \let\tcb@space\tcb@zpt%
+ \let\tcb@val@raisebase=\tcb@zpt%
+ \unless\ifdefined\kvtcb@height@fixed%
+ \tcbset{height=\kvtcb@width}%
+ \fi%
+ \tcb@hasLowerfalse%
+ %
+ \count@\z@%
+ \tcbfitdim\kvtcb@fit@basedim%
+ \tcb@fit@warn@begin%
+ %
+ \def\tcb@fit@@boxsave##1{%
+ \tcbdimto\tcb@innerwidth{\kvtcb@width-\kvtcb@left@rule-\kvtcb@right@rule}%
+ \colorlet{tcbcol@origin}{.}%
+ \tcb@set@color{tcbcolupper}%
+ \begin{tcb@savebox}{\tcb@upperbox}{##1}%
+ \kvtcb@fontupper\fontsize{\tcbfitdim}{\tcb@fit@@line}\selectfont%
+ \kvtcb@halignupper\tcb@insert@before@upper#1\tcb@insert@after@upper%
+ \end{tcb@savebox}%
+ \tcb@reset@color%
+ \advance\count@ 1\relax%
+ }%
+ %
+ \tcb@set@@phantom%
+ \tcb@set@@title%
+ \tcb@fit@@box%
+ %
+ % height fit
+ \ifdim\kvtcb@height@fixed@plus>0pt\relax%
+ \let\tcb@fit@@minheight=\kvtcb@height@fixed%
+ \ifdim\dimexpr\tcb@fit@@h>\tcb@fit@@target\relax%
+ \ifdim\dimexpr\tcb@fit@@h>\dimexpr\tcb@fit@@target+\kvtcb@height@fixed@plus\relax%
+ \tcbdimto\kvtcb@height@fixed{\kvtcb@height@fixed+\kvtcb@height@fixed@plus}%
+ \tcbdimto\tcb@fit@@target{\tcb@fit@@target+\kvtcb@height@fixed@plus}%
+ \else%
+ \tcbdimto\kvtcb@height@fixed{\kvtcb@height@fixed+\tcb@fit@@h-\tcb@fit@@target}%
+ \let\tcb@fit@@target=\tcb@fit@@h%
+ \fi%
+ \fi%
+ \fi%
+ %
+ % width fit
+ \ifdim\kvtcb@fit@plus@width>0pt\relax%
+ \ifnum\count@<\kvtcb@fit@maxstep\relax%
+ \ifdim\dimexpr\tcb@fit@@h>\tcb@fit@@target\relax%
+ \tcb@lowerfitdim\dimexpr\kvtcb@width\relax%
+ \tcb@upperfitdim\dimexpr\kvtcb@width+\kvtcb@fit@plus@width\relax%
+ \tcbdimto\kvtcb@width{\tcb@upperfitdim}%
+ \tcb@fit@@box%
+ \ifdim\dimexpr\tcb@fit@@h>\tcb@fit@@target\relax%
+ \else%
+ \ifnum\count@<\kvtcb@fit@maxstep\relax%
+ \tcbdimto\tcb@fit@@gap{\tcb@fit@@target-\tcb@fit@@h}%
+ \tcbdimto\kvtcb@width{(\tcb@lowerfitdim+\tcb@upperfitdim)/2}%
+ \loop%
+ \tcb@fit@@box%
+ \tcb@continuetrue%
+ \ifnum\count@<\kvtcb@fit@maxstep\relax%
+ \ifdim\dimexpr\tcb@upperfitdim-\tcb@lowerfitdim<\kvtcb@fit@maxwidthdiff\relax%
+ \tcb@continuefalse%
+ \else%
+ \ifdim\dimexpr\tcb@upperfitdim-\tcb@lowerfitdim<\kvtcb@fit@maxwidthdiffgap\relax%
+ \ifdim\dimexpr\tcb@fit@@gap<\tcb@fit@@line\relax%
+ \tcb@continuefalse%
+ \fi%
+ \fi%
+ \fi%
+ \else%
+ \tcb@continuefalse%
+ \fi%
+ \iftcb@continue%
+ \ifdim\dimexpr\tcb@fit@@h>\tcb@fit@@target\relax%
+ \tcb@lowerfitdim\dimexpr\kvtcb@width\relax%
+ \tcbdimto\kvtcb@width{(\tcb@lowerfitdim+\tcb@upperfitdim)/2}%
+ \else%
+ \tcb@upperfitdim\dimexpr\kvtcb@width\relax%
+ \tcbdimto\tcb@fit@@gap{\tcb@fit@@target-\tcb@fit@@h}%
+ \tcbdimto\kvtcb@width{(\tcb@lowerfitdim+\tcb@upperfitdim)/2}%
+ \fi%
+ \else%
+ \ifdim\dimexpr\tcb@fit@@h>\tcb@fit@@target\relax%
+ \tcbdimto\kvtcb@width{\tcb@upperfitdim}%
+ \tcb@fit@@box%
+ \fi%
+ \fi%
+ \iftcb@continue \repeat%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+ %
+ % (font) fit
+ \ifnum\count@<\kvtcb@fit@maxstep\relax%
+ \ifdim\dimexpr\tcb@fit@@h>\tcb@fit@@target\relax%
+ \tcbox@fitalgorithm%
+ \fi%
+ \fi%
+ %
+ \tcb@fit@warn@end%
+ %
+ % last height fit
+ \ifdim\kvtcb@height@fixed@plus>0pt\relax%
+ \ifdim\dimexpr\tcb@fit@@h<\tcb@fit@@target\relax%
+ \tcbdimto\tcb@temp{\kvtcb@height@fixed+\tcb@fit@@h-\tcb@fit@@target}%
+ \ifdim\dimexpr\tcb@temp<\tcb@fit@@minheight\relax%
+ \else%
+ \let\kvtcb@height@fixed=\tcb@temp%
+ \fi%
+ \fi%
+ \fi%
+ %
+ \edef\tcbfitsteps{\the\count@}%
+ \tcb@set@@dimensions%
+ \tcb@draw@color@box%
+}
+
+\newcommand{\tcboxfit}[2][]{%
+ \tcb@ox{capture=fitbox,#1}{#2}%
+}
+
+\long\def\tcb@newtcboxfit#1#2{\expandafter\tcb@newcommand\csname#1\endcsname{\tcboxfit[#2,options@for=#1]}}
+
+\long\def\tcb@newtcboxfit@#1[#2]#3{\expandafter\tcb@newcommand\csname#1\endcsname[#2]{\tcboxfit[#3,options@for=#1]}}
+
+\long\def\tcb@newtcboxfit@@#1[#2][#3]#4{\expandafter\tcb@newcommand\csname#1\endcsname[#2][#3]{\tcboxfit[#4,options@for=#1]}}
+
+\long\def\tcb@new@tcboxfit@#1[#2]{%
+ \@ifnextchar[{\tcb@newtcboxfit@@{#1}[#2]}{\tcb@newtcboxfit@{#1}[#2]}}
+
+\long\def\tcb@new@tcboxfit#1{%
+ \@ifnextchar[{\tcb@new@tcboxfit@{#1}}{\tcb@newtcboxfit{#1}}}
+
+\def\newtcboxfit{%
+ \let\tcb@newcommand\newcommand%
+ \let\tcb@process@newtcolorbox@continue\tcb@new@tcboxfit%
+ \tcb@process@newcommand}
+
+\def\renewtcboxfit{%
+ \let\tcb@newcommand\renewcommand%
+ \let\tcb@process@newtcolorbox@continue\tcb@new@tcboxfit%
+ \tcb@process@newcommand}
+
+\tcbset{%
+ reset@fitting/.style={%
+ fit algorithm=fontsize,%
+ fit basedim=10pt,fit skip=1.2,
+ height plus=0pt,fit width plus=0pt,
+ fit maxstep=20,fit maxfontdiff=0.1pt,fit maxfontdiffgap=1pt,
+ fit maxwidthdiff=1pt,fit maxwidthdiffgap=10pt,
+ fit warning=off
+ },
+ initialize@reset=reset@fitting,
+}
+
diff --git a/macros/latex/contrib/tcolorbox/tcbhooks.code.tex b/macros/latex/contrib/tcolorbox/tcbhooks.code.tex
new file mode 100644
index 0000000000..d0e0acae72
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcbhooks.code.tex
@@ -0,0 +1,123 @@
+%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% tcbhooks.code.tex: Code for adding hooks
+%%
+%% -------------------------------------------------------------------------------------------
+%% 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
+%%
+%\makeatletter
+\tcb@set@library@version{4.20}
+
+\tcbset{%
+ before upper app/.code={\appto\kvtcb@before@upper{#1}},%
+ before upper pre/.code={\preto\kvtcb@before@upper{#1}},%
+ after upper app/.code={\appto\kvtcb@after@upper{#1}},%
+ after upper pre/.code={\preto\kvtcb@after@upper{#1}},%
+ before lower app/.code={\appto\kvtcb@before@lower{#1}},%
+ before lower pre/.code={\preto\kvtcb@before@lower{#1}},%
+ after lower app/.code={\appto\kvtcb@after@lower{#1}},%
+ after lower pre/.code={\preto\kvtcb@after@lower{#1}},%
+ before title app/.code={\appto\kvtcb@before@title{#1}},%
+ before title pre/.code={\preto\kvtcb@before@title{#1}},%
+ after title app/.code={\appto\kvtcb@after@title{#1}},%
+ after title pre/.code={\preto\kvtcb@after@title{#1}},%
+ %
+ % usable inside the document or in the preamble after setting before / after
+ before app/.code={\appto\kvtcb@beforebox{#1}},%
+ before pre/.code={\preto\kvtcb@beforebox{#1}},%
+ after app/.code={\appto\kvtcb@afterbox{#1}},%
+ after pre/.code={\preto\kvtcb@afterbox{#1}},%
+ %
+ overlay unbroken app/.code={\appto\tcb@overlay@unbroken{#1}},%
+ overlay unbroken pre/.code={\preto\tcb@overlay@unbroken{#1}},%
+ overlay first app/.code={\appto\tcb@overlay@first{#1}},%
+ overlay first pre/.code={\preto\tcb@overlay@first{#1}},%
+ overlay middle app/.code={\appto\tcb@overlay@middle{#1}},%
+ overlay middle pre/.code={\preto\tcb@overlay@middle{#1}},%
+ overlay last app/.code={\appto\tcb@overlay@last{#1}},%
+ overlay last pre/.code={\preto\tcb@overlay@last{#1}},%
+ %
+ overlay app/.style={overlay unbroken app={#1},overlay first app={#1},overlay middle app={#1},overlay last app={#1}},%
+ overlay pre/.style={overlay unbroken pre={#1},overlay first pre={#1},overlay middle pre={#1},overlay last pre={#1}},%
+ overlay broken app/.style={overlay first app={#1},overlay middle app={#1},overlay last app={#1}},%
+ overlay broken pre/.style={overlay first pre={#1},overlay middle pre={#1},overlay last pre={#1}},%
+ overlay unbroken and first app/.style={overlay unbroken app={#1},overlay first app={#1}},%
+ overlay unbroken and first pre/.style={overlay unbroken pre={#1},overlay first pre={#1}},%
+ overlay unbroken and last app/.style={overlay unbroken app={#1},overlay last app={#1}},%
+ overlay unbroken and last pre/.style={overlay unbroken pre={#1},overlay last pre={#1}},%
+ overlay middle and last app/.style={overlay middle app={#1},overlay last app={#1}},%
+ overlay middle and last pre/.style={overlay middle pre={#1},overlay last pre={#1}},%
+ overlay first and middle app/.style={overlay first app={#1},overlay middle app={#1}},%
+ overlay first and middle pre/.style={overlay first pre={#1},overlay middle pre={#1}},%
+ %
+ % skins:
+ frame code app/.code={\appto\tcb@frame@code{#1}},%
+ frame code pre/.code={\preto\tcb@frame@code{#1}},%
+ interior titled code app/.code={\appto\tcb@interiortitled@code{#1}},%
+ interior titled code pre/.code={\preto\tcb@interiortitled@code{#1}},%
+ interior code app/.code={\appto\tcb@interior@code{#1}},%
+ interior code pre/.code={\preto\tcb@interior@code{#1}},%
+ segmentation code app/.code={\appto\tcb@segmentation@code{#1}},%
+ segmentation code pre/.code={\preto\tcb@segmentation@code{#1}},%
+ title code app/.code={\appto\tcb@title@code{#1}},%
+ title code pre/.code={\preto\tcb@title@code{#1}},%
+ %
+ extras unbroken pre/.code={\preto\tcb@extras@unbroken{#1}},%
+ extras first pre/.code={\preto\tcb@extras@first{#1}},%
+ extras middle pre/.code={\preto\tcb@extras@middle{#1}},%
+ extras last pre/.code={\preto\tcb@extras@last{#1}},%
+ extras pre/.style={extras unbroken pre={#1},extras first pre={#1},extras middle pre={#1},extras last pre={#1}},%
+ extras broken pre/.style={extras first pre={#1},extras middle pre={#1},extras last pre={#1}},%
+ extras unbroken and first pre/.style={extras unbroken pre={#1},extras first pre={#1}},%
+ extras unbroken and last pre/.style={extras unbroken pre={#1},extras last pre={#1}},%
+ extras middle and last pre/.style={extras middle pre={#1},extras last pre={#1}},%
+ extras first and middle pre/.style={extras first pre={#1},extras middle pre={#1}},%
+ %
+ underlay unbroken pre/.code={\preto\tcb@underlay@unbroken{#1}},%
+ underlay first pre/.code={\preto\tcb@underlay@first{#1}},%
+ underlay middle pre/.code={\preto\tcb@underlay@middle{#1}},%
+ underlay last pre/.code={\preto\tcb@underlay@last{#1}},%
+ underlay boxed title pre/.code={\preto\tcb@underlay@boxedtitle{#1}},%
+ underlay pre/.style={underlay unbroken pre={#1},underlay first pre={#1},underlay middle pre={#1},underlay last pre={#1}},%
+ underlay broken pre/.style={underlay first pre={#1},underlay middle pre={#1},underlay last pre={#1}},%
+ underlay unbroken and first pre/.style={underlay unbroken pre={#1},underlay first pre={#1}},%
+ underlay unbroken and last pre/.style={underlay unbroken pre={#1},underlay last pre={#1}},%
+ underlay middle and last pre/.style={underlay middle pre={#1},underlay last pre={#1}},%
+ underlay first and middle pre/.style={underlay first pre={#1},underlay middle pre={#1}},%
+ finish unbroken pre/.code={\preto\tcb@finish@unbroken{#1}},%
+ finish first pre/.code={\preto\tcb@finish@first{#1}},%
+ finish middle pre/.code={\preto\tcb@finish@middle{#1}},%
+ finish last pre/.code={\preto\tcb@finish@last{#1}},%
+ finish pre/.style={finish unbroken pre={#1},finish first pre={#1},finish middle pre={#1},finish last pre={#1}},%
+ finish broken pre/.style={finish first pre={#1},finish middle pre={#1},finish last pre={#1}},%
+ finish unbroken and first pre/.style={finish unbroken pre={#1},finish first pre={#1}},%
+ finish unbroken and last pre/.style={finish unbroken pre={#1},finish last pre={#1}},%
+ finish middle and last pre/.style={finish middle pre={#1},finish last pre={#1}},%
+ finish first and middle pre/.style={finish first pre={#1},finish middle pre={#1}},%
+ %
+ watermark tikz app/.style={overlay app={\tcb@drawspec@watermark@tikz{#1}}},
+ watermark tikz pre/.style={overlay pre={\tcb@drawspec@watermark@tikz{#1}}},
+ watermark tikz app on/.style args={#1 is #2}{overlay #1 app={\tcb@drawspec@watermark@tikz{#2}}},%
+ watermark tikz pre on/.style args={#1 is #2}{overlay #1 pre={\tcb@drawspec@watermark@tikz{#2}}},%
+ watermark graphics app/.style={overlay app={\tcb@drawspec@watermark@graphics{#1}}},
+ watermark graphics pre/.style={overlay pre={\tcb@drawspec@watermark@graphics{#1}}},
+ watermark graphics app on/.style args={#1 is #2}{overlay #1 app={\tcb@drawspec@watermark@graphics{#2}}},
+ watermark graphics pre on/.style args={#1 is #2}{overlay #1 pre={\tcb@drawspec@watermark@graphics{#2}}},
+ watermark text app/.style={overlay app={\tcb@drawspec@watermark@text{#1}}},
+ watermark text pre/.style={overlay pre={\tcb@drawspec@watermark@text{#1}}},
+ watermark text app on/.style args={#1 is #2}{overlay #1 app={\tcb@drawspec@watermark@text{#2}}},
+ watermark text pre on/.style args={#1 is #2}{overlay #1 pre={\tcb@drawspec@watermark@text{#2}}},
+}
+
diff --git a/macros/latex/contrib/tcolorbox/tcblistings.code.tex b/macros/latex/contrib/tcolorbox/tcblistings.code.tex
new file mode 100644
index 0000000000..418618ad6b
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcblistings.code.tex
@@ -0,0 +1,97 @@
+%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% tcblistings.code.tex: Code for colorboxes with listings
+%%
+%% -------------------------------------------------------------------------------------------
+%% 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
+%%
+%\makeatletter
+\tcb@set@library@version{4.20}
+
+\RequirePackage{listings}[2007/02/22]
+
+\tcbuselibrary{listings@core}
+
+\let\tcb@listing@MakeCaption@org=\lst@MakeCaption
+
+\def\tcb@listing@set@MakeCaption@org{%
+ \let\lst@MakeCaption\tcb@listing@MakeCaption@org}
+\def\tcb@listing@set@MakeCaption@empty{%
+ \lst@HRefStepCounter{lstlisting}%
+ \let\lst@MakeCaption\@gobble}
+
+\lstdefinestyle{tcblatex}{language={[LaTeX]TeX},
+ aboveskip={0\p@ \@plus 6\p@}, belowskip={0\p@ \@plus 6\p@},
+ columns=fullflexible, keepspaces=true,
+ breaklines=true, breakatwhitespace=true,
+ basicstyle=\ttfamily\small, extendedchars=true, nolol,
+ inputencoding=\kvtcb@listingencoding}
+
+\def\tcb@listing@input@listing#1#2{%
+ \begingroup%
+ \toks@=\expandafter{#1}%
+ \edef\tcb@temp{\noexpand\lstinputlisting[nolol,\the\toks@]}%
+ \tcb@listing@set@MakeCaption%
+ \tcb@temp{#2}%
+ \endgroup%
+}%
+
+
+\def\tcb@listing@uselistinglisting{%
+ \tcb@listing@input@listing{\kvtcb@listingoptions}{\kvtcb@listingfile}%
+}%
+
+\def\tcb@listing@usetemplisting{%
+ \tcb@listing@input@listing{\kvtcb@listingoptions}{\kvtcb@tempfile}%
+}%
+
+\def\tcb@listing@doc@usetemplisting{%
+ \tcb@listing@input@listing{\kvtcb@doclistingoptions}{\kvtcb@tempfile}%
+}
+
+\tcbset{%
+ listing options/.store in=\kvtcb@listingoptions,%
+ listing style/.style={listing options={style=#1}},%
+ no listing options/.style={listing options=},%
+ listing inputencoding/.store in=\kvtcb@listingencoding,%
+ listing remove caption/.is choice,
+ listing remove caption/true/.code={\let\tcb@listing@set@MakeCaption\tcb@listing@set@MakeCaption@empty},
+ listing remove caption/false/.code={\let\tcb@listing@set@MakeCaption\tcb@listing@set@MakeCaption@org},
+ listing remove caption/.default=true,
+ listing engine/listings/.code={\let\tcbuselistinglisting\tcb@listing@uselistinglisting%
+ \let\tcbusetemplisting\tcb@listing@usetemplisting%
+ \let\tcb@doc@usetemplisting\tcb@listing@doc@usetemplisting},
+ every listing line/.code={%
+ \def\lst@NewLine{%
+ \ifx\lst@OutputBox\@gobble\else
+ \par\noindent \hbox{}#1%
+ \fi
+ \global\advance\lst@newlines\m@ne
+ \lst@newlinetrue}},%
+ every listing line*/.style={every listing line={#1},%
+ code={\setbox\z@=\hbox{#1}\tcbdimto\kvtcb@rightupper{\kvtcb@rightupper+\wd\z@}}},%
+}
+
+
+\tcbset{%
+ reset@listings/.style={%
+ listing style=tcblatex,
+ listing inputencoding=\inputencodingname,
+ listing remove caption,
+ listing engine=listings,
+ },
+ initialize@reset=reset@listings,
+}
+
diff --git a/macros/latex/contrib/tcolorbox/tcblistingscore.code.tex b/macros/latex/contrib/tcolorbox/tcblistingscore.code.tex
new file mode 100644
index 0000000000..2906d28c35
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcblistingscore.code.tex
@@ -0,0 +1,332 @@
+%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% tcblistingscode.code.tex: Auxiliary code for colorboxes with listings
+%%
+%% -------------------------------------------------------------------------------------------
+%% 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
+%%
+%\makeatletter
+\tcb@set@library@version{4.20}
+
+\tcbuselibrary{pro@cessing}
+
+\def\tcbuselistingtext@input{\input{\kvtcb@listingfile}}%
+\def\tcbuselistingtext{\tcbuselistingtext@input}%
+\def\tcbuselistingcomment{\kvtcb@listingcomment}%
+\def\tcb@listing@listing{\tcbuselistinglisting}
+
+\def\tcb@listing@listingAndOther{%
+ \tcbuselistinglisting%
+ \tcblower%
+ \tcb@use@listing@other%
+}
+
+\def\tcb@listing@otherAndListing{%
+ \tcb@use@listing@other%
+ \tcblower%
+ \tcbuselistinglisting%
+}
+
+\newenvironment{tcb@lower@outside}[1]{%
+ \tcbset{savedelimiter=tcb@lower@outside}\tcb@minipage{#1}%
+ \color{tcbcollower}\kvtcb@fontlower\kvtcb@halignlower\tcb@insert@before@lower}%
+ {\tcb@insert@after@lower\endminipage}
+
+\def\tcb@use@listing@other@reset{%
+ \tcbset{every box on layer 1/.style={reset,every box}}%
+ \tcb@use@listing@other}
+
+\def\tcb@use@lower@outside#1{%
+ \setbox\z@=\hbox{\begin{tcb@lower@outside}{#1}%
+ \tcb@use@listing@other@reset%
+ \end{tcb@lower@outside}}%
+ \tcbdimto{\tcb@temp@wd}{\wd\z@}%
+ \unhbox\z@%
+}
+
+\def\tcb@inputlisting@out@otherAboveListing{%
+ {\kvtcb@beforebox}\noindent%
+ \iftcb@lowervisible%
+ \tcb@use@lower@outside{\kvtcb@width}%
+ \par\vskip-\parskip\vspace*{\kvtcb@middle}\noindent%
+ \fi%
+ \begin{tcolorbox}[before=,savedelimiter=tcolorbox]\tcbuselistinglisting\end{tcolorbox}%
+}
+
+\def\tcb@inputlisting@out@otherAboveListing@Decoupled{%
+ \iftcb@lowervisible%
+ {\par\tcb@use@listing@other@reset\par}%
+ \fi%
+ \begin{tcolorbox}[savedelimiter=tcolorbox]\tcbuselistinglisting\end{tcolorbox}%
+}
+
+\def\tcb@inputlisting@out@listingAboveOther{%
+ \begin{tcolorbox}[after=,savedelimiter=tcolorbox]\tcbuselistinglisting\end{tcolorbox}%
+ \iftcb@lowervisible\par\vskip-\parskip\vspace*{\kvtcb@middle}\noindent%
+ \tcb@use@lower@outside{\kvtcb@width}%
+ \fi%
+ {\kvtcb@afterbox}%
+}
+
+\def\tcb@inputlisting@out@listingAboveOther@Decoupled{%
+ \begin{tcolorbox}[savedelimiter=tcolorbox]\tcbuselistinglisting\end{tcolorbox}%
+ \iftcb@lowervisible%
+ {\par\tcb@use@listing@other@reset\par}%
+ \fi%
+}
+
+
+\newenvironment{tcb@outside@environment}{%
+ \tcb@before@unbroken%
+ \begin{minipage}{\tcb@width}}%
+{%
+ \end{minipage}%
+ \tcb@after@unbroken}
+
+\def\tcb@inputlisting@out@prepare{%
+ \tcbdimto\tcb@width{\kvtcb@width}%
+ \tcbdimto\tcb@innerwidth{\tcb@width-\kvtcb@left@rule-\kvtcb@right@rule}%
+ \tcbdimto\tcb@temp{\tcb@innerwidth-\kvtcb@boxsep*2}%
+ \tcbdimto\tcb@w@upper{\tcb@temp-\kvtcb@leftupper-\kvtcb@rightupper}%
+ \tcbset{breakable@false}%
+ \def\tcb@minipage{\csname tcb@minipage@\kvtcb@sbs@align\endcsname}%
+ \tcbdimto\tcb@w@upper@real{\tcb@w@upper}%
+ \tcbdimto\tcb@w@sbs{\tcb@w@upper@real-\kvtcb@sbs@gap}%
+ \tcb@sbs@quota%
+ \ifx\kvtcb@float\@empty%
+ \let\tcb@before@unbroken=\kvtcb@beforebox%
+ \let\tcb@after@unbroken=\kvtcb@afterbox%
+ \else%
+ \edef\tcb@before@unbroken{\noexpand\tcb@float@env@begin{tcbfloat}[\kvtcb@float]}%
+ \let\tcb@after@unbroken=\tcb@float@env@end%
+ \fi%
+}
+
+\def\tcb@use@lower@outside@side#1{%
+ \setbox\z@=\hbox{\begin{tcb@lower@outside}{#1}%
+ \tcb@use@listing@other@reset%
+ \end{tcb@lower@outside}}%
+ \tcb@box@align\z@%
+ \tcbdimto{\tcb@temp@wd}{\wd\z@}%
+ \unhbox\z@%
+}
+
+\def\tcb@inputlisting@out@listingAndOther{%
+ \tcb@inputlisting@out@prepare%
+ \tcbdimto\tcb@w@outside{\tcb@w@lower}%
+ \tcbdimto\tcb@w@inside{\tcb@width-\tcb@w@lower-\kvtcb@sbs@gap}%
+ \begin{tcb@outside@environment}%
+ \setbox\z@=\hbox{\tcb@minipage{\tcb@w@inside}%
+ \begin{tcolorbox}[width=\tcb@w@inside,nobeforeafter,nofloat,sidebyside=false,savedelimiter=tcolorbox]\tcbuselistinglisting\end{tcolorbox}%
+ \endminipage}%
+ \tcb@box@align\z@%
+ \unhbox\z@%
+ \kern\kvtcb@sbs@gap%
+ \iftcb@lowervisible%
+ \tcb@use@lower@outside@side{\tcb@w@outside}%
+ \fi%
+ \end{tcb@outside@environment}%
+}
+
+\def\tcb@inputlisting@out@otherAndListing{%
+ \tcb@inputlisting@out@prepare%
+ \tcbdimto\tcb@w@outside{\tcb@w@upper}%
+ \tcbdimto\tcb@w@inside{\tcb@width-\tcb@w@upper-\kvtcb@sbs@gap}%
+ \begin{tcb@outside@environment}%
+ \iftcb@lowervisible%
+ \tcb@use@lower@outside@side{\tcb@w@outside}%
+ \tcbdimto{\tcb@temp@wd}{\tcb@w@outside-\tcb@temp@wd+\kvtcb@sbs@gap}%
+ \else%
+ \tcbdimto{\tcb@temp@wd}{\tcb@w@outside+\kvtcb@sbs@gap}%
+ \fi%
+ \kern\tcb@temp@wd%
+ \setbox\z@=\hbox{\tcb@minipage{\tcb@w@inside}%
+ \begin{tcolorbox}[width=\tcb@w@inside,nobeforeafter,nofloat,sidebyside=false,savedelimiter=tcolorbox]\tcbuselistinglisting\end{tcolorbox}%
+ \endminipage}%
+ \tcb@box@align\z@%
+ \unhbox\z@%
+ \end{tcb@outside@environment}%
+}
+
+\def\tcb@inputlisting@inside{%
+ \begin{tcolorbox}[capture=\tcb@listing@capture,savedelimiter=tcolorbox]\tcb@listing@process\end{tcolorbox}%
+}
+
+\long\def\tcb@run@system@command#1{%
+ \ifcase\pdf@shellescape\relax
+ \tcb@error{You must invoke LaTeX with the -shell-escape flag}{Pass the -shell-escape flag to LaTeX.}%
+ \or\or
+ \tcb@warning{System call with restricted shell escape may fail}%
+ \fi%
+ \ShellEscape{#1}%
+ \relax%
+}
+
+
+\tcbset{%
+ listing file/.store in=\kvtcb@listingfile,%
+ comment/.store in=\kvtcb@listingcomment,%
+ listing@process@inside/.code 2 args={%
+ \let\tcb@inputlisting\tcb@inputlisting@inside%
+ \let\tcb@listing@process=#1%
+ \let\tcb@use@listing@other=#2},%
+ listing@process@outside/.code 2 args={%
+ \let\tcb@inputlisting=#1%
+ \let\tcb@use@listing@other=#2},%
+ listing only/.style={listing@process@inside={\tcb@listing@listing}{\tcbuselistingtext}},%
+ text only/.style={listing@process@inside={\tcbuselistingtext}{\tcbuselistingtext}},%
+ comment only/.style={listing@process@inside={\tcbuselistingcomment}{\tcbuselistingcomment}},%
+ listing and text/.style={listing@process@inside={\tcb@listing@listingAndOther}{\tcbuselistingtext}},%
+ text and listing/.style={listing@process@inside={\tcb@listing@otherAndListing}{\tcbuselistingtext}},%
+ text above listing/.style={listing@process@outside={\tcb@inputlisting@out@otherAboveListing}{\tcbuselistingtext}},%
+ text above* listing/.style={listing@process@outside={\tcb@inputlisting@out@otherAboveListing@Decoupled}{\tcbuselistingtext}},%
+ listing above text/.style={listing@process@outside={\tcb@inputlisting@out@listingAboveOther}{\tcbuselistingtext}},%
+ listing above* text/.style={listing@process@outside={\tcb@inputlisting@out@listingAboveOther@Decoupled}{\tcbuselistingtext}},%
+ text outside listing/.style={listing@process@outside={\tcb@inputlisting@out@otherAndListing}{\tcbuselistingtext}},%
+ listing outside text/.style={listing@process@outside={\tcb@inputlisting@out@listingAndOther}{\tcbuselistingtext}},%
+ text side listing/.style={sidebyside,text and listing},%
+ listing side text/.style={sidebyside,listing and text},%
+ listing and comment/.style={listing@process@inside={\tcb@listing@listingAndOther}{\tcbuselistingcomment}},%
+ comment and listing/.style={listing@process@inside={\tcb@listing@otherAndListing}{\tcbuselistingcomment}},%
+ comment above listing/.style={listing@process@outside={\tcb@inputlisting@out@otherAboveListing}{\tcbuselistingcomment}},%
+ comment above* listing/.style={listing@process@outside={\tcb@inputlisting@out@otherAboveListing@Decoupled}{\tcbuselistingcomment}},%
+ listing above comment/.style={listing@process@outside={\tcb@inputlisting@out@listingAboveOther}{\tcbuselistingcomment}},%
+ listing above* comment/.style={listing@process@outside={\tcb@inputlisting@out@listingAboveOther@Decoupled}{\tcbuselistingcomment}},%
+ comment outside listing/.style={listing@process@outside={\tcb@inputlisting@out@otherAndListing}{\tcbuselistingcomment}},%
+ listing outside comment/.style={listing@process@outside={\tcb@inputlisting@out@listingAndOther}{\tcbuselistingcomment}},%
+ comment side listing/.style={sidebyside,comment and listing},%
+ listing side comment/.style={sidebyside,listing and comment},%
+ listing engine/.is choice,%
+ image comment/.style 2 args={comment={\includegraphics[#1]{#2}}},%
+ comment style/.store in=\kvtcb@commentstyle,%
+ tcbimage comment/.style={comment={\let\tcb@trans@commentstyle\kvtcb@commentstyle\tcbincludegraphics[code={\pgfkeysalsofrom\tcb@trans@commentstyle}]{#1}}},
+ pdf extension/.store in=\kvtcb@pdf@extension,%
+ pdf comment/.style={comment={\let\tcb@trans@commentstyle\kvtcb@commentstyle\filename@parse{#1}\edef\tcb@trans@commentfile{\filename@area\filename@base.\kvtcb@pdf@extension}%
+ \begin{tcbraster}[raster halign=center,sharp corners,size=tight,colback=white,code={\pgfkeysalsofrom\tcb@trans@commentstyle}]\tcbincludepdf{\tcb@trans@commentfile}\end{tcbraster}}},
+ pdf comment/.default={\kvtcb@listingfile},
+ process code/.code={\appto\tcb@listing@process@hook{#1}},%
+ no process/.code={\def\tcb@listing@process@hook{}},%
+ compilable listing/.style={listing file={\jobname-listing-\thetcblistingcount.tex}},
+ run system command/.style={process code={\tcb@run@system@command{#1}}},%
+ run@system@command/.style 2 args={run system command={#1\space#2\space\filename@area\filename@base}},%
+ run pdflatex/.style={run@system@command={pdflatex}{#1}},%
+ run xelatex/.style={run@system@command={xelatex}{#1}},%
+ run lualatex/.style={run@system@command={lualatex}{#1}},%
+ run makeindex/.style={run@system@command={makeindex}{#1}},%
+ run bibtex/.style={run@system@command={bibtex}{#1}},%
+ run biber/.style={run@system@command={biber}{#1}},%
+ run arara/.style={run@system@command={arara}{#1}},%
+ run latex/.style={run@system@command={latex}{#1}},%
+ run dvips/.style={run@system@command={dvips}{#1}},%
+ run ps2pdf/.style={run system command={ps2pdf\space#1\space\filename@area\filename@base.ps}},%
+ freeze file/.code={\def\tcbprocess@condition{1}\def\tcbprocess@target{#1}},%
+ freeze none/.code={\def\tcbprocess@condition{0}\def\tcbprocess@target{}},%
+ freeze extension/.style={freeze file={\filename@area\filename@base#1}},%
+ freeze pdf/.style={freeze extension={.pdf}},
+ freeze png/.style={freeze extension={.png}},
+ freeze jpg/.style={freeze extension={.jpg}},
+}
+
+\def\tcb@listing@process@core{%
+ \filename@parse{\kvtcb@listingfile}%
+ \tcbiffileprocess{\tcbprocess@condition}%
+ {\kvtcb@listingfile}{\filename@area\filename@base.md5}{\tcbprocess@target}%
+ {\tcb@listing@process@hook}{}%
+}
+
+\def\tcbinputlisting@core{%
+ \ifdefempty\tcb@listing@process@hook{}{\tcb@listing@process@core}%
+ \let\tcb@listing@capture=\kvtcb@capture%
+ \tcb@inputlisting%
+}
+
+\newcounter{tcblisting}
+
+\newenvironment{tcblisting}[1]{%
+ \stepcounter{tcblisting}\edef\thetcblistingcount{\thetcblisting}%
+ \tcb@layer@pushup%
+ \tcb@apply@box@options{capture=minipage,#1}%
+ \begingroup\tcbverbatimwrite{\kvtcb@listingfile}%
+}{\endtcbverbatimwrite\endgroup%
+ \tcbinputlisting@core%
+}
+
+\long\def\tcbinputlisting#1{%
+ \begingroup%
+ \stepcounter{tcblisting}\edef\thetcblistingcount{\thetcblisting}%
+ \tcb@layer@pushup%
+ \tcb@apply@box@options{capture=minipage,#1}%
+ \tcbinputlisting@core%
+ \endgroup%
+}
+
+\newenvironment{tcboutputlisting}{%
+ \begingroup\tcbverbatimwrite{\kvtcb@listingfile}%
+}{\endtcbverbatimwrite\endgroup}
+
+\long\def\tcb@newtcblisting#1#2{\tcb@newenvironment{#1}{\tcblisting{#2,options@for=#1}}{\endtcblisting}}
+
+\long\def\tcb@newtcblisting@#1[#2]#3{\tcb@newenvironment{#1}[#2]{\tcblisting{#3,options@for=#1}}{\endtcblisting}}
+
+\long\def\tcb@newtcblisting@@#1[#2][#3]#4{\tcb@newenvironment{#1}[#2][#3]{\tcblisting{#4,options@for=#1}}{\endtcblisting}}
+
+\long\def\tcb@new@tcblisting@#1[#2]{%
+ \@ifnextchar[{\tcb@newtcblisting@@{#1}[#2]}{\tcb@newtcblisting@{#1}[#2]}}
+
+\def\tcb@new@tcblisting#1{%
+ \@ifnextchar[{\tcb@new@tcblisting@{#1}}{\tcb@newtcblisting{#1}}}
+
+\def\newtcblisting{%
+ \let\tcb@newenvironment\newenvironment%
+ \let\tcb@process@newtcolorbox@continue\tcb@new@tcblisting%
+ \tcb@process@newenvironment}
+
+\def\renewtcblisting{%
+ \let\tcb@newenvironment\renewenvironment%
+ \let\tcb@process@newtcolorbox@continue\tcb@new@tcblisting%
+ \tcb@process@newenvironment}
+
+\long\def\tcb@newtcbinputlisting#1#2{\expandafter\tcb@newcommand\csname#1\endcsname{\tcbinputlisting{#2,options@for=#1}}}
+
+\long\def\tcb@newtcbinputlisting@#1[#2]#3{\expandafter\tcb@newcommand\csname#1\endcsname[#2]{\tcbinputlisting{#3,options@for=#1}}}
+
+\long\def\tcb@newtcbinputlisting@@#1[#2][#3]#4{\expandafter\tcb@newcommand\csname#1\endcsname[#2][#3]{\tcbinputlisting{#4,options@for=#1}}}
+
+\long\def\tcb@new@tcbinputlisting@#1[#2]{%
+ \@ifnextchar[{\tcb@newtcbinputlisting@@{#1}[#2]}{\tcb@newtcbinputlisting@{#1}[#2]}}
+
+\def\tcb@new@tcbinputlisting#1{%
+ \@ifnextchar[{\tcb@new@tcbinputlisting@{#1}}{\tcb@newtcbinputlisting{#1}}}
+
+\def\newtcbinputlisting{%
+ \let\tcb@newcommand\newcommand%
+ \let\tcb@process@newtcolorbox@continue\tcb@new@tcbinputlisting%
+ \tcb@process@newcommand}
+
+\def\renewtcbinputlisting{%
+ \let\tcb@newcommand\renewcommand%
+ \let\tcb@process@newtcolorbox@continue\tcb@new@tcbinputlisting%
+ \tcb@process@newcommand}
+
+\tcbset{%
+ reset@listingscore/.style={%
+ listing file=\jobname.listing,
+ comment=, listing and text,
+ no process,freeze none,
+ comment style=,pdf extension=pdf,
+ },
+ initialize@reset=reset@listingscore,
+}
+
diff --git a/macros/latex/contrib/tcolorbox/tcblistingsutf8.code.tex b/macros/latex/contrib/tcolorbox/tcblistingsutf8.code.tex
new file mode 100644
index 0000000000..46720bc980
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcblistingsutf8.code.tex
@@ -0,0 +1,33 @@
+%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% tcblistingsutf8.code.tex: Code for colorboxes with listings in UTF-8
+%%
+%% -------------------------------------------------------------------------------------------
+%% 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}
+
+\RequirePackage{listingsutf8}[2011/11/10]
+\tcbuselibrary{listings}
+
+\tcbset{
+ listing utf8/.style={listing inputencoding=utf8/#1},
+}
+
+\tcbset{%
+ reset@listingsutf8/.style={listing utf8=latin1},
+ initialize@reset=reset@listingsutf8,
+}
+
diff --git a/macros/latex/contrib/tcolorbox/tcbmagazine.code.tex b/macros/latex/contrib/tcolorbox/tcbmagazine.code.tex
new file mode 100644
index 0000000000..75c4ef5e39
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcbmagazine.code.tex
@@ -0,0 +1,185 @@
+%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% tcbmagazine.code.tex: Code for box sets and magazine styles
+%%
+%% -------------------------------------------------------------------------------------------
+%% 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{breakable}
+
+\def\newboxarray#1{%
+ \ifcsdef{tcb@boxarray@#1@allocated}{%
+ \tcb@warning{box array '#1' is allocated again by \string\newboxarray. Memory and registers are wasted}%
+ }{}%
+ \global\csdef{tcb@boxarray@#1@size}{0}%
+ \global\csdef{tcb@boxarray@#1@allocated}{0}%
+}
+
+\newboxarray{default}
+
+\newrobustcmd*{\boxarraygetsize}[2][default]{%
+ \letcs#2{tcb@boxarray@#1@size}%
+ \ifdef{#2}{}{%
+ \tcb@error{undefined box array '#1'}%
+ {You have to say \string\newboxarray{#1}, before '#1' can be used as box array.}%
+ }%
+}
+
+\newrobustcmd*{\boxarrayreset}[1][default]{%
+ \boxarraygetsize[#1]\tcb@box@array@size%
+ \global\csdef{tcb@boxarray@#1@size}{0}%
+}
+
+\newrobustcmd*{\boxarrayclear}[1][default]{%
+ \boxarraygetsize[#1]\tcb@box@array@size%
+ \global\csdef{tcb@boxarray@#1@size}{0}%
+ \letcs\tcb@box@array@allocated{tcb@boxarray@#1@allocated}%
+ \begingroup%
+ \count@=0%
+ \loop%
+ \ifnum\count@<\tcb@box@array@allocated\relax%
+ \advance\count@ 1\relax%
+ \letcs\tcb@box@array@box{tcb@boxarray@#1@\number\count@ @box}%
+ \setbox0=\box\tcb@box@array@box%
+ \repeat%
+ \endgroup%
+}
+
+\newrobustcmd*{\boxarraygetbox}[3][default]{%
+ \boxarraygetsize[#1]\tcb@box@array@size%
+ \let#2\@undefined%
+ \ifnum\numexpr#3>0\relax%
+ \ifnum\numexpr#3>\tcb@box@array@size\relax%
+ \else%
+ \letcs#2{tcb@boxarray@#1@#3@box}%
+ \fi%
+ \fi%
+}
+
+\newrobustcmd*{\boxarraygetwidth}[3][default]{%
+ \boxarraygetbox[#1]{\tcb@box@array@box}{#3}%
+ \ifdefined\tcb@box@array@box%
+ \tcbdimto#2{\wd\tcb@box@array@box}%
+ \else%
+ \let#2\tcb@zpt%
+ \fi%
+}
+
+\newrobustcmd*{\boxarraygetheight}[3][default]{%
+ \boxarraygetbox[#1]{\tcb@box@array@box}{#3}%
+ \ifdefined\tcb@box@array@box%
+ \tcbdimto#2{\ht\tcb@box@array@box}%
+ \else%
+ \let#2\tcb@zpt%
+ \fi%
+}
+
+\newrobustcmd*{\boxarraygetdepth}[3][default]{%
+ \boxarraygetbox[#1]{\tcb@box@array@box}{#3}%
+ \ifdefined\tcb@box@array@box%
+ \tcbdimto#2{\dp\tcb@box@array@box}%
+ \else%
+ \let#2\tcb@zpt%
+ \fi%
+}
+
+\newrobustcmd*{\boxarraygettotalheight}[3][default]{%
+ \boxarraygetbox[#1]{\tcb@box@array@box}{#3}%
+ \ifdefined\tcb@box@array@box%
+ \tcbdimto#2{\ht\tcb@box@array@box+\dp\tcb@box@array@box}%
+ \else%
+ \let#2\tcb@zpt%
+ \fi%
+}
+
+\newrobustcmd*{\useboxarray}[2][default]{%
+ \boxarraygetbox[#1]{\tcb@box@array@box}{#2}%
+ \ifdefined\tcb@box@array@box%
+ \usebox{\tcb@box@array@box}%
+ \fi%
+}
+
+\newrobustcmd{\usetcboxarray}[3][default]{%
+ \boxarraygetbox[#1]{\tcb@box@array@box}{#2}%
+ \ifdefined\tcb@box@array@box%
+ \tcbox[#3]{\usebox{\tcb@box@array@box}}%
+ \fi%
+}
+
+\newrobustcmd*{\consumeboxarray}[2][default]{%
+ \boxarraygetbox[#1]{\tcb@box@array@box}{#2}%
+ \ifdefined\tcb@box@array@box%
+ \leavevmode\box\tcb@box@array@box\relax%
+ \fi%
+}
+
+\newrobustcmd{\consumetcboxarray}[3][default]{%
+ \boxarraygetbox[#1]{\tcb@box@array@box}{#2}%
+ \ifdefined\tcb@box@array@box%
+ \tcbox[#3]{\leavevmode\box\tcb@box@array@box\relax}%
+ \fi%
+}
+
+\newrobustcmd{\ifboxarrayempty}[2][default]{%
+ \begingroup%
+ \boxarraygetbox[#1]{\tcb@box@array@box}{#2}%
+ \ifdefined\tcb@box@array@box\relax%
+ \aftergroup\@secondoftwo%
+ \else%
+ \aftergroup\@firstoftwo%
+ \fi%
+ \endgroup%
+}
+
+\def\boxarraystore#1{%
+ \boxarraygetsize[#1]\tcb@box@array@size%
+ \numdef\tcb@box@array@size{\tcb@box@array@size+1}%
+ \global\cslet{tcb@boxarray@#1@size}{\tcb@box@array@size}%
+ \letcs\tcb@box@array@allocated{tcb@boxarray@#1@allocated}%
+ \ifnum\tcb@box@array@allocated<\tcb@box@array@size\relax%
+ \newbox\tcb@box@array@box\csxdef{tcb@boxarray@#1@\tcb@box@array@size @box}{\the\tcb@box@array@box}%
+ \global\cslet{tcb@boxarray@#1@allocated}{\tcb@box@array@size}%
+ \else%
+ \letcs\tcb@box@array@box{tcb@boxarray@#1@\tcb@box@array@size @box}%
+ \fi%
+ \edef\reserved@a{%
+ \endgroup
+ \global\setbox\tcb@box@array@box\hbox{%
+ \begingroup\aftergroup}%
+ \def\noexpand\@currenvir{\@currenvir}%
+ \def\noexpand\@currenvline{\on@line}}%
+ \reserved@a
+ \@endpefalse
+ \color@setgroup
+ \ignorespaces}
+
+\def\endboxarraystore{\unskip\color@endgroup}
+
+\def\tcb@storetoboxarray@begin#1#2[#3]{\begin{boxarraystore}{#1}}
+\def\tcb@storetoboxarray@end{\end{boxarraystore}}
+
+\tcbset{
+ store to box array/.code={%
+ \def\kvtcb@float{S}\def\tcb@float@env@begin{\tcb@storetoboxarray@begin{#1}}\def\tcb@float@env@end{\tcb@storetoboxarray@end}},
+ store to box array/.default=default,
+ reset box array/.code={\boxarrayreset[#1]},
+ reset box array/.default=default,
+ reset and store to box array/.style={reset box array={#1},store to box array={#1}},%
+ reset and store to box array/.default=default,
+ do not store to box array/.style={nofloat},
+}
+
diff --git a/macros/latex/contrib/tcolorbox/tcbminted.code.tex b/macros/latex/contrib/tcolorbox/tcbminted.code.tex
new file mode 100644
index 0000000000..220d7d82f7
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcbminted.code.tex
@@ -0,0 +1,73 @@
+%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% tcbminted.code.tex: Code for colorboxes with listings
+%%
+%% -------------------------------------------------------------------------------------------
+%% 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
+%%
+%\makeatletter
+\tcb@set@library@version{4.20}
+
+\RequirePackage{minted}[2011/09/17]
+
+\tcbuselibrary{listings@core}
+
+\def\tcb@minted@input@listing#1#2#3#4{%
+ \edef\temp@a{#4}%
+ \ifx\temp@a\@empty%
+ \else%
+ \toks@=\expandafter{#4}%
+ \edef\tcb@temp{\noexpand\usemintedstyle{\the\toks@}}%
+ \tcb@temp%
+ \fi%
+ \toks@=\expandafter{#1}%
+ \edef\tcb@temp{\noexpand\inputminted[\the\toks@]}%
+ \IfFileExists{\minted@outputdir#3}%
+ {\tcb@temp{#2}{\minted@outputdir#3}}%
+ {\tcb@temp{#2}{#3}}%
+}
+
+\def\tcb@minted@uselistinglisting{%
+ \tcb@minted@input@listing{\kvtcb@minted@options}{\kvtcb@minted@language}{\kvtcb@listingfile}{\kvtcb@minted@style}%
+}%
+
+\def\tcb@minted@usetemplisting{%
+ \tcb@minted@input@listing{\kvtcb@minted@options}{\kvtcb@minted@language}{\kvtcb@tempfile}{\kvtcb@minted@style}%
+}%
+
+\def\tcb@minted@doc@usetemplisting{%
+ \tcb@minted@input@listing{\kvtcb@docmintoptions}{\kvtcb@docminted@language}{\kvtcb@tempfile}{\kvtcb@docmintstyle}%
+}
+
+\tcbset{%
+ minted language/.store in=\kvtcb@minted@language,
+ minted options/.store in=\kvtcb@minted@options,
+ minted style/.store in=\kvtcb@minted@style,
+ listing engine/minted/.code={\let\tcbuselistinglisting\tcb@minted@uselistinglisting%
+ \let\tcbusetemplisting\tcb@minted@usetemplisting%
+ \let\tcb@doc@usetemplisting\tcb@minted@doc@usetemplisting},
+}
+
+
+\tcbset{%
+ reset@minted/.style={%
+ minted language=latex,
+ minted options={tabsize=2,fontsize=\small,breaklines,autogobble},
+ minted style=,
+ listing engine=minted,
+ },
+ initialize@reset=reset@minted,
+}
+
diff --git a/macros/latex/contrib/tcolorbox/tcbposter.code.tex b/macros/latex/contrib/tcolorbox/tcbposter.code.tex
new file mode 100644
index 0000000000..057e02b30f
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcbposter.code.tex
@@ -0,0 +1,274 @@
+%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% tcbposter.code.tex: Code for posters
+%%
+%% -------------------------------------------------------------------------------------------
+%% 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{breakable,magazine,skins,fitting}
+
+\newif\iftcb@poster@showframe
+\newif\iftcb@posterbox@sequence
+\newboxarray{tcb@poster}
+
+\def\tcb@poster@compute@poster@boxheight#1#2{%
+ \pgfpointanchor{\tcb@poster@prefix#1}{south}\unskip%
+ \@tempdima\pgf@y%
+ \pgfpointanchor{\tcb@poster@prefix#2}{north}\unskip%
+ \advance \@tempdima by -\pgf@y\relax%
+ \advance \@tempdima by -\tcbposterrowspacing\relax%
+ \advance \@tempdima by -\tcbposterrowspacing\relax%
+ \edef\tcb@poster@boxheight{\the\@tempdima}%
+}
+
+\def\poster@scan@sequence#1 between #2 and #3 then#4\@nil{%
+ \tcb@poster@compute@poster@boxheight{#2}{#3}%
+ \ifundef{\tcb@poster@firstboxheight}{\edef\tcb@poster@firstboxheight{\tcb@poster@boxheight}}{}%
+ \eappto\tcb@poster@breakat{\tcb@poster@boxheight/}%
+ \@tempcnta\numexpr#1\relax%
+ \listeadd\tcb@poster@list{{\tcb@poster@prefix col\@arabic\@tempcnta.west|-\tcb@poster@prefix#2.south}{\tcb@poster@boxheight}}%
+ \ifblank{#4}{}{\poster@scan@sequence#4\@nil}%
+}
+
+\newenvironment{tcb@poster@env}{%
+ \let\posterbox\tcb@poster@box%
+ \let\posterboxenv\tcb@poster@boxenv%
+ \let\endposterboxenv\endtcb@poster@boxenv%
+ \ifundef\tcb@poster@height{%
+ \ifnum\c@tcblayer=0\relax%
+ \def\tcb@poster@height{\textheight}%
+ \else%
+ \ifdim\dimexpr\tcbtextheight>0pt\relax%
+ \def\tcb@poster@height{\tcbtextheight}%
+ \else%
+ \def\tcb@poster@height{0.75\textheight}%
+ \fi%
+ \fi}{}%
+ \tcbset{poster/.cd,poster@poster}%
+ \tcbdimto\tcbposterwidth{\tcb@poster@width}%
+ \tcbdimto\tcbposterheight{\tcb@poster@height}%
+ \tcbdimto\tcbpostercolspacing{\tcb@poster@colspacing}%
+ \tcbdimto\tcbposterrowspacing{\tcb@poster@rowspacing}%
+ \edef\tcbpostercolumns{\the\numexpr\tcb@poster@columns\relax}%
+ \edef\tcbposterrows{\the\numexpr\tcb@poster@rows\relax}%
+ \tcbdimto\tcbpostercolwidth{(\tcbposterwidth+\tcbpostercolspacing)/\tcbpostercolumns-\tcbpostercolspacing}%
+ \tcbdimto\tcbposterrowheight{(\tcbposterheight+\tcbposterrowspacing)/\tcbposterrows-\tcbposterrowspacing}%
+ \begin{tikzpicture}%
+ \path[use as bounding box] (0,0) rectangle (\tcbposterwidth,\tcbposterheight);
+ \node[name=\tcb@poster@prefix poster,at={(0,0)},line width=0mm,inner sep=0mm,outer sep=0mm,draw=none,fill=none,rectangle,
+ above right,minimum width=\tcbposterwidth,minimum height=\tcbposterheight]{};
+ \coordinate (\tcb@poster@prefix top) at (0,\tcbposterheight+\tcbposterrowspacing);
+ \coordinate (\tcb@poster@prefix bottom) at (0,-\tcbposterrowspacing);
+ \coordinate (\tcb@poster@prefix middle) at (0,\the\dimexpr0.5\dimexpr\tcbposterheight\relax);
+ \begin{scope}[every node/.style={inner sep=0pt,outer sep=0,above right,minimum height=\tcbposterheight,minimum width=\tcbpostercolwidth}]%
+ \node (\tcb@poster@prefix col1) at (0,0) {};
+ \@tempcnta 1%
+ \@tempcntb\numexpr\tcbpostercolumns\relax%
+ \@tempdima\dimexpr\tcbpostercolwidth+\tcbpostercolspacing\relax%
+ \@whilenum \@tempcnta<\@tempcntb \do{%
+ \edef\tcb@temp{\tcb@poster@prefix col\@arabic\@tempcnta}%
+ \advance\@tempcnta 1\relax%
+ \node[xshift=\tcbpostercolspacing] (\tcb@poster@prefix col\@arabic\@tempcnta) at (\tcb@temp.south east) {};
+ }%
+ \end{scope}%
+ \begin{scope}[every node/.style={inner sep=0pt,outer sep=0,below right,minimum height=\tcbposterrowheight,minimum width=\tcbposterwidth}]%
+ \node (\tcb@poster@prefix row1) at (0,\tcbposterheight) {};
+ \@tempcnta 1%
+ \@tempcntb\numexpr\tcbposterrows\relax%
+ \@tempdima\dimexpr\tcbposterrowheight+\tcbposterrowspacing\relax%
+ \@whilenum \@tempcnta<\@tempcntb \do{%
+ \edef\tcb@temp{\tcb@poster@prefix row\@arabic\@tempcnta}%
+ \advance\@tempcnta 1\relax%
+ \node[yshift=-\tcbposterrowspacing] (\tcb@poster@prefix row\@arabic\@tempcnta) at (\tcb@temp.south west) {};
+ }%
+ \end{scope}%
+ \iftcb@poster@showframe%
+ \@tempcnta 0%
+ \@tempcntb\numexpr\tcbpostercolumns\relax%
+ \@whilenum \@tempcnta<\@tempcntb \do{%
+ \advance\@tempcnta 1\relax%
+ \edef\tcb@temp{\tcb@poster@prefix col\@arabic\@tempcnta}%
+ \draw[red] (\tcb@temp.north west) node[above right]{col\@arabic\@tempcnta} rectangle (\tcb@temp.south east);
+ }%
+ \@tempcnta 0%
+ \@tempcntb\numexpr\tcbposterrows\relax%
+ \@whilenum \@tempcnta<\@tempcntb \do{%
+ \advance\@tempcnta 1\relax%
+ \edef\tcb@temp{\tcb@poster@prefix row\@arabic\@tempcnta}%
+ \draw[red] (\tcb@temp.north west) node[below left]{row\@arabic\@tempcnta} rectangle (\tcb@temp.south east);
+ }%
+ \gdef\tcb@poster@framelist{}%
+ \fi%
+}{%
+ \iftcb@poster@showframe%
+ \renewcommand*{\do}[1]{%
+ \node[red,fill=white,opacity=0.7,font=\Large] at (\tcb@poster@prefix##1) {##1};}%
+ \dolistloop{\tcb@poster@framelist}%
+ \gdef\tcb@poster@framelist{}%
+ \fi%
+\end{tikzpicture}}
+
+% #1 tcolorbox options
+% #2 position
+% #3 Inhalt
+\newcommand{\tcb@poster@box}[3][]{%
+ \bgroup%
+ \tcbset{posterloc/.cd,#2}%
+ \tcbdimto\tcb@poster@boxwidth{\tcb@poster@span\dimexpr\tcbpostercolwidth+\tcbpostercolspacing\relax-\tcbpostercolspacing}%
+ \iftcb@posterbox@sequence%
+ \begin{pgfinterruptpicture}%
+ \begin{tcolorbox}[tcb@poster@style,width=\tcb@poster@boxwidth,tcb@poster@boxheight,
+ height fixed for=all,#1,
+ enforce breakable,reset box array=tcb@poster,store to box array=tcb@poster]#3\end{tcolorbox}%
+ \end{pgfinterruptpicture}%
+ \def\tcb@poster@boxcount{0}%
+ \renewcommand*{\do}[1]{\edef\tcb@poster@boxcount{\the\numexpr\tcb@poster@boxcount+1\relax}%
+ \node[inner sep=0pt,outer sep=0,tcb@poster@node,name=\tcb@poster@prefix\tcb@poster@boxname\tcb@poster@boxcount] at (\@firstoftwo##1) {%
+ \ifboxarrayempty[tcb@poster]{\tcb@poster@boxcount}%
+ {\begin{tcolorbox}[placeholder,width=\tcb@poster@boxwidth,height=\@secondoftwo##1]\end{tcolorbox}}%
+ {\consumeboxarray[tcb@poster]{\tcb@poster@boxcount}}%
+ };}%
+ \dolistloop{\tcb@poster@list}%
+ \iftcb@poster@showframe%
+ \ifdefstring{\tcb@poster@boxname}{@}{}{%
+ \def\tcb@poster@boxcount{0}%
+ \renewcommand*{\do}[1]{\edef\tcb@poster@boxcount{\the\numexpr\tcb@poster@boxcount+1\relax}%
+ \listxadd\tcb@poster@framelist{\tcb@poster@boxname\tcb@poster@boxcount}}%
+ \dolistloop{\tcb@poster@list}%
+ }%
+ \fi%
+ \else%
+ \begin{pgfinterruptpicture}%
+ \begin{tcolorbox}[tcb@poster@style,width=\tcb@poster@boxwidth,tcb@poster@boxheight,#1,
+ reset box array=tcb@poster,store to box array=tcb@poster]#3\end{tcolorbox}%
+ \end{pgfinterruptpicture}%
+ \node[inner sep=0pt,outer sep=0,tcb@poster@node,name=\tcb@poster@prefix\tcb@poster@boxname] at (\tcb@poster@xpos|-\tcb@poster@ypos)
+ {\consumeboxarray[tcb@poster]{1}};%
+ \iftcb@poster@showframe%
+ \ifdefstring{\tcb@poster@boxname}{@}{}{\listxadd\tcb@poster@framelist{\tcb@poster@boxname}}%
+ \fi%
+ \fi%
+ \egroup%
+}
+
+\newenvironment{tcb@poster@boxenv}[2][]{%
+ \newcommand{\tcb@poster@box@saved}{\posterbox[#1]{#2}{\tcbusetemp}}%
+ \tcbwritetemp}%
+ {\endtcbwritetemp\tcb@poster@box@saved}
+
+\newenvironment{tcbposter@coverage}{}{}
+
+\newenvironment{tcbposter}[1][]{%
+ \tcbposterset{#1}%
+ \begin{tcbposter@coverage}\begin{tcb@poster@env}%
+}{\end{tcb@poster@env}\end{tcbposter@coverage}}
+
+\newcommand{\tcbposterset}[1]{\tcbset{posterset/.cd,#1}}
+
+\tcbset{%
+ poster/.cd,
+ width/.store in=\tcb@poster@width,
+ height/.store in=\tcb@poster@height,
+ colspacing/.store in=\tcb@poster@colspacing,
+ rowspacing/.store in=\tcb@poster@rowspacing,
+ spacing/.style={colspacing={#1},rowspacing={#1}},
+ columns/.store in=\tcb@poster@columns,
+ rows/.store in=\tcb@poster@rows,
+ showframe/.is if=tcb@poster@showframe,
+ prefix/.store in=\tcb@poster@prefix,
+ %
+ width=\linewidth,
+ spacing=4mm,
+ columns=3,
+ rows=4,
+ showframe=false,
+ prefix=TCBPOSTER@,
+}
+
+\tcbset{%
+ posterloc/.cd,
+ name/.store in=\tcb@poster@boxname,
+ column/.code={\edef\tcb@poster@xpos{\tcb@poster@prefix col#1.west}\edef\tcb@poster@orientation{right}},%
+ column*/.code={\edef\tcb@poster@xpos{\tcb@poster@prefix col#1.east}\edef\tcb@poster@orientation{left}},%
+ below/.code={\tcb@posterbox@sequencefalse%
+ \tikzset{tcb@poster@node/.style={below \tcb@poster@orientation,yshift=\the\dimexpr\tcb@poster@yshift-\tcbposterrowspacing\relax,xshift=\tcb@poster@xshift}}%
+ \tcbset{tcb@poster@boxheight/.style={natural height}}%
+ \edef\tcb@poster@ypos{\tcb@poster@prefix#1.south}},
+ above/.code={\tcb@posterbox@sequencefalse%
+ \tikzset{tcb@poster@node/.style={above \tcb@poster@orientation,yshift=\the\dimexpr\tcb@poster@yshift+\tcbposterrowspacing\relax,xshift=\tcb@poster@xshift}}%
+ \tcbset{tcb@poster@boxheight/.style={natural height}}%
+ \edef\tcb@poster@ypos{\tcb@poster@prefix#1.north}},
+ at/.code={\tcb@posterbox@sequencefalse%
+ \tikzset{tcb@poster@node/.style={\tcb@poster@orientation,yshift=\tcb@poster@yshift,xshift=\tcb@poster@xshift}}%
+ \tcbset{tcb@poster@boxheight/.style={natural height}}%
+ \edef\tcb@poster@ypos{\tcb@poster@prefix#1}},
+ between/.code args={#1 and #2}{\tcb@posterbox@sequencefalse%
+ \tikzset{tcb@poster@node/.style={below \tcb@poster@orientation,yshift=\the\dimexpr\tcb@poster@yshift-\tcbposterrowspacing\relax,xshift=\tcb@poster@xshift}}%
+ \edef\tcb@poster@ypos{\tcb@poster@prefix#1.south}%
+ \tcb@poster@compute@poster@boxheight{#1}{#2}%
+ \tcbset{tcb@poster@boxheight/.style={height=\tcb@poster@boxheight}}%
+ },
+ sequence/.code={\tcb@posterbox@sequencetrue%
+ \tikzset{tcb@poster@node/.style={below \tcb@poster@orientation,yshift=\the\dimexpr\tcb@poster@yshift-\tcbposterrowspacing\relax,xshift=\tcb@poster@xshift}}%
+ \undef\tcb@poster@firstboxheight%
+ \def\tcb@poster@breakat{}%
+ \def\tcb@poster@list{}%
+ \poster@scan@sequence #1 then\@nil%
+ \eappto\tcb@poster@breakat{\tcbposterheight}%
+ \tcbset{tcb@poster@boxheight/.style={break at=\tcb@poster@breakat,height=\tcb@poster@firstboxheight}}%
+ },
+ row/.code={\tcb@posterbox@sequencefalse%
+ \tikzset{tcb@poster@node/.style={below \tcb@poster@orientation,yshift=\tcb@poster@yshift,xshift=\tcb@poster@xshift}}%
+ \tcbset{posterloc/fixed height}%
+ \edef\tcb@poster@ypos{\tcb@poster@prefix row#1.north}},
+ %
+ span/.store in=\tcb@poster@span,%
+ row@span/.store in=\tcb@poster@rowspan,%
+ rowspan/.style={row@span=#1,fixed height},%
+ xshift/.store in=\tcb@poster@xshift,%
+ yshift/.store in=\tcb@poster@yshift,%
+ fixed height/.code={\tcbset{tcb@poster@boxheight/.style={height=\tcb@poster@rowspan\dimexpr\tcbposterrowheight+\tcbposterrowspacing\relax-\tcbposterrowspacing}}},%
+ %
+ name=@,
+ column=1,
+ below=top,
+ span=1,
+ row@span=1,
+ xshift=0pt,
+ yshift=0pt,
+}
+
+\tcbposterset{%
+ coverage/.code={\renewtcolorbox{tcbposter@coverage}{%
+ enhanced,frame hidden,sharp corners,boxsep=0pt,boxrule=0pt,
+ top=4mm,bottom=4mm,left=4mm,right=4mm,
+ toptitle=2mm,bottomtitle=2mm,colback=white,#1}},
+ no coverage/.code={\renewenvironment{tcbposter@coverage}{}{}},
+ poster/.code={\tcbset{poster/.cd,poster@poster/.style={#1}}},
+ boxes/.code={\tcbset{tcb@poster@style/.style={nobeforeafter,enhanced standard,#1}}},
+ fontsize/.code={\tcbset{fit fontsize macros}\tcbsetforeverylayer{fit basedim=#1}\normalsize},
+ %
+ poster,boxes
+}
+
+\tcbset{placeholder/.style={enhanced jigsaw,
+ size=small,sharp corners,colframe=red!50!black,
+ interior style={bottom color=red!15!white,top color=blue!15!white},
+ opacityback=0.5,
+ underlay={\draw[red!50!black,line cap=round] (interior.south west)--(interior.north east);
+ \draw[red!50!black,line cap=round] (interior.south east)--(interior.north west);},
+}}%
diff --git a/macros/latex/contrib/tcolorbox/tcbprocessing.code.tex b/macros/latex/contrib/tcolorbox/tcbprocessing.code.tex
new file mode 100644
index 0000000000..773d095bc8
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcbprocessing.code.tex
@@ -0,0 +1,79 @@
+%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% tcbprocessing.code.tex: Code for conditional processing
+%%
+%% -------------------------------------------------------------------------------------------
+%% 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}
+
+\RequirePackage{pdftexcmds}
+\RequirePackage{shellesc}
+
+\ifdefined\pdf@filemdfivesum\else% XeLaTeX presumed ...
+ \def\pdf@filemdfivesum#1{\mdfivesum file {#1}}%
+\fi
+\ifdefined\pdf@filemoddate\else% very poor XeLaTeX bypassing
+ \def\pdf@filemoddate#1{}%
+\fi
+
+\def\tcbproc@readmdfive#1#2{%
+ \edef\tcbprocmdfivesum{\pdf@filemdfivesum{#1}}%
+ \IfFileExists{#2}{\input{#2}}{\def\tcbproclastmdfivesum{}}%
+}
+
+\def\tcbproc@writemdfive#1{%
+ \immediate\openout\tcb@out=#1%
+ \immediate\write\tcb@out{\string\def\string\tcbproclastmdfivesum{\tcbprocmdfivesum}\@percentchar}%
+ \immediate\closeout\tcb@out%
+}
+
+\newrobustcmd{\iftcb@process@on}[3]{%
+ \tcbproc@readmdfive{#1}{#2}%
+ \ifdefstrequal{\tcbproclastmdfivesum}{\tcbprocmdfivesum}{}{\tcbproc@writemdfive{#2}}%
+ \expandafter\@firstoftwo%
+}
+
+\newrobustcmd{\iftcb@process@conditional}[3]{%
+ \tcbproc@readmdfive{#1}{#2}%
+ \ifdefstrequal{\tcbproclastmdfivesum}{\tcbprocmdfivesum}{%
+ \IfFileExists{#3}{%
+ \ifnum\pdf@strcmp{\pdf@filemoddate{#2}}{\pdf@filemoddate{#3}}>0\relax%
+ \expandafter\@firstoftwo%
+ \else%
+ \expandafter\@secondoftwo%
+ \fi%
+ }{\expandafter\@firstoftwo}%
+ }{%
+ \tcbproc@writemdfive{#2}%
+ \expandafter\@firstoftwo%
+ }%
+}
+
+\newrobustcmd{\iftcb@process@off}[3]{%
+ \tcbproc@readmdfive{#1}{#2}%
+ \ifdefstrequal{\tcbproclastmdfivesum}{\tcbprocmdfivesum}{}{\tcbproc@writemdfive{#2}}%
+ \expandafter\@secondoftwo%
+}%
+
+\newrobustcmd{\tcbiffileprocess}[1]{%
+ \ifcase\numexpr#1\relax%
+ \expandafter\iftcb@process@on%
+ \or%
+ \expandafter\iftcb@process@conditional%
+ \else%
+ \expandafter\iftcb@process@off%
+ \fi%
+}
diff --git a/macros/latex/contrib/tcolorbox/tcbraster.code.tex b/macros/latex/contrib/tcolorbox/tcbraster.code.tex
new file mode 100644
index 0000000000..aab39967d6
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcbraster.code.tex
@@ -0,0 +1,242 @@
+%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% tcbskinsjigsaw.code.tex: Code for colorboxes with different skins
+%%
+%% -------------------------------------------------------------------------------------------
+%% 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}
+
+\newcounter{tcbrastercolumn}
+\newcounter{tcbrasterrow}
+\newcounter{tcbraster}
+
+\newrobustcmd{\thetcbrasternum}{\the\numexpr(\c@tcbrasterrow-1)*\kvtcb@raster@columns+\c@tcbrastercolumn\relax}
+
+\def\tcb@raster@ehg@all{%
+ \tcbset{equal height group={\kvtcb@raster@ehgid}}%
+}
+
+\def\tcb@raster@ehg@row{%
+ \tcbset{equal height group={\kvtcb@raster@ehgid @\number\c@tcbrasterrow}}%
+}
+
+
+\tcbset{%
+ raster columns/.store in=\kvtcb@raster@columns,
+ raster rows/.store in=\kvtcb@raster@rows,
+ raster width/.store in=\kvtcb@raster@width,
+ raster height/.store in=\kvtcb@raster@height,
+ %
+ raster before skip/.store in=\kvtcb@raster@skip@before,
+ raster after skip/.store in=\kvtcb@raster@skip@after,
+ raster left skip/.store in=\kvtcb@raster@skip@left,
+ raster right skip/.store in=\kvtcb@raster@skip@right,
+ %
+ raster column skip/.store in=\kvtcb@raster@xskip,
+ raster row skip/.store in=\kvtcb@raster@yskip,
+ %
+ raster equal skip/.style={raster before skip=#1,raster after skip=#1,
+ raster column skip=#1,raster row skip=#1},
+ %
+ raster@halign/.store in=\kvtcb@raster@halign,
+ raster halign/.is choice,
+ raster halign/center/.style={raster@halign=\centering},
+ raster halign/left/.style={raster@halign=\raggedright},
+ raster halign/right/.style={raster@halign=\raggedleft},
+ %
+ raster valign/.store in=\kvtcb@raster@valign,
+ %
+ raster equal height group/.store in=\kvtcb@raster@ehgid,%
+ raster equal height/.is choice,
+ raster equal height/.default=all,
+ raster equal height/none/.code={\let\tcb@raster@ehg@set\@empty},%
+ raster equal height/rows/.code={\let\tcb@raster@ehg@set\tcb@raster@ehg@row},%
+ raster equal height/all/.code={\let\tcb@raster@ehg@set\tcb@raster@ehg@all},%
+ %
+ raster force size/.is choice,%
+ raster force size/.default=true,%
+ raster force size/true/.code={\let\tcb@raster@set@size\tcbset@late@options},%
+ raster force size/false/.code={\let\tcb@raster@set@size\tcbset},%
+ raster multicolumn/.code={%
+ \ifnum\numexpr\c@tcbrastercolumn+#1>\numexpr\kvtcb@raster@columns+1\relax
+ \tcb@warning{'raster multicolumn' combined too much columns}%
+ \else%
+ \tcbset@late@options{%
+ code={\preto\kvtcb@afterbox{\addtocounter{tcbrastercolumn}{\numexpr#1-1}}},
+ width=(\tcb@raster@box@width+\tcb@raster@xskip)*#1-\tcb@raster@xskip}%
+ \fi%
+ },
+ raster multirow/.code={%
+ \ifdefined\tcb@raster@box@height%
+ \tcbset@late@options{%
+ height=(\tcb@raster@box@height+\tcb@raster@yskip)*#1-\tcb@raster@yskip}%
+ \else%
+ \tcb@warning{'raster multirow' needs a fixed 'raster height'}%
+ \fi%
+ },
+ raster width center/.style={raster width=\linewidth,raster left skip=(\linewidth-(#1))/2,raster right skip=(\linewidth-(#1))/2},
+ raster width flush left/.style={raster width=\linewidth,raster left skip=0pt,raster right skip=\linewidth-(#1)},
+ raster width flush right/.style={raster width=\linewidth,raster left skip=\linewidth-(#1),raster right skip=0pt},
+}
+
+\tcbset{
+ raster reset/.style={
+ raster width=\linewidth,raster height=0pt,
+ raster equal skip=2mm,
+ raster columns=2,raster rows=2,
+ raster left skip=0pt,raster right skip=0pt,
+ raster halign=left,raster valign=center,
+ raster equal height=none,
+ raster equal height group={REG@\tcb@raster@number},
+ raster force size,},
+ raster reset
+}
+
+\setcounter{tcbraster}{0}
+
+\let\tcb@raster@change@minipage\@empty
+\let\tcb@raster@change@fitbox\@empty
+\def\tcb@raster@change@hbox{\tcbset{capture=minipage}}
+
+\def\tcb@height@fill@unbroken@raster#1{%
+ \ifnum\c@tcblayer<2\relax%
+ \kvtcb@beforebox%
+ \def\kvtcb@beforebox{}%
+ \tcb@breakat@init%
+ \tcbset{compress page=#1}%
+ \tcb@comp@h@page%
+ \ifdim\tcb@h@page<0pt\relax\unkern\pagebreak\tcb@comp@h@page\kern\tcb@raster@skip@left\fi%
+ \tcbset{height=\tcb@h@page-\kvtcb@bbtop@stand-\kvtcb@bbbottom@stand}%
+ \fi%
+}
+
+\newenvironment{tcbraster}[1][]{%
+ \tcb@layer@pushup%
+ \stepcounter{tcbraster}%
+ \edef\tcb@raster@number{\number\c@tcbraster}%
+ \edef\tcb@raster@save@column{\number\c@tcbrastercolumn}%
+ \edef\tcb@raster@save@row{\number\c@tcbrasterrow}%
+ \let\tcb@raster@change@fitbox\@empty%
+ \setcounter{tcbrastercolumn}{1}%
+ \setcounter{tcbrasterrow}{1}%
+ \let\tcb@height@fill@unbroken\tcb@height@fill@unbroken@raster%
+ \tcbset{every box on layer \the\numexpr\number\c@tcblayer+1\relax/.code={%
+ \tcb@raster@ehg@set%
+ \tcbset{raster every box/.try}%
+ \ifodd\c@tcbrastercolumn\relax%
+ \tcbset{raster odd column/.try}%
+ \else%
+ \tcbset{raster even column/.try}%
+ \fi%
+ \tcbset{raster column \number\c@tcbrastercolumn/.try}%
+ \ifodd\c@tcbrasterrow\relax%
+ \tcbset{raster odd row/.try}%
+ \else%
+ \tcbset{raster even row/.try}%
+ \fi%
+ \tcbset{raster row \number\c@tcbrasterrow/.try}%
+ \ifodd\thetcbrasternum\relax%
+ \tcbset{raster odd number/.try}%
+ \else%
+ \tcbset{raster even number/.try}%
+ \fi%
+ \tcbset{raster row \number\c@tcbrasterrow\space column \number\c@tcbrastercolumn/.try}%
+ \tcbset{raster number \thetcbrasternum/.try}%
+ }}%
+ \tcbset{#1}%
+ % sanitize
+ \tcbdimto\tcb@raster@width{\kvtcb@raster@width}%
+ \tcbdimto\tcb@raster@height{\kvtcb@raster@height}%
+ \tcbdimto\tcb@raster@skip@before{\kvtcb@raster@skip@before}%
+ \tcbdimto\tcb@raster@skip@after{\kvtcb@raster@skip@after}%
+ \tcbdimto\tcb@raster@skip@left{\kvtcb@raster@skip@left}%
+ \tcbdimto\tcb@raster@skip@right{\kvtcb@raster@skip@right}%
+ \tcbdimto\tcb@raster@xskip{\kvtcb@raster@xskip}%
+ \tcbdimto\tcb@raster@yskip{\kvtcb@raster@yskip}%
+ \tcbset@late@options{%
+ before={\ifhmode\unskip\fi\ifnum\c@tcbrastercolumn>1 \kern\tcb@raster@xskip\else%
+ \ifnum\c@tcbrasterrow>1 \parindent\z@\parskip\z@\par\nointerlineskip\addvspace{\the\dimexpr\tcb@raster@yskip\relax}\noindent\fi%
+ \kern\tcb@raster@skip@left\fi},
+ after={%
+ \ifnum\c@tcbrastercolumn=\kvtcb@raster@columns\relax%
+ \kern\tcb@raster@skip@right%
+ \setcounter{tcbrastercolumn}{1}\addtocounter{tcbrasterrow}{1}%
+ \else%
+ \stepcounter{tcbrastercolumn}%
+ \fi},%
+ box align=\kvtcb@raster@valign,%
+ }%
+ \tcbdimto\tcb@raster@box@width{(\tcb@raster@width+\tcb@raster@xskip-\tcb@raster@skip@left-\tcb@raster@skip@right)/\kvtcb@raster@columns-\tcb@raster@xskip}%
+ \tcb@raster@set@size{%
+ code={\csuse{tcb@raster@change@\kvtcb@capture}},
+ width=\tcb@raster@box@width,
+ }%
+ \ifdim\dimexpr\tcb@raster@height>0pt\relax%
+ \tcbdimto\tcb@raster@box@height{(\tcb@raster@height+\tcb@raster@yskip-0.001pt)/\kvtcb@raster@rows-\tcb@raster@yskip}%
+ \tcb@raster@set@size{height=\tcb@raster@box@height}%
+ \fi%
+ \let\tcb@end@raster\@empty%
+ \ifinner\ifhmode%
+ \color@vbox%
+ \hsize=\tcb@raster@width%
+ \let\tcb@end@raster\color@endbox%
+ \fi\fi%&
+ \if@nobreak%
+ \iftcb@ignorenobreak%
+ {\par\nointerlineskip%
+ \addvspace{\glueexpr\tcb@raster@skip@before-\parskip}}%
+ \fi%
+ \else%
+ {\par\nointerlineskip%
+ \addvspace{\glueexpr\tcb@raster@skip@before-\parskip}}%
+ \fi%
+ \tcb@parfillskip@check\kvtcb@raster@halign\noindent%
+}{%
+ \ifhmode\unskip\fi%
+ \ifnum\c@tcbrastercolumn>1 %
+ \kern\tcb@raster@skip@right%
+ \fi%
+ \begingroup%
+ \par\nointerlineskip%
+ \addvspace{\glueexpr\tcb@raster@skip@after-\parskip}%
+ \endgroup%
+ \tcb@end@raster%
+ \setcounter{tcbrastercolumn}{\tcb@raster@save@column}%
+ \setcounter{tcbrasterrow}{\tcb@raster@save@row}%
+}
+
+\newcommand{\tcbitem@following}[1][]{%
+ \end{tcolorbox}\begin{tcolorbox}[#1]%
+}
+
+\newcommand{\tcbitem@first}[1][]{%
+ \let\tcbitem=\tcbitem@following%
+ \begin{tcolorbox}[#1]%
+}
+
+\newenvironment{tcbitemize}[1][]{%
+ \begin{tcbraster}[#1]%
+ \let\tcb@raster@change@fitbox=\tcb@raster@change@hbox%
+ \let\tcbitem=\tcbitem@first%
+}{\end{tcolorbox}\end{tcbraster}}
+
+\newenvironment{tcboxedraster}[2][]{%
+ \tcolorbox[#2]\begin{tcbraster}[#1]}%
+ {\end{tcbraster}\endtcolorbox}
+
+\newenvironment{tcboxeditemize}[2][]{%
+ \tcolorbox[#2]\tcbitemize[#1]}%
+ {\endtcbitemize\endtcolorbox}
diff --git a/macros/latex/contrib/tcolorbox/tcbskins.code.tex b/macros/latex/contrib/tcolorbox/tcbskins.code.tex
new file mode 100644
index 0000000000..b209a86e70
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcbskins.code.tex
@@ -0,0 +1,1899 @@
+%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% tcbskins.code.tex: Code for colorboxes with different skins
+%%
+%% -------------------------------------------------------------------------------------------
+%% 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}
+
+\RequirePackage{tikz}[2010/10/13]
+
+\newenvironment{tikzpicture@tcb@hooked}{%
+ \edef\tcb@tikzpicture@begin{\noexpand\tikzpicture[\expandonce\tcb@tikz@option@hook]}%
+ \tcb@tikzpicture@begin\tcb@tikz@begin@hook}{\tcb@tikz@end@hook\endtikzpicture}
+
+\def\tcb@creategeonodes@true{%
+ \begin{scope}[every node/.style={line width=0mm,inner sep=0mm,outer sep=0mm,draw=none,fill=none,rectangle}]
+ \node[name=frame,at={(0,0)},above right,minimum width=\tcb@width,minimum height=\tcb@height]{};
+ \node[name=interior,at={({\kvtcb@left@rule},{\kvtcb@bottom@rule})},above right,minimum width=\tcb@innerwidth,minimum height=\tcb@innerheight]{};
+ \ifnum\tcbsegmentstate=1%
+ \node[name=segmentation,at={({\kvtcb@left@rule},{\the\dimexpr\kvtcb@bottom@rule+\kvtcb@boxsep*2+\tcb@break@bottomsep+\kvtcb@bottom+\tcb@height@lower\relax})},above right,
+ minimum width=\tcb@innerwidth,minimum height=\the\dimexpr\kvtcb@middle*2\relax]{};
+ \else\iftcb@sidebyside%
+ \node[name=segmentation,at={({\the\dimexpr\kvtcb@left@rule+\kvtcb@boxsep+\kvtcb@leftupper+\tcb@w@upper\relax},{\the\dimexpr\kvtcb@bottom@rule\relax})},above right,
+ minimum width=\the\dimexpr\kvtcb@sbs@gap\relax,minimum height=\tcb@innerheight]{};
+ \fi\fi%
+ \iftcb@hasTitle%
+ \node[name=title,at={({\kvtcb@left@rule},{\the\dimexpr\kvtcb@bottom@rule+\tcb@innerheight+\kvtcb@title@rule\relax})},above right,
+ minimum width=\tcb@innerwidth,minimum height=\the\dimexpr\tcb@h@title+\kvtcb@toptitle+\kvtcb@bottomtitle+\kvtcb@boxsep*2\relax]{};
+ \fi%
+ \tcb@specialgeonodes@hook%
+ \end{scope}%
+}
+
+\def\tcbsettowidthofnode#1#2{%
+ \pgfpointanchor{#2}{east}\unskip%
+ #1\pgf@x%
+ \pgfpointanchor{#2}{west}\unskip%
+ \advance #1 by -\pgf@x\relax%
+}
+
+\def\tcbsetmacrotowidthofnode#1#2{%
+ \tcbsettowidthofnode\pgf@xa{#2}%
+ \edef#1{\the\pgf@xa}%
+}
+
+\def\tcbsettoheightofnode#1#2{%
+ \pgfpointanchor{#2}{north}\unskip%
+ #1\pgf@y%
+ \pgfpointanchor{#2}{south}\unskip%
+ \advance #1 by -\pgf@y\relax%
+}
+
+\def\tcbsetmacrotoheightofnode#1#2{%
+ \tcbsettoheightofnode\pgf@ya{#2}%
+ \edef#1{\the\pgf@ya}%
+}
+
+\def\tcb@spec#1{\tikzset{tcb@spec/.style={#1}}}
+
+\def\tcb@gettikzxy#1#2#3{%
+ \tikz@scan@one@point\pgfutil@firstofone#1\relax%
+ \edef#2{\the\pgf@x}%
+ \edef#3{\the\pgf@y}%
+}
+
+\def\tcb@boundary@tikzbase#1#2#3#4#5#6{%
+ \tcb@gettikzxy{(#1)}{\tcb@xa}{\tcb@ya}%
+ \tcb@gettikzxy{(#2)}{\tcb@xb}{\tcb@yb}%
+ \pgfpathmoveto{\pgfqpoint{\tcb@xa}{\tcb@ya}}%
+ #4\pgfpathlineto{\pgfqpoint{\tcb@xa}{\tcb@yb}}%
+ #5\pgfpathlineto{\pgfqpoint{\tcb@xb}{\tcb@yb}}%
+ #6\pgfpathlineto{\pgfqpoint{\tcb@xb}{\tcb@ya}}%
+ #3\pgfpathclose%
+}
+
+\def\tcb@pathboundary#1#2{\path[#1]\pgfextra{#2};}
+
+\def\tcb@pathbase#1#2#3#4#5#6#7{\tcb@pathboundary{#1}{\tcb@boundary@tikzbase{#2}{#3}{#4}{#5}{#6}{#7}}}
+
+\def\tcb@boundaryframe@pathfirst{%
+ \tcb@boundary@base{0pt}{0pt}%
+ {\tcb@width}{\tcb@height}%
+ {\tcb@arc@zpt}{\tcb@arc@out@NW}{\tcb@arc@out@NE}{\tcb@arc@zpt}%
+}
+
+\def\tcb@boundaryframe@pathmiddle{%
+ \tcb@boundary@base{0pt}{0pt}%
+ {\tcb@width}{\tcb@height}%
+ {\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}%
+}
+
+\def\tcb@boundaryframe@pathlast{%
+ \tcb@boundary@base{0pt}{0pt}%
+ {\tcb@width}{\tcb@height}%
+ {\tcb@arc@out@SW}{\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@out@SE}%
+}
+
+\tikzset{%
+ tcb fill frame/.style={fill=tcbcolframe,fill opacity=\kvtcb@opacityframe,tcb@spec,frame@style},%
+ tcb fill interior/.style={fill=tcbcolback,fill opacity=\kvtcb@opacityback,tcb@spec,interior@style},%
+ tcb fill title/.style={fill=tcbcolbacktitle,fill opacity=\kvtcb@opacitybacktitle,tcb@spec,title@style},%
+}
+
+% fill frame
+\def\tcb@drawframe@path{\tcb@pathboundary{tcb fill frame}{\tcb@outerboundary}}
+\let\tcb@drawframe@pathfirst=\tcb@drawframe@path
+\let\tcb@drawframe@pathmiddle=\tcb@drawframe@path
+\let\tcb@drawframe@pathlast=\tcb@drawframe@path
+
+
+% fill inner box with title
+\def\tcb@drawwithtitle@path{\tcb@pathboundary{tcb fill interior}{\tcb@boundaryinterior@title@standard}}
+
+\def\tcb@drawwithtitle@pathfirst{%
+ \tcb@pathbase{tcb fill interior}{interior.west|-frame.south}{interior.north east}%
+ {\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}%
+}
+
+\let\tcb@drawwithtitle@pathmiddle=\tcb@drawwithtitle@pathfirst
+
+\let\tcb@drawwithtitle@pathlast=\tcb@drawwithtitle@path
+
+% fill inner box without title
+\def\tcb@drawwithouttitle@path{\tcb@pathboundary{tcb fill interior}{\tcb@boundaryinterior@notitle@standard}}
+
+\def\tcb@drawwithouttitle@pathfirst{%
+ \tcb@pathbase{tcb fill interior}{interior.west|-frame.south}{interior.north east}%
+ {\tcb@arc@zpt}{\tcb@arc@ins@NW}{\tcb@arc@ins@NE}{\tcb@arc@zpt}%
+}
+
+\def\tcb@drawwithouttitle@pathmiddle{%
+ \tcb@pathbase{tcb fill interior}{interior.west|-frame.south}{interior.east|-frame.north}%
+ {\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}%
+}
+
+\def\tcb@drawwithouttitle@pathlast{%
+ \tcb@pathbase{tcb fill interior}{interior.south west}{interior.east|-frame.north}%
+ {\tcb@arc@ins@SW}{\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@ins@SE}%
+}
+
+% draw title box
+\def\tcb@drawtitle@path{\tcb@pathboundary{tcb fill title}{\tcb@boundarytitle@standard}}
+
+\let\tcb@drawtitle@pathfirst=\tcb@drawtitle@path
+
+\def\tcb@drawtitle@pathmiddle{%
+ \tcb@pathbase{tcb fill title}{title.south west}{title.north east}%
+ {\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}%
+}
+
+\let\tcb@drawtitle@pathlast=\tcb@drawtitle@pathmiddle
+
+% draw segmentation line
+\def\tcb@drawlower@path{%
+ \iftcb@sidebyside%
+ \path[draw=tcbcolframe,fill opacity=\kvtcb@opacityframe,dash pattern=on 1mm off 1mm,dash phase=0.5mm,tcb@spec,segmentation@style]
+ (segmentation.north)--(segmentation.south);%
+ \else%
+ \path[draw=tcbcolframe,fill opacity=\kvtcb@opacityframe,dash pattern=on 1mm off 1mm,dash phase=0.5mm,tcb@spec,segmentation@style]
+ (segmentation.west)--(segmentation.east);%
+ \fi%
+}
+
+\def\tcb@draw@pseudo@segmentation#1{%
+\begingroup\tcb@shield@externalize\noindent\begin{tikzpicture}%
+ \path[use as bounding box] (0,{\the\dimexpr-\kvtcb@middle-\kvtcb@boxsep\relax})
+ rectangle (\linewidth,{\the\dimexpr\kvtcb@middle+\kvtcb@boxsep\relax});
+ \node[line width=0mm,inner sep=0mm,draw=none,fill=none,rectangle,
+ name=segmentation,at={({\the\dimexpr-\kvtcb@boxsep-(#1)\relax},0)},right,%
+ minimum width=\tcb@innerwidth,minimum height=\the\dimexpr\kvtcb@middle*2\relax]{};
+ \tcb@drawlower@path%
+\end{tikzpicture}\endgroup}
+
+\def\tcbline@star#1{%
+{\parskip\z@\par\nointerlineskip}%
+\xleaders\vbox{\tcb@draw@pseudo@segmentation{#1}}\vskip\dimexpr(\kvtcb@middle+\kvtcb@boxsep)*2\relax%
+{\parskip\z@\par\nointerlineskip}}
+
+\def\tcbline@#1{%
+{\parskip\z@\par\nointerlineskip}%
+\tcb@draw@pseudo@segmentation{#1}%
+{\parskip\z@\par\nointerlineskip}}
+
+\def\tcbline{%
+ \@ifstar{\iftcb@hasLower\tcbline@star{\kvtcb@leftlower}\else\tcbline@star{\kvtcb@leftupper}\fi}%
+ {\iftcb@hasLower\tcbline@{\kvtcb@leftlower+\@totalleftmargin}\else\tcbline@{\kvtcb@leftupper+\@totalleftmargin}\fi}}
+
+
+% draw special versions
+\def\tcb@drawspec@UT{%
+ \tcb@pathbase{tcb fill interior}{segmentation.west}{interior.north east}%
+ {\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}%
+}
+
+\def\tcb@drawspec@UR{%
+ \tcb@pathbase{tcb fill interior}{segmentation.west}{interior.north east}%
+ {\tcb@arc@zpt}{\tcb@arc@ins@NW}{\tcb@arc@ins@NE}{\tcb@arc@zpt}%
+}
+
+\def\tcb@drawspec@US{%
+ \tcb@pathbase{tcb fill interior}{segmentation.west}{interior.east|-frame.north}%
+ {\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}%
+}
+
+\def\tcb@drawspec@LR#1{%
+ \tcb@pathbase{#1,segmentation@style}{interior.south west}{[yshift=0.1mm]segmentation.east}%
+ {\tcb@arc@ins@SW}{\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@ins@SE}%
+}
+
+\def\tcb@drawspec@LS#1{%
+ \tcb@pathbase{#1,segmentation@style}{interior.west|-frame.south}{[yshift=0.1mm]segmentation.east}%
+ {\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}%
+}
+
+\def\tcb@drawspec@sbs@A#1{%
+ \tcb@pathbase{#1,segmentation@style}{segmentation.south}{interior.north east}%
+ {\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@ins@NE}{\tcb@arc@ins@SE}%
+}
+
+\def\tcb@drawspec@sbs@B#1{%
+ \tcb@pathbase{#1,segmentation@style}{segmentation.south}{interior.north east}%
+ {\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@ins@SE}%
+}
+
+\def\tcb@drawspec@sbs@C#1{%
+ \tcb@pathbase{#1,segmentation@style}{segmentation.south|-frame.south}{interior.north east}%
+ {\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@ins@NE}{\tcb@arc@zpt}%
+}
+
+\def\tcb@drawspec@sbs@D#1{%
+ \tcb@pathbase{#1,segmentation@style}{segmentation.south|-frame.south}{interior.north east}%
+ {\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}%
+}
+
+\def\tcb@drawspec@sbs@E#1{%
+ \tcb@pathbase{#1,segmentation@style}{segmentation.south|-frame.south}{interior.east|-frame.north}%
+ {\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}%
+}
+
+\def\tcb@drawspec@sbs@F#1{%
+ \tcb@pathbase{#1,segmentation@style}{segmentation.south}{interior.east|-frame.north}%
+ {\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@ins@SE}%
+}
+
+\def\tcb@drawspec@T{%
+ \tcb@pathbase{top color=tcbcolframe,bottom color=tcbcolback,fill opacity=\kvtcb@opacitybacktitle}{[yshift=-0.01pt]interior.north west}{[yshift=0.01pt]title.south east}%
+ {\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}%
+}
+
+\def\tcb@drawframe@freelance{\tcb@frame@code}
+\def\tcb@drawwithtitle@freelance{\tcb@interiortitled@code}
+\def\tcb@drawwithouttitle@freelance{\tcb@interior@code}
+\def\tcb@drawlower@freelance{\tcb@segmentation@code}
+\def\tcb@drawtitle@freelance{\tcb@title@code}
+
+
+\def\tcb@drawframe@spartan{%
+ \begin{pgfscope}%
+ \pgfpathrectangle{\pgfpointorigin}{\pgfqpoint{\tcb@width}{\tcb@height}}%
+ \pgfsetfillcolor{tcbcolframe}%
+ \pgfsetfillopacity{\kvtcb@opacityframe}%
+ \pgfusepath{fill}%
+ \end{pgfscope}%
+}
+
+\def\tcb@drawwithtitle@spartan{%
+ \begin{pgfscope}%
+ \pgfpathrectanglecorners{\pgfqpoint{\kvtcb@left@rule}{\kvtcb@bottom@rule}}%
+ {\pgfqpoint{\the\dimexpr\tcb@width-\kvtcb@right@rule\relax}{\the\dimexpr\kvtcb@bottom@rule+\tcb@innerheight\relax}}%
+ \pgfsetfillcolor{tcbcolback}%
+ \pgfsetfillopacity{\kvtcb@opacityback}%
+ \pgfusepath{fill}%
+ \end{pgfscope}%
+}
+
+\def\tcb@drawwithouttitle@spartan{%
+ \begin{pgfscope}%
+ \pgfpathrectanglecorners{\pgfqpoint{\kvtcb@left@rule}{\kvtcb@bottom@rule}}%
+ {\pgfqpoint{\the\dimexpr\tcb@width-\kvtcb@right@rule\relax}{\the\dimexpr\tcb@height-\kvtcb@top@rule\relax}}%
+ \pgfsetfillcolor{tcbcolback}%
+ \pgfsetfillopacity{\kvtcb@opacityback}%
+ \pgfusepath{fill}%
+ \end{pgfscope}%
+}
+
+\def\tcb@drawtitle@spartan{%
+ \begin{pgfscope}%
+ \pgfpathrectanglecorners{\pgfqpoint{\kvtcb@left@rule}{\the\dimexpr\kvtcb@bottom@rule+\tcb@innerheight+\kvtcb@title@rule\relax}}%
+ {\pgfqpoint{\the\dimexpr\tcb@width-\kvtcb@right@rule\relax}{\the\dimexpr\tcb@height-\kvtcb@top@rule\relax}}%
+ \pgfsetfillcolor{tcbcolbacktitle}%
+ \pgfsetfillopacity{\kvtcb@opacitybacktitle}%
+ \pgfusepath{fill}%
+ \end{pgfscope}%
+}
+
+\def\tcb@drawlower@spartan{%
+ \begin{pgfscope}%
+ \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}%
+}
+
+
+\tcbset{%
+ frame style/.code={\tikzset{frame@style/.style={#1}}},%
+ frame hidden/.style={frame style={draw=none,fill=none}},
+ frame engine/path/.style={frame code=\tcb@drawframe@path},
+ frame engine/pathfirst/.style={frame code=\tcb@drawframe@pathfirst},
+ frame engine/pathmiddle/.style={frame code=\tcb@drawframe@pathmiddle},
+ frame engine/pathlast/.style={frame code=\tcb@drawframe@pathlast},
+ frame engine/freelance/.style={frame code=\tcb@drawframe@standard},
+ frame engine/spartan/.style={frame code=\tcb@drawframe@spartan},
+ frame engine/empty/.style={frame code=},
+ %
+ interior titled engine/path/.style={interior titled code=\tcb@drawwithtitle@path},
+ interior titled engine/pathfirst/.style={interior titled code=\tcb@drawwithtitle@pathfirst},
+ interior titled engine/pathmiddle/.style={interior titled code=\tcb@drawwithtitle@pathmiddle},
+ interior titled engine/pathlast/.style={interior titled code=\tcb@drawwithtitle@pathlast},
+ interior titled engine/freelance/.style={interior titled code=\tcb@drawwithtitle@standard},
+ interior titled engine/spartan/.style={interior titled code=\tcb@drawwithtitle@spartan},
+ interior titled engine/empty/.style={interior titled code=},
+ %
+ interior engine/path/.style={interior code=\tcb@drawwithouttitle@path},
+ interior engine/pathfirst/.style={interior code=\tcb@drawwithouttitle@pathfirst},
+ interior engine/pathmiddle/.style={interior code=\tcb@drawwithouttitle@pathmiddle},
+ interior engine/pathlast/.style={interior code=\tcb@drawwithouttitle@pathlast},
+ interior engine/freelance/.style={interior code=\tcb@drawwithouttitle@standard},
+ interior engine/spartan/.style={interior code=\tcb@drawwithouttitle@spartan},
+ interior engine/empty/.style={interior code=},
+ %
+ segmentation engine/path/.style={segmentation code=\tcb@drawlower@path},
+ segmentation engine/freelance/.style={segmentation code=\tcb@drawlower@standard},
+ segmentation engine/spartan/.style={segmentation code=\tcb@drawlower@spartan},
+ segmentation engine/empty/.style={segmentation code=},
+ %
+ title engine/path/.style={@title code=\tcb@drawtitle@path},
+ title engine/pathfirst/.style={@title code=\tcb@drawtitle@pathfirst},
+ title engine/pathmiddle/.style={@title code=\tcb@drawtitle@pathmiddle},
+ title engine/pathlast/.style={@title code=\tcb@drawtitle@pathlast},
+ title engine/freelance/.style={@title code=\tcb@drawtitle@standard},
+ title engine/spartan/.style={@title code=\tcb@drawtitle@spartan},
+ title engine/empty/.style={@title code=},
+ %
+ interior style/.code={\tikzset{interior@style/.style={#1}}},%
+ interior hidden/.style={interior style={draw=none,fill=none}},
+ segmentation style/.code={\tikzset{segmentation@style/.style={#1}}},%
+ segmentation hidden/.style={segmentation style={draw=none,fill=none}},
+ @title style/.code={\tikzset{title@style/.style={#1}}},%
+ title style/.style={title filled,@title style={#1}},
+ title hidden/.style={title style={draw=none,fill=none}},
+ titlerule style/.style={%
+ underlay={\iftcb@hasTitle%
+ \path[draw,line width=\kvtcb@title@rule+1000sp,#1]
+ ([yshift=-\kvtcb@title@rule/2]title.south west)--([yshift=-\kvtcb@title@rule/2]title.south east);
+ \fi}},%
+ colbacklower/.colorlet=tcbcolbacklower,%
+ clear@spec/.code={\tcb@spec{}},%
+ tikz/.code={\appto\tcb@tikz@option@hook{,#1}},%
+ tikz reset/.code={\let\tcb@tikz@option@hook\@empty},%
+ at begin tikz/.code={\appto\tcb@tikz@begin@hook{#1}},%
+ at begin tikz reset/.code={\let\tcb@tikz@begin@hook\@empty},%
+ at end tikz/.code={\appto\tcb@tikz@end@hook{#1}},%
+ at end tikz reset/.code={\let\tcb@tikz@end@hook\@empty},%
+ rotate/.style={tikz={rotate=#1,transform shape}},%
+ scale/.style={tikz={scale=#1,transform shape},%
+ at begin tikz={%
+ \tcbdimto\kvtcb@arc{#1\dimexpr\kvtcb@arc}%
+ \tcbdimto\tcb@outer@arc{#1\dimexpr\tcb@outer@arc}%
+ \def\tcb@shadow@comp@arc{%
+ \tcbdimto\tcb@shadow@ts{#1\dimexpr\tcb@shadow@ts}%
+ \ifdim\dimexpr\tcb@outer@arc>\tcb@arc@scale\dimexpr\tcb@shadow@ts\relax%
+ \tcbdimto\tcb@shadow@arc{\tcb@outer@arc-\tcb@arc@scale\dimexpr\tcb@shadow@ts\relax}%
+ \else%
+ \let\tcb@shadow@arc=\tcb@zpt%
+ \fi%
+ }%
+ }},%
+ remember/.style={tikz={remember picture}},%
+ remember as/.style={tikz={remember picture},at end tikz={\pgfnodealias{#1}{frame}}},%
+}
+
+\tcbset{%
+ base@unbroken/.style={%
+ clear@spec,graphical environment=tikzpicture@tcb@hooked,geometry nodes,%
+ set@outerboundary=\tcb@boundaryframe@standard,%
+ shape@of@skin=unbroken,%
+ set@extensions@preframe={\kvtcb@shadow},%
+ set@extensions@postframe={\tcb@draw@border@unbroken\tcb@apply@underlay\tcb@apply@overlay},%
+ set@extensions@final={\tcb@apply@finish}%
+ },%
+ base@first/.style={%
+ clear@spec,graphical environment=tikzpicture@tcb@hooked,geometry nodes,%
+ set@outerboundary=\tcb@boundaryframe@pathfirst,%
+ shape@of@skin=first,%
+ set@extensions@preframe={\kvtcb@shadow},%
+ set@extensions@postframe={\tcb@draw@border@first\tcb@apply@underlay\tcb@apply@overlay},%
+ set@extensions@final={\tcb@apply@finish}%
+ },%
+ base@middle/.style={%
+ clear@spec,graphical environment=tikzpicture@tcb@hooked,geometry nodes,%
+ set@outerboundary=\tcb@boundaryframe@pathmiddle,%
+ shape@of@skin=middle,%
+ set@extensions@preframe={\kvtcb@shadow},%
+ set@extensions@postframe={\tcb@draw@border@middle\tcb@apply@underlay\tcb@apply@overlay},%
+ set@extensions@final={\tcb@apply@finish}%
+ },%
+ base@last/.style={%
+ clear@spec,graphical environment=tikzpicture@tcb@hooked,geometry nodes,%
+ set@outerboundary=\tcb@boundaryframe@pathlast,%
+ shape@of@skin=last,%
+ set@extensions@preframe={\kvtcb@shadow},%
+ set@extensions@postframe={\tcb@draw@border@last\tcb@apply@underlay\tcb@apply@overlay},%
+ set@extensions@final={\tcb@apply@finish}%
+ },%
+}
+
+\tcb@new@skin{enhanced}{base@unbroken,%
+ frame engine=path,interior titled engine=path,interior engine=path,segmentation engine=path,title engine=path,%
+ skin first=enhancedfirst,skin middle=enhancedmiddle,skin last=enhancedlast}
+
+\tcb@new@skin{enhancedfirst}{base@first,%
+ frame engine=pathfirst,interior titled engine=pathfirst,interior engine=pathfirst,segmentation engine=path,title engine=pathfirst,%
+ skin first=enhancedfirst,skin middle=enhancedmiddle,skin last=enhancedmiddle}
+
+\tcb@new@skin{enhancedmiddle}{base@middle,%
+ frame engine=pathmiddle,interior titled engine=pathmiddle,interior engine=pathmiddle,segmentation engine=path,title engine=pathmiddle,%
+ skin first=enhancedmiddle,skin middle=enhancedmiddle,skin last=enhancedmiddle}
+
+\tcb@new@skin{enhancedlast}{base@last,%
+ frame engine=pathlast,interior titled engine=pathlast,interior engine=pathlast,segmentation engine=path,title engine=pathlast,%
+ skin first=enhancedmiddle,skin middle=enhancedmiddle,skin last=enhancedlast}
+
+\tcbset{enhanced/.style={skin=enhanced},%
+ enhanced standard/.style={skin=enhanced,
+ skin first=enhanced,skin middle=enhanced,skin last=enhanced},%
+ blank/.style={enhanced,frame hidden,interior hidden,segmentation hidden,%
+ arc=0pt,outer arc=0pt,boxsep=0pt,top=0pt,bottom=0pt,left=0pt,right=0pt,boxrule=0pt,%
+ bottomtitle=6pt,middle=3pt}}
+
+\tcb@new@skin{empty}{base@unbroken,%
+ frame engine=empty,interior titled engine=empty,interior engine=empty,segmentation engine=empty,title engine=empty,%
+ skin first=emptyfirst,skin middle=emptymiddle,skin last=emptylast}
+
+\tcb@new@skin{emptyfirst}{base@first,%
+ frame engine=empty,interior titled engine=empty,interior engine=empty,segmentation engine=empty,title engine=empty,%
+ skin first=emptyfirst,skin middle=emptymiddle,skin last=emptymiddle}
+
+\tcb@new@skin{emptymiddle}{base@middle,%
+ frame engine=empty,interior titled engine=empty,interior engine=empty,segmentation engine=empty,title engine=empty,%
+ skin first=emptymiddle,skin middle=emptymiddle,skin last=emptymiddle}
+
+\tcb@new@skin{emptylast}{base@last,%
+ frame engine=empty,interior titled engine=empty,interior engine=empty,segmentation engine=empty,title engine=empty,%
+ skin first=emptymiddle,skin middle=emptymiddle,skin last=emptylast}
+
+\tcbset{empty/.style={skin=empty},%
+ blanker/.style={empty,arc=0pt,outer arc=0pt,boxsep=0pt,top=0pt,bottom=0pt,left=0pt,right=0pt,boxrule=0pt,%
+ bottomtitle=6pt,middle=3pt},
+ blankest/.style={blanker,notitle,
+ no shadow,no underlay,no overlay,no finish,no borderline},
+ }
+
+\tcb@new@skin{freelance}{base@unbroken,%
+ frame engine=freelance,interior titled engine=freelance,interior engine=freelance,segmentation engine=freelance,title engine=freelance,%
+ skin first=freelancefirst,skin middle=freelancemiddle,skin last=freelancelast}%
+
+\tcb@new@skin{freelancefirst}{base@first,%
+ frame engine=freelance,interior titled engine=freelance,interior engine=freelance,segmentation engine=freelance,title engine=freelance,%
+ skin first=freelancefirst,skin middle=freelancemiddle,skin last=freelancemiddle}%
+
+\tcb@new@skin{freelancemiddle}{base@middle,%
+ frame engine=freelance,interior titled engine=freelance,interior engine=freelance,segmentation engine=freelance,title engine=freelance,%
+ skin first=freelancemiddle,skin middle=freelancemiddle,skin last=freelancemiddle}%
+
+\tcb@new@skin{freelancelast}{base@last,%
+ frame engine=freelance,interior titled engine=freelance,interior engine=freelance,segmentation engine=freelance,title engine=freelance,%
+ skin first=freelancemiddle,skin middle=freelancemiddle,skin last=freelancelast}%
+
+\tcbset{freelance/.style={skin=freelance},
+ % for backward compatibility:
+ extend freelance/.style={#1},%
+ extend freelancefirst/.style={skin first is subskin of={freelancefirst}{#1}},%
+ extend freelancemiddle/.style={skin middle is subskin of={freelancemiddle}{#1}},%
+ extend freelancelast/.style={skin last is subskin of={freelancelast}{#1}}}
+
+\tcb@new@skin{bicolor}{base@unbroken,%
+ frame engine=path,interior titled engine=empty,interior engine=empty,segmentation engine=empty,title engine=path,%
+ interior titled code={%
+ \iftcb@lowerseparated%
+ \ifcase\tcbsegmentstate%
+ {\tcb@spec{fill=tcbcolback}\tcb@drawwithtitle@path}%
+ \or%
+ \tcb@spec{fill=tcbcolback}\tcb@drawspec@UT%
+ \else%
+ {\tcbset{interior style={fill=tcbcolbacklower,segmentation@style}}\tcb@drawwithtitle@path}%
+ \fi%
+ \else%
+ {\tcb@spec{fill=tcbcolback}\tcb@drawwithtitle@path}%
+ \fi\tcb@spec{}},
+ interior code={%
+ \iftcb@lowerseparated%
+ \ifcase\tcbsegmentstate%
+ {\tcb@spec{fill=tcbcolback}\tcb@drawwithouttitle@path}%
+ \or%
+ \tcb@spec{fill=tcbcolback}\tcb@drawspec@UR%
+ \else%
+ {\tcbset{interior style={fill=tcbcolbacklower,segmentation@style}}\tcb@drawwithouttitle@path}%
+ \fi%
+ \else%
+ {\tcb@spec{fill=tcbcolback}\tcb@drawwithouttitle@path}%
+ \fi\tcb@spec{}},
+ segmentation code={\iftcb@sidebyside%
+ \iftcb@hasTitle\tcb@drawspec@sbs@B{fill=tcbcolbacklower}\else%
+ \tcb@drawspec@sbs@A{fill=tcbcolbacklower}\fi\else\tcb@drawspec@LR{fill=tcbcolbacklower}\fi\tcb@spec{}},%
+ skin first=bicolorfirst,skin middle=bicolormiddle,skin last=bicolorlast}
+
+\tcbset{bicolor/.style={skin=bicolor}}
+
+\tcb@new@skin{bicolorfirst}{base@first,%
+ frame engine=pathfirst,interior titled engine=empty,interior engine=empty,segmentation engine=empty,title engine=pathfirst,%
+ interior titled code={%
+ \iftcb@lowerseparated%
+ \ifcase\tcbsegmentstate%
+ {\tcb@spec{fill=tcbcolback}\tcb@drawwithtitle@pathfirst}%
+ \or%
+ \tcb@spec{fill=tcbcolback}\tcb@drawspec@UT%
+ \else%
+ {\tcbset{interior style={fill=tcbcolbacklower,segmentation@style}}\tcb@drawwithtitle@pathfirst}%
+ \fi%
+ \else%
+ {\tcb@spec{fill=tcbcolback}\tcb@drawwithtitle@pathfirst}%
+ \fi\tcb@spec{}},
+ interior code={%
+ \iftcb@lowerseparated%
+ \ifcase\tcbsegmentstate%
+ {\tcb@spec{fill=tcbcolback}\tcb@drawwithouttitle@pathfirst}%
+ \or%
+ \tcb@spec{fill=tcbcolback}\tcb@drawspec@UR%
+ \else%
+ {\tcbset{interior style={fill=tcbcolbacklower,segmentation@style}}\tcb@drawwithouttitle@pathfirst}%
+ \fi%
+ \else%
+ {\tcb@spec{fill=tcbcolback}\tcb@drawwithouttitle@pathfirst}%
+ \fi\tcb@spec{}},
+ segmentation code={\iftcb@sidebyside%
+ \iftcb@hasTitle\tcb@drawspec@sbs@D{fill=tcbcolbacklower}\else%
+ \tcb@drawspec@sbs@C{fill=tcbcolbacklower}\fi\else\tcb@drawspec@LS{fill=tcbcolbacklower}\fi\tcb@spec{}},%
+ skin first=bicolorfirst,skin middle=bicolormiddle,skin last=bicolormiddle}
+
+\tcb@new@skin{bicolormiddle}{base@middle,%
+ frame engine=pathmiddle,interior titled engine=empty,interior engine=empty,segmentation engine=empty,title engine=pathmiddle,%
+ interior titled code={%
+ \iftcb@lowerseparated%
+ \ifcase\tcbsegmentstate%
+ {\tcb@spec{fill=tcbcolback}\tcb@drawwithtitle@pathmiddle}%
+ \or%
+ \tcb@spec{fill=tcbcolback}\tcb@drawspec@UT%
+ \else%
+ {\tcbset{interior style={fill=tcbcolbacklower,segmentation@style}}\tcb@drawwithtitle@pathmiddle}%
+ \fi%
+ \else%
+ {\tcb@spec{fill=tcbcolback}\tcb@drawwithtitle@pathmiddle}%
+ \fi\tcb@spec{}},%
+ interior code={%
+ \iftcb@lowerseparated%
+ \ifcase\tcbsegmentstate%
+ {\tcb@spec{fill=tcbcolback}\tcb@drawwithouttitle@pathmiddle}%
+ \or%
+ \tcb@spec{fill=tcbcolback}\tcb@drawspec@US%
+ \else%
+ {\tcbset{interior style={fill=tcbcolbacklower,segmentation@style}}\tcb@drawwithouttitle@pathmiddle}%
+ \fi%
+ \else%
+ {\tcb@spec{fill=tcbcolback}\tcb@drawwithouttitle@pathmiddle}%
+ \fi\tcb@spec{}},
+ segmentation code={\iftcb@sidebyside%
+ \iftcb@hasTitle\tcb@drawspec@sbs@D{fill=tcbcolbacklower}\else%
+ \tcb@drawspec@sbs@E{fill=tcbcolbacklower}\fi\else\tcb@drawspec@LS{fill=tcbcolbacklower}\fi\tcb@spec{}},%
+ skin first=bicolormiddle,skin middle=bicolormiddle,skin last=bicolormiddle}
+
+\tcb@new@skin{bicolorlast}{base@last,%
+ frame engine=pathlast,interior titled engine=empty,interior engine=empty,segmentation engine=empty,title engine=pathlast,%
+ interior titled code={%
+ \iftcb@lowerseparated%
+ \ifcase\tcbsegmentstate
+ {\tcb@spec{fill=tcbcolback}\tcb@drawwithtitle@pathlast}%
+ \or%
+ \tcb@spec{fill=tcbcolback}\tcb@drawspec@UT%
+ \else%
+ {\tcbset{interior style={fill=tcbcolbacklower,segmentation@style}}\tcb@drawwithtitle@pathlast}%
+ \fi%
+ \else%
+ {\tcb@spec{fill=tcbcolback}\tcb@drawwithtitle@pathlast}%
+ \fi\tcb@spec{}},
+ interior code={%
+ \iftcb@lowerseparated%
+ \ifcase\tcbsegmentstate%
+ {\tcb@spec{fill=tcbcolback}\tcb@drawwithouttitle@pathlast}%
+ \or%
+ \tcb@spec{fill=tcbcolback}\tcb@drawspec@US%
+ \else
+ {\tcbset{interior style={fill=tcbcolbacklower,segmentation@style}}\tcb@drawwithouttitle@pathlast}%
+ \fi%
+ \else%
+ {\tcb@spec{fill=tcbcolback}\tcb@drawwithouttitle@pathlast}%
+ \fi\tcb@spec{}},%
+ segmentation code={\iftcb@sidebyside%
+ \iftcb@hasTitle\tcb@drawspec@sbs@B{fill=tcbcolbacklower}\else%
+ \tcb@drawspec@sbs@F{fill=tcbcolbacklower}\fi\else\tcb@drawspec@LR{fill=tcbcolbacklower}\fi\tcb@spec{}},%
+ skin first=bicolormiddle,skin middle=bicolormiddle,skin last=bicolorlast}
+
+\tcb@new@skin{tile}{skin@bicolor,frame engine=empty,%
+ skin first=tilefirst,skin middle=tilemiddle,skin last=tilelast}
+
+\tcbset{tile/.style={skin=tile,boxrule=0pt,sharp corners,title filled,fonttitle=\bfseries}}
+
+\tcb@new@skin{tilefirst}{skin@bicolorfirst,frame engine=empty,%
+ skin first=tilefirst,skin middle=tilemiddle,skin last=tilemiddle}
+
+\tcb@new@skin{tilemiddle}{skin@bicolormiddle,frame engine=empty,%
+ skin first=tilemiddle,skin middle=tilemiddle,skin last=tilemiddle}
+
+\tcb@new@skin{tilelast}{skin@bicolorlast,frame engine=empty,%
+ skin first=tilemiddle,skin middle=tilemiddle,skin last=tilelast}
+
+\tikzset{beamer@color/.style={fill=none,top color=tcbcolback,bottom color=tcbcolback!85!black}}
+
+\tcb@new@skin{beamer}{base@unbroken,%
+ frame engine=path,interior titled engine=empty,interior engine=empty,segmentation engine=empty,title engine=path,%
+ interior titled code={%
+ \iftcb@lowerseparated%
+ \ifnum\tcbsegmentstate=1%
+ \tcb@spec{beamer@color}\tcb@drawspec@UT%
+ \else%
+ {\tcb@spec{beamer@color}\tcb@drawwithtitle@path}%
+ \fi%
+ \else%
+ {\tcb@spec{beamer@color}\tcb@drawwithtitle@path}%
+ \fi%
+ \tcb@drawspec@T\tcb@spec{}},
+ interior code={%
+ \iftcb@lowerseparated%
+ \ifnum\tcbsegmentstate=1
+ \tcb@spec{beamer@color}\tcb@drawspec@UR%
+ \else%
+ {\tcb@spec{beamer@color}\tcb@drawwithouttitle@path}%
+ \fi%
+ \else%
+ {\tcb@spec{beamer@color}\tcb@drawwithouttitle@path}%
+ \fi\tcb@spec{}},
+ segmentation code={\iftcb@sidebyside\tcb@drawlower@path\else\tcb@drawspec@LR{beamer@color}\fi\tcb@spec{}},%
+ skin first=beamerfirst,skin middle=beamermiddle,skin last=beamerlast}
+
+\tcbset{beamer/.style={skin=beamer,boxrule=0mm,titlerule=1mm,toptitle=0.5mm,arc=2mm,fonttitle=\bfseries,drop fuzzy shadow}}
+
+\tcb@new@skin{beamerfirst}{base@first,%
+ frame engine=pathfirst,interior titled engine=empty,interior engine=empty,segmentation engine=empty,title engine=pathfirst,%
+ interior titled code={%
+ \iftcb@lowerseparated%
+ \ifnum\tcbsegmentstate=1%
+ \tcb@spec{beamer@color}\tcb@drawspec@UT%
+ \else%
+ {\tcb@spec{beamer@color}\tcb@drawwithtitle@pathfirst}%
+ \fi%
+ \else%
+ {\tcb@spec{beamer@color}\tcb@drawwithtitle@pathfirst}%
+ \fi%
+ \tcb@drawspec@T\tcb@spec{}},%
+ interior code={%
+ \iftcb@lowerseparated%
+ \ifnum\tcbsegmentstate=1
+ \tcb@spec{beamer@color}\tcb@drawspec@UR%
+ \else%
+ {\tcb@spec{beamer@color}\tcb@drawwithouttitle@pathfirst}%
+ \fi%
+ \else%
+ {\tcb@spec{beamer@color}\tcb@drawwithouttitle@pathfirst}%
+ \fi\tcb@spec{}},
+ segmentation code={\iftcb@sidebyside\tcb@drawlower@path\else\tcb@drawspec@LS{beamer@color}\fi\tcb@spec{}},%
+ skin first=beamerfirst,skin middle=beamermiddle,skin last=beamermiddle}
+
+\tcb@new@skin{beamermiddle}{base@middle,%
+ frame engine=pathmiddle,interior titled engine=empty,interior engine=empty,segmentation engine=empty,title engine=pathmiddle,%
+ interior titled code={%
+ \iftcb@lowerseparated%
+ \ifnum\tcbsegmentstate=1%
+ \tcb@spec{beamer@color}\tcb@drawspec@UT%
+ \else%
+ {\tcb@spec{beamer@color}\tcb@drawwithtitle@pathmiddle}%
+ \fi%
+ \else%
+ {\tcb@spec{beamer@color}\tcb@drawwithtitle@pathmiddle}%
+ \fi%
+ \tcb@drawspec@T\tcb@spec{}},%
+ interior code={%
+ \iftcb@lowerseparated%
+ \ifnum\tcbsegmentstate=1
+ \tcb@spec{beamer@color}\tcb@drawspec@US%
+ \else%
+ {\tcb@spec{beamer@color}\tcb@drawwithouttitle@pathmiddle}%
+ \fi%
+ \else%
+ {\tcb@spec{beamer@color}\tcb@drawwithouttitle@pathmiddle}%
+ \fi\tcb@spec{}},
+ segmentation code={\iftcb@sidebyside\tcb@drawlower@path\else\tcb@drawspec@LS{beamer@color}\fi\tcb@spec{}},%
+ skin first=beamermiddle,skin middle=beamermiddle,skin last=beamermiddle}
+
+\tcb@new@skin{beamerlast}{base@last,%
+ frame engine=pathlast,interior titled engine=empty,interior engine=empty,segmentation engine=empty,title engine=pathlast,%
+ interior titled code={%
+ \iftcb@lowerseparated%
+ \ifnum\tcbsegmentstate=1%
+ \tcb@spec{beamer@color}\tcb@drawspec@UT%
+ \else%
+ {\tcb@spec{beamer@color}\tcb@drawwithtitle@pathlast}%
+ \fi%
+ \else%
+ {\tcb@spec{beamer@color}\tcb@drawwithtitle@pathlast}%
+ \fi%
+ \tcb@drawspec@T\tcb@spec{}},%
+ interior code={%
+ \iftcb@lowerseparated%
+ \ifnum\tcbsegmentstate=1
+ \tcb@spec{beamer@color}\tcb@drawspec@US%
+ \else%
+ {\tcb@spec{beamer@color}\tcb@drawwithouttitle@pathlast}%
+ \fi%
+ \else%
+ {\tcb@spec{beamer@color}\tcb@drawwithouttitle@pathlast}%
+ \fi\tcb@spec{}},
+ segmentation code={\iftcb@sidebyside\tcb@drawlower@path\else\tcb@drawspec@LR{beamer@color}\fi\tcb@spec{}},%
+ skin first=beamermiddle,skin middle=beamermiddle,skin last=beamerlast}
+
+\def\tcb@drawspec@widgetsegment{%
+ \iftcb@sidebyside%
+ \tcb@drawlower@path%
+ \else%
+ \path[left color=tcbcolframe!75!white,right color=tcbcolframe!75!white!25!tcbcolback,segmentation@style]
+ ([yshift={-\kvtcb@middle/4}]segmentation.west) rectangle ([yshift={\kvtcb@middle/4}]segmentation.east);
+ \fi%
+}
+
+\tikzset{widget@color/.style={left color=tcbcolframe!75!white,right color=tcbcolframe!75!white!25!tcbcolback}}
+
+\tcb@new@skin{widget}{base@unbroken,%
+ frame engine=path,interior titled engine=path,interior engine=path,segmentation engine=empty,title engine=empty,%
+ title code={{\tcb@spec{widget@color}\tcb@drawtitle@path}},
+ segmentation code={\tcb@drawspec@widgetsegment},%
+ skin first=widgetfirst,skin middle=widgetmiddle,skin last=widgetlast}
+
+\tcbset{widget/.style={skin=widget,arc=0.5mm,fonttitle=\bfseries,titlerule=0mm,toprule at break=0mm}}
+
+\tcb@new@skin{widgetfirst}{base@first,%
+ frame engine=pathfirst,interior titled engine=pathfirst,interior engine=pathfirst,segmentation engine=empty,title engine=empty,%
+ title code={{\tcb@spec{widget@color}\tcb@drawtitle@pathfirst}},%
+ segmentation code={\tcb@drawspec@widgetsegment},%
+ skin first=widgetfirst,skin middle=widgetmiddle,skin last=widgetmiddle}
+
+\tcb@new@skin{widgetmiddle}{base@middle,%
+ frame engine=pathmiddle,interior titled engine=pathmiddle,interior engine=pathmiddle,segmentation engine=empty,title engine=empty,%
+ title code={{\tcb@spec{widget@color}\tcb@drawtitle@pathmiddle}},%
+ segmentation code={\tcb@drawspec@widgetsegment},%
+ skin first=widgetmiddle,skin middle=widgetmiddle,skin last=widgetmiddle}
+
+\tcb@new@skin{widgetlast}{base@last,%
+ frame engine=pathlast,interior titled engine=pathlast,interior engine=pathlast,segmentation engine=empty,title engine=empty,%
+ title code={{\tcb@spec{widget@color}\tcb@drawtitle@pathlast}},
+ segmentation code={\tcb@drawspec@widgetsegment},%
+ skin first=widgetmiddle,skin middle=widgetmiddle,skin last=widgetlast}
+
+\tcb@new@skin{spartan}{graphical environment=tikzpicture@tcb@hooked,geometry nodes=true,shape@of@skin=unbroken,%
+ set@extensions@preframe=,set@extensions@postframe={\tcb@apply@underlay},set@extensions@final=,%
+ frame engine=spartan,interior titled engine=spartan,interior engine=spartan,title engine=spartan,segmentation engine=spartan,%
+ set@outerboundary=\tcb@boundaryframe@standard,%
+ skin first=spartan,skin middle=spartan,skin last=spartan}
+
+\tcbset{spartan/.style={skin=spartan}}
+
+\tcb@new@skin{draft}{clear@spec,graphical environment=tikzpicture@tcb@hooked,geometry nodes,shape@of@skin=unbroken,%
+ frame engine=empty,interior titled engine=empty,interior engine=empty,segmentation engine=path,title empty,%
+ segmentation style={draw=black,dashed},
+ set@extensions@postframe=,
+ set@extensions@final={\tcb@apply@finish},no finish,%
+ colupper=black!50!white,collower=black!50!white,coltitle=black!50!white,
+ frame code={%
+ \path[draw=blue!10!white,double,line width=1pt,dashed] (current bounding box.south west) rectangle (current bounding box.north east);
+ {\tcb@spec{fill=black!15!white,draw=black}\tcb@drawframe@path}%
+ \iftcb@hasTitle%
+ \path[fill=red!10!white,draw,dotted,rounded corners=\kvtcb@arc]
+ ([xshift={\kvtcb@left@rule},yshift={\kvtcb@bottom@rule}]frame.south west) rectangle
+ (interior.north east);
+ \path[fill=red!10!white,draw,dotted,rounded corners=\kvtcb@arc]
+ ([yshift={\kvtcb@title@rule}]interior.north west) rectangle
+ ([xshift={-\kvtcb@right@rule},yshift={-\kvtcb@top@rule}]frame.north east);
+ \path[fill=white,draw,dotted]
+ ([xshift={\kvtcb@boxsep},yshift={\kvtcb@boxsep}]title.south west) rectangle
+ ([xshift={-\kvtcb@boxsep},yshift={-\kvtcb@boxsep}]title.north east);
+ \path[fill=green!20!white,draw=green!75!black,dashed]
+ ([xshift={\kvtcb@boxsep+\kvtcb@lefttitle},yshift={\kvtcb@boxsep+\kvtcb@bottomtitle}]title.south west)
+ rectangle node[font=\scriptsize] {title: w=\tcb@w@title, h=\tcb@h@title}
+ +(\tcb@w@title,\tcb@h@title);
+ \path[draw=red,opacity=0.5] (title.south west) rectangle (title.north east);
+ \else%
+ \path[fill=red!10!white,draw,dotted,rounded corners=\kvtcb@arc]
+ ([xshift={\kvtcb@left@rule},yshift={\kvtcb@bottom@rule}]frame.south west) rectangle
+ ([xshift={-\kvtcb@right@rule},yshift={-\kvtcb@top@rule}]frame.north east);
+ \fi%
+ \ifcase\tcbsegmentstate
+ \path[fill=white,draw,dotted]
+ ([xshift={\kvtcb@boxsep},yshift={\kvtcb@boxsep+\tcb@break@bottomsep}]interior.south west) rectangle
+ ([xshift={-\kvtcb@boxsep},yshift={-\kvtcb@boxsep-\tcb@break@topsep}]interior.north east);
+ \path[fill=green!20!white,draw=green!75!black,dashed]
+ ([xshift={\kvtcb@boxsep+\kvtcb@leftupper},yshift={\kvtcb@boxsep+\kvtcb@bottom+\tcb@break@bottomsep}]interior.south west)
+ rectangle node[font=\scriptsize] {upper: w=\tcb@w@upper, h=\tcb@height@upper}
+ +(\tcb@w@upper,\tcb@height@upper);
+ \iftcb@sidebyside%
+ \path[fill=green!20!white,draw=green!75!black,dashed]
+ ([yshift={\kvtcb@boxsep+\kvtcb@bottom+\tcb@break@bottomsep}]segmentation.south east)
+ rectangle node[font=\scriptsize] {lower: w=\tcb@w@lower, h=\tcb@height@upper}
+ +(\tcb@w@lower,\tcb@height@upper);
+ \fi%
+ \or%
+ \ifdim\wd\tcb@upperbox=0pt\relax
+ \path[fill=white,draw,dotted]
+ ([xshift={\kvtcb@boxsep},yshift={\kvtcb@boxsep+\tcb@break@bottomsep}]interior.south west) rectangle
+ ([xshift={-\kvtcb@boxsep},yshift={-\kvtcb@boxsep-\tcb@break@topsep}]interior.north east);
+ \else
+ \path[fill=white,draw,dotted]
+ ([xshift={\kvtcb@boxsep},yshift={\kvtcb@boxsep+\tcb@break@bottomsep}]interior.south west) rectangle
+ ([xshift={-\kvtcb@boxsep},yshift={-\kvtcb@boxsep}]segmentation.east);
+ \path[fill=white,draw,dotted]
+ ([xshift={\kvtcb@boxsep},yshift={\kvtcb@boxsep}]segmentation.west)
+ rectangle ([xshift={-\kvtcb@boxsep},yshift={-\kvtcb@boxsep-\tcb@break@topsep}]interior.north east);
+ \path[fill=green!20!white,draw=green!75!black,dashed]
+ ([xshift={\kvtcb@boxsep+\kvtcb@leftupper},yshift={\kvtcb@boxsep}]segmentation.north west)
+ rectangle node[font=\scriptsize] {upper: w=\tcb@w@upper, h=\tcb@height@upper}
+ +(\tcb@w@upper,\tcb@height@upper);
+ \fi%
+ \path[fill=green!20!white,draw=green!75!black,dashed]
+ ([xshift={\kvtcb@boxsep+\kvtcb@leftlower},yshift={\kvtcb@boxsep+\kvtcb@bottom+\tcb@break@bottomsep}]interior.south west)
+ rectangle node[font=\scriptsize] {lower: w=\tcb@w@lower, h=\tcb@height@lower}
+ +(\tcb@w@lower,\tcb@height@lower);
+ \path[draw=red,opacity=0.5] (segmentation.south west) rectangle (segmentation.north east);
+ \else
+ \path[fill=white,draw,dotted]
+ ([xshift={\kvtcb@boxsep},yshift={\kvtcb@boxsep+\tcb@break@bottomsep}]interior.south west) rectangle
+ ([xshift={-\kvtcb@boxsep},yshift={-\kvtcb@boxsep-\tcb@break@topsep}]interior.north east);
+ \path[fill=green!20!white,draw=green!75!black,dashed]
+ ([xshift={\kvtcb@boxsep+\kvtcb@leftlower},yshift={\kvtcb@boxsep+\kvtcb@bottom+\tcb@break@bottomsep}]interior.south west)
+ rectangle node[font=\scriptsize] {lower: w=\tcb@w@lower, h=\tcb@height@lower}
+ +(\tcb@w@lower,\tcb@height@lower);
+ \fi%
+ \path[draw=red,opacity=0.5] (interior.south west) rectangle (interior.north east);
+ \path[draw=red,opacity=0.5] (frame.south west) rectangle (frame.north east);
+ \node[above,font=\scriptsize,red!50!black] at (interior.south) {interior: w=\tcb@innerwidth, h=\tcb@innerheight};
+ \node[above,font=\scriptsize,red!50!black] at (frame.north) {frame: w=\the\dimexpr\tcb@width\relax, h=\tcb@height};
+ \path[draw=blue!10!white,double,line width=1pt,dashed,opacity=0.3] (current bounding box.south west) rectangle (current bounding box.north east);
+ \pgfsetfillopacity{0.3}
+ },
+ skin first=draft,skin middle=draft,skin last=draft}
+
+\tcbset{draft/.style={skin=draft}}
+
+\tikzset{%
+ tcb@forced@clip/.code={\tikz@addmode{\tikz@mode@cliptrue}\let\tikz@options=\pgfutil@empty},%
+ tcb@invclip/.style={clip,insert path={{[reset cm]\pgfextra{%
+ \pgfpathmoveto{\pgfqpoint{-16383.99999pt}{-16383.99999pt}}%
+ \pgfpathlineto{\pgfqpoint{16383.99999pt}{-16383.99999pt}}%
+ \pgfpathlineto{\pgfqpoint{16383.99999pt}{16383.99999pt}}%
+ \pgfpathlineto{\pgfqpoint{-16383.99999pt}{16383.99999pt}}%
+ \pgfpathclose}}}}%
+}%
+
+\def\tcb@clip@frame{\tcb@pathboundary{clip}{\tcb@outerboundary}}
+
+\def\tcb@invclip@frame{\tcb@pathboundary{tcb@invclip}{\tcb@outerboundary}}
+
+\def\tcb@clip@interior{%
+ \begingroup%
+ \tcbset{interior hidden}%
+ \tcb@spec{tcb@forced@clip}%
+ \def\tcb@spec##1{}%
+ \iftcb@hasTitle%
+ \tcb@interiortitled@code%
+ \else%
+ \tcb@interior@code%
+ \fi%
+ \endgroup%
+}
+
+\def\tcb@clip@title{%
+ \begingroup%
+ \tcbset{title hidden}%
+ \tcb@spec{tcb@forced@clip}%
+ \def\tcb@spec##1{}%
+ \iftcb@hasTitle%
+ \tcb@title@code%
+ \fi%
+ \endgroup%
+}
+
+\newenvironment{tcbclipframe}{\begin{scope}\tcb@clip@frame}{\end{scope}}
+\newenvironment{tcbinvclipframe}{\begin{scope}\tcb@invclip@frame}{\end{scope}}
+\newenvironment{tcbclipinterior}{\begin{scope}\tcb@clip@interior}{\end{scope}}
+\newenvironment{tcbcliptitle}{\begin{scope}\tcb@clip@title}{\end{scope}}
+
+\def\tcb@apply@underlay{\csname tcb@underlay@\tcb@split@state\endcsname}%
+\def\tcb@apply@finish{\csname tcb@finish@\tcb@split@state\endcsname}%
+
+\tcbset{%
+ underlay unbroken/.code={\appto\tcb@underlay@unbroken{#1}},%
+ underlay first/.code={\appto\tcb@underlay@first{#1}},%
+ underlay middle/.code={\appto\tcb@underlay@middle{#1}},%
+ underlay last/.code={\appto\tcb@underlay@last{#1}},%
+ underlay boxed title/.code={\appto\tcb@underlay@boxedtitle{#1}},%
+ underlay/.style={underlay unbroken={#1},underlay first={#1},underlay middle={#1},underlay last={#1}},%
+ underlay broken/.style={underlay first={#1},underlay middle={#1},underlay last={#1}},%
+ underlay unbroken and first/.style={underlay unbroken={#1},underlay first={#1}},%
+ underlay unbroken and last/.style={underlay unbroken={#1},underlay last={#1}},%
+ underlay middle and last/.style={underlay middle={#1},underlay last={#1}},%
+ underlay first and middle/.style={underlay first={#1},underlay middle={#1}},%
+ no underlay unbroken/.code={\let\tcb@underlay@unbroken\@empty},%
+ no underlay first/.code={\let\tcb@underlay@first\@empty},%
+ no underlay middle/.code={\let\tcb@underlay@middle\@empty},%
+ no underlay last/.code={\let\tcb@underlay@last\@empty},%
+ no underlay boxed title/.code={\let\tcb@underlay@boxedtitle\@empty},%
+ no underlay/.style={no underlay unbroken,no underlay first,no underlay middle,no underlay last,no underlay boxed title},%
+ finish unbroken/.code={\appto\tcb@finish@unbroken{#1}},%
+ finish first/.code={\appto\tcb@finish@first{#1}},%
+ finish middle/.code={\appto\tcb@finish@middle{#1}},%
+ finish last/.code={\appto\tcb@finish@last{#1}},%
+ finish/.style={finish unbroken={#1},finish first={#1},finish middle={#1},finish last={#1}},%
+ finish broken/.style={finish first={#1},finish middle={#1},finish last={#1}},%
+ finish unbroken and first/.style={finish unbroken={#1},finish first={#1}},%
+ finish unbroken and last/.style={finish unbroken={#1},finish last={#1}},%
+ finish middle and last/.style={finish middle={#1},finish last={#1}},%
+ finish first and middle/.style={finish first={#1},finish middle={#1}},%
+ no finish unbroken/.code={\let\tcb@finish@unbroken\@empty},%
+ no finish first/.code={\let\tcb@finish@first\@empty},%
+ no finish middle/.code={\let\tcb@finish@middle\@empty},%
+ no finish last/.code={\let\tcb@finish@last\@empty},%
+ no finish/.style={no finish unbroken,no finish first,no finish middle,no finish last},%
+}
+
+\def\tcb@trans@set@boxedsize@copy@top{%
+ \begingroup\edef\x{\endgroup\noexpand\def\noexpand\tcb@trans@boxedsize{%
+ leftrule=\kvtcb@left@rule,rightrule=\kvtcb@right@rule,
+ toprule=\kvtcb@top@rule@stand,bottomrule=\kvtcb@title@rule,
+ boxsep=\kvtcb@boxsep,leftupper=\kvtcb@lefttitle,rightupper=\kvtcb@righttitle,
+ top=\kvtcb@toptitle,bottom=\kvtcb@bottomtitle,arc=\kvtcb@arc,
+ sharp corners=south,
+ }}\x}%
+\def\tcb@trans@set@boxedsize@copy@bottom{%
+ \begingroup\edef\x{\endgroup\noexpand\def\noexpand\tcb@trans@boxedsize{%
+ leftrule=\kvtcb@left@rule,rightrule=\kvtcb@right@rule,
+ toprule=\kvtcb@title@rule,bottomrule=\kvtcb@bottom@rule@stand,
+ boxsep=\kvtcb@boxsep,leftupper=\kvtcb@lefttitle,rightupper=\kvtcb@righttitle,
+ top=\kvtcb@toptitle,bottom=\kvtcb@bottomtitle,arc=\kvtcb@arc,
+ sharp corners=north,
+ }}\x}%
+
+\tcbset{%
+ boxed title size/.is choice,
+ boxed title size/standard/.code={\def\tcb@trans@set@boxedsize##1{\let\tcb@trans@boxedsize\@empty}},
+ boxed title size/title/.code={\def\tcb@trans@set@boxedsize##1{\def\tcb@trans@boxedsize{size=title}}},
+ boxed title size/copy/.code={\def\tcb@trans@set@boxedsize##1{%
+ \ifstrequal{##1}{top}{\tcb@trans@set@boxedsize@copy@top}{\tcb@trans@set@boxedsize@copy@bottom}}},
+ before@boxed@title/.store in=\kvtcb@before@boxedtitle,%
+ after@boxed@title/.store in=\kvtcb@after@boxedtitle,%
+ boxed title style/.code={\appto\kvtcb@style@boxedtitle{,#1}},%
+ no boxed title style/.code={\let\kvtcb@style@boxedtitle\@empty},%
+ %
+ varwidth boxed title/.style={before@boxed@title={\tcbdimto\tcb@w@title{#1}\begin{varwidth}{\tcb@w@title}},after@boxed@title={\end{varwidth}}},%
+ varwidth boxed title/.default={\kvtcb@width-(\kvtcb@left@rule)-(\kvtcb@right@rule)-(\kvtcb@boxsep)*2-(\kvtcb@lefttitle)-(\kvtcb@righttitle)},
+ varwidth boxed title*/.style={varwidth boxed title={\kvtcb@width+#1}},
+ varwidth boxed title*/.default={0pt-(\kvtcb@left@rule)-(\kvtcb@right@rule)-(\kvtcb@boxsep)*2-(\kvtcb@lefttitle)-(\kvtcb@righttitle)},
+ %
+ minipage boxed title/.style={before@boxed@title={\tcbdimto\tcb@w@title{#1}\begin{minipage}{\tcb@w@title}},after@boxed@title={\end{minipage}}},%
+ minipage boxed title/.default={\kvtcb@width-(\kvtcb@left@rule)-(\kvtcb@right@rule)-(\kvtcb@boxsep)*2-(\kvtcb@lefttitle)-(\kvtcb@righttitle)},
+ minipage boxed title*/.style={minipage boxed title={\kvtcb@width+#1}},
+ minipage boxed title*/.default={0pt-(\kvtcb@left@rule)-(\kvtcb@right@rule)-(\kvtcb@boxsep)*2-(\kvtcb@lefttitle)-(\kvtcb@righttitle)},
+ %
+ tikznode boxed title/.style={before@boxed@title={\centering\tcb@shield@externalize\begin{tikzpicture}\node[align=center,inner sep=0pt,outer sep=0pt,#1]\bgroup},after@boxed@title={\egroup;\end{tikzpicture}}},%
+ hbox boxed title/.style={before@boxed@title=,after@boxed@title=},%
+ %
+ boxtitle/xshift/.dimstore in=\kvtcb@xshift@boxedtitle,%
+ boxtitle/yshift/.dimstore in=\kvtcb@yshift@boxedtitle,%
+ boxtitle/yshifttext/.dimstore in=\kvtcb@yinnershift@boxedtitle,%
+ %
+ boxtitle/yshift*@top/.style={yshift*/.code={%
+ \tcbdimto\kvtcb@yshift@boxedtitle{##1}%
+ \tcbdimto\kvtcb@yinnershift@boxedtitle{\kvtcb@yshift@boxedtitle+\kvtcb@top@rule@stand}%
+ \ifdim\dimexpr\kvtcb@yinnershift@boxedtitle>0pt\relax\let\kvtcb@yinnershift@boxedtitle\tcb@zpt\fi%
+ }},
+ boxtitle/yshift*@bottom/.style={yshift*/.code={%
+ \tcbdimto\kvtcb@yshift@boxedtitle{##1}%
+ \tcbdimto\kvtcb@yinnershift@boxedtitle{\kvtcb@yshift@boxedtitle-\kvtcb@bottom@rule@stand}%
+ \ifdim\dimexpr\kvtcb@yinnershift@boxedtitle<0pt\relax\let\kvtcb@yinnershift@boxedtitle\tcb@zpt\fi%
+ }},
+ boxtitle/adapt@top/.code={%
+ \ifdim\dimexpr\tcboxedtitleheight+\kvtcb@yshift@boxedtitle>0pt\relax
+ \tcbdimto\kvtcb@bbtop@stand{\kvtcb@bbtop@stand+\tcboxedtitleheight+\kvtcb@yshift@boxedtitle}%
+ \fi%
+ \tcbdimto\kvtcb@top{\kvtcb@top-\kvtcb@yinnershift@boxedtitle}%
+ },
+ boxtitle/adapt@bottom/.code={%
+ \ifdim\dimexpr\tcboxedtitleheight-\kvtcb@yshift@boxedtitle>0pt\relax
+ \tcbdimto\kvtcb@bbbottom@stand{\kvtcb@bbbottom@stand+\tcboxedtitleheight-\kvtcb@yshift@boxedtitle}%
+ \fi%
+ \tcbdimto\kvtcb@bottom{\kvtcb@bottom+\kvtcb@yinnershift@boxedtitle}%
+ },
+ attach@title@boxed/.style n args={5}{%
+ detach title,
+ code={\def\tcb@specialtitle@hook{%
+ \ifx\tcbtitletext\@empty\else%
+ \tcb@trans@set@boxedsize{#2}%
+ \colorlet{tcbtranscol@frame}{tcbcolframe}%
+ \colorlet{tcbtranscol@back}{tcbcolbacktitle}%
+ \let\tcb@trans@skin@current\kvtcb@skin@current%
+ \let\tcb@trans@boxedstyle\kvtcb@style@boxedtitle%
+ \setbox\tcb@titlebox\color@hbox\bgroup\color{tcbcoltitle}\kvtcb@fonttitle\kvtcb@before@boxedtitle\kvtcb@haligntitle\kvtcb@before@title\tcbtitletext\kvtcb@after@title\kvtcb@after@boxedtitle\egroup\color@endbox%
+ \setbox\tcb@titlebox\color@hbox\tcbox[skin=\tcb@trans@skin@current,colframe=tcbtranscol@frame,colback=tcbtranscol@back,%
+ code={\pgfkeysalsofrom\tcb@trans@boxedsize\pgfkeysalsofrom\tcb@trans@boxedstyle}]{\box\tcb@titlebox}\color@endbox%
+ %
+ \tcbdimto\tcboxedtitleheight{\ht\tcb@titlebox+\dp\tcb@titlebox}%
+ \tcbdimto\tcboxedtitlewidth{\wd\tcb@titlebox}%
+ \tcbset{boxtitle/.cd,xshift=0pt,yshift=0pt,yshifttext=0pt,yshift*@#2,#1,adapt@#2}%
+ \let\tcb@specialgeonodes@first\relax%
+ \let\tcb@specialgeonodes@middle\relax%
+ \let\tcb@specialgeonodes@last\relax%
+ \def\tcb@specialgeonodes@unbroken{%
+ \node[#4,name=title,at={([xshift=\kvtcb@xshift@boxedtitle,yshift=\kvtcb@yshift@boxedtitle]frame.#5)},
+ minimum width=\tcboxedtitlewidth,minimum height=\tcboxedtitleheight]{};}%
+ \cslet{tcb@specialgeonodes@#3}{\tcb@specialgeonodes@unbroken}%
+ \def\tcb@specialgeonodes@hook{\csname tcb@specialgeonodes@\tcb@split@state\endcsname}%
+ \preto\tcb@underlay@unbroken{\tcb@underlay@boxedtitle\pgftext[at={\pgfpointanchor{title}{center}}]{\box\tcb@titlebox}}%
+ \cspreto{tcb@underlay@#3}{\tcb@underlay@boxedtitle\pgftext[at={\pgfpointanchor{title}{center}}]{\box\tcb@titlebox}}%
+ \fi}}%
+ },
+ attach@title@boxed@top/.style n args={3}{attach@title@boxed={#1}{top}{first}{#2}{#3}},%
+ attach@title@boxed@bottom/.style n args={3}{attach@title@boxed={#1}{bottom}{last}{#2}{#3}},%
+ %
+ attach boxed title to top left/.style={attach@title@boxed@top={#1}{above right}{north west}},
+ attach boxed title to top center/.style={attach@title@boxed@top={#1}{above}{north}},
+ attach boxed title to top right/.style={attach@title@boxed@top={#1}{above left}{north east}},
+ attach boxed title to bottom left/.style={attach@title@boxed@bottom={#1}{below right}{south west}},
+ attach boxed title to bottom center/.style={attach@title@boxed@bottom={#1}{below}{south}},
+ attach boxed title to bottom right/.style={attach@title@boxed@bottom={#1}{below left}{south east}},
+ reduce@vertical@rules/.code={%
+ \ifdim\dimexpr\kvtcb@left@rule<\dimexpr\kvtcb@right@rule\relax%
+ \tcbdimto\tcb@temp{\kvtcb@left@rule/2}%
+ \else%
+ \tcbdimto\tcb@temp{\kvtcb@right@rule/2}%
+ \fi%
+ \tcbset{leftrule/.expanded=\the\dimexpr\kvtcb@left@rule-\tcb@temp\relax,
+ rightrule/.expanded=\the\dimexpr\kvtcb@right@rule-\tcb@temp\relax}%
+ },
+ attach boxed title to bottom/.style={%
+ attach boxed title to bottom center={yshift*=\tcboxedtitleheight,#1},
+ minipage boxed title,boxed title size=copy,
+ },
+ attach boxed title to bottom*/.style={%
+ attach boxed title to bottom={#1},
+ boxed title style={reduce@vertical@rules},
+ },
+ attach boxed title to top/.style={%
+ attach boxed title to top center={yshift*=-\tcboxedtitleheight,#1},
+ minipage boxed title,boxed title size=copy,
+ },
+ attach boxed title to top*/.style={%
+ attach boxed title to top={#1},
+ boxed title style={reduce@vertical@rules},
+ },
+ flip title/.style={attach boxed title to bottom,
+ boxed title style={reduce@vertical@rules,#1}},
+}
+
+
+\newbox\tcb@waterbox
+
+\def\tcb@setratio#1#2#3{\edef#1{\strip@pt\dimexpr\number\numexpr\number\dimexpr#2\relax*65536/\number\dimexpr#3\relax\relax sp\relax}}
+
+\def\tcb@setratiorobust#1#2#3{\ifdim\dimexpr#3<1pt\tcb@setratio#1{#2}{1pt}\else\tcb@setratio#1{#2}{#3}\fi}
+
+\def\tcb@comp@waterbox@stretch#1#2#3{%
+ \tcb@setratiorobust\tcb@scale@x{#1\dimexpr#2}{\wd\tcb@waterbox}%
+ \tcb@setratiorobust\tcb@scale@y{#1\dimexpr#3}{\ht\tcb@waterbox+\dp\tcb@waterbox}%
+}
+
+\def\tcb@comp@waterbox@zoom#1#2#3{%
+ \tcb@comp@waterbox@stretch{#1}{#2}{#3}%
+ \ifdim\dimexpr\tcb@scale@x pt\relax<\dimexpr\tcb@scale@y pt\relax\let\tcb@scale@y=\tcb@scale@x\else\let\tcb@scale@x=\tcb@scale@y\fi%
+}
+
+\def\tcb@comp@waterbox@overzoom#1#2#3{%
+ \tcb@comp@waterbox@stretch{#1}{#2}{#3}%
+ \ifdim\dimexpr\tcb@scale@x pt\relax>\dimexpr\tcb@scale@y pt\relax\let\tcb@scale@y=\tcb@scale@x\else\let\tcb@scale@x=\tcb@scale@y\fi%
+}
+
+\def\tcb@comp@waterbox@shrink#1#2#3{%
+ \tcb@comp@waterbox@zoom{#1}{#2}{#3}%
+ \ifdim\dimexpr\tcb@scale@x pt\relax>1pt\relax%
+ \edef\tcb@scale@x{1}\edef\tcb@scale@y{1}%
+ \fi%
+}
+
+\def\tcb@box@scaled@waterbox{\scalebox{\tcb@scale@x}[\tcb@scale@y]{\box\tcb@waterbox}}
+
+\def\tcb@drawspec@watermark@@noclip{%
+ \tcb@comp@wm%
+ \node[opacity=\kvtcb@watermark@opacity,anchor=center] at (interior) {\tcb@box@scaled@waterbox};%
+}
+
+\def\tcb@drawspec@watermark@@clip{%
+ \begin{tcbclipinterior}%
+ \tcb@drawspec@watermark@@noclip%
+ \end{tcbclipinterior}%
+}
+
+\def\tcb@drawspec@watermark@tikz#1{%
+ \setbox\tcb@waterbox=\color@hbox\pgfinterruptpicture{\pgfsetbaseline{0pt}\begin{tikzpicture}[color=\kvtcb@watermark@color]#1\end{tikzpicture}}\endpgfinterruptpicture\color@endbox%
+ \tcb@drawspec@watermark%
+}
+
+\def\tcb@drawspec@watermark@graphics#1{%
+ \setbox\tcb@waterbox=\color@hbox\pgfinterruptpicture{\includegraphics{#1}}\endpgfinterruptpicture\color@endbox%
+ \tcb@drawspec@watermark%
+}
+
+\def\tcb@drawspec@watermark@text#1{%
+ \tcb@drawspec@watermark@tikz{\node[inner sep=0pt,align=flush center]{#1};}%
+}
+
+
+\tcbset{%
+ watermark opacity/.store in=\kvtcb@watermark@opacity,%
+ watermark color/.store in=\kvtcb@watermark@color,%
+%
+ watermark stretch/.code={\def\tcb@comp@wm{\tcb@comp@waterbox@stretch{#1}{\tcb@innerwidth}{\tcb@innerheight}}},%
+ watermark zoom/.code={\def\tcb@comp@wm{\tcb@comp@waterbox@zoom{#1}{\tcb@innerwidth}{\tcb@innerheight}}},%
+ watermark overzoom/.code={\def\tcb@comp@wm{\tcb@comp@waterbox@overzoom{#1}{\tcb@innerwidth}{\tcb@innerheight}}},%
+ watermark shrink/.code={\def\tcb@comp@wm{\tcb@comp@waterbox@shrink{#1}{\tcb@innerwidth}{\tcb@innerheight}}},%
+%
+ watermark tikz/.style={overlay={\tcb@drawspec@watermark@tikz{#1}}},
+ watermark tikz on/.style args={#1 is #2}{overlay #1={\tcb@drawspec@watermark@tikz{#2}}},%
+ watermark graphics/.style={overlay={\tcb@drawspec@watermark@graphics{#1}}},
+ watermark graphics on/.style args={#1 is #2}{overlay #1={\tcb@drawspec@watermark@graphics{#2}}},
+ watermark text/.style={overlay={\tcb@drawspec@watermark@text{#1}}},
+ watermark text on/.style args={#1 is #2}{overlay #1={\tcb@drawspec@watermark@text{#2}}},
+ no watermark/.style={no overlay},
+ clip watermark/.is choice,
+ clip watermark/true/.code={\let\tcb@drawspec@watermark=\tcb@drawspec@watermark@@clip},
+ clip watermark/false/.code={\let\tcb@drawspec@watermark=\tcb@drawspec@watermark@@noclip},
+ clip watermark/.default=true,
+ show bounding box/.style={border@line app={%
+ \path[preaction={draw,line width=0.1pt,#1},draw,double=white,line width=1pt,dashed,opacity=0.5,#1]
+ (current bounding box.south west) rectangle (current bounding box.north east);}},%
+ show bounding box/.default={red},%
+}
+
+\def\tcb@tdraw@title@clip{%
+ \begin{tcbcliptitle}%
+ \tcb@tdraw@title@core%
+ \end{tcbcliptitle}%
+}
+
+\def\tcb@tdraw@upper@clip{%
+ \begin{tcbclipinterior}%
+ \tcb@tdraw@upper@core%
+ \end{tcbclipinterior}%
+}
+
+\def\tcb@tdraw@lower@clip{%
+ \begin{tcbclipinterior}%
+ \tcb@tdraw@lower@core%
+ \end{tcbclipinterior}%
+}
+
+
+\def\tcb@process@ppbb{%
+ \pgf@process{\pgfpointanchor{path picture bounding box}{south west}}%
+ \pgf@xa\pgf@x\pgf@ya\pgf@y%
+ \pgf@process{\pgfpointanchor{path picture bounding box}{north east}}%
+ \pgf@xb\pgf@x\pgf@yb\pgf@y%
+ \pgfsetfillopacity{\tcb@tikz@fill@graphics@opacity}%
+ \pgfsetstrokeopacity{\tcb@tikz@fill@graphics@opacity}%
+}
+
+\def\tcb@process@ppbb@wh{%
+ \tcb@process@ppbb%
+ \tcbdimto\tcb@ppbb@width{\pgf@xb-\pgf@xa}%
+ \tcbdimto\tcb@ppbb@height{\pgf@yb-\pgf@ya}%
+}
+
+\def\tcb@ppbb@textbox#1{\pgftext[x=\the\dimexpr\pgf@xa+\tcb@ppbb@width/2\relax,y=\pgf@ya+\tcb@ppbb@height/2]{#1}}
+
+\def\tcb@set@waterbox@to@graphics#1{%
+ \setbox\tcb@waterbox=\color@hbox\pgfinterruptpicture%
+ \begingroup\edef\x{\endgroup\noexpand\includegraphics[\tcb@tikz@fill@graphics@options]}\x{#1}%
+ \endpgfinterruptpicture\color@endbox%
+}
+
+\def\tcb@set@waterbox@to@picture#1{%
+ \setbox\tcb@waterbox=\color@hbox\pgfinterruptpicture{\pgfsetbaseline{0pt}\begin{tikzpicture}#1\end{tikzpicture}}\endpgfinterruptpicture\color@endbox%
+}
+
+\tikzset{%
+ fill image opacity/.store in=\tcb@tikz@fill@graphics@opacity,%
+ fill image opacity=1,%
+ fill image scale/.store in=\tcb@tikz@fill@graphics@scale,%
+ fill image scale=1,%
+ fill image options/.store in=\tcb@tikz@fill@graphics@options,%
+ fill image options=,%
+ fill plain image/.style={path picture={%
+ \tcb@process@ppbb@wh%
+ \tcb@ppbb@textbox{\begingroup\edef\x{\endgroup\noexpand\includegraphics[\tcb@tikz@fill@graphics@options]}\x{#1}}%
+ }},
+ fill plain picture/.style={path picture={%
+ \tcb@process@ppbb@wh%
+ \tcb@set@waterbox@to@picture{#1}%
+ \tcb@ppbb@textbox{\box\tcb@waterbox}%
+ }},
+ fill stretch image/.style={path picture={%
+ \tcb@process@ppbb@wh%
+ \tcb@ppbb@textbox{\begingroup\edef\x{\endgroup\noexpand\includegraphics[\tcb@tikz@fill@graphics@options,%
+ width=\the\dimexpr\tcb@tikz@fill@graphics@scale\dimexpr\tcb@ppbb@width\relax,%
+ height=\the\dimexpr\tcb@tikz@fill@graphics@scale\dimexpr\tcb@ppbb@height\relax]}\x{#1}}%
+ }},
+ fill stretch picture/.style={path picture={%
+ \tcb@process@ppbb@wh%
+ \tcb@set@waterbox@to@picture{#1}%
+ \tcb@comp@waterbox@stretch{\tcb@tikz@fill@graphics@scale}{\tcb@ppbb@width}{\tcb@ppbb@height}%
+ \tcb@ppbb@textbox{\tcb@box@scaled@waterbox}%
+ }},
+ fill@overzoom/.style={path picture={%
+ \tcb@process@ppbb@wh%
+ #1%
+ \tcb@comp@waterbox@overzoom{\tcb@tikz@fill@graphics@scale}{\tcb@ppbb@width}{\tcb@ppbb@height}%
+ \tcb@ppbb@textbox{\tcb@box@scaled@waterbox}%
+ }},
+ fill overzoom image/.style={fill@overzoom={\tcb@set@waterbox@to@graphics{#1}}},%
+ fill overzoom picture/.style={fill@overzoom={\tcb@set@waterbox@to@picture{#1}}},%
+ fill@zoom/.style={path picture={%
+ \tcb@process@ppbb@wh%
+ #1%
+ \tcb@comp@waterbox@zoom{\tcb@tikz@fill@graphics@scale}{\tcb@ppbb@width}{\tcb@ppbb@height}%
+ \tcb@ppbb@textbox{\tcb@box@scaled@waterbox}%
+ }},
+ fill zoom image/.style={fill@zoom={\tcb@set@waterbox@to@graphics{#1}}},%
+ fill zoom picture/.style={fill@zoom={\tcb@set@waterbox@to@picture{#1}}},%
+ fill@shrink/.style={path picture={%
+ \tcb@process@ppbb@wh%
+ #1%
+ \tcb@comp@waterbox@shrink{\tcb@tikz@fill@graphics@scale}{\tcb@ppbb@width}{\tcb@ppbb@height}%
+ \tcb@ppbb@textbox{\tcb@box@scaled@waterbox}%
+ }},
+ fill shrink image/.style={fill@shrink={\tcb@set@waterbox@to@graphics{#1}}},%
+ fill shrink picture/.style={fill@shrink={\tcb@set@waterbox@to@picture{#1}}},%
+ fill@tile/.style={path picture={%
+ \tcb@process@ppbb%
+ #1%
+ \tcbdimto\tcb@ppbb@tilew{\wd\tcb@waterbox}%
+ \tcbdimto\tcb@ppbb@tileh{\ht\tcb@waterbox+\dp\tcb@waterbox}%
+ \pgf@xc\pgf@xa\pgf@yc\pgf@yb%
+ \pgfutil@loop%
+ \pgfutil@loop%
+ \pgftext[x=\pgf@xc,y=\pgf@yc,left,top]{\copy\tcb@waterbox}%
+ \ifdim\pgf@xc<\pgf@xb%
+ \advance\pgf@xc\tcb@ppbb@tilew%
+ \pgfutil@repeat%
+ \ifdim\pgf@yc>\pgf@ya%
+ \advance\pgf@yc-\tcb@ppbb@tileh%
+ \pgf@xc\pgf@xa%
+ \pgfutil@repeat%
+ }},%
+ fill tile image/.style={fill@tile={\tcb@set@waterbox@to@graphics{#1}}},%
+ fill tile picture/.style={fill@tile={\tcb@set@waterbox@to@picture{#1}}},%
+ fill tile picture*/.style 2 args={fill@tile={\tcb@set@waterbox@to@picture{#2}%
+ \setbox\tcb@waterbox=\color@hbox\scalebox{#1}{\box\tcb@waterbox}\color@endbox}},%
+ %
+ fill plain image*/.style 2 args={fill image options={#1},fill plain image={#2}},%
+ fill stretch image*/.style 2 args={fill image options={#1},fill stretch image={#2}},%
+ fill overzoom image*/.style 2 args={fill image options={#1},fill overzoom image={#2}},%
+ fill zoom image*/.style 2 args={fill image options={#1},fill zoom image={#2}},%
+ fill shrink image*/.style 2 args={fill image options={#1},fill shrink image={#2}},%
+ fill tile image*/.style 2 args={fill image options={#1},fill tile image={#2}},%
+}
+
+\tcbset{%
+ frame style image/.style={frame style={fill=none,fill stretch image={#1}}},
+ frame style tile/.style 2 args={frame style={fill=none,fill tile image*={#1}{#2}}},
+ interior style image/.style={interior style={fill=none,fill stretch image={#1}}},
+ interior style tile/.style 2 args={interior style={fill=none,fill tile image*={#1}{#2}}},
+ title style image/.style={title style={fill=none,fill stretch image={#1}}},
+ title style tile/.style 2 args={title style={fill=none,fill tile image*={#1}{#2}}},
+}
+
+\tcbset{%
+ clip title/.is choice,
+ clip title/true/.code={\let\tcb@tdraw@title=\tcb@tdraw@title@clip},
+ clip title/false/.code={\let\tcb@tdraw@title=\tcb@tdraw@title@core},
+ clip title/.default=true,
+ clip upper/.is choice,
+ clip upper/true/.code={\let\tcb@tdraw@upper=\tcb@tdraw@upper@clip},
+ clip upper/false/.code={\let\tcb@tdraw@upper=\tcb@tdraw@upper@core},
+ clip upper/.default=true,
+ clip lower/.is choice,
+ clip lower/true/.code={\let\tcb@tdraw@lower=\tcb@tdraw@lower@clip},
+ clip lower/false/.code={\let\tcb@tdraw@lower=\tcb@tdraw@lower@core},
+ clip lower/.default=true,
+}
+
+
+\tcbset{marker/.style={%
+ skin=enhancedmiddle jigsaw,
+ breakable,parbox=false,
+ boxrule=0mm,leftrule=5mm,rightrule=5mm,boxsep=0mm,
+ left=3mm,right=3mm,top=1mm,bottom=1mm,
+ toptitle=1mm,bottomtitle=1mm,fonttitle=\bfseries,
+ arc=0mm,outer arc=0mm,
+ colback=yellow!10!white,colframe=red,
+ watermark color=yellow!75!red!25!white,
+ enlarge left by=-8mm,
+ enlarge right by=-8mm,
+ enlarge top by=0mm,
+ enlarge bottom by=0mm,
+ width=\the\dimexpr\linewidth+1.6cm\relax,
+ frame style={top color=tcbcolframe,bottom color=tcbcolframe,middle color=yellow!75!tcbcolframe},
+ title style={left color=tcbcolframe,right color=tcbcolframe,middle color=yellow!75!tcbcolframe},
+ watermark tikz={\draw[line width=2mm] circle (1cm) node{\fontfamily{ptm}\fontseries{b}\fontsize{20mm}{20mm}\selectfont!};},
+ watermark zoom=0.75,
+}}
+
+
+\def\tcb@arc@bor{\pgfsetcornersarced{\pgfqpoint{\tcb@border@arc}{\tcb@border@arc}}}%
+
+\def\tcb@arc@bor@NW{\csname tcb@arc@bor@NW@\tcb@corner@mode@NW\endcsname}
+\def\tcb@arc@bor@NE{\csname tcb@arc@bor@NE@\tcb@corner@mode@NE\endcsname}
+\def\tcb@arc@bor@SW{\csname tcb@arc@bor@SW@\tcb@corner@mode@SW\endcsname}
+\def\tcb@arc@bor@SE{\csname tcb@arc@bor@SE@\tcb@corner@mode@SE\endcsname}
+
+\let\tcb@arc@bor@NW@sharp\tcb@arc@zpt
+\let\tcb@arc@bor@NE@sharp\tcb@arc@zpt
+\let\tcb@arc@bor@SW@sharp\tcb@arc@zpt
+\let\tcb@arc@bor@SE@sharp\tcb@arc@zpt
+
+\let\tcb@arc@bor@NW@rounded\tcb@arc@bor
+\let\tcb@arc@bor@NE@rounded\tcb@arc@bor
+\let\tcb@arc@bor@SW@rounded\tcb@arc@bor
+\let\tcb@arc@bor@SE@rounded\tcb@arc@bor
+
+\def\tcb@border@prepare#1#2{%
+ \tcbdimto\tcb@border@ts{#2+(#1)/2}%
+ \ifdim\dimexpr\tcb@outer@arc>\tcb@arc@scale\dimexpr\tcb@border@ts\relax%
+ \tcbdimto\tcb@border@arc{\tcb@outer@arc-\tcb@arc@scale\dimexpr\tcb@border@ts\relax}%
+ \else%
+ \let\tcb@border@arc=\tcb@zpt%
+ \fi%
+}
+
+\def\tcb@border@unbroken#1#2#3{%
+ \tcb@border@prepare{#1}{#2}%
+ \tcb@pathbase{draw,line width=#1,#3}{[xshift=\tcb@border@ts,yshift=\tcb@border@ts]frame.south west}%
+ {[xshift=-\tcb@border@ts,yshift=-\tcb@border@ts]frame.north east}%
+ {\tcb@arc@bor@SW}{\tcb@arc@bor@NW}{\tcb@arc@bor@NE}{\tcb@arc@bor@SE}%
+}
+
+\def\tcb@border@first#1#2#3{%
+ \tcb@border@prepare{#1}{#2}%
+ \tcb@pathboundary{draw,line width=#1,#3}{%
+ \tcb@gettikzxy{([xshift=\tcb@border@ts]frame.south west)}{\tcb@xa}{\tcb@ya}%
+ \tcb@gettikzxy{([xshift=-\tcb@border@ts,yshift=-\tcb@border@ts]frame.north east)}{\tcb@xb}{\tcb@yb}%
+ \pgfpathmoveto{\pgfqpoint{\tcb@xa}{\tcb@ya}}%
+ \tcb@arc@bor@NW\pgfpathlineto{\pgfqpoint{\tcb@xa}{\tcb@yb}}%
+ \tcb@arc@bor@NE\pgfpathlineto{\pgfqpoint{\tcb@xb}{\tcb@yb}}%
+ \tcb@arc@zpt\pgfpathlineto{\pgfqpoint{\tcb@xb}{\tcb@ya}}%
+ }%
+}
+
+\def\tcb@border@middle#1#2#3{%
+ \tcb@border@prepare{#1}{#2}%
+ \draw[line width=#1,#3]
+ ([xshift=\tcb@border@ts]frame.north west) -- ([xshift=\tcb@border@ts]frame.south west);%
+ \draw[line width=#1,#3]
+ ([xshift=-\tcb@border@ts]frame.north east) -- ([xshift=-\tcb@border@ts]frame.south east);%
+}
+
+\def\tcb@border@last#1#2#3{%
+ \tcb@border@prepare{#1}{#2}%
+ \tcb@pathboundary{draw,line width=#1,#3}{%
+ \tcb@gettikzxy{([xshift=\tcb@border@ts,yshift=\tcb@border@ts]frame.south west)}{\tcb@xa}{\tcb@ya}%
+ \tcb@gettikzxy{([xshift=-\tcb@border@ts]frame.north east)}{\tcb@xb}{\tcb@yb}%
+ \pgfpathmoveto{\pgfqpoint{\tcb@xa}{\tcb@yb}}%
+ \tcb@arc@bor@SW\pgfpathlineto{\pgfqpoint{\tcb@xa}{\tcb@ya}}%
+ \tcb@arc@bor@SE\pgfpathlineto{\pgfqpoint{\tcb@xb}{\tcb@ya}}%
+ \tcb@arc@zpt\pgfpathlineto{\pgfqpoint{\tcb@xb}{\tcb@yb}}%
+ }%
+}
+
+\def\tcb@draw@border@unbroken{%
+ \let\tcb@border=\tcb@border@unbroken%
+ \kvtcb@borderline%
+}
+
+\def\tcb@draw@border@first{%
+ \let\tcb@border=\tcb@border@first%
+ \kvtcb@borderline%
+}
+
+\def\tcb@draw@border@middle{%
+ \let\tcb@border=\tcb@border@middle%
+ \kvtcb@borderline%
+}
+
+\def\tcb@draw@border@last{%
+ \let\tcb@border=\tcb@border@last%
+ \kvtcb@borderline%
+}
+
+\def\tcb@bordernorth@draw#1#2#3{%
+ \tcbdimto\tcb@border@ts{#2+(#1)/2}%
+ \draw[line width=#1,#3] ([yshift=-\tcb@border@ts]frame.north west) -- ([yshift=-\tcb@border@ts]frame.north east);%
+}
+
+\def\tcb@bordernorth#1#2#3{%
+ \ifdefstring{\tcb@split@state}{unbroken}{\tcb@bordernorth@draw{#1}{#2}{#3}}{%
+ \ifdefstring{\tcb@split@state}{first}{\tcb@bordernorth@draw{#1}{#2}{#3}}{}}%
+}
+
+\def\tcb@bordersouth@draw#1#2#3{%
+ \tcbdimto\tcb@border@ts{#2+(#1)/2}%
+ \draw[line width=#1,#3] ([yshift=\tcb@border@ts]frame.south west) -- ([yshift=\tcb@border@ts]frame.south east);%
+}
+
+\def\tcb@bordersouth#1#2#3{%
+ \ifdefstring{\tcb@split@state}{unbroken}{\tcb@bordersouth@draw{#1}{#2}{#3}}{%
+ \ifdefstring{\tcb@split@state}{last}{\tcb@bordersouth@draw{#1}{#2}{#3}}{}}%
+}
+
+\def\tcb@borderwest#1#2#3{%
+ \tcbdimto\tcb@border@ts{#2+(#1)/2}%
+ \draw[line width=#1,#3] ([xshift=\tcb@border@ts]frame.north west) -- ([xshift=\tcb@border@ts]frame.south west);%
+}
+
+\def\tcb@bordereast#1#2#3{%
+ \tcbdimto\tcb@border@ts{#2+(#1)/2}%
+ \draw[line width=#1,#3] ([xshift=-\tcb@border@ts]frame.north east) -- ([xshift=-\tcb@border@ts]frame.south east);%
+}
+
+\tcbset{%
+ border@line app/.code={\appto\kvtcb@borderline{#1}},%
+ borderline/.style args={#1#2#3}{border@line app={\tcb@border{#1}{#2}{#3}}},%
+ no borderline/.code={\def\kvtcb@borderline{}},%
+ borderline north/.style args={#1#2#3}{border@line app={\tcb@bordernorth{#1}{#2}{#3}}},%
+ borderline south/.style args={#1#2#3}{border@line app={\tcb@bordersouth{#1}{#2}{#3}}},%
+ borderline west/.style args={#1#2#3}{border@line app={\tcb@borderwest{#1}{#2}{#3}}},%
+ borderline east/.style args={#1#2#3}{border@line app={\tcb@bordereast{#1}{#2}{#3}}},%
+ borderline horizontal/.style args={#1#2#3}{borderline north={#1}{#2}{#3},borderline south={#1}{#2}{#3}},%
+ borderline vertical/.style args={#1#2#3}{borderline west={#1}{#2}{#3},borderline east={#1}{#2}{#3}},%
+}
+
+
+\def\tcb@shadow@comp@ts@smart#1#2{%
+ \ifdim#2>0pt\relax\tcbdimto\tcb@shadow@ts{#1-#2/2}%%
+ \else\tcbdimto\tcb@shadow@ts{#1+#2/2}\fi%
+}
+
+\def\tcb@shadow@comp@ts@copy#1#2{%
+ \tcbdimto\tcb@shadow@ts{#1}%
+}
+
+\def\tcb@shadow@comp@arc{%
+ \ifdim\dimexpr\tcb@outer@arc>\tcb@arc@scale\dimexpr\tcb@shadow@ts\relax%
+ \tcbdimto\tcb@shadow@arc{\tcb@outer@arc-\tcb@arc@scale\dimexpr\tcb@shadow@ts\relax}%
+ \else%
+ \let\tcb@shadow@arc=\tcb@zpt%
+ \fi%
+}
+
+\def\tcb@arc@sha{\pgfsetcornersarced{\pgfqpoint{\tcb@shadow@arc}{\tcb@shadow@arc}}}%
+
+\def\tcb@arc@sha@NW{\csname tcb@arc@sha@NW@\tcb@corner@mode@NW\endcsname}
+\def\tcb@arc@sha@NE{\csname tcb@arc@sha@NE@\tcb@corner@mode@NE\endcsname}
+\def\tcb@arc@sha@SW{\csname tcb@arc@sha@SW@\tcb@corner@mode@SW\endcsname}
+\def\tcb@arc@sha@SE{\csname tcb@arc@sha@SE@\tcb@corner@mode@SE\endcsname}
+
+\let\tcb@arc@sha@NW@sharp\tcb@arc@zpt
+\let\tcb@arc@sha@NE@sharp\tcb@arc@zpt
+\let\tcb@arc@sha@SW@sharp\tcb@arc@zpt
+\let\tcb@arc@sha@SE@sharp\tcb@arc@zpt
+
+\let\tcb@arc@sha@NW@rounded\tcb@arc@sha
+\let\tcb@arc@sha@NE@rounded\tcb@arc@sha
+\let\tcb@arc@sha@SW@rounded\tcb@arc@sha
+\let\tcb@arc@sha@SE@rounded\tcb@arc@sha
+
+\def\tcb@shadow@unbroken#1#2#3#4{%
+ \tcb@shadow@comp@ts{#3}{#1}%
+ \tcb@shadow@comp@arc%
+ \tcb@pathbase{fill,#4}{[xshift=#1+#3,yshift=#2+#3]frame.south west}{[xshift=#1-#3,yshift=#2-#3]frame.north east}%
+ {\tcb@arc@sha@SW}{\tcb@arc@sha@NW}{\tcb@arc@sha@NE}{\tcb@arc@sha@SE}%
+}
+
+\def\tcb@shadow@first#1#2#3#4{%
+ \tcb@shadow@comp@ts{#3}{#1}%
+ \tcb@shadow@comp@arc%
+ \tcb@pathbase{fill,#4}{[xshift=#1+#3,yshift=#2+#3]frame.south west}{[xshift=#1-#3,yshift=#2-#3]frame.north east}%
+ {\tcb@arc@zpt}{\tcb@arc@sha@NW}{\tcb@arc@sha@NE}{\tcb@arc@zpt}%
+}
+
+\def\tcb@shadow@middle#1#2#3#4{%
+ \tcb@shadow@comp@ts{#3}{#1}%
+ \tcb@shadow@comp@arc%
+ \tcb@pathbase{fill,#4}{[xshift=#1+#3,yshift=#2+#3]frame.south west}{[xshift=#1-#3,yshift=#2-#3]frame.north east}%
+ {\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}%
+}
+
+\def\tcb@shadow@last#1#2#3#4{%
+ \tcb@shadow@comp@ts{#3}{#1}%
+ \tcb@shadow@comp@arc%
+ \tcb@pathbase{fill,#4}{[xshift=#1+#3,yshift=#2+#3]frame.south west}{[xshift=#1-#3,yshift=#2-#3]frame.north east}%
+ {\tcb@arc@sha@SW}{\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@sha@SE}%
+}
+
+
+\tcbset{%
+ shad@w app/.code={\appto\kvtcb@shadow{#1}},%
+ shadow/.style args={#1#2#3#4}{shad@w app={\csuse{tcb@shadow@\tcb@shapeofskin}{#1}{#2}{#3}{#4}}},%
+ no shadow/.code={\def\kvtcb@shadow{}},%
+ fuzzy shadow/.style args={#1#2#3#4#5}{shad@w app={%
+ \begin{scope}[#5]%
+ \letcs\tcb@shadow{tcb@shadow@\tcb@shapeofskin}%
+ \tcb@shadow{#1}{#2}{\the\dimexpr#3-4\dimexpr#4\relax}{opacity=0.01}%
+ \tcb@shadow{#1}{#2}{\the\dimexpr#3-3\dimexpr#4\relax}{opacity=0.02}%
+ \tcb@shadow{#1}{#2}{\the\dimexpr#3-2\dimexpr#4\relax}{opacity=0.04}%
+ \tcb@shadow{#1}{#2}{\the\dimexpr#3-#4\relax}{opacity=0.07}%
+ \tcb@shadow{#1}{#2}{#3}{opacity=0.11}%
+ \tcb@shadow{#1}{#2}{\the\dimexpr#3+#4\relax}{opacity=0.11}%
+ \tcb@shadow{#1}{#2}{\the\dimexpr#3+2\dimexpr#4\relax}{opacity=0.07}%
+ \tcb@shadow{#1}{#2}{\the\dimexpr#3+3\dimexpr#4\relax}{opacity=0.04}%
+ \tcb@shadow{#1}{#2}{\the\dimexpr#3+4\dimexpr#4\relax}{opacity=0.02}%
+ \tcb@shadow{#1}{#2}{\the\dimexpr#3+5\dimexpr#4\relax}{opacity=0.01}%
+ \end{scope}}},%
+ %
+ drop shadow/.style={shadow={0.9mm}{-0.9mm}{0mm}{opacity=0.5,#1}},
+ drop shadow/.default={black!50!white},%
+ drop midday shadow/.style={shadow={0mm}{-0.8mm}{-0.4mm}{opacity=0.5,#1}},
+ drop midday shadow/.default={black!50!white},%
+ halo/.style args={#1 with #2}{shadow={0mm}{0mm}{-#1}{opacity=0.5,#2}},
+ halo/.default={0.9mm with yellow},%
+ drop fuzzy shadow/.style={fuzzy shadow={1.0mm}{-1.0mm}{0mm}{0.12mm}{#1}},
+ drop fuzzy shadow/.default={black!50!white},%
+ drop fuzzy midday shadow/.style={fuzzy shadow={0mm}{-1.0mm}{-0.5mm}{0.12mm}{#1}},
+ drop fuzzy midday shadow/.default={black!50!white},%
+ fuzzy halo/.style args={#1 with #2}{fuzzy shadow={0mm}{0mm}{-#1}{0.12mm}{#2}},
+ fuzzy halo/.default={1.0mm with yellow},%
+ %
+ drop shadow southeast/.style={shadow={0.9mm}{-0.9mm}{0mm}{opacity=0.5,#1}},%
+ drop shadow southeast/.default={black!50!white},%
+ drop shadow south/.style={shadow={0mm}{-0.8mm}{-0.4mm}{opacity=0.5,#1}},%
+ drop shadow south/.default={black!50!white},%
+ drop shadow southwest/.style={shadow={-0.9mm}{-0.9mm}{0mm}{opacity=0.5,#1}},%
+ drop shadow southwest/.default={black!50!white},%
+ drop shadow west/.style={shadow={-0.8mm}{0mm}{-0.4mm}{opacity=0.5,#1}},%
+ drop shadow west/.default={black!50!white},%
+ drop shadow northwest/.style={shadow={-0.9mm}{0.9mm}{0mm}{opacity=0.5,#1}},%
+ drop shadow northwest/.default={black!50!white},%
+ drop shadow north/.style={shadow={0mm}{0.8mm}{-0.4mm}{opacity=0.5,#1}},%
+ drop shadow north/.default={black!50!white},%
+ drop shadow northeast/.style={shadow={0.9mm}{0.9mm}{0mm}{opacity=0.5,#1}},%
+ drop shadow northeast/.default={black!50!white},%
+ drop shadow east/.style={shadow={0.8mm}{0mm}{-0.4mm}{opacity=0.5,#1}},%
+ drop shadow east/.default={black!50!white},%
+ drop fuzzy shadow southeast/.style={fuzzy shadow={1.0mm}{-1.0mm}{0mm}{0.12mm}{#1}},
+ drop fuzzy shadow southeast/.default={black!50!white},%
+ drop fuzzy shadow south/.style={fuzzy shadow={0mm}{-1.0mm}{-0.5mm}{0.12mm}{#1}},
+ drop fuzzy shadow south/.default={black!50!white},%
+ drop fuzzy shadow southwest/.style={fuzzy shadow={-1.0mm}{-1.0mm}{0mm}{0.12mm}{#1}},
+ drop fuzzy shadow southwest/.default={black!50!white},%
+ drop fuzzy shadow west/.style={fuzzy shadow={-1.0mm}{0mm}{-0.5mm}{0.12mm}{#1}},
+ drop fuzzy shadow west/.default={black!50!white},%
+ drop fuzzy shadow northwest/.style={fuzzy shadow={-1.0mm}{1.0mm}{0mm}{0.12mm}{#1}},
+ drop fuzzy shadow northwest/.default={black!50!white},%
+ drop fuzzy shadow north/.style={fuzzy shadow={0mm}{1.0mm}{-0.5mm}{0.12mm}{#1}},
+ drop fuzzy shadow north/.default={black!50!white},%
+ drop fuzzy shadow northeast/.style={fuzzy shadow={1.0mm}{1.0mm}{0mm}{0.12mm}{#1}},
+ drop fuzzy shadow northeast/.default={black!50!white},%
+ drop fuzzy shadow east/.style={fuzzy shadow={1.0mm}{0mm}{-0.5mm}{0.12mm}{#1}},
+ drop fuzzy shadow east/.default={black!50!white},%
+ %
+ smart shadow arc/.is choice,
+ smart shadow arc/true/.code={\let\tcb@shadow@comp@ts=\tcb@shadow@comp@ts@smart},
+ smart shadow arc/false/.code={\let\tcb@shadow@comp@ts=\tcb@shadow@comp@ts@copy},
+ smart shadow arc/.default=true,
+}
+
+\def\tcb@boundary@tikzbendedbase#1#2#3#4#5#6#7#8{%
+ \tcb@gettikzxy{(#1)}{\tcb@xa}{\tcb@ya}%
+ \tcb@gettikzxy{(#2)}{\tcb@xb}{\tcb@yb}%
+ \pgfpathmoveto{\pgfqpoint{\tcb@xa}{\tcb@yb}}%
+ #5\pgfpathquadraticcurveto{\pgfqpoint{\dimexpr0.5\dimexpr\tcb@xa+\tcb@xb\relax}{\dimexpr\tcb@yb+#8}}{\pgfqpoint{\tcb@xb}{\tcb@yb}}%
+ #6\pgfpathlineto{\pgfqpoint{\tcb@xb}{\tcb@ya}}%
+ #3\pgfpathquadraticcurveto{\pgfqpoint{\dimexpr0.5\dimexpr\tcb@xa+\tcb@xb\relax}{\dimexpr\tcb@ya+#7}}{\pgfqpoint{\tcb@xa}{\tcb@ya}}%
+ #4\pgfpathclose%
+}
+
+\def\tcb@pathbendedbase#1#2#3#4#5#6#7#8#9{\tcb@pathboundary{#1}{\tcb@boundary@tikzbendedbase{#2}{#3}{#4}{#5}{#6}{#7}{#8}{#9}}}
+
+\def\tcb@shadowbended@prepare#1{%
+ \tcbdimto\tcb@shadow@arc{\tcb@outer@arc-\tcb@arc@scale\dimexpr#1\relax}%
+ \ifdim\dimexpr\tcb@shadow@arc<0pt\relax%
+ \let\tcb@shadow@arc=\tcb@zpt%
+ \fi%
+}
+
+\def\tcb@shadowlifted@unbroken#1#2#3#4#5{%
+ \tcb@shadowbended@prepare{#3}%
+ \tcb@pathbendedbase{fill,#5}{[xshift=#1+#3,yshift=#2+#3]frame.south west}{[xshift=-#1-#3,yshift=#2-#3]frame.north east}%
+ {\tcb@arc@sha@SW}{\tcb@arc@sha@NW}{\tcb@arc@sha@NE}{\tcb@arc@sha@SE}{#4}{0pt}%
+}
+
+\def\tcb@shadowlifted@first#1#2#3#4#5{%
+ \tcb@shadowbended@prepare{#3}%
+ \tcb@pathbendedbase{fill,#5}{[xshift=#1+#3,yshift=#2+#3]frame.south west}{[xshift=-#1-#3,yshift=#2-#3]frame.north east}%
+ {\tcb@arc@zpt}{\tcb@arc@sha@NW}{\tcb@arc@sha@NE}{\tcb@arc@zpt}{#4}{0pt}%
+}
+
+\def\tcb@shadowlifted@middle#1#2#3#4#5{%
+ \tcb@shadowbended@prepare{#3}%
+ \tcb@pathbendedbase{fill,#5}{[xshift=#1+#3,yshift=#2+#3]frame.south west}{[xshift=-#1-#3,yshift=#2-#3]frame.north east}%
+ {\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}{#4}{0pt}%
+}
+
+\def\tcb@shadowlifted@last#1#2#3#4#5{%
+ \tcb@shadowbended@prepare{#3}%
+ \tcb@pathbendedbase{fill,#5}{[xshift=#1+#3,yshift=#2+#3]frame.south west}{[xshift=-#1-#3,yshift=#2-#3]frame.north east}%
+ {\tcb@arc@sha@SW}{\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@sha@SE}{#4}{0pt}%
+}
+
+\tcbset{
+ lifted shadow/.style n args={5}{shad@w app={%
+ \begin{scope}[#5]%
+ \letcs\tcb@shadowlifted{tcb@shadowlifted@\tcb@shapeofskin}%
+ \tcb@shadowlifted{#1}{#2}{\dimexpr-4\dimexpr#4}{#3}{opacity=0.01}%
+ \tcb@shadowlifted{#1}{#2}{\dimexpr-3\dimexpr#4}{#3}{opacity=0.02}%
+ \tcb@shadowlifted{#1}{#2}{\dimexpr-2\dimexpr#4}{#3}{opacity=0.04}%
+ \tcb@shadowlifted{#1}{#2}{\dimexpr-#4}{#3}{opacity=0.07}%
+ \tcb@shadowlifted{#1}{#2}{0pt}{#3}{opacity=0.11}%
+ \tcb@shadowlifted{#1}{#2}{\dimexpr+#4}{#3}{opacity=0.11}%
+ \tcb@shadowlifted{#1}{#2}{\dimexpr+2\dimexpr#4}{#3}{opacity=0.07}%
+ \tcb@shadowlifted{#1}{#2}{\dimexpr+3\dimexpr#4}{#3}{opacity=0.04}%
+ \tcb@shadowlifted{#1}{#2}{\dimexpr+4\dimexpr#4}{#3}{opacity=0.02}%
+ \tcb@shadowlifted{#1}{#2}{\dimexpr+5\dimexpr#4}{#3}{opacity=0.01}%
+ \end{scope}}},%
+ drop small lifted shadow/.style={lifted shadow={1mm}{-0.75mm}{1.3mm}{0.1mm}{#1}},
+ drop small lifted shadow/.default={black!50!white},%
+ drop lifted shadow/.style={lifted shadow={1.5mm}{-1.5mm}{2.7mm}{0.12mm}{#1}},
+ drop lifted shadow/.default={black!50!white},%
+ drop large lifted shadow/.style={lifted shadow={2mm}{-3mm}{5.7mm}{0.16mm}{#1}},
+ drop large lifted shadow/.default={black!50!white},%
+}
+
+\newif\iftcb@isindraft
+\def\tcb@draftmode{\tcbset{spartan,spartan@fit}}
+\def\tcbstartdraftmode{\let\tcb@afteroptions@hook=\tcb@draftmode\tcb@isindrafttrue}
+\def\tcbstopdraftmode{\let\tcb@afteroptions@hook=\@empty\tcb@isindraftfalse}
+
+\def\tcbinterruptdraftmode{%
+ \iftcb@isindraft%
+ \tcbstopdraftmode%
+ \let\tcbcontinuedraftmode=\tcbstartdraftmode%
+ \else%
+ \let\tcbcontinuedraftmode=\@empty%
+ \fi}
+
+\tcbset{%
+ draftmode/.is choice,%
+ draftmode/.default=true,%
+ draftmode/true/.code=\tcbstartdraftmode,%
+ draftmode/false/.code=\tcbstopdraftmode,%
+}
+
+
+\def\tcb@include@graphics{%
+ \let\tcb@graphics@options\kvtcb@graphics@options%
+ \ifnum\kvtcb@graphics@orientation>-1\relax%
+ \setbox\tcb@waterbox=\color@hbox\begingroup\edef\x{\endgroup\noexpand\includegraphics[\tcb@graphics@options]}\x{\imagepath}\color@endbox%
+ \ifcase\kvtcb@graphics@orientation\relax%
+ \ifdim\wd\tcb@waterbox<\dimexpr\ht\tcb@waterbox+\dp\tcb@waterbox\relax%
+ \appto\tcb@graphics@options{,angle=90}%
+ \fi%
+ \or%
+ \ifdim\wd\tcb@waterbox<\dimexpr\ht\tcb@waterbox+\dp\tcb@waterbox\relax%
+ \appto\tcb@graphics@options{,angle=-90}%
+ \fi%
+ \or%
+ \ifdim\wd\tcb@waterbox>\dimexpr\ht\tcb@waterbox+\dp\tcb@waterbox\relax%
+ \appto\tcb@graphics@options{,angle=90}%
+ \fi%
+ \or%
+ \ifdim\wd\tcb@waterbox>\dimexpr\ht\tcb@waterbox+\dp\tcb@waterbox\relax%
+ \appto\tcb@graphics@options{,angle=-90}%
+ \fi%
+ \fi%
+ \fi%
+ \ifdefstring{\kvtcb@capture}{hbox}{%
+ \tcbox{%
+ \begingroup\edef\x{\endgroup\noexpand\includegraphics[\tcb@graphics@options]}%
+ \x{\imagepath}%
+ }%
+ }{%
+ \iftcb@fixedheight%
+ \begin{tcolorbox}%
+ \begingroup\edef\x{\endgroup\noexpand\includegraphics[\tcb@graphics@options,width=\linewidth,height=\tcbtextheight,keepaspectratio]}%
+ \x{\imagepath}%
+ \end{tcolorbox}%
+ \else%
+ \ifdefempty\tcb@height@adjust{%
+ \begin{tcolorbox}%
+ \begingroup\edef\x{\endgroup\noexpand\includegraphics[\tcb@graphics@options,width=\linewidth]}%
+ \x{\imagepath}%
+ \end{tcolorbox}%
+ }{% height fill
+ \begin{tcolorbox}[underlay={%
+ \begin{tcbclipinterior}%
+ \path[fill zoom image*={\tcb@graphics@options}{\imagepath}]
+ ([xshift=\kvtcb@boxsep+\kvtcb@leftupper,yshift=\kvtcb@boxsep+\kvtcb@bottom]interior.south west) rectangle
+ ([xshift=-\kvtcb@boxsep-\kvtcb@rightupper,yshift=-\kvtcb@boxsep-\kvtcb@top]interior.north east);
+ \end{tcbclipinterior}%
+ }]%
+ \end{tcolorbox}%
+ }%
+ \fi%
+ }%
+}
+
+\def\tcb@scanfilename#1#2{%
+ \begingroup%
+ \everyeof{\noexpand}%
+ \endlinechar -1%
+ \catcode`\_=11%
+ \catcode`\~=11%
+ \edef\x{\scantokens\expandafter{#2}}%
+ \expandafter\endgroup%
+ \expandafter\def\expandafter #1\expandafter{\x}%
+}%
+
+
+\def\tcb@include@graphics@preparefile#1{%
+ \tcb@scanfilename\tcb@temp{#1}%
+ \filename@parse{\tcb@temp}%
+ \ifx\filename@ext\relax%
+ \let\imagename\filename@base%
+ \else%
+ \def\imagename{\filename@base\Gin@sepdefault\filename@ext}%
+ \fi%
+ \ifdefined\grffile@Ginclude@graphics%
+ % grffile package loaded
+ \ifx\kvtcb@graphics@directory\@empty%
+ \def\imagepath{#1}%
+ \else%
+ \def\imagepath{\kvtcb@graphics@directory/#1}%
+ \fi%
+ \else%
+ \ifx\kvtcb@graphics@directory\@empty%
+ \edef\imagepath{#1}%
+ \else%
+ \edef\imagepath{\kvtcb@graphics@directory/#1}%
+ \fi%
+ \fi%
+}
+
+\newcommand{\tcbincludegraphics}[2][]{%
+ \begingroup%
+ \tcb@layer@pushup%
+ \tcb@apply@box@options{enhanced,clip upper=true,valign=center,center upper,#1}%
+ \tcb@include@graphics@preparefile{#2}%
+ \edef\imagepage{1}%
+ \tcb@include@graphics%
+ \endgroup%
+}
+
+\def\tcb@set@pdfpages#1#2{%
+ \IfFileExists{#2}{%
+ \ifdef{\pdfximage}{%
+ \pdfximage{#2}%
+ \edef#1{\the\pdflastximagepages}%
+ }{%
+ \ifdef{\XeTeXpdfpagecount}{%
+ \edef#1{\the\XeTeXpdfpagecount #2 }%
+ \ifnum#1=0 %
+ \edef#1{1}%
+ \fi%
+ }{\tcb@error{For PDF support run pdflatex, xelatex, or lualatex}{%
+ Your compiler seems not to support PDF include files.}}%
+ }%
+ }{\tcb@error{PDF file `#2' not found}{The PDF file `#2' was not found}}%
+ \relax%
+}
+
+\newcommand{\tcbincludepdf}[2][]{%
+ \begingroup%
+ \tcb@layer@pushup%
+ \tcb@apply@box@options{enhanced,clip upper=true,valign=center,center upper,#1}%
+ \appto\kvtcb@graphics@options{,page=\imagepage}%
+ \tcb@include@graphics@preparefile{#2}%
+ \tcb@set@pdfpages\pdfpages{\imagepath}%
+ \foreach \imagepage in \kvtcb@graphics@pages%
+ {%
+ \tcb@include@graphics%
+ }%
+ \endgroup%
+}
+
+\tcbset{%
+ graphics options/.store in=\kvtcb@graphics@options,
+ graphics pages/.store in=\kvtcb@graphics@pages,
+ graphics directory/.store in=\kvtcb@graphics@directory,
+ graphics orientation/.is choice,
+ graphics orientation/as-is/.code={\def\kvtcb@graphics@orientation{-1}},
+ graphics orientation/landscape/.code={\def\kvtcb@graphics@orientation{0}},
+ graphics orientation/landscape*/.code={\def\kvtcb@graphics@orientation{1}},
+ graphics orientation/portrait/.code={\def\kvtcb@graphics@orientation{2}},
+ graphics orientation/portrait*/.code={\def\kvtcb@graphics@orientation{3}},
+}
+
+\newcommand{\tcbhypernode}[2]{\ifdefined\hypersetup\@ifundefined{pgf@sh@ns@#2}{}{%
+ \node[inner sep=0pt,outer sep=0pt] at (#2.center){%
+ \tcbsetmacrotowidthofnode\tcb@w@hn{#2}%
+ \tcbsetmacrotoheightofnode\tcb@h@hn{#2}%
+ \hypersetup{pdfborder=0 0 0}%
+ #1{\vtop to \dimexpr\tcb@h@hn-2bp\relax{\hbox to \dimexpr\tcb@w@hn-2bp\relax{}\vfil}}%
+ };%
+}\fi}
+
+\tcbset{%
+ hyperref node/.style 2 args={finish={\tcbhypernode{\hyperref[#1]}{#2}}},
+ hyperref/.style={hyperref node={#1}{frame}},
+ hyperref interior/.style={hyperref node={#1}{interior}},
+ hyperref title/.style={hyperref node={#1}{title}},
+ hyperlink node/.style 2 args={finish={\tcbhypernode{\hyperlink{#1}}{#2}}},
+ hyperlink/.style={hyperlink node={#1}{frame}},
+ hyperlink interior/.style={hyperlink node={#1}{interior}},
+ hyperlink title/.style={hyperlink node={#1}{title}},
+ hyperurl node/.style 2 args={finish={\tcbhypernode{\href{#1}}{#2}}},
+ hyperurl/.style={hyperurl node={#1}{frame}},
+ hyperurl interior/.style={hyperurl node={#1}{interior}},
+ hyperurl title/.style={hyperurl node={#1}{title}},
+ hyperurl* node/.style n args={3}{finish={\tcbhypernode{\href[#1]{#2}}{#3}}},
+ hyperurl*/.style 2 args={hyperurl* node={#1}{#2}{frame}},
+ hyperurl* interior/.style 2 args={hyperurl* node={#1}{#2}{interior}},
+ hyperurl* title/.style 2 args={hyperurl* node={#1}{#2}{title}},
+ beamer hidden/.style={nirvana},
+ beamer alerted/.style={fuzzy halo},
+ only/.code args={<#1>#2}{\only<#1>{\tcbset{#2}}},%
+ hide/.code args={<#1>}{\only<#1>{\tcbset{beamer hidden}}},%
+ alert/.code args={<#1>}{\only<#1>{\tcbset{beamer alerted}}},%
+}
+
+\tcbset{%
+ reset@skins/.style={%
+ frame style=,interior style=,segmentation style=,@title style=,%
+ colbacklower=black!15!white,%
+ extend freelance=,extend freelancefirst=,extend freelancemiddle=,extend freelancelast=,%
+ clear@spec,%
+ watermark opacity=1.00,watermark color=tcbcolback!85!tcbcolframe,%
+ watermark zoom=0.75,clip watermark,%
+ clip title=false,clip upper=false,clip lower=false,%
+ no borderline,smart shadow arc,no shadow,no underlay,no finish,tikz reset,at begin tikz reset,at end tikz reset,%
+ boxed title size=title,no boxed title style,hbox boxed title,code={\let\tcb@specialgeonodes@hook\relax},%
+ graphics options=,graphics pages={1,...,\pdfpages},graphics directory=,graphics orientation=as-is,%
+ },
+ initialize@reset=reset@skins,
+}
+
+\tcbuselibrary{skins@jigsaw}
diff --git a/macros/latex/contrib/tcolorbox/tcbskinsjigsaw.code.tex b/macros/latex/contrib/tcolorbox/tcbskinsjigsaw.code.tex
new file mode 100644
index 0000000000..0c2e5902d9
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcbskinsjigsaw.code.tex
@@ -0,0 +1,229 @@
+%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% tcbskinsjigsaw.code.tex: Code for colorboxes with different skins
+%%
+%% -------------------------------------------------------------------------------------------
+%% 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{skins}
+
+\def\tcb@drawframe@pathjigsaw{%
+ \tcb@pathboundary{tcb fill frame}{\tcb@boundaryframe@standardjigsaw}%
+}
+
+\def\tcb@boundary@pathfirstjigsaw@A{%
+ \tcbdimto\tcb@xa{\tcb@width-\kvtcb@right@rule}%
+ \tcbdimto\tcb@ya{\tcb@height-\kvtcb@top@rule}%
+ \pgfpathmoveto{\pgfpointorigin}%
+ \tcb@arc@out@NW\pgfpathlineto{\pgfqpoint{0pt}{\tcb@height}}%
+ \tcb@arc@out@NE\pgfpathlineto{\pgfqpoint{\tcb@width}{\tcb@height}}%
+ \tcb@arc@zpt\pgfpathlineto{\pgfqpoint{\tcb@width}{0pt}}%
+ \pgfpathlineto{\pgfqpoint{\tcb@xa}{0pt}}%
+ \tcb@arc@ins@NE\pgfpathlineto{\pgfqpoint{\tcb@xa}{\tcb@ya}}%
+ \tcb@arc@ins@NW\pgfpathlineto{\pgfqpoint{\kvtcb@left@rule}{\tcb@ya}}%
+ \tcb@arc@zpt\pgfpathlineto{\pgfqpoint{\kvtcb@left@rule}{0pt}}%
+ \pgfpathclose%
+}
+
+\def\tcb@boundary@pathfirstjigsaw@B{%
+ \tcbdimto\tcb@xa{\tcb@width-\kvtcb@right@rule}%
+ \tcbdimto\tcb@ya{\kvtcb@bottom@rule+\tcb@innerheight}%
+ \pgfpathmoveto{\pgfpointorigin}%
+ \tcb@arc@out@NW\pgfpathlineto{\pgfqpoint{0pt}{\tcb@height}}%
+ \tcb@arc@out@NE\pgfpathlineto{\pgfqpoint{\tcb@width}{\tcb@height}}%
+ \tcb@arc@zpt\pgfpathlineto{\pgfqpoint{\tcb@width}{0pt}}%
+ \pgfpathlineto{\pgfqpoint{\tcb@xa}{0pt}}%
+ \pgfpathlineto{\pgfqpoint{\tcb@xa}{\tcb@ya}}%
+ \pgfpathlineto{\pgfqpoint{\kvtcb@left@rule}{\tcb@ya}}%
+ \pgfpathlineto{\pgfqpoint{\kvtcb@left@rule}{0pt}}%
+ \pgfpathclose%
+}
+
+\def\tcb@drawframe@pathfirstjigsaw{%
+ \tcb@pathboundary{tcb fill frame}{%
+ \pgfseteorule%
+ \iftcb@hasTitle%
+ \iftcb@titlefilled%
+ \ifdim\dimexpr\kvtcb@title@rule>0pt\relax%
+ \tcb@boundary@pathfirstjigsaw@B%
+ \tcb@boundarytitle@standard%
+ \else%
+ \tcb@boundary@pathfirstjigsaw@A%
+ \fi%
+ \else%
+ \tcb@boundary@pathfirstjigsaw@B%
+ \fi%
+ \else%
+ \tcb@boundary@pathfirstjigsaw@A%
+ \fi%
+ }%
+}
+
+\def\tcb@boundary@pathmiddlejigsaw@A{%
+ \tcbdimto\tcb@xa{\tcb@width-\kvtcb@right@rule}%
+ \pgfpathrectangle{\pgfpointorigin}{\pgfqpoint{\kvtcb@left@rule}{\tcb@height}}%
+ \pgfpathrectangle{\pgfqpoint{\tcb@xa}{0pt}}{\pgfqpoint{\kvtcb@right@rule}{\tcb@height}}%
+}
+
+\def\tcb@boundary@pathmiddlejigsaw@B{%
+ \tcbdimto\tcb@xa{\tcb@width-\kvtcb@right@rule}%
+ \tcbdimto\tcb@ya{\tcb@height-\kvtcb@top@rule}%
+ \pgfpathmoveto{\pgfpointorigin}%
+ \tcb@arc@zpt\pgfpathlineto{\pgfqpoint{0pt}{\tcb@height}}%
+ \pgfpathlineto{\pgfqpoint{\tcb@width}{\tcb@height}}%
+ \pgfpathlineto{\pgfqpoint{\tcb@width}{0pt}}%
+ \pgfpathlineto{\pgfqpoint{\tcb@xa}{0pt}}%
+ \pgfpathlineto{\pgfqpoint{\tcb@xa}{\tcb@ya}}%
+ \pgfpathlineto{\pgfqpoint{\kvtcb@left@rule}{\tcb@ya}}%
+ \pgfpathlineto{\pgfqpoint{\kvtcb@left@rule}{0pt}}%
+ \pgfpathclose%
+}
+
+\def\tcb@boundary@pathmiddlejigsaw@C{%
+ \tcbdimto\tcb@xa{\tcb@width-\kvtcb@right@rule}%
+ \tcbdimto\tcb@ya{\kvtcb@bottom@rule+\tcb@innerheight}%
+ \pgfpathmoveto{\pgfpointorigin}%
+ \tcb@arc@zpt\pgfpathlineto{\pgfqpoint{0pt}{\tcb@height}}%
+ \pgfpathlineto{\pgfqpoint{\tcb@width}{\tcb@height}}%
+ \pgfpathlineto{\pgfqpoint{\tcb@width}{0pt}}%
+ \pgfpathlineto{\pgfqpoint{\tcb@xa}{0pt}}%
+ \pgfpathlineto{\pgfqpoint{\tcb@xa}{\tcb@ya}}%
+ \pgfpathlineto{\pgfqpoint{\kvtcb@left@rule}{\tcb@ya}}%
+ \pgfpathlineto{\pgfqpoint{\kvtcb@left@rule}{0pt}}%
+ \pgfpathclose%
+}
+
+\def\tcb@drawframe@pathmiddlejigsaw{%
+ \tcb@pathboundary{tcb fill frame}{%
+ \pgfseteorule%
+ \iftcb@hasTitle%
+ \iftcb@titlefilled%
+ \ifdim\dimexpr\kvtcb@title@rule>0pt\relax%
+ \tcb@boundary@pathmiddlejigsaw@C%
+ \tcb@arc@zpt%
+ \tcbdimto\tcb@ya{\kvtcb@bottom@rule+\tcb@innerheight+\kvtcb@title@rule}%
+ \tcbdimto\tcb@xb{\tcb@width-\kvtcb@right@rule}%
+ \tcbdimto\tcb@yb{\tcb@height-\kvtcb@top@rule}%
+ \pgfpathrectanglecorners{\pgfqpoint{\kvtcb@left@rule}{\tcb@ya}}{\pgfqpoint{\tcb@xb}{\tcb@yb}}%
+ \else%
+ \tcb@boundary@pathmiddlejigsaw@B%
+ \fi%
+ \else%
+ \tcb@boundary@pathmiddlejigsaw@C%
+ \fi%
+ \else%
+ \tcb@boundary@pathmiddlejigsaw@A%
+ \fi%
+ }%
+}
+
+\def\tcb@drawframe@pathlastjigsaw{%
+ \tcb@pathboundary{tcb fill frame}{%
+ \pgfseteorule%
+ \iftcb@hasTitle%
+ \iftcb@titlefilled%
+ \ifdim\dimexpr\kvtcb@title@rule>0pt\relax%
+ \tcb@boundaryframe@pathlast%
+ \tcb@arc@zpt%
+ \tcbdimto\tcb@ya{\kvtcb@bottom@rule+\tcb@innerheight+\kvtcb@title@rule}%
+ \tcbdimto\tcb@xb{\tcb@width-\kvtcb@right@rule}%
+ \tcbdimto\tcb@yb{\tcb@height-\kvtcb@top@rule}%
+ \pgfpathrectanglecorners{\pgfqpoint{\kvtcb@left@rule}{\tcb@ya}}{\pgfqpoint{\tcb@xb}{\tcb@yb}}%
+ \tcb@boundaryinterior@title@standard%
+ \else%
+ \tcb@boundaryframe@pathlast%
+ \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@zpt}{\tcb@arc@zpt}{\tcb@arc@ins@SE}%
+ \fi%
+ \else%
+ \tcb@boundaryframe@pathlast%
+ \fi%
+ \else%
+ \tcbdimto\tcb@xa{\tcb@width-\kvtcb@right@rule}%
+ \pgfpathmoveto{\pgfpointorigin}%
+ \tcb@arc@zpt\pgfpathlineto{\pgfqpoint{0pt}{\tcb@height}}%
+ \pgfpathlineto{\pgfqpoint{\kvtcb@left@rule}{\tcb@height}}%
+ \tcb@arc@ins@SW\pgfpathlineto{\pgfqpoint{\kvtcb@left@rule}{\kvtcb@bottom@rule}}%
+ \tcb@arc@ins@SE\pgfpathlineto{\pgfqpoint{\tcb@xa}{\kvtcb@bottom@rule}}%
+ \tcb@arc@zpt\pgfpathlineto{\pgfqpoint{\tcb@xa}{\tcb@height}}%
+ \pgfpathlineto{\pgfqpoint{\tcb@width}{\tcb@height}}%
+ \tcb@arc@out@SE\pgfpathlineto{\pgfqpoint{\tcb@width}{0pt}}%
+ \tcb@arc@out@SW\pgfpathclose%
+ \fi%
+ }%
+}
+
+
+\def\tcb@draw@shadowjigsaw@unbroken{%
+ \let\tcb@shadow=\tcb@shadow@unbroken%
+ \begin{tcbinvclipframe}%
+ \kvtcb@shadow%
+ \end{tcbinvclipframe}%
+}
+
+\def\tcb@draw@shadowjigsaw@first{%
+ \let\tcb@shadow=\tcb@shadow@first%
+ \begin{tcbinvclipframe}%
+ \kvtcb@shadow%
+ \end{tcbinvclipframe}%
+}
+
+\def\tcb@draw@shadowjigsaw@middle{%
+ \let\tcb@shadow=\tcb@shadow@middle%
+ \begin{tcbinvclipframe}%
+ \kvtcb@shadow%
+ \end{tcbinvclipframe}%
+}
+
+\def\tcb@draw@shadowjigsaw@last{%
+ \let\tcb@shadow=\tcb@shadow@last%
+ \begin{tcbinvclipframe}%
+ \kvtcb@shadow%
+ \end{tcbinvclipframe}%
+}
+
+\tcb@new@skin{enhanced jigsaw}{base@unbroken,%
+ frame engine=pathjigsaw,interior titled engine=path,interior engine=path,segmentation engine=path,title engine=path,%
+ set@extensions@preframe={\tcb@draw@shadowjigsaw@unbroken},%
+ skin first=enhancedfirst jigsaw,skin middle=enhancedmiddle jigsaw,skin last=enhancedlast jigsaw}
+
+\tcb@new@skin{enhancedfirst jigsaw}{base@first,%
+ frame engine=pathfirstjigsaw,interior titled engine=pathfirst,interior engine=pathfirst,segmentation engine=path,title engine=pathfirst,%
+ set@extensions@preframe={\tcb@draw@shadowjigsaw@first},%
+ skin first=enhancedfirst jigsaw,skin middle=enhancedmiddle jigsaw,skin last=enhancedmiddle jigsaw}
+
+\tcb@new@skin{enhancedmiddle jigsaw}{base@middle,%
+ frame engine=pathmiddlejigsaw,interior titled engine=pathmiddle,interior engine=pathmiddle,segmentation engine=path,title engine=pathmiddle,%
+ set@extensions@preframe={\tcb@draw@shadowjigsaw@middle},%
+ skin first=enhancedmiddle jigsaw,skin middle=enhancedmiddle jigsaw,skin last=enhancedmiddle jigsaw}
+
+\tcb@new@skin{enhancedlast jigsaw}{base@last,%
+ frame engine=pathlastjigsaw,interior titled engine=pathlast,interior engine=pathlast,segmentation engine=path,title engine=pathlast,%
+ set@extensions@preframe={\tcb@draw@shadowjigsaw@last},%
+ skin first=enhancedmiddle jigsaw,skin middle=enhancedmiddle jigsaw,skin last=enhancedlast jigsaw}
+
+\tcbset{%
+ enhanced jigsaw/.style={skin=enhanced jigsaw},%
+ enhanced standard jigsaw/.style={skin=enhanced jigsaw,
+ skin first=enhanced jigsaw,skin middle=enhanced jigsaw,skin last=enhanced jigsaw},%
+ frame engine/pathjigsaw/.style={frame code=\tcb@drawframe@pathjigsaw},
+ frame engine/pathfirstjigsaw/.style={frame code=\tcb@drawframe@pathfirstjigsaw},
+ frame engine/pathmiddlejigsaw/.style={frame code=\tcb@drawframe@pathmiddlejigsaw},
+ frame engine/pathlastjigsaw/.style={frame code=\tcb@drawframe@pathlastjigsaw},
+}
+
diff --git a/macros/latex/contrib/tcolorbox/tcbtheorems.code.tex b/macros/latex/contrib/tcolorbox/tcbtheorems.code.tex
new file mode 100644
index 0000000000..06ce9c04a5
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcbtheorems.code.tex
@@ -0,0 +1,175 @@
+%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% tcbtheorems.code.tex: Code for theorems in colorboxes
+%%
+%% -------------------------------------------------------------------------------------------
+%% 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
+%%
+%\makeatletter
+\tcb@set@library@version{4.20}
+
+\RequirePackage{amsmath}
+
+\def\tcb@hack@amsmath{\tcb@hack@currenvir\vskip-\abovedisplayskip}
+
+\def\tcb@theo@form@namenumber#1#2{\hbox{#1~#2}}
+\def\tcb@theo@form@numbername#1#2{\hbox{#2~#1}}
+\def\tcb@theo@form@name#1#2{\hbox{#1}}
+
+\def\tcb@theo@desc@form@std#1{\tcb@desc@col\kvtcb@desc@font\kvtcb@desc@delim@left#1\kvtcb@desc@delim@right}
+
+\def\tcb@theo@title#1#2#3{%
+ \ifdefempty{#2}{\setbox\z@=\color@hbox#1\color@endbox}{\setbox\z@=\tcb@theo@form{#1}{#2}}%
+ \def\temp@a{#3}%
+ \ifx\temp@a\@empty\relax%
+ \unhbox\z@\kvtcb@terminatorsign%
+ \else%
+ \setbox\z@=\hbox{\unhbox\z@\kvtcb@separatorsign\ }%
+ \hangindent\wd\z@%
+ \hangafter=1%
+ \mbox{\unhbox\z@}{\tcb@theo@desc@form{#3}}\kvtcb@terminatorsign%
+ \fi%
+}
+
+\def\tcb@theo@listentry#1#2#3{%
+ \def\kvtcb@listentry{\protect\numberline{#2}#3}%
+}
+
+\def\tcb@theo@label#1#2{%
+ \def\temp@a{#2}%
+ \ifx\temp@a\@empty%
+ \else%
+ \tcbset{label={#1\kvtcb@label@sep#2},%
+ tcb@theo@full@label@supp={#1\kvtcb@label@sep#2},tcb@theo@label@supp={#2}}%
+ \fi%
+}
+
+\if@fleqn%
+\tcbset{%
+ ams equation upper/.style={before upper*=\tcb@hack@amsmath\equation,after upper*=\endequation},%
+ ams equation lower/.style={before lower*=\tcb@hack@amsmath\equation,after lower*=\endequation},%
+ ams equation* upper/.style={before upper*=\tcb@hack@amsmath\csname equation*\endcsname,after upper*=\endequation},%
+ ams equation* lower/.style={before lower*=\tcb@hack@amsmath\csname equation*\endcsname,after lower*=\endequation}%
+}%
+\else%
+\tcbset{%
+ ams equation upper/.style={before upper*=\tcb@hack@currenvir\equation,after upper*=\endequation},%
+ ams equation lower/.style={before lower*=\tcb@hack@currenvir\equation,after lower*=\endequation},%
+ ams equation* upper/.style={before upper*=\tcb@hack@currenvir\csname equation*\endcsname,after upper*=\endequation},%
+ ams equation* lower/.style={before lower*=\tcb@hack@currenvir\csname equation*\endcsname,after lower*=\endequation},%
+}%
+\fi
+
+\tcbset{
+ theorem/.style args={#1#2#3#4}{%
+ step and label={#2}{#4},%
+ title={\letcs\tcb@temp{the#2}\tcb@theo@title{#1}{\tcb@temp}{#3}}},%
+ math upper/.style={before upper*=$\displaystyle,after upper*=$},%
+ math lower/.style={before lower*=$\displaystyle,after lower*=$},%
+ math/.style={math upper,math lower},%
+ ams equation/.style={ams equation upper,ams equation lower},%
+ ams equation*/.style={ams equation* upper,ams equation* lower},%
+ ams align upper/.style={before upper*=\tcb@hack@amsmath\align,after upper*=\endalign},%
+ ams align lower/.style={before lower*=\tcb@hack@amsmath\align,after lower*=\endalign},%
+ ams align/.style={ams align upper,ams align lower},%
+ ams align* upper/.style={before upper*=\tcb@hack@amsmath\csname align*\endcsname,after upper*=\endalign},%
+ ams align* lower/.style={before lower*=\tcb@hack@amsmath\csname align*\endcsname,after lower*=\endalign},%
+ ams align*/.style={ams align* upper,ams align* lower},%
+ ams gather upper/.style={before upper*=\tcb@hack@amsmath\gather,after upper*=\endgather},%
+ ams gather lower/.style={before lower*=\tcb@hack@amsmath\gather,after lower*=\endgather},%
+ ams gather/.style={ams gather upper,ams gather lower},%
+ ams gather* upper/.style={before upper*=\tcb@hack@amsmath\csname gather*\endcsname,after upper*=\endgather},%
+ ams gather* lower/.style={before lower*=\tcb@hack@amsmath\csname gather*\endcsname,after lower*=\endgather},%
+ ams gather*/.style={ams gather* upper,ams gather* lower},%
+ ams nodisplayskip upper/.style={before upper=\vskip-\abovedisplayskip},%
+ ams nodisplayskip lower/.style={before lower=\vskip-\abovedisplayskip},%
+ ams nodisplayskip/.style={ams nodisplayskip upper,ams nodisplayskip lower},%
+ highlight math style/.style={highlight math/.style={notitle,nophantom,#1}},%
+ separator sign/.store in=\kvtcb@separatorsign,%
+ separator sign colon/.style={separator sign={:}},%
+ separator sign dash/.style={separator sign={\ --}},%
+ separator sign none/.style={separator sign=},%
+ terminator sign/.store in=\kvtcb@terminatorsign,%
+ terminator sign colon/.style={terminator sign={:}},%
+ terminator sign dash/.style={terminator sign={\ --}},%
+ terminator sign none/.style={terminator sign=},%
+ label separator/.store in=\kvtcb@label@sep,%
+ description delimiters/.code 2 args={\def\kvtcb@desc@delim@left{#1}\def\kvtcb@desc@delim@right{#2}},%
+ description delimiters parenthesis/.style={description delimiters=()},
+ description delimiters none/.style={description delimiters={}{}},
+ description color/.code={\def\temp@a{#1}\ifx\temp@a\@empty\relax%
+ \def\tcb@desc@col{}\else\def\tcb@desc@col{\color{#1}}\fi},%
+ description color/.default=,
+ description font/.store in=\kvtcb@desc@font,
+ description font/.default=,
+ description formatter/.code={\let\tcb@theo@desc@form=#1},%
+ description formatter/.default={\tcb@theo@desc@form@std},%
+ theorem name and number/.code={\let\tcb@theo@form=\tcb@theo@form@namenumber},
+ theorem number and name/.code={\let\tcb@theo@form=\tcb@theo@form@numbername},
+ theorem name/.code={\let\tcb@theo@form=\tcb@theo@form@name},
+ theorem style/.is choice,
+ theorem style/standard/.style={separator sign colon,description delimiters none,
+ terminator sign none,theorem name and number,attach title},
+ theorem style/change standard/.style={theorem style=standard,theorem number and name},
+ theorem style/plain/.style={separator sign none,description delimiters parenthesis,
+ terminator sign colon,theorem name and number,attach title to upper={\ }},
+ theorem style/plain apart/.style={separator sign none,description delimiters parenthesis,
+ terminator sign none,theorem name and number,attach title},
+ theorem style/break/.style={theorem style=plain,attach title to upper={\par}},
+ theorem style/change/.style={theorem style=plain,theorem number and name},
+ theorem style/change apart/.style={theorem style=plain apart,theorem number and name},
+ theorem style/change break/.style={theorem style=break,theorem number and name},
+ theorem style/margin/.style={theorem style=plain,theorem name,before title=\makebox[0pt][r]{\thetcbcounter\ }},
+ theorem style/margin apart/.style={theorem style=margin,attach title,terminator sign none},
+ theorem style/margin break/.style={theorem style=margin,attach title to upper={\par}},
+ theorem label supplement/.style={tcb@theo@label@supp/.style={#1}},
+ theorem full label supplement/.style={tcb@theo@full@label@supp/.style={#1}},
+}
+
+\newcommand{\new@tcbtheorem}[5][]{%
+ \@@newtcolorbox[auto counter,#1]{#2}[3][]{#4,%
+ title={\tcb@theo@title{#3}{\thetcbcounter}{##2}},%
+ list entry={\protect\numberline{\thetcbcounter}##2},%
+ nameref={##2},%
+ code={\tcb@theo@label{#5}{##3}},%
+ ##1}%
+ \@@newtcolorbox[#1,no counter,list inside=]{#2*}[2][]{#4,%
+ title={\tcb@theo@title{#3}{\@empty}{##2}},%
+ ##1}%
+}
+
+\def\newtcbtheorem{\let\@@newtcolorbox\newtcolorbox%
+ \new@tcbtheorem}
+
+\def\renewtcbtheorem{\let\@@newtcolorbox\renewtcolorbox%
+ \new@tcbtheorem}
+
+\newtcbox{\tcboxmath}[1][]{nobeforeafter,math upper,tcbox raise base,#1}
+\newtcbox{\tcbhighmath}[1][]{highlight math,nobeforeafter,math upper,tcbox raise base,#1}
+
+\tcbset{%
+ reset@theorems/.style={%
+ description formatter,description color,description font,
+ highlight math style={colframe=red,colback=yellow!25!white},%
+ theorem style=standard,label separator=:,%
+ theorem label supplement=,theorem full label supplement=,%
+ },
+ initialize@reset=reset@theorems,
+}
+
+% DEPRECATED
+\newcommand{\tcbmaketheorem}[5]{%
+ \newtcolorbox{#1}[3][]{#3,theorem={#2}{#4}{##2}{#5\kvtcb@label@sep##3},##1}%
+}
diff --git a/macros/latex/contrib/tcolorbox/tcbvignette.code.tex b/macros/latex/contrib/tcolorbox/tcbvignette.code.tex
new file mode 100644
index 0000000000..0f494da1dd
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcbvignette.code.tex
@@ -0,0 +1,320 @@
+%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% tcbvignette.code.tex: Code for ornamental frames
+%%
+%% -------------------------------------------------------------------------------------------
+%% 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{skins}
+
+\usetikzlibrary{fadings}
+
+\pgfdeclarehorizontalshading{tcb@fade@east}{100bp}
+{color(0bp)=(pgftransparent!50); color(25bp)=(pgftransparent!50);
+ color(75bp)=(pgftransparent!100); color(100bp)=(pgftransparent!100)}
+
+\pgfdeclarehorizontalshading{tcb@fade@west}{100bp}
+{color(0bp)=(pgftransparent!100); color(25bp)=(pgftransparent!100);
+ color(75bp)=(pgftransparent!50); color(100bp)=(pgftransparent!50)}
+
+\pgfdeclareverticalshading{tcb@fade@north}{100bp}
+{color(0bp)=(pgftransparent!50); color(25bp)=(pgftransparent!50);
+ color(75bp)=(pgftransparent!100); color(100bp)=(pgftransparent!100)}
+
+\pgfdeclareverticalshading{tcb@fade@south}{100bp}
+{color(0bp)=(pgftransparent!100); color(25bp)=(pgftransparent!100);
+ color(75bp)=(pgftransparent!50); color(100bp)=(pgftransparent!50)}
+
+\pgfdeclarefading{semi east}{\pgfuseshading{tcb@fade@east}}
+\pgfdeclarefading{semi west}{\pgfuseshading{tcb@fade@west}}
+\pgfdeclarefading{semi north}{\pgfuseshading{tcb@fade@north}}
+\pgfdeclarefading{semi south}{\pgfuseshading{tcb@fade@south}}
+
+\def\tcb@vig@draw@north#1{\path[#1]\pgfextra{%
+ \pgfpathmoveto{\pgfqpoint{\tcb@vig@xA}{\tcb@vig@yB}}%
+ \pgfpathlineto{\pgfqpoint{\tcb@vig@xB}{\tcb@vig@yB}}%
+ \pgfpathlineto{\pgfqpoint{\tcb@vig@xb}{\tcb@vig@yb}}%
+ \pgfpathlineto{\pgfqpoint{\tcb@vig@xa}{\tcb@vig@yb}}%
+ \pgfpathclose};}
+
+\def\tcb@vig@draw@east#1{\path[#1]\pgfextra{%
+ \pgfpathmoveto{\pgfqpoint{\tcb@vig@xB}{\tcb@vig@yB}}%
+ \pgfpathlineto{\pgfqpoint{\tcb@vig@xB}{\tcb@vig@yA}}%
+ \pgfpathlineto{\pgfqpoint{\tcb@vig@xb}{\tcb@vig@ya}}%
+ \pgfpathlineto{\pgfqpoint{\tcb@vig@xb}{\tcb@vig@yb}}%
+ \pgfpathclose};}
+
+\def\tcb@vig@draw@south#1{\path[#1]\pgfextra{%
+ \pgfpathmoveto{\pgfqpoint{\tcb@vig@xB}{\tcb@vig@yA}}%
+ \pgfpathlineto{\pgfqpoint{\tcb@vig@xA}{\tcb@vig@yA}}%
+ \pgfpathlineto{\pgfqpoint{\tcb@vig@xa}{\tcb@vig@ya}}%
+ \pgfpathlineto{\pgfqpoint{\tcb@vig@xb}{\tcb@vig@ya}}%
+ \pgfpathclose};}
+
+\def\tcb@vig@draw@west#1{\path[#1]\pgfextra{%
+ \pgfpathmoveto{\pgfqpoint{\tcb@vig@xA}{\tcb@vig@yA}}%
+ \pgfpathlineto{\pgfqpoint{\tcb@vig@xA}{\tcb@vig@yB}}%
+ \pgfpathlineto{\pgfqpoint{\tcb@vig@xa}{\tcb@vig@yb}}%
+ \pgfpathlineto{\pgfqpoint{\tcb@vig@xa}{\tcb@vig@ya}}%
+ \pgfpathclose};}
+
+\def\tcb@vig@draw@direct{%
+ \ifdim\tcb@vig@yB>\tcb@vig@yb\relax%
+ \begingroup\edef\x{\endgroup\noexpand\tcb@vig@draw@north{fill,draw=none,\expandonce\tcb@vig@style@north}}\x%
+ \fi%
+ \ifdim\tcb@vig@xB>\tcb@vig@xb\relax%
+ \begingroup\edef\x{\endgroup\noexpand\tcb@vig@draw@east{fill,draw=none,\expandonce\tcb@vig@style@east}}\x%
+ \fi%
+ \ifdim\tcb@vig@yA<\tcb@vig@ya\relax%
+ \begingroup\edef\x{\endgroup\noexpand\tcb@vig@draw@south{fill,draw=none,\expandonce\tcb@vig@style@south}}\x%
+ \fi%
+ \ifdim\tcb@vig@xA<\tcb@vig@xa\relax%
+ \begingroup\edef\x{\endgroup\noexpand\tcb@vig@draw@west{fill,draw=none,\expandonce\tcb@vig@style@west}}\x%
+ \fi%
+}
+
+\def\tcb@vig@draw@clipped{%
+ \ifdim\tcb@vig@yB>\tcb@vig@yb\relax%
+ \begin{scope}
+ \tcb@vig@draw@north{clip}%
+ \begingroup\edef\x{\endgroup\noexpand\path[fill,\expandonce\tcb@vig@style@north]}%
+ \x\pgfextra{\pgfpathrectanglecorners{\pgfpoint{\tcb@vig@xA-1mm}{\tcb@vig@yb}}%
+ {\pgfpoint{\tcb@vig@xB+1mm}{\tcb@vig@yB}}};
+ \end{scope}
+ \fi%
+ \ifdim\tcb@vig@xB>\tcb@vig@xb\relax%
+ \begin{scope}
+ \tcb@vig@draw@east{clip}%
+ \begingroup\edef\x{\endgroup\noexpand\path[fill,\expandonce\tcb@vig@style@east]}%
+ \x\pgfextra{\pgfpathrectanglecorners{\pgfpoint{\tcb@vig@xb}{\tcb@vig@yA-1mm}}%
+ {\pgfpoint{\tcb@vig@xB}{\tcb@vig@yB+1mm}}};
+ \end{scope}
+ \fi%
+ \ifdim\tcb@vig@yA<\tcb@vig@ya\relax%
+ \begin{scope}
+ \tcb@vig@draw@south{clip}%
+ \begingroup\edef\x{\endgroup\noexpand\path[fill,\expandonce\tcb@vig@style@south]}%
+ \x\pgfextra{\pgfpathrectanglecorners{\pgfpoint{\tcb@vig@xA-1mm}{\tcb@vig@yA}}%
+ {\pgfpoint{\tcb@vig@xB+1mm}{\tcb@vig@ya}}};
+ \end{scope}
+ \fi%
+ \ifdim\tcb@vig@xA<\tcb@vig@xa\relax%
+ \begin{scope}
+ \tcb@vig@draw@west{clip}%
+ \begingroup\edef\x{\endgroup\noexpand\path[fill,\expandonce\tcb@vig@style@west]}%
+ \x\pgfextra{%
+ \pgfpathrectanglecorners{\pgfpoint{\tcb@vig@xA}{\tcb@vig@yA-1mm}}%
+ {\pgfpoint{\tcb@vig@xa}{\tcb@vig@yB+1mm}}};
+ \end{scope}
+ \fi%
+}
+
+\newcommand{\tcbvignette}[1]{%
+ \ifdefined\pgfpictureid%
+ \begingroup%
+ \tcbset{vig/.cd,#1}%
+ \tcbdimto\tcb@vig@xA{\tcb@vig@xmin}%
+ \tcbdimto\tcb@vig@xB{\tcb@vig@xmax}%
+ \tcbdimto\tcb@vig@yA{\tcb@vig@ymin}%
+ \tcbdimto\tcb@vig@yB{\tcb@vig@ymax}%
+ \tcbdimto\tcb@vig@xa{\tcb@vig@xA+\tcb@vig@size@west}%
+ \tcbdimto\tcb@vig@xb{\tcb@vig@xB-(\tcb@vig@size@east)}%
+ \tcbdimto\tcb@vig@ya{\tcb@vig@yA+\tcb@vig@size@south}%
+ \tcbdimto\tcb@vig@yb{\tcb@vig@yB-(\tcb@vig@size@north)}%
+ \begin{scope}[tcb@vig@scope]%
+ \tcb@vig@draw%
+ \end{scope}
+ \endgroup%
+ \else%
+ \tcb@warning{'tcbvignette' was found outside a 'tikzpicture' environment and is ignored}%
+ \fi%
+}
+
+\tcbset{%
+ vig/.cd,
+ xmin/.store in=\tcb@vig@xmin,
+ xmax/.store in=\tcb@vig@xmax,
+ ymin/.store in=\tcb@vig@ymin,
+ ymax/.store in=\tcb@vig@ymax,
+ lower left corner/.code={\tcb@gettikzxy{(#1)}{\tcb@vig@xmin}{\tcb@vig@ymin}},
+ upper right corner/.code={\tcb@gettikzxy{(#1)}{\tcb@vig@xmax}{\tcb@vig@ymax}},
+ %
+ inside node/.style={lower left corner={#1.south west},upper right corner={#1.north east}},
+ outside node/.style={lower left corner={[xshift=-\tcb@vig@size@west,yshift=-\tcb@vig@size@south]#1.south west},
+ upper right corner={[xshift=\tcb@vig@size@east,yshift=\tcb@vig@size@north]#1.north east}},
+ %
+ on node/.style={lower left corner={#1.south west},upper right corner={#1.north east}},
+ over node offset/.store in=\tcb@vig@onoffset,%
+ over node/.style={lower left corner={[xshift=-\tcb@vig@onoffset,yshift=-\tcb@vig@onoffset]#1.south west},
+ upper right corner={[xshift=\tcb@vig@onoffset,yshift=\tcb@vig@onoffset]#1.north east}},
+ north size/.store in=\tcb@vig@size@north,
+ south size/.store in=\tcb@vig@size@south,
+ east size/.store in=\tcb@vig@size@east,
+ west size/.store in=\tcb@vig@size@west,
+ vertical size/.style={north size=#1,south size=#1},
+ horizontal size/.style={east size=#1,west size=#1},
+ size/.style={north size=#1,south size=#1,east size=#1,west size=#1},
+ north style/.store in=\tcb@vig@style@north,
+ south style/.store in=\tcb@vig@style@south,
+ east style/.store in=\tcb@vig@style@east,
+ west style/.store in=\tcb@vig@style@west,
+ scope/.code={\tikzset{tcb@vig@scope/.style={#1}}},
+ draw method/.is choice,
+ draw method/direct/.code={\let\tcb@vig@draw\tcb@vig@draw@direct},%
+ draw method/clipped/.code={\let\tcb@vig@draw\tcb@vig@draw@clipped},%
+ base color/.colorlet=tcbcol@vig@base,
+ raised color/.style={%
+ base color=#1,
+ north style={tcbcol@vig@base!50!white},
+ east style={tcbcol@vig@base!75!black},
+ south style={tcbcol@vig@base!50!black},
+ west style={tcbcol@vig@base!75!white},
+ },
+ lowered color/.style={%
+ base color=#1,
+ north style={tcbcol@vig@base!50!black},
+ east style={tcbcol@vig@base!75!white},
+ south style={tcbcol@vig@base!50!white},
+ west style={tcbcol@vig@base!75!black},
+ },
+ color from/.style args={#1 to #2}{%
+ north style={bottom color=#1,top color=#2},
+ east style={left color=#1,right color=#2},
+ south style={top color=#1,bottom color=#2},
+ west style={right color=#1,left color=#2},
+ },
+ fade in/.style={%
+ north style={#1,path fading=south},
+ east style={#1,path fading=west},
+ south style={#1,path fading=north},
+ west style={#1,path fading=east},
+ },
+ fade in/.default=white,
+ fade out/.style={%
+ north style={#1,path fading=north},
+ east style={#1,path fading=east},
+ south style={#1,path fading=south},
+ west style={#1,path fading=west},
+ },
+ fade out/.default=white,
+ semi fade in/.style={%
+ north style={#1,path fading=semi south},
+ east style={#1,path fading=semi west},
+ south style={#1,path fading=semi north},
+ west style={#1,path fading=semi east},
+ },
+ semi fade in/.default=white,
+ semi fade out/.style={%
+ north style={#1,path fading=semi north},
+ east style={#1,path fading=semi east},
+ south style={#1,path fading=semi south},
+ west style={#1,path fading=semi west},
+ },
+ semi fade out/.default=white,
+ %
+ scope=,
+ draw method=direct,
+ xmin=0pt,
+ xmax=1cm,
+ ymin=0pt,
+ ymax=1cm,
+ size=2mm,
+ over node offset=0.1mm,
+ raised color=red,
+}
+
+\tcbset{%
+ finish@vignette/.style 2 args={finish #1={%
+ \begin{tcbclipframe}\tcbvignette{%
+ scope={transparency group,opacity=0.25},
+ north style=white,
+ east style=black!75,
+ south style=black,
+ west style=black!25,#2,inside node=frame
+ }\end{tcbclipframe}}},
+ finish vignette/.style={%
+ finish@vignette={unbroken}{#1},%
+ finish@vignette={first}{#1,south size=0pt},%
+ finish@vignette={middle}{#1,north size=0pt,south size=0pt},%
+ finish@vignette={last}{#1,north size=0pt}%
+ },
+%
+ finish@raised@vignette/.style 2 args={finish #1={%
+ \begin{tcbclipframe}\tcbvignette{%
+ draw method=clipped,
+ north style={white,path fading=semi south},
+ east style={black!75,path fading=semi west},
+ south style={black,path fading=semi north},
+ west style={black!25,path fading=semi east},#2,inside node=frame
+ }\end{tcbclipframe}}},
+ finish raised fading vignette/.style={%
+ finish@raised@vignette={unbroken}{#1},%
+ finish@raised@vignette={first}{#1,south size=0pt},%
+ finish@raised@vignette={middle}{#1,north size=0pt,south size=0pt},%
+ finish@raised@vignette={last}{#1,north size=0pt}%
+ },
+%
+ finish@fading@vignette/.style 2 args={finish #1={%
+ \tcbvignette{%
+ draw method=clipped,fade in=tcbcol@vig@base,#2,over node=frame}}},
+ finish fading vignette/.style={%
+ finish@fading@vignette={unbroken}{base color=white,#1},%
+ finish@fading@vignette={first}{base color=white,#1,south size=0pt},%
+ finish@fading@vignette={middle}{base color=white,#1,north size=0pt,south size=0pt},%
+ finish@fading@vignette={last}{base color=white,#1,north size=0pt}%
+ },
+%
+ underlay@vignette/.style 2 args={underlay #1={%
+ \begin{tcbclipframe}\tcbvignette{%
+ raised color=tcbcolframe,
+ north size=\kvtcb@top@rule@stand,
+ south size=\kvtcb@bottom@rule@stand,
+ west size=\kvtcb@left@rule,
+ east size=\kvtcb@right@rule,#2,inside node=frame
+ }\end{tcbclipframe}}},
+ underlay vignette/.style={%
+ underlay@vignette={unbroken}{#1},%
+ underlay@vignette={first}{#1,south size=0pt},%
+ underlay@vignette={middle}{#1,north size=0pt,south size=0pt},%
+ underlay@vignette={last}{#1,north size=0pt}%
+ },
+%
+ underlay@fading@vignette/.style 2 args={underlay #1={%
+ \begin{tcbclipframe}\tcbvignette{%
+ draw method=clipped,
+ north style={white,path fading=semi south},
+ east style={black!75,path fading=semi west},
+ south style={black,path fading=semi north},
+ west style={black!25,path fading=semi east},#2,inside node=frame,
+ }\end{tcbclipframe}}},
+ underlay raised fading vignette/.style={%
+ underlay@fading@vignette={unbroken}{#1},%
+ underlay@fading@vignette={first}{#1,south size=0pt},%
+ underlay@fading@vignette={middle}{#1,north size=0pt,south size=0pt},%
+ underlay@fading@vignette={last}{#1,north size=0pt}%
+ },
+ %
+ underlay raised shading vignette/.style={%
+ underlay vignette={draw method=clipped,
+ north style={bottom color=tcbcolframe,top color=tcbcolframe!33!white},
+ east style={left color=tcbcolframe,right color=tcbcolframe!66!black},
+ south style={top color=tcbcolframe,bottom color=tcbcolframe!33!black},
+ west style={right color=tcbcolframe,left color=tcbcolframe!66!white},#1}},
+ %
+ underlay shade in vignette/.style={%
+ underlay vignette={draw method=clipped,color from=tcbcolback to tcbcolframe,#1}},
+}
diff --git a/macros/latex/contrib/tcolorbox/tcbxparse.code.tex b/macros/latex/contrib/tcolorbox/tcbxparse.code.tex
new file mode 100644
index 0000000000..be04cd8028
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcbxparse.code.tex
@@ -0,0 +1,288 @@
+%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% tcbxparse.code.tex: Code for xparse features
+%%
+%% -------------------------------------------------------------------------------------------
+%% 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
+%%
+%\makeatletter
+\tcb@set@library@version{4.20}
+
+\RequirePackage{xparse}[2013/12/31]
+
+\tcbset{%
+ IfNoValueTF/.code args={#1#2#3}{\IfNoValueTF{#1}{\pgfkeysalso{#2}}{\pgfkeysalso{#3}}},
+ IfValueTF/.code args={#1#2#3}{\IfValueTF{#1}{\pgfkeysalso{#2}}{\pgfkeysalso{#3}}},
+ IfBooleanTF/.code args={#1#2#3}{\IfBooleanTF{#1}{\pgfkeysalso{#2}}{\pgfkeysalso{#3}}},
+ verbatim/.style={fontupper=\ttfamily,nobeforeafter,tcbox raise base,top=0pt,bottom=0pt,left=1mm,right=1mm,boxrule=0.3mm}
+}
+
+%-- tcolorbox --
+\long\def\tcb@New@TColorBox#1#2#3{%
+ \tcb@newenvironment{#1}{#2}{\tcolorbox[#3,options@for=#1]}{\endtcolorbox}}
+
+\def\DeclareTColorBox{%
+ \let\tcb@newenvironment\DeclareDocumentEnvironment%
+ \let\tcb@process@newtcolorbox@continue\tcb@New@TColorBox%
+ \tcb@process@newenvironment}
+
+\def\NewTColorBox{%
+ \let\tcb@newenvironment\NewDocumentEnvironment%
+ \let\tcb@process@newtcolorbox@continue\tcb@New@TColorBox%
+ \tcb@process@newenvironment}
+
+\def\RenewTColorBox{%
+ \let\tcb@newenvironment\RenewDocumentEnvironment%
+ \let\tcb@process@newtcolorbox@continue\tcb@New@TColorBox%
+ \tcb@process@newenvironment}
+
+\def\ProvideTColorBox{%
+ \let\tcb@newenvironment\ProvideDocumentEnvironment%
+ \let\tcb@process@newtcolorbox@continue\tcb@New@TColorBox%
+ \tcb@process@newenvironment}
+
+%-- tcolorbox (total) --
+\long\def\tcb@New@TotalTColorBox#1#2#3#4{%
+ \expandafter\tcb@newcommand\csname#1\endcsname{#2}{\begin{tcolorbox}[#3,options@for=#1]#4\end{tcolorbox}}}
+
+\def\DeclareTotalTColorBox{%
+ \let\tcb@newcommand\DeclareDocumentCommand%
+ \let\tcb@process@newtcolorbox@continue\tcb@New@TotalTColorBox%
+ \tcb@process@newcommand}
+
+\def\NewTotalTColorBox{%
+ \let\tcb@newcommand\NewDocumentCommand%
+ \let\tcb@process@newtcolorbox@continue\tcb@New@TotalTColorBox%
+ \tcb@process@newcommand}
+
+\def\RenewTotalTColorBox{%
+ \let\tcb@newcommand\RenewDocumentCommand%
+ \let\tcb@process@newtcolorbox@continue\tcb@New@TotalTColorBox%
+ \tcb@process@newcommand}
+
+\def\ProvideTotalTColorBox{%
+ \let\tcb@newcommand\ProvideDocumentCommand%
+ \let\tcb@process@newtcolorbox@continue\tcb@New@TotalTColorBox%
+ \tcb@process@newcommand}
+
+%-- tcbox --
+\long\def\tcb@New@TCBox#1#2#3{%
+ \expandafter\tcb@newcommand\csname#1\endcsname{#2}{\tcbox[#3,options@for=#1]}}
+
+\def\DeclareTCBox{%
+ \let\tcb@newcommand\DeclareDocumentCommand%
+ \let\tcb@process@newtcolorbox@continue\tcb@New@TCBox%
+ \tcb@process@newcommand}
+
+\def\NewTCBox{%
+ \let\tcb@newcommand\NewDocumentCommand%
+ \let\tcb@process@newtcolorbox@continue\tcb@New@TCBox%
+ \tcb@process@newcommand}
+
+\def\RenewTCBox{%
+ \let\tcb@newcommand\RenewDocumentCommand%
+ \let\tcb@process@newtcolorbox@continue\tcb@New@TCBox%
+ \tcb@process@newcommand}
+
+\def\ProvideTCBox{%
+ \let\tcb@newcommand\ProvideDocumentCommand%
+ \let\tcb@process@newtcolorbox@continue\tcb@New@TCBox%
+ \tcb@process@newcommand}
+
+%-- tcbox (total) --
+\long\def\tcb@New@TotalTCBox#1#2#3#4{%
+ \expandafter\tcb@newcommand\csname#1\endcsname{#2}{\tcbox[#3,options@for=#1]{#4}}}
+
+\def\DeclareTotalTCBox{%
+ \let\tcb@newcommand\DeclareDocumentCommand%
+ \let\tcb@process@newtcolorbox@continue\tcb@New@TotalTCBox%
+ \tcb@process@newcommand}
+
+\def\NewTotalTCBox{%
+ \let\tcb@newcommand\NewDocumentCommand%
+ \let\tcb@process@newtcolorbox@continue\tcb@New@TotalTCBox%
+ \tcb@process@newcommand}
+
+\def\RenewTotalTCBox{%
+ \let\tcb@newcommand\RenewDocumentCommand%
+ \let\tcb@process@newtcolorbox@continue\tcb@New@TotalTCBox%
+ \tcb@process@newcommand}
+
+\def\ProvideTotalTCBox{%
+ \let\tcb@newcommand\ProvideDocumentCommand%
+ \let\tcb@process@newtcolorbox@continue\tcb@New@TotalTCBox%
+ \tcb@process@newcommand}
+
+\DeclareTotalTCBox{\tcboxverb}{ O{} v }{verbatim,#1}{#2}
+
+%-- tcboxfit --
+\long\def\tcb@New@TCBoxFit#1#2#3{%
+ \expandafter\tcb@newcommand\csname#1\endcsname{#2}{\tcboxfit[#3,options@for=#1]}}
+
+\def\DeclareTCBoxFit{%
+ \let\tcb@newcommand\DeclareDocumentCommand%
+ \let\tcb@process@newtcolorbox@continue\tcb@New@TCBoxFit%
+ \tcb@process@newcommand}
+
+\def\NewTCBoxFit{%
+ \let\tcb@newcommand\NewDocumentCommand%
+ \let\tcb@process@newtcolorbox@continue\tcb@New@TCBoxFit%
+ \tcb@process@newcommand}
+
+\def\RenewTCBoxFit{%
+ \let\tcb@newcommand\RenewDocumentCommand%
+ \let\tcb@process@newtcolorbox@continue\tcb@New@TCBoxFit%
+ \tcb@process@newcommand}
+
+\def\ProvideTCBoxFit{%
+ \let\tcb@newcommand\ProvideDocumentCommand%
+ \let\tcb@process@newtcolorbox@continue\tcb@New@TCBoxFit%
+ \tcb@process@newcommand}
+
+\long\def\tcb@New@TotalTCBoxFit#1#2#3#4{%
+ \expandafter\tcb@newcommand\csname#1\endcsname{#2}{\tcboxfit[#3,options@for=#1]{#4}}}
+
+\def\DeclareTotalTCBoxFit{%
+ \let\tcb@newcommand\DeclareDocumentCommand%
+ \let\tcb@process@newtcolorbox@continue\tcb@New@TotalTCBoxFit%
+ \tcb@process@newcommand}
+
+\def\NewTotalTCBoxFit{%
+ \let\tcb@newcommand\NewDocumentCommand%
+ \let\tcb@process@newtcolorbox@continue\tcb@New@TotalTCBoxFit%
+ \tcb@process@newcommand}
+
+\def\RenewTotalTCBoxFit{%
+ \let\tcb@newcommand\RenewDocumentCommand%
+ \let\tcb@process@newtcolorbox@continue\tcb@New@TotalTCBoxFit%
+ \tcb@process@newcommand}
+
+\def\ProvideTotalTCBoxFit{%
+ \let\tcb@newcommand\ProvideDocumentCommand%
+ \let\tcb@process@newtcolorbox@continue\tcb@New@TotalTCBoxFit%
+ \tcb@process@newcommand}
+
+
+%-- tcblisting --
+\long\def\tcb@New@TCBListing#1#2#3{%
+ \tcb@newenvironment{#1}{#2}{\tcblisting{#3,options@for=#1}}{\endtcblisting}}
+
+\def\DeclareTCBListing{%
+ \let\tcb@newenvironment\DeclareDocumentEnvironment%
+ \let\tcb@process@newtcolorbox@continue\tcb@New@TCBListing%
+ \tcb@process@newenvironment}
+
+\def\NewTCBListing{%
+ \let\tcb@newenvironment\NewDocumentEnvironment%
+ \let\tcb@process@newtcolorbox@continue\tcb@New@TCBListing%
+ \tcb@process@newenvironment}
+
+\def\RenewTCBListing{%
+ \let\tcb@newenvironment\RenewDocumentEnvironment%
+ \let\tcb@process@newtcolorbox@continue\tcb@New@TCBListing%
+ \tcb@process@newenvironment}
+
+\def\ProvideTCBListing{%
+ \let\tcb@newenvironment\ProvideDocumentEnvironment%
+ \let\tcb@process@newtcolorbox@continue\tcb@New@TCBListing%
+ \tcb@process@newenvironment}
+
+%-- tcbinputlisting --
+\long\def\tcb@New@TCBInputListing#1#2#3{%
+ \expandafter\tcb@newcommand\csname#1\endcsname{#2}{\tcbinputlisting{#3,options@for=#1}}%
+}
+
+\def\DeclareTCBInputListing{%
+ \let\tcb@newcommand\DeclareDocumentCommand%
+ \let\tcb@process@newtcolorbox@continue\tcb@New@TCBInputListing%
+ \tcb@process@newcommand}
+
+\def\NewTCBInputListing{%
+ \let\tcb@newcommand\NewDocumentCommand%
+ \let\tcb@process@newtcolorbox@continue\tcb@New@TCBInputListing%
+ \tcb@process@newcommand}
+
+\def\RenewTCBInputListing{%
+ \let\tcb@newcommand\RenewDocumentCommand%
+ \let\tcb@process@newtcolorbox@continue\tcb@New@TCBInputListing%
+ \tcb@process@newcommand}
+
+\def\ProvideTCBInputListing{%
+ \let\tcb@newcommand\ProvideDocumentCommand%
+ \let\tcb@process@newtcolorbox@continue\tcb@New@TCBInputListing%
+ \tcb@process@newcommand}
+
+
+%-- sidebyside --
+
+\def\tcb@sbs@content@none{\tcb@sbs@text@left\tcblower\tcb@sbs@text@right}
+\def\tcb@sbs@content@left{\box\tcb@upperbox\tcblower\tcb@sbs@text@right}
+\def\tcb@sbs@content@right{\tcb@sbs@text@left\tcblower\box\tcb@lowerbox}
+\def\tcb@sbs@content@both{\box\tcb@upperbox\tcblower\box\tcb@lowerbox}
+
+\tcbset{%
+ sidebyside adapt/.is choice,
+ sidebyside adapt/none/.style={%
+ sidebyside@adapt@process/.style={%
+ code={\let\tcb@sbs@content\tcb@sbs@content@none},
+ }%
+ },
+ sidebyside adapt/left/.style={%
+ sidebyside@adapt@process/.style={%
+ code={\sbox{\tcb@upperbox}{\tcb@sbs@text@left}\let\tcb@sbs@content\tcb@sbs@content@left},
+ lefthand width=\wd\tcb@upperbox,
+ }%
+ },
+ sidebyside adapt/right/.style={%
+ sidebyside@adapt@process/.style={%
+ code={\sbox{\tcb@lowerbox}{\tcb@sbs@text@right}\let\tcb@sbs@content\tcb@sbs@content@right},
+ righthand width=\wd\tcb@lowerbox,
+ }%
+ },
+ sidebyside adapt/both/.style={%
+ sidebyside@adapt@process/.style={%
+ code={\sbox{\tcb@upperbox}{\tcb@sbs@text@left}\sbox{\tcb@lowerbox}{\tcb@sbs@text@right}\let\tcb@sbs@content\tcb@sbs@content@both},
+ text width=\wd\tcb@upperbox+\kvtcb@sbs@gap+\wd\tcb@lowerbox,
+ lefthand width=\wd\tcb@upperbox,
+ }%
+ },
+ %
+ sidebyside switch/.is choice,
+ sidebyside switch/true/.style={%
+ sidebyside@switch/.code={%
+ \tcb@swap{\tcb@sbs@text@left}{\tcb@sbs@text@right}
+ }%
+ },
+ sidebyside switch/false/.style={%
+ sidebyside@switch/.style=%
+ },
+ sidebyside switch/.default=true
+}
+
+
+\DeclareTotalTColorBox{\tcbsidebyside}{ +O{} +m +m }{%
+ code={\long\def\tcb@sbs@text@left{#2}\long\def\tcb@sbs@text@right{#3}},%
+ #1,%
+ sidebyside,%
+ sidebyside@switch,sidebyside@adapt@process%
+}{\tcb@sbs@content}
+
+
+\tcbset{%
+ reset@xparse/.style={%
+ sidebyside adapt=none,sidebyside switch=false,%
+ },
+ initialize@reset=reset@xparse,
+}
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.pdf b/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.pdf
new file mode 100644
index 0000000000..6745fadb2b
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.pdf
Binary files differ
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.tex b/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.tex
new file mode 100644
index 0000000000..4cd8461954
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.tex
@@ -0,0 +1,177 @@
+%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% tcolorbox-example-poster.tex: a poster example for tcolorbox
+%%
+%% -------------------------------------------------------------------------------------------
+%% 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
+%%
+% arara: pdflatex: { shell: yes }
+% arara: pdflatex: { shell: yes }
+\documentclass[12pt]{article}
+
+\usepackage[a3paper,landscape]{geometry}
+\usepackage{lipsum}
+\usepackage{lmodern}
+\usepackage{enumerate}
+
+\usepackage[poster]{tcolorbox}
+\tcbuselibrary{minted} % <- replace by \tcbuselibrary{listings}, if minted does not work for you
+
+\pagestyle{empty}
+
+\begin{document}
+\begin{tcbposter}[
+ coverage = {
+ spread,
+ interior style={top color=yellow,bottom color=yellow!50!red},
+ watermark text={\LaTeX\ Poster},
+ watermark color=yellow,
+ },
+ poster = {showframe=false,columns=4,rows=5},
+ boxes = {
+ enhanced standard jigsaw,sharp corners=downhill,arc=3mm,boxrule=1mm,
+ colback=white,opacityback=0.75,colframe=blue,
+ title style={left color=black,right color=cyan},
+ fonttitle=\bfseries\Large\scshape
+ }
+]
+
+%----
+\posterbox[blankest,interior engine=path,height=3cm,
+ halign=center,valign=center,fontupper=\bfseries\large,colupper=red!25!black,
+ underlay={
+ \node[right,inner sep=0pt,outer sep=0pt] at (frame.west) {\includegraphics[height=3cm]{pink_marble.png}};
+ \node[left,inner sep=0pt,outer sep=0pt] at (frame.east) {\includegraphics[height=3cm]{crinklepaper.png}};
+ },
+ ]{name=title,column=1,span=3,below=top}{
+ \resizebox{18cm}{!}{\bfseries\Huge My Important Project}\\[3mm]
+ Hans.Mustermann@deepthought.university
+}
+
+%----
+\posterbox[adjusted title=References]{name=references,column=2,span=1.5,above=bottom}{
+ \begin{enumerate}[{[1]}]
+ \item\label{litA} Important Authors, \textit{Important Title}
+ \item\label{litB} More Important Authors, \textit{More Important Title}
+ \item\label{litC} Less Important Authors, \textit{Less Important Title}
+ \end{enumerate}
+}
+
+%----
+\posterbox[adjusted title=Process,halign=center]{name=process,column=2,span=2,above=references}{
+ \begin{tikzpicture}[very thick,radius=2cm]
+ \begin{scope}
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0) arc [start angle=0, end angle=30];
+ \end{scope}
+ \begin{scope}[xshift=5cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0) arc [start angle=0, end angle=70];
+ \end{scope}
+ \begin{scope}[xshift=10cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0) arc [start angle=0, end angle=110];
+ \end{scope}
+ \begin{scope}[xshift=15cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0) arc [start angle=0, end angle=240];
+ \end{scope}
+ \end{tikzpicture}
+}
+
+%----
+\posterbox[adjusted title=Project Description]{name=project,
+ sequence=1 between title and bottom then 2 between title and process}{
+ See [\ref{litA}]: \lipsum[1]
+ \begin{center}
+ \tikz \draw[thick,rounded corners=8pt]
+ (0,0)--(0,2)--(1,3.25)--(2,2)--(2,0)--(0,2)--(2,2)--(0,0)--(2,0);
+ \quad by [\ref{litB}]
+ \end{center}
+ \lipsum[2-3]\par
+ See [\ref{litC}]:
+ \lipsum[4]
+ \begin{center}
+ \tikz \shadedraw [left color=red,right color=blue]
+ (0,0) rectangle (2,2);
+ \end{center}
+ That's all.
+}
+
+%----
+\posterbox[adjusted title=Central Picture,
+ interior style={fill overzoom image=blueshade.png}]
+ {name=picture,column=3,between=title and process}{}
+
+%----
+\begin{posterboxenv}[adjusted title=Core Algorithm,leftupper=0pt,rightupper=0pt]
+ {name=algorithm,column=4,between=top and references}
+\begin{tcblisting}{blankest,listing only}
+\begin{tikzpicture}[very thick,radius=2cm]
+ \begin{scope}
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0)
+ arc [start angle=0, end angle=30];
+ \end{scope}
+ \begin{scope}[xshift=5cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0)
+ arc [start angle=0, end angle=70];
+ \end{scope}
+ \begin{scope}[xshift=10cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0)
+ arc [start angle=0, end angle=110];
+ \end{scope}
+ \begin{scope}[xshift=15cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0)
+ arc [start angle=0, end angle=240];
+ \end{scope}
+\end{tikzpicture}
+
+\begin{tikzpicture}[very thick,radius=1cm]
+ \begin{scope}
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0)
+ arc [start angle=0, end angle=30];
+ \end{scope}
+ \begin{scope}[xshift=5cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0)
+ arc [start angle=0, end angle=70];
+ \end{scope}
+ \begin{scope}[xshift=10cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0)
+ arc [start angle=0, end angle=110];
+ \end{scope}
+ \begin{scope}[xshift=15cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0)
+ arc [start angle=0, end angle=240];
+ \end{scope}
+\end{tikzpicture}
+\end{tcblisting}
+\end{posterboxenv}
+
+%----
+\posterbox[adjusted title=Contact,fit,fit basedim=12pt]
+ {name=contact,column*=4,span=1.5,between=process and bottom}{
+ \lipsum[2]
+}
+
+\end{tcbposter}
+\end{document}
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox-example.pdf b/macros/latex/contrib/tcolorbox/tcolorbox-example.pdf
new file mode 100644
index 0000000000..ea5dc03ad1
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox-example.pdf
Binary files differ
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox-example.tex b/macros/latex/contrib/tcolorbox/tcolorbox-example.tex
new file mode 100644
index 0000000000..64bd2eaced
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox-example.tex
@@ -0,0 +1,230 @@
+%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% tcolorbox-example.tex: an example for tcolorbox
+%%
+%% -------------------------------------------------------------------------------------------
+%% 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
+%%
+\documentclass{article}
+\usepackage{tikz,lipsum,lmodern}
+\usepackage[most]{tcolorbox}
+
+\begin{document}
+
+%----------------------------------------------------------
+\section{Colored boxes}
+
+\begin{tcolorbox}[colback=red!5!white,colframe=red!75!black]
+ My box.
+\end{tcolorbox}
+
+\begin{tcolorbox}[colback=blue!5!white,colframe=blue!75!black,title=My title]
+ My box with my title.
+\end{tcolorbox}
+
+\begin{tcolorbox}[colback=green!5!white,colframe=green!75!black]
+ Upper part of my box.
+ \tcblower
+ Lower part of my box.
+\end{tcolorbox}
+
+\begin{tcolorbox}[colback=yellow!5!white,colframe=yellow!50!black,
+ colbacktitle=yellow!75!black,title=My title]
+ I can do this also with a title.
+ \tcblower
+ Lower part of my box.
+\end{tcolorbox}
+
+\begin{tcolorbox}[colback=yellow!10!white,colframe=red!75!black,lowerbox=invisible,
+ savelowerto=\jobname_ex.tex]
+ Now, we play hide and seek. Where is the lower part?
+ \tcblower
+ I'm invisible until you find me.
+\end{tcolorbox}
+
+\begin{tcolorbox}[colback=yellow!10!white,colframe=red!75!black,title=Here I am]
+ \input{\jobname_ex.tex}
+\end{tcolorbox}
+
+
+\begin{tcolorbox}[enhanced,sharp corners=uphill,
+ colback=blue!50!white,colframe=blue!25!black,coltext=yellow,
+ fontupper=\Large\bfseries,arc=6mm,boxrule=2mm,boxsep=5mm,
+ borderline={0.3mm}{0.3mm}{white}]
+ Funny settings.
+\end{tcolorbox}
+
+
+\begin{tcolorbox}[enhanced,frame style image=blueshade.png,
+ opacityback=0.75,opacitybacktitle=0.25,
+ colback=blue!5!white,colframe=blue!75!black,
+ title=My title]
+ This box is filled with an external image.\par
+ Title and interior are made partly transparent to show the image.
+\end{tcolorbox}
+
+
+\begin{tcolorbox}[enhanced,attach boxed title to top center={yshift=-3mm,yshifttext=-1mm},
+ colback=blue!5!white,colframe=blue!75!black,colbacktitle=red!80!black,
+ title=My title,fonttitle=\bfseries,
+ boxed title style={size=small,colframe=red!50!black} ]
+ This box uses a \textit{boxed title}. The box of the title can
+ be formatted independently from the main box.
+\end{tcolorbox}
+
+
+\clearpage
+%----------------------------------------------------------
+\section{\LaTeX-Examples}
+
+\begin{tcblisting}{colback=red!5!white,colframe=red!75!black}
+This is a \LaTeX\ example:
+\begin{equation}
+\sum\limits_{i=1}^n i = \frac{n(n+1)}{2}.
+\end{equation}
+\end{tcblisting}
+
+
+\begin{tcblisting}{colback=red!5!white,colframe=red!75!black,listing side text,
+ title=Side by side,fonttitle=\bfseries}
+This is a \LaTeX\ example:
+\begin{equation}
+\sum\limits_{i=1}^n i = \frac{n(n+1)}{2}.
+\end{equation}
+\end{tcblisting}
+
+
+%----------------------------------------------------------
+\section{Theorems}
+
+\newtcbtheorem[auto counter,number within=section]{theo}%
+ {Theorem}{fonttitle=\bfseries\upshape, fontupper=\slshape,
+ arc=0mm, colback=blue!5!white,colframe=blue!75!black}{theorem}
+
+\begin{theo}{Summation of Numbers}{summation}
+ For all natural number $n$ it holds:
+ \begin{equation}
+ \tcbhighmath{\sum\limits_{i=1}^n i = \frac{n(n+1)}{2}.}
+ \end{equation}
+\end{theo}
+
+We have given Theorem \ref{theorem:summation} on page \pageref{theorem:summation}.
+
+\newtcbtheorem[use counter from=theo]{antheo}%
+ {Theorem}{theorem style=change,oversize,enlarge top by=1mm,enlarge bottom by=1mm,
+ enhanced jigsaw,interior hidden,fuzzy halo=1mm with green,
+ fonttitle=\bfseries\upshape,fontupper=\slshape,
+ colframe=green!75!black,coltitle=green!50!blue!75!black}{antheorem}
+
+\begin{antheo}{Summation of Numbers}{summation}
+ For all natural number $n$ it holds:
+ \begin{equation}
+ \tcbhighmath{\sum\limits_{i=1}^n i = \frac{n(n+1)}{2}.}
+ \end{equation}
+\end{antheo}
+
+%----------------------------------------------------------
+\section{Watermarks}
+
+\begin{tcolorbox}[enhanced,watermark graphics=Basilica_5.png,
+ watermark opacity=0.3,watermark zoom=0.9,
+ colback=green!5!white,colframe=green!75!black,
+ fonttitle=\bfseries, title=Box with a watermark picture]
+ Here, you see my nice box with a picture as a watermark.
+ This picture is automatically resized to fit the dimensions
+ of my box. Instead of a picure, some text could be used or
+ arbitrary graphical code. See the documentation for more options.
+\end{tcolorbox}
+
+%----------------------------------------------------------
+\section{Boxes in boxes}
+\begin{tcolorbox}[colback=yellow!10!white,colframe=yellow!50!black,
+ every box/.style={fonttitle=\bfseries},title=Box]
+ \begin{tcolorbox}[enhanced,colback=red!10!white,colframe=red!50!black,
+ colbacktitle=red!85!black,
+ title=Box inside box,drop fuzzy shadow]
+ \begin{tcolorbox}[beamer,colframe=blue!50!black,title=Box inside box inside box]
+ And now for something completely different: Boxes!\par\medskip
+ \newtcbox{\mybox}[1][]{nobeforeafter,tcbox raise base,colframe=green!50!black,colback=green!10!white,
+ sharp corners,top=1pt,bottom=1pt,before upper=\strut,#1}
+ \mybox[rounded corners=west]{This} \mybox{is} \mybox{another} \mybox[rounded corners=east]{box.}
+ \end{tcolorbox}
+ \end{tcolorbox}
+\end{tcolorbox}
+
+
+
+%----------------------------------------------------------
+\section{Breakable Boxes}
+\begin{tcolorbox}[enhanced jigsaw,breakable,pad at break*=1mm,
+ colback=blue!5!white,colframe=blue!75!black,title=Breakable box,
+ watermark color=white,watermark text=\Roman{tcbbreakpart}]
+ \lipsum[1-12]
+\end{tcolorbox}
+
+%----------------------------------------------------------
+\clearpage
+\section{Fit Boxes}
+
+\begin{tcolorbox}[enhanced,fit to height=10cm,
+ colback=green!25!black!10!white,colframe=green!75!black,title=Fit box (10cm),
+ drop fuzzy shadow,watermark color=white,watermark text=Fit]
+ \lipsum[1-4]
+\end{tcolorbox}
+
+\begin{tcolorbox}[enhanced,fit to height=5cm,
+ colback=green!25!black!10!white,colframe=green!75!black,title=Fit box (5cm),
+ drop fuzzy shadow,watermark color=white,watermark text=Fit]
+ \lipsum[1-4]
+\end{tcolorbox}
+
+%----------------------------------------------------------
+\begin{tcolorbox}[tile,size=fbox,boxsep=2mm,boxrule=0pt,
+ colback=blue!20!black,colbacktitle=yellow!40!black,
+ phantom={\thispagestyle{empty}},
+ title=\section{Rasters of Boxes},spread=-1cm]
+ \begin{tcbitemize}[raster columns=3,raster rows=4,raster equal skip=2mm,
+ raster height=\tcbtextheight,
+ title={Box~\thetcbrasternum},fonttitle=\bfseries,
+ enhanced,colframe=blue!50,colback=blue!5]
+ \tcbitem A
+ \tcbitem[flip title={interior hidden}] B
+ \tcbitem[colbacktitle=blue!40!black] C
+ \tcbitem[colbacktitle=blue!40!black,flip title] D
+ \tcbitem[beamer] E
+ \tcbitem[tile,colbacktitle=red!40!black] F
+ \tcbitem[tile,colbacktitle=red!40!black,flip title={sharp corners}] G
+ \tcbitem[blankest]
+ \begin{tcbitemize}[raster columns=2,raster rows=2,raster height=\tcbtextheight,
+ tile,halign=center,valign=center,fontupper=\bfseries\Huge,before upper=\strut,
+ colback=green!20]
+ \tcbitem a
+ \tcbitem b
+ \tcbitem c
+ \tcbitem d
+ \end{tcbitemize}
+ \tcbitem[widget] I
+ \tcbitem[frame style image=goldshade,opacityback=0.5,colback=white] J
+ \tcbitem[frame style image=blueshade,opacityback=0.5,colback=white,
+ center title,flip title={frame hidden,opacityback=0.25,colback=black}] K
+ \tcbitem[octogon arc,arc is angular,halign=center,valign=center,
+ detach title,watermark text={\tcbtitletext}] L
+ \end{tcbitemize}
+\end{tcolorbox}
+
+
+
+\end{document}
+
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.pdf b/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.pdf
new file mode 100644
index 0000000000..67a36b97eb
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.pdf
Binary files differ
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.tex b/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.tex
new file mode 100644
index 0000000000..11d6d47954
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.tex
@@ -0,0 +1,1383 @@
+% \LaTeX-Main\
+%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% tcolorbox-tutorial-poster.tex: a tutorial for poster creation with tcolorbox
+%%
+%% -------------------------------------------------------------------------------------------
+%% 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
+%%
+% arara: pdflatex: { shell: yes }
+% arara: pdflatex: { shell: yes }
+\documentclass[12pt]{article}
+
+\usepackage[a3paper,landscape]{geometry}
+\usepackage{lipsum}
+\usepackage{lmodern}
+\usepackage{enumerate}
+
+\usepackage[poster]{tcolorbox}
+\tcbuselibrary{minted} % <- replace by \tcbuselibrary{listings}, if minted does not work for you
+
+\pagestyle{empty}
+
+
+\newtcolorbox[auto counter]{guide}[1][]{enhanced jigsaw,inherit height,
+ colback=red!5,opacityback=0.9,colframe=red,title=Poster Tutorial \#\thetcbcounter,
+ grow to left by=8mm,grow to right by=8mm,
+ arc is angular,arc=3mm,
+ fonttitle=\bfseries\large,
+ fuzzy halo=4mm with blue!50!red,#1
+}
+
+\tcbset{
+ mylisting/.style={enhanced jigsaw,size=minimal,toprule=0.5mm,bottomrule=0.5mm,boxsep=2mm,oversize,
+ colback=white,opacityback=0.75,listing only}
+}
+
+\newtcblisting{guidelisting}[1]{mylisting,#1}
+
+
+\begin{document}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\begin{tcbposter}[
+ coverage = {spread},
+ poster = {showframe,columns=4,rows=5},
+]
+
+
+\begin{posterboxenv}[blankest]{column=2,span=2,at=middle}
+\begin{guide}[toptitle=3mm,before title={\begin{center}
+Thomas F.~Sturm\\
+\Large A Tutorial for Poster Creation with Tcolorbox
+\end{center}}]
+Welcome to the poster tutorial!
+\tcbline
+We start at the very begin with an empty poster.\par\medskip
+In this tutorial, we use A3 sized paper in landscape format which can
+be set up with the \texttt{geometry} package.
+Naturally, we need the \texttt{tcolorbox} package with at least the
+\texttt{poster} library loaded.\par
+At begin, we only choose the number of columns (4) and rows (5) and
+we display a help grid.\par\medskip
+
+\begin{guidelisting}{}
+\documentclass[12pt]{article}
+\usepackage[a3paper,landscape]{geometry}
+\usepackage[poster]{tcolorbox}
+\pagestyle{empty}
+
+\begin{document}
+\begin{tcbposter}[
+ coverage = {spread},
+ poster = {showframe,columns=4,rows=5},
+]
+% Here, we insert the poster content later
+\end{tcbposter}
+\end{document}
+\end{guidelisting}
+\end{guide}
+\end{posterboxenv}
+
+\end{tcbposter}
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\begin{tcbposter}[
+ coverage = {
+ spread,
+ interior style={top color=yellow,bottom color=yellow!50!red},
+ watermark text={\LaTeX\ Poster},
+ watermark color=yellow,
+ },
+ poster = {showframe,columns=4,rows=5},
+]
+
+\begin{posterboxenv}[blankest]{column=2,span=2,above=bottom}
+\begin{guide}
+Now, we put in some fancy settings to the poster \texttt{coverage}.\par
+Also, some more packages are loaded for the future poster content.
+\par\medskip
+
+\begin{guidelisting}{}
+\documentclass[12pt]{article}
+\usepackage[a3paper,landscape]{geometry}
+\usepackage{lipsum}
+\usepackage{lmodern}
+\usepackage{enumerate}
+\usepackage[poster]{tcolorbox}
+\tcbuselibrary{minted} % <- replace by \tcbuselibrary{listings}, if minted does not work for you
+\pagestyle{empty}
+
+\begin{document}
+\begin{tcbposter}[
+ coverage = {
+ spread,
+ interior style={top color=yellow,bottom color=yellow!50!red},
+ watermark text={\LaTeX\ Poster},
+ watermark color=yellow,
+ },
+ poster = {showframe,columns=4,rows=5},
+]
+% Here, we insert the poster content later
+\end{tcbposter}
+\end{document}
+\end{guidelisting}
+\end{guide}
+\end{posterboxenv}
+
+\end{tcbposter}
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\begin{tcbposter}[
+ coverage = {
+ spread,
+ interior style={top color=yellow,bottom color=yellow!50!red},
+ watermark text={\LaTeX\ Poster},
+ watermark color=yellow,
+ },
+ poster = {showframe,columns=4,rows=5},
+]
+
+%----
+\posterbox{name=title,column=1,span=3,below=top}{
+ \resizebox{18cm}{!}{\bfseries\Huge My Important Project}\\[3mm]
+ Hans.Mustermann@deepthought.university
+}
+
+%----
+\posterbox[adjusted title=References]{name=references,column=2,span=1.5,above=bottom}{
+}
+
+%----
+\posterbox[adjusted title=Process]{name=process,column=2,span=2,above=references}{
+}
+
+%----
+\posterbox[adjusted title=Project Description]{name=project,
+ sequence=1 between title and bottom then 2 between title and process}{
+}
+
+%----
+\posterbox[adjusted title=Central Picture]
+ {name=picture,column=3,between=title and process}{}
+
+%----
+\begin{posterboxenv}[adjusted title=Core Algorithm]
+ {name=algorithm,column=4,between=top and references}
+\end{posterboxenv}
+
+%----
+\posterbox[adjusted title=Contact]
+ {name=contact,column*=4,span=1.5,between=process and bottom}{
+}
+
+\begin{posterboxenv}[blankest]{column=3,span=2,at=middle}
+\begin{guide}
+It is time to fill boxes into the \texttt{poster} environment.
+This is the most crucial part of your poster creation, because you have
+to decide about the general contents and the base design.\par
+But, as you can see in the listing below, the boxes are placed with
+relative positions to each other and the sizes are able to change
+automatically.
+\par\medskip
+
+\begin{guidelisting}{}
+%...
+\posterbox{name=title,column=1,span=3,below=top}{
+ \resizebox{18cm}{!}{\bfseries\Huge My Important Project}\\[3mm]
+ Hans.Mustermann@deepthought.university
+}
+
+\posterbox[adjusted title=References]{name=references,column=2,span=1.5,above=bottom}{}
+
+\posterbox[adjusted title=Process]{name=process,column=2,span=2,above=references}{}
+
+\posterbox[adjusted title=Project Description]{name=project,
+ sequence=1 between title and bottom then 2 between title and process}{}
+
+\posterbox[adjusted title=Central Picture]
+ {name=picture,column=3,between=title and process}{}
+
+\posterbox[adjusted title=Core Algorithm]
+ {name=algorithm,column=4,between=top and references}{}
+
+\posterbox[adjusted title=Contact]
+ {name=contact,column*=4,span=1.5,between=process and bottom}{}
+%...
+\end{guidelisting}
+\medskip
+The \texttt{project} box is made breakable. Note the two parts
+\texttt{project1} and \texttt{project2} where the second part is
+denoted by a placeholder.
+\end{guide}
+\end{posterboxenv}
+\end{tcbposter}
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{tcbposter}[
+ coverage = {
+ spread,
+ interior style={top color=yellow,bottom color=yellow!50!red},
+ watermark text={\LaTeX\ Poster},
+ watermark color=yellow,
+ },
+ poster = {showframe=false,columns=4,rows=5},
+ boxes = {
+ enhanced standard jigsaw,sharp corners=downhill,arc=3mm,boxrule=1mm,
+ colback=white,opacityback=0.75,colframe=blue,
+ title style={left color=black,right color=cyan},
+ fonttitle=\bfseries\Large\scshape
+ }
+]
+
+%----
+\posterbox{name=title,column=1,span=3,below=top}{
+ \resizebox{18cm}{!}{\bfseries\Huge My Important Project}\\[3mm]
+ Hans.Mustermann@deepthought.university
+}
+
+%----
+\posterbox[adjusted title=References]{name=references,column=2,span=1.5,above=bottom}{
+}
+
+%----
+\posterbox[adjusted title=Process]{name=process,column=2,span=2,above=references}{
+}
+
+%----
+\posterbox[adjusted title=Project Description]{name=project,
+ sequence=1 between title and bottom then 2 between title and process}{
+}
+
+%----
+\posterbox[adjusted title=Central Picture]
+ {name=picture,column=3,between=title and process}{}
+
+%----
+\begin{posterboxenv}[adjusted title=Core Algorithm]
+ {name=algorithm,column=4,between=top and references}
+\end{posterboxenv}
+
+%----
+\posterbox[adjusted title=Contact]
+ {name=contact,column*=4,span=1.5,between=process and bottom}{
+}
+
+\begin{posterboxenv}[blankest]{column=3,span=2,at=middle}
+\begin{guide}
+As next step, we choose some nice settings for all the boxes. These
+global settings are applied using the \texttt{boxes} option of
+the poster.\par
+Also, we do not need the auxiliary frame lines anymore and we set
+\texttt{showframe=false}.
+\par\medskip
+
+\begin{guidelisting}{}
+%...
+\begin{tcbposter}[
+ coverage = {
+ spread,
+ interior style={top color=yellow,bottom color=yellow!50!red},
+ watermark text={\LaTeX\ Poster},
+ watermark color=yellow,
+ },
+ poster = {showframe=false,columns=4,rows=5},
+ boxes = {
+ enhanced standard jigsaw,sharp corners=downhill,arc=3mm,boxrule=1mm,
+ colback=white,opacityback=0.75,colframe=blue,
+ title style={left color=black,right color=cyan},
+ fonttitle=\bfseries\Large\scshape
+ }
+]
+%...
+\end{guidelisting}
+\end{guide}
+\end{posterboxenv}
+\end{tcbposter}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{tcbposter}[
+ coverage = {
+ spread,
+ interior style={top color=yellow,bottom color=yellow!50!red},
+ watermark text={\LaTeX\ Poster},
+ watermark color=yellow,
+ },
+ poster = {showframe=false,columns=4,rows=5},
+ boxes = {
+ enhanced standard jigsaw,sharp corners=downhill,arc=3mm,boxrule=1mm,
+ colback=white,opacityback=0.75,colframe=blue,
+ title style={left color=black,right color=cyan},
+ fonttitle=\bfseries\Large\scshape
+ }
+]
+
+%----
+\posterbox[blankest,interior engine=path,height=3cm,
+ halign=center,valign=center,fontupper=\bfseries\large,colupper=red!25!black,
+ underlay={
+ \node[right,inner sep=0pt,outer sep=0pt] at (frame.west) {\includegraphics[height=3cm]{pink_marble.png}};
+ \node[left,inner sep=0pt,outer sep=0pt] at (frame.east) {\includegraphics[height=3cm]{crinklepaper.png}};
+ },
+ ]{name=title,column=1,span=3,below=top}{
+ \resizebox{18cm}{!}{\bfseries\Huge My Important Project}\\[3mm]
+ Hans.Mustermann@deepthought.university
+}
+
+%----
+\posterbox[adjusted title=References]{name=references,column=2,span=1.5,above=bottom}{
+}
+
+%----
+\posterbox[adjusted title=Process]{name=process,column=2,span=2,above=references}{
+}
+
+%----
+\posterbox[adjusted title=Project Description]{name=project,
+ sequence=1 between title and bottom then 2 between title and process}{
+}
+
+%----
+\posterbox[adjusted title=Central Picture]
+ {name=picture,column=3,between=title and process}{}
+
+%----
+\begin{posterboxenv}[adjusted title=Core Algorithm]
+ {name=algorithm,column=4,between=top and references}
+\end{posterboxenv}
+
+%----
+\posterbox[adjusted title=Contact]
+ {name=contact,column*=4,span=1.5,between=process and bottom}{
+}
+
+\begin{posterboxenv}[blankest]{column=2,span=2,below=title,yshift=-5mm}
+\begin{guide}[grow to left by=8mm,grow to right by=8mm,]
+We make the \texttt{title} box different from the other boxes by removing
+everything except the background. Also, two pictures are added left and
+right which should be seen as logos or similar things.
+\par\medskip
+
+\begin{guidelisting}{}
+%...
+\posterbox[blankest,interior engine=path,height=3cm,
+ halign=center,valign=center,fontupper=\bfseries\large,colupper=red!25!black,
+ underlay={
+ \node[right,inner sep=0pt,outer sep=0pt] at (frame.west) {\includegraphics[height=3cm]{pink_marble.png}};
+ \node[left,inner sep=0pt,outer sep=0pt] at (frame.east) {\includegraphics[height=3cm]{crinklepaper.png}};
+ },
+ ]{name=title,column=1,span=3,below=top}{
+ \resizebox{18cm}{!}{\bfseries\Huge My Important Project}\\[3mm]
+ Hans.Mustermann@deepthought.university
+}
+%...
+\end{guidelisting}
+\end{guide}
+\end{posterboxenv}
+\end{tcbposter}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{tcbposter}[
+ coverage = {
+ spread,
+ interior style={top color=yellow,bottom color=yellow!50!red},
+ watermark text={\LaTeX\ Poster},
+ watermark color=yellow,
+ },
+ poster = {showframe=false,columns=4,rows=5},
+ boxes = {
+ enhanced standard jigsaw,sharp corners=downhill,arc=3mm,boxrule=1mm,
+ colback=white,opacityback=0.75,colframe=blue,
+ title style={left color=black,right color=cyan},
+ fonttitle=\bfseries\Large\scshape
+ }
+]
+
+%----
+\posterbox[blankest,interior engine=path,height=3cm,
+ halign=center,valign=center,fontupper=\bfseries\large,colupper=red!25!black,
+ underlay={
+ \node[right,inner sep=0pt,outer sep=0pt] at (frame.west) {\includegraphics[height=3cm]{pink_marble.png}};
+ \node[left,inner sep=0pt,outer sep=0pt] at (frame.east) {\includegraphics[height=3cm]{crinklepaper.png}};
+ },
+ ]{name=title,column=1,span=3,below=top}{
+ \resizebox{18cm}{!}{\bfseries\Huge My Important Project}\\[3mm]
+ Hans.Mustermann@deepthought.university
+}
+
+%----
+\posterbox[adjusted title=References]{name=references,column=2,span=1.5,above=bottom}{
+ \begin{enumerate}[{[1]}]
+ \item\label{litA} Important Authors, \textit{Important Title}
+ \item\label{litB} More Important Authors, \textit{More Important Title}
+ \item\label{litC} Less Important Authors, \textit{Less Important Title}
+ \end{enumerate}
+}
+
+%----
+\posterbox[adjusted title=Process]{name=process,column=2,span=2,above=references}{
+}
+
+%----
+\posterbox[adjusted title=Project Description]{name=project,
+ sequence=1 between title and bottom then 2 between title and process}{
+}
+
+%----
+\posterbox[adjusted title=Central Picture]
+ {name=picture,column=3,between=title and process}{}
+
+%----
+\begin{posterboxenv}[adjusted title=Core Algorithm]
+ {name=algorithm,column=4,between=top and references}
+\end{posterboxenv}
+
+%----
+\posterbox[adjusted title=Contact]
+ {name=contact,column*=4,span=1.5,between=process and bottom}{
+}
+
+\begin{posterboxenv}[blankest]{column=2,span=2,above=references,yshift=5mm}
+\begin{guide}
+The \texttt{references} box is filled with a simple \texttt{enumerate} list.\par
+You may insert a more fancier and \LaTeX ier bibliography for your real project \ldots
+\par\medskip
+
+\begin{guidelisting}{}
+%...
+\posterbox[adjusted title=References]{name=references,column=2,span=1.5,above=bottom}{
+ \begin{enumerate}[{[1]}]
+ \item\label{litA} Important Authors, \textit{Important Title}
+ \item\label{litB} More Important Authors, \textit{More Important Title}
+ \item\label{litC} Less Important Authors, \textit{Less Important Title}
+ \end{enumerate}
+}
+%...
+\end{guidelisting}
+\medskip
+Surely, you noted that all boxes adapt to the grown height of our
+\texttt{references} box. Maybe, you want to get some pages back to see
+how the box placements were done for this example.
+\end{guide}
+\end{posterboxenv}
+\end{tcbposter}
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{tcbposter}[
+ coverage = {
+ spread,
+ interior style={top color=yellow,bottom color=yellow!50!red},
+ watermark text={\LaTeX\ Poster},
+ watermark color=yellow,
+ },
+ poster = {showframe=false,columns=4,rows=5},
+ boxes = {
+ enhanced standard jigsaw,sharp corners=downhill,arc=3mm,boxrule=1mm,
+ colback=white,opacityback=0.75,colframe=blue,
+ title style={left color=black,right color=cyan},
+ fonttitle=\bfseries\Large\scshape
+ }
+]
+
+%----
+\posterbox[blankest,interior engine=path,height=3cm,
+ halign=center,valign=center,fontupper=\bfseries\large,colupper=red!25!black,
+ underlay={
+ \node[right,inner sep=0pt,outer sep=0pt] at (frame.west) {\includegraphics[height=3cm]{pink_marble.png}};
+ \node[left,inner sep=0pt,outer sep=0pt] at (frame.east) {\includegraphics[height=3cm]{crinklepaper.png}};
+ },
+ ]{name=title,column=1,span=3,below=top}{
+ \resizebox{18cm}{!}{\bfseries\Huge My Important Project}\\[3mm]
+ Hans.Mustermann@deepthought.university
+}
+
+%----
+\posterbox[adjusted title=References]{name=references,column=2,span=1.5,above=bottom}{
+ \begin{enumerate}[{[1]}]
+ \item\label{litA} Important Authors, \textit{Important Title}
+ \item\label{litB} More Important Authors, \textit{More Important Title}
+ \item\label{litC} Less Important Authors, \textit{Less Important Title}
+ \end{enumerate}
+}
+
+%----
+\posterbox[adjusted title=Process,halign=center]{name=process,column=2,span=2,above=references}{
+ \begin{tikzpicture}[very thick,radius=2cm]
+ \begin{scope}
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0) arc [start angle=0, end angle=30];
+ \end{scope}
+ \begin{scope}[xshift=5cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0) arc [start angle=0, end angle=70];
+ \end{scope}
+ \begin{scope}[xshift=10cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0) arc [start angle=0, end angle=110];
+ \end{scope}
+ \begin{scope}[xshift=15cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0) arc [start angle=0, end angle=240];
+ \end{scope}
+ \end{tikzpicture}
+}
+
+%----
+\posterbox[adjusted title=Project Description]{name=project,
+ sequence=1 between title and bottom then 2 between title and process}{
+}
+
+%----
+\posterbox[adjusted title=Central Picture]
+ {name=picture,column=3,between=title and process}{}
+
+%----
+\begin{posterboxenv}[adjusted title=Core Algorithm]
+ {name=algorithm,column=4,between=top and references}
+\end{posterboxenv}
+
+%----
+\posterbox[adjusted title=Contact]
+ {name=contact,column*=4,span=1.5,between=process and bottom}{
+}
+
+\begin{posterboxenv}[blankest]{column=2,span=2,above=process,yshift=5mm}
+\begin{guide}
+We go on with the \texttt{process} which gets some example \texttt{tikzpicture}.\par
+Note that you always can insert additional \texttt{tcolorbox} options like
+\texttt{halign=center} to a \texttt{posterbox}.
+\par\medskip
+\begin{guidelisting}{}
+%...
+\posterbox[adjusted title=Process,halign=center]{name=process,column=2,span=2,above=references}{
+ \begin{tikzpicture}[very thick,radius=2cm]
+ \begin{scope}
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0) arc [start angle=0, end angle=30];
+ \end{scope}
+ \begin{scope}[xshift=5cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0) arc [start angle=0, end angle=70];
+ \end{scope}
+ \begin{scope}[xshift=10cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0) arc [start angle=0, end angle=110];
+ \end{scope}
+ \begin{scope}[xshift=15cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0) arc [start angle=0, end angle=240];
+ \end{scope}
+ \end{tikzpicture}
+}
+%...
+\end{guidelisting}
+\end{guide}
+\end{posterboxenv}
+\end{tcbposter}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{tcbposter}[
+ coverage = {
+ spread,
+ interior style={top color=yellow,bottom color=yellow!50!red},
+ watermark text={\LaTeX\ Poster},
+ watermark color=yellow,
+ },
+ poster = {showframe=false,columns=4,rows=5},
+ boxes = {
+ enhanced standard jigsaw,sharp corners=downhill,arc=3mm,boxrule=1mm,
+ colback=white,opacityback=0.75,colframe=blue,
+ title style={left color=black,right color=cyan},
+ fonttitle=\bfseries\Large\scshape
+ }
+]
+
+%----
+\posterbox[blankest,interior engine=path,height=3cm,
+ halign=center,valign=center,fontupper=\bfseries\large,colupper=red!25!black,
+ underlay={
+ \node[right,inner sep=0pt,outer sep=0pt] at (frame.west) {\includegraphics[height=3cm]{pink_marble.png}};
+ \node[left,inner sep=0pt,outer sep=0pt] at (frame.east) {\includegraphics[height=3cm]{crinklepaper.png}};
+ },
+ ]{name=title,column=1,span=3,below=top}{
+ \resizebox{18cm}{!}{\bfseries\Huge My Important Project}\\[3mm]
+ Hans.Mustermann@deepthought.university
+}
+
+%----
+\posterbox[adjusted title=References]{name=references,column=2,span=1.5,above=bottom}{
+ \begin{enumerate}[{[1]}]
+ \item\label{litA} Important Authors, \textit{Important Title}
+ \item\label{litB} More Important Authors, \textit{More Important Title}
+ \item\label{litC} Less Important Authors, \textit{Less Important Title}
+ \end{enumerate}
+}
+
+%----
+\posterbox[adjusted title=Process,halign=center]{name=process,column=2,span=2,above=references}{
+ \begin{tikzpicture}[very thick,radius=2cm]
+ \begin{scope}
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0) arc [start angle=0, end angle=30];
+ \end{scope}
+ \begin{scope}[xshift=5cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0) arc [start angle=0, end angle=70];
+ \end{scope}
+ \begin{scope}[xshift=10cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0) arc [start angle=0, end angle=110];
+ \end{scope}
+ \begin{scope}[xshift=15cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0) arc [start angle=0, end angle=240];
+ \end{scope}
+ \end{tikzpicture}
+}
+
+%----
+\posterbox[adjusted title=Project Description]{name=project,
+ sequence=1 between title and bottom then 2 between title and process}{
+ See [\ref{litA}]: \lipsum[1]
+ \begin{center}
+ \tikz \draw[thick,rounded corners=8pt]
+ (0,0)--(0,2)--(1,3.25)--(2,2)--(2,0)--(0,2)--(2,2)--(0,0)--(2,0);
+ \quad by [\ref{litB}]
+ \end{center}
+ \lipsum[2-3]\par
+ See [\ref{litC}]:
+ \lipsum[4]
+ \begin{center}
+ \tikz \shadedraw [left color=red,right color=blue]
+ (0,0) rectangle (2,2);
+ \end{center}
+ That's all.
+}
+
+%----
+\posterbox[adjusted title=Central Picture]
+ {name=picture,column=3,between=title and process}{}
+
+%----
+\begin{posterboxenv}[adjusted title=Core Algorithm]
+ {name=algorithm,column=4,between=top and references}
+\end{posterboxenv}
+
+%----
+\posterbox[adjusted title=Contact]
+ {name=contact,column*=4,span=1.5,between=process and bottom}{
+}
+
+\begin{posterboxenv}[blankest]{column=3,span=2,at=middle}
+\begin{guide}
+The \texttt{project} is a breakable box with two parts. Nevertheless,
+you can fill the box like any other box. The information on how to
+break was already given by the placement options.
+
+\par\medskip
+\begin{guidelisting}{}
+%...
+\posterbox[adjusted title=Project Description]{name=project,
+ sequence=1 between title and bottom then 2 between title and process}{
+ See [\ref{litA}]: \lipsum[1]
+ \begin{center}
+ \tikz \draw[thick,rounded corners=8pt]
+ (0,0)--(0,2)--(1,3.25)--(2,2)--(2,0)--(0,2)--(2,2)--(0,0)--(2,0);
+ \quad by [\ref{litB}]
+ \end{center}
+ \lipsum[2-3]\par
+ See [\ref{litC}]:
+ \lipsum[4]
+ \begin{center}
+ \tikz \shadedraw [left color=red,right color=blue]
+ (0,0) rectangle (2,2);
+ \end{center}
+ That's all.
+}
+%...
+\end{guidelisting}
+\medskip
+The two boxes have a \emph{closed} appearance, because we used
+\texttt{enhanced standard jigsaw} as global style for all boxes.
+For an \emph{open} appearance, just use \texttt{enhanced jigsaw} instead:\par\medskip
+\begin{guidelisting}{}
+%...
+\begin{tcbposter}[
+%...
+ boxes = {
+ enhanced jigsaw,% <-----------
+ sharp corners=downhill,arc=3mm,boxrule=1mm,
+%...
+ }
+]
+%...
+\end{guidelisting}
+\end{guide}
+\end{posterboxenv}
+\end{tcbposter}
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{tcbposter}[
+ coverage = {
+ spread,
+ interior style={top color=yellow,bottom color=yellow!50!red},
+ watermark text={\LaTeX\ Poster},
+ watermark color=yellow,
+ },
+ poster = {showframe=false,columns=4,rows=5},
+ boxes = {
+ enhanced standard jigsaw,sharp corners=downhill,arc=3mm,boxrule=1mm,
+ colback=white,opacityback=0.75,colframe=blue,
+ title style={left color=black,right color=cyan},
+ fonttitle=\bfseries\Large\scshape
+ }
+]
+
+%----
+\posterbox[blankest,interior engine=path,height=3cm,
+ halign=center,valign=center,fontupper=\bfseries\large,colupper=red!25!black,
+ underlay={
+ \node[right,inner sep=0pt,outer sep=0pt] at (frame.west) {\includegraphics[height=3cm]{pink_marble.png}};
+ \node[left,inner sep=0pt,outer sep=0pt] at (frame.east) {\includegraphics[height=3cm]{crinklepaper.png}};
+ },
+ ]{name=title,column=1,span=3,below=top}{
+ \resizebox{18cm}{!}{\bfseries\Huge My Important Project}\\[3mm]
+ Hans.Mustermann@deepthought.university
+}
+
+%----
+\posterbox[adjusted title=References]{name=references,column=2,span=1.5,above=bottom}{
+ \begin{enumerate}[{[1]}]
+ \item\label{litA} Important Authors, \textit{Important Title}
+ \item\label{litB} More Important Authors, \textit{More Important Title}
+ \item\label{litC} Less Important Authors, \textit{Less Important Title}
+ \end{enumerate}
+}
+
+%----
+\posterbox[adjusted title=Process,halign=center]{name=process,column=2,span=2,above=references}{
+ \begin{tikzpicture}[very thick,radius=2cm]
+ \begin{scope}
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0) arc [start angle=0, end angle=30];
+ \end{scope}
+ \begin{scope}[xshift=5cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0) arc [start angle=0, end angle=70];
+ \end{scope}
+ \begin{scope}[xshift=10cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0) arc [start angle=0, end angle=110];
+ \end{scope}
+ \begin{scope}[xshift=15cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0) arc [start angle=0, end angle=240];
+ \end{scope}
+ \end{tikzpicture}
+}
+
+%----
+\posterbox[adjusted title=Project Description]{name=project,
+ sequence=1 between title and bottom then 2 between title and process}{
+ See [\ref{litA}]: \lipsum[1]
+ \begin{center}
+ \tikz \draw[thick,rounded corners=8pt]
+ (0,0)--(0,2)--(1,3.25)--(2,2)--(2,0)--(0,2)--(2,2)--(0,0)--(2,0);
+ \quad by [\ref{litB}]
+ \end{center}
+ \lipsum[2-3]\par
+ See [\ref{litC}]:
+ \lipsum[4]
+ \begin{center}
+ \tikz \shadedraw [left color=red,right color=blue]
+ (0,0) rectangle (2,2);
+ \end{center}
+ That's all.
+}
+
+%----
+\posterbox[adjusted title=Central Picture,
+ interior style={fill overzoom image=blueshade.png}]
+ {name=picture,column=3,between=title and process}{}
+
+%----
+\begin{posterboxenv}[adjusted title=Core Algorithm]
+ {name=algorithm,column=4,between=top and references}
+\end{posterboxenv}
+
+%----
+\posterbox[adjusted title=Contact]
+ {name=contact,column*=4,span=1.5,between=process and bottom}{
+}
+
+\begin{posterboxenv}[blankest]{column=2,span=2,below=picture,yshift=-5mm}
+\begin{guide}
+In our example, the whole space of the \texttt{picture} box should be
+filled with a given picture. This is a piece of cake using a special
+\texttt{interior style}:
+\par\medskip
+\begin{guidelisting}{}
+%...
+\posterbox[adjusted title=Central Picture,
+ interior style={fill overzoom image=blueshade.png}]
+ {name=picture,column=3,between=title and process}{}
+%...
+\end{guidelisting}
+\end{guide}
+\end{posterboxenv}
+\end{tcbposter}
+
+
+
+\begin{tcbverbatimwrite}{\jobname.mylist}
+%...
+\begin{posterboxenv}[adjusted title=Core Algorithm,leftupper=0pt,rightupper=0pt]
+ {name=algorithm,column=4,between=top and references}
+\begin{tcblisting}{blankest,listing only}
+\begin{tikzpicture}[very thick,radius=2cm]
+ \begin{scope}
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0)
+ arc [start angle=0, end angle=30];
+ \end{scope}
+%...
+\end{tikzpicture}
+\end{tcblisting}
+\end{posterboxenv}
+%...
+\end{tcbverbatimwrite}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{tcbposter}[
+ coverage = {
+ spread,
+ interior style={top color=yellow,bottom color=yellow!50!red},
+ watermark text={\LaTeX\ Poster},
+ watermark color=yellow,
+ },
+ poster = {showframe=false,columns=4,rows=5},
+ boxes = {
+ enhanced standard jigsaw,sharp corners=downhill,arc=3mm,boxrule=1mm,
+ colback=white,opacityback=0.75,colframe=blue,
+ title style={left color=black,right color=cyan},
+ fonttitle=\bfseries\Large\scshape
+ }
+]
+
+%----
+\posterbox[blankest,interior engine=path,height=3cm,
+ halign=center,valign=center,fontupper=\bfseries\large,colupper=red!25!black,
+ underlay={
+ \node[right,inner sep=0pt,outer sep=0pt] at (frame.west) {\includegraphics[height=3cm]{pink_marble.png}};
+ \node[left,inner sep=0pt,outer sep=0pt] at (frame.east) {\includegraphics[height=3cm]{crinklepaper.png}};
+ },
+ ]{name=title,column=1,span=3,below=top}{
+ \resizebox{18cm}{!}{\bfseries\Huge My Important Project}\\[3mm]
+ Hans.Mustermann@deepthought.university
+}
+
+%----
+\posterbox[adjusted title=References]{name=references,column=2,span=1.5,above=bottom}{
+ \begin{enumerate}[{[1]}]
+ \item\label{litA} Important Authors, \textit{Important Title}
+ \item\label{litB} More Important Authors, \textit{More Important Title}
+ \item\label{litC} Less Important Authors, \textit{Less Important Title}
+ \end{enumerate}
+}
+
+%----
+\posterbox[adjusted title=Process,halign=center]{name=process,column=2,span=2,above=references}{
+ \begin{tikzpicture}[very thick,radius=2cm]
+ \begin{scope}
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0) arc [start angle=0, end angle=30];
+ \end{scope}
+ \begin{scope}[xshift=5cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0) arc [start angle=0, end angle=70];
+ \end{scope}
+ \begin{scope}[xshift=10cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0) arc [start angle=0, end angle=110];
+ \end{scope}
+ \begin{scope}[xshift=15cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0) arc [start angle=0, end angle=240];
+ \end{scope}
+ \end{tikzpicture}
+}
+
+%----
+\posterbox[adjusted title=Project Description]{name=project,
+ sequence=1 between title and bottom then 2 between title and process}{
+ See [\ref{litA}]: \lipsum[1]
+ \begin{center}
+ \tikz \draw[thick,rounded corners=8pt]
+ (0,0)--(0,2)--(1,3.25)--(2,2)--(2,0)--(0,2)--(2,2)--(0,0)--(2,0);
+ \quad by [\ref{litB}]
+ \end{center}
+ \lipsum[2-3]\par
+ See [\ref{litC}]:
+ \lipsum[4]
+ \begin{center}
+ \tikz \shadedraw [left color=red,right color=blue]
+ (0,0) rectangle (2,2);
+ \end{center}
+ That's all.
+}
+
+%----
+\posterbox[adjusted title=Central Picture,
+ interior style={fill overzoom image=blueshade.png}]
+ {name=picture,column=3,between=title and process}{}
+
+%----
+\begin{posterboxenv}[adjusted title=Core Algorithm,leftupper=0pt,rightupper=0pt]
+ {name=algorithm,column=4,between=top and references}
+\begin{tcblisting}{blankest,listing only}
+\begin{tikzpicture}[very thick,radius=2cm]
+ \begin{scope}
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0)
+ arc [start angle=0, end angle=30];
+ \end{scope}
+ \begin{scope}[xshift=5cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0)
+ arc [start angle=0, end angle=70];
+ \end{scope}
+ \begin{scope}[xshift=10cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0)
+ arc [start angle=0, end angle=110];
+ \end{scope}
+ \begin{scope}[xshift=15cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0)
+ arc [start angle=0, end angle=240];
+ \end{scope}
+\end{tikzpicture}
+
+\begin{tikzpicture}[very thick,radius=1cm]
+ \begin{scope}
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0)
+ arc [start angle=0, end angle=30];
+ \end{scope}
+ \begin{scope}[xshift=5cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0)
+ arc [start angle=0, end angle=70];
+ \end{scope}
+ \begin{scope}[xshift=10cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0)
+ arc [start angle=0, end angle=110];
+ \end{scope}
+ \begin{scope}[xshift=15cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0)
+ arc [start angle=0, end angle=240];
+ \end{scope}
+\end{tikzpicture}
+\end{tcblisting}
+\end{posterboxenv}
+
+%----
+\posterbox[adjusted title=Contact]
+ {name=contact,column*=4,span=1.5,between=process and bottom}{
+}
+
+\begin{posterboxenv}[blankest]{column=2,span=2,below=picture,at=middle}
+\begin{guide}
+For the Algorithm, we need a \texttt{verbatim} environment. Here,
+\texttt{tcblisting} is used.\par
+Therefore, we cannot use a \texttt{posterbox} as usual, but we can
+a \texttt{posterboxenv} environment instead.\par
+Note that you would get some weird errors, if \texttt{posterbox} would have been applied.
+\par\medskip
+\tcbinputlisting{mylisting,listing file=\jobname.mylist}
+\end{guide}
+\end{posterboxenv}
+\end{tcbposter}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\begin{tcbposter}[
+ coverage = {
+ spread,
+ interior style={top color=yellow,bottom color=yellow!50!red},
+ watermark text={\LaTeX\ Poster},
+ watermark color=yellow,
+ },
+ poster = {showframe=false,columns=4,rows=5},
+ boxes = {
+ enhanced standard jigsaw,sharp corners=downhill,arc=3mm,boxrule=1mm,
+ colback=white,opacityback=0.75,colframe=blue,
+ title style={left color=black,right color=cyan},
+ fonttitle=\bfseries\Large\scshape
+ }
+]
+
+%----
+\posterbox[blankest,interior engine=path,height=3cm,
+ halign=center,valign=center,fontupper=\bfseries\large,colupper=red!25!black,
+ underlay={
+ \node[right,inner sep=0pt,outer sep=0pt] at (frame.west) {\includegraphics[height=3cm]{pink_marble.png}};
+ \node[left,inner sep=0pt,outer sep=0pt] at (frame.east) {\includegraphics[height=3cm]{crinklepaper.png}};
+ },
+ ]{name=title,column=1,span=3,below=top}{
+ \resizebox{18cm}{!}{\bfseries\Huge My Important Project}\\[3mm]
+ Hans.Mustermann@deepthought.university
+}
+
+%----
+\posterbox[adjusted title=References]{name=references,column=2,span=1.5,above=bottom}{
+ \begin{enumerate}[{[1]}]
+ \item\label{litA} Important Authors, \textit{Important Title}
+ \item\label{litB} More Important Authors, \textit{More Important Title}
+ \item\label{litC} Less Important Authors, \textit{Less Important Title}
+ \end{enumerate}
+}
+
+%----
+\posterbox[adjusted title=Process,halign=center]{name=process,column=2,span=2,above=references}{
+ \begin{tikzpicture}[very thick,radius=2cm]
+ \begin{scope}
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0) arc [start angle=0, end angle=30];
+ \end{scope}
+ \begin{scope}[xshift=5cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0) arc [start angle=0, end angle=70];
+ \end{scope}
+ \begin{scope}[xshift=10cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0) arc [start angle=0, end angle=110];
+ \end{scope}
+ \begin{scope}[xshift=15cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0) arc [start angle=0, end angle=240];
+ \end{scope}
+ \end{tikzpicture}
+}
+
+%----
+\posterbox[adjusted title=Project Description]{name=project,
+ sequence=1 between title and bottom then 2 between title and process}{
+ See [\ref{litA}]: \lipsum[1]
+ \begin{center}
+ \tikz \draw[thick,rounded corners=8pt]
+ (0,0)--(0,2)--(1,3.25)--(2,2)--(2,0)--(0,2)--(2,2)--(0,0)--(2,0);
+ \quad by [\ref{litB}]
+ \end{center}
+ \lipsum[2-3]\par
+ See [\ref{litC}]:
+ \lipsum[4]
+ \begin{center}
+ \tikz \shadedraw [left color=red,right color=blue]
+ (0,0) rectangle (2,2);
+ \end{center}
+ That's all.
+}
+
+%----
+\posterbox[adjusted title=Central Picture,
+ interior style={fill overzoom image=blueshade.png}]
+ {name=picture,column=3,between=title and process}{}
+
+%----
+\begin{posterboxenv}[adjusted title=Core Algorithm,leftupper=0pt,rightupper=0pt]
+ {name=algorithm,column=4,between=top and references}
+\begin{tcblisting}{blankest,listing only}
+\begin{tikzpicture}[very thick,radius=2cm]
+ \begin{scope}
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0)
+ arc [start angle=0, end angle=30];
+ \end{scope}
+ \begin{scope}[xshift=5cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0)
+ arc [start angle=0, end angle=70];
+ \end{scope}
+ \begin{scope}[xshift=10cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0)
+ arc [start angle=0, end angle=110];
+ \end{scope}
+ \begin{scope}[xshift=15cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0)
+ arc [start angle=0, end angle=240];
+ \end{scope}
+\end{tikzpicture}
+
+\begin{tikzpicture}[very thick,radius=1cm]
+ \begin{scope}
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0)
+ arc [start angle=0, end angle=30];
+ \end{scope}
+ \begin{scope}[xshift=5cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0)
+ arc [start angle=0, end angle=70];
+ \end{scope}
+ \begin{scope}[xshift=10cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0)
+ arc [start angle=0, end angle=110];
+ \end{scope}
+ \begin{scope}[xshift=15cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0)
+ arc [start angle=0, end angle=240];
+ \end{scope}
+\end{tikzpicture}
+\end{tcblisting}
+\end{posterboxenv}
+
+%----
+\posterbox[adjusted title=Contact,fit,fit basedim=12pt]
+ {name=contact,column*=4,span=1.5,between=process and bottom}{
+ \lipsum[2]
+}
+
+\begin{posterboxenv}[blankest]{column=2,span=2,above=contact,yshift=5mm}
+\begin{guide}
+Finally, the \texttt{contact} box is filled. But, in our example case,
+there is not much space for a lot of contact text.\par
+Therefore, we add \texttt{fit} to fit in the text automatically.
+\par\medskip
+\begin{guidelisting}{}
+%...
+\posterbox[adjusted title=Contact,fit,fit basedim=12pt]
+ {name=contact,column*=4,span=1.5,between=process and bottom}{
+ \lipsum[2]
+}
+%...
+\end{guidelisting}
+\par\medskip
+Our poster is finished now. Just go to the next page to see the final result.
+\end{guide}
+\end{posterboxenv}
+
+\end{tcbposter}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{tcbposter}[
+ coverage = {
+ spread,
+ interior style={top color=yellow,bottom color=yellow!50!red},
+ watermark text={\LaTeX\ Poster},
+ watermark color=yellow,
+ },
+ poster = {showframe=false,columns=4,rows=5},
+ boxes = {
+ enhanced standard jigsaw,sharp corners=downhill,arc=3mm,boxrule=1mm,
+ colback=white,opacityback=0.75,colframe=blue,
+ title style={left color=black,right color=cyan},
+ fonttitle=\bfseries\Large\scshape
+ }
+]
+
+%----
+\posterbox[blankest,interior engine=path,height=3cm,
+ halign=center,valign=center,fontupper=\bfseries\large,colupper=red!25!black,
+ underlay={
+ \node[right,inner sep=0pt,outer sep=0pt] at (frame.west) {\includegraphics[height=3cm]{pink_marble.png}};
+ \node[left,inner sep=0pt,outer sep=0pt] at (frame.east) {\includegraphics[height=3cm]{crinklepaper.png}};
+ },
+ ]{name=title,column=1,span=3,below=top}{
+ \resizebox{18cm}{!}{\bfseries\Huge My Important Project}\\[3mm]
+ Hans.Mustermann@deepthought.university
+}
+
+%----
+\posterbox[adjusted title=References]{name=references,column=2,span=1.5,above=bottom}{
+ \begin{enumerate}[{[1]}]
+ \item\label{litA} Important Authors, \textit{Important Title}
+ \item\label{litB} More Important Authors, \textit{More Important Title}
+ \item\label{litC} Less Important Authors, \textit{Less Important Title}
+ \end{enumerate}
+}
+
+%----
+\posterbox[adjusted title=Process,halign=center]{name=process,column=2,span=2,above=references}{
+ \begin{tikzpicture}[very thick,radius=2cm]
+ \begin{scope}
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0) arc [start angle=0, end angle=30];
+ \end{scope}
+ \begin{scope}[xshift=5cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0) arc [start angle=0, end angle=70];
+ \end{scope}
+ \begin{scope}[xshift=10cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0) arc [start angle=0, end angle=110];
+ \end{scope}
+ \begin{scope}[xshift=15cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0) arc [start angle=0, end angle=240];
+ \end{scope}
+ \end{tikzpicture}
+}
+
+%----
+\posterbox[adjusted title=Project Description]{name=project,
+ sequence=1 between title and bottom then 2 between title and process}{
+ See [\ref{litA}]: \lipsum[1]
+ \begin{center}
+ \tikz \draw[thick,rounded corners=8pt]
+ (0,0)--(0,2)--(1,3.25)--(2,2)--(2,0)--(0,2)--(2,2)--(0,0)--(2,0);
+ \quad by [\ref{litB}]
+ \end{center}
+ \lipsum[2-3]\par
+ See [\ref{litC}]:
+ \lipsum[4]
+ \begin{center}
+ \tikz \shadedraw [left color=red,right color=blue]
+ (0,0) rectangle (2,2);
+ \end{center}
+ That's all.
+}
+
+%----
+\posterbox[adjusted title=Central Picture,
+ interior style={fill overzoom image=blueshade.png}]
+ {name=picture,column=3,between=title and process}{}
+
+%----
+\begin{posterboxenv}[adjusted title=Core Algorithm,leftupper=0pt,rightupper=0pt]
+ {name=algorithm,column=4,between=top and references}
+\begin{tcblisting}{blankest,listing only}
+\begin{tikzpicture}[very thick,radius=2cm]
+ \begin{scope}
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0)
+ arc [start angle=0, end angle=30];
+ \end{scope}
+ \begin{scope}[xshift=5cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0)
+ arc [start angle=0, end angle=70];
+ \end{scope}
+ \begin{scope}[xshift=10cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0)
+ arc [start angle=0, end angle=110];
+ \end{scope}
+ \begin{scope}[xshift=15cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0)
+ arc [start angle=0, end angle=240];
+ \end{scope}
+\end{tikzpicture}
+
+\begin{tikzpicture}[very thick,radius=1cm]
+ \begin{scope}
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0)
+ arc [start angle=0, end angle=30];
+ \end{scope}
+ \begin{scope}[xshift=5cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0)
+ arc [start angle=0, end angle=70];
+ \end{scope}
+ \begin{scope}[xshift=10cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0)
+ arc [start angle=0, end angle=110];
+ \end{scope}
+ \begin{scope}[xshift=15cm]
+ \path[draw=black,fill=white] (0,0) circle;
+ \path[fill=red] (0,0) -- (2,0)
+ arc [start angle=0, end angle=240];
+ \end{scope}
+\end{tikzpicture}
+\end{tcblisting}
+\end{posterboxenv}
+
+%----
+\posterbox[adjusted title=Contact,fit,fit basedim=12pt]
+ {name=contact,column*=4,span=1.5,between=process and bottom}{
+ \lipsum[2]
+}
+
+\end{tcbposter}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{tcbposter}[
+ coverage = {
+ spread,
+ interior style={top color=yellow,bottom color=yellow!50!red},
+ watermark text={\LaTeX\ Poster},
+ watermark color=yellow,
+ },
+ poster = {showframe=false,columns=3,rows=5},
+]
+
+%----
+\posterbox[blankest]{name=title,column=1,span=1,below=top}{
+ \begin{guide}[grow to left by=0mm,grow to right by=-16mm]
+ Source code for the example poster
+ \end{guide}
+}
+\posterbox[blankest,posterset/fontsize=11pt]{name=source,
+ sequence=1 between title and bottom then
+ 2 between top and bottom then
+ 3 between top and bottom
+ }{%
+ \tcbinputlisting{standard jigsaw,size=minimal,toprule=0.5mm,bottomrule=0.5mm,boxsep=2mm,
+ colback=white,opacityback=0.75,listing only,
+ enforce breakable,tcb@poster@boxheight,before skip=-\interlineskip,height fixed for=all,
+ minted options={tabsize=2,fontsize=\small,breaklines,breakafter={,]-}},
+ listing file=tcolorbox-example-poster.tex}%
+ }
+\end{tcbposter}
+
+
+\end{document}
+
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.abstract.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.abstract.tex
new file mode 100644
index 0000000000..ecd45a34e1
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.abstract.tex
@@ -0,0 +1,116 @@
+% !TeX root = tcolorbox.tex
+% include file of tcolorbox.tex (manual of the LaTeX package tcolorbox)
+\begin{tcboutputlisting}
+% \usepackage{incgraph}
+\begin{inctext}
+\begin{tikzpicture}
+\definecolorseries{boxcol}{rgb}{last}{blue}{red}
+\resetcolorseries[28]{boxcol}
+\coordinate (A) at (0,0); \coordinate (B) at (21,29.7);
+\path[use as bounding box] (A) rectangle coordinate (C) (B);
+\node[transform shape,xslant=0.7,rotate=-10,xshift=0cm] at (C) {%
+ \begin{tcbraster}[raster columns=4,title=tcolorbox \version,
+ fonttitle=\small\bfseries,raster width=50cm]
+ \foreach \b in {1,...,28} {\begin{tcolorbox}[enhanced,
+ watermark text=\thetcbrasternum,
+ colframe=boxcol!30!white,
+ colback=boxcol!25!white!30!white,
+ colbacktitle=boxcol!!+!50!black!30!white,
+ colupper=black!30!white]\lipsum[2]\end{tcolorbox}}
+ \end{tcbraster}%
+};
+\node at (C) {%
+ \begin{tcbitemize}[title=tcolorbox \version,fonttitle=\small\bfseries,
+ enhanced jigsaw,opacityback=0.5,opacitybacktitle=0.75,
+ halign=center,valign=center,arc=5mm,
+ raster width=16cm,raster column skip=8mm,raster halign=center,
+ raster force size=false,
+ raster row 1/.style={height=6cm},
+ raster row 2/.style={width=6cm,height=4cm},
+ raster column 1/.style={flushright title,
+ frame style={left color=yellow!50!black,right color=green!50!black},
+ title style={left color=yellow!50!blue,right color=blue!50!green!50!black},
+ interior style={left color=yellow!70,right color=green!70},
+ underlay={\draw[line width=6mm,line cap=round,black!60]
+ ([shift={(0.4,-0.15)}]frame.north east)
+ --([shift={(0.4,0.15)}]frame.south east); }},
+ raster column 2/.style={
+ frame style={left color=green!50!black,right color=yellow!50!black},
+ title style={left color=blue!50!green!50!black,right color=yellow!50!blue},
+ interior style={left color=green!70,right color=yellow!70}}]
+ \tcbitem[fontupper=\Huge\bfseries,sharp corners=east,
+ underlay={\draw[line width=6mm,line cap=round,black!60]
+ ([shift={(0.4,0.30)}]frame.north east)-- coordinate(A) +(0,0.2);
+ \draw[line width=1mm,line cap=round,black!60](A) -- +(30:1.5cm);
+ \draw[line width=1mm,line cap=round,black!60](A) -- +(150:1.5cm);}]
+ tcolorbox
+ \tcbitem[fontupper=\large\bfseries,sharp corners=west]
+ Manual for\\ version\\ \version\\(\datum)
+ \tcbitem[sharp corners=northeast]
+ \tcbitem[sharp corners=northwest] Thomas F.~Sturm
+ \end{tcbitemize}%
+};
+\end{tikzpicture}
+\end{inctext}
+\end{tcboutputlisting}
+\tcbuselistingtext
+\tcbinputlisting{title=Cover code,
+ base example,coltitle=black,fonttitle=\itshape,titlerule=0pt,
+ colbacktitle=Navy!15!ExampleBack,top=0mm,before=\par\smallskip,%
+ listing style=mydocumentation,listing only}
+
+%\bigskip
+%\begin{marker}
+%If you have trouble printing this document, the reason is quite likely the
+%cover page. Printing the pages starting with page 2 or page 3 should work.
+%\end{marker}
+
+\clearpage
+\begin{center}
+\begin{tcolorbox}[enhanced,hbox,tikznode,left=8mm,right=8mm,boxrule=0.4pt,
+ colback=white,colframe=black!50!yellow,
+ %drop fuzzy midday shadow=black!50!yellow,
+ drop lifted shadow=black!50!yellow,arc is angular,
+ before=\par\vspace*{5mm},after=\par\bigskip]
+{\bfseries\LARGE The \texttt{tcolorbox} package}\\[3mm]
+{\large Manual for version \version\ (\datum)}
+\end{tcolorbox}
+{\large Thomas F.~Sturm%
+ \footnote{Prof.~Dr.~Dr.~Thomas F.~Sturm, Institut f\"{u}r Mathematik und Informatik,
+ Universit\"{a}t der Bundeswehr M\"{u}nchen, D-85577 Neubiberg, Germany;
+ email: \href{mailto:thomas.sturm@unibw.de}{thomas.sturm@unibw.de}}\par\medskip
+\normalsize\url{http://www.ctan.org/pkg/tcolorbox}\par
+\url{https://github.com/T-F-S/tcolorbox}}
+\end{center}
+\bigskip
+\begin{absquote}
+ \begin{center}\bfseries Abstract\end{center}
+ |tcolorbox| provides an environment for colored and framed text boxes with a
+ heading line. Optionally, such a box can be split in an upper and a lower
+ part. The package |tcolorbox| can be used for the setting of \LaTeX\ examples where
+ one part of the box displays the source code and the other part shows the
+ output. Another common use case is the setting of theorems. The package supports
+ saving and reuse of source code and text parts.
+\end{absquote}
+
+\begin{tcolorbox}[breakable,enhanced jigsaw,title={Contents},fonttitle=\bfseries\Large,
+ colback=yellow!10!white,colframe=red!50!black,before=\par\bigskip\noindent,
+ interior style={fill overzoom image=goldshade.png,fill image opacity=0.25},
+ colbacktitle=red!50!yellow!75!black,
+ enlargepage flexible=\baselineskip,pad at break*=3mm,
+ watermark color=yellow!75!red!25!white,
+ watermark text={\bfseries\Large Contents},
+ attach boxed title to top center={yshift=-0.25mm-\tcboxedtitleheight/2,yshifttext=2mm-\tcboxedtitleheight/2},
+ boxed title style={enhanced,boxrule=0.5mm,
+ frame code={ \path[tcb fill frame] ([xshift=-4mm]frame.west) -- (frame.north west)
+ -- (frame.north east) -- ([xshift=4mm]frame.east)
+ -- (frame.south east) -- (frame.south west) -- cycle; },
+ interior code={ \path[tcb fill interior] ([xshift=-2mm]interior.west)
+ -- (interior.north west) -- (interior.north east)
+ -- ([xshift=2mm]interior.east) -- (interior.south east) -- (interior.south west)
+ -- cycle;} },
+ drop fuzzy shadow]
+\makeatletter
+\@starttoc{toc}
+\makeatother
+\end{tcolorbox}
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.beamer.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.beamer.tex
new file mode 100644
index 0000000000..0fcb15e5a3
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.beamer.tex
@@ -0,0 +1,210 @@
+% !TeX root = tcolorbox.tex
+% include file of tcolorbox.tex (manual of the LaTeX package tcolorbox)
+\clearpage
+\section{Beamer Support}\label{sec:beamer}%
+\tcbset{external/prefix=external/beamer_}%
+The \mylib{skins} library adds some supporting options for the |beamer| package
+\cite{tantau:beamer}.
+For the following options, the \mylib{skins} library has to be loaded
+by a package option or inside the preamble by:
+\begin{dispListing}
+\tcbuselibrary{skins}
+\end{dispListing}
+
+See \Vref{sec:skins} for the documentation of all other options of the \mylib{skins} library.
+
+\begin{docTcbKey}[][doc new and updated={2015-01-09}{2019-03-01}]{only}{=\textless\meta{overlay specification}\textgreater\marg{options}}{style, no default, initially unset}
+Sets the given |tcolorbox| \meta{options} in dependency of
+a |beamer| \meta{overlay specification}.
+Note that this needs the |beamer| class \cite{tantau:beamer}.
+The \meta{options} will only be used on the specified |beamer| frames.
+
+
+\begin{fulldocumentlisting}{}
+\documentclass{beamer}
+\usepackage[many]{tcolorbox}
+\begin{document}
+
+\begin{frame}
+ \begin{tcolorbox}[title=My title,fonttitle=\bfseries,
+ enhanced,colframe=red!50!black,colback=red!10,colbacktitle=red,
+ sidebyside,righthand width=3cm,
+ lowerbox=invisible,lower separated=false,
+ drop lifted shadow,
+ only=<1>{colbacktitle=yellow,coltitle=red!50!black,colframe=red},
+ only=<3>{colback=yellow!50,watermark text={Attention!}},
+ only=<3->{lowerbox=visible} ]
+ This is a test.
+ \begin{itemize}[<+->]
+ \item One
+ \item Two
+ \item \alert<3>{Three}
+ \item Four
+ \end{itemize}
+ \tcblower
+ \begin{equation*}
+ \int\limits_{1}^{x} \frac{1}{t}~dt = \ln(x).
+ \end{equation*}
+ \end{tcolorbox}
+\end{frame}
+\end{document}
+\end{fulldocumentlisting}
+
+
+\begin{fulldocumentlisting}{}
+\documentclass{beamer}
+\usepackage[most]{tcolorbox}
+\begin{document}
+
+\begin{frame}[fragile]
+ \begin{tcblisting}{beamer,colback=blue!5,colframe=blue!20!gray,coltitle=yellow,
+ title=Example,
+ only=<1>{lowerbox=invisible},only=<2>{}
+ }
+This is an \textbf{example listing}
+ \end{tcblisting}
+\end{frame}
+\end{document}
+\end{fulldocumentlisting}
+
+\begin{marker}
+The option \refKey{/tcb/only} belonged to the base package before version 4.20.
+\end{marker}
+\end{docTcbKey}
+
+
+
+\begin{docTcbKey}[][doc new={2019-03-01}]{hide}{=\textless\meta{overlay specification}\textgreater}{style, no default, initially unset}
+Sets the \refKey{/tcb/beamer hidden} style in dependency of
+a |beamer| \meta{overlay specification}.
+\refKey{/tcb/beamer hidden} can be redefined for customization.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new={2019-03-01}]{beamer hidden}{}{style, no options, initially |nirvana|}
+This style is not intended to be used directly, but in concealed way by applying
+\refKey{/tcb/hide}. The style can be redefined.
+\begin{dispListing}
+\tcbset{
+ beamer hidden/.style={invisible,interior hidden,colframe=blue!20!gray!15},
+}
+\end{dispListing}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new={2019-03-01}]{alert}{=\textless\meta{overlay specification}\textgreater}{style, no default, initially unset}
+Sets the \refKey{/tcb/beamer alerted} style in dependency of
+a |beamer| \meta{overlay specification}.
+\refKey{/tcb/beamer alerted} can be redefined for customization.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new={2019-03-01}]{beamer alerted}{}{style, no options, initially |fuzzy halo|}
+This style is not intended to be used directly, but in concealed way by applying
+\refKey{/tcb/alert}. The style can be redefined.
+\begin{dispListing}
+\tcbset{
+ beamer alerted/.style={colframe=red!50!gray},
+}
+\end{dispListing}
+\end{docTcbKey}
+
+
+\bigskip
+
+The following examples use \refEnv{tcbitemize} from \mylib{raster} for
+convenient use of a list of boxes which are uncovered one by one.
+
+
+\begin{fulldocumentlisting}{run pdflatex}
+\documentclass{beamer}
+\usepackage[most]{tcolorbox}
+\begin{document}
+
+\begin{frame}
+ \begin{tcbitemize}[raster equal height=rows,
+ enhanced,colback=blue!5,colframe=blue!20!gray,coltitle=yellow,
+ ]
+ \tcbitem[title=One,alert=<1>]
+ First Statement
+ \tcbitem[title=Two,hide=<-1>,alert=<2>]
+ Second Statement
+ \tcbitem[title=Three,hide=<-2>,alert=<3>]
+ Test
+ \tcbitem[title=Four,hide=<-3>,alert=<4>]
+ \begin{equation*}
+ \int\limits_{1}^{x} \frac{1}{t}~dt = \ln(x).
+ \end{equation*}
+ \tcbitem[title=Five,hide=<-4>,alert=<5>]
+ \includegraphics[width=1cm]{goldshade.png}
+ \tcbitem[title=Six,hide=<-5>,alert=<6>]
+ Test
+ \end{tcbitemize}
+\end{frame}
+\end{document}
+\end{fulldocumentlisting}
+
+
+
+\begin{fulldocumentlisting}{run pdflatex}
+\documentclass{beamer}
+\usepackage[most]{tcolorbox}
+\begin{document}
+
+\begin{frame}
+ \begin{tcbitemize}[raster equal height=rows,
+ enhanced,colback=blue!5,colframe=blue!20!gray,coltitle=yellow,
+ beamer hidden/.style={invisible,interior hidden,colframe=blue!20!gray!15},
+ beamer alerted/.style={colframe=red!50!gray},
+ ]
+ \tcbitem[title=One,alert=<1>]
+ First Statement
+ \tcbitem[title=Two,hide=<-1>,alert=<2>]
+ Second Statement
+ \tcbitem[title=Three,hide=<-2>,alert=<3>]
+ Test
+ \tcbitem[title=Four,hide=<-3>,alert=<4>]
+ \begin{equation*}
+ \int\limits_{1}^{x} \frac{1}{t}~dt = \ln(x).
+ \end{equation*}
+ \tcbitem[title=Five,hide=<-4>,alert=<5>]
+ \includegraphics[width=1cm]{goldshade.png}
+ \tcbitem[title=Six,hide=<-5>,alert=<6>]
+ Test
+ \end{tcbitemize}
+\end{frame}
+\end{document}
+\end{fulldocumentlisting}
+
+
+
+\begin{fulldocumentlisting}{run pdflatex}
+\documentclass{beamer}
+\usepackage[most]{tcolorbox}
+\begin{document}
+
+\begin{frame}
+ \begin{tcbitemize}[raster equal height=rows,
+ beamer,colback=blue!5,colframe=blue!20!gray,coltitle=yellow,
+ beamer hidden/.style={colback=white,colframe=gray!50,opacityupper=0.2,opacitytitle=0.2},
+ beamer alerted/.style={colframe=red!50!gray,fuzzy halo},
+ ]
+ \tcbitem[title=One,alert=<1>]
+ First Statement
+ \tcbitem[title=Two,hide=<-1>,alert=<2>]
+ Second Statement
+ \tcbitem[title=Three,hide=<-2>,alert=<3>]
+ Test
+ \tcbitem[title=Four,hide=<-3>,alert=<4>]
+ \begin{equation*}
+ \int\limits_{1}^{x} \frac{1}{t}~dt = \ln(x).
+ \end{equation*}
+ \tcbitem[title=Five,hide=<-4>,alert=<5>]
+ \includegraphics[width=1cm]{goldshade.png}
+ \tcbitem[title=Six,hide=<-5>,alert=<6>]
+ Test
+ \end{tcbitemize}
+\end{frame}
+\end{document}
+\end{fulldocumentlisting}
+
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.bib b/macros/latex/contrib/tcolorbox/tcolorbox.doc.bib
new file mode 100644
index 0000000000..8f1e4f7924
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.bib
@@ -0,0 +1,203 @@
+@manual{hoffmann:2018a,
+ author = {Carsten Heinz and Brooks Moses and Jobst Hoffmann},
+ title = {The Listings Package},
+ url = {http://mirror.ctan.org/macros/latex/contrib/listings/listings.pdf},
+ version = {1.7},
+ date = {2018-09-02},
+ language = {english}
+}
+
+@manual{schoepf:2001a,
+ author = {Rainer Sch{\"o}pf and Bernd Raichle and Chris Rowley},
+ title = {A New Implementation of {\LaTeX}'s verbatim and verbatim* Environments},
+ url = {http://mirror.ctan.org/macros/latex/required/tools/verbatim.pdf},
+ date = {2001-03-12},
+}
+
+@techreport{sturm:2007b,
+ author = {Thomas F. Sturm},
+ title = {Mathematik 1 (B.Eng.)},
+ type = {Vorlesungs-Skriptum},
+ institution = {Universit{\"a}t der Bundeswehr M{\"u}nchen},
+ address = {Neubiberg},
+ url = {https://www.unibw.de/bw/professuren/thomas-sturm},
+ year = 2007,
+ language = {german}
+}
+
+@techreport{sturm:2008b,
+ author = {Thomas F. Sturm},
+ title = {Mathematik 2 (B.Eng.)},
+ type = {Vorlesungs-Skriptum},
+ institution = {Universit{\"a}t der Bundeswehr M{\"u}nchen},
+ address = {Neubiberg},
+ url = {https://www.unibw.de/bw/professuren/thomas-sturm},
+ year = 2008,
+ language = {german}
+}
+
+@techreport{sturm:2010a,
+ author = {Thomas F. Sturm},
+ title = {H{\"o}here Mathematik: Fortgeschrittene mathematische Methoden (M.Eng.)},
+ type = {Vorlesungs-Skriptum},
+ institution = {Universit{\"a}t der Bundeswehr M{\"u}nchen},
+ address = {Neubiberg},
+ url = {https://www.unibw.de/bw/professuren/thomas-sturm},
+ year = 2010,
+ language = {german}
+}
+
+@book{sturm:2016e,
+ author = {Thomas F. Sturm},
+ title = {\LaTeX -- Einführung in das Textsatzsystem},
+ publisher = {Leibnitz Universität Hannover IT Services (LUIS)},
+ address = {Hannover},
+ edition = 11,
+ series = {IT-Handb\"ucher},
+ url = {https://www.luis.uni-hannover.de/buch.html?&titel=latex},
+ date = {2016-08},
+ language = {german}
+}
+
+
+@manual{tantau:tikz_and_pgf,
+ author = {Till Tantau},
+ title = {The TikZ and PGF Packages},
+ subtitle = {Manual for version 3.1.1},
+ url = {http://mirrors.ctan.org/graphics/pgf/base/doc/pgfmanual.pdf},
+ date = {2019-02-02},
+}
+
+
+@manual{tantau:beamer,
+ author = {Till Tantau and Joseph Wright and Vedran Mileti\'{c}},
+ title = {The Beamer Class},
+ subtitle = {User Guide for version 3.55},
+ url = {http://mirrors.ctan.org/macros/latex/contrib/beamer/doc/beameruserguide.pdf},
+ date = {2018-12-02},
+}
+
+
+@manual{carlisle:2007a,
+ author = {David Carlisle},
+ title = {The file ltxdoc.dtx for use with \LaTeXe},
+ url = {http://mirror.ctan.org/macros/latex/base/ltxdoc.dtx},
+ date = {2007-11-11}
+}
+
+
+@manual{carlisle:2016a,
+ author = {David Carlisle},
+ title = {The tabularx package},
+ url = {http://mirror.ctan.org/macros/latex/required/tools/tabularx.pdf},
+ date = {2016-02-03}
+}
+
+
+@manual{mittelbach:2011a,
+ author = {Frank Mittelbach},
+ title = {The doc and shortvrb Packages},
+ url = {http://mirror.ctan.org/macros/latex/base/doc.dtx},
+ date = {2011-06-30}
+}
+
+@manual{breitenlohner:1998a,
+ author = {Peter Breitenlohner},
+ title = {The $\varepsilon$-\TeX\ manual},
+ version = {2},
+ url = {http://mirrors.ctan.org/systems/doc/etex/etex_man.pdf},
+ date = {1998-02},
+}
+
+@manual{oberdiek:2016b,
+ author = {Heiko Oberdiek},
+ title = {The listingsutf8 package},
+ url = {http://mirror.ctan.org/macros/latex/contrib/oberdiek/listingsutf8.pdf},
+ date = {2016-05-16},
+}
+
+@manual{robertson:2014a,
+ author = {Will Robertson},
+ title = {A couple of things involving environments},
+ url = {http://mirror.ctan.org/macros/latex/contrib/environ/environ.pdf},
+ date = {2014-05-04},
+}
+
+
+@manual{lehmann:2018a,
+ author = {Philipp Lehman and Joseph Wright},
+ title = {The etoolbox Package},
+ url = {http://mirror.ctan.org/macros/latex/contrib/etoolbox/etoolbox.pdf},
+ date = {2018-08-19},
+}
+
+
+@manual{cubitt:2018a,
+ author = {Toby Cubitt},
+ title = {The cleveref Package},
+ url = {http://mirror.ctan.org/macros/latex/contrib/cleveref/cleveref.pdf},
+ date = {2018-03-27},
+}
+
+@manual{rudolph:2011a,
+ author = {Konrad Rudolph},
+ title = {The minted package},
+ subtitle = {Highlighted source code in \LaTeX},
+ url = {http://mirror.ctan.org/macros/latex/contrib/minted/minted.pdf},
+ date = {2011-09-17},
+}
+
+@manual{poore:minted,
+ author = {Geoffrey M. Poore},
+ title = {The minted package},
+ subtitle = {Highlighted source code in \LaTeX},
+ url = {http://mirror.ctan.org/macros/latex/contrib/minted/minted.pdf},
+ date = {2017-07-19},
+}
+
+@online{pygments:web,
+ title = {Pygments},
+ subtitle = {Python syntax highlighter},
+ date = {2018},
+ url = {http://pygments.org/},
+}
+
+@manual{latexproject:xparse,
+ author = {The \LaTeX3 Project},
+ title = {The xparse Package},
+ url = {http://mirror.ctan.org/macros/latex/contrib/l3packages/xparse.pdf},
+ date = {2018-10-17},
+}
+
+
+@manual{arseneau:2011a,
+ author = {Donald Arseneau},
+ title = {The varwidth package},
+ url = {http://mirrors.ctan.org/macros/latex/contrib/varwidth/varwidth-doc.pdf},
+ date = {2011-09-26},
+}
+
+@manual{mittelbach:2015a,
+ author = {Frank Mittelbach},
+ title = {An environment for multicolumn output},
+ url = {http://mirror.ctan.org/macros/latex/required/tools/multicol.pdf},
+ date = {2015-09-30},
+}
+
+
+@manual{rahtz:hyperref,
+ author = {Sebastian Rahtz and Heiko Oberdiek},
+ title = {Hypertext marks in \LaTeX: a manual for hyperref},
+ url = {http://mirrors.ctan.org/macros/latex/contrib/hyperref/doc/manual.pdf},
+ date = {2018-09},
+ language = {english}
+}
+
+
+@manual{oberdiek:2016a,
+ author = {Heiko Oberdiek},
+ title = {The bookmark package},
+ url = {http://mirrors.ctan.org/macros/latex/contrib/oberdiek/bookmark.pdf},
+ date = {2016-05-17},
+ language = {english}
+}
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.breakable.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.breakable.tex
new file mode 100644
index 0000000000..ba0b05cbd8
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.breakable.tex
@@ -0,0 +1,842 @@
+% !TeX root = tcolorbox.tex
+% include file of tcolorbox.tex (manual of the LaTeX package tcolorbox)
+\clearpage
+\section{Library \mylib{breakable}}\label{sec:breakable}%
+\tcbset{external/prefix=external/breakable_}%
+The library is loaded by a package option or inside the preamble by:
+\begin{dispListing}
+\tcbuselibrary{breakable}
+\end{dispListing}
+
+\subsection{Technical Overview}
+The library \mylib{breakable} supports the automatic breaking of a |tcolorbox|.
+This feature is enabled by \refKey{/tcb/breakable}
+and disabled by \refKey{/tcb/unbreakable}.
+
+{
+\tcbset{colframe=Navy,colback=AliceBlue,fonttitle=\bfseries,
+ watermark color=AliceBlue!85!Navy,enhanced}
+If a |tcolorbox| is set to be \refKey{/tcb/breakable}, then the following
+algorithm is executed:
+\begin{enumerate}
+\item The box content is read to a box register similar but not identical
+ to the unbreakable case.
+\item If the total box fits into the current page, it is shipped out visibly
+ unbroken and the algorithm stops.
+ \begin{tcolorbox}[title=Unbroken Box,watermark text=unbroken]
+ The box.
+ \end{tcolorbox}
+\item Otherwise, it is checked if at least \refKey{/tcb/lines before break}
+ of the upper box can be placed on the current page.
+ If not, a page break is inserted and the algorithm goes back to Step 2.
+\item Now, the \emph{break sequence} starts.
+ The upper box part or the lower box part is split such that it fits
+ into the current page. The fitting part is named \emph{first part} of
+ the \emph{break sequence} and shipped out.
+ \begin{tcolorbox}[title=Broken Box,watermark text=first,skin=enhancedfirst]
+ The box.
+ \end{tcolorbox}
+\item
+ If the remaining content of the total box
+ fits into the current page, the algorithm continues with Step 7, else
+ with Step 6.
+\item
+ The upper box part or the lower box part is split such that it fits
+ into the current page. The fitting part is named \emph{middle part} of
+ the \emph{break sequence} and shipped out.
+ Then, the algorithm goes back to Step 5.
+ \begin{tcolorbox}[watermark text=middle,skin=enhancedmiddle]
+ The box.
+ \end{tcolorbox}
+\item
+ The remaining part is named \emph{last part} of
+ the \emph{break sequence} and shipped out. The algorithm stops.
+ \begin{tcolorbox}[watermark text=last,skin=enhancedlast]
+ The box.
+ \end{tcolorbox}
+\end{enumerate}
+}
+
+The algorithm takes care that the optional segmentation line never appears at
+the end of a box. The optional lower box part is also checked to
+have at least \refKey{/tcb/lines before break}.
+
+\clearpage
+In principle, all boxes of the \emph{break sequence} share the same geometric
+parameters. The differences are:
+\begin{itemize}
+\item The given \refKey{/tcb/before} and \refKey{/tcb/after} values are
+ used only before the \emph{first} and after the \emph{last} part
+ of the \emph{break sequence}.
+\item A special behavior between the parts of the \emph{break sequence} can
+ be given by \refKey{/tcb/toprule at break},
+ \refKey{/tcb/bottomrule at break},
+ \refKey{/tcb/enlarge top at break by}, and
+ \refKey{/tcb/enlarge bottom at break by}.
+\item The \refKey{/tcb/skin} decides \emph{how} the \emph{first}, \emph{middle},
+ and \emph{last} part look like. Actually, every part type has its own
+ skin given by the options \refKey{/tcb/skin first}, \refKey{/tcb/skin middle}, and
+ \refKey{/tcb/skin last}. Typically, these options are set automatically by
+ the main skin, see Subsection \ref{subsec:breaksequence} from
+ page \pageref{subsec:breaksequence}.
+\end{itemize}
+
+
+\subsection{Limitations and Known Bugs}
+\begin{itemize}
+\item The maximal total height of the upper and of the lower part
+ of normal breakable |tcolorbox|es is about 65536pt (ca.\,2300cm)
+ apiece. If such a part gets longer, the output will get buggy
+ without warning.
+ For very oversized boxes which are longer than 65536pt, use
+ the \docValue{unlimited} value for \refKey{/tcb/breakable}.
+ With the \docValue{unlimited} setting,
+ the applied algorithm has (virtually) no height limit for boxes, but
+ very likely the compiler memory will have to be increased for boxes longer
+ than 300 pages (depending on compiler settings and box content).
+ But it is recommended to use \docValue{unlimited} for critical large boxes only.
+ %,since there \emph{may} be a single interline space deviation (lost glue) around
+ %every 2300cm, e.\,g.\ a \refCom{tcbline*} \emph{may} get lost.
+\item You can nest an unbreakable |tcolorbox| inside another |tcolorbox|,
+ even inside a breakable one.
+ But you cannot not nest a breakable box inside a breakable box.
+ The \refKey{/tcb/breakable} key for a nested box is ignored
+ automatically\footnote{Until |tcolorbox| 3.04, the \refKey{/tcb/breakable} key
+ was not ignored for nested boxes.}, i.\,e.\ inner
+ boxes are always unbreakable.\par
+ After all, in the unlikely case you really want to have the nested box to be breakable,
+ use \refKey{/tcb/enforce breakable} for the nested
+ box\footnote{\refKey{/tcb/enforce breakable} acts like \refKey{/tcb/breakable} until |tcolorbox| 3.04.}.
+ \textbf{But, a breakable box inside a breakable box will usually give a mess.}
+\item If your text content contains some text color changing commands,
+ your color will not survive the break to the next box.
+ But, with the |fontspec| package and |xelatex| or |lualatex|,
+ you can use
+ |\addfontfeatures{Color=mycolor}|
+ to add a font color which survives the break.
+\item\tcbdocmarginnote{\tcbdocnew{2014-10-30}}
+ The |perpage| option of the |footmisc| package is deliberately deactivated
+ inside a breakable box since all footnotes are placed at the end
+ of the box (possibly far away from the reference point).
+\item\tcbdocmarginnote{\tcbdocnew{2016-02-15}}
+ Making a box \refKey{/tcb/breakable} which actually is not broken creates
+ a box which acts \emph{almost} like an unbreakable box. Visual differences
+ are kept as indiscernible as possible, but can appear with certain
+ \refKey{/tcb/before} and \refKey{/tcb/after} settings, especially, if there
+ is an automatic page break before the box.
+\item\tcbdocmarginnote{\tcbdocnew{2016-05-25}}
+ Lua\TeX\ version 0.95 changes the behaviour of the basic |\vsplit| (a bug?!)
+ resulting in badly broken boxes. Thanks to Jeremy Engel,
+ the \mylib{breakable} library contains a patch for this which
+ also loads the the |ifluatex| package.
+\end{itemize}
+
+
+\clearpage
+\subsection{Main Option Keys}
+\begin{docTcbKey}[][doc updated=2017-02-01]{breakable}{\colOpt{=true\textbar false\textbar unlimited}}{default |true|, initially |false|}
+ Allows the |tcolorbox| to be breakable. If the box is larger than the
+ available space at the current page, the box is automatically broken
+ and continued to the next page. All sorts of |tcolorbox| can be made
+ breakable. It depends on the skin how the breaking looks like.
+ If you do not know better, use \refKey{/tcb/enhanced} for breaking a box.
+ The parts of the \emph{break sequence} are numbered
+ by the counter |tcbbreakpart|.
+ \begin{itemize}
+ \item\docValue{false}: Sets the |tcolorbox| to be unbreakable.
+ \item\docValue{true}: Breaks the |tcolorbox| from one page to another.
+ The maximal total height of the upper and of the lower part is
+ about 65536pt (ca.\,2300cm or ca.\,90 pages) apiece.
+ \item\docValue{unlimited}: Experimental code for unlimited total height of
+ breakable boxes.
+ %There \emph{may} be a single interline space deviation (lost glue) around every 2300cm.
+ For boxes longer than 300 pages (or even shorter ones) the
+ compiler memory will have to be increased.
+ \end{itemize}
+
+\begin{dispListing}
+% \usepackage{lipsum} % preamble
+\tcbset{enhanced jigsaw,colback=red!5!white,colframe=red!75!black,
+ watermark color=yellow!25!white,watermark text=\arabic{tcbbreakpart},
+ fonttitle=\bfseries}
+
+\begin{tcolorbox}[breakable,title=My breakable box]
+\lipsum[1-6]
+\end{tcolorbox}
+\end{dispListing}
+\end{docTcbKey}
+{\tcbusetemp}
+
+
+\begin{docTcbKey}{unbreakable}{}{no value, initially set}
+ Sets the |tcolorbox| to be unbreakable.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{enforce breakable}{}{no value}
+ A |tcolorbox| inside a |tcolorbox| is automatically set to be unbreakable.
+ Using \refKey{/tcb/breakable} on such an inner box has no effect.
+ If one \emph{really} wants the inner box to be breakable, use \refKey{/tcb/enforce breakable}.
+ \textbf{This will usually give a mess of shattered boxes. You are advised to not use this option.}\\
+ Note that \refKey{/tcb/enforce breakable} has the functionality
+ that \refKey{/tcb/breakable} had until package version 3.04
+ and exists for backward compatibility.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc updated=2018-07-26]{title after break}{=\meta{text}}{no default, initially empty}
+ The \refKey{/tcb/title} is used only for the \emph{first} part of a
+ \emph{break sequence}. Use |title after break| to create a heading line
+ with \meta{text} as content for all following parts.
+ Also see \refKey{/tcb/extras title after break} for formatting the title text.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{notitle after break}{}{no value, initially set}
+ Removes the title line or following parts in a \emph{break sequence} if set before.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{adjusted title after break}{=\meta{text}}{style, no default, initially unset}
+ Works like \refKey{/tcb/adjusted title} but applied to \refKey{/tcb/title after break}.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{lines before break}{=\meta{number}}{no default, initially |2|}
+ Assures that the given \meta{number} of lines of the upper box part or
+ the lower box part are placed before a break happens.
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}[][doc updated=2017-07-05]{break at}{=\meta{length}\colOpt{/\meta{length}/\ldots/\meta{length}}}{no default, initially |0pt|}
+ Defines break points at the given \meta{length} values.
+ The first \meta{length} defines the (maximal) height of the first partial box,
+ the second \meta{length} defines the (maximal) height of the second partial box,
+ and so on. The last \meta{length} value is applied to all following partial boxes if any.
+ \begin{itemize}
+ \item Setting a \meta{length} to |0pt| means that the naturally available
+ space is used for breaking.
+ \item Setting a \meta{length} to a negative value means that
+ the sum of this negative value and the naturally available space is used
+ for breaking (boxes will shrink in height).
+ That that before version 4.10 negative values were treated like |0pt|.
+ \end{itemize}
+\begin{dispExample}
+% \usepackage{multicol,lipsum}
+\begin{multicols}{3}\footnotesize
+Breakable boxes inside a |multicols| environment need special attendance.
+They are broken by default at |\textheight|.
+The |break at| option can be used to insert better break points by hand.
+\begin{tcolorbox}[enhanced jigsaw,size=small,vfill before first,
+ colframe=red,colback=yellow!10!white,before title=\raggedright,
+ title={Broken box inside a |multicols| environment},fonttitle=\bfseries,
+ enforce breakable,% use only breakable in the real world!
+ pad at break=1mm,break at=3cm/6.3cm ]
+\lipsum[1]
+\end{tcolorbox}
+\refKey{/tcb/height fixed for} may also be considered for |multicols| environments.
+\end{multicols}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{enlargepage}{=\meta{length}\colOpt{/\meta{length}/\ldots/\meta{length}}}{no default, initially |0pt|}
+ Inserts a |\enlargethispage|\marg{length} to the pages of the break sequence,
+ i.\,e.\ allows one to enlarge (or shrink) partial boxes. The first \meta{length} is applied
+ to the first partial box, the second \meta{length} is applied
+ to the second partial box, and so on. The last \meta{length} value is applied
+ to all following partial boxes if any. Note that floating boxes will not be enlarged.
+\begin{dispListing}
+\begin{tcolorbox}[breakable,enlargepage=0mm/\baselineskip/2\baselineskip/0mm,...
+\end{dispListing}
+ The example code enlarged the second partial box by one line, the third
+ partial box by two lines, and all following parts are not enlarged.
+ \begin{marker}
+ If an automated page break occures before the first partial box, the
+ page enlargement is applied to the page before the first partial box \emph{and}
+ again to the page of the first partial box. Insert a manual break to prevent this.\\
+ In general, |enlargepage| should be used at the final stage of a document
+ for fine-tuning only.
+ \end{marker}
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}{enlargepage flexible}{=\meta{length}}{no default, initially |0pt|}
+ This allows an automated page enlargement for up to \meta{length}.
+ The algorithm can use this to avoid breaking a box, if there is anough room
+ after enlargement. Also, the \emph{last} partial box of a break sequence
+ may be enlarged to avoid further breaking.\\
+ Note that this potential enlargement is \emph{additive} to settings of
+ \refKey{/tcb/enlargepage}.
+ But \refKey{/tcb/enlargepage flexible} overwrites settings of
+ \refKey{/tcb/pad before break*} or \refKey{/tcb/pad at break*}.
+\begin{dispListing}
+% The following setting hinders orphan lines for the last partial box
+\tcbset{enlargepage flexible=\baselineskip}
+\end{dispListing}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2014-12-15]{compress page}{\colOpt{=\meta{option}}}{default |all|, initially |baselineskip|}
+ This option controls the space management on the page which contains the
+ unbroken box or the first part of a \emph{break sequence}.
+ Feasible \meta{option} values are:
+ \begin{itemize}
+ \item\docValue{all} (default value):
+ All shrinkable glue on the page is potentially used for the
+ unbroken box or the first part of a \emph{break sequence}. Thus, all
+ vertical spaces on the page will potentially be reduced to their
+ minimal values.
+ \item\docValue{baselineskip} (initial value):
+ Shrinkable glue up to one |\baselineskip| on the page is potentially used for the
+ unbroken box or the first part of a \emph{break sequence}.
+ \item\docValue{none}:
+ The break algorithm respects the target size of the given glue values
+ on the page. This was the inital value before version |3.34|.
+ \end{itemize}
+ \begin{marker}
+ Note that the box \emph{content} is not influenced by this option.
+ \end{marker}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{shrink break goal}{=\meta{length}}{no default, initially |0pt|}
+ This is an emergency parameter if the break algorithm produces unpleasant
+ breaks.
+ It shrinks the goal height of the current box part by \meta{length}
+ which may result in smaller boxes. Never use negative values.
+ \emph{Usually, this option will never be needed at all.}
+\end{docTcbKey}
+
+
+\clearpage
+\subsection{Option Keys for the Break Appearance}
+
+\begin{docTcbKey}{toprule at break}{=\meta{length}}{no default, initially \texttt{0.5mm}}
+ Sets the line width of the top rule to \meta{length} \emph{if} the box is \refKey{/tcb/breakable}.
+ In this case, it is applied to \emph{middle} and \emph{last} parts in a
+ break sequence. Note that \refKey{/tcb/toprule} overwrites this value
+ if used afterwards.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{bottomrule at break}{=\meta{length}}{no default, initially \texttt{0.5mm}}
+ Sets the line width of the bottom rule to \meta{length} \emph{if} the box is \refKey{/tcb/breakable}.
+ In this case, it is applied to \emph{first} and \emph{middle} parts in a
+ break sequence. Note that \refKey{/tcb/bottomrule} overwrites this value
+ if used afterwards.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{topsep at break}{=\meta{length}}{no default, initially \texttt{0mm}}
+ Additional vertical space of \meta{length} which is added at the top of
+ \emph{middle} and \emph{last} parts in a break sequence. In general,
+ it is not advisable to change this value if these parts start with a rule or a title.
+\end{docTcbKey}
+
+\begin{docTcbKey}{bottomsep at break}{=\meta{length}}{no default, initially \texttt{0mm}}
+ Additional vertical space of \meta{length} which is added at the bottom of
+ \emph{first} and \emph{middle} parts in a break sequence.
+ In general, it is not advisable to change this value if these parts end with a rule.
+\end{docTcbKey}
+
+\begin{docTcbKey}{pad before break}{=\meta{length}}{style, no default, initially \texttt{3.5mm}}
+ Sets the total amount of vertical space after the text content and before the
+ break point to \meta{length}. This style sets \refKey{/tcb/toprule at break} to |0pt|
+ and changes \refKey{/tcb/topsep at break} as required.
+ In general, it is not advisable to change this value if the
+ \emph{middle} and \emph{last} parts in a break sequence start with a rule or a title.
+\end{docTcbKey}
+
+\begin{docTcbKey}{pad before break*}{=\meta{length}}{style, no default}
+ Sets \refKey{/tcb/pad before break} to \meta{length} and
+ \refKey{/tcb/enlargepage flexible} to an appropriate value such that
+ empty closing frames are avoided.
+\end{docTcbKey}
+
+\begin{docTcbKey}{pad after break}{=\meta{length}}{style, no default, initially \texttt{3.5mm}}
+ Sets the total amount of vertical space after the break point and before the
+ text content to \meta{length}. This style sets \refKey{/tcb/bottomrule at break} to |0pt|
+ and changes \refKey{/tcb/bottomsep at break} as required.
+ In general, it is not advisable to change this value if the
+ \emph{first} and \emph{middle} parts in a break sequence end with a rule.
+\end{docTcbKey}
+
+\begin{docTcbKey}{pad at break}{=\meta{length}}{style, no default, initially \texttt{3.5mm}}
+ Abbreviation for setting \meta{length} to \refKey{/tcb/pad before break}
+ and \refKey{/tcb/pad after break}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{pad at break*}{=\meta{length}}{style, no default}
+ Sets \refKey{/tcb/pad at break} to \meta{length} and
+ \refKey{/tcb/enlargepage flexible} to an appropriate value such that
+ empty closing frames are avoided.
+\end{docTcbKey}
+
+\begin{dispListing}
+% \usepackage{lipsum} % preamble
+\tcbset{colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries}
+
+\begin{tcolorbox}[enhanced jigsaw,breakable,pad at break*=0mm,
+ title={For this box, the pad space at the break point is set to 0mm}]
+ \lipsum[1-2]
+\end{tcolorbox}
+\end{dispListing}
+{\tcbusetemp}
+
+
+\begin{marker}
+\refKey{/tcb/pad at break} or \refKey{/tcb/pad at break*}
+should be used as very last option in an option list, because
+they adapt other settings.
+\end{marker}
+
+
+\begin{marker}
+Also see \refKey{/tcb/enlarge top at break by}
+and \refKey{/tcb/enlarge bottom at break by}.
+\end{marker}
+
+
+\begin{docTcbKey}{height fixed for}{=\meta{part}}{no default, initially |none|}
+ When certain amount of space is available for a partial box of a
+ break sequence, the partial box typically is smaller than this space
+ (depending on the box content). For given \meta{part}(s), the height can be
+ set to all available space.
+ \begin{itemize}
+ \item\docValue{none}: Every partial |tcolorbox| is set with its natural height.
+ \item\docValue{first}: The \emph{first} partial box is set to a height which matches the available space.
+ \item\docValue{middle}: All \emph{middle} partial boxes are set to a height which matches the available space.
+ \item\docValue{last}: The \emph{last} partial box is set to a height which matches
+ the available space.
+ \item\docValue{first and middle}: The \emph{first} and
+ all \emph{middle} partial boxes are set to a height which matches the available space.
+ \item\docValue{middle and last}: All \emph{middle} partial boxes and the \emph{last} partial box
+ are set to a height which matches the available space.
+ \item\docValue{all}: All partial boxes are set to a height which matches the available space.
+ \end{itemize}
+\begin{marker}
+ If the box keeps unbroken, this option is not applied.
+ See \refKey{/tcb/height} for setting a fixed height for unbroken boxes.
+ See \refKey{/tcb/height fill} for giving unbroken boxes maximum height.
+\end{marker}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{vfill before first}{\colOpt{=true\textbar false}}{default |true|, initially |false|}
+ Inserts a |\vfill| at the begin of the \emph{first} partial box to move this
+ partial box to the end of the current page. This may be used as an alternative
+ to \refKey{/tcb/height fixed for}|=|\docValue{first} to get justified
+ columns or pages. The |\vfill| is not inserted, if the box gets not
+ actually broken.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2017-03-20]{segmentation at break}{\colOpt{=true\textbar false}}{default |true|, initially |true|}
+ If a breakable box contains an \emph{upper part} and a \emph{lower part} and
+ the break happens at the \emph{segmentation} between both parts, then
+ \begin{itemize}
+ \item the segmenation line (or similar) is drawn as first element of the
+ partial box containing the \emph{lower part}, if \refKey{/tcb/segmentation at break}
+ is set to be |true|.
+ \item the segmenation line (or similar) is not drawn at all, if
+ \refKey{/tcb/segmentation at break} is set to be |false|.
+ This may be preferable for skins like \refSkin{bicolor}, \refSkin{tile},
+ or \refSkin{beamer}.
+ \end{itemize}
+\end{docTcbKey}
+
+
+\clearpage
+\subsection{Extra Options for Partial Boxes}\label{subsec:extras}
+
+
+\begin{docTcbKey}[][doc new=2015-07-16]{extras}{=\marg{options}}{no default, initially unset}
+ Adds |tcolorbox| \meta{options} to every box of a \emph{break sequence}
+ after skin settings are done. This is quite late in box processing.
+ Geometry and break settings should \emph{not be used} here, because they
+ will either be ignored or have unexpected negative results. But it is possible
+ to change most colors, skin effects, shadows, borders, frame code, etc.
+ Note that using \refKey{/tcb/extras} for every box is very seldom an
+ advantage over setting the options directly. Usually, \refKey{/tcb/extras first},
+ \refKey{/tcb/extras middle}, etc.\ are sensible to apply.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2015-07-16]{no extras}{}{style, no default, initially set}
+ Removes all extras if set before.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2015-07-16]{extras broken}{=\marg{options}}{no default, initially unset}
+ If the box is set to be \refKey{/tcb/breakable} and \emph{is} broken actually,
+ then the \meta{options} are added to every box of the \emph{break sequence}.
+ \refKey{/tcb/extras} overwrites this key.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2015-07-16]{extras unbroken}{=\marg{options}}{no default, initially unset}
+ If the box is set to be \refKey{/tcb/breakable} but \emph{is not} broken actually
+ or if the box is set to be \refKey{/tcb/unbreakable},
+ then the \meta{options} are added to the box.
+ \refKey{/tcb/extras} overwrites this key.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2015-07-16]{no extras unbroken}{}{style, no default, initially set}
+ Removes the unbroken extras if set before.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2015-07-16]{extras first}{=\marg{options}}{no default, initially unset}
+ If the box is set to be \refKey{/tcb/breakable} and \emph{is} broken actually,
+ then the \meta{options} are added to the \emph{first} box of the break sequence.
+ \refKey{/tcb/extras} overwrites this key.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2015-07-16]{no extras first}{}{style, no default, initially set}
+ Removes the first extras if set before.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2015-07-16]{extras middle}{=\marg{options}}{no default, initially unset}
+ If the box is set to be \refKey{/tcb/breakable} and \emph{is} broken actually,
+ then the \meta{options} are added to every \emph{middle} box (if any) of the break sequence.
+ \refKey{/tcb/extras} overwrites this key.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2015-07-16]{no extras middle}{}{style, no default, initially set}
+ Removes the middle extras if set before.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2015-07-16]{extras last}{=\marg{options}}{no default, initially unset}
+ If the box is set to be \refKey{/tcb/breakable} and \emph{is} broken actually,
+ then the \meta{options} are added to the \emph{last} box of the break sequence.
+ \refKey{/tcb/extras} overwrites this key.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2015-07-16]{no extras last}{}{style, no default, initially set}
+ Removes the last extras if set before.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2015-07-16]{extras unbroken and first}{=\marg{options}}{no default, initially unset}
+ This is an abbreviation for setting
+ \refKey{/tcb/extras unbroken} and
+ \refKey{/tcb/extras first} together.
+ \refKey{/tcb/extras} overwrites this key.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2015-07-16]{extras middle and last}{=\marg{options}}{no default, initially unset}
+ This is an abbreviation for setting
+ \refKey{/tcb/extras middle} and
+ \refKey{/tcb/extras last} together.
+ \refKey{/tcb/extras} overwrites this key.
+\end{docTcbKey}
+
+\enlargethispage*{1cm}
+\begin{docTcbKey}[][doc new=2015-07-16]{extras unbroken and last}{=\marg{options}}{no default, initially unset}
+ This is an abbreviation for setting
+ \refKey{/tcb/extras unbroken} and
+ \refKey{/tcb/extras last} together.
+ \refKey{/tcb/extras} overwrites this key.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2015-07-16]{extras first and middle}{=\marg{options}}{no default, initially unset}
+ This is an abbreviation for setting
+ \refKey{/tcb/extras first} and
+ \refKey{/tcb/extras middle} together.
+ \refKey{/tcb/extras} overwrites this key.
+\end{docTcbKey}
+
+\clearpage
+
+\begin{docTcbKey}[][doc new=2018-07-26]{extras title after break}{=\marg{options}}{no default, initially unset}
+ If the box has a \refKey{/tcb/title after break}, then the \meta{options}
+ are added for all titles after the first break, i.e.\ all middle and last.
+ The color, font, and alignment of titles after break can be adapted choosing
+ \meta{options}, e.g.\ by \refKey{/tcb/coltitle}, \refKey{/tcb/fonttitle},
+ \refKey{/tcb/halign title}.
+ Note that \refKey{/tcb/colbacktitle} has to be placed into
+ \refKey{/tcb/extras middle and last}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2018-07-26]{no extras title after break}{}{style, no default, initially set}
+ Removes the title after break extras if set before.
+\end{docTcbKey}
+
+\bigskip
+
+\begin{exdispExample}{extras}
+% \usepackage{lipsum,multicol}
+% \usetikzlibrary{decorations.pathmorphing}
+% \tcbuselibrary{skins}
+\newtcolorbox{mybox}[1][]{
+ tile,
+ colback=green!7,coltitle=blue!50!black,colbacktitle=blue!5,
+ center title,
+ toprule=1.25mm,bottomrule=1.25mm,
+ extras unbroken and first={
+ borderline north={0.25mm}{0.5mm}{blue,decoration={zigzag,amplitude=0.5mm},decorate}},
+ extras unbroken and last={
+ borderline south={0.25mm}{0.5mm}{blue,decoration={zigzag,amplitude=0.5mm},decorate}},
+ #1
+}
+
+\begin{mybox}[title=My unbroken box]
+\lipsum[1]
+\end{mybox}
+
+\begin{multicols}{3}
+ \begin{mybox}[title=My broken box,
+ enforce breakable,% use only breakable in the real world!
+ break at=4.2cm,pad at break=2mm,
+ height fixed for=first and middle, ]
+ \lipsum[2]
+ \end{mybox}
+\end{multicols}
+\end{exdispExample}
+
+
+
+
+\clearpage
+\subsection{Breakable boxes and the \texttt{multicol} package}\label{subsec:multicol}
+\begin{marker}
+With version 4.10, the algorithm for detecting the available height
+for a |tcolorbox| inside a |multicol| environment was improved with help
+of Frank Mittelbach. This change \emph{may} impact existing user
+code which \emph{may} have to be adapted.
+\end{marker}
+
+\begin{multicols}{2}
+\begin{tcolorbox}[enhanced jigsaw,size=small,breakable,colback=yellow!10!white,
+ colframe=red!50!white,break at=3cm,height fixed for=all]
+Unbreakable |tcolorbox|es can be used without special care inside a
+|multicols| environment from the |multicol| package \cite{mittelbach:2015a}.
+
+Since version 3.10, a breakable |tcolorbox| detects, if it is used inside
+a |multicols| environment. But choosing break points for a breakable box
+cannot be done by the balancing routine of |multicols|. By default, boxes
+will break at maximum column height. To get pleasant results, use the
+\refKey{/tcb/break at} and \refKey{/tcb/height fixed for} options.
+\end{tcolorbox}
+\end{multicols}
+
+\enlargethispage{\baselineskip}
+\begin{dispListing}
+% \usepackage{lipsum,multicol} % preamble
+\footnotesize
+\begin{multicols}{2}
+ \lipsum[1]
+ \begin{tcolorbox}[enhanced jigsaw,breakable,size=title,
+ colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries,
+ title=My breakable box,pad at break=1mm, break at=-\baselineskip/0pt ]
+ \lipsum[2-4]
+ \end{tcolorbox}
+ \lipsum[4]
+\end{multicols}
+\end{dispListing}
+{\tcbusetemp}
+
+\clearpage
+
+\begin{multicols}{2}
+\small
+This example is already set inside a |multicols| environment.
+This time, a \emph{middle} part has full column height (here |\textheight|).
+\refKey{/tcb/height fixed for} is used to spread this box part over the full
+height to align with neighboring columns.
+\begin{dispListing}
+% \usepackage{lipsum,multicol}
+\lipsum[1]
+\begin{tcolorbox}[enhanced jigsaw,
+ breakable,
+ size=title,
+ colback=red!5!white,
+ colframe=red!75!black,
+ fonttitle=\bfseries,
+ title=My breakable box,
+ pad at break=2mm,
+ break at=-\baselineskip/0pt,
+ height fixed for=middle ]
+\lipsum[2-7]
+\end{tcolorbox}
+\lipsum[8]
+\end{dispListing}
+{\tcbusetemp}
+\end{multicols}
+
+
+The following example has a |\tcolorbox| which fills the |\multicols|
+environment completely. Here, \refKey{/tcb/height fixed for} is used
+to give all three columns the full height.
+Note that the appropriate \refKey{/tcb/break at} value is not computed
+automatically but set manually.
+
+\begin{dispListing}
+% \usepackage{lipsum,multicol} % preamble
+\small
+\begin{multicols}{3}
+ \begin{tcolorbox}[enhanced jigsaw,breakable,size=small,
+ colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries,
+ title=My breakable box,pad at break=2mm,drop fuzzy shadow,
+ height fixed for=all, break at=11.4cm ]
+ \lipsum[1-3]
+ \end{tcolorbox}
+\end{multicols}
+\end{dispListing}
+{\tcbusetemp}
+
+\clearpage
+\subsection{Break Point Insertion}\label{subsec:breakpoints}
+
+\begin{docCommand}[doc new=2017-07-05]{tcbbreak}{}
+ A \emph{breakable} box is not broken, if there is enough
+ space on the current page or column.
+ Therefore, typical penalty insertion with
+ |\break|, |\pagebreak|, |\columnbreak|, \ldots \emph{may} only work as
+ expected, if the box is broken at least into two parts
+ \emph{without} inserting the penalties.\par\smallskip
+ To \emph{force} a page or column break, \refCom{tcbbreak}
+ starts a new paragraph and inserts an insane tall rule which causes a
+ break and which is immediately discarded. You may ignore this technical
+ information and just use it as you would use |\pagebreak|.\par\smallskip
+ For an \emph{unbreakable box}, \refCom{tcbbreak} is identical to insert |\par|,
+ i.e.\ it just starts a new paragraph.\par\smallskip
+ Also see \refKey{/tcb/break at} for defining height dependend breaks.
+
+\begin{dispListing}
+% \usepackage{lipsum,multicol} % preamble
+\begin{multicols}{3}
+ \begin{tcolorbox}[breakable,enhanced jigsaw,size=small,
+ colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries,
+ title=Break into parts
+ ]
+ First part\tcbbreak
+ Second part\tcbbreak
+ Third part
+ \end{tcolorbox}
+\end{multicols}
+
+\begin{multicols}{3}
+ \begin{tcolorbox}[enhanced jigsaw,size=small,
+ colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries,
+ title=You shall not break
+ ]
+ First part\tcbbreak
+ Second part\tcbbreak
+ Third part
+ \end{tcolorbox}
+\end{multicols}
+
+\end{dispListing}
+{\tcbusetemp}
+
+\end{docCommand}
+
+
+
+\clearpage
+\subsection{Break Sequence for the Skins}\label{subsec:breaksequence}
+The following diagrams document the \emph{break sequence} for different
+skins. Depending on the main skin of a |tcolorbox|, the actual skins of
+the \emph{break sequence} parts are displayed.
+
+\def\tcbbreakskininto#1#2#3#4#5{%
+\begin{center}\begin{tikzpicture}
+\tcbset{width=7cm,colframe=Navy,colback=AliceBlue,fonttitle=\bfseries,
+ watermark color=AliceBlue!85!Navy,#5
+ }
+\node[above] (unbroken) at (0,0) {\begin{tcolorbox}[title=Unbroken Box,skin=#1,watermark text=unbroken,height=3.8cm]
+\texttt{skin=#1}
+\end{tcolorbox}};
+\node[above] (first) at (8.7,2.4) {\begin{tcolorbox}[title=Broken Boxes,skin=#2,watermark text=first,height=1.4cm]
+\texttt{skin=#2}
+\end{tcolorbox}};
+\node[above] (middle) at (8.7,1.2) {\begin{tcolorbox}[skin=#3,watermark text=middle,height=1cm]
+\texttt{skin=#3}
+\end{tcolorbox}};
+\node[above] (last) at (8.7,0) {\begin{tcolorbox}[skin=#4,watermark text=last,height=1cm]
+\texttt{skin=#4}
+\end{tcolorbox}};
+\path[draw=FireBrick,line width=2pt,->] (unbroken) edge (first.west) edge (middle.west) edge (last.west);
+\end{tikzpicture}\end{center}}
+
+\tcbbreakskininto{standard}{standard}{standard}{standard}{watermark text/.style={}}
+\tcbbreakskininto{standard jigsaw}{standard jigsaw}{standard jigsaw}{standard jigsaw}{watermark text/.style={}}
+\tcbbreakskininto{spartan}{spartan}{spartan}{spartan}{}
+\clearpage
+\tcbbreakskininto{enhanced}{enhancedfirst}{enhancedmiddle}{enhancedlast}{}
+\tcbbreakskininto{enhancedfirst}{enhancedfirst}{enhancedmiddle}{enhancedmiddle}{}
+\tcbbreakskininto{enhancedmiddle}{enhancedmiddle}{enhancedmiddle}{enhancedmiddle}{}
+\tcbbreakskininto{enhancedlast}{enhancedmiddle}{enhancedmiddle}{enhancedlast}{}
+\clearpage
+\tcbbreakskininto{enhanced jigsaw}{enhancedfirst jigsaw}{enhancedmiddle jigsaw}{enhancedlast jigsaw}{}
+\tcbbreakskininto{enhancedfirst jigsaw}{enhancedfirst jigsaw}{enhancedmiddle jigsaw}{enhancedmiddle jigsaw}{}
+\tcbbreakskininto{enhancedmiddle jigsaw}{enhancedmiddle jigsaw}{enhancedmiddle jigsaw}{enhancedmiddle jigsaw}{}
+\tcbbreakskininto{enhancedlast jigsaw}{enhancedmiddle jigsaw}{enhancedmiddle jigsaw}{enhancedlast jigsaw}{}
+\clearpage
+{\tcbset{borderline={2pt}{0pt}{black!10!white}}%
+\tcbbreakskininto{empty}{emptyfirst}{emptymiddle}{emptylast}{}
+\tcbbreakskininto{emptyfirst}{emptyfirst}{emptymiddle}{emptymiddle}{}
+\tcbbreakskininto{emptymiddle}{emptymiddle}{emptymiddle}{emptymiddle}{}
+\tcbbreakskininto{emptylast}{emptymiddle}{emptymiddle}{emptylast}{}
+}
+\clearpage
+\tcbbreakskininto{bicolor}{bicolorfirst}{bicolormiddle}{bicolorlast}{bicolor}
+\tcbbreakskininto{bicolorfirst}{bicolorfirst}{bicolormiddle}{bicolormiddle}{bicolor}
+\tcbbreakskininto{bicolormiddle}{bicolormiddle}{bicolormiddle}{bicolormiddle}{bicolor}
+\tcbbreakskininto{bicolorlast}{bicolormiddle}{bicolormiddle}{bicolorlast}{bicolor}
+\clearpage
+\tcbbreakskininto{tile}{tilefirst}{tilemiddle}{tilelast}{tile,colbacktitle=Navy}
+\tcbbreakskininto{tilefirst}{tilefirst}{tilemiddle}{tilemiddle}{tile,colbacktitle=Navy}
+\tcbbreakskininto{tilemiddle}{tilemiddle}{tilemiddle}{tilemiddle}{tile,colbacktitle=Navy}
+\tcbbreakskininto{tilelast}{tilemiddle}{tilemiddle}{tilelast}{tile,colbacktitle=Navy}
+\clearpage
+\tcbbreakskininto{beamer}{beamerfirst}{beamermiddle}{beamerlast}{beamer}
+\tcbbreakskininto{beamerfirst}{beamerfirst}{beamermiddle}{beamermiddle}{beamer}
+\tcbbreakskininto{beamermiddle}{beamermiddle}{beamermiddle}{beamermiddle}{beamer}
+\tcbbreakskininto{beamerlast}{beamermiddle}{beamermiddle}{beamerlast}{beamer}
+\clearpage
+\tcbbreakskininto{widget}{widgetfirst}{widgetmiddle}{widgetlast}{widget}
+\tcbbreakskininto{widgetfirst}{widgetfirst}{widgetmiddle}{widgetmiddle}{widget}
+\tcbbreakskininto{widgetmiddle}{widgetmiddle}{widgetmiddle}{widgetmiddle}{widget}
+\tcbbreakskininto{widgetlast}{widgetmiddle}{widgetmiddle}{widgetlast}{widget}
+\tcbbreakskininto{draft}{draft}{draft}{draft}{draft}
+\clearpage
+\tcbbreakskininto{freelance}{freelancefirst}{freelancemiddle}{freelancelast}{}
+\tcbbreakskininto{freelancefirst}{freelancefirst}{freelancemiddle}{freelancemiddle}{}
+\tcbbreakskininto{freelancemiddle}{freelancemiddle}{freelancemiddle}{freelancemiddle}{}
+\tcbbreakskininto{freelancelast}{freelancemiddle}{freelancemiddle}{freelancelast}{}
+
+
+
+
+\clearpage
+\subsection{Break by Hand (Faked Break)}
+
+\begin{marker}
+See \Vref{subsec:multicol} for \emph{real} column breaks.
+\end{marker}
+
+Since the appearance of broken boxes is done by skins, it is quite easy
+to 'fake a break'. For this, you actually don't need the
+\mylib{breakable} library at
+all.
+
+\begin{dispExample}
+\tcbset{enhanced,equal height group=fakedbreak,
+ colback=LightGreen,colframe=DarkGreen,
+ width=(\linewidth-6mm)/3,nobeforeafter,
+ left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm}
+%
+\begin{tcolorbox}[title=My broken box,skin=enhancedfirst]
+This is a box which breaks from one column to another
+\end{tcolorbox}\hfill
+\begin{tcolorbox}[skin=enhancedmiddle]
+column. I am sorry to say that this is a trick.
+Nevertheless, you may use this trick for your
+\end{tcolorbox}\hfill
+\begin{tcolorbox}[skin=enhancedlast]
+own purposes.
+\end{tcolorbox}
+\end{dispExample}
+
+
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.coremacros.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.coremacros.tex
new file mode 100644
index 0000000000..795c0bae49
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.coremacros.tex
@@ -0,0 +1,304 @@
+% !TeX root = tcolorbox.tex
+% include file of tcolorbox.tex (manual of the LaTeX package tcolorbox)
+\clearpage
+\section{Macros for Box Creation}%
+\tcbset{external/prefix=external/coremacros_}%
+\begin{docEnvironment}{tcolorbox}{\oarg{options}}
+ This is the main environment to create an accentuated colored text box with
+ rounded corners and, optionally, two parts. The appearance of this box
+ is controlled by numerous options.
+ In the most simple case the source code
+
+\begin{dispListing}
+\begin{tcolorbox}
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{dispListing}
+
+creates the following compiled text box:
+\begin{tcolorbox}
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+
+The text content of the box can be divided
+in an upper and a lower part
+by the command \refCom{tcblower}. Visually, both parts are separated by a line.
+For example:
+
+\begin{dispListing}
+\begin{tcolorbox}
+This is another \textbf{tcolorbox}.
+\tcblower
+Here, you see the lower part of the box.
+\end{tcolorbox}
+\end{dispListing}
+
+This code gives the following box:
+\begin{tcolorbox}
+This is another \textbf{tcolorbox}.
+\tcblower
+Here, you see the lower part of the box.
+\end{tcolorbox}
+
+The \meta{options} control the appearance and several functions of the boxes,
+see \Vref{sec:optkeys} for the complete list.
+A quick example is given here:
+
+\begin{dispExample}
+\begin{tcolorbox}[colback=red!5!white,colframe=red!75!black,title=My nice heading]
+This is another \textbf{tcolorbox}.
+\tcblower
+Here, you see the lower part of the box.
+\end{tcolorbox}
+\end{dispExample}
+\end{docEnvironment}
+
+
+\begin{docCommand}{tcblower}{}
+ Used inside \refEnv{tcolorbox} to separate the upper box part from
+ the optional lower box part. The upper and the lower part are treated
+ as separate functional units. If you only want to draw a line, see
+ \refCom{tcbline}.
+\end{docCommand}
+
+
+\clearpage
+\begin{docCommand}{tcbset}{\marg{options}}
+ Sets options for every following \refEnv{tcolorbox} inside the current \TeX\ group.
+ By default, this does not apply to nested boxes, see \Vref{subsec:everybox}.\par
+ For example, the colors of the boxes may be defined for the whole document by this:
+\begin{dispListing}
+\tcbset{colback=red!5!white,colframe=red!75!black}
+\end{dispListing}
+\end{docCommand}
+
+
+\begin{docCommand}{tcbsetforeverylayer}{\marg{options}}
+ Sets options for every following \refEnv{tcolorbox} inside the current \TeX\ group.
+ In contrast to \refCom{tcbset}, this does also
+ apply to nested boxes, see \Vref{subsec:everybox}.
+ Technically, the \meta{options} are appended to the default values for every
+ tcolorbox which are applied by \refKey{/tcb/reset}.\par
+ You should not use this macro, if you are not completely sure that you
+ want to have the \meta{options} also for boxes in boxes (in boxes in boxes \ldots).
+\begin{dispExample}
+\tcbset{colback=green!10!white}
+\tcbsetforeverylayer{colframe=red!75!black}
+
+\begin{tcolorbox}[title=All options for this box]
+ This is a tcolorbox.\par\medskip
+ \begin{tcolorbox}[title=Nested box]
+ Note that this nested box has a red frame but no green background.
+ \end{tcolorbox}
+\end{tcolorbox}
+\bigskip
+
+\begin{tcolorbox}[reset]
+ Options given with |\tcbsetforeverylayer| survive a |reset|.
+\end{tcolorbox}
+\end{dispExample}
+\end{docCommand}
+
+
+\clearpage
+\begin{docCommand}{tcbox}{\oarg{options}\marg{box content}}
+ Creates a colored box which is fitted to the width of the given
+ \meta{box content}. In principle, most \meta{options} for a \refEnv{tcolorbox}
+ can be used for |\tcbox| with some restrictions. A |\tcbox| cannot have
+ a lower part and cannot be broken.
+
+\begin{dispExample}
+\tcbset{colframe=blue!50!black,colback=white,colupper=red!50!black,
+ fonttitle=\bfseries,nobeforeafter,center title}
+
+Text \tcbox[tcbox raise base]{Hello World}\hfill
+%
+\tcbox[left=0mm,right=0mm,top=0mm,bottom=0mm,boxsep=0mm,
+ toptitle=0.5mm,bottomtitle=0.5mm,title=My table]{%
+ \arrayrulecolor{blue!50!black}\renewcommand{\arraystretch}{1.2}%
+ \begin{tabular}{r|c|l}
+ One & Two & Three \\\hline\hline
+ Men & Mice & Lions \\\hline
+ Upper & Middle & Lower
+ \end{tabular}}\hfill
+%
+\tcbox[colback=blue!85!black,
+ left=0mm,right=0mm,top=0mm,bottom=0mm,boxsep=1mm,arc=0mm,boxrule=0.5pt,
+ title=My picture]{%
+ \includegraphics[width=5cm]{Basilica_5.png}}
+\end{dispExample}
+
+\begin{dispExample}
+% \usepackage{tikz}
+\tcbset{colframe=blue!50!black,colback=white,colupper=red!50!black,
+ fonttitle=\bfseries,center title}
+
+% Fixed width box
+\begin{tcolorbox}Hello\\World!\end{tcolorbox}
+
+% Fitted width box (like hbox or makebox)
+\tcbox{Hello\\World!}
+
+% Fitted width box (using a \tikzname\ node)
+\tcbox[tikznode]{Hello\\World!}
+\end{dispExample}
+
+\end{docCommand}
+
+\clearpage
+\begin{marker}
+See \Vref{subsec:xparse_tcolorbox} and \Vref{subsec:xparse_tcbox} for more
+elaborate methods to create new environments and commands.
+\end{marker}
+
+\begin{docCommand}{newtcolorbox}{\oarg{init options}\marg{name}\oarg{number}\oarg{default}\marg{options}}
+ Creates a new environment \meta{name} based on \refEnv{tcolorbox}.
+ Basically, |\newtcolorbox| operates like |\newenvironment|. This means,
+ the new environment \meta{name} optionally takes \meta{number} arguments, where
+ \meta{default} is the default value for the optional first argument.
+ The \meta{options} are given to the underlying |tcolorbox|.
+ Note that \refKey{/tcb/savedelimiter} is set to the given \meta{name}
+ automatically.
+ The \meta{init options} allow setting up automatic numbering,
+ see Section \ref{sec:initkeys} from page \pageref{sec:initkeys}.
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+\newtcolorbox{mybox}{colback=red!5!white,
+ colframe=red!75!black}
+
+\begin{mybox}
+This is my own box.
+\end{mybox}
+\end{dispExample*}
+
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+\newtcolorbox{mybox}[1]{colback=red!5!white,
+ colframe=red!75!black,fonttitle=\bfseries,
+ title=#1}
+
+\begin{mybox}{Hello there}
+This is my own box with a mandatory title.
+\end{mybox}
+\end{dispExample*}
+
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+\newtcolorbox{mybox}[2][]{colback=red!5!white,
+ colframe=red!75!black,fonttitle=\bfseries,
+ colbacktitle=red!85!black,enhanced,
+attach boxed title to top center={yshift=-2mm},
+ title=#2,#1}
+
+\begin{mybox}[colback=yellow]{Hello there}
+This is my own box with a mandatory title
+and options.
+\end{mybox}
+\end{dispExample*}
+
+\inputpreamblelisting{A}
+
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+\begin{pabox}[colback=yellow]{Hello there}
+This is my own box with a mandatory
+numbered title and options.
+\end{pabox}
+\end{dispExample*}
+\end{docCommand}
+
+
+\begin{docCommand}{renewtcolorbox}{\oarg{init options}\marg{name}\oarg{number}\oarg{default}\marg{options}}
+ Operates like \refCom{newtcolorbox}, but based on |\renewenvironment| instead of |\newenvironment|.
+ An existing environment is redefined.
+\end{docCommand}
+
+
+\clearpage
+\begin{docCommand}{newtcbox}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\oarg{number}\oarg{default}\marg{options}}
+ Creates a new macro \texttt{\textbackslash}\meta{name} based on \refCom{tcbox}.
+ Basically, |\newtcbox| operates like |\newcommand|.
+ The new macro \texttt{\textbackslash}\meta{name} optionally takes \meta{number}$+1$ arguments, where
+ \meta{default} is the default value for the optional first argument.
+ The \meta{options} are given to the underlying |tcbox|.
+ The \meta{init options} allow setting up automatic numbering,
+ see Section \ref{sec:initkeys} from page \pageref{sec:initkeys}.
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+\newtcbox{\mybox}{colback=red!5!white,
+ colframe=red!75!black}
+
+\mybox{This is my own box.}
+\end{dispExample*}
+
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+\newtcbox{\mybox}[1]{colback=red!5!white,
+ colframe=red!75!black,fonttitle=\bfseries,
+ title=#1}
+
+\mybox{Hello there}{This is my own box.}
+\end{dispExample*}
+
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+\newtcbox{\mybox}[2][]{colback=red!5!white,
+ colframe=red!75!black,fonttitle=\bfseries,
+ title=#2,#1}
+
+\mybox[colback=yellow]{Hello there}%
+ {This is my own box.}
+\end{dispExample*}
+
+\inputpreamblelisting{B}
+
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+\pbbox[colback=yellow]{Hello there}%
+ {This is my own box.}
+\end{dispExample*}
+
+\begin{dispExample}
+\newtcbox{\mybox}[1][red]{on line,
+ arc=0pt,outer arc=0pt,colback=#1!10!white,colframe=#1!50!black,
+ boxsep=0pt,left=1pt,right=1pt,top=2pt,bottom=2pt,
+ boxrule=0pt,bottomrule=1pt,toprule=1pt}
+\newtcbox{\xmybox}[1][red]{on line,
+ arc=7pt,colback=#1!10!white,colframe=#1!50!black,
+ before upper={\rule[-3pt]{0pt}{10pt}},boxrule=1pt,
+ boxsep=0pt,left=6pt,right=6pt,top=2pt,bottom=2pt}
+
+The \mybox[green]{quick} brown \mybox{fox} \mybox[blue]{jumps} over the
+\mybox[green]{lazy} \mybox{dog}.\par
+The \xmybox[green]{quick} brown \xmybox{fox} \xmybox[blue]{jumps} over the
+\xmybox[green]{lazy} \xmybox{dog}.
+\end{dispExample}
+
+\end{docCommand}
+
+
+\enlargethispage*{1cm}
+\begin{docCommand}{renewtcbox}{\oarg{init options}\brackets{\texttt{\textbackslash}\rmfamily\meta{name}}\oarg{number}\oarg{default}\marg{options}}
+ Operates like \refCom{newtcbox}, but based on |\renewcommand| instead of |\newcommand|.
+ An existing macro is redefined.
+\end{docCommand}
+
+\clearpage
+
+\begin{docCommand}[doc new=2014-10-20]{tcolorboxenvironment}{\marg{name}\marg{options}}
+ An existing environment \meta{name} is redefined to be boxed inside a
+ |tcolorbox| with the given \meta{options}.
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+% tcbuselibrary{skins}
+\newenvironment{myitemize}{%
+ \begin{itemize}}{\end{itemize}}
+
+\tcolorboxenvironment{myitemize}{blanker,
+ before skip=6pt,after skip=6pt,
+ borderline west={3mm}{0pt}{red}}
+
+Some text.
+\begin{myitemize}
+\item Alpha
+\item Beta
+\item Gamma
+\end{myitemize}
+More text.
+\end{dispExample*}
+
+\medskip
+See further examples in \Vref{subsec:theorems_other}.
+\end{docCommand}
+
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.coreoptions.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.coreoptions.tex
new file mode 100644
index 0000000000..b8effa83e9
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.coreoptions.tex
@@ -0,0 +1,4392 @@
+% !TeX root = tcolorbox.tex
+% include file of tcolorbox.tex (manual of the LaTeX package tcolorbox)
+\clearpage
+\section{Option Keys}\label{sec:optkeys}%
+\tcbset{external/prefix=external/coreoptions_}%
+For the \meta{options} in \refEnv{tcolorbox} respectively \refCom{tcbset}
+the following |pgf| keys can be applied. The key tree path |/tcb/| is not to
+be used inside these macros. It is easy to add your own style keys using
+the syntax for |pgf| keys, see \cite{tantau:tikz_and_pgf,sturm:2016e} or the examples
+starting from page~\pageref{sec:latextutorial}.
+
+
+\subsection{Title}
+\begin{docTcbKey}{title}{=\meta{text}}{no default, initially empty}
+ Creates a heading line with \meta{text} as content.
+\begin{exdispExample*}{title}{sbs,lefthand ratio=0.6}
+\begin{tcolorbox}[title=My heading line]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+\begin{docTcbKey}{notitle}{}{no value, initially set}
+ Removes the title line if set before.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{adjusted title}{=\meta{text}}{style, no default, initially unset}
+ Creates a heading line with \meta{text} as content. The minimal height of
+ this line is adjusted to fit the text given by \refKey{/tcb/adjust text}.
+ This option makes sense
+ for single line headings if boxes are set side by side with equal height.
+ Note that it is very easy to trick this adjustment.
+\begin{exdispExample}[runs=2]{adjusted_title}
+\tcbset{colback=White,arc=0mm,width=(\linewidth-4pt)/4,
+equal height group=AT,before=,after=\hfill,fonttitle=\bfseries}
+
+The following titles are not adjusted:\\
+\foreach \n in {xxx,ggg,AAA,\"Agypten}
+{\begin{tcolorbox}[title=\n,colframe=red!75!black]
+ Some content.\end{tcolorbox}}
+Now, we try again with adjusted titles:\\
+\foreach \n in {xxx,ggg,AAA,\"Agypten}
+{\begin{tcolorbox}[adjusted title=\n,colframe=blue!75!black]
+ Some content.\end{tcolorbox}}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{adjust text}{=\meta{text}}{no default, initially \texttt{\"Apgjy}}
+ This sets the reference text for \refKey{/tcb/adjusted title}. If your texts
+ never exceed '\"Apgjy' in depth and height you don't need to care about this option.
+\end{docTcbKey}
+
+\clearpage
+
+\begin{docTcbKey}[][doc new=2014-11-24]{squeezed title}{=\meta{text}}{style, no default, initially unset}
+ Creates a single heading line with \meta{text} as content.
+ If the \meta{text} is longer than the available space, the text is
+ squeezed to fit into the available space.
+\begin{exdispExample}{squeezed_title}
+% \tcbuselibrary{raster}
+\begin{tcbitemize}[raster columns=3,raster equal height,
+ colframe=red!75!black,colback=red!5!white,fonttitle=\bfseries]
+\tcbitem[squeezed title={Short title}]
+ First box
+\tcbitem[squeezed title={This is a very very long title}]
+ Second box
+\tcbitem[squeezed title={This title is clearly to long for this application}]
+ Third box
+\end{tcbitemize}
+\end{exdispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2014-11-24]{squeezed title*}{=\meta{text}}{style, no default, initially unset}
+ This is a combination of \refKey{/tcb/adjusted title} and \refKey{/tcb/squeezed title}.
+\begin{exdispExample}{squeezed_title_2}
+% \tcbuselibrary{raster}
+\begin{tcbitemize}[raster columns=3,raster equal height,
+ colframe=red!75!black,colback=red!5!white,fonttitle=\bfseries]
+\tcbitem[squeezed title*={Short title}]
+ First box
+\tcbitem[squeezed title*={This is a very very long title}]
+ Second box
+\tcbitem[squeezed title*={This title is clearly to long for this application}]
+ Third box
+\end{tcbitemize}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2019-03-01]{titlebox}{=\meta{mode}}{no default, initially \texttt{visible}}
+ Controls the treatment of the title part of the box.
+ Feasible values for \meta{mode} are:
+ \begin{itemize}
+ \item\docValue{visible}: usual type setting of the title box,
+ \item\docValue{invisible}: empty space instead of the title contents.
+ \end{itemize}
+\begin{exdispExample}{titlebox}
+\begin{tcolorbox}[title=My invisible title,
+ titlebox=invisible]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+
+\clearpage
+\begin{docTcbKey}{detach title}{}{no value}
+Detaches the title from its normal position. The text of the title is
+stored into \docAuxCommand{tcbtitletext} and the formatted title is
+available by \docAuxCommand{tcbtitle}.
+The main application is to move the title from its usual place to another one.
+\begin{exdispExample}{detach_title}
+\newtcolorbox{mybox}[2][]{colbacktitle=red!10!white,
+ colback=blue!10!white,coltitle=red!70!black,
+ title={#2},fonttitle=\bfseries,#1}
+
+\begin{mybox}{My title}
+ This is a \textbf{tcolorbox}.
+\end{mybox}
+\begin{mybox}[detach title,before upper={\tcbtitle\quad}]{My title}
+ This is a \textbf{tcolorbox}.
+\end{mybox}
+\begin{mybox}[detach title,after upper={\par\hfill\tcbtitle}]{My title}
+ This is a \textbf{tcolorbox}.
+\end{mybox}
+\end{exdispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}{attach title}{}{no value}
+Attaches the title to its normal position. This option is used to reverse
+\refKey{/tcb/detach title}.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc updated=2015-07-08]{attach title to upper}{\colOpt{=\meta{text}}}{style, default empty, initially unset}
+Attaches the title to the begin of the upper part of the box content.
+The optional \meta{text} is set between the formatted title and the box content.
+\begin{exdispExample}{attach_title_to_upper}
+\newtcolorbox{mybox}[2][]{colbacktitle=red!10!white,
+ colback=blue!10!white,coltitle=red!70!black,
+ title={#2},fonttitle=\bfseries,#1}
+
+\begin{mybox}[attach title to upper={\ ---\ }]{My title}
+ This is a \textbf{tcolorbox}.
+\end{mybox}
+\begin{mybox}[attach title to upper,after title={:\ }]{My title}
+ This is a \textbf{tcolorbox}.
+\end{mybox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\bigskip
+\begin{marker}
+More title options are documented in \Vref{subsec:contentadditions}
+and \Vref{subsec:skinboxedtitle}.
+\end{marker}
+
+
+
+\clearpage
+\subsection{Subtitle}
+
+Inside the box content, one or more subtitles can be added.
+In general, a subtitle is a further \refEnv{tcolorbox} which inherits some
+color and geometry options from the enclosing box. It may be customized
+just like any other \refEnv{tcolorbox}.
+
+\begin{docCommand}[doc new=2014-10-10]{tcbsubtitle}{\oarg{options}\marg{text}}
+ Used inside a \refEnv{tcolorbox} to add a subtitle box with the given \meta{text}.
+ This is an independent \refEnv{tcolorbox} which is formatted by several
+ inherited properties of the enclosing box, by further settings from
+ \refKey{/tcb/subtitle style}, and by the given \meta{options}.
+\begin{exdispExample*}{tcbsubtitle_1}{sbs,lefthand ratio=0.6}
+\begin{tcolorbox}[title=My title,
+ colback=red!5!white,
+ colframe=red!75!black,
+ fonttitle=\bfseries]
+ This is a \textbf{tcolorbox}.
+\tcbsubtitle[before skip=\baselineskip]%
+ {My subtitle}
+ Further text.
+\end{tcolorbox}
+\end{exdispExample*}
+\begin{exdispExample*}{tcbsubtitle_2}{sbs,lefthand ratio=0.6}
+\begin{tcolorbox}[title=My title,
+ colback=red!5!white,
+ colframe=red!75!black,
+ colbacktitle=yellow!50!red,
+ coltitle=red!25!black,
+ fonttitle=\bfseries]
+ This is a \textbf{tcolorbox}.
+\tcbsubtitle[before skip=\baselineskip]%
+ {My subtitle}
+ Further text.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docCommand}
+
+\begin{docTcbKey}[][doc new=2014-10-10]{subtitle style}{=\meta{options}}{no default, initially empty}
+ Adds |tcolorbox| \meta{options} to the settings for \refCom{tcbsubtitle}.
+\begin{exdispExample*}{subtitle_style}{sbs,lefthand ratio=0.6}
+\begin{tcolorbox}[title=My title,
+ colback=red!5!white,
+ colframe=red!75!black,
+ colbacktitle=yellow!50!red,
+ coltitle=red!25!black,
+ fonttitle=\bfseries,
+ subtitle style={boxrule=0.4pt,
+ colback=yellow!50!red!25!white} ]
+ This is a \textbf{tcolorbox}.
+\tcbsubtitle{My subtitle}
+ Further text.
+\tcbsubtitle{Second subtitle}
+ Further text.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+\clearpage
+\subsection{Upper Part}
+The text content of a \refEnv{tcolorbox} may be parted into a mandatory \emph{upper part}
+and an optional \emph{lower part}. These parts are separated by
+\refCom{tcblower}. If there is no \refCom{tcblower} present, there is no
+\emph{lower part} and the \emph{upper part} forms the complete text content.
+
+\begin{docTcbKey}[][doc new=2015-01-06]{upperbox}{=\meta{mode}}{no default, initially \texttt{visible}}
+ Controls the treatment of the upper part of the box. If there is no lower part,
+ this is the complete text content.
+ Feasible values for \meta{mode} are:
+ \begin{itemize}
+ \item\docValue{visible}: usual type setting of the upper part,
+ \item\docValue{invisible}: empty space instead of the upper part contents.
+ \end{itemize}
+\begin{exdispExample}{upperbox}
+\begin{tcolorbox}[upperbox=invisible,colback=white]
+This is a \textbf{tcolorbox} (but invisible).
+\end{tcolorbox}
+
+\bigskip
+
+\begin{tcolorbox}[upperbox=invisible,colback=white]
+This is a \textbf{tcolorbox} (but invisible).
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new and updated={2015-01-06}{2019-03-01}]{visible}{}{style, no value}
+ Shortcut for setting \refKey{/tcb/upperbox}, \refKey{/tcb/lowerbox}, and \refKey{/tcb/titlebox}
+ to be \docValue{visible}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new and updated={2015-01-06}{2019-03-01}]{invisible}{}{style, no value}
+ Shortcut for setting \refKey{/tcb/upperbox}, \refKey{/tcb/lowerbox}, and \refKey{/tcb/titlebox}
+ to be \docValue{invisible}.
+\begin{exdispExample}{invisible}
+\begin{tcolorbox}[invisible]
+This is a \textbf{tcolorbox} (but invisible).
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}[][doc new=2015-05-04]{saveto}{=\meta{file name}}{no default, initially empty}
+ Saves the content of the box into a file for an optional later usage.
+ This is the counterpart of \refKey{/tcb/savelowerto}, but is saves not
+ only the upper part but the whole content. If a lower part is present,
+ it is also saved including \refCom{tcblower}.
+ \begin{marker}
+ This option cannot be combined with \refKey{/tcb/savelowerto}.
+ \end{marker}
+
+\begin{exdispExample}{saveto_1}
+\begin{tcolorbox}[invisible,saveto=\jobname_mysave1.tex,colback=white]
+This is a \textbf{tcolorbox} which seems to be empty.
+The content is saved for later usage.
+\end{tcolorbox}
+
+Now, we load the saved text:\\
+\input{\jobname_mysave1.tex}
+\end{exdispExample}
+
+\begin{exdispExample}{saveto_2}
+\begin{tcolorbox}[saveto=\jobname_mysave2.tex]
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+
+Now, we load the saved text:
+\begin{tcolorbox}[colframe=red,colback=red!10,
+ coltitle=black,colbacktitle=red!20,sidebyside,
+ title=Here we see the saved content including the lower part]
+\input{\jobname_mysave2.tex}
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+
+\clearpage
+\subsection{Lower Part}
+\begin{docTcbKey}{lowerbox}{=\meta{mode}}{no default, initially \texttt{visible}}
+ Controls the treatment of the lower part of the box.
+ Feasible values for \meta{mode} are:
+ \begin{itemize}
+ \item\docValue{visible}: usual type setting of the lower part,
+ \item\docValue{invisible}: empty space instead of the lower part contents,
+ \item\docValue{ignored}: the lower part is not used (here).
+ \end{itemize}
+ The last two values are usually applied in connection with |savelowerto|.
+\begin{exdispExample}{lowerbox}
+\begin{tcolorbox}[lowerbox=invisible,colback=white]
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part (but invisible).
+\end{tcolorbox}
+
+\begin{tcolorbox}[lowerbox=ignored,colback=white]
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part (but ignored).
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc updated=2014-11-28]{savelowerto}{=\meta{file name}}{no default, initially empty}
+ Saves the content of the lower part into a file for an optional later usage.
+\begin{exdispExample}{savelowerto}
+\begin{tcolorbox}[lowerbox=invisible,savelowerto=\jobname_bspsave.tex,colback=white]
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part which may be quite complex:
+$\displaystyle f(x)=\frac{1+x^2}{1-x^2}$.
+\end{tcolorbox}
+
+Now, we load the saved text:\\
+\input{\jobname_bspsave.tex}
+\end{exdispExample}
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}{lower separated}{\colOpt{=true\textbar false}}{default |true|, initially |true|}
+If set to |true|, the lower part is visually separated from the upper part.
+It depends on the chosen skin how the visualization of the separation is done.
+\enlargethispage*{1cm}
+\begin{exdispExample}{lower_separated}
+% \tcbuselibrary{skins,raster}
+\begin{tcbraster}[colback=red!5!white,colframe=red!75!black,
+ fonttitle=\bfseries,fontlower=\itshape]
+%
+\begin{tcolorbox}[title=Lower separated]
+This is the upper part.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+%
+\begin{tcolorbox}[title=Lower not separated,lower separated=false]
+This is the upper part.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+%
+\begin{tcolorbox}[sidebyside,title=Lower separated]
+This is the upper part.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+%
+\begin{tcolorbox}[sidebyside,title=Lower not separated,lower separated=false]
+This is the upper part.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+%
+\begin{tcolorbox}[beamer,title=Lower separated]
+This is the upper part.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+%
+\begin{tcolorbox}[beamer,title=Lower not separated,lower separated=false]
+This is the upper part.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+%
+\end{tcbraster}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}{savedelimiter}{=\meta{name}}{no default, initially \texttt{tcolorbox}}
+ Used in connection with new environment definitions which extend
+ |tcolorbox| and use or allow the option |savelowerto|.
+ To catch the end of the new box environment \meta{name} has to be the name of
+ this environment. Additionally, the environment definition has to use
+ |\tcolorbox| instead of
+ |\begin{tcolorbox}| and |\endtcolorbox| instead of |\end{tcolorbox}|.
+\begin{exdispExample}{savedelimiter1}
+\newenvironment{mybox}[1]{%
+ \tcolorbox[savedelimiter=mybox,
+ savelowerto=\jobname_bspsave2.tex,lowerbox=ignored,
+ colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries,
+ title=#1]}%
+ {\endtcolorbox}
+
+\begin{mybox}{My Example}
+Upper part.
+\tcblower
+Saved lower part!
+\end{mybox}
+
+Now, the saved part is used:
+\begin{tcolorbox}[colback=green!5]
+\input{\jobname_bspsave2.tex}
+\end{tcolorbox}
+\end{exdispExample}
+
+The |savedelimiter| is used implicitely with \refCom{newtcolorbox} which
+allows a more convenient usage:
+\begin{exdispExample}{savedelimiter2}
+\newtcolorbox{mybox}[1]{%
+ savelowerto=\jobname_bspsave2.tex,lowerbox=ignored,
+ colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries,
+ title=#1}%
+
+\begin{mybox}{My Example}
+Upper part.
+\tcblower
+Saved lower part!
+\end{mybox}
+
+Now, the saved part is used:
+\begin{tcolorbox}[colback=green!5]
+\input{\jobname_bspsave2.tex}
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+
+\clearpage
+\subsection{Colors and Fonts}
+\begin{docTcbKey}{colframe}{=\meta{color}}{no default, initially \texttt{black!75!white}}
+ Sets the frame \meta{color} of the box.
+\begin{exdispExample*}{colframe}{sbs,lefthand ratio=0.6}
+\begin{tcolorbox}[colframe=red!50!white]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+\begin{docTcbKey}{colback}{=\meta{color}}{no default, initially \texttt{black!5!white}}
+ Sets the background \meta{color} of the box.
+\begin{exdispExample*}{colback}{sbs,lefthand ratio=0.6}
+\begin{tcolorbox}[colback=red!50!white]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{title filled}{\colOpt{=true\textbar false}}{default |true|, initially |false|}
+ Switches the drawing of the title background according to the given value.
+ This option is set to |true| automatically by \refKey{/tcb/colbacktitle},
+ \refKey{/tcb/opacitybacktitle}, and \refKey{/tcb/title style},
+ and \refKey{/tcb/title code}.
+
+\begin{exdispExample*}{title_filled}{sbs,lefthand ratio=0.6}
+\begin{tcolorbox}[title=My title,title filled]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\begin{tcolorbox}[title=My title,
+ title filled=false]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{colbacktitle}{=\meta{color}}{no default, initially \texttt{black!50!white}}
+ Sets the background \meta{color} of the title area of the box.
+\begin{exdispExample*}{colbacktitle}{sbs,lefthand ratio=0.6}
+\begin{tcolorbox}[colbacktitle=red!50!white,
+ title=My title,coltitle=black,
+ fonttitle=\bfseries]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+
+
+\clearpage
+
+\begin{docTcbKey}{colupper}{=\meta{color}}{no default, initially \texttt{black}}
+ Sets the text \meta{color} of the upper part.
+\begin{exdispExample*}{colupper}{sbs,lefthand ratio=0.6}
+\begin{tcolorbox}[colupper=red!75!black]
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{collower}{=\meta{color}}{no default, initially \texttt{black}}
+ Sets the text \meta{color} of the lower part.
+\begin{exdispExample*}{collower}{sbs,lefthand ratio=0.6}
+\begin{tcolorbox}[collower=red!75!black]
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{coltext}{=\meta{color}}{style, no default, initially \texttt{black}}
+ Sets the text \meta{color} of the box. This is an abbreviation for setting
+ |colupper| and |collower| to the same value.
+\begin{exdispExample*}{coltext}{sbs,lefthand ratio=0.6}
+\begin{tcolorbox}[coltext=red!75!black]
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{coltitle}{=\meta{color}}{no default, initially \texttt{white}}
+ Sets the title text \meta{color} of the box.
+\begin{exdispExample*}{coltitle}{sbs,lefthand ratio=0.6}
+\begin{tcolorbox}[coltitle=red!75!black,
+ colbacktitle=black!10!white,title=Test]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+\clearpage
+
+\begin{docTcbKey}{fontupper}{=\meta{text}}{no default, initially empty}
+ Sets \meta{text} before the content of the upper part (e.\,g.\ font settings).
+\begin{exdispExample}{fontupper}
+\begin{tcolorbox}[fontupper=Hello!~\sffamily]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{fontlower}{=\meta{text}}{no default, initially empty}
+ Sets \meta{text} before the content of the lower part (e.\,g.\ font settings).
+\begin{exdispExample}{fontlower}
+\begin{tcolorbox}[fontlower=\sffamily\bfseries]
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{fonttitle}{=\meta{text}}{no default, initially empty}
+ Sets \meta{text} before the content of the title text (e.\,g.\ font settings).
+\begin{exdispExample}{fonttitle}
+\begin{tcolorbox}[fonttitle=\sffamily\bfseries\large,title=Hello]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+\bigskip
+\begin{marker}
+ More color options are provided by using skins documented in
+ Section \ref{sec:skins} from page \pageref{sec:skins}.
+\end{marker}
+
+
+\clearpage
+\subsection{Text Alignment}
+
+\begin{docTcbKey}[][doc new=2015-05-07]{halign}{=\meta{alignment}}{no default, initially \texttt{justify}}
+ If there is no lower part, |halign| determines the horizontal \meta{alignment}
+ of the text content.
+ Otherwise, |halign| determines the horizontal \meta{alignment}
+ of the upper part of the box only.
+ The feasible values for \meta{alignment} are more or less identical to
+ the corresponding |/tikz/align| settings, even if the implementation differs.
+ \begin{itemize}
+ \item\docValue{justify}: usual left and right justified type setting.
+ \item\docValue{left}: left border justification in analogy to plain \TeX.
+ \item\docValue{flush left}: left border justification with |\raggedright| of \LaTeX.
+ \item\docValue{right}: right border justification in analogy to plain \TeX.
+ \item\docValue{flush right}: right border justification with |\raggedleft| of \LaTeX.
+ \item\docValue{center}: centering in analogy to plain \TeX.
+ \item\docValue{flush center}: centering with |\centering| of \LaTeX.
+ \end{itemize}
+ The differences between the flush and non-flush version are explained in
+ detail in the \tikzname\ manual \cite{tantau:tikz_and_pgf}. The short story is that
+ the non-flush versions will often look more balanced but with more
+ hyphenations.
+
+\begin{exdispExample}{halign}
+\tcbset{colback=red!5!white,colframe=red!75!black,size=small,
+ fonttitle=\bfseries,width=3.5cm,box align=top,
+ nobeforeafter}
+
+\begin{tcolorbox}[adjusted title=flush center,halign=flush center]
+This is a demonstration text for showing how line breaking works.
+\end{tcolorbox}
+\begin{tcolorbox}[adjusted title=flush left,halign=flush left]
+This is a demonstration text for showing how line breaking works.
+\end{tcolorbox}
+\begin{tcolorbox}[adjusted title=flush right,halign=flush right]
+This is a demonstration text for showing how line breaking works.
+\end{tcolorbox}
+
+\begin{tcolorbox}[adjusted title=center,halign=center]
+This is a demonstration text for showing how line breaking works.
+\end{tcolorbox}
+\begin{tcolorbox}[adjusted title=left,halign=left]
+This is a demonstration text for showing how line breaking works.
+\end{tcolorbox}
+\begin{tcolorbox}[adjusted title=right,halign upper=right]
+This is a demonstration text for showing how line breaking works.
+\end{tcolorbox}
+\end{exdispExample}
+
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2015-05-07]{halign upper}{=\meta{alignment}}{no default, initially \texttt{justify}}
+ Alias for \refKey{/tcb/halign}.
+\end{docTcbKey}
+
+\newpage
+\begin{docTcbKey}[][doc new=2015-05-07]{halign lower}{=\meta{alignment}}{no default, initially \texttt{justify}}
+ |halign lower| determines the horizontal \meta{alignment} of the lower part of the box.
+ The feasible values for \meta{alignment} are the same as for \refKey{/tcb/halign}.
+
+\begin{exdispExample}{halign_lower}
+\begin{tcbraster}[raster columns=3,fonttitle=\bfseries,
+ colback=red!5!white,colframe=red!75!black]
+
+ \begin{tcolorbox}[adjusted title=flush center,halign lower=flush center]
+ Upper part. \tcblower Lower part.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=flush left,halign lower=flush left]
+ Upper part. \tcblower Lower part.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=flush right,halign lower=flush right]
+ Upper part. \tcblower Lower part.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=center,halign lower=center]
+ Upper part. \tcblower Lower part.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=left,halign lower=left]
+ Upper part. \tcblower Lower part.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=right,halign lower=right]
+ Upper part. \tcblower Lower part.
+ \end{tcolorbox}
+
+\end{tcbraster}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}[][doc new=2015-05-07]{halign title}{=\meta{alignment}}{no default, initially \texttt{justify}}
+ |halign lower| determines the horizontal \meta{alignment} of the title of the box.
+ The feasible values for \meta{alignment} are the same as for \refKey{/tcb/halign}.
+
+\begin{exdispExample}{halign_title}
+\begin{tcbraster}[raster columns=3,fonttitle=\bfseries,
+ colback=red!5!white,colframe=red!75!black]
+
+ \begin{tcolorbox}[adjusted title=flush center,halign title=flush center]
+ This is a \textbf{tcolorbox}.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=flush left,halign title=flush left]
+ This is a \textbf{tcolorbox}.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=flush right,halign title=flush right]
+ This is a \textbf{tcolorbox}.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=center,halign title=center]
+ This is a \textbf{tcolorbox}.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=left,halign title=left]
+ This is a \textbf{tcolorbox}.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=right,halign title=right]
+ This is a \textbf{tcolorbox}.
+ \end{tcolorbox}
+
+\end{tcbraster}
+\end{exdispExample}
+\end{docTcbKey}
+
+\enlargethispage*{1cm}
+
+\begin{docTcbKey}[][doc updated=2015-05-07]{flushleft upper}{}{style, no value}
+ Shortcut for setting \refKey{/tcb/halign} to \docValue{flush left}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc updated=2015-05-07]{center upper}{}{style, no value}
+ Shortcut for setting \refKey{/tcb/halign} to \docValue{flush center}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc updated=2015-05-07]{flushright upper}{}{style, no value}
+ Shortcut for setting \refKey{/tcb/halign} to \docValue{flush right}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc updated=2015-05-07]{flushleft lower}{}{style, no value}
+ Shortcut for setting \refKey{/tcb/halign lower} to \docValue{flush left}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc updated=2015-05-07]{center lower}{}{style, no value}
+ Shortcut for setting \refKey{/tcb/halign lower} to \docValue{flush center}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc updated=2015-05-07]{flushright lower}{}{style, no value}
+ Shortcut for setting \refKey{/tcb/halign lower} to \docValue{flush right}.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc updated=2015-05-07]{flushleft title}{}{style, no value}
+ Shortcut for setting \refKey{/tcb/halign title} to \docValue{flush left}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc updated=2015-05-07]{center title}{}{style, no value}
+ Shortcut for setting \refKey{/tcb/halign title} to \docValue{flush center}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc updated=2015-05-07]{flushright title}{}{style, no value}
+ Shortcut for setting \refKey{/tcb/halign title} to \docValue{flush right}.
+\end{docTcbKey}
+
+\clearpage
+
+\begin{marker}
+The vertical alignment settings are only relevant for boxes which are larger
+than their natural height, see \Fullref{sec:heightcontrol}.
+\end{marker}
+
+\begin{docTcbKey}[][doc updated=2015-07-16]{valign}{=\meta{alignment}}{no default, initially |top|}
+ If the height of a |tcolorbox| is not the natural height, |valign|
+ determines the vertical \meta{alignment} of the upper part.
+ Feasible values are
+ \begin{itemize}
+ \item\docValue{top}: Anchor text at top.
+ \item\docValue{center}: Anchor text at center.
+ \item\docValue{bottom}: Anchor text at bottom.
+ \item\docValue{scale}: Scale text vertically to fit into the available space.
+ This is brutal and may not look very good. Consider \Fullref{sec:fitting}
+ alternatively.
+ \item\docValue{scale*}: Like \docValue{scale}, but scaling is bounded by
+ \refKey{/tcb/valign scale limit}.
+ \end{itemize}
+ For a box with natural height, these settings are meaningless.
+\begin{exdispExample}{valign}
+\tcbset{width=(\linewidth-2mm)/4,before=,after=\hfill,
+colframe=blue!75!black,colback=white,height=2cm}
+
+\foreach \myalign in {top,center,bottom,scale}
+{\begin{tcolorbox}[valign=\myalign]
+ This is a \textbf{tcolorbox}.
+\end{tcolorbox}}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2015-05-07]{valign upper}{=\meta{alignment}}{no default, initially \texttt{top}}
+ Alias for \refKey{/tcb/valign}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{valign lower}{=\meta{alignment}}{no default, initially |top|}
+ This key has the same meaning for the lower part as |valign|
+ for the upper part, i.\,e., it determines
+ the vertical \meta{alignment} of the lower part with feasible values
+ |top|, |center|, |bottom|, |scale|, and |scale*|.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2015-07-16]{valign scale limit}{=\meta{real number}}{no default, initially \texttt{1.1}}
+ Sets an upper scale limit for the \docValue{scale*} setting in
+ \refKey{/tcb/valign} and \refKey{/tcb/valign lower}.
+ Note that this value is not reset by \refKey{/tcb/reset}. So, changes
+ also apply to embedded boxes.
+\end{docTcbKey}
+
+
+Also see \refKey{/tcb/sidebyside align} for alignment settings when
+upper part and lower part are set side-by-side.
+
+\clearpage
+\subsection{Geometry}
+\subsubsection{Width}
+
+\begin{docTcbKey}{width}{=\meta{length}}{no default, initially \cs{linewidth}}
+ Sets the total width of the colored box to \meta{length}.
+ See also \refKey{/tcb/height}.
+\begin{exdispExample}{width}
+\tcbset{colback=red!5!white,colframe=red!75!black}
+
+\begin{tcolorbox}[width=\linewidth/2]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2014-10-31]{text width}{=\meta{length}}{style, no default}
+ Sets the text width of the upper part to \meta{length}.
+ See also \refKey{/tcb/text height}.
+\begin{exdispExample}{text_width}
+\tcbset{colback=red!5!white,colframe=red!75!black}
+
+\begin{tcolorbox}[text width=4cm]
+This is a \textbf{tcolorbox} where the text has a width of 4cm.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2014-11-07]{add to width}{=\meta{length}}{style, no default}
+ Adds \meta{length} to the current total width of the colored box.
+\begin{exdispExample*}{add_to_width}{sbs,lefthand ratio=0.6}
+\tcbset{width=4cm,colback=red!5!white,
+ colframe=red!75!black}
+
+\begin{tcolorbox}
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+
+\begin{tcolorbox}[add to width=1cm]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+
+See \Fullref{sec:heightcontrol} for setting fixed height values.
+
+
+\clearpage
+\subsubsection{Rules}
+\begin{docTcbKey}{toprule}{=\meta{length}}{no default, initially \texttt{0.5mm}}
+ Sets the line width of the top rule to \meta{length}.
+\begin{exdispExample}{toprule}
+\tcbset{colback=red!5!white,colframe=red!75!black}
+
+\begin{tcolorbox}[toprule=3mm]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{bottomrule}{=\meta{length}}{no default, initially \texttt{0.5mm}}
+ Sets the line width of the bottom rule to \meta{length}.
+\begin{exdispExample}{bottomrule}
+\tcbset{colback=red!5!white,colframe=red!75!black}
+
+\begin{tcolorbox}[bottomrule=3mm]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}{leftrule}{=\meta{length}}{no default, initially \texttt{0.5mm}}
+ Sets the line width of the left rule to \meta{length}.
+\begin{exdispExample}{leftrule}
+\tcbset{colback=red!5!white,colframe=red!75!black}
+
+\begin{tcolorbox}[leftrule=3mm]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{rightrule}{=\meta{length}}{no default, initially \texttt{0.5mm}}
+ Sets the line width of the right rule to \meta{length}.
+\begin{exdispExample}{rightrule}
+\tcbset{colback=red!5!white,colframe=red!75!black}
+
+\begin{tcolorbox}[rightrule=3mm]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}{titlerule}{=\meta{length}}{no default, initially \texttt{0.5mm}}
+ Sets the line width of the rule below the title to \meta{length}.
+\begin{exdispExample}{titlerule}
+\tcbset{enhanced,colback=red!5!white,colframe=red!75!black,
+ colbacktitle=red!90!black}
+
+\begin{tcolorbox}[titlerule=3mm,title=This is the title]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{boxrule}{=\meta{length}}{style, no default, initially \texttt{0.5mm}}
+ Sets all rules of the frame to \meta{length}, i.\,e.\
+ \refKey{/tcb/toprule}, \refKey{/tcb/bottomrule}, \refKey{/tcb/leftrule},
+ \refKey{/tcb/rightrule}, and \refKey{/tcb/titlerule}.
+\begin{exdispExample}{boxrule}
+\tcbset{colback=red!5!white,colframe=red!75!black}
+
+\begin{tcolorbox}[boxrule=3mm]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+\bigskip
+\begin{marker}
+ More options for drawing a \refKey{/tcb/borderline} are provided by using skins documented in
+ Section \ref{sec:skins} from page \pageref{sec:skins}.
+\end{marker}
+
+
+\subsubsection{Arcs}
+\begin{docTcbKey}{arc}{=\meta{length}}{no default, initially \texttt{1mm}}
+ Sets the inner radius of the four frame arcs to \meta{length}.
+\begin{exdispExample}{arc}
+\tcbset{colback=red!5!white,colframe=red!75!black}
+
+\begin{tcolorbox}[arc=0mm]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\begin{tcolorbox}[arc=3mm]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}[][doc new=2015-05-05]{circular arc}{}{style, no value}
+ Sets \refKey{/tcb/arc} to match the half of the inner width of the colored box.
+ If width and height of the box are identical, this gives a circle.
+ \begin{marker}
+ If the height of the box is smaller than the width, the result will look
+ quite ugly.
+ \end{marker}
+\begin{exdispExample*}{circular_arc}{sbs,lefthand ratio=0.6}
+\begin{tcolorbox}[width=3cm,
+ colback=red!5!white,
+ colframe=red!75!black,
+ halign=center,valign=center,
+ square,circular arc]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2015-05-05]{bean arc}{}{style, no value}
+ Sets \refKey{/tcb/arc} to match the smaller value of the
+ half of the inner width and of the inner height of the colored box.
+ \begin{marker}
+ This only works for a fixed \refKey{/tcb/height}. Also, \refKey{/tcb/bean arc}
+ must be used \emph{after} width and height are set by option keys.
+ \end{marker}
+\begin{exdispExample*}{bean_arc}{sbs,lefthand ratio=0.6}
+\tcbset{size=fbox,boxrule=0.5mm,
+ colback=red!5!white,
+ colframe=red!75!black,
+ halign=center,valign=center}
+
+\begin{tcolorbox}[width=3cm,height=2cm,
+ bean arc]
+Box A
+\end{tcolorbox}
+
+\begin{tcolorbox}[width=2cm,height=3cm,
+ bean arc]
+Box B
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2015-05-05]{octogon arc}{}{style, no value}
+ Sets \refKey{/tcb/arc} to match $\frac{1}{2+\sqrt{2}}$ of the inner width
+ of the colored box. If width and height of the box are identical,
+ the interior is a regular octogon.
+\begin{exdispExample*}{octogon_arc}{sbs,lefthand ratio=0.8}
+\begin{tcolorbox}[enhanced,
+ size=minimal,auto outer arc,
+ width=2.1cm,octogon arc,
+ colback=red,colframe=white,colupper=white,
+ fontupper=\fontsize{7mm}{7mm}\selectfont\bfseries\sffamily,
+ halign=center,valign=center,
+ square,arc is angular,
+ borderline={0.2mm}{-1mm}{red} ]
+STOP
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}[][doc new=2015-05-05]{arc is angular}{}{no value, initially unset}
+ Using this options applies a patch which straightens the corners arcs of
+ the boxes. The little arcs are replaced by little straight lines.
+ \begin{marker}
+ This patch is considered as an experimental feature.
+ It changes some of the original \tikzname\ code. This change may break
+ with future updates of \tikzname.
+ \end{marker}
+
+\begin{exdispExample*}{arc_is_angular}{sbs,lefthand ratio=0.6}
+\tcbset{colback=red!5!white,colframe=red!75!black,
+ arc=3mm}
+
+\begin{tcolorbox}[arc is angular]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\begin{tcolorbox}[arc is curved]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2015-05-05]{arc is curved}{}{no value, initially set}
+ This option resets the patch from \refKey{/tcb/arc is angular}. The
+ original \tikzname\ code is activated.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{outer arc}{=\meta{length}}{no default, initially unset}
+ Sets the outer radius of the four frame arcs to \meta{length}.
+\begin{exdispExample}{outer_arc}
+\tcbset{colback=red!5!white,colframe=red!75!black}
+
+\begin{tcolorbox}[arc=4mm,outer arc=1mm]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{auto outer arc}{}{no value, initially set}
+ Sets the outer radius of the four frame arcs automatically in
+ dependency of the inner radius given by \refKey{/tcb/arc}.
+\end{docTcbKey}
+
+
+\clearpage
+\subsubsection{Spacing}
+\begin{docTcbKey}{boxsep}{=\meta{length}}{no default, initially \texttt{1mm}}
+ Sets a common padding of \meta{length} between the text content and the
+ frame of the box. This value is added to the key values of
+ |left|, |right|, |top|, |bottom|, and |middle| at the appropriate places.
+\begin{exdispExample}{boxsep}
+\tcbset{colback=red!5!white,colframe=red!75!black,width=(\linewidth-4mm)/2,
+ before=,after=\hfill}
+
+\begin{tcolorbox}[boxsep=5mm]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\begin{tcolorbox}[boxsep=5mm,draft]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{left}{=\meta{length}}{style, no default, initially \texttt{4mm}}
+ Sets the left space between all text parts and frame (additional to |boxsep|).
+ This is an abbreviation for setting
+ |lefttitle|, |leftupper|, and |leftlower| to the same value.
+\begin{exdispExample}{left}
+\tcbset{colback=red!5!white,colframe=red!75!black}
+
+\begin{tcolorbox}[left=0mm]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2017-02-16]{left*}{=\meta{length}}{style, no default}
+ Sets \refKey{/tcb/left} such that \meta{length} is the distance between
+ the left bounding box and the text parts.
+\begin{exdispExample}{left_star}
+\tcbset{colback=red!5!white,colframe=red!75!black}
+
+This is some text.
+\begin{tcolorbox}[grow to left by=5mm,left*=0mm,
+ enhanced,show bounding box]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}{lefttitle}{=\meta{length}}{no default, initially \texttt{4mm}}
+ Sets the left space between title text and frame (additional to |boxsep|).
+\begin{exdispExample}{lefttitle}
+\tcbset{colback=red!5!white,colframe=red!75!black}
+
+\begin{tcolorbox}[lefttitle=3cm,title=My Title]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{leftupper}{=\meta{length}}{no default, initially \texttt{4mm}}
+ Sets the left space between upper text and frame (additional to |boxsep|).
+\begin{exdispExample}{leftupper}
+\tcbset{colback=red!5!white,colframe=red!75!black}
+
+\begin{tcolorbox}[leftupper=3cm,title=My Title]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}{leftlower}{=\meta{length}}{no default, initially \texttt{4mm}}
+ Sets the left space between lower text and frame (additional to |boxsep|).
+\begin{exdispExample}{leftlower}
+\tcbset{colback=red!5!white,colframe=red!75!black}
+
+\begin{tcolorbox}[leftlower=3cm]
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{right}{=\meta{length}}{style, no default, initially \texttt{4mm}}
+ Sets the right space between all text parts and frame (additional to |boxsep|).
+ This is an abbreviation for setting
+ |righttitle|, |rightupper|, and |rightlower| to the same value.
+\begin{exdispExample}{right}
+\tcbset{colback=red!5!white,colframe=red!75!black}
+
+\begin{tcolorbox}[width=5cm,right=2cm]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2017-02-16]{right*}{=\meta{length}}{style, no default}
+ Sets \refKey{/tcb/right} such that \meta{length} is the distance between
+ the right bounding box and the text parts.
+\begin{exdispExample}{right_star}
+\tcbset{colback=red!5!white,colframe=red!75!black}
+
+\flushright This is some text.
+\begin{tcolorbox}[grow to right by=5mm,right*=0mm,
+ halign=right,enhanced,show bounding box]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+
+\begin{docTcbKey}{righttitle}{=\meta{length}}{no default, initially \texttt{4mm}}
+ Sets the right space between title text and frame (additional to |boxsep|).
+\begin{exdispExample}{righttitle}
+\tcbset{colback=red!5!white,colframe=red!75!black}
+
+\begin{tcolorbox}[width=5cm,righttitle=2cm,title=My very long title text]
+This is a \textbf{tcolorbox} with standard upper box dimensions.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{rightupper}{=\meta{length}}{no default, initially \texttt{4mm}}
+ Sets the right space between upper text and frame (additional to |boxsep|).
+\begin{exdispExample}{rightupper}
+\tcbset{colback=red!5!white,colframe=red!75!black}
+
+\begin{tcolorbox}[width=5cm,rightupper=2cm,title=My very long title text]
+This is a \textbf{tcolorbox} with compressed upper box dimensions.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}{rightlower}{=\meta{length}}{no default, initially \texttt{4mm}}
+ Sets the right space between lower text and frame (additional to |boxsep|).
+\begin{exdispExample}{rightlower}
+\tcbset{colback=red!5!white,colframe=red!75!black}
+
+\begin{tcolorbox}[width=5cm,rightlower=2cm]
+This is a \textbf{tcolorbox} with standard upper box dimensions.
+\tcblower
+This is the lower part with large space at right.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+
+\begin{docTcbKey}{top}{=\meta{length}}{no default, initially \texttt{2mm}}
+ Sets the top space between text and frame (additional to |boxsep|).
+\begin{exdispExample}{top}
+\tcbset{colback=red!5!white,colframe=red!75!black}
+
+\begin{tcolorbox}[top=0mm]
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{toptitle}{=\meta{length}}{no default, initially \texttt{0mm}}
+ Sets the top space between title and frame (additional to |boxsep|).
+\begin{exdispExample}{toptitle}
+\tcbset{colback=red!5!white,colframe=red!75!black}
+
+\begin{tcolorbox}[toptitle=3mm,title=My title]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}{bottom}{=\meta{length}}{no default, initially \texttt{2mm}}
+ Sets the bottom space between text and frame (additional to |boxsep|).
+\begin{exdispExample}{bottom}
+\tcbset{colback=red!5!white,colframe=red!75!black}
+
+\begin{tcolorbox}[bottom=0mm]
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}{bottomtitle}{=\meta{length}}{no default, initially \texttt{0mm}}
+ Sets the bottom space between title and frame (additional to |boxsep|).
+\begin{exdispExample}{bottomtitle}
+\tcbset{colback=red!5!white,colframe=red!75!black}
+
+\begin{tcolorbox}[bottomtitle=3mm,title=My title]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{middle}{=\meta{length}}{no default, initially \texttt{2mm}}
+ Sets the space between upper and lower text to the separation line
+ (additional to |boxsep|).
+\begin{exdispExample}{middle}
+\tcbset{colback=red!5!white,colframe=red!75!black}
+
+\begin{tcolorbox}[middle=0mm,boxsep=0mm]
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\clearpage
+\subsubsection{Size Shortcuts}
+\begin{docTcbKey}{size}{=\meta{name}}{no default, initially \texttt{normal}}
+ Sets all geometry keys with exception of \refKey{/tcb/width} to
+ predefined length values.
+ For \meta{name}, the following values are feasible:
+ \begin{itemize}
+ \item\docValue{normal}: normal sized boxes e.g. of width |\linewidth|.
+ \item\docValue{title}: title line sized boxes.
+ \item\docValue{small}: small boxes e.g. for keyword highlighting.
+ \item\docValue{fbox}: identical to the standard |\fbox|.
+ \item\docValue{tight}: no padding space at all.
+ \item\docValue{minimal}: no padding space, no box rules.
+ \end{itemize}
+
+\begin{exdispExample}{size_1}
+\tcbset{colback=red!5!white,colframe=red!75!black}
+
+\foreach \s in {normal,title,small,fbox,tight,minimal} {
+ \tcbox[size=\s,on line]{\s} }
+
+\foreach \s in {normal,title,small,fbox,tight,minimal} {
+ \tcbox[size=\s,on line,title=Test]{\s} }
+
+\foreach \s in {normal,title,small,fbox,tight,minimal} {
+ \begin{tcolorbox}[size=\s,on line,title=Test,width=2.2cm]
+ \s \tcblower lower\end{tcolorbox} }
+\end{exdispExample}
+
+\bigskip
+
+\begin{tcolorbox}[tabularx={l|XXXXXX},title=Predefined values,
+enhanced,fonttitle=\small\bfseries,fontupper=\small\ttfamily,
+colback=yellow!10!white,colframe=red!50!black,colbacktitle=Salmon!30!white,
+coltitle=black,center title
+]
+ & normal & title & small & fbox & tight & minimal\\\hline
+boxrule & 0.5mm & 0.4mm & 0.3mm & 0.4pt & 0.4pt & 0.0pt \\
+boxsep & 1.0mm & 1.0mm & 1.0mm & 3.0pt & 0.0pt & 0.0pt \\
+left & 4.0mm & 2.0mm & 1.0mm & 0.0pt & 0.0pt & 0.0pt \\
+right & 4.0mm & 2.0mm & 1.0mm & 0.0pt & 0.0pt & 0.0pt \\
+top & 2.0mm & 0.25mm & 0.0mm & 0.0pt & 0.0pt & 0.0pt \\
+bottom & 2.0mm & 0.25mm & 0.0mm & 0.0pt & 0.0pt & 0.0pt \\
+toptitle & 0.0mm & 0.0mm & 0.0mm & 0.0pt & 0.0pt & 0.0pt \\
+bottomtitle & 0.0mm & 0.0mm & 0.0mm & 0.0pt & 0.0pt & 0.0pt \\
+middle & 2.0mm & 0.75mm & 0.5mm & 1.0pt & 0.2pt & 0.0pt \\
+arc & 1.0mm & 0.75mm & 0.5mm & 1.0pt & 0.0pt & 0.0pt \\
+outer arc & auto & auto & auto & auto & 0.0pt & 0.0pt \\
+\end{tcolorbox}
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}{oversize}{\colOpt{=\meta{length}}}{style, default |0pt|}
+ Sets the text width of the upper part to the current line width plus an
+ optional \meta{length}.
+ This is achieved by changing the keys \refKey{/tcb/width}
+ \refKey{/tcb/enlarge left by}, and
+ \refKey{/tcb/enlarge right by} appropriately.
+ The resulting box is overlapping into the left and right margin of
+ the page.
+ Note that this style option has to be given \emph{after} all other
+ geometry keys!
+ Also see \refKey{/tcb/grow sidewards by} and \refKey{/tcb/spread sidewards}.
+\begin{dispListing}
+\tcbset{colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries}
+
+\textit{Normal text for comparison:}\\
+\lipsum[2]
+
+\begin{tcolorbox}[oversize,title=Oversized box]
+\lipsum[2]
+\end{tcolorbox}
+
+\begin{tcolorbox}[title=Normal box]
+\lipsum[2]
+\end{tcolorbox}
+\end{dispListing}
+\end{docTcbKey}
+
+{\tcbusetemp}
+
+
+\clearpage
+\subsubsection{Toggle Left and Right}
+\begin{docTcbKey}[][doc updated=2017-02-16]{toggle left and right}{=\meta{toggle preset}}{default |evenpage|, initially |none|}
+ According to the \meta{toggle preset}, the left and the right settings
+ of the |tcolorbox| are switched or not. Feasible values are:
+ \begin{itemize}
+ \item\docValue{none}: no switching.
+ \item\docValue{forced}: the values of the left and right rules, spaces, and corners are switched.
+ \item\docValue{evenpage}: if the page is an even page, the values of the left and
+ right rules, spaces, and corners are switched. This value also sets
+ \refKey{/tcb/check odd page} to |true|.
+ \end{itemize}
+\begin{marker}
+Horizontal bounding box enlargements are not toggled by this option.
+They can be toggled independently by \refKey{/tcb/toggle enlargement}.
+For example, \refKey{/tcb/oversize} changes the bounding box.
+\end{marker}
+\begin{dispListing}
+% \usepackage{lipsum}
+% \usetikzlibrary{patterns}
+% \tcbuselibrary{skins,breakable}
+\begin{tcolorbox}[enhanced,breakable,
+ toggle left and right,sharp corners,
+ boxrule=0mm,top=0mm,bottom=0mm,left=1mm,right=1mm,
+ rightrule=1cm,colupper=blue!25!black,
+ interior style={fill overzoom image=lichtspiel.jpg,fill image opacity=0.25},
+ frame style={pattern=crosshatch dots light steel blue},
+ overlay={%
+ \begin{tcbclipframe}
+ \tcbifoddpage{\coordinate (X) at ([xshift=-5mm]frame.east);}
+ {\coordinate (X) at ([xshift=5mm]frame.west);}
+ \fill[shading=ball,ball color=blue!50!white,opacity=0.5] (X) circle (4mm);
+ \end{tcbclipframe}}]
+\lipsum[1-6]
+\end{tcolorbox}
+\end{dispListing}
+\medskip
+
+This example switches a |1cm| thick rule from the left to the right side
+depending on the page number. Thereby, the rule is always on the outer side
+of the double-sided paper. Additionally, a ball is drawn on the outer side
+with help of an overlay.
+\bigskip
+
+\tcbusetemp
+\end{docTcbKey}
+
+\clearpage
+\subsection{Corners}\label{subsec:corners}
+
+The four corners of any |tcolorbox| can be set individually as
+\refKey{/tcb/sharp corners} or as \refKey{/tcb/rounded corners}.
+These settings are also reflected in the behavior of \refKey{/tcb/borderline}
+and \refKey{/tcb/shadow} as one would expect.
+
+By default, all four corners are \emph{rounded}. So, only the
+\refKey{/tcb/sharp corners} option will be necessary for most use cases.
+The \refKey{/tcb/rounded corners} option can be used to revert a \refKey{/tcb/sharp corners}
+setting.
+
+\begin{docTcbKey}{sharp corners}{=\meta{position}}{default |all|, initially unset}
+The \meta{position} denotes one or more of the four box corners to be set as
+\emph{sharp} corners. The not assigned corners will retain their mode.
+Feasible values for \meta{position} are:
+\begin{itemize}
+\foreach \p in {northwest,northeast,southwest,southeast,north,south,east,west,downhill,uphill,all}
+{
+\item\tcbox[on line,size=title,arc=2mm,colframe=red!75!black,colback=red!5!white,
+ enlarge top by=0.5mm,enlarge bottom by=0.5mm,sharp corners=\p]{\docValue{\p}}
+}
+\end{itemize}
+\begin{exdispExample*}{sharp_corners_1}{sbs,lefthand ratio=0.6}
+\begin{tcolorbox}[colback=red!5!white,
+ colframe=red!75!black,
+ sharp corners=northwest ]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+\begin{exdispExample*}{sharp_corners_2}{sbs,lefthand ratio=0.6}
+\begin{tcolorbox}[colback=red!5!white,
+ colframe=red!75!black,
+ sharp corners ]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}{rounded corners}{=\meta{position}}{default |all|, initially |all|}
+The \refKey{/tcb/rounded corners} can be used to revert a \refKey{/tcb/sharp corners}
+setting. The \meta{position} denotes one or more of the four box corners to be set as
+\emph{rounded} corners. The not assigned corners will retain their mode.
+Feasible values for \meta{position} are\footnote{The graphical examples assume
+ that the boxes where set to have sharp corners before.}:
+\begin{itemize}
+\foreach \p in {northwest,northeast,southwest,southeast,north,south,east,west,downhill,uphill,all}
+{
+\item\tcbox[on line,size=title,arc=2mm,colframe=red!75!black,colback=red!5!white,
+ enlarge top by=0.5mm,enlarge bottom by=0.5mm,sharp corners,rounded corners=\p]{\docValue{\p}}
+}
+\end{itemize}
+\begin{exdispExample*}{rounded_corners}{sbs,lefthand ratio=0.6}
+\begin{tcolorbox}[colback=red!5!white,
+ colframe=red!75!black,sharp corners,
+ rounded corners=northwest ]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{sharpish corners}{}{style, no value}
+ Shortcut for setting \refKey{/tcb/arc} and \refKey{/tcb/outer arc}
+ to |0pt|. With this setting, rounded corners will appear as quasi-sharp,
+ but e.\,g.\ the shadow will be somewhat rounder than the shadow
+ of really sharp corners.
+ \begin{marker}
+ Corners are still of type \emph{rounded} with this option, but appear
+ \emph{sharp}. To switch back to rounded corners, one has to adapt
+ \refKey{/tcb/arc} and \refKey{/tcb/outer arc}.
+ \end{marker}
+\begin{exdispExample*}{sharpish_corners}{sbs,lefthand ratio=0.6}
+\begin{tcolorbox}[colback=red!5!white,
+ colframe=red!75!black,
+ sharpish corners ]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+\clearpage
+
+The following examples will show the differences between
+\refKey{/tcb/rounded corners}, \refKey{/tcb/sharpish corners}, and \refKey{/tcb/sharp corners}.
+The later two give the same core box, but \refKey{/tcb/borderline}
+and \refKey{/tcb/shadow} settings are slightly different.
+The following examples use \refKey{/tcb/drop fuzzy shadow}.
+
+\begin{extcolorbox}[minipage]{corners_comparison}[blankest]
+\foreach \n in {rounded corners,sharpish corners,sharp corners}{
+\begin{tcolorbox}[enhanced jigsaw,frame empty,interior empty,fuzzy halo,halign=center,beforeafter skip=4mm]
+\begin{tcolorbox}[enhanced,drop fuzzy shadow,width=\linewidth-1cm,
+ colback=red!5!white, colframe=red!75!black, fonttitle=\bfseries,
+ title=My title,\n,
+ tikz={spy using outlines={circle, magnification=8, size=2cm, connect spies}},
+ overlay={\spy [blue, size=4cm] on (frame.south east)
+ in node at ([xshift=-2.5cm,yshift=-2.5cm]frame.south east);
+ \node[right] at ([xshift=2cm,yshift=-1cm]frame.south west) {\textbf{\Large\ttfamily\n}};
+ }]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{tcolorbox}}
+\end{extcolorbox}
+
+\clearpage
+\subsection{Transparency}
+
+\begin{marker}
+Transparency effects are likely to be used in conjunction with \emph{jigsaw}
+skin variants, see \Vref{subsec:skinjigsaw}.
+\end{marker}
+
+\begin{docTcbKey}{opacityframe}{=\meta{fraction}}{no default, initially \texttt{1.0}}
+ Sets the frame opacity of the box to the given \meta{fraction}.
+\begin{exdispExample*}{opacityframe}{sbs,lefthand ratio=0.6,segmentation style={pattern=checkerboard light gray}}
+\begin{tcolorbox}[opacityframe=0.25,
+ colframe=red]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+\begin{docTcbKey}{opacityback}{=\meta{fraction}}{no default, initially \texttt{1.0}}
+ Sets the background opacity of the box to the given \meta{fraction}.
+\begin{exdispExample*}{opacityback}{sbs,lefthand ratio=0.6,segmentation style={pattern=checkerboard light gray}}
+\begin{tcolorbox}[standard jigsaw,colframe=red,
+ opacityframe=0.5, opacityback=0.5]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{opacitybacktitle}{=\meta{fraction}}{no default, initially \texttt{1.0}}
+ Sets the title background opacity of the box to the given \meta{fraction}.
+\begin{exdispExample*}{opacitybacktitle}{sbs,lefthand ratio=0.6,segmentation style={pattern=checkerboard light gray}}
+\begin{tcolorbox}[standard jigsaw,colframe=red,
+ opacityframe=0.5, opacitybacktitle=0.5,
+ title filled, title=This is a title]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{opacityfill}{=\meta{fraction}}{style, no default, initially \texttt{1.0}}
+ Sets the fill opacity for frame, interior and optionally the title background
+ to the given \meta{fraction}.
+\begin{exdispExample*}{opacityfill}{sbs,lefthand ratio=0.6,segmentation style={pattern=checkerboard light gray}}
+\begin{tcolorbox}[standard jigsaw,colframe=red,
+ opacityfill=0.7, title=This is a title]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}{opacityupper}{=\meta{fraction}}{no default, initially \texttt{1.0}}
+ Sets the text opacity of the upper box part to the given \meta{fraction}.
+\begin{exdispExample*}{opacityupper}{sbs,lefthand ratio=0.6}
+\begin{tcolorbox}[enhanced,opacityupper=0.5,
+ interior style={pattern=checkerboard light gray}]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{opacitylower}{=\meta{fraction}}{no default, initially \texttt{1.0}}
+ Sets the text opacity of the lower box part to the given \meta{fraction}.
+\begin{exdispExample*}{opacitylower}{sbs,lefthand ratio=0.6}
+\begin{tcolorbox}[enhanced,opacitylower=0.5,
+ interior style={pattern=checkerboard light gray}]
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+\begin{docTcbKey}{opacitytext}{=\meta{fraction}}{no default, initially \texttt{1.0}}
+ Sets the text opacity of the upper and the lower box part to the given \meta{fraction}.
+\begin{exdispExample*}{opacitytext}{sbs,lefthand ratio=0.6}
+\begin{tcolorbox}[enhanced,opacitytext=0.5,
+ interior style={pattern=checkerboard light gray}]
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{opacitytitle}{=\meta{fraction}}{no default, initially \texttt{1.0}}
+ Sets the text opacity of the box title to the given \meta{fraction}.
+\begin{exdispExample*}{opacitytitle}{sbs,lefthand ratio=0.6}
+\begin{tcolorbox}[enhanced,opacitytitle=0.7,
+ coltitle=black,
+ fonttitle=\bfseries,title=This is a title,
+ title style={pattern=checkerboard light gray}]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+
+\begin{exdispExample*}{opacity_general}{segmentation style={pattern=checkerboard light gray}}
+\begin{tcolorbox}[enhanced jigsaw,fonttitle=\bfseries,title=This is a title,
+ opacityframe=0.5,opacityback=0.25,opacitybacktitle=0.25,opacitytext=0.8,
+ colback=red!5!white,colframe=red!75!black,colbacktitle=yellow!20!red]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+
+
+
+\clearpage
+\subsection{Height Control}\label{sec:heightcontrol}
+In a typical usage scenario, the height of a |tcolorbox| is computed automatically
+to fit the content. Nevertheless, the height can be set to a fixed value
+or to fit commonly for several boxes, e.\,g. if boxes are set side by side.
+
+\bigskip
+\begin{marker}
+ The height control keys are only applicable to unbreakable boxes.
+ If a box is set to be \refKey{/tcb/breakable}, the height is always
+ computed according to the \emph{natural height}.
+\end{marker}
+\bigskip
+
+
+\begin{docTcbKey}{natural height}{}{no value, initially set}
+ Sets the total height of the colored box to its natural height depending
+ on the box content.
+\end{docTcbKey}
+
+\begin{docTcbKey}{height}{=\meta{length}}{no default}
+ Sets the total height of the colored box to \meta{length} independent
+ of the box content. \meta{length} is the minimum height of the box, if
+ \refKey{/tcb/height plus} is larger than zero.
+\begin{exdispExample}{height}
+\tcbset{width=(\linewidth-2mm)/3,before=,after=\hfill,
+colframe=blue!75!black,colback=white}
+
+\begin{tcolorbox}[height=1cm,valign=center]
+ This box has a height of 1cm.
+\end{tcolorbox}
+\begin{tcolorbox}[height=2cm,valign=center]
+ This box has a height of 2cm.
+\end{tcolorbox}
+\begin{tcolorbox}[height=3cm,split=0.5,valign=center,valign lower=center]
+ This box has a height of 3cm.
+ \tcblower
+ Lower part.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+\enlargethispage*{10mm}
+\begin{docTcbKey}{height plus}{=\meta{length}}{no default, initially |0pt|}
+ The box may extend a given fixed \refKey{/tcb/height} up to the given \meta{length}.
+\begin{exdispExample}{height_plus}
+\tcbset{colback=red!5!white,colframe=red!75!black,left=1mm,top=1mm,bottom=1mm,
+ right=1mm,boxsep=0mm,width=3cm,nobeforeafter}
+
+\begin{tcolorbox}[height=1cm]
+This is a tcolorbox.
+\end{tcolorbox}
+\begin{tcolorbox}[height=1cm,height plus=1cm]
+This is a tcolorbox.
+\end{tcolorbox}
+\begin{tcolorbox}[height=1cm,height plus=1cm]
+This is a tcolorbox. This is a tcolorbox. This is a tcolorbox.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{height from}{=\meta{min} \texttt{to} \meta{max}}{style, no default}
+ Sets the box height to a dimension between \meta{min} and \meta{max}.
+\begin{exdispExample}{height_from}
+% \usepackage{lipsum}
+\newtcolorbox{mybox}{colback=red!5!white,colframe=red!75!black,left=1mm,top=1mm,
+ bottom=1mm,right=1mm,boxsep=0mm,width=4.5cm,nobeforeafter,
+ height from=2cm to 8cm}
+
+\begin{mybox}
+This is a tcolorbox.
+\end{mybox}
+\begin{mybox}
+This is a tcolorbox. This is a tcolorbox. This is a tcolorbox.
+\end{mybox}
+\begin{mybox}
+\lipsum[2]
+\end{mybox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2014-10-31]{text height}{=\meta{length}}{style, no default}
+ Sets the text height to \meta{length}. This is the length from the top
+ of the upper part to the bottom of the optional lower part.
+ See also \refKey{/tcb/text width}.
+\begin{exdispExample}{text_height}
+\tcbset{colback=red!5!white,colframe=red!75!black}
+
+\begin{tcolorbox}[text height=2cm]
+This is a \textbf{tcolorbox} where the text area has a height of 2cm.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+\clearpage
+
+\begin{docTcbKey}[][doc new=2014-11-07]{add to height}{=\meta{length}}{style, no default}
+ Adds \meta{length} to the current height of the colored box.
+ \refKey{/tcb/height} has to be set before this key is used!
+ If this option is used several times, then the \refKey{/tcb/height} is
+ also increased several times.
+\begin{exdispExample}{add_to_height}
+\tcbset{height=2cm,
+ valign=center,width=(\linewidth-2mm)/2,
+ before=,after=\hfill,colframe=blue!75!black,colback=white}
+
+\begin{tcolorbox}
+ This box has a height of 2cm.
+\end{tcolorbox}
+\begin{tcolorbox}[add to height=1cm]
+ This box has a height of 3cm.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2016-02-16]{add to natural height}{=\meta{length}}{style, no default}
+ The application of this option generates a box with natural height plus
+ the given \meta{length}. If this option is used several times, then the
+ last setting of \meta{length} wins. The resulting box is not considered
+ a fixed height box and the implementation is quite different to
+ \refKey{/tcb/add to height}.
+\begin{exdispExample}{add_to_natural_height}
+\tcbset{valign=center,width=(\linewidth-2mm)/2,
+ before=,after=\hfill,colframe=blue!75!black,colback=white}
+
+\begin{tcolorbox}
+ This box has natural height.
+\end{tcolorbox}
+\begin{tcolorbox}[add to natural height=1cm]
+ This box has natural height plus 1 cm.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}[][doc new and updated={2014-09-22}{2016-02-17}]{height fill}{\colOpt{=true\textbar false\textbar maximum}}{default |true|, initially |false|}
+If set to \docValue*{true}, the height of the |tcolorbox| is set to the rest of the
+available vertical space of the current page.
+If set to \docValue{maximum}, the page is compressed as much as possible.
+Note that the |tcolorbox|
+is always set as its own paragraph using this option.
+Also see \refKey{/tcb/text fill}.
+\begin{marker}
+Note that the library \mylib{breakable} has to be loaded to use this key!
+\end{marker}
+This height control key is only applicable to unbreakable boxes, but it
+uses code from the library \mylib{breakable}.
+The counterpart for breakable boxes is \refKey{/tcb/height fixed for}.
+
+This option can and should not be used for boxes in boxes, but it can be
+used for boxes inside a \refEnv{tcbraster}.
+
+\begin{dispListing}
+% \usepackage{lipsum}
+% \tcbuselibrary{breakable}
+\begin{tcolorbox}[height fill,
+ colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries,
+ title=Box which fills the rest of the page]
+\lipsum[1]
+\end{tcolorbox}
+\end{dispListing}
+\end{docTcbKey}
+{\tcbusetemp}
+
+
+\clearpage
+\begin{docTcbKey}[][doc new={2017-06-28}]{inherit height}{\colOpt{=fraction}}{default |1|, initially unset}
+ If this option is used for a |tcolorbox| which is embedded inside
+ another (outer) |tcolorbox| \emph{and} if this outer |tcolorbox| has
+ a fixed height, then the given \meta{fraction} of the available text height
+ of the outer |tcolorbox| is used as \refKey{/tcb/height} for the current
+ |tcolorbox|.
+ Otherwise, \refKey{/tcb/natural height} is applied for the current
+ |tcolorbox|.
+
+\begin{exdispExample}{inherit_height}
+\tcbset{colframe=blue!75!black,colback=white,fonttitle=\bfseries}
+
+\begin{tcolorbox}[title=Outer box with fixed height 4cm,height=4cm]
+ \begin{tcolorbox}[title=Inner box,nobeforeafter,inherit height]
+ This inner box matches the available space.
+ \end{tcolorbox}
+\end{tcolorbox}
+
+\begin{tcolorbox}[title=Outer box with natural height]
+ \begin{tcolorbox}[title=Inner box,nobeforeafter,inherit height]
+ This inner box has its natural height.
+ \end{tcolorbox}
+\end{tcolorbox}
+
+\begin{tcolorbox}[title=Outer box with fixed height 5cm,height=5cm]
+ \begin{tcolorbox}[title=Inner box,nobeforeafter,inherit height]
+ \begin{tcolorbox}[colframe=red,beforeafter skip=0pt,inherit height=0.6]
+ Deeply nested box using 60 percent of the available space.
+ \end{tcolorbox}
+ \begin{tcolorbox}[colframe=red,beforeafter skip=0pt,inherit height=0.4]
+ Deeply nested box using 40 percent of the available space.
+ \end{tcolorbox}
+ \end{tcolorbox}
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\clearpage
+
+\begin{docTcbKey}[][doc new=2015-05-05]{square}{}{style, no value}
+ Sets \refKey{/tcb/height} to match the width of the colored box.
+\begin{exdispExample*}{square}{sbs,lefthand ratio=0.6}
+\begin{tcolorbox}[width=3cm,
+ colback=red!5!white,
+ colframe=red!75!black,
+ halign=center,valign=center,
+ square]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+
+
+\begin{docTcbKey}{space}{=\meta{fraction}}{no default, initially 0}
+ If the height of a |tcolorbox| is not the natural height, the space
+ difference between the forced and the natural size is distributed
+ between the upper and the lower part of the box. This space could also
+ be negative.
+ \meta{fraction} with a value between 0 and 1 is the amount of space
+ which is added to the upper part, the rest is added to the lower part.
+ If there is no lower part, then all of the space is added to
+ the upper part always.
+\begin{exdispExample}{fraction}
+\tcbset{width=(\linewidth-2mm)/3,before=,after=\hfill,
+colframe=blue!75!black,colback=white,height=3cm}
+
+\foreach \f in {0.2,0.4,0.7}
+{\begin{tcolorbox}[space=\f]
+ This is the upper part.
+ \tcblower
+ This is the lower part.
+\end{tcolorbox}}
+\end{exdispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}{space to upper}{}{style}
+ This is an abbreviation for |space=1|, i.\,e. all extra space is added
+ to the upper part.
+\end{docTcbKey}
+
+\begin{docTcbKey}{space to lower}{}{style, initially set}
+ This is an abbreviation for |space=0|, i.\,e. all extra space is added
+ to the lower part (if there is any).
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}{space to both}{}{style}
+ This is an abbreviation for |space=0.5|, i.\,e. the extra space
+ equally distributed between the upper and the lower part.
+\begin{exdispExample}{space_to_both}
+\tcbset{width=(\linewidth-2mm)/3,before=,after=\hfill,
+colframe=blue!75!black,colback=white,height=3cm}
+
+\foreach \myspace in {space to upper,space to both,space to lower}
+{\begin{tcolorbox}[\myspace]
+ This is the upper part.
+ \tcblower
+ This is the lower part.
+\end{tcolorbox}}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+
+\begin{docTcbKey}[][doc new=2015-02-15]{space to}{=\meta{macro}}{no default, initially unset}
+ If the height of a |tcolorbox| is not the natural height, the space
+ difference between the forced and the natural size is saved into the
+ given local \meta{macro}. This \meta{macro} can and should be used inside
+ the box content to add content which is vertically sized to match \meta{macro}.
+ \begin{marker}
+ \begin{itemize}
+ \item The actual length saved into \meta{macro} is adapted dynamically
+ during several compilations -- at least two, but maybe more.
+ \item Due to the adaption algorithm, objects can be sized with
+ \meta{macro} plus any offset length.
+ \item Never ever use \meta{macro} multiplied with a factor. The only
+ exception to this rule is that the space can be split into parts which
+ sum to \meta{macro}.
+ \item Never use this in combination with \refKey{/tcb/fit}.
+ \end{itemize}
+ \end{marker}
+\begin{exdispExample}[runs=3]{space_to_1}
+\begin{tcolorbox}[colframe=blue!75!black,colback=white,height=3cm,
+ space to=\myspace]
+ This is my box of height 3cm. The space is filled with a picture:\\[2mm]
+ \includegraphics[width=\linewidth,height=\myspace]{goldshade.png}\\[1mm]
+ This is some other text.
+\end{tcolorbox}
+\end{exdispExample}
+
+\begin{exdispExample}[runs=3]{space_to_2}
+\begin{tcolorbox}[colframe=blue!75!black,colback=white,height=3cm,
+ space to=\myspace]
+ \includegraphics[width=\linewidth,
+ height=0.33\dimexpr\myspace]{blueshade.png}\\[1mm]
+ This is my box of height 3cm.\\[2mm]
+ \includegraphics[width=\linewidth,
+ height=0.67\dimexpr\myspace]{goldshade.png}
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+
+
+\begin{docTcbKey}{split}{=\meta{fraction}}{no default}
+ If the height of a |tcolorbox| is not the natural height, the
+ \meta{fraction} with a value between 0 and 1 determines the positioning
+ of the segmentation between the upper and the lower part. Here, 0 stands
+ for top and 1 for bottom. Note that the box is split regardless of
+ the actual dimensions of the text parts!
+\begin{exdispExample}{split}
+\tcbset{width=(\linewidth-2mm)/3,before=,after=\hfill,height=3cm,
+colback=white,colframe=blue!75!black,valign=center,valign lower=center}
+
+\foreach \f in {0.1,0.5,0.8}
+{\begin{tcolorbox}[split=\f]
+This is the upper part.
+\tcblower
+This is the lower part with a lot of text in several lines.
+\end{tcolorbox}}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+
+
+\clearpage
+\begin{docTcbKey}[][doc updated=2014-11-07]{equal height group}{=\meta{id}}{no default}
+ Boxes which are members of an |equal height group| will all get the
+ same height, i.\,e. the maximum of all their natural heights. The
+ \meta{id} serves to distinguish between different height groups.
+ %This \meta{id} should contain only characters which are feasible
+ %for \TeX\ macro names, typically alphabetic characters but no numerals
+ %and spaces.
+ Note that you have to compile twice to see changes and
+ that height groups are global definitions.
+
+
+\begin{exdispExample}[runs=2]{equal_height_group}
+\tcbset{width=(\linewidth-2mm)/3,before=,after=\hfill,arc=0mm,
+colframe=blue!75!black,colback=white,fonttitle=\bfseries}
+
+\begin{tcolorbox}[equal height group=A,adjusted title={One}]
+ My smallest box.
+\end{tcolorbox}%
+\begin{tcolorbox}[equal height group=A,adjusted title={Two}]
+ This box is also small.
+ \tcblower
+ But with a lower part.
+\end{tcolorbox}%
+\begin{tcolorbox}[equal height group=A,adjusted title={Three}]
+ This box contains a lot of text just to fill the space
+ with word flowing and flowing and flowing until the box
+ is filled with all of it.
+\end{tcolorbox}\linebreak
+%
+\tcbset{width=(\linewidth-1mm)/2,before=,after=\hfill,arc=0mm,
+colframe=red!75!black,colback=white}
+%
+\begin{tcolorbox}[equal height group=B]
+ Now, we use another equal height group.
+\end{tcolorbox}%
+\begin{tcolorbox}[equal height group=B,after=]
+ \begin{equation*}
+ \int\limits_{0}^{1} x^2 = \frac13.
+ \end{equation*}
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+\medskip
+\begin{marker}
+See \Vref{sec:raster} for more equal height options.
+\end{marker}
+
+\clearpage
+\begin{docTcbKey}{minimum for equal height group}{=\meta{id}:\meta{length}}{no default, initially unset}
+ Plants a \meta{length} into the equal height group with
+ the given \meta{id}. This ensures that the height will not drop below
+ \meta{length}. Note that you cannot reduce a computed height value
+ by using this key with a small value.
+ The difference to applying \refKey{/tcb/height} directly is that the boxes
+ are never too small for their content.
+
+\begin{dispExample}
+\tcbset{colframe=blue!75!black,colback=white,arc=0mm,
+ before=,after=\hfill,fonttitle=\bfseries,left=2mm,right=2mm,
+ width=3.5cm,
+ equal height group=C,
+ minimum for equal height group=C:3.5cm}
+
+\begin{tcolorbox}
+ My first box. All boxes will get 3.5cm times 3.5cm
+ if the content height is not too large.
+\end{tcolorbox}%
+\begin{tcolorbox}
+ My second box.
+ \tcblower
+ This is the lower part.
+\end{tcolorbox}%
+\begin{tcblisting}{}
+\textbf{Mixed}
+with a listing.
+\end{tcblisting}
+\begin{tcolorbox}[title={Fourth box}]
+ My final box.
+\end{tcolorbox}%
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2016-03-24]{minimum for current equal height group}{=\meta{length}}{no default, initially unset}
+ Sets \refKey{/tcb/minimum for equal height group} for the current equal height
+ group. Apparently, this only works for an already known equal height group, i.e.
+ \refKey{/tcb/equal height group} has to be set \emph{before} this option is used.
+ This option is likely to be used in combination with \refKey{/tcb/raster equal height}
+
+\begin{exdispExample}[runs=2]{minimum_for_current_equal_height_group}
+% \tcbuselibrary{raster}
+\begin{tcbitemize}[raster equal height,colframe=blue!75!black,colback=white,
+ raster every box/.style={minimum for current equal height group=2cm}]
+ \tcbitem A
+ \tcbitem B
+\end{tcbitemize}
+\end{exdispExample}
+
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}[][doc new and updated={2015-11-27}{2016-02-22}]{use height from group}{\colOpt{=\meta{id}}}{style, default current group}
+ Sets the current box to a fixed \refKey{/tcb/height} which is copied from
+ an equal height group with the given \meta{id}. If this height is not
+ available during the current compilation, no fixed height setting is used.
+ If \meta{id} is omitted, the current equal height group is used which has
+ to be set before by \refKey{/tcb/equal height group}.\par
+ Note that the natural height of the current box is not considered for
+ computation of the group height. The main application for
+ \refKey{/tcb/use height from group} is that the height can be adapted
+ further by \refKey{/tcb/add to height}.
+
+\begin{dispExample}
+\begin{tcolorbox}[use height from group=C,add to height=-2cm,
+ colframe=blue!75!black,colback=white]
+Height from group 'C' of the previous example, but reduced by 2cm.
+\end{tcolorbox}%
+\end{dispExample}
+
+\begin{exdispExample}[runs=2]{use_height_from_group}
+% \tcbuselibrary{raster}
+Every line is inside an equal height group:
+\begin{tcbraster}[raster equal height=rows,
+ title=Box \thetcbrasternum,
+ enhanced,size=small,colframe=red!50!black,colback=red!10!white]
+ \begin{tcolorbox}First line\\second line\\
+ The height of this box rules.\end{tcolorbox}
+ \begin{tcolorbox}[use height from group]Test\end{tcolorbox}
+ \begin{tcolorbox}[use height from group]
+ First line\\second line\end{tcolorbox}
+ \begin{tcolorbox}The height of this box rules.\end{tcolorbox}
+\end{tcbraster}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+
+\begin{docCommand}[doc new=2015-11-27]{tcbheightfromgroup}{\marg{macro}\marg{id}}
+ Saves the height from an equal height group with the given \meta{id}
+ to a \meta{macro}. If this height is not available during the current compilation,
+ \meta{macro} is set to |0pt|.
+\end{docCommand}
+
+
+\clearpage
+\subsection{Box Content Additions}\label{subsec:contentadditions}
+The following options introduce some arbitrary \meta{code} to the content
+of a |tcolorbox|. These additions can be given at the beginning or at the ending
+of the title, the upper part, or the lower part.
+
+\begin{docTcbKey}{before title}{=\meta{code}}{no default, initially unset}
+ The given \meta{code} is placed \emph{after} the color and font settings
+ and \emph{before} the content of the title.
+\begin{exdispExample}{before_title}
+\tcbset{before title={\textcolor{yellow}{\large Important:}~},
+ colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries}
+
+\begin{tcolorbox}[title=My title]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{after title}{=\meta{code}}{no default, initially unset}
+ The given \meta{code} is placed \emph{after} the content of the title.
+\begin{exdispExample}{after_title}
+\tcbset{after title={\hfill\colorbox{Navy}{approved}},
+ colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries}
+
+\begin{tcolorbox}[title=My title]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}{before upper}{=\meta{code}}{no default, initially empty}
+ The given \meta{code} is placed \emph{after} the color and font settings
+ and \emph{before} the content of the upper part.
+ The \meta{code} is appended by a final |\ignorespaces|.
+\begin{exdispExample}{before_upper}
+\tcbset{before upper={\textit{The story:}\par},
+ colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries}
+
+\begin{tcolorbox}[title=My title]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2019-02-26]{before upper*}{=\meta{code}}{no default, initially unset}
+ The given \meta{code} is placed \emph{after} the color and font settings
+ and \emph{before} the content of the upper part.
+ In contrast to \refKey{/tcb/before upper}, no |\ignorespaces| is appended.
+ Use this for situations where |\ignorespaces| is not needed or causes harm.
+\begin{exdispExample}{before_upper_star}
+\begin{tcolorbox}[size=small,tile,
+ colback=yellow!20,colbacktitle=yellow!70!black,
+ title=My table,hbox,center,center title,
+ before upper*=\begin{tabular}{cc},
+ after upper*=\end{tabular},
+]
+ \multicolumn{2}{c}{Title}\\
+ one & two \\
+ three & four\\
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+\clearpage
+
+\begin{docTcbKey}[][doc updated=2016-10-21]{after upper}{=\meta{code}}{no default, initially empty}
+ The given \meta{code} is placed \emph{after} the content of the upper part.
+ The \meta{code} is prepended by a leading |\unskip|.
+
+\begin{exdispExample}{after_upper_1}
+\tcbset{after upper={\par\hfill\textit{Read more next week}},
+ colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries}
+
+\begin{tcolorbox}[title=My title]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample}
+
+\begin{exdispExample}{after_upper_2}
+\begin{tcolorbox}[before upper=\flqq,after upper=\frqq,
+ colback=red!5!white,colframe=red!75!black]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new and updated={2016-10-21}{2019-02-28}]{after upper*}{=\meta{code}}{no default, initially unset}
+ The given \meta{code} is placed \emph{after} the content of the upper part.
+ In contrast to \refKey{/tcb/after upper}, no |\unskip| is prepended.
+ Use this for situations where |\unskip| is not needed or causes harm.
+ See \refKey{/tcb/before upper*} for an example.
+
+\begin{marker}
+ From version 3.80 to 3.94, this option prepended an |\unskip| to the given \meta{code}.\\
+ From version 3.95 to 4.15, this option was deprecated.\\
+ From version 4.20, this option is re-established with changed semantic (no |\unskip|!)
+\end{marker}
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}{before lower}{=\meta{code}}{no default, initially empty}
+ The given \meta{code} is placed \emph{after} the color and font settings
+ and \emph{before} the content of the lower part.
+ The \meta{code} is appended by a final |\ignorespaces|.
+\begin{exdispExample}{before_lower}
+\tcbset{before lower=\textit{Behold:~},colback=red!5!white,colframe=red!75!black}
+
+\begin{tcolorbox}
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2019-02-26]{before lower*}{=\meta{code}}{no default, initially unset}
+ The given \meta{code} is placed \emph{after} the color and font settings
+ and \emph{before} the content of the lower part.
+ In contrast to \refKey{/tcb/before lower}, no |\ignorespaces| is appended.
+ Use this for situations where |\ignorespaces| is not needed or causes harm.
+\begin{exdispExample}{before_lower_star}
+\begin{tcolorbox}[size=small,bicolor,sidebyside,center lower,
+ colback=yellow!30,colbacklower=yellow!20,colframe=yellow!80!black,
+ before lower*=\begin{tabular}{cc},
+ after lower*=\end{tabular},
+]
+My table
+\tcblower
+ \multicolumn{2}{c}{Title}\\
+ one & two \\
+ three & four\\
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\clearpage
+
+\begin{docTcbKey}[][doc updated=2016-10-21]{after lower}{=\meta{code}}{no default, initially empty}
+ The given \meta{code} is placed \emph{after} the content of the lower part.
+ The \meta{code} is prepended by a leading |\unskip|.
+
+
+\begin{exdispExample}{after_lower_2}
+\begin{tcolorbox}[after lower=\ \textit{This is the end.},
+ colback=red!5!white,colframe=red!75!black]
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new and updated={2016-10-21}{2019-02-28}]{after lower*}{=\meta{code}}{no default, initially unset}
+ The given \meta{code} is placed \emph{after} the content of the lower part.
+ In contrast to \refKey{/tcb/after upper}, no |\unskip| is prepended.
+ Use this for situations where |\unskip| is not needed or causes harm.
+
+\begin{exdispExample}{after_lower_1}
+\begin{tcolorbox}[before lower*=$,after lower*=$,
+ colback=red!5!white,colframe=red!75!black]
+This is a \textbf{tcolorbox}.
+\tcblower
+\sin^2(x)+\cos^2(x)=1.
+\end{tcolorbox}
+\end{exdispExample}
+
+\begin{marker}
+ From version 3.80 to 3.94, this option prepended an |\unskip| to the given \meta{code}.\\
+ From version 3.95 to 4.15, this option was deprecated.\\
+ From version 4.20, this option is re-established with changed semantic (no |\unskip|!)
+\end{marker}
+\end{docTcbKey}
+
+
+\clearpage
+\begin{marker}
+If \refKey{/tcb/text fill} is used, one cannot have a lower part
+and the box is unbreakable.
+\end{marker}
+
+\begin{docTcbKey}[][doc new=2015-07-15]{text fill}{}{style, no value}
+ This style sets \refKey{/tcb/before upper} and \refKey{/tcb/after upper}
+ to embed the upper part with a minipage. If a fixed height was applied
+ e.g.\ by \refKey{/tcb/height} or \refKey{/tcb/height fill}, this minipage
+ gets a matching height. This allows to use vertical glue macros like
+ |\vfill| to act like expected. If the box has no fixed height,
+ setting \refKey{/tcb/text fill} has no other effect as making the box
+ unbreakable.
+\begin{exdispExample}{text_fill}
+\begin{tcolorbox}[colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries,
+ height=8cm,text fill,
+ title=My filled box]
+This is a \textbf{tcolorbox}.
+\par\vfill
+\begin{center}
+ My middle text.
+\end{center}
+\par\vfill
+This is the end of my box.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+\clearpage
+\begin{marker}
+If \refKey{/tcb/tabularx} or \refKey{/tcb/tabularx*} are used, one cannot
+have a lower part.
+\end{marker}
+
+\begin{docTcbKey}{tabularx}{=\meta{preamble}}{style}
+ This style sets \refKey{/tcb/before upper} and \refKey{/tcb/after upper}
+ and several geometry keys to support a |tabularx| with the
+ given \meta{preamble}.
+ The packages |tabularx| \cite {carlisle:2016a}, |array|, and |colortbl|
+ have to be loaded separately.
+\begin{exdispExample}{tabularx_1}
+% \usepackage{array,tabularx}
+% \usepackage{colortbl} - or - \usepackage[table]{xcolor}
+\newcolumntype{Y}{>{\raggedleft\arraybackslash}X}% see tabularx
+\tcbset{enhanced,fonttitle=\bfseries\large,fontupper=\normalsize\sffamily,
+ colback=yellow!10!white,colframe=red!50!black,colbacktitle=Salmon!30!white,
+ coltitle=black,center title}
+
+\begin{tcolorbox}[tabularx={X||Y|Y|Y|Y||Y},title=My table]
+Group & One & Two & Three & Four & Sum\\\hline\hline
+Red & 1000.00 & 2000.00 & 3000.00 & 4000.00 & 10000.00\\\hline
+Green & 2000.00 & 3000.00 & 4000.00 & 5000.00 & 14000.00\\\hline
+Blue & 3000.00 & 4000.00 & 5000.00 & 6000.00 & 18000.00\\\hline\hline
+Sum & 6000.00 & 9000.00 & 12000.00 & 15000.00 & 42000.00
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{tabularx*}{=\marg{code}\marg{preamble}}{style}
+ This is a variant of \refKey{/tcb/tabularx} which adds some \meta{code}
+ before the table starts.
+\begin{exdispExample}{tabularx_2}
+% \usepackage{array,tabularx}
+% \usepackage{colortbl} - or - \usepackage[table]{xcolor}
+\tcbset{enhanced,fonttitle=\bfseries\large,fontupper=\normalsize\sffamily,
+ colback=yellow!10!white,colframe=red!50!black,colbacktitle=Salmon!30!white,
+ coltitle=black,center title}
+
+\begin{tcolorbox}[tabularx*={\arrayrulewidth0.5mm}{X|X|X},title=My table]
+One & Two & Three \\\hline\hline
+1000.00 & 2000.00 & 3000.00\\\hline
+2000.00 & 3000.00 & 4000.00
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}{tikz upper}{\colOpt{=\meta{options}}}{style}
+ This style adds a centered |tikzpicture| environment to the start and end
+ of the upper part. The \meta{options} may be given as \tikzname\ picture options.
+\begin{exdispExample}{tikz_upper}
+% \usepackage{tikz}
+
+\begin{tcolorbox}[tikz upper,fonttitle=\bfseries,colback=white,colframe=black,
+ title=\tikzname\ drawing]
+ \path[fill=yellow,draw=yellow!75!red] (0,0) circle (1cm);
+ \fill[red] (45:5mm) circle (1mm);
+ \fill[red] (135:5mm) circle (1mm);
+ \draw[line width=1mm,red] (215:5mm) arc (215:325:5mm);
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{tikz lower}{\colOpt{=\meta{options}}}{style}
+ This style adds a centered |tikzpicture| environment to the start and end
+ of the lower part. The \meta{options} may be given as \tikzname\ picture options.
+\begin{exdispExample}{tikz_lower}
+% \usepackage{tikz}
+% \tcbuselibrary{skins,listings}
+
+\begin{tcblisting}{tikz lower,listing side text,fonttitle=\bfseries,
+ bicolor,colback=LightBlue!50!white,colbacklower=white,colframe=black,
+ righthand width=3cm,title=\tikzname\ drawing}
+\path[fill=yellow,draw=yellow!75!red]
+ (0,0) circle (1cm);
+\fill[red] (45:5mm) circle (1mm);
+\fill[red] (135:5mm) circle (1mm);
+\draw[line width=1mm,red]
+ (215:5mm) arc (215:325:5mm);
+\end{tcblisting}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}{tikznode upper}{\colOpt{=\meta{options}}}{style}
+ This style places the upper part content into a centered
+ \tikzname\ node. The \meta{options} may be given as \tikzname\ node options.
+ This style is especially useful for boxes with multiline texts which are
+ fitted to the text width.
+\begin{exdispExample}{tikznode_upper}
+% \usepackage{tikz}
+\newtcbox{\headline}[1][]{enhanced,center,
+ ignore nobreak,fontupper=\Large\bfseries,
+ colframe=red!50!black,colback=red!10!white,
+ drop fuzzy shadow=yellow,tikznode upper,#1}
+
+\headline{Important\\Headline}
+\end{exdispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}{tikznode lower}{\colOpt{=\meta{options}}}{style}
+ This style places the lower part content into a centered
+ \tikzname\ node. The \meta{options} may be given as \tikzname\ node options.
+\begin{exdispExample}{tikznode_lower}
+% \usepackage{tikz}
+\begin{tcolorbox}[bicolor,colback=LightBlue!50!white,colbacklower=white,
+ colframe=black,tikznode lower={inner sep=2pt,draw=red,fill=yellow}]
+Upper part.
+\tcblower
+Lower part.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}{tikznode}{\colOpt{=\meta{options}}}{style}
+ Shortcut for setting \refKey{/tcb/tikznode upper} and \refKey{/tcb/tikznode lower}
+ the same time.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{varwidth upper}{\colOpt{=\meta{length}}}{style, default \refKey{/tcb/width}}
+ This style places the upper part content into a |varwidth| environment.
+ This style needs the |varwidth| package \cite{arseneau:2011a} to be loaded manually.
+ The resulting box has a maximal width of \meta{length}.
+ This option is only senseful for a \refCom{tcbox}.
+\begin{exdispExample*}{varwidth_upper}{sbs,lefthand ratio=0.6}
+% \usepackage{varwidth}
+\newtcbox{\varbox}{colframe=red!50!black,
+ colback=red!10!white,varwidth upper}
+
+\varbox{Short text.}
+\varbox{This box contains is a longer text
+ which is broken.}
+\end{exdispExample*}
+\end{docTcbKey}
+
+
+\clearpage
+\subsection{Overlays}\label{subsec:overlays}
+With an overlay, arbitrary \meta{graphical code} can be added to a
+|tcolorbox|. This code is executed \emph{after} the frame and interior are
+drawn and \emph{before} the text content is drawn. Therefore, you can
+decorate the |tcolorbox| with your own extensions.
+Common special cases are \emph{watermarks} which are implemented using overlays.
+See Subsection \ref{subsec:watermarks} from page \pageref{subsec:watermarks} if
+you want to add \emph{watermarks}.
+\begin{marker}
+If you use the core package only, the \meta{graphical code} has to be |pgf| code
+and there is not much assistance for positioning.
+Therefore, the usage of the \refKey{/tcb/enhanced} mode from the library skins
+is recommended which allows |tikz| code and gives access to
+\refKey{/tcb/geometry nodes} for positioning.
+\end{marker}
+
+\begin{docTcbKey}{overlay}{=\meta{graphical code}}{no default, initially unset}
+ Adds \meta{graphical code} to the box drawing process. This \meta{graphical code}
+ is drawn \emph{after} the frame and interior and \emph{before} the text content.
+
+\begin{exdispExample}{overlay_1}
+% \tcbuselibrary{skins} % preamble
+\tcbset{frogbox/.style={enhanced,colback=green!10,colframe=green!65!black,
+ enlarge top by=5.5mm,
+ overlay={\foreach \x in {2cm,3.5cm} {
+ \begin{scope}[shift={([xshift=\x]frame.north west)}]
+ \path[draw=green!65!black,fill=green!10,line width=1mm] (0,0) arc (0:180:5mm);
+ \path[fill=black] (-0.2,0) arc (0:180:1mm);
+ \end{scope}}}}}
+
+\begin{tcolorbox}[frogbox,title=My title]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample}
+
+\enlargethispage*{5mm}
+\begin{exdispExample}{overlay_2}
+% \usetikzlibrary{patterns} % preamble
+% \tcbuselibrary{skins} % preamble
+\tcbset{ribbonbox/.style={enhanced,colback=red!5!white,colframe=red!75!black,
+ fonttitle=\bfseries,
+ overlay={\path[fill=blue!75!white,draw=blue,double=white!85!blue,
+ preaction={opacity=0.6,fill=blue!75!white},
+ line width=0.1mm,double distance=0.2mm,
+ pattern=fivepointed stars,pattern color=white!75!blue]
+ ([xshift=-0.2mm,yshift=-1.02cm]frame.north east)
+ -- ++(-1,1) -- ++(-0.5,0) -- ++(1.5,-1.5) -- cycle;}}}
+
+\begin{tcolorbox}[ribbonbox,title=My title]
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}{no overlay}{}{style, no default, initially set}
+ Removes the overlay if set before.
+\end{docTcbKey}
+
+\begin{docTcbKey}{overlay broken}{=\meta{graphical code}}{no default, initially unset}
+ If the box is set to be \refKey{/tcb/breakable} and \emph{is} broken actually,
+ then the \meta{graphical code} is added to the box drawing process.
+ \refKey{/tcb/overlay} overwrites this key.
+\end{docTcbKey}
+
+\begin{docTcbKey}{overlay unbroken}{=\meta{graphical code}}{no default, initially unset}
+ If the box is set to be \refKey{/tcb/breakable} but \emph{is not} broken actually
+ or if the box is set to be \refKey{/tcb/unbreakable},
+ then the \meta{graphical code} is added to the box drawing process.
+ \refKey{/tcb/overlay} overwrites this key.
+\end{docTcbKey}
+
+\begin{docTcbKey}{overlay first}{=\meta{graphical code}}{no default, initially unset}
+ If the box is set to be \refKey{/tcb/breakable} and \emph{is} broken actually,
+ then the \meta{graphical code} is added to the box drawing process for
+ the \emph{first} part of the break sequence.
+ \refKey{/tcb/overlay} overwrites this key.
+\end{docTcbKey}
+
+\begin{docTcbKey}{overlay middle}{=\meta{graphical code}}{no default, initially unset}
+ If the box is set to be \refKey{/tcb/breakable} and \emph{is} broken actually,
+ then the \meta{graphical code} is added to the box drawing process for
+ the \emph{middle} parts (if any) of the break sequence.
+ \refKey{/tcb/overlay} overwrites this key.
+\end{docTcbKey}
+
+\begin{docTcbKey}{overlay last}{=\meta{graphical code}}{no default, initially unset}
+ If the box is set to be \refKey{/tcb/breakable} and \emph{is} broken actually,
+ then the \meta{graphical code} is added to the box drawing process for
+ the \emph{last} part of the break sequence.
+ \refKey{/tcb/overlay} overwrites this key.
+\end{docTcbKey}
+
+\begin{docTcbKey}{overlay unbroken and first}{=\meta{graphical code}}{no default, initially unset}
+ This is an optimized abbreviation for setting
+ \refKey{/tcb/overlay unbroken} and
+ \refKey{/tcb/overlay first} together.
+ \refKey{/tcb/overlay} overwrites this key.
+\end{docTcbKey}
+
+\begin{docTcbKey}{overlay middle and last}{=\meta{graphical code}}{no default, initially unset}
+ This is an optimized abbreviation for setting
+ \refKey{/tcb/overlay middle} and
+ \refKey{/tcb/overlay last} together.
+ \refKey{/tcb/overlay} overwrites this key.
+\end{docTcbKey}
+
+\begin{docTcbKey}{overlay unbroken and last}{=\meta{graphical code}}{no default, initially unset}
+ This is an optimized abbreviation for setting
+ \refKey{/tcb/overlay unbroken} and
+ \refKey{/tcb/overlay last} together.
+ \refKey{/tcb/overlay} overwrites this key.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2014-09-19]{overlay first and middle}{=\meta{graphical code}}{no default, initially unset}
+ This is an optimized abbreviation for setting
+ \refKey{/tcb/overlay first} and
+ \refKey{/tcb/overlay middle} together.
+ \refKey{/tcb/overlay} overwrites this key.
+\end{docTcbKey}
+
+
+\begin{dispListing*}{breakable,vfill before first,before upper={This example demonstrates
+the application of break sequence specific overlay options.
+Here, we define an environment |myexample| based
+on |tcolorbox| where the visible drawing is done totally by overlay keys.\par
+Here, the first application of |myexample| produces an unbroken |tcolorbox|.
+The frame is drawn by the code given with \refKey{/tcb/overlay unbroken}.\par
+The second application of |myexample| is broken into several parts which
+are drawn by the codes given with
+\refKey{/tcb/overlay first}, \refKey{/tcb/overlay middle}, and
+\refKey{/tcb/overlay last}.
+\par\bigskip
+}}
+% Preamble:
+%\usepackage{tikz,lipsum}
+%\tcbuselibrary{skins,breakable}
+%\newcounter{example}
+\colorlet{colexam}{red!75!black}
+\newtcolorbox[use counter=example]{myexample}{%
+ empty,title={Example \thetcbcounter},attach boxed title to top left,
+ boxed title style={empty,size=minimal,toprule=2pt,top=4pt,
+ overlay={\draw[colexam,line width=2pt]
+ ([yshift=-1pt]frame.north west)--([yshift=-1pt]frame.north east);}},
+ coltitle=colexam,fonttitle=\Large\bfseries,
+ before=\par\medskip\noindent,parbox=false,boxsep=0pt,left=0pt,right=3mm,top=4pt,
+ breakable,pad at break*=0mm,vfill before first,
+ overlay unbroken={\draw[colexam,line width=1pt]
+ ([yshift=-1pt]title.north east)--([xshift=-0.5pt,yshift=-1pt]title.north-|frame.east)
+ --([xshift=-0.5pt]frame.south east)--(frame.south west); },
+ overlay first={\draw[colexam,line width=1pt]
+ ([yshift=-1pt]title.north east)--([xshift=-0.5pt,yshift=-1pt]title.north-|frame.east)
+ --([xshift=-0.5pt]frame.south east); },
+ overlay middle={\draw[colexam,line width=1pt] ([xshift=-0.5pt]frame.north east)
+ --([xshift=-0.5pt]frame.south east); },
+ overlay last={\draw[colexam,line width=1pt] ([xshift=-0.5pt]frame.north east)
+ --([xshift=-0.5pt]frame.south east)--(frame.south west);},%
+}
+
+\begin{myexample}
+\lipsum[1]
+\end{myexample}
+
+\begin{myexample}
+\lipsum[2-11]
+\end{myexample}
+
+\lipsum[12]% following text
+\end{dispListing*}
+{\tcbusetemp}
+
+
+%\begin{dispExample}
+%% \tcbuselibrary{skins}
+%% \newcounter{example}
+%\newtcolorbox[use counter=example]{FancyTitle}[3][]{%
+% enhanced,colback=blue!10!white,colframe=orange,top=4mm,
+% enlarge top by=\baselineskip/2+1mm,
+% enlarge top at break by=0mm,pad at break=2mm,
+% fontupper=\normalsize,label={#3},
+% overlay unbroken and first={%
+% \node[rectangle,rounded corners,draw=black,fill=blue!20!white,
+% inner sep=1mm,anchor=west,font=\small]
+% at ([xshift=4.5mm]frame.north west)
+% {\strut\textbf{Example \thetcbcounter: #2}};},
+% #1}%
+
+%\begin{FancyTitle}{My fancy title}{fancy:title}
+% \lipsum[1]
+%\end{FancyTitle}
+%\end{dispExample}
+
+\clearpage
+\subsection{Floating Objects}
+\begin{docTcbKey}{floatplacement}{=\meta{values}}{no default, initially \texttt{htb}}
+ Sets \meta{values} as default values for the usage of \refKey{/tcb/float}
+ and \refKey{/tcb/float*}.
+ Feasible are the usual parameters for floating objects.
+\begin{dispListing}
+\tcbset{enhanced,colback=red!5!white,colframe=red!75!black,
+ watermark color=red!15!white}
+
+\begin{tcolorbox}[floatplacement=t,float,
+ title=Floating box from |floatplacement|,
+ watermark text={I am floating}]
+ This floating box is placed at the top of a page.
+\end{tcolorbox}
+\end{dispListing}
+\end{docTcbKey}
+{\tcbusetemp}
+
+
+\begin{docTcbKey}{float}{\colOpt{=\meta{values}}}{default from \texttt{floatplacement}}
+ Turns the box to a floating object where \meta{values} are the
+ usual parameters for such floating objects.
+ If they are not used, the placement uses the default values given by
+ |floatplacement|.
+\begin{dispListing}
+\begin{tcolorbox}[float, title=Floating box from |float|,
+ enhanced,watermark text={I'm also floating}]
+ This box floats to a feasible place automatically. You do not have to
+ use a numbering for this floating object.
+\end{tcolorbox}
+\end{dispListing}
+\end{docTcbKey}
+{\tcbusetemp}
+
+
+\begin{docTcbKey}{float*}{\colOpt{=\meta{values}}}{default from \texttt{floatplacement}}
+ Identical to \refKey{/tcb/float}, but for wide boxes spanning the whole page
+ width of two column documents or in conjunction with the packages
+ |multicol| or |paracol|. Note that you have to set |width=\textwidth|
+ additionally, if the box should span the whole page width in these cases!
+\begin{dispListing}
+\begin{tcolorbox}[float*=b, title=Floating box from |float*|,width=\textwidth,
+ enhanced,watermark text={I'm also floating}]
+ In this single column document, you will see no difference to |float|.
+\end{tcolorbox}
+\end{dispListing}
+\end{docTcbKey}
+{\tcbusetemp}
+
+
+\begin{docTcbKey}{nofloat}{}{style, initially set}
+ Turns the floating behavior off.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2014-09-19]{every float}{=\meta{code}}{no default, initially empty}
+ For floating objects, the \refKey{/tcb/before} and \refKey{/tcb/after}
+ settings are ignored. Instead, the given \meta{code} is inserted before
+ a floating box. If the box is \refKey{/tcb/breakable}, the given \meta{code} is
+ inserted before every part of the break sequence.
+ The most common use case is |every float=\centering|.
+
+\begin{dispListing}
+\tcbox[float=htb,title={Floating box},every float=\centering,
+ colback=blue!50!black,colframe=blue!50!white,colbacktitle=blue!10!white,
+ coltitle=black,center title]
+ {\includegraphics[height=6cm]{lichtspiel.jpg}}
+\end{dispListing}
+{\tcbset{reset}\tcbusetemp}
+
+\end{docTcbKey}
+
+
+
+\clearpage
+\subsection{Embedding into the Surroundings}\label{subsec:surroundings}
+Typically, but not necessarily, a |tcolorbox| is put inside a separate paragraph
+and has some vertical space before and after it.
+This behavior is controlled by the keys |before| and |after|.
+
+\begin{docTcbKey}{before}{=\meta{code}}{no default, initially see \refKey{/tcb/autoparskip}}
+ Sets the \meta{code} which is executed before the colored box.
+ It is not used for floating boxes.
+ Also, it is not used, if the box follows a heading immediately
+ and \refKey{/tcb/ignore nobreak} is set to \docValue{false}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{after}{=\meta{code}}{no default, initially see \refKey{/tcb/autoparskip}}
+ Sets the \meta{code} which is executed after the colored box.
+ It is not used for floating boxes.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc updated=2017-02-01]{parskip}{}{style, no value}
+ Sets the keys |before| and |after| to values which are
+ recommended, if the package |parskip| \emph{is} used and there is no better
+ idea for |before| and |after|. This is similar to:
+\begin{dispListing}
+\tcbset{parskip/.style={before={\par\pagebreak[0]\parindent=0pt},
+ after={\par}}}
+\end{dispListing}
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc updated=2017-02-01]{noparskip}{}{style, no value}
+ Sets the keys |before| and |after| to values which are
+ recommended, if the package |parskip| is \emph{not} used and there is no better
+ idea for |before| and |after|. This is similar to:
+\begin{dispListing}
+\tcbset{noparskip/.style={before={\par\pagebreak[0]\smallskip\parindent=0pt},
+ after={\par\smallskip}}}
+\end{dispListing}
+\end{docTcbKey}
+
+\begin{docTcbKey}{autoparskip}{}{style, no value, initially set}
+ Tries to detect the usage of the package |parskip| and sets
+ the keys |before| and |after| accordingly. Actually, the following is done:
+ \begin{itemize}
+ \item If the length of |\parskip| is greater than |0pt| at the beginning of the document,
+ \refKey{/tcb/parskip} is executed. Here, the usage of package |parskip| is \emph{assumed}.
+ \item Otherwise, if the length of |\parskip| is not greater than |0pt| at the beginning of the document,
+ \refKey{/tcb/noparskip} is executed. Here, the absence of package |parskip| is \emph{assumed}.
+ \end{itemize}
+ |autoparskip| is the default for the package |tcolorbox|, if |before| or |after|
+ are not changed otherwise.
+\end{docTcbKey}
+
+\begin{docTcbKey}{nobeforeafter}{}{style, no value}
+ Abbreviation for clearing the keys |before| and |after|. The colored box
+ is not put into a paragraph and there is no space before or after the box.
+\begin{exdispExample}{nobeforeafter}
+\tcbset{myone/.style={colback=LightGreen,colframe=DarkGreen,
+ equal height group=nobefaf,width=\linewidth/4,nobeforeafter}}
+\begin{tcolorbox}[myone,title=Box 1]Box 1\end{tcolorbox}%
+\begin{tcolorbox}[myone,title=Box 2]Box 2\end{tcolorbox}%
+\begin{tcolorbox}[myone,title=Box 3]Box 3\end{tcolorbox}%
+\begin{tcolorbox}[myone,title=Box 4]Box 4\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+\enlargethispage*{1cm}
+\begin{docTcbKey}{forces nobeforeafter}{}{style, no value}
+ Forces the setting of \refKey{/tcb/nobeforeafter} even if
+ \refKey{/tcb/before} and \refKey{/tcb/after} are set to other values
+ later. Do not use this option globally unless you \emph{really} know what you do.
+ Note that embedded boxes do not inherit this forced clearance.
+\end{docTcbKey}
+
+
+\clearpage
+
+\begin{docTcbKey}{baseline}{=\meta{length}}{no default, initially |0pt|}
+ Used to set the |\pgfsetbaseline| value of the resulting |tcolorbox|.
+\begin{exdispExample}{baseline}
+\tcbset{colframe=red!50!white,width=4cm,nobeforeafter}
+Some text\dotfill
+\begin{tcolorbox}[baseline=3mm]
+One line.
+\end{tcolorbox}
+\begin{tcolorbox}[baseline=3mm]
+First line.\\Second line.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2014-10-10]{box align}{=\meta{alignment}}{style, no default, initially |bottom|}
+ Used to set the \refKey{/tcb/baseline} value of the resulting |tcolorbox|.
+ Feasible values for \meta{alignment} are:
+ \begin{itemize}
+ \item\docValue{bottom}: alignment with the box bottom,
+ \item\docValue{top}: alignment with the box top,
+ \item\docValue{center}: alignment with the box center,
+ \item\docValue{base}: alignment with the box content base. This option
+ is not applicable for a \refEnv{tcolorbox} but for a \refCom{tcbox} only.
+ It is an alias for \refKey{/tcb/tcbox raise base}.
+ \end{itemize}
+
+\begin{exdispExample}{box_align_1}
+\tcbset{colframe=red!50!white,width=4cm,nobeforeafter}
+Some text\dotfill
+\begin{tcolorbox}[box align=bottom]
+One line.
+\end{tcolorbox}
+\begin{tcolorbox}[box align=bottom]
+First line.\\Second line.
+\end{tcolorbox}
+\end{exdispExample}
+
+\begin{exdispExample}{box_align_2}
+\tcbset{colframe=red!50!white,width=4cm,nobeforeafter}
+Some text\dotfill
+\begin{tcolorbox}[box align=top]
+One line.
+\end{tcolorbox}
+\begin{tcolorbox}[box align=top]
+First line.\\Second line.
+\end{tcolorbox}
+\end{exdispExample}
+
+\begin{exdispExample}{box_align_3}
+\tcbset{colframe=red!50!white,width=4cm,nobeforeafter}
+Some text\dotfill
+\begin{tcolorbox}[box align=center]
+One line.
+\end{tcolorbox}
+\begin{tcolorbox}[box align=center]
+First line.\\Second line.
+\end{tcolorbox}
+\end{exdispExample}
+
+\begin{exdispExample}{box_align_4}
+\tcbset{colframe=red!50!white,nobeforeafter}
+Some text\dotfill
+\tcbox[nobeforeafter,box align=base]{One line}
+\tcbox[nobeforeafter,box align=base,size=fbox]{Another line}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new and updated={2014-10-10}{2015-03-16}]{before skip}{=\meta{glue}}{style, no default}
+ Inserts some vertical space of the given \meta{glue} before the colored box.
+ This style sets \refKey{/tcb/before}.
+\begin{exdispExample*}{before_skip}{sbs,lefthand ratio=0.6}
+Some text.
+\begin{tcolorbox}[before skip=1cm,
+ colframe=red!50!white]
+ This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new and updated={2014-10-10}{2017-02-01}]{after skip}{=\meta{glue}}{style, no default}
+ Inserts some vertical space of the given \meta{glue} after the colored box.
+ This style sets \refKey{/tcb/after}.
+\begin{exdispExample*}{after_skip}{sbs,lefthand ratio=0.6}
+\begin{tcolorbox}[after skip=1cm,
+ colframe=red!50!white]
+ This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+Some text.
+\end{exdispExample*}
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2014-10-10]{beforeafter skip}{=\meta{glue}}{style, no default}
+ Inserts some vertical space of the given \meta{glue} before \emph{and} after the colored box.
+ This style sets \refKey{/tcb/before} and \refKey{/tcb/after}.
+\begin{exdispExample*}{beforeafter_skip}{sbs,lefthand ratio=0.6}
+\tcbset{beforeafter skip=0pt,
+ colframe=red!50!white}
+\begin{tcolorbox}
+ This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\begin{tcolorbox}
+ Second box.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+\clearpage
+
+\begin{docTcbKey}[][doc new=2014-11-07]{left skip}{=\meta{length}}{style, no default, initially |0mm|}
+ Inserts some horizontal space of the given \meta{length} before the colored box.
+ This style sets \refKey{/tcb/grow to left by} with the negated \meta{length},
+ i.e. the bounding box and box width are changed.
+\begin{exdispExample*}{left_skip}{sbs,lefthand ratio=0.6}
+\noindent\rule{\linewidth}{2pt}
+
+\begin{tcolorbox}[left skip=1cm,
+ colframe=red!50!white]
+ This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2014-11-07]{right skip}{=\meta{length}}{style, no default, initially |0mm|}
+ Inserts some horizontal space of the given \meta{length} after the colored box.
+ This style sets \refKey{/tcb/grow to right by} with the negated \meta{length},
+ i.e. the bounding box and box width are changed.
+\begin{exdispExample*}{right_skip}{sbs,lefthand ratio=0.6}
+\noindent\rule{\linewidth}{2pt}
+
+\begin{tcolorbox}[right skip=1cm,
+ colframe=red!50!white]
+ This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2014-10-10]{leftright skip}{=\meta{length}}{style, no default}
+ Inserts some horizontal space of the given \meta{length} before \emph{and} after the colored box.
+ This style changes the bounding box and the box width.
+\begin{exdispExample*}{leftright_skip}{sbs,lefthand ratio=0.6}
+\noindent\rule{\linewidth}{2pt}
+
+\begin{tcolorbox}[leftright skip=1cm,
+ colframe=red!50!white]
+ This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2014-12-11]{ignore nobreak}{\colOpt{=true\textbar false}}{default |true|, initially |false|}
+After a heading, \LaTeX\ tries to avoid a break by setting a |nobreak| boolean value.
+Starting from version |3.33|, the \refKey{/tcb/before} respectively \refKey{/tcb/before skip}
+settings are not used after a heading if \refKey{/tcb/ignore nobreak} is
+set to \docValue{false}. For an unbreakable box, \refKey{/tcb/before nobreak} is used instead.
+Further, a \refKey{/tcb/breakable} box will also try to
+avoid a break between a heading and a directly following first part of a
+break sequence.
+
+Set \refKey{/tcb/ignore nobreak} to \docValue{true}, if |nobreak| should be
+ignored as prior to version |3.33|. Also, such a setting may be used locally to
+enforce the \refKey{/tcb/before} setting.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2014-12-16]{before nobreak}{=\meta{code}}{no default, initially \cs{noindent}}
+ Sets the \meta{code} which is executed before the colored box if it
+ is unbreakable, if \refKey{/tcb/ignore nobreak} is not set, and if
+ the box follows a heading.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2017-02-23]{parfillskip restore}{\colOpt{=true\textbar false}}{default |true|, initially |true|}
+ If this option is set to be |true|, the minimum value of |\parfillskip| is
+ tested at specific spots, if it is greater than |0pt|.
+ If so, |\parfillskip| is restored to |\@flushglue| which happens to be
+ the default value.
+
+ These tests are executed for
+ \refKey{/tcb/parskip},
+ \refKey{/tcb/noparskip},
+ \refKey{/tcb/after skip},
+ \refKey{/tcb/breakable}, and
+ \refEnv{tcbraster}.
+
+ This option was created to automatically
+ avoid overfull box warnings with |\parfillskip| changing packages.
+\end{docTcbKey}
+
+
+
+\clearpage
+\subsection{Bounding Box}
+Normally, every |tcolorbox| has a bounding box which fits exactly to the
+dimensions of the outer frame. Therefore, \LaTeX\ reserves exactly the space
+needed for the box.
+This behavior can be changed by enlarging (or shrinking) the bounding box.
+If the bounding box is enlarged, the |tcolorbox| will get some clearance
+around it. If the bounding box is shrunk, i.\,e.\ enlarged with negative
+values, the |tcolorbox| will overlap to other parts of the page.
+For example, the |tcolorbox| could be stretched into the page margin.
+
+\begin{marker}
+The following examples use \refKey{/tcb/show bounding box} to display the
+actual bounding box. For this, the library \mylib{skins} has to be included and
+\refKey{/tcb/enhanced} has to be set.
+\end{marker}
+
+\subsubsection{Shifting Bounding Box Borders}
+
+\begin{docTcbKey}{enlarge top initially by}{=\meta{length}}{no default, initially |0mm|}
+ Enlarges the bounding box distance to the top of the box by \meta{length}.
+ If the box is \emph{breakable}, only the first box of the break sequence
+ gets enlarged. \refKey{/tcb/enlarge top by} overwrites this key.
+\begin{exdispExample}{enlarge_top_initially_by}
+\tcbset{colframe=blue!75!black,colback=white}
+
+\begin{tcolorbox}[enlarge top initially by=-5mm]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\begin{tcolorbox}[enlarge top initially by=5mm,enhanced,show bounding box]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+
+\begin{docTcbKey}{enlarge bottom finally by}{=\meta{length}}{no default, initially |0mm|}
+ Enlarges the bounding box distance to the bottom of the box by \meta{length}.
+ If the box is \emph{breakable}, only the last box of the break sequence
+ gets enlarged. \refKey{/tcb/enlarge bottom by} overwrites this key.
+\begin{exdispExample}{enlarge_bottom_finally_by}
+\tcbset{colframe=blue!75!black,colback=white}
+
+\begin{tcolorbox}[enlarge bottom finally by=5mm]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\begin{tcolorbox}[enlarge bottom finally by=-5mm,enhanced,show bounding box]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+\clearpage
+
+
+\begin{docTcbKey}{enlarge top at break by}{=\meta{length}}{no default, initially \texttt{0mm}}
+ Enlarges the bounding box distance to the top of the box by \meta{length},
+ \emph{if} the box is \refKey{/tcb/breakable}.
+ In this case, it is applied to \emph{middle} and \emph{last} parts in a
+ break sequence.
+ \refKey{/tcb/enlarge top by} overwrites this key.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{enlarge bottom at break by}{=\meta{length}}{no default, initially \texttt{0mm}}
+ Enlarges the bounding box distance to the bottom of the box by \meta{length},
+ \emph{if} the box is \refKey{/tcb/breakable}.
+ In this case, it is applied to \emph{first} and \emph{middle} parts in a
+ break sequence. \refKey{/tcb/enlarge bottom by} overwrites this key.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{enlarge top by}{=\meta{length}}{no default, initially |0mm|}
+ Enlarges the bounding box distance to the top of the box by \meta{length}.
+ \refKey{/tcb/enlarge top initially by} and
+ \refKey{/tcb/enlarge top at break by} are set to \meta{length}.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{enlarge bottom by}{=\meta{length}}{no default, initially |0mm|}
+ Enlarges the bounding box distance to the bottom of the box by \meta{length}.
+ \refKey{/tcb/enlarge bottom finally by} and
+ \refKey{/tcb/enlarge bottom at break by} are set to \meta{length}.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{enlarge left by}{=\meta{length}}{no default, initially |0mm|}
+ Enlarges the bounding box distance to the left side of the box by \meta{length}.
+\begin{exdispExample}[safety=2cm]{enlarge_left_by}
+\tcbset{colframe=blue!75!black,colback=white}
+
+\begin{tcolorbox}[enlarge left by=2cm,width=5cm,enhanced,show bounding box]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\begin{tcolorbox}[enlarge left by=-2cm,width=\linewidth+2cm]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}{enlarge right by}{=\meta{length}}{no default, initially |0mm|}
+ Enlarges the bounding box distance to the right side of the box by \meta{length}.
+\begin{exdispExample}[safety=2cm]{enlarge_right_by}
+\tcbset{colframe=blue!75!black,colback=white}
+
+\begin{tcolorbox}[enlarge right by=-2cm,width=\linewidth+2cm,
+ enhanced,show bounding box]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\begin{tcolorbox}[enlarge right by=2cm,width=\linewidth-2cm]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}{enlarge by}{=\meta{length}}{no default, initially |0mm|}
+ Enlarges the bounding box distance to all sides of the box by \meta{length}.
+\begin{exdispExample}{enlarge_by}
+\tcbset{colframe=blue!75!black,colback=white,width=5cm,nobeforeafter}
+
+\begin{tcolorbox}
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\begin{tcolorbox}[enlarge by=5mm,enhanced,show bounding box]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+
+\begin{docTcbKey}{grow to left by}{=\meta{length}}{no default, initially |0mm|}
+ Enlarges the current box width by \meta{length} and
+ enlarges (shrinks) the bounding box distance to the left side of the box by
+ $-$\meta{length}. Also see \refKey{/tcb/left skip}.
+\begin{exdispExample}[safety=2cm]{grow_to_left_by}
+\tcbset{colframe=blue!75!black,colback=white}
+
+\begin{tcolorbox}[width=5cm,grow to left by=2cm,enhanced,show bounding box]
+This is a \textbf{tcolorbox} with a width of 7cm.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}{grow to right by}{=\meta{length}}{no default, initially |0mm|}
+ Enlarges the current box width by \meta{length} and
+ enlarges (shrinks) the bounding box distance to the right side of the box by
+ $-$\meta{length}. Also see \refKey{/tcb/right skip}.
+\begin{exdispExample}[safety=2cm]{grow_to_right_by}
+\tcbset{colframe=blue!75!black,colback=white}
+
+\begin{tcolorbox}[grow to right by=2cm,enhanced,show bounding box]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+
+\bigskip
+
+\begin{tcolorbox}[grow to right by=2cm,grow to left by=1cm,
+ enhanced,show bounding box]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+\clearpage
+
+\begin{docTcbKey}[][doc new=2018-03-22]{grow sidewards by}{=\meta{length}}{no default, initially |0mm|}
+ Shortcut for setting \refKey{/tcb/grow to left by} and \refKey{/tcb/grow to right by}
+ to \meta{length}. Also see \refKey{/tcb/oversize} and \refKey{/tcb/spread sidewards}.
+\begin{exdispExample}[safety=2cm]{grow_sidewards_by}
+\tcbset{colframe=blue!75!black,colback=white}
+
+\begin{tcolorbox}[grow sidewards by=2cm,enhanced,show bounding box]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\subsubsection{Box Alignment}
+
+\begin{docTcbKey}[][doc new=2015-11-20]{flush left}{}{style, no value}
+ Enlarges the bounding box to the right side to fill the line completely.
+\begin{exdispExample}{flush_left}
+\tcbset{colframe=blue!75!black,colback=white}
+
+\begin{tcolorbox}[flush left,width=5cm,enhanced,show bounding box]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2015-11-20]{flush right}{}{style, no value}
+ Enlarges the bounding box to the left side to fill the line completely.
+\begin{exdispExample}{flush_right}
+\tcbset{colframe=blue!75!black,colback=white}
+
+\begin{tcolorbox}[flush right,width=5cm,enhanced,show bounding box]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2015-11-20]{center}{}{style, no value}
+ Enlarges the bounding box equally to both sides to fill the line completely.
+\begin{exdispExample}{center}
+\tcbset{colframe=blue!75!black,colback=white}
+
+\begin{tcolorbox}[center,width=5cm,enhanced,show bounding box]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\clearpage
+\subsubsection{Toggle Enlargements}
+
+\begin{docTcbKey}[][doc updated=2015-11-13]{toggle enlargement}{=\meta{toggle preset}}{default |evenpage|, initially |none|}
+ According to the \meta{toggle preset}, the left and the right enlargements of
+ the bounding box are switched or not. Feasible values are:
+ \begin{itemize}
+ \item\docValue{none}: no switching.
+ \item\docValue{forced}: the values of the left and right enlargement are switched.
+ \item\docValue{evenpage}: if the page is an even page, the values of the left and
+ right enlargement are switched. This value also sets
+ \refKey{/tcb/check odd page} to |true|.
+ \end{itemize}
+\begin{marker}
+See \refKey{/tcb/toggle left and right} to toggle geometry settings.
+\end{marker}
+
+\begin{dispExample}
+\tcbset{colframe=blue!75!black,colback=white,
+ grow to left by=20mm,grow to right by=-5mm}
+
+\begin{tcolorbox}[toggle enlargement=none,enhanced,show bounding box]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\begin{tcolorbox}[toggle enlargement=forced]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\begin{tcolorbox}[toggle enlargement=evenpage]
+ This page is an \tcbifoddpage{odd}{even} page.
+ Therefore, the left and right enlargements
+ \tcbifoddpage{are not}{are} toggled.
+\end{tcolorbox}
+\end{dispExample}
+
+\begin{dispListing}
+\begin{tcolorbox}[colframe=red!60!black,colback=red!15!white,
+ fonttitle=\bfseries,title=Floating box from \texttt{toggle enlargement},
+ width=\textwidth,grow to right by=2cm,toggle enlargement,float=t]
+ This page is an \tcbifoddpage{odd}{even} page.
+ Therefore, the left and right enlargements \tcbifoddpage{are not}{are} toggled.
+ This box stretches to the right margin on odd pages and to the left
+ margin on even pages. The current document is one-sided -- this feature makes
+ sense for two-sided documents only.
+\end{tcolorbox}
+\end{dispListing}
+\tcbusetemp
+\end{docTcbKey}
+
+
+
+\clearpage
+\subsubsection{Spread Box to Page Borders}
+
+\begin{marker}
+The following border options are \emph{not} applicable to nested boxes, boxes insides
+tables, etc.
+For boxes inside lists, the options \emph{may} work, but not necessarily.
+Also, boxes should be set with |\noindent| and full width.
+\end{marker}
+
+\begin{docTcbKey}[][doc new=2017-02-13]{spread inwards}{\colOpt{=\meta{length}}}{default |0pt|, initially unset}
+Enlarges the current box width to match the inner page border (left-handed side for one-sided
+documents). If the optional \meta{length} is greater than |0pt|, the box
+grows over the border, if \meta{length} is lower than |0pt|, there is a
+margin between box and page border.
+\refKey{/tcb/toggle enlargement} is set automatically.
+\begin{dispListing}
+\begin{tcolorbox}[enhanced,spread inwards,
+ colframe=blue!75!black,colback=white,show bounding box]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{dispListing}
+{\tcbusetemp}
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2017-02-13]{spread outwards}{\colOpt{=\meta{length}}}{default |0pt|, initially unset}
+Enlarges the current box width to match the outer page border (right-handed side for one-sided
+documents). If the optional \meta{length} is greater than |0pt|, the box
+grows over the border, if \meta{length} is lower than |0pt|, there is a
+margin between box and page border.
+\refKey{/tcb/toggle enlargement} is set automatically.
+\begin{dispListing}
+\begin{tcolorbox}[enhanced,spread outwards,
+ colframe=blue!75!black,colback=white,show bounding box]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{dispListing}
+{\tcbusetemp}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2017-02-13]{move upwards}{\colOpt{=\meta{length}}}{default |0pt|, initially unset}
+Starts a new page with the box at the very top page border.
+If the optional \meta{length} is greater than |0pt|, the box
+moves over the border, if \meta{length} is lower than |0pt|, there is a
+margin between box and page border.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2017-02-13]{move upwards*}{\colOpt{=\meta{length}}}{default |0pt|, initially unset}
+Identical to \refKey{/tcb/move upwards}, but without starting a new page.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2017-02-13]{fill downwards}{\colOpt{=\meta{length}}}{default |0pt|, initially unset}
+Enlarges the height of the box until the very bottom page border.
+The library \mylib{breakable} has to be loaded, and
+\refKey{/tcb/height fill} is set automatically.
+If the optional \meta{length} is greater than |0pt|, the box
+moves over the border, if \meta{length} is lower than |0pt|, there is a
+margin between box and page border.
+\begin{dispListing}
+\begin{tcolorbox}[enhanced,fill downwards,
+ colframe=blue!75!black,colback=white,show bounding box]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{dispListing}
+{\tcbusetemp}
+\end{docTcbKey}
+
+
+\begin{tcolorbox}[enhanced,spread upwards,sharp corners=north,height=3cm,
+ colframe=blue!75!black,interior style={top color=blue!50,bottom color=white}]
+This is an example for 'spread upwards'.
+\end{tcolorbox}
+\begin{docTcbKey}[][doc new=2017-02-13]{spread upwards}{\colOpt{=\meta{length}}}{default |0pt|, initially unset}
+Combination of
+\refKey{/tcb/move upwards}, \refKey{/tcb/spread inwards}, and \refKey{/tcb/spread outwards}.
+The optional \meta{length} is used for all these keys.
+\begin{dispListing}
+\begin{tcolorbox}[enhanced,spread upwards,sharp corners=north,height=3cm,
+ colframe=blue!75!black,interior style={top color=blue!50,bottom color=white}]
+This is an example for 'spread upwards'.
+\end{tcolorbox}
+\end{dispListing}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2017-02-13]{spread upwards*}{\colOpt{=\meta{length}}}{default |0pt|, initially unset}
+Identical to \refKey{/tcb/move upwards}, but without starting a new page.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2017-02-13]{spread sidewards}{\colOpt{=\meta{length}}}{default |0pt|, initially unset}
+Combination of \refKey{/tcb/spread inwards} and \refKey{/tcb/spread outwards}.
+The optional \meta{length} is used for all these keys.
+Also see \refKey{/tcb/oversize} and \refKey{/tcb/grow sidewards by}.
+\begin{dispListing}
+\begin{tcolorbox}[enhanced,spread sidewards,
+ colframe=blue!75!black,colback=white,show bounding box]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{dispListing}
+{\tcbusetemp}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2017-02-13]{spread}{\colOpt{=\meta{length}}}{default |0pt|, initially unset}
+Combination of
+\refKey{/tcb/move upwards}, \refKey{/tcb/fill downwards}, \refKey{/tcb/spread inwards},
+and \refKey{/tcb/spread outwards}.
+Such, the box fills the whole page.
+The optional \meta{length} is used for all these keys.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2017-02-13]{spread downwards}{\colOpt{=\meta{length}}}{default |0pt|, initially unset}
+Combination of
+\refKey{/tcb/fill downwards}, \refKey{/tcb/spread inwards}, and \refKey{/tcb/spread outwards}.
+The optional \meta{length} is used for all these keys.
+\begin{dispListing}
+\begin{tcolorbox}[enhanced,spread downwards,sharp corners=south,
+ colframe=red!75!black,interior style={top color=white,bottom color=red!50}]
+This is an example for 'spread downwards'.
+\end{tcolorbox}
+\end{dispListing}
+\end{docTcbKey}
+\begin{tcolorbox}[enhanced,spread downwards,sharp corners=south,
+ colframe=red!75!black,interior style={top color=white,bottom color=red!50}]
+This is an example for 'spread downwards'.
+\end{tcolorbox}
+
+
+
+
+\clearpage
+\subsubsection{Box Extrusion}
+
+\begin{marker}
+The following keys should not be used with breakable boxes or boxes with a
+lower part.
+\end{marker}
+
+\begin{docTcbKey}{shrink tight}{}{style, no value, initially unset}
+ The total colored box is shrunk to the dimensions of the upper
+ part. There should be no lower part and no title.
+ This style sets the \refKey{/tcb/boxsep} to |0pt| and other geometry keys
+ to fitting values. This option is likely to be used with the following
+ extrusion keys.
+\begin{exdispExample}{shrink_tight}
+\tcbset{colframe=blue!75!black,colback=white,arc=0mm,boxrule=0.4pt,
+ nobeforeafter,tcbox raise base,shrink tight}
+
+\begin{tcolorbox}
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+
+Lorem \tcbox{ipsum} dolor sit amet, consectetuer adipiscing elit.
+\end{exdispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc updated=2014-09-19]{extrude left by}{=\meta{length}}{style, no default, initially unset}
+ The (upper part of the) colored box is extruded by the given \meta{length} to the left side.
+ The inner width and the bounding box is kept unchanged and the operation
+ is additive!
+\begin{exdispExample}{extrude_left_by}
+\tcbset{enhanced,colframe=red,colback=yellow!25!white,
+ frame style={opacity=0.25},interior style={opacity=0.5},
+ nobeforeafter,tcbox raise base,shrink tight,extrude by=2mm}
+
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit,
+vestibulum ut, placerat ac, adipiscing vitae, felis.
+\tcbox[extrude left by=1cm]{Curabitur} dictum gravida mauris.
+Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna.
+\end{exdispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc updated=2014-09-19]{extrude right by}{=\meta{length}}{style, no default, initially unset}
+ The (upper part of the) colored box is extruded by the given \meta{length} to the right side.
+ The inner width and the bounding box is kept unchanged and the operation
+ is additive!
+\begin{exdispExample}{extrude_right_by}
+\tcbset{enhanced,colframe=red,colback=yellow!25!white,
+ frame style={opacity=0.25},interior style={opacity=0.5},
+ nobeforeafter,tcbox raise base,shrink tight,extrude by=2mm}
+
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit,
+vestibulum ut, placerat ac, adipiscing vitae, felis.
+\tcbox[extrude right by=1cm]{Curabitur} dictum gravida mauris.
+Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna.
+\end{exdispExample}
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}{extrude top by}{=\meta{length}}{style, no default, initially unset}
+ The (upper part of the) colored box is extruded by the given \meta{length} to the top side.
+ The inner width and the bounding box is kept unchanged and the operation
+ is additive!
+\begin{exdispExample}{extrude_top_by}
+\tcbset{enhanced,colframe=red,colback=yellow!25!white,
+ frame style={opacity=0.25},interior style={opacity=0.5},
+ nobeforeafter,tcbox raise base,shrink tight,extrude by=2mm}
+
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit,
+vestibulum ut, placerat ac, adipiscing vitae, felis.
+\tcbox[extrude top by=1cm]{Curabitur} dictum gravida mauris.
+Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna.
+\end{exdispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}{extrude bottom by}{=\meta{length}}{style, no default, initially unset}
+ The (upper part of the) colored box is extruded by the given \meta{length} to the bottom side.
+ The inner width and the bounding box is kept unchanged and the operation
+ is additive!
+\begin{exdispExample}[safety=1cm]{extrude_bottom_by}
+\tcbset{enhanced,colframe=red,colback=yellow!25!white,
+ frame style={opacity=0.25},interior style={opacity=0.5},
+ nobeforeafter,tcbox raise base,shrink tight,extrude by=2mm}
+
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit,
+vestibulum ut, placerat ac, adipiscing vitae, felis.
+\tcbox[extrude bottom by=1cm]{Curabitur} dictum gravida mauris.
+Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna.
+\end{exdispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}{extrude by}{=\meta{length}}{style, no default, initially unset}
+ The (upper part of the) colored box is extruded by the given \meta{length} to all sides.
+ The inner width and the bounding box is kept unchanged and the operation
+ is additive!
+\begin{exdispExample}{extrude_by}
+\tcbset{enhanced,colframe=red,colback=yellow!25!white,
+ frame style={opacity=0.25},interior style={opacity=0.5},
+ nobeforeafter,tcbox raise base,shrink tight,extrude by=2mm}
+
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit,
+vestibulum ut, placerat ac, adipiscing vitae, felis. \tcbox{Curabitur} dictum
+gravida mauris. \tcbox[colframe=Green,interior style={opacity=0.0}]{Nam}
+arcu libero, nonummy eget, consectetuer id, \tcbox{vulputate} a, magna. Donec
+vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus
+et malesuada fames ac turpis egestas. \tcbox{Mauris ut leo.}
+\end{exdispExample}
+\end{docTcbKey}
+
+\clearpage
+\subsection{Layered Boxes and Every Box Settings}\label{subsec:everybox}
+A |tcolorbox| may contain another |tcolorbox| and so on. The package
+takes track of the nesting level using a counter |tcblayer|. Counter values
+may be used for doing some fancy things, but you should never change
+the counter value yourself.
+
+The package takes special care for the first four layers or nesting levels,
+called managed layers.
+Here, footnote texts are administrated to find their intended place
+and specific layer dependent options may be set by changing
+\refKey{/tcb/every box on layer n}.
+If needed, the number of managed layers can be increased by setting
+\refCom{tcbsetmanagedlayers} to a higher value than~4.
+
+The following styles have a considerable influence on how layered boxes
+are processed. Note especially that nested boxes are getting a
+\refKey{/tcb/reset} by default. You can change this, but be prepared for
+suprises if you do.
+
+If the defaults are \emph{not changed}, a |tcolorbox| gets its options
+in the following order. Following options overwrite preceding options.
+\begin{enumerate}
+\item On package load, all options are set to default values.
+\item Every \refCom{tcbset} command adds or changes options for the following boxes
+ inside the current \TeX\ group.
+\item While entering a |tcolorbox|, a \refKey{/tcb/every box on layer n} or
+ \refKey{/tcb/every box on higher layers} option list is applied.
+ With default settings this means:
+ \begin{itemize}
+ \item For layer 1 (lowest layer), the \refKey{/tcb/every box} option list is applied.
+ Not overwritten options given by a preceding \refCom{tcbset} survive.
+ \item For layer 2 and above (nested boxes), a \refKey{/tcb/reset} followed by
+ \refKey{/tcb/every box} option list is applied.
+ Every resettable options given by a preceding \refCom{tcbset}
+ and by the sourrounding box(es) are reset.
+ \end{itemize}
+\item The \meta{options} given to the |tcolorbox| are applied.
+ Or, if the box was generated by \refCom{newtcolorbox} or friends,
+ the \meta{options} given there are applied.
+\item If the box was generated by \refCom{newtcolorbox} or friends,
+ some automated options are applied.
+\end{enumerate}
+
+
+\begin{docTcbKey}{every box}{}{style}
+By default, this style is empty.
+\begin{dispListing}
+% default setting:
+\tcbset{every box/.style={}}
+\end{dispListing}
+It may be changed by redefining this style.
+\begin{dispListing}
+% setting all boxes to be enhanced:
+\tcbset{every box/.style={enhanced}}
+\end{dispListing}
+
+\medskip
+\begin{marker}
+The alternative for setting something for every box (on every layer) is\\
+\refCom{tcbsetforeverylayer}:
+\begin{dispListing}
+% setting all boxes to be enhanced:
+\tcbsetforeverylayer{enhanced}
+\end{dispListing}
+\end{marker}
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}{every box on layer n}{}{style}
+Here, |n| has to be replaced by a number ranging from 1 to the highest
+managed layer number (4 by default).
+\begin{dispListing}
+% default settings:
+\tcbset{
+ every box on layer 1/.style={every box},
+ every box on layer 2/.style={reset,every box},
+ every box on layer 3/.style={reset,every box},
+ every box on layer 4/.style={reset,every box},
+ }
+\end{dispListing}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{every box on higher layers}{}{style}
+Higher layers are layers above the highest
+managed layer number (4 by default).
+\begin{dispListing}
+\tcbset{every box on higher layers/.style={reset,every box}}
+\end{dispListing}
+\end{docTcbKey}
+
+
+\begin{docCommand}{tcbsetmanagedlayers}{\marg{number}}
+Replaces the highest managed layer number by \meta{number} where 4 is
+the default. This macro can only be used inside the preamble.
+Using a \meta{number} lower than 4 typically makes no sense, but is
+not forbidden.
+\end{docCommand}
+
+\begin{tcboutputlisting}
+% \usepackage{lipsum}
+% \tcbuselibrary{skins,breakable}
+\tcbset{colframe=red!75!black,fonttitle=\bfseries,
+ colback=red!5!white,
+ every box/.style={enhanced,watermark text=\thetcblayer,
+ before=\par\smallskip,after=\par\smallskip},
+ every box on layer 2/.style={reset,every box,colback=yellow!10!white,
+ drop fuzzy shadow}}
+\begin{tcolorbox}[enhanced jigsaw,breakable,title=Layer 1 Box]
+Here comes a footnote\footnote{Footnote from layer 1 box}.
+\lipsum[2]
+ \begin{tcolorbox}[title=Layer 2 Box]
+ abc\footnote{The footnote of abc}
+ \end{tcolorbox}
+ \begin{tcolorbox}[title=Another Box,ams equation]
+ \tcbhighmath{\sum\limits_{n=1}^{\infty} \frac{1}{n}} = \infty.
+ \end{tcolorbox}
+Some text\footnote{Footnote from some text}.
+ \begin{tcolorbox}[title=Yet Another Box]
+ \tcboxfit[height=2cm]{\lipsum[1]}
+ My text.
+ \begin{tcolorbox}
+ Another lipsum text\footnote{A lipsum text}. \lipsum[3]
+ \begin{tcolorbox}[title=Layer 4,colframe=blue,colback=white]
+ Layer 4\footnote{Layer 4 footnote}
+ \end{tcolorbox}
+ The End\footnote{Last footnote}.
+ \end{tcolorbox}
+ \end{tcolorbox}
+\end{tcolorbox}
+\end{tcboutputlisting}
+
+\tcbinputlisting{base example,listing only,listing style=mydocumentation}
+
+{\tcbuselistingtext}
+
+
+\clearpage
+\subsection{Capture Mode}\label{subsec:capture}
+
+\begin{docTcbKey}{capture}{=\meta{mode}}{no default, initially |minipage|}
+ The capture \meta{mode} defines how the box content is processed.
+
+Feasible values for \meta{mode} are:
+\begin{itemize}
+\item\docValue{minipage}:\\
+ This is the default \meta{mode} for \refEnv{tcolorbox}.
+ The content may have an upper and a lower part. Optionally, the box
+ can be \refKey{/tcb/breakable}. The box content is put into a
+ minipage or into something similar to a minipage.
+\item\docValue{hbox}:\\
+ This is the default \meta{mode} for \refCom{tcbox}. The content cannot have
+ a lower part and cannot be broken. The colored box is sized according
+ to the dimensions of the content.
+ A shortcut to set this mode is \refKey{/tcb/hbox}.
+\item\docValue{fitbox}: (needs the \mylib{fitting} library)\\
+ This is the default \meta{mode} for \refCom{tcboxfit}. The content cannot have
+ a lower part and cannot be broken.
+ The content is sized according to the dimensions of the colored box.
+ A shortcut to set this mode is \refKey{/tcb/fit}.
+\end{itemize}
+
+\begin{exdispExample}{capture}
+\tcbset{colframe=blue!75!black,colback=white}
+
+\begin{tcolorbox}[capture=minipage]
+This is a tcolorbox.
+\end{tcolorbox}
+
+\begin{tcolorbox}[capture=hbox]
+This is a tcolorbox.
+\end{tcolorbox}
+
+\begin{tcolorbox}[capture=fitbox,height=9mm]% needs the 'fitting' library
+This is a tcolorbox.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+
+\begin{docTcbKey}{hbox}{}{style, no default}
+ Shortcut for |capture=hbox|.
+\begin{exdispExample}{hbox}
+\tcbset{colframe=blue!75!black,colback=white}
+
+\begin{tcolorbox}[hbox]
+This is a tcolorbox.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{minipage}{}{style, no default}
+ Shortcut for |capture=minipage|.
+\end{docTcbKey}
+
+
+\clearpage
+\subsection{Text Characteristics}
+\begin{docTcbKey}[][doc updated=2015-10-14]{parbox}{\colOpt{=true\textbar false}}{default |true|, initially |true|}
+ The text inside a |tcolorbox| is formatted using a \LaTeX\ |minipage|
+ if the box is unbreakable. If breakable, the box tries a mimicry of
+ a |minipage|. In a |minipage| or |parbox|, paragraphs are formatted slightly different
+ as the main text. If the key value is set to |false|, the normal main text
+ behavior is restored. In some situations, this has some unwanted side
+ effects. It is recommended that you use this experimental setting only
+ where you really want to have this feature.
+\end{docTcbKey}
+
+\begin{dispListing}
+% \usepackage{lipsum} % preamble
+\tcbset{width=(\linewidth-2mm)/2,nobeforeafter,arc=1mm,
+ colframe=blue!75!black,colback=white,fonttitle=\bfseries,fontupper=\small,
+ left=2mm,right=2mm,top=1mm,bottom=1mm,equal height group=parbox}
+
+\begin{tcolorbox}[parbox,adjusted title={parbox=true (normal)}]
+ \lipsum[1-2]
+\end{tcolorbox}\hfill%
+\begin{tcolorbox}[parbox=false,adjusted title={parbox=false}]
+ \lipsum[1-2]
+\end{tcolorbox}%
+\end{dispListing}
+{\tcbusetemp}
+
+
+\clearpage
+\begin{docTcbKey}{hyphenationfix}{\colOpt{=true\textbar false}}{default |true|, initially |false|}
+ Long words at the beginning of paragraphs in very narrow boxes
+ will not be hyphenated using |pdflatex|. This problem is circumvented by
+ applying the |hyphenationfix| option.
+
+\begin{exdispExample*}{hyphenationfix}{sbs,lefthand ratio=0.6}
+\tcbset{colframe=blue!75!black,
+ fontupper=\normalsize,
+ colback=blue!5!white,width=4cm}
+
+\begin{tcolorbox}
+Rechnungsadjunktentochter.\par
+Statthaltereikonzipist.
+\end{tcolorbox}
+
+\begin{tcolorbox}[hyphenationfix]
+Rechnungsadjunktentochter.\par
+Statthaltereikonzipist.
+\end{tcolorbox}
+\end{exdispExample*}
+
+\smallskip
+\begin{marker}
+|parbox=false| and |hyphenationfix| should not be used together. They are
+targeting different box types and they do not blend very well.
+\end{marker}
+\end{docTcbKey}
+
+
+\subsection{Files}
+\begin{docTcbKey}{tempfile}{=\meta{file name}}{no default, initially \cs{jobname.tcbtemp}}
+ Sets \meta{file name} as name for the temporary file which is used inside
+ \refEnv{tcbwritetemp} and \refCom{tcbusetemp} implicitely.
+\end{docTcbKey}
+
+\subsection{\texttt{\textbackslash tcbox} Specials}
+The following options are applicable for \refCom{tcbox} and \refCom{tcboxmath}
+only.
+
+\begin{docTcbKey}{tcbox raise}{=\meta{length}}{no default, initially \texttt{0pt}}
+ Raises the \refCom{tcbox} by the given \meta{length}.
+ % Sets the line width of the right rule to \meta{length}.
+\begin{exdispExample}{tcbox_raise}
+\tcbset{colframe=blue!50!black,colback=white,colupper=red!50!black,
+ fonttitle=\bfseries,nobeforeafter,center title}
+
+Test\dotfill
+\tcbox[tcbox raise base]{Hello World 1}\dotfill
+\tcbox{Hello World 2}\dotfill
+\tcbox[tcbox raise=5mm]{Hello World 3}
+\end{exdispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}{tcbox raise base}{}{style, no value, initially unset}
+ Raises the \refCom{tcbox} such that the base of its content matches
+ the base of the environmental line; see example above.
+\end{docTcbKey}
+
+\begin{docTcbKey}{on line}{}{style, no value, initially unset}
+ Combines \refKey{/tcb/tcbox raise base} with \refKey{/tcb/nobeforeafter}.
+ The resulting box behaves analogue to |\fbox|.
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}[][doc new=2015-03-23]{tcbox width}{=\meta{mode}}{no default, initially \texttt{auto}}
+Controls how \refCom{tcbox} respects a \refKey{/tcb/width} setting.
+Feasible values for \meta{mode} are:
+\begin{itemize}
+\item\docValue{auto} (initial setting):
+ ignore \refKey{/tcb/width} and set box width according to its content.
+\item\docValue{auto limited}:
+ Set box width according to its content, if it is smaller than \refKey{/tcb/width}.
+ Otherwise, the content is set like in a \refEnv{tcolorbox} with line breaks.
+\item\docValue{forced center}:
+ Set box width according to \refKey{/tcb/width}.
+ The content is centered and may overlap the box borders.
+\item\docValue{forced left}:
+ Set box width according to \refKey{/tcb/width}.
+ The content is left aligned and may overlap the box borders.
+\item\docValue{forced right}:
+ Set box width according to \refKey{/tcb/width}.
+ The content is right aligned and may overlap the box borders.
+\item\docValue{minimum center}:
+ Set box width according to \refKey{/tcb/width}, if the content fits into.
+ The content is centered and the box width may grow beyond \refKey{/tcb/width}.
+\item\docValue{minimum left}:
+ Set box width according to \refKey{/tcb/width}, if the content fits into.
+ The content is left aligned and the box width may grow beyond \refKey{/tcb/width}.
+\item\docValue{minimum right}:
+ Set box width according to \refKey{/tcb/width}, if the content fits into.
+ The content is right aligned and the box width may grow beyond \refKey{/tcb/width}.
+\end{itemize}
+
+\enlargethispage*{1cm}
+
+\begin{exdispExample}{tcbox_width}
+\tcbset{size=small,on line,before upper=\strut,
+ colframe=blue!75!black,colback=blue!5!white,
+ fontupper=\normalsize,width=4cm}
+
+\tcbox[tcbox width=auto]{auto}\qquad
+\tcbox[tcbox width=auto limited]{auto limited}\qquad
+\tcbox[tcbox width=auto limited]{auto limited with long text}\\
+\tcbox[tcbox width=forced center]{forced center}\qquad
+\tcbox[tcbox width=forced center]{forced center with long text}\\
+\tcbox[tcbox width=forced left]{forced left}\qquad
+\tcbox[tcbox width=forced left]{forced left with long text}\\
+\tcbox[tcbox width=forced right]{forced right}\qquad
+\tcbox[tcbox width=forced right]{forced right with long text}\\
+\tcbox[tcbox width=minimum center]{minimum center}\qquad
+\tcbox[tcbox width=minimum center]{minimum center with long text}\\
+\tcbox[tcbox width=minimum left]{minimum left}\qquad
+\tcbox[tcbox width=minimum left]{minimum left with long text}\\
+\tcbox[tcbox width=minimum right]{minimum right}\qquad
+\tcbox[tcbox width=minimum right]{minimum right with long text}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+%\subsection{Skins}
+%There are additional option keys which change the appearance of a |tcolorbox|.
+%If only the core package is used, there is only one \emph{skin} and these
+%keys are meaningless.
+%The library \mylib{skins} adds more skins. The appropriate option keys for skins of
+%the core package are therefore described in \Vref{sec:skincorekeys} from
+%page \pageref{sec:skincorekeys}.
+
+\clearpage
+\subsection{Counters, Labels, and References}
+
+\begin{docTcbKey}{phantom}{=\meta{code}}{no default, initially unset}
+The \meta{code} is put in a box at the upper left corner of the |tcolorbox|.
+If the |tcolorbox| is breakable, the \meta{code} is executed for the first box of
+the break sequence only. If there already was some phantom code given, the
+new \meta{code} is appended.\par
+The \meta{code} is intended to be used for counter stepping, labelling, and
+related operations which do not produce visible text.
+\begin{itemize}
+\item The \meta{code} is executed before the title and box content, i.\,e.\ counter
+ values are ensured to be increased before usage.
+\item Labels are ensured to reference the correct page number.
+\item The \meta{code} is executed only once even during fitting operations for
+ title and box content.
+\item In combination with the |hyperref| package, the hyper anchor is set
+ to the upper left corner of the |tcolorbox|, i.\,e.\ links inside the pdf document
+ will jump to the box pleasantly.
+\item Since the \meta{code} is executed inside a \TeX\ group, only global
+ operations can survive this group.
+\end{itemize}
+Examples for the |phantom| usage are given in Section \ref{listing:exercises}
+from page \pageref{listing:exercises}, e.\,g.\
+Example \ref{exe:tabular_example} on page \pageref{exe:tabular_example}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{nophantom}{}{no value, initially set}
+Removes the phantom code if set before.
+\end{docTcbKey}
+
+\begin{docTcbKey}{label}{=\meta{marker}}{no default, initially unset}
+The \meta{marker} is set as label text for a reference with the |\ref| macro.
+Typically, this option is used for numbered boxes, see Subsection \ref{sec:numberedboxes}
+from page \pageref{sec:numberedboxes}, e.\,g.\ \refKey{/tcb/new/auto counter}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2014-11-28]{phantomlabel}{=\meta{marker}}{no default, initially unset}
+Equivalent to \refKey{/tcb/label} for an \emph{unnumbered} box.
+A |\phantomsection| from the package |hyperref| \cite{rahtz:hyperref} is used to set a correct
+hyperlink target. This is not needed for a numbered box.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{label type}{=\meta{type}}{no default, initially unset}
+This option key can be used only in conjunction with the |cleveref| package
+\cite{cubitt:2018a} which has to be loaded separately.
+\meta{type} has to be a cross-reference type \emph{known} to |cleveref|
+like |theorem|, |algorithm|, |result|, etc. References made with |cleveref|
+will use this type. Note that using |label type| will result in compilation
+errors, if |cleveref| is not loaded.
+For an example, see \Vref{theo:meanvaluetheorem}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{no label type}{}{no value, initially set}
+Removes a \refKey{/tcb/label type}, if set before.
+\end{docTcbKey}
+
+\begin{docTcbKey}{step}{=\meta{counter}}{no default, initially unset}
+Shortcut for |phantom={\refstepcounter{#1}}|. The given \meta{counter} is
+increased and ready for labelling. This option is not needed when
+using the convenient automated numbering introduced with version 2.40,
+see Subsection \ref{sec:numberedboxes}
+from page \pageref{sec:numberedboxes}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{step and label}{=\marg{counter}\marg{marker}}{no default, initially unset}
+Shortcut for using \refKey{/tcb/step} and \refKey{/tcb/label}. This option is not needed when
+using the convenient automated numbering introduced with version 2.40,
+see Subsection \ref{sec:numberedboxes}
+from page \pageref{sec:numberedboxes}.
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}{list entry}{=\meta{text}}{no default, initially unset}
+If the \flqq list of tcolorbox(es)\frqq\ feature described in Subsection
+\ref{sec:listsof} from page \pageref{sec:listsof} is used, this key
+describes the \meta{text} for an entry into the generated list, e.\,g.
+\begin{dispListing}
+list entry={\protect\numberline{\thetcbcounter}My beautiful Example}
+\end{dispListing}
+See Section \ref{listing:exercises} from page \pageref{listing:exercises}
+for a complete example.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2014-09-19]{list text}{=\meta{text}}{style, no default}
+This is a shortcut for setting \refKey{/tcb/list entry} to\\
+|\protect\numberline{\thetcbcounter}|\meta{text}.
+So, the following settings are identical:
+\begin{dispListing}
+list text={My beautiful Example},
+list entry={\protect\numberline{\thetcbcounter}My beautiful Example}
+\end{dispListing}
+See Section \ref{listing:exercises} from page \pageref{listing:exercises}
+for a complete example.
+\end{docTcbKey}
+
+\begin{docTcbKey}{add to list}{=\marg{list}\marg{type}}{no default, initially unset}
+If the \flqq list of tcolorbox(es)\frqq\ feature described in Subsection
+\ref{sec:listsof} from page \pageref{sec:listsof} is used, list entries are
+generated automatically. With this key, you can enforce an entry to the
+given \meta{list} with the given \meta{type}.
+This issues:\\
+|\addcontentsline|\marg{list}\marg{type}\marg{entry text}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new and updated={2016-06-22}{2016-11-18}]{nameref}{=\meta{text}}{no default, initially unset}
+If the |nameref| package is loaded, the given \meta{text} is used for
+corresponding |\nameref| macros. Typically, the \meta{text} will be chosen
+to be identical or nearly identical to the one for \refKey{/tcb/title}.
+
+\inputpreamblelisting{A}
+
+\begin{dispExample}
+\begin{pabox}[label={mynamelabel},nameref={Title or anything else}]{Title text}
+This is a tcolorbox.
+\end{pabox}
+This box is automatically numbered with \ref{mynamelabel} on page
+\pageref{mynamelabel}.
+
+The box is titled '\nameref{mynamelabel}'.
+\end{dispExample}
+
+\begin{marker}
+\refKey{/tcb/nameref} is used automatically inside \refCom{newtcbtheorem}.
+\end{marker}
+
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}[][doc new=2017-02-03]{hypertarget}{=\meta{marker}}{no default, initially unset}
+A |\hypertarget| from the package |hyperref| \cite{rahtz:hyperref} is used to
+create an internal link of an anchor \meta{marker}.
+This \meta{marker} can be referenced by |\hyperlink| or
+\refKey{/tcb/hyperlink}.
+ \begin{dispExample*}{sbs,lefthand ratio=0.7}
+% \usepackage{hyperref}%
+\begin{tcolorbox}[enhanced,
+ colback=red!10,colframe=red!50!black,
+ hypertarget=hypertwinA,
+ hyperlink=hypertwinB,
+ title=Box A]
+Click me to jump to Box B.
+\end{tcolorbox}
+ \end{dispExample*}
+\end{docTcbKey}
+
+
+
+\begin{docTcbKey}[][doc new=2017-02-10]{bookmark}{=\meta{text}}{no default, initially unset}
+ Sets a PDF bookmark with the given \meta{text}, if the package |bookmark| \cite{oberdiek:2016a}
+ is loaded. This bookmark is set with an automated destination (the current box)
+ and is set one level below the current bookmark level.
+ \begin{dispExample*}{sbs,lefthand ratio=0.7}
+% \usepackage{bookmark}%
+\begin{tcolorbox}[colback=blue!10,colframe=blue!50!black,
+ bookmark=Example for using a bookmark,
+ title=Example for using a bookmark]
+Open the bookmark view of the previewer
+to see the bookmark.
+\end{tcolorbox}
+ \end{dispExample*}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2017-02-10]{bookmark*}{=\marg{options}\marg{text}}{no default, initially unset}
+ Identical to \refKey{/tcb/bookmark}, but additional \meta{options}
+ from the package |bookmark| \cite{oberdiek:2016a} can be given.
+ \begin{dispExample*}{sbs,lefthand ratio=0.7}
+% \usepackage{bookmark}%
+\begin{tcolorbox}[colback=red!10,colframe=red!50!black,
+ bookmark*={color=red,italic,bold}%
+ {Another bookmark example},
+ title=Red and bold bookmark]
+Open the bookmark view of the previewer
+to see the bookmark.
+\end{tcolorbox}
+ \end{dispExample*}
+\end{docTcbKey}
+
+
+
+\begin{docTcbKey}[][doc new=2018-07-26]{index}{=\meta{entry}}{no default, initially unset}
+ Adds an index \meta{entry} for the box. This is a shortcut for
+ setting |\index|\marg{entry} to \refKey{/tcb/phantom}.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2018-07-26]{index*}{=\marg{name}\marg{entry}}{no default, initially unset}
+ Adds an \meta{entry} to an index with a specific \meta{name}.
+ This is a shortcut for
+ setting |\index|\oarg{name}\marg{entry} to \refKey{/tcb/phantom}.
+ An index extension package like |imakeidx| has to be loaded to use
+ this option key.
+\end{docTcbKey}
+
+
+
+
+
+
+
+
+\clearpage
+\subsection{Even and Odd Pages}
+
+\begin{marker}
+Also see
+\refKey{/tcb/toggle left and right} and
+\refKey{/tcb/toggle enlargement}
+for further even/odd options.
+\end{marker}
+
+\begin{docTcbKey}[][doc updated=2015-11-13]{check odd page}{\colOpt{=true\textbar false}}{default |true|, initially |false|}
+If set to |true|, a precise even/odd page testing for the current box
+is applied. This is done by using labels. If a box moves to another page,
+the document has to be compiled twice for the correct settings.
+If set to |false|, even/odd page tests may give wrong results for the first box
+of a page.
+
+\refKey{/tcb/toggle left and right},
+\refKey{/tcb/toggle enlargement}, and
+\refKey{/tcb/if odd page}
+automatically set |check odd page|, but for
+\refCom{tcbifoddpage} this option has to be set explicitely.
+\end{docTcbKey}
+
+\enlargethispage*{1cm}
+\begin{docTcbKey}[][doc new=2015-11-13]{if odd page}{=\marg{odd options}\marg{even options}}{style, no default}
+If the current box is on an odd page, the \meta{odd options} are applied.
+On an even page, the \meta{even options} are applied.
+\refKey{/tcb/check odd page} is automatically set for precise even/odd page testing.
+
+\begin{dispExample}
+\begin{tcolorbox}[if odd page={colback=yellow!50}{colback=red!50}]
+ This box is colored in yellow on an odd page
+ and is colored in red on an even page.
+\end{tcolorbox}
+\end{dispExample}
+
+\begin{marker}
+If a box is \refKey{/tcb/breakable}, using \refKey{/tcb/if odd page}
+only acts upon the \emph{first} box. If the setting should be
+repeated for every partial box of the break sequence, the option should be
+packed into \refKey{/tcb/extras}. In this case, \refKey{/tcb/check odd page}
+has to be set explicitely! Also see \refKey{/tcb/if odd page*}.
+\end{marker}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2016-11-18]{if odd page or oneside}{=\marg{odd options}\marg{even options}}{style, no default}
+ For onesided documents, the \meta{odd options} are applied always.
+ For twosided documents, this style is identical to \refKey{/tcb/if odd page}.
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}[][doc new=2015-11-13]{if odd page*}{=\marg{odd options}\marg{even options}}{style, no default}
+\begin{marker}
+This option needs the \mylib{breakable} library, see \Fullref{sec:breakable}.
+\end{marker}
+For breakable boxes, if the current partial box is on an odd page, the \meta{odd options} are applied.
+On an even page, the \meta{even options} are applied.
+\refKey{/tcb/check odd page} is automatically set for precise even/odd page testing.
+
+In contrast to \refKey{/tcb/if odd page}, \refKey{/tcb/if odd page*} is used
+on \emph{every} partial box of a break sequences and not only on the
+\emph{first} box. Another difference is that \refKey{/tcb/if odd page*}
+is applied quite \emph{late} during option processing, while
+\refKey{/tcb/if odd page} is applied immediately.
+
+\refKey{/tcb/if odd page*} is implemented as \refKey{/tcb/if odd page}
+packed into \refKey{/tcb/extras}.
+
+\begin{dispExample}
+% \tcbuselibrary{breakable}
+\begin{tcolorbox}[breakable,if odd page*={colback=yellow!50}{colback=red!50}]
+ This breakable box is colored in yellow on an odd page
+ and is colored in red on an even page. For every partial box, the
+ test is repeated, i.e. this would give a yellow, red, yellow, red, \ldots\
+ sequence for a long content.
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2016-11-18]{if odd page or oneside*}{=\marg{odd options}\marg{even options}}{style, no default}
+ For onesided documents, the \meta{odd options} are applied always.
+ For twosided documents, this style is identical to \refKey{/tcb/if odd page*}.
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docCommand}[doc new=2015-11-13]{tcbifoddpage}{\marg{odd code}\marg{even code}}
+If the current box is on an odd page, the \meta{odd code} is executed.
+On an even page, the \meta{even code} is executed.
+For precise even/odd page testing, the \refKey{/tcb/check odd page} has to be
+set manually inside the box options.
+
+The macro \refCom{tcbifoddpage} can be used inside underlay, overlay, or watermark code to
+test if the box is on an odd page. This will work also for boxes in a break sequence.
+
+The macro can also be used inside the box \textbf{content text}. For unbreakable boxes,
+the correct page test is applied.
+But for \refKey{/tcb/breakable} boxes, \refCom{tcbifoddpage}
+will always give the result for the page of the \emph{first} box inside
+the box \textbf{content text}. If needed, the methods from the packages
+|changepage| or |ifoddpage| could be used here.
+%To mention it again, for overlays, watermarks, etc, \refCom{tcbifoddpage} gives
+%the correct page test.
+
+\begin{dispExample}
+\tcbset{colframe=blue!75!black,colback=white,fonttitle=\bfseries}
+
+\begin{tcolorbox}[enhanced,check odd page,
+ title={Example for a box on an \tcbifoddpage{odd}{even} page},
+ watermark text={\tcbifoddpage{Odd}{Even} page!}]
+\lipsum[1]
+\end{tcolorbox}
+\end{dispExample}
+\end{docCommand}
+
+
+\begin{docCommand}[doc new=2016-11-18]{tcbifoddpageoroneside}{\marg{odd code}\marg{even code}}
+ For onesided documents, the \meta{odd code} is executed always.
+ For twosided documents, this macro is identical to \refCom{tcbifoddpage}.
+\end{docCommand}
+
+\clearpage
+\begin{docCommand}[doc new=2015-11-13]{thetcolorboxnumber}{}
+This is a unique identifier (arabic number) for a tcolorbox. It is locally
+defined inside boxes and has no meaning outside. It is used for
+precise even/odd page testing, but may also be valuable for elaborate user
+code.
+
+\begin{dispExample}
+\begin{tcolorbox}[colback=yellow!5,title=Box \thetcolorboxnumber]
+ This box is \thetcolorboxnumber.
+ \tcbox[on line,size=fbox]{This box is \thetcolorboxnumber} and
+ \tcbox[on line,size=fbox]{this box is \thetcolorboxnumber}.
+ This box is \thetcolorboxnumber.
+\end{tcolorbox}
+\end{dispExample}
+\end{docCommand}
+
+
+\begin{docCommand}[doc new=2015-11-13]{thetcolorboxpage}{}
+This macro contains the expanded arabic page number of the current tcolorbox.
+It is locally defined inside boxes and has no meaning outside.
+It is precise only, if \refKey{/tcb/check odd page} was set.
+
+\begin{dispExample}
+\begin{tcolorbox}[colback=yellow!5,check odd page,
+ title=Box on page~\thetcolorboxpage]
+ This box is located on page~\thetcolorboxpage.
+\end{tcolorbox}
+\end{dispExample}
+\end{docCommand}
+
+
+
+
+
+\clearpage
+\subsection{Externalization}
+\begin{marker}
+See \Fullref{sec:external} for the \mylib{external} library of |tcolorbox|.
+\end{marker}
+
+If the \emph{externalization} library of the \texttt{tikz} package is used
+and \refKey{/tcb/graphical environment} is set to |tikzpicture|,
+a |tcolorbox| could trigger the externalization process which will arise
+a compilation error.
+
+To avoid this, there are two possible strategies:
+\begin{itemize}
+\item Ensure, that |\tikzexternaldisable| is set before a |tcolorbox| is used.
+ If you typically use the pattern |\tikzexternalenable| \textit{some picture} |\tikzexternaldisable|,
+ there is nothing to care about.
+\item If \emph{externalization} is enabled globally, use \refKey{/tcb/shield externalize} to
+ shield any |tcolorbox|. The preamble code could look like this:
+\begin{dispListing}
+\usetikzlibrary{external}
+\tikzexternalize
+\tcbset{shield externalize}
+\end{dispListing}
+\end{itemize}
+
+\begin{docTcbKey}{shield externalize}{\colOpt{=true\textbar false}}{default |true|, initially |false|}
+If set to |true|, the drawing part of the |tcolorbox| is not being externalized
+which is a good thing at the current state of art. Nevertheless, if the
+|tcolorbox| contains a |tikzpicture|, this picture is still externalized.
+Pictures drawn with help of \refKey{/tcb/tikz upper} or alike are \emph{not}
+externalized.
+\end{docTcbKey}
+
+\begin{marker}
+If a |tcolorbox| is used inside a node of an encircling |tikzpicture| which is externalized,
+do \emph{not} use |\tikzexternaldisable| in front of the |tcolorbox|.
+\refKey{/tcb/shield externalize} is deactivated automatically inside a |tikzpicture|.
+\end{marker}
+
+\begin{docTcbKey}{external}{=\meta{file name}}{no default, initially unset}
+ Convenience option which calls |\tikzsetnextfilename|\marg{file name}. Typically,
+ it may be used inside the option list of a |tcolorbox| to set the
+ externalization \meta{file name} for the first |tikzpicture| which is discovered
+ \emph{inside} the box content.
+ The package |tikz| \cite{tantau:tikz_and_pgf} or the library \mylib{skins} has to be loaded to use this option.
+ Additionally, |\usetikzlibrary{external}| has to be used.
+\end{docTcbKey}
+
+\begin{docTcbKey}{remake}{\colOpt{=true\textbar false}}{default |true|, initially |false|}
+ Convenience option which calls |/tikz/external/remake next|. Typically,
+ it may be used inside the option list of a |tcolorbox| to force the remake
+ of the first |tikzpicture| which is discovered \emph{inside} the box content.
+ The package |tikz| \cite{tantau:tikz_and_pgf} or the library \mylib{skins} has to be loaded to use this option.
+ Additionally, |\usetikzlibrary{external}| has to be used.
+\end{docTcbKey}
+
+
+\clearpage
+\subsection{Miscellaneous}
+\begin{docTcbKey}{reset}{}{no value, initially set}
+Sets (nearly) all |tcolorbox| settings (including loaded libraries) back to their default values
+\emph{plus} any settings given by \refCom{tcbsetforeverylayer}.
+\refKey{/tcb/savedelimiter} and \refKey{/tcb/capture} keep their values.
+Also, all raster values (see \Vref{sec:raster}) are not resetted.
+
+This option is useful for boxes in boxes where the inner box should not inherit
+the settings of the outer box.
+Note that for boxes inside boxes the |reset| is done automatically, if the
+standard settings of the package are used (v2.40 and above), see
+Section \ref{subsec:everybox} from page \pageref{subsec:everybox}.
+%See \refCom{tcbhighmath} for an example.
+\end{docTcbKey}
+
+
+
+
+\begin{docTcbKey}{code}{=\meta{code}}{no default, initially unset}
+ The given \meta{code} is executed immediately. This option is useful
+ to place some arbitrary code into an option list.
+\begin{exdispExample}{code}
+\tcbset{colback=red!5!white,colframe=red!75!black,
+ code={Useless at this spot but functional.},
+ fonttitle=\bfseries}
+
+\begin{tcolorbox}[code={\newcommand{\mycommand}{\textit{working}}},
+ title=My \mycommand\ title]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}[][doc new=2016-10-21]{void}{}{no value, initially unset}
+ Annihilates the current |tcolorbox| as far as possible.
+ Basically, this comments out the whole |tcolorbox| by using a key.
+ If the option list of the current |tcolorbox| contains arbitrary code with global
+ impact (like counter settings), these actions are not undone automatically.
+ Nevertheless, the effects of \refKey{/tcb/phantom}, \refKey{/tcb/step},
+ \refKey{/tcb/new/auto counter}, etc., are removed by \refKey{/tcb/void}.
+
+\begin{exdispExample}{void}
+A%
+ \begin{tcolorbox}[
+ title=This box is completely removed by the following key,
+ void
+ ]
+ This is a \textbf{tcolorbox}.
+ \end{tcolorbox}
+B
+\end{exdispExample}
+
+\begin{marker}
+ This option key cannot be applied for every situation.
+ For example, if several box environments with the same environment name
+ are nested, for the outer environment \refKey{/tcb/void} cannot be used,
+ since the end of the inner environment will be misinterpreted as
+ end of the outer environment.
+\end{marker}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2019-03-01]{nirvana}{}{no value, initially unset}
+ The contents of the current |tcolorbox| are processed including counter
+ settings, but the box is just not drawn.
+ Therefore, \refKey{/tcb/nirvana} is less radical than \refKey{/tcb/void}
+ and several box environments can be nested without problems.
+
+\begin{exdispExample}{nirvana}
+A%
+ \begin{tcolorbox}[
+ title=This box is completely removed by the following key,
+ nirvana
+ ]
+ This is a \textbf{tcolorbox}.
+ \begin{tcolorbox}
+ Nested Box
+ \end{tcolorbox}
+ \end{tcolorbox}%
+B
+\end{exdispExample}
+\end{docTcbKey}
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.documentation.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.documentation.tex
new file mode 100644
index 0000000000..f8c1c4553c
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.documentation.tex
@@ -0,0 +1,1023 @@
+% !TeX root = tcolorbox.tex
+% include file of tcolorbox.tex (manual of the LaTeX package tcolorbox)
+\clearpage
+\section{Library \mylib{documentation}}\label{sec:documentation}%
+\tcbset{external/prefix=external/documentation_}%
+This library has the single purpose to support \LaTeX\ package documentations
+like this one. Actually, the visual nature follows the approach from
+Till Tantau's |pgf| \cite{tantau:tikz_and_pgf} documentation.
+Typically, this library is assumed to be used in conjunction with the
+class |ltxdoc| or alike.
+
+The library is loaded by a package option or inside the preamble by:
+\begin{dispListing}
+ \tcbuselibrary{documentation}
+\end{dispListing}
+This also loads the library \mylib{listings}, see \Vref{sec:listings},
+the library \mylib{skins}, see \Vref{sec:skins},
+the library \mylib{xparse}\tcbdocmarginnote{\tcbdocnew{2014-09-19}}, see \Vref{sec:xparse},
+and a bunch of packages, namely
+|pifont|, |marvosym|, |makeidx|, |marginnote|, |refcount|, and |hyperref|.
+
+\begin{marker}
+The package |makeidx| is loaded only, if \docAuxCommand*{printindex} is
+\emph{not} already defined. Therefore, one can include an alternative to |makeidx| like
+|imakeidx| \emph{before} the library |documentation| is used.
+\end{marker}
+\begin{marker}
+The package |marginnote| is loaded only, if \docAuxCommand*{marginnote} is
+\emph{not} already defined.
+\end{marker}
+\begin{marker}
+In contrast to other |tcolorbox| options, the option
+settings for \mylib{documentation} are typically not
+getting reset by \refKey{/tcb/reset}, i.e. they keep their
+values for embedded boxes.
+\end{marker}
+\begin{marker}
+In combination with DocStrip, \refKey{/tcb/verbatim ignore percent} may be helpful.
+\end{marker}
+
+For UTF-8 support load (ignore this when using Xe\LaTeX):
+\begin{dispListing}
+ \tcbuselibrary{listingsutf8,documentation}
+\end{dispListing}
+
+For |minted| \cite{poore:minted} support, load:
+\begin{dispListing}
+ \tcbuselibrary{documentation,minted}
+ \tcbset{listing engine=minted}
+\end{dispListing}
+
+
+\subsection{Macros of the Library}
+\enlargethispage*{15mm}
+\begin{docEnvironment}[doclang/environment content=command description]{docCommand}{\oarg{options}\marg{name}\marg{parameters}}
+ Documents a \LaTeX\ macro with given \meta{name} where \meta{name} is
+ written without backslash. The given \meta{options} are set with \refCom{tcbset}.
+ This macro takes mandatory or optional \meta{parameters}.
+ It is automatically indexed and can be referenced with
+ \refCom{refCom}\marg{name}.
+\begin{dispExample}
+\begin{docCommand}{foomakedocSubKey}{\marg{name}\marg{key path}}
+ Creates a new environment \meta{name} based on \refEnv{docKey} for the
+ documentation of keys with the given \meta{key path}.
+\end{docCommand}
+\end{dispExample}
+\begin{dispExample}
+\begin{docCommand}[color definition=blue]{foomakedocSubKey*}%
+ {\marg{name}\marg{key path}}
+ Creates a new environment \meta{name} based on \refEnv{docKey} for the
+ documentation of keys with the given \meta{key path}.
+\end{docCommand}
+\end{dispExample}
+\end{docEnvironment}
+
+
+\begin{docEnvironment}[doclang/environment content=command description]{docCommand*}{\oarg{options}\marg{name}\marg{parameters}}
+ Identical to \refEnv{docCommand}, but without index entry.
+\end{docEnvironment}
+
+
+%\clearpage
+{\let\xdocEnvironment\docEnvironment
+\let\endxdocEnvironment\enddocEnvironment
+\begin{xdocEnvironment}[doclang/environment content=environment description]{docEnvironment}{\oarg{options}\marg{name}\marg{parameters}}
+ Documents a \LaTeX\ environment with given \meta{name}.
+ The given \meta{options} are set with \refCom{tcbset}.
+ This environment takes mandatory or optional \meta{parameters}.
+ It is automatically indexed and can be referenced with
+ \refCom{refEnv}\marg{name}.
+\begin{dispExample}
+\begin{docEnvironment}{foocolorbox}{\oarg{options}}
+ This is the main environment to create an accentuated colored text box with
+ rounded corners and, optionally, two parts.
+\end{docEnvironment}
+\end{dispExample}
+\begin{dispExample}
+\begin{docEnvironment}%
+ [doclang/environment content=My content text]%
+ {foocolorbox*}{\oarg{options}}
+ This is the main environment to create an accentuated colored text box with
+ rounded corners and, optionally, two parts.
+\end{docEnvironment}
+\end{dispExample}
+\end{xdocEnvironment}}
+
+{\let\xdocEnvironment\docEnvironment
+\let\endxdocEnvironment\enddocEnvironment
+\begin{xdocEnvironment}[doclang/environment content=environment description]{docEnvironment*}{\oarg{options}\marg{name}\marg{parameters}}
+ Identical to \refEnv{docEnvironment}, but without index entry.
+\end{xdocEnvironment}}
+
+\clearpage
+\begin{docEnvironment}[doclang/environment content=key description,doc updated=2014-09-29]{docKey}{\oarg{key path}\oarg{options}\marg{name}\marg{parameters}\marg{description}}
+ Documents a key with given \meta{name} and an optional \meta{key path}.
+ The given \meta{options} are set with \refCom{tcbset}.
+ This key takes mandatory or optional \meta{parameters} as value
+ with a short \meta{description}.
+ It is automatically indexed and can be referenced with
+ \refCom{refKey}\marg{name}.
+\begin{dispExample}
+\begin{docKey}[foo]{footitle}{=\meta{text}}{no default, initially empty}
+ Creates a heading line with \meta{text} as content.
+\end{docKey}
+\end{dispExample}
+\end{docEnvironment}
+
+
+\begin{docEnvironment}[doclang/environment content=key description,doc updated=2014-09-29]{docKey*}{\oarg{key path}\oarg{options}\marg{name}\marg{parameters}\marg{description}}
+ Identical to \refEnv{docKey}, but without index entry.
+\end{docEnvironment}
+
+
+\begin{docCommand}{docValue}{\marg{name}}
+ Documents a value with given \meta{name}. Typically, this is a value for a key.
+ This value is automatically indexed.
+\begin{dispExample}
+A feasible value for \refKey{/foo/footitle} is \docValue{foovalue}.
+\end{dispExample}
+\end{docCommand}
+
+
+\begin{docCommand}{docValue*}{\marg{name}}
+ Identical to \refCom{docValue}, but without index entry.
+\end{docCommand}
+
+
+\begin{docCommand}[doc updated=2014-10-09]{docAuxCommand}{\marg{name}}
+ Documents an auxiliary or minor \LaTeX\ macro with given \meta{name}
+ where \meta{name} is written without backslash.
+ This macro is automatically indexed.
+\begin{dispExample}
+The macro \docAuxCommand{fooaux} holds some interesting data.
+\end{dispExample}
+\end{docCommand}
+
+\begin{docCommand}[doc updated=2014-10-09]{docAuxCommand*}{\marg{name}}
+ Identical to \refCom{docAuxCommand}, but without index entry.
+\end{docCommand}
+
+\begin{docCommand}{docAuxEnvironment}{\marg{name}}
+ Documents an auxiliary or minor \LaTeX\ environment with given \meta{name}.
+ This macro is automatically indexed.
+\begin{dispExample}
+The environment \docAuxEnvironment{fooauxenv} holds some interesting data.
+\end{dispExample}
+\end{docCommand}
+
+\begin{docCommand}{docAuxEnvironment*}{\oarg{key path}\marg{name}}
+ Identical to \refCom{docAuxEnvironment}, but without index entry.
+\end{docCommand}
+
+\clearpage
+
+\begin{docCommand}{docAuxKey}{\oarg{key path}\marg{name}}
+ Documents an auxiliary key with given \meta{name} and an optional \meta{key path}.
+ It is automatically indexed.
+\begin{dispExample}
+The key \docAuxKey[foo]{fooaux} holds some interesting data.
+\end{dispExample}
+\end{docCommand}
+
+
+\begin{docCommand}{docAuxKey*}{\oarg{key path}\marg{name}}
+ Identical to \refCom{docAuxKey}, but without index entry.
+\end{docCommand}
+
+
+\begin{docCommand}[doc new=2015-01-08]{docCounter}{\marg{name}}
+ Documents a counter with given \meta{name}. The counter is automatically indexed.
+\begin{dispExample}
+The counter \docCounter{foocounter} can be used for computation.
+\end{dispExample}
+\end{docCommand}
+
+\begin{docCommand}[doc new=2015-01-08]{docCounter*}{\marg{name}}
+ Identical to \refCom{docCounter}, but without index entry.
+\end{docCommand}
+
+\begin{docCommand}[doc new=2015-01-08]{docLength}{\marg{name}}
+ Documents a counter with given \meta{name}. The counter is automatically indexed.
+\begin{dispExample}
+The length \docLength{foolength} can be used for computation.
+\end{dispExample}
+\end{docCommand}
+
+\begin{docCommand}[doc new=2015-01-08]{docLength*}{\marg{name}}
+ Identical to \refCom{docLength}, but without index entry.
+\end{docCommand}
+
+
+\begin{docCommand}{docColor}{\marg{name}}
+ Documents a color with given \meta{name}. The color is automatically indexed.
+\begin{dispExample}
+The color \docColor{foocolor} is available.
+\end{dispExample}
+\end{docCommand}
+
+\begin{docCommand}{docColor*}{\marg{name}}
+ Identical to \refCom{docColor}, but without index entry.
+\end{docCommand}
+
+
+\clearpage
+\begin{docCommand}{cs}{\marg{name}}
+ Macro from |ltxdoc| \cite{carlisle:2007a} to typeset a command word \meta{name}
+ where the backslash is prefixed. The library overwrites the original macro.
+\begin{dispExample}
+This is a \cs{foocommand}.
+\end{dispExample}
+\end{docCommand}
+
+\begin{docCommand}{meta}{\marg{text}}
+ Macro from |doc| \cite{mittelbach:2011a} to typeset a meta \meta{text}.
+ The library overwrites the original macro.
+\begin{dispExample}
+This is a \meta{text}.
+\end{dispExample}
+\end{docCommand}
+
+
+\begin{docCommand}{marg}{\marg{text}}
+ Macro from |ltxdoc| \cite{carlisle:2007a} to typeset a \meta{text} with
+ curly brackets as a mandatory argument. The library overwrites the original macro.
+\begin{dispExample}
+This is a mandatory \marg{argument}.
+\end{dispExample}
+\end{docCommand}
+
+\begin{docCommand}{oarg}{\marg{text}}
+ Macro from |ltxdoc| \cite{carlisle:2007a} to typeset a \meta{text} with
+ square brackets as an optional argument. The library overwrites the original macro.
+\begin{dispExample}
+This is an optional \oarg{argument}.
+\end{dispExample}
+\end{docCommand}
+
+
+\begin{docCommand}{brackets}{\marg{text}}
+ Sets the given \meta{text} with curly brackets.
+\begin{dispExample}
+ Here we use \brackets{some text}.
+\end{dispExample}
+\end{docCommand}
+
+\clearpage
+
+{\let\xdispExample\dispExample
+ \let\endxdispExample\enddispExample
+\begin{docEnvironment}[doc updated=2014-10-10]{dispExample}{}
+ Creates a colored box based on a \refEnv{tcolorbox}.
+ It displays the environment content as source code in the upper part
+ and as compiled text in the lower part of the box.
+ The appearance is controlled by \refKey{/tcb/documentation listing style}
+ and the style \refKey{/tcb/docexample}. It may be
+ changed by redefining this style.
+{
+%\tcbset{before lower app={\tcbset{docexample/.style={docexample original}}}}
+%\tcbset{docexample/.style={docexample original}}%
+\begin{xdispExample}
+\begin{dispExample}
+This is a \LaTeX\ example.
+\end{dispExample}
+\end{xdispExample}
+}
+\end{docEnvironment}}
+
+
+{\let\xdispExample\dispExample
+ \let\endxdispExample\enddispExample
+\begin{docEnvironment}[doc updated=2014-10-10]{dispExample*}{\marg{options}}
+ The starred version of \refEnv{dispExample} takes \refEnv{tcolorbox} \meta{options}
+ as parameter. These \meta{options} are executed after \refKey{/tcb/docexample}.
+\begin{xdispExample}
+\begin{dispExample*}{sidebyside}
+This is a \LaTeX\ example.
+\end{dispExample*}
+\end{xdispExample}
+\end{docEnvironment}}
+
+
+\clearpage
+\begin{docEnvironment}{dispListing}{}
+ Creates a colored box based on a \refEnv{tcolorbox}.
+ It displays the environment content as source code.
+ The appearance is controlled by \refKey{/tcb/documentation listing style}
+ and the style \refKey{/tcb/docexample}. It may be
+ changed by redefining this style.
+\begin{dispExample}
+\begin{dispListing}
+This is a \LaTeX\ example.
+\end{dispListing}
+\end{dispExample}
+\end{docEnvironment}
+
+\begin{docEnvironment}{dispListing*}{\marg{options}}
+ The starred version of \refEnv{dispListing} takes \refEnv{tcolorbox} \meta{options}
+ as parameter. These \meta{options} are executed after \refKey{/tcb/docexample}.
+\begin{dispExample}
+\begin{dispListing*}{title=My listing}
+This is a \LaTeX\ example.
+\end{dispListing*}
+\end{dispExample}
+\end{docEnvironment}
+
+
+\begin{docEnvironment}{absquote}{}
+ Used to typeset an abstract as quoted and small text.
+\begin{dispExample}
+\begin{absquote}
+|tcolorbox| provides an environment for colored and framed text boxes with a
+heading line. Optionally, such a box can be split in an upper and a lower part.
+\end{absquote}
+\end{dispExample}
+\end{docEnvironment}
+
+\clearpage
+\begin{docCommand}{tcbmakedocSubKey}{\marg{name}\marg{key path}}
+ Creates a new environment \meta{name} based on \refEnv{docKey} for the
+ documentation of keys with the given \meta{key path} as default.
+ The new environment \meta{name} takes the same para\-meters as \refEnv{docKey} itself.
+ A second starred environment \meta{name} is also created, which is identical
+ to \meta{name} but without index entry.
+\begin{dispExample}
+\tcbmakedocSubKey{docFooKey}{foo}
+
+\begin{docFooKey}{foodummy}{=\meta{nothing}}{no default, initially empty}
+Some key.
+\end{docFooKey}
+
+\begin{docFooKey*}{foo another dummy}{=\meta{nothing}}{no default, initially empty}
+Some key (not indexed).
+\end{docFooKey*}
+\end{dispExample}
+\end{docCommand}
+
+
+\begin{docCommand}{refCom}{\marg{name}}
+ References a documented \LaTeX\ macro with given \meta{name} where \meta{name} is
+ written without backslash. The page reference is suppressed if it links
+ to the same page.
+\begin{dispExample}
+We have created \refCom{foomakedocSubKey} as an example.
+\end{dispExample}
+\end{docCommand}
+
+\begin{docCommand}{refCom*}{\marg{name}}
+ References a documented \LaTeX\ macro with given \meta{name} where \meta{name} is
+ written without backslash. There is no page reference.
+\begin{dispExample}
+We have created \refCom*{foomakedocSubKey} as an example.
+\end{dispExample}
+\end{docCommand}
+
+
+\begin{docCommand}{refEnv}{\marg{name}}
+ References a documented \LaTeX\ environment with given \meta{name}.
+ The page reference is suppressed if it links to the same page.
+\begin{dispExample}
+We have created \refEnv{foocolorbox} as an example.
+\end{dispExample}
+\end{docCommand}
+
+\begin{docCommand}{refEnv*}{\marg{name}}
+ References a documented \LaTeX\ environment with given \meta{name}.
+ There is no page reference.
+\begin{dispExample}
+We have created \refEnv*{foocolorbox} as an example.
+\end{dispExample}
+\end{docCommand}
+
+\clearpage
+\begin{docCommand}{refKey}{\marg{name}}
+ References a documented key with given \meta{name} where \meta{name}
+ is the full path name of the key.
+ The page reference is suppressed if it links to the same page.
+\begin{dispExample}
+We have created \refKey{/foo/footitle} as an example.
+\end{dispExample}
+\end{docCommand}
+
+\begin{docCommand}{refKey*}{\marg{name}}
+ References a documented key with given \meta{name} where \meta{name}
+ is the full path name of the key.
+ There is no page reference.
+\begin{dispExample}
+We have created \refKey*{/foo/footitle} as an example.
+\end{dispExample}
+\end{docCommand}
+
+
+\begin{docCommand}{refAux}{\marg{name}}
+ References some auxiliary environment, key, value, or color. The hyperlink color is
+ used, but there is no real link.
+\begin{dispExample}
+Some pages back, one can see \refAux{/foo/footitle} as an example.
+\end{dispExample}
+\end{docCommand}
+
+\begin{docCommand}{refAuxcs}{\marg{name}}
+ References some auxiliary macro \meta{name} where \meta{name} is
+ written without backslash. The hyperlink color is
+ used, but there is no real link.
+\begin{dispExample}
+Some pages back, one can see \refAuxcs{fooaux} as an example.
+\end{dispExample}
+\end{docCommand}
+
+
+%
+\begin{docCommand}{colDef}{\marg{text}}
+Sets \meta{text} with the command color, see \refKey{/tcb/color command}.
+\begin{dispExample}
+This is my \colDef{text}.
+\end{dispExample}
+\end{docCommand}
+
+\begin{docCommand}{colOpt}{\marg{text}}
+ Sets \meta{text} with the option color, see \refKey{/tcb/color option}.
+\begin{dispExample}
+This is my \colOpt{text}.
+\end{dispExample}
+\end{docCommand}
+
+\clearpage
+
+\begin{docCommand}[doc new=2014-09-19]{tcbdocmarginnote}{\oarg{options}\marg{text}}
+ Creates a |tcolorbox| note with the given \meta{text} inside the margin using
+ the |marginnote| package. The style of the |tcolorbox| is predefined and can be
+ altered by \refKey{/tcb/doc marginnote} and the given \meta{options}.
+\begin{dispExample}
+Some text\tcbdocmarginnote{Note A}
+which is commented by a note inside the margin.
+Alternatively to |\tcbdocmarginnote|, you can always use
+|\marginnote| with a |tcolorbox| directly.\par
+This is further text%
+\tcbdocmarginnote[colframe=blue!50!white,colback=blue!5!white]{Note B}
+with another note.
+\end{dispExample}
+\end{docCommand}
+
+\begin{docCommand}[doc new=2014-09-19]{tcbdocnew}{\marg{date}}
+ Auxiliary macro which typesets the \refKey{/tcb/doclang/new} text with
+ the given \meta{date}. It may be redefined for customization.
+ \makeatletter\renewcommand*{\tcbdocnew}[1]{\kvtcb@text@new: #1}\makeatother%
+\begin{dispExample*}{sidebyside}
+\tcbdocnew{1981-10-29}.
+% Next one is displayed in the margin:
+\tcbdocmarginnote{\tcbdocnew{1978-02-09}}
+\end{dispExample*}
+\end{docCommand}
+
+\begin{docCommand}[doc new=2014-09-19]{tcbdocupdated}{\marg{date}}
+ Auxiliary macro which typesets the \refKey{/tcb/doclang/updated} text with
+ the given \meta{date}. It may be redefined for customization.
+ \makeatletter\renewcommand*{\tcbdocupdated}[1]{\kvtcb@text@updated: #1}\makeatother%
+\begin{dispExample*}{sidebyside}
+\tcbdocupdated{2014-09-19}.
+\end{dispExample*}
+\end{docCommand}
+
+
+\clearpage
+\subsection{Option Keys of the Library}
+
+\begin{docTcbKey}[][doc updated=2015-03-16]{docexample}{}{style, no value}
+ Sets the style for \refEnv{dispExample} and \refEnv{dispListing}
+ with the colors |ExampleBack| and |ExampleFrame|.
+ To change the appearance of the examples, this style can be
+ redefined.
+\begin{dispListing}
+% Predefined style:
+\tcbset{
+ docexample/.style={colframe=ExampleFrame,colback=ExampleBack,
+ before skip=\medskipamount,after skip=\medskipamount,
+ fontlower=\footnotesize}
+}
+\end{dispListing}
+\end{docTcbKey}
+
+\begin{docTcbKey}{documentation listing options}{=\meta{key list}}{no default,\\\hspace*{\fill} initially |style=tcbdocumentation|}
+ Sets the options from the package |listings| \cite{hoffmann:2018a}.
+ They are used inside \refEnv{dispExample} and \refEnv{dispListing} to typeset
+ the listings. Note that this is not identical to the key
+ \refKey{/tcb/listing options} which is used for 'normal' listings.\\
+ Used for \refKey{/tcb/listing engine}|=listings| only.
+\end{docTcbKey}
+
+\begin{docTcbKey}{documentation listing style}{=\meta{listing style}}{no default, initially |tcbdocumentation|}
+ Abbreviation for |documentation listing options={style=...}|.
+ This key sets a \meta{style}
+ for the |listings| package, see \cite{hoffmann:2018a}.
+ Note that this is not identical to the key
+ \refKey{/tcb/listing style} which is used for 'normal' listings.\\
+ Used for \refKey{/tcb/listing engine}|=listings| only.
+\end{docTcbKey}
+
+\begin{docTcbKey}{documentation minted options}{=\meta{minted style}}{no default,\\\hspace*{\fill} initially |tabsize=2,fontsize=\textbackslash small|}
+ Sets the options from the package |minted| \cite{poore:minted}
+ which are used during typesetting of the listing, if used.
+ Note that this is not identical to the key
+ \refKey{/tcb/minted options} which is used for 'normal' listings.\\
+ Used for \refKey{/tcb/listing engine}|=minted| only.
+\end{docTcbKey}
+
+\begin{docTcbKey}{documentation minted style}{=\meta{key list}}{no default, initially unset}
+ Sets a \meta{style} known to |Pygments| \cite{pygments:web} for
+ the package |minted| \cite{poore:minted}, if used.
+ Note that this is not identical to the key
+ \refKey{/tcb/minted style} which is used for 'normal' listings.\\
+ Used for \refKey{/tcb/listing engine}|=minted| only.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2017-04-24]{documentation minted language}{=\meta{programming language}}{no default, initially |latex|}
+ Sets a \meta{programming language} known to |Pygments| \cite{pygments:web}
+ for the package |minted| \cite{poore:minted}, if used.
+ Note that this is not identical to the key
+ \refKey{/tcb/minted language} which is used for 'normal' listings.\\
+ Used for \refKey{/tcb/listing engine}|=minted| only.
+\end{docTcbKey}
+
+
+\begin{marker}
+The following two keys are deprecated and without function (v3.50 and above).
+Use \refKey{/tcb/before} and \refKey{/tcb/after} with appropriate values
+instead. Also see \refKey{/tcb/docexample}.
+\end{marker}
+
+\begin{docTcbKey}[][doc updated=2015-03-16]{before example}{=\meta{macros}}{no default, initially empty}
+\smallskip\begin{deprecated}
+ Sets the \meta{macros} which are executed before \refEnv{dispExample} and \refEnv{dispListing}
+ additional to \refKey{/tcb/before}.
+\end{deprecated}
+\end{docTcbKey}
+
+\begin{docTcbKey}{after example}{=\meta{macros}}{no default, initially empty}
+\smallskip\begin{deprecated}
+ Sets the \meta{macros} which are executed after \refEnv{dispExample} and \refEnv{dispListing}
+ additional to \refKey{/tcb/after}.
+\end{deprecated}
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}[][doc new=2017-04-25]{keywords bold}{\colOpt{=true\textbar false}}{default |true|, initially |true|}
+ Keyword used in \refEnv{docEnvironment}, \refEnv{docCommand}, etc. are printed
+ boldface (or not). Since the typewriter font is used, the effect may be
+ invisible with Computer Modern fonts or similar which do not
+ have a bold variant. Note that references to keywords are not printed boldface at all.
+\begin{dispExample*}{sidebyside}
+\LARGE
+\docAuxCommand{fooaux}, \refCom{tcbset}
+
+\tcbset{keywords bold=false}
+\docAuxCommand{fooaux}, \refCom{tcbset}
+\end{dispExample*}
+\end{docTcbKey}
+
+
+
+\begin{docTcbKey}[][doc new=2015-01-09]{index command}{=\meta{macro}}{no default, initially \cs{index}}
+ Replaces the internally used \cs{index} macro by the given \meta{macro}.
+ The \meta{macro} has to take one mandatory argument like \cs{index}.
+ This option is mutually exclusive with \refKey{/tcb/index command name}.
+\begin{dispListing}
+\tcbset{index command=\myindexcommand}
+\end{dispListing}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2015-01-09]{index command name}{=\meta{name}}{no default, initially unset}
+ Replaces the internally used \cs{index} macro by
+ \mbox{\cs{index}\texttt{[\meta{name}]}}, i.e.\
+ \mbox{\cs{index}\texttt{\textbraceleft\ldots\textbraceright}} is replaced by
+ \mbox{\cs{index}\texttt{[\meta{name}]\textbraceleft\ldots\textbraceright}}.
+ This option is intended to be used with |imakeidx| and is
+ mutually exclusive with \refKey{/tcb/index command}.
+\begin{dispListing}
+\tcbset{index command name=mydoc}
+\end{dispListing}
+\end{docTcbKey}
+
+
+
+\begin{docTcbKey}{index format}{=\meta{format}}{no default, initially |pgf|}
+ Determines the basic \meta{format} of the generated index.
+ Feasible values are:
+ \begin{itemize}
+ \item\docValue{pgfsection}: The index is formatted like in the |pgf| documentation (as a section).
+ \item\docValue{pgfchapter}: The index is formatted like in the |pgf| documentation (as a chapter).
+ \item\docValue{pgf}: Alias for |pgfsection|.
+ \item\docValue{doc}: The index is assumed to be formatted by |doc| or |ltxdoc|. The usage of |makeindex|
+ with |-s gind.ist| is assumed. The package |hypdoc| has to be loaded
+ \emph{before} |tcolorbox|.
+ \item\docValue{off}: The index is not formatted by |tcolorbox|. Use this, if
+ the index is formatted by other package like |imakeidx|.
+ \end{itemize}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{index actual}{=\meta{character}}{no default, initially |@|}
+ Sets the character for 'actual' in automatic indexing.
+\end{docTcbKey}
+
+\begin{docTcbKey}{index quote}{=\meta{character}}{no default, initially |"|}
+ Sets the character for 'quote' in automatic indexing.
+\end{docTcbKey}
+
+\begin{docTcbKey}{index level}{=\meta{character}}{no default, initially |!|}
+ Sets the character for 'level' in automatic indexing.
+\end{docTcbKey}
+
+\begin{docTcbKey}{index default settings}{}{style, no value}
+ Sets the |makeindex| default values for
+ \refKey{/tcb/index actual},
+ \refKey{/tcb/index quote}, and
+ \refKey{/tcb/index level}.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{index german settings}{}{style, no value}
+ Sets the |makeindex| values recommended for German language texts.
+ This is identical to setting the following:
+\begin{dispListing}
+\tcbset{index actual={=},index quote={!},index level={>}}
+\end{dispListing}
+\end{docTcbKey}
+
+\clearpage
+
+\begin{docTcbKey}{index annotate}{\colOpt{=true\textbar false}}{default |true|, initially |true|}
+ If set to |true|, the index entries are annotated with short descriptions
+ given by \refKey{/tcb/doclang/environment}, \refKey{/tcb/doclang/key},
+ and others.
+\end{docTcbKey}
+
+\begin{docTcbKey}{index colorize}{\colOpt{=true\textbar false}}{default |true|, initially |false|}
+ If set to |true|, the index entries colorized according to the color
+ settings given by \refKey{/tcb/color environment}, \refKey{/tcb/color key},
+ and others.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{color command}{=\meta{color}}{no default, initially |Definition|}
+ Sets the highlight color used by macro definitions.
+\end{docTcbKey}
+
+\begin{docTcbKey}{color environment}{=\meta{color}}{no default, initially |Definition|}
+ Sets the highlight color used by environment definitions.
+\end{docTcbKey}
+
+\begin{docTcbKey}{color key}{=\meta{color}}{no default, initially |Definition|}
+ Sets the highlight color used by key definitions.
+\end{docTcbKey}
+
+\begin{docTcbKey}{color value}{=\meta{color}}{no default, initially |Definition|}
+ Sets the highlight color used by value definitions.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new={2015-01-08}]{color counter}{=\meta{color}}{no default, initially |Definition|}
+ Sets the highlight color used by counter definitions.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new={2015-01-08}]{color length}{=\meta{color}}{no default, initially |Definition|}
+ Sets the highlight color used by length definitions.
+\end{docTcbKey}
+
+\begin{docTcbKey}{color color}{=\meta{color}}{no default, initially |Definition|}
+ Sets the highlight color used by color definitions.
+\end{docTcbKey}
+
+\begin{docTcbKey}{color definition}{=\meta{color}}{no default, initially |Definition|}
+ Sets the highlight color for \refKey{/tcb/color command}, \refKey{/tcb/color environment},
+ \refKey{/tcb/color key}, \refKey{/tcb/color value}, \refKey{/tcb/color counter},
+ \refKey{/tcb/color length}, and \refKey{/tcb/color color}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{color option}{=\meta{color}}{no default, initially |Option|}
+ Sets the color used for optional arguments.
+\end{docTcbKey}
+
+\begin{docTcbKey}{color hyperlink}{=\meta{color}}{no default, initially |Hyperlink|}
+ Sets the color for all hyper-links, i.\,e. all internal and external links.
+\end{docTcbKey}
+
+
+\clearpage
+The following keys are provided for language specific settings.
+The English language is predefined.
+
+\begin{docTcbKey}{english language}{}{style, no value}
+ Sets all language specific settings to English.
+\end{docTcbKey}
+
+\begin{langTcbKey}{color}{=\meta{text}}{no default, initially |color|}
+ Text used in the index for colors.
+\end{langTcbKey}
+
+\begin{langTcbKey}{colors}{=\meta{text}}{no default, initially |Colors|}
+ Heading text in the index for colors.
+\end{langTcbKey}
+
+\begin{langTcbKey}[][doc new={2015-01-08}]{counter}{=\meta{text}}{no default, initially |counter|}
+ Text used in the index for counters.
+\end{langTcbKey}
+
+\begin{langTcbKey}[][doc new={2015-01-08}]{counters}{=\meta{text}}{no default, initially |Counters|}
+ Heading text in the index for counters.
+\end{langTcbKey}
+
+\begin{langTcbKey}{environment}{=\meta{text}}{no default, initially |environment|}
+ Text used in the index for environments.
+\end{langTcbKey}
+
+\begin{langTcbKey}{environments}{=\meta{text}}{no default, initially |Environments|}
+ Heading text in the index for environments.
+\end{langTcbKey}
+
+\begin{langTcbKey}{environment content}{=\meta{text}}{no default, initially |environment content|}
+ Text used in \refEnv{docEnvironment}.
+\end{langTcbKey}
+
+\begin{langTcbKey}{index}{=\meta{text}}{no default, initially |Index|}
+ Heading text for the index.
+\end{langTcbKey}
+
+\begin{langTcbKey}{key}{=\meta{text}}{no default, initially |key|}
+ Text used in the index for keys.
+\end{langTcbKey}
+
+\begin{langTcbKey}{keys}{=\meta{text}}{no default, initially |Keys|}
+ Heading text used in the index for keys.
+\end{langTcbKey}
+
+\begin{langTcbKey}[][doc new={2015-01-08}]{length}{=\meta{text}}{no default, initially |length|}
+ Text used in the index for lengths.
+\end{langTcbKey}
+
+\begin{langTcbKey}[][doc new={2015-01-08}]{lengths}{=\meta{text}}{no default, initially |Lengths|}
+ Heading text in the index for lengths.
+\end{langTcbKey}
+
+
+\begin{langTcbKey}[][doc new={2014-09-19}]{new}{=\meta{text}}{no default, initially |New|}
+ Announcement text for new content.
+\end{langTcbKey}
+
+\begin{langTcbKey}{pageshort}{=\meta{text}}{no default, initially |P.|}
+ Short text for page references.
+\end{langTcbKey}
+
+\begin{langTcbKey}[][doc new={2014-09-19}]{updated}{=\meta{text}}{no default, initially |Updated|}
+ Announcement text for updated content.
+\end{langTcbKey}
+
+\begin{langTcbKey}{value}{=\meta{text}}{no default, initially |value|}
+ Text used in the index for values.
+\end{langTcbKey}
+
+\begin{langTcbKey}{values}{=\meta{text}}{no default, initially |Values|}
+ Heading text in the index for values.
+\end{langTcbKey}
+
+
+
+\clearpage
+\begin{docTcbKey}{doc left}{=\meta{length}}{no default, initially |2em|}
+ Sets the left hand offset of the documentation texts from
+ \refEnv{docCommand}, \refEnv{docEnvironment}, \refEnv{docKey}, etc, to \meta{length}.
+\begin{dispExample}
+\begin{docCommand*}[doc left=2cm,doc left indent=-2cm]{myCommandA}{\marg{argument}}
+ This is the documentation of \refCom{myCommandA} which takes one \meta{argument}.
+ \refCom{myCommandA} does some funny things with its \meta{argument}.
+\end{docCommand*}
+\end{dispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}{doc right}{=\meta{length}}{no default, initially |0em|}
+ Sets the right hand offset of the documentation texts from
+ \refEnv{docCommand}, \refEnv{docEnvironment}, \refEnv{docKey}, etc, to \meta{length}.
+\begin{dispExample}
+\begin{docCommand*}[doc right=2cm]{myCommandB}{\marg{argument}}
+ This is the documentation of \refCom{myCommandB} which takes one \meta{argument}.
+ \refCom{myCommandB} does some funny things with its \meta{argument}.
+\end{docCommand*}
+\end{dispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}{doc left indent}{=\meta{length}}{no default, initially |-2em|}
+ Sets the left hand indent of documentation heads from
+ \refEnv{docCommand}, \refEnv{docEnvironment}, \refEnv{docKey}, etc, to \meta{length}.
+\begin{dispExample}
+\begin{docCommand*}[doc left indent=2cm]{myCommandC}{\marg{argument}}
+ This is the documentation of \refCom{myCommandC} which takes one \meta{argument}.
+ \refCom{myCommandC} does some funny things with its \meta{argument}.
+\end{docCommand*}
+\end{dispExample}
+\end{docTcbKey}
+
+\enlargethispage*{10mm}
+\begin{docTcbKey}{doc right indent}{=\meta{length}}{no default, initially |0pt|}
+ Sets the right hand indent of documentation heads from
+ \refEnv{docCommand}, \refEnv{docEnvironment}, \refEnv{docKey}, etc, to \meta{length}.
+\begin{dispExample}
+\begin{docCommand*}[doc right indent=-10mm,doc right=10mm,
+ doc description=test value]{myCommandD}{\marg{argument}}
+ This is the documentation of \refCom{myCommandD} which takes one \meta{argument}.
+ \refCom{myCommandD} does some funny things with its \meta{argument}.
+\end{docCommand*}
+\end{dispExample}
+\end{docTcbKey}
+
+\clearpage
+The head lines of the main documentation environments \refEnv{docCommand},
+\refEnv{docEnvironment}, \refEnv{docKey}, etc, are set inside |tcolorbox|es.
+Options to these |tcolorbox|es can be given using the following keys.
+
+\begin{docTcbKey}{doc head command}{=\meta{options}}{no default, initially empty}
+ Sets \meta{options} for the head line of \refEnv{docCommand} and \refEnv{docCommand*}.
+\begin{dispExample}
+\tcbset{doc head command={interior style={fill,left color=red!20!white,
+ right color=blue!20!white}}}
+
+\begin{docCommand*}{myCommandE}{\marg{argument}}
+ This is the documentation of \refCom{myCommandE} which takes one \meta{argument}.
+ \refCom{myCommandE} does some funny things with its \meta{argument}.
+\end{docCommand*}
+\end{dispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}{doc head environment}{=\meta{options}}{no default, initially empty}
+ Sets \meta{options} for the head line of \refEnv{docEnvironment} and \refEnv{docEnvironment*}.
+\begin{dispExample}
+\tcbset{doc head environment={beamer,boxsep=2pt,arc=2pt,colback=green!20!white,
+ after=\par\smallskip}}
+
+\begin{docEnvironment*}{myEnvironment}{\marg{argument}}
+ This is the documentation of \refEnv{myEnvironment} which
+ takes one \meta{argument}.
+\end{docEnvironment*}
+\end{dispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}{doc head key}{=\meta{options}}{no default, initially empty}
+ Sets \meta{options} for the head line of \refEnv{docKey} and \refEnv{docKey*}.
+\begin{dispExample}
+\tcbset{doc head key={boxsep=4pt,arc=4pt,boxrule=0.6pt,
+ frame style=fill,interior style=fill,colframe=green!50!black}}
+
+\begin{docKey*}{/foo/myKey}{}{no value}
+ This is the documentation of \refKey{/foo/myKey}.
+\end{docKey*}
+\end{dispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}{doc head}{=\meta{options}}{no default, initially empty}
+ Shortcut for setting the same \meta{options} for
+ \refKey{/tcb/doc head command}, \refKey{/tcb/doc head environment},
+ and \refKey{/tcb/doc head key}.
+\end{docTcbKey}
+
+\clearpage
+The description texts of the main documentation environments \refEnv{docCommand},
+\refEnv{docEnvironment}, \refEnv{docKey}, etc, are set in a compact form without
+indention and |parskip=0pt|. This settings can overruled by using the following
+keys to insert code before (or after) the description texts.
+
+\begin{docTcbKey}[][doc new=2015-10-09]{before doc body command}{=\meta{code}}{no default, initially empty}
+ Executes \meta{code} before the description texts
+ of \refEnv{docCommand} and \refEnv{docCommand*}.
+\begin{dispExample}
+\tcbset{before doc body command={%
+ \setlength{\parindent}{2.5em}%
+ \setlength{\parskip}{1ex plus 0.75ex minus 0.25ex}%
+}}
+
+\begin{docCommand*}{myCommandG}{\marg{argument}}
+ This is the documentation of \refCom{myCommandG} which takes one \meta{argument}.
+ \refCom{myCommandG} does some funny things with its \meta{argument}.
+\end{docCommand*}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2015-10-09]{after doc body command}{=\meta{code}}{no default, initially empty}
+ Executes \meta{code} after the description texts
+ of \refEnv{docCommand} and \refEnv{docCommand*}.
+\begin{dispExample}
+\tcbset{after doc body command={%
+ \hfill\nolinebreak[1]\hspace*{\fill}\textcolor{red}{$\diamondsuit$}%
+}}
+
+\begin{docCommand*}{myCommandH}{\marg{argument}}
+ This is the documentation of \refCom{myCommandH} which takes one \meta{argument}.
+ \refCom{myCommandH} does some funny things with its \meta{argument}.
+\end{docCommand*}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2015-10-09]{before doc body environment}{=\meta{code}}{no default, initially empty}
+ Executes \meta{code} before the description texts
+ of \refEnv{docEnvironment} and \refEnv{docEnvironment*}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2015-10-09]{after doc body environment}{=\meta{code}}{no default, initially empty}
+ Executes \meta{code} after the description texts
+ of \refEnv{docEnvironment} and \refEnv{docEnvironment*}.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2015-10-09]{before doc body key}{=\meta{code}}{no default, initially empty}
+ Executes \meta{code} before the description texts
+ of \refEnv{docKey} and \refEnv{docKey*}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2015-10-09]{after doc body key}{=\meta{code}}{no default, initially empty}
+ Executes \meta{code} after the description texts
+ of \refEnv{docKey} and \refEnv{docKey*}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2015-10-09]{before doc body}{=\meta{options}}{no default, initially empty}
+ Shortcut for setting the same \meta{options} for
+ \refKey{/tcb/before doc body command}, \refKey{/tcb/before doc body environment},
+ and \refKey{/tcb/before doc body key}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2015-10-09]{after doc body}{=\meta{options}}{no default, initially empty}
+ Shortcut for setting the same \meta{options} for
+ \refKey{/tcb/after doc body command}, \refKey{/tcb/after doc body environment},
+ and \refKey{/tcb/after doc body key}.
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}{doc description}{=\meta{text}}{no default, initially empty}
+ Sets a (short!) additional description \meta{text} for
+ \refEnv{docCommand} or \refEnv{docEnvironment}. Such a description is
+ mandatory for \refEnv{docKey}.
+\begin{dispExample}
+\begin{docCommand*}[doc description=my description]{myCommandF}{\marg{argument}}
+ This is the documentation of \refCom{myCommandF} which takes one \meta{argument}.
+ \refCom{myCommandF} does some funny things with its \meta{argument}.
+\end{docCommand*}
+\end{dispExample}
+\begin{marker}
+Note that the description \meta{text} may overlap with the text on the left
+hand side if too long. Linebreaks can be used inside the \meta{text}.
+\end{marker}
+\end{docTcbKey}
+
+\begin{docTcbKey}{doc into index}{\colOpt{=true\textbar false}}{default |true|, initially |true|}
+ If set to |false|, no index entries are written for the main documentation
+ environments. The same effect is achieved by using e.\,g.\ \refEnv{docCommand*}
+ instead of \refEnv{docCommand}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2014-09-19]{doc marginnote}{=\meta{options}}{no default, initially empty}
+ Sets style \meta{options} for the displayed box of the \refCom{tcbdocmarginnote} command.
+\begin{dispExample}
+\tcbset{doc marginnote={colframe=blue!50!white,colback=blue!5!white}}%
+This is some text\tcbdocmarginnote{Note A}
+which is commented by a note inside the margin.
+\end{dispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2014-09-19]{doc new}{=\meta{date}}{style, no default}
+ Adds a a marginnote with a 'New: \meta{data}' message at the beginning of
+ the upper box part. The intended use is inside the option list of
+ \refEnv{docCommand}, \refEnv{docEnvironment}, etc.
+ \makeatletter\renewcommand*{\tcbdocnew}[1]{\kvtcb@text@new: #1}\makeatother%
+\begin{dispExample}
+\begin{docCommand}[doc new=2000-01-01]{foosomething}{\marg{text}}
+Some command for something.
+\end{docCommand}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2014-09-19]{doc updated}{=\meta{date}}{style, no default}
+ Adds a marginnote with a 'Updated: \meta{data}' message at the beginning of
+ the upper box part. See \refKey{/tcb/doc new}.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2014-09-19]{doc new and updated}{=\marg{new date}\marg{update date}}{style, no default}
+ Adds a marginnote with 'New: \meta{new date}' and 'Updated: \meta{update data}' messages at the beginning of
+ the upper box part. See \refKey{/tcb/doc new}.
+\end{docTcbKey}
+
+
+\subsection{Predefined Colors of the Library}
+The following colors are predefined. They are used as default colors
+in some library commands.
+
+\def\dispColor#1{\docColor{#1}~\tikz[baseline=1mm]\path[fill=#1,draw] (0,0) rectangle (0.4,0.4);~}
+
+\dispColor{Option},
+\dispColor{Definition},
+\dispColor{ExampleFrame},
+\dispColor{ExampleBack},
+\dispColor{Hyperlink}.
+
+
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.external.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.external.tex
new file mode 100644
index 0000000000..8479f88f41
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.external.tex
@@ -0,0 +1,644 @@
+% !TeX root = tcolorbox.tex
+% include file of tcolorbox.tex (manual of the LaTeX package tcolorbox)
+\clearpage
+\section{Library \mylib{external}}\label{sec:external}%
+\tcbset{external/prefix=external/external_}%
+The library is loaded by a package option or inside the preamble by:
+\begin{dispListing}
+\tcbuselibrary{external}
+\end{dispListing}
+
+The purpose of this library is to support externalization of document
+snippets like graphics or boxes which can be compiled stand-alone.
+These snippets are written to external files, compiled and the resulting
+pdf files are included to the main document as images.
+The whole procedure saves compilation time, if such a snippet is costly to
+compile but needs to compile just once or very seldom.
+
+There are very good alternatives to this library. One should consider
+the |standalone| package or the \tikzname\ externalization library instead.
+The \mylib{external} library is something in between and can be seen as
+poor man variant of the \tikzname\ externalization library.
+
+The main differences between \tikzname\ externalization and \mylib{external} are:
+\begin{itemize}
+\item\tikzname\ |external| compiles the whole original document in a sophisticated
+ way while \mylib{external} uses only the preamble or a part of the preamble
+ of the original document.
+\item\tikzname\ |external| can automatically externalize all |tikzpicture|
+ environments while \mylib{external} externalizes marked snippets only.
+\item Code snippets to be externalized by \mylib{external} are not restricted to
+ |tikzpicture| environments. But these snippets have to be stand-alone without
+ dependencies to the rest of the document.
+\end{itemize}
+Why should somebody use \mylib{external} instead of the more powerful \tikzname\ |external|?
+One reason could be compilation speed, but the main reason for creating the
+library at all was that \tikzname\ |external| tends to choke on complicated
+documents where the sophisticated mechanism stumbles. Since \mylib{external} does
+not use the original document body for compilation, this cannot happen.
+
+\begin{marker}
+Source snippets are compiled, if their |md5| checksum has changed.
+They are not compiled automatically, if option settings are changed or
+anything outside the snippet is changed.
+Use \refKey{/tcb/external/force remake} to force compilation in this case
+or simply delete the externalized pdf oder md5 files.
+\end{marker}
+
+\begin{marker}
+To use the externalization options, the compiler has to be called with the
+|-shell-escape| permission to authorize potentially dangerous system calls.
+Be warned that this is a security risk.
+\end{marker}
+
+
+\clearpage
+\subsection{Preparation of a Document for Externalization}\label{subsec:external_preparation}
+
+The preamble of the main document has to contain the \refCom{tcbEXTERNALIZE}
+command. Without this command, no externalization operation will be
+executed.
+
+\begin{docCommand}[doc new=2015-03-11]{tcbEXTERNALIZE}{}
+ It is mandatory for externalization that this command is used once
+ in the preamble of the main document. Every setting \emph{before}
+ \refCom{tcbEXTERNALIZE} will also be used for compiling an external
+ snippet. Every setting \emph{after} \refCom{tcbEXTERNALIZE} will be
+ ignored for compiling an external snippet.
+ Place this command right before |\begin{document}|, if you are not
+ absolutely sure about another place.
+
+ The main document has to look like the following:
+
+\begin{dispListing}
+\documentclass[a4paper]{book}% for example
+\usepackage{...}% anything
+% ...
+% Tpyically, all or the very most settings for the document.
+
+\tcbEXTERNALIZE% Typically, just before \begin{document}
+
+% Additional settings which are ABSOLUTELY irrelevant for the
+% stand-alone snippets.
+%
+\begin{document}
+ % The document.
+ % This also contains the marked snippets for externalization.
+\end{document}
+\end{dispListing}
+\end{docCommand}
+
+During compilation, a \refKey{/tcb/external/runner} file
+is dynamically created (several times). This is the actual main file for
+compiling an externalized snippet.
+
+\begin{extTcbKey}[][doc new=2015-03-11]{runner}{=\meta{file name}}{no default,
+ initially \texttt{\cs{jobname}\detokenize{_run.tex}}}
+Sets the \meta{file name} for dynamically created |runner| file.
+This is the actual main file for a document snippet.
+Typically, the initial setting is not needed to be changed.
+\begin{dispListing}
+\tcbset{external/runner=myrunner.tex}
+\end{dispListing}
+\end{extTcbKey}
+
+\begin{extTcbKey}[][doc new=2015-03-11]{prefix}{=\meta{text}}{no default,
+ initially \texttt{external/}}
+The \meta{text} is prefixed to any \refKey{/tcb/external/name} for an
+externalization snippet. The initial setting implies saving all snippets
+into an |external/| subdirectory. Depending on the operation system,
+the subdirectory may have to be created manually once.
+\begin{dispListing}
+% Use a 'real' prefix instead of writing into a subdirectory:
+\tcbset{external/prefix=ext_}
+\end{dispListing}
+\end{extTcbKey}
+
+
+\begin{extTcbKey}[][doc new=2015-03-11]{externalize}{\colOpt{=true\textbar false}}{default |true|,
+ initially |true|}
+If set to |true|, the marked snippets are compiled if necessary.
+If set to |false|, the marked snippets are not compiled but included as text.
+\refKey{/tcb/external/externalize} can only be used after \refCom{tcbEXTERNALIZE}.
+\end{extTcbKey}
+
+\begin{extTcbKey}[][doc new=2015-03-11]{force remake}{\colOpt{=true\textbar false}}{default |true|,
+ initially |false|}
+If set to |true|, the marked snippets are always compiled.
+If set to |true|, the marked snippets are compiled only if necessary.
+The necessity is given, if a compiled pdf file is missing or the
+|md5| checksum of the source snippet has changed.
+\end{extTcbKey}
+
+\enlargethispage*{1cm}
+\begin{extTcbKey}[][doc new and updated={2015-03-11}{2017-02-24}]{\tcbexclamation}{}{style}
+ Shortcut for setting \refKey{/tcb/external/force remake} to |true|.
+\end{extTcbKey}
+
+\begin{extTcbKey}[][doc new and updated={2015-06-12}{2017-02-24}]{-}{}{style}
+ Shortcut for setting \refKey{/tcb/external/externalize} to |false|.
+\end{extTcbKey}
+
+
+\subsection{Marking Externalization Snippets}\label{subsec:external_marking}
+
+\begin{docEnvironment}[doc new=2015-03-11]{tcbexternal}{\oarg{options}\marg{name}}
+Marks the environment content as a snippet for externalization.
+Typically, the content is a |tikzpicture| or something similar.
+It is important to note that the snippet should not have any dependencies
+with the rest of the document, e.g. referencing counters or setting counters
+is not possible.
+The \meta{name} is automatically prefixed with \refKey{/tcb/external/prefix}.
+In combination, this has to be a unique file name. It is advised to not
+use spaces or umlauts for the name.
+The \meta{options} are keys from the |/tcb/external/| key tree.
+
+\begin{dispExample}
+\begin{tcbexternal}{example_tikzpicture}
+ \begin{tikzpicture}
+ \path[fill=yellow!50!white] (0,0) circle (11mm);
+ \path[fill=white] (0,0) circle (9mm);
+ \foreach \w/\c in {90/red,210/green,330/blue}
+ {\path[shading=ball,ball color=\c] (\w:1cm) circle (7mm);}
+ \end{tikzpicture}
+\end{tcbexternal}
+\end{dispExample}
+
+\medskip
+
+If a \refEnv{tcolorbox} is externalized, one should use
+\refKey{/tcb/nobeforeafter} for the box. Indention and distances to
+the text before and after have to be given separately outside the
+\refEnv{tcbexternal} environment.
+
+\begin{dispExample}
+\noindent%
+\begin{tcbexternal}[minipage]{example_tcolorbox}
+ \begin{tcolorbox}[nobeforeafter,enhanced,
+ fonttitle=\bfseries,title=Externalized Box,
+ colframe=red!50!black,drop fuzzy shadow,
+ interior style={fill overzoom image=goldshade.png}]
+ This complete tcolorbox is externalized. One cannot use numbered
+ boxes here. Note the \texttt{minipage} option which tells the
+ current line width to the external snippet.
+ \end{tcolorbox}
+\end{tcbexternal}
+\end{dispExample}
+
+\begin{dispExample}
+\begin{tcolorbox}[nobeforeafter,enhanced,
+ fonttitle=\bfseries,title=Externalized Box,
+ colframe=blue!50!black,
+ interior style={fill overzoom image=blueshade.png}]
+ \begin{tcbexternal}[minipage]{example_tcolorbox2}
+ \color{white}%
+ The interior of the tcolorbox is externalized.
+ One can use numbered boxes without problems.
+ Note that the text color has to be set for the text manually
+ since it is converted into an image.
+ \end{tcbexternal}
+\end{tcolorbox}
+\end{dispExample}
+
+\begin{dispExample}
+\begin{tcbexternal}[minipage]{example_tabularx}
+ \newcolumntype{Y}{>{\raggedleft\arraybackslash}X}%
+ \begin{tabularx}{\linewidth}{|l||Y|Y|Y|Y||Y|}\hline
+ Group & One & Two & Three & Four & Sum\\\hline\hline
+ Red & 1000.00 & 2000.00 & 3000.00 & 4000.00 & 10000.00\\\hline
+ Green & 2000.00 & 3000.00 & 4000.00 & 5000.00 & 14000.00\\\hline
+ Blue & 3000.00 & 4000.00 & 5000.00 & 6000.00 & 18000.00\\\hline\hline
+ Sum & 6000.00 & 9000.00 & 12000.00 & 15000.00 & 42000.00\\\hline
+ \end{tabularx}
+\end{tcbexternal}
+\end{dispExample}
+
+
+\end{docEnvironment}
+
+\begin{extTcbKey}[][doc new=2015-03-11]{name}{=\meta{name}}{no default,
+ initially \texttt{unnamed}}
+The \meta{name} is automatically prefixed with \refKey{/tcb/external/prefix}.
+In combination, this has to be a unique file name for externalization.
+Typically, this key is not used directly but is set indirectly as
+mandatory parameter, see \refEnv{tcbexternal}.
+\end{extTcbKey}
+
+
+\clearpage
+\begin{docEnvironment}[doc new=2015-03-11]{extcolorbox}{\oarg{options}\marg{name}\oarg{tcolorbox options}}
+ This is an externalized version of \refEnv{tcolorbox} created
+ using\\ \refCom{newtcbexternalizetcolorbox}:
+\begin{dispListing}
+\newtcbexternalizetcolorbox{extcolorbox}{tcolorbox}{}{}
+\end{dispListing}
+ \meta{options} and \meta{name} are given to the underlying \refEnv{tcbexternal}
+ environment, while \meta{tcolorbox options} are given to \refEnv{tcolorbox}.
+
+ \begin{marker}
+ Note that you should not redefine \refKey{/tcb/before} and \refKey{/tcb/after}
+ inside the \meta{tcolorbox options}, since the
+ externalized version would not be identical to the non-externalized
+ otherwise.
+ \end{marker}
+
+\begin{dispExample}
+\begin{extcolorbox}[minipage]{example_extcolorbox}
+ [ enhanced,colframe=red!50!black,colback=yellow!10,
+ fonttitle=\bfseries,drop fuzzy shadow,
+ title=My external box ]
+
+ This box is completely externalized.
+
+ \begin{tcolorbox}[colframe=blue,colback=blue!5,before skip=6pt]
+ Inner box.
+ \end{tcolorbox}
+\end{extcolorbox}
+\end{dispExample}
+\end{docEnvironment}
+
+\begin{marker}
+\begin{itemize}
+\item\textbf{Never} externalize numbered boxes.
+\item\textbf{Never} externalize boxes which contain references to other
+ things, e.g. using |\ref| or |\cite|.
+\item\textbf{Never} externalize breakable boxes.
+\end{itemize}
+\kern6pt
+\end{marker}
+
+\clearpage
+\begin{docEnvironment}[doc new=2015-03-11]{extikzpicture}{\oarg{options}\marg{name}\oarg{tikz options}}
+ This is an externalized version of |tikzpicture| created
+ using\\ \refCom{newtcbexternalizeenvironment}:
+\begin{dispListing}
+\newtcbexternalizeenvironment{extikzpicture}{tikzpicture}{}{}{}
+\end{dispListing}
+ \meta{options} and \meta{name} are given to the underlying \refEnv{tcbexternal}
+ environment, while \meta{tikz options} are given to |tikzpicture|.
+
+\tcbset{/tcb/external/externalize}%----- Do externalization even if switched off globally
+\begin{dispExample}
+\begin{center}
+\begin{extikzpicture}[
+ preamble={\usepackage{pgfplots}}, % add package for external graph
+ input source on error=false, % do not load source on error
+]{example_pgfplots}
+ \pgfplotsset{width=12cm}
+ \begin{axis}[3d box=background,grid=major,
+ xlabel=$x$, ylabel=$y$, zlabel=$z$, view/h=40,
+ mesh/interior colormap name=hot,
+ colormap/blackwhite,
+ z buffer=sort,domain=0:90,y domain=0:60,
+ zmin=0,zmax=2,z post scale=1.2,
+ ]
+ \addplot3[surf,mesh/interior colormap name=blackwhite,
+ colormap/hot,] ( {cos(x)},{sin(x)}, {2*sin(y)} );
+ \addplot3[surf] ( {2*cos(x)*cos(y)},{2*sin(x)*cos(y)}, {2*sin(y)} );
+ \end{axis}
+\end{extikzpicture}
+\end{center}
+\end{dispExample}
+
+\end{docEnvironment}
+
+
+
+
+\clearpage
+\begin{docTcbKey}[][doc new=2015-03-11]{externalize listing}{=\meta{name}}{style, no default}
+ The text content of a \refEnv{tcblisting} is externalized with the
+ given \meta{name}. Note that the listing part is not externalized.
+\end{docTcbKey}
+
+
+\begin{dispExample}
+\begin{tcblisting}{externalize listing=example_listing,
+ bicolor,colback=yellow!10,colframe=yellow!50!black,
+ colbacklower=white,center lower}
+\begin{tikzpicture}
+ \path[fill=yellow!50!white] (0,0) circle (11mm);
+ \path[fill=white] (0,0) circle (9mm);
+ \foreach \w/\c in {90/red,210/green,330/blue}
+ {\path[shading=ball,ball color=\c] (\w:1cm) circle (7mm);}
+\end{tikzpicture}
+\end{tcblisting}
+\end{dispExample}
+
+
+\begin{docTcbKey}[][doc new=2015-03-11]{externalize listing\tcbexclamation}{=\meta{name}}{style, no default}
+Combination of \refKey{/tcb/externalize listing} and \refKey{/tcb/external/force remake}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2015-03-11]{externalize example}{=\meta{name}}{style, no default}
+ The text content of a \refEnv{dispExample*} is externalized with the
+ given \meta{name}. Note that the listing part is not externalized.
+
+\begin{dispExample}
+\begin{dispExample*}{sidebyside,externalize example=example_example}
+\tikz\path[shading=ball,
+ ball color=red] circle (7mm);
+\end{dispExample*}
+\end{dispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2015-03-11]{externalize example\tcbexclamation}{=\meta{name}}{style, no default}
+Combination of \refKey{/tcb/externalize example} and \refKey{/tcb/external/force remake}.
+\end{docTcbKey}
+
+\clearpage
+\subsection{Customization}\label{subsec:external_custom}
+
+\begin{extTcbKey}[][doc new=2015-03-11]{safety}{=\meta{length}}{no default,
+ initially |2mm|}
+The snippet box is surrounded with a safety border with a thickness of
+\meta{length}. This border is automatically trimmed during picture inclusion.
+The reason for this mechanism is to catch box content which
+extrudes over the bounding box. For example, shadows of a |tcolorbox| are
+painted outside the bounding box and would be lost otherwise.
+\end{extTcbKey}
+
+\begin{extTcbKey}[][doc new=2015-03-11]{environment}{=\meta{env}}{no default, initially unset}
+Surrounds the exported snippet text with an environment \meta{env} without
+parameters.
+Note that this option is ignored for \refKey{/tcb/externalize listing}.
+\end{extTcbKey}
+
+\begin{extTcbKey}[][doc new=2015-05-05]{environment with percent}{\colOpt{=true\textbar false}}{default |true|,
+ initially |true|}
+If set to |true|, the |\begin| and |\end| code of \refKey{/tcb/external/environment}
+is appended with a percent sign. For verbatim environments, this option
+typically has to be se to |false|.
+\end{extTcbKey}
+
+
+\begin{extTcbKey}[][doc new=2015-03-11]{minipage}{\colOpt{=\meta{length}}}{default \texttt{\cs{linewidth}},
+ initially unset}
+Surrounds the exported snippet text with a minipage. The optional \meta{length}
+parameter sets the width of the minipage. Note that the default width is the
+current line width of the main document.
+See \refEnv{tcbexternal} for examples.
+Note that this option is ignored for \refKey{/tcb/externalize listing}.
+\end{extTcbKey}
+
+
+\begin{extTcbKey}[][doc new=2015-03-11]{plain}{}{no value, initially set}
+ Removes any text which was set to surround the snippet.
+ This removes the setting of \refKey{/tcb/external/minipage}, but is
+ independent of \refKey{/tcb/external/safety}.
+\end{extTcbKey}
+
+
+\begin{extTcbKey}[][doc new=2015-03-11]{compiler}{=\meta{text}}{no default,
+ initially \texttt{pdflatex}}
+ Sets the name of the compiler for the snippets. Note that this compiler
+ has to support the |\pdfmdfivesum| primitive e.g. using the
+ |pdftexcmds| package. This should work for |xelatex| and |lualatex|.
+\end{extTcbKey}
+
+\begin{extTcbKey}[][doc new=2015-03-11]{runs}{=\meta{number}}{no default,
+ initially |1|}
+ Sets the number of compiler runs for the snippet.
+\begin{dispExample}
+\begin{tcbexternal}[minipage,runs=2]{example_raster}
+ \begin{tcbitemize}[raster equal height,
+ size=small,colframe=red!50!black,colback=red!10!white]
+ \tcbitem One
+ \tcbitem \Huge Two
+ \tcbitem Three
+ \tcbitem Four
+ \end{tcbitemize}
+\end{tcbexternal}
+\end{dispExample}
+\end{extTcbKey}
+
+\enlargethispage*{1cm}
+\begin{extTcbKey}[][doc new=2015-03-11]{input source on error}{\colOpt{=true\textbar false}}{default |true|,
+ initially |true|}
+If set to |true|, the source code of the snippet is loaded instead of
+the failed pdf picture. Typically, this will lead to an error stop at the
+faulty place of the source and such helps detecting the cause.
+If the source input compiles without error, the document setup
+may be incorrect, see \Fullref{subsec:external_preparation}.
+Maybe, the |external/| subdirectory has to be created manually in this case,
+see \refKey{/tcb/external/prefix}.\par
+If the option is set to |false|, the compilation stops immediately on an error.
+The log file of the external snippet has to be consulted for error messages
+in this case.
+\end{extTcbKey}
+
+
+\clearpage
+
+\begin{extTcbKey}[][doc new=2015-05-05]{preclass}{=\meta{code}}{no default,
+ initially unset}
+ The given \meta{code} is added before the snippet document.
+ Typically, this means before |\documentclass|.
+ This is not used for compilation of the main document.
+\end{extTcbKey}
+
+
+\begin{extTcbKey}[][doc new=2015-05-05]{PassOptionsToPackage}{=\marg{options}\marg{package}}{no default,
+ initially unset}
+ The given \meta{options} are passed to the given \meta{package} for
+ the snippet document. This is a shortcut for using \refKey{/tcb/external/preclass}
+ with |\PassOptionsToPackage|.
+ This not used for compilation of the main document.
+\end{extTcbKey}
+
+
+\begin{extTcbKey}[][doc new=2015-05-05]{PassOptionsToClass}{=\marg{options}\marg{class}}{no default,
+ initially unset}
+ The given \meta{options} are passed to the given \meta{class} for
+ the snippet document. This is a shortcut for using \refKey{/tcb/external/preclass}
+ with |\PassOptionsToClass|.
+ This not used for compilation of the main document.
+\end{extTcbKey}
+
+
+\begin{extTcbKey}[][doc new=2015-05-05]{clear preclass}{}{no value}
+ Removes all additional \refKey{/tcb/external/preclass} settings.
+\end{extTcbKey}
+
+
+
+\begin{extTcbKey}[][doc new=2015-03-11]{preamble}{=\meta{code}}{no default,
+ initially unset}
+ The given \meta{code} is added to the preamble of the snippet document.
+ This is not used for compilation of the main document.
+\end{extTcbKey}
+
+
+\begin{extTcbKey}[][doc new=2015-05-05]{preamble tcbset}{=\meta{options}}{no default,
+ initially unset}
+ The given \meta{options} are added as parameter for \refCom{tcbset}
+ to the preamble of the snippet document.
+ This are not used for compilation of the main document.
+\end{extTcbKey}
+
+
+\begin{extTcbKey}[][doc new=2015-03-16]{clear preamble}{}{no value}
+ Removes all additional \refKey{/tcb/external/preamble} settings.
+\end{extTcbKey}
+
+
+
+\begin{docCommand}[doc new=2015-03-11]{tcbifexternal}{\marg{true}\marg{false}}
+ Expands to \meta{true}, if executed during snippet compilation,
+ and to \meta{false}, if executed during main document compilation.
+ This can be used \emph{before} \refCom{tcbEXTERNALIZE} to
+ give different setting to snippet and main document.
+\begin{dispListing}
+\tcbifexternal{
+ \usepackage{onlyforexternal}
+}{
+ \usepackage{onlyformain}
+}
+\end{dispListing}
+\end{docCommand}
+
+
+
+\clearpage
+\begin{docCommand}[doc new=2015-03-11]{newtcbexternalizeenvironment}{\marg{newenv}\marg{env}\marg{options}\marg{begin}\marg{end}}
+ Creates a new environment \meta{newenv} which is based on
+ \refEnv{tcbexternal}. This enviroment takes \emph{at least}
+ one optional parameter and one mandatory parameter.
+ These two parameters are passed to \refEnv{tcbexternal}.
+ Further, the given \meta{options} are always added to the option list of \refEnv{tcbexternal}.\par
+ The environment content is externalized and the external snippet is surrounded
+ by an environment \meta{env}. All further parameters of \meta{newenv}
+ are given to \meta{env} as parameters.\par
+ The included image is prepended by \meta{begin} and appended by \meta{end}.\par
+ \refEnv{extikzpicture} is an example application
+ for \refCom{newtcbexternalizeenvironment}.
+
+\begin{dispExample}
+\newtcbexternalizeenvironment{extabular}{tabular}{}{\par\centering}{\par}
+
+\begin{extabular}{example_tabular}{|l|p{6cm}|r|}\hline
+A & B & C\\\hline
+a & This table is externalized as snippet. Obviously,
+ this only makes sense for highly complex tables.
+& b\\\hline
+\end{extabular}
+\end{dispExample}
+\end{docCommand}
+
+
+\begin{docCommand}[doc new=2015-03-11]{renewtcbexternalizeenvironment}{\marg{newenv}\marg{env}\marg{options}\marg{begin}\marg{end}}
+ Identical to \refCom{newtcbexternalizeenvironment}, but the environment \meta{newenv}
+ is created by |\renewenvironment| instead of |\newenvironment|.
+\end{docCommand}
+
+
+\begin{docCommand}[doc new=2015-03-11]{newtcbexternalizetcolorbox}{\marg{newenv}\marg{env}\marg{options}\marg{begin end options}}
+ Creates a new environment \meta{newenv} which is based on
+ \refEnv{tcbexternal}. This enviroment takes \emph{at least}
+ one optional parameter and one mandatory parameter.
+ These two parameters are passed to \refEnv{tcbexternal}.
+ Further, the given \meta{options} are always added to the option list of \refEnv{tcbexternal}.\par
+ The environment content is externalized and the external snippet is surrounded
+ by an environment \meta{env}. All further parameters of \meta{newenv}
+ are given to \meta{env} as parameters.
+ \textbf{In contrast to \refCom{newtcbexternalizeenvironment}, the
+ environment \meta{env} is intended to be based on \refEnv{tcolorbox}
+ or \refEnv{tcblisting}.}\par
+ The \meta{begin end options} are options for settings the space before
+ and after the included image using \refKey{/tcb/before}, \refKey{/tcb/before skip},
+ \refKey{/tcb/after}, or \refKey{/tcb/after skip}.
+ \begin{marker}
+ Use the exact identical values for \refKey{/tcb/before} and \refKey{/tcb/after}
+ inside \meta{begin end options} as they where used for definition of
+ \meta{env}! Otherwise, externalized and non-externalized version will have
+ different spacings.
+ \end{marker}
+ \refEnv{extcolorbox} is an example application for\refCom{newtcbexternalizetcolorbox}.
+
+
+\inputpreamblelisting{M}
+
+{
+\tcbset{external/preamble={\input{tcolorbox_preamble_M.tex}}}
+\begin{dispExample}
+\begin{exmyownlisting}{example_mylisting}% <- name for the external file
+ {My externalized example box}
+This is my \LaTeX\ box.
+\end{exmyownlisting}
+\end{dispExample}
+}
+\end{docCommand}
+
+
+\begin{docCommand}[doc new=2015-03-11]{renewtcbexternalizetcolorbox}{\marg{newenv}\marg{env}\marg{options}\marg{begin end options}}
+ Identical to \refCom{newtcbexternalizetcolorbox}, but the environment \meta{newenv}
+ is created by |\renewenvironment| instead of |\newenvironment|.
+\end{docCommand}
+
+
+\begin{docCommand}[doc new=2016-07-14]{tcbiffileprocess}{\marg{condition}\marg{source}\marg{md5-file}\marg{target}\marg{true}\marg{false}}
+ This is a low-level macro which is internally used.
+ The MD5 digest of a \meta{source} file is compared with
+ a stored MD5 digest from an auxiliary \meta{md5-file}.
+ If they are not equal, the auxiliary \meta{md5-file} is updated to
+ store the current MD5 digest. Further,
+ \begin{itemize}
+ \item if \meta{condition} equals |0|, \meta{true} is executed.
+ \item if \meta{condition} equals |1|:\\
+ If the current and stored MD5 digests were different, \meta{true} is executed.\\
+ Otherwise, if the \meta{target} file is not existing, \meta{true} is executed.\\
+ Otherwise, if the \meta{target} file is older than the \meta{md5-file}, \meta{true} is executed.\\
+ Otherwise, \meta{false} is executed.
+ \item if \meta{condition} equals |2|, \meta{false} is executed.
+ \end{itemize}
+ The intended processing purpose of the \meta{true} code is to produce a \meta{target}
+ file from the given \meta{source} file.
+\end{docCommand}
+
+
+\clearpage
+\subsection{Troubleshooting and FAQ}\label{subsec:external_troubleshooting}
+
+\begin{itemize}
+
+\item\textbf{I use the default settings, but the |external| subdirectory is
+ not created.}\\
+ Depending on operating system and compiler, an |external| subdirectory is
+ automatically created or not. If not, create such a directory manually
+ or add the following to your document\footnote{The |shellesc| package
+ is loaded automatically by the library.}:
+\begin{dispListing}
+\ShellEscape{mkdir external}
+\end{dispListing}
+or
+\begin{dispListing}
+\ShellEscape{mkdir -p external}
+\end{dispListing}
+ If the combination of \refKey{/tcb/external/prefix} and chosen snippet
+ name points to another subdirectory than |external|, this has to be
+ adapted.
+
+\item\textbf{I use the |minted| package and I get a cache directory for
+ every externalized snippet.}\\
+ To avoid this problem, there are several ways.
+ \begin{itemize}
+ \item If you do not need |minted| inside the snippet code, you may use
+ |\usepackage{minted}| \emph{after} \refCom{tcbEXTERNALIZE}
+ or use \refCom{tcbifexternal} to switch |minted| off for the external code.
+ If |minted| is already included by another package, add the following to
+ your preamble:
+\begin{dispListing}
+\tcbset{external/PassOptionsToPackage={draft}{minted}}
+\end{dispListing}
+ \item If |minted| is needed for the snippet code, caching can be switched
+ off by adding the following to your preamble:
+\begin{dispListing}
+\tcbset{external/PassOptionsToPackage={cache=false}{minted}}
+\end{dispListing}
+ Alternatively, the |cachedir| option of |minted| may be used to redirect
+ the cache.
+ \end{itemize}
+
+
+\end{itemize}
+
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.filling.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.filling.tex
new file mode 100644
index 0000000000..f6b20fb2e2
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.filling.tex
@@ -0,0 +1,522 @@
+% !TeX root = tcolorbox.tex
+% include file of tcolorbox.tex (manual of the LaTeX package tcolorbox)
+\clearpage
+\section{\tikzname\ Image and Picture Fill Extensions; Auxiliary Macros}\label{sec:tikzimagefilling}%
+\tcbset{external/prefix=external/filling_}%
+The \mylib{skins} library adds some image and picture fill options to the vast option set of
+\tikzname\ \cite{tantau:tikz_and_pgf}. These options can be used in any |tikzpicture|.
+For the following options, the \mylib{skins} library has to be loaded
+by a package option or inside the preamble by:
+\begin{dispListing}
+\tcbuselibrary{skins}
+\end{dispListing}
+
+See \Vref{sec:skins} for the documentation of all other options of the \mylib{skins} library.
+
+\subsection{Fill Plain}
+\begin{docTikzKey}{fill plain image}{=\meta{file name}}{no default, initially unset}
+ Fills the current path with an external image referenced by \meta{file name}.
+ The image is put in the center of the path, but it is not resized to fit into
+ the path area.
+\begin{dispExample*}{sbs,lefthand ratio=0.66}
+\begin{tikzpicture}
+\path[draw,fill plain image=goldshade.png]
+ (2.75,-0.75) -- (3,0) -- (2.75,0.75)
+ \foreach \w in {45,90,...,315}
+ { -- (\w:1.5cm) } -- cycle;
+\end{tikzpicture}
+\end{dispExample*}
+\end{docTikzKey}
+
+
+\begin{docTikzKey}{fill plain image*}{=\meta{file name}}{no default, initially unset}
+ Fills the current path with an external image referenced by \meta{file name}.
+ The image is put in the center of the path, but it is not resized to fit into
+ the path area.
+ The \meta{graphics options} are given to the underlying \docAuxCommand*{includegraphics} command.
+\begin{dispExample*}{sbs,lefthand ratio=0.66}
+\begin{tikzpicture}
+\path[draw,fill plain image*={width=2.5cm}{goldshade.png}]
+ (2.75,-0.75) -- (3,0) -- (2.75,0.75)
+ \foreach \w in {45,90,...,315}
+ { -- (\w:1.5cm) } -- cycle;
+\end{tikzpicture}
+\end{dispExample*}
+\end{docTikzKey}
+
+
+\begin{docTikzKey}{fill plain picture}{=\meta{graphical code}}{no default, initially unset}
+ Fills the current path with the given \meta{graphical code}.
+ The result is put in the center of the path, but it is not resized to fit into
+ the path area. Note that this is almost identical to the standard |path picture| option.
+\begin{dispExample*}{sbs,lefthand ratio=0.66}
+\begin{tikzpicture}
+\path[draw,fill plain picture={%
+ \draw[red!50!yellow,line width=2mm]
+ (0,0) circle (1cm);
+ \draw[red,line width=5mm] (-1,-1) -- (1,1);
+ \draw[red,line width=5mm] (-1,1) -- (1,-1);
+ }]
+ (2.75,-0.75) -- (3,0) -- (2.75,0.75)
+ \foreach \w in {45,90,...,315}
+ { -- (\w:1.5cm) } -- cycle;
+\end{tikzpicture}
+\end{dispExample*}
+\end{docTikzKey}
+
+
+\clearpage
+\subsection{Fill Stretch}
+\begin{docTikzKey}{fill stretch image}{=\meta{file name}}{no default, initially unset}
+ Fills the current path with an external image referenced by \meta{file name}.
+ The image is stretched to fill the path area.
+\begin{dispExample*}{sbs,lefthand ratio=0.66}
+\begin{tikzpicture}
+\path[fill stretch image=goldshade.png]
+ (2.75,-0.75) -- (3,0) -- (2.75,0.75)
+ \foreach \w in {45,90,...,315}
+ { -- (\w:1.5cm) } -- cycle;
+\end{tikzpicture}
+\end{dispExample*}
+\end{docTikzKey}
+
+
+\begin{docTikzKey}{fill stretch image*}{=\marg{graphics options}\marg{file name}}{no default, initially unset}
+ Fills the current path with an external image referenced by \meta{file name}.
+ The \meta{graphics options} are given to the underlying \docAuxCommand*{includegraphics} command.
+ The image is stretched to fill the path area.
+\begin{dispExample*}{sbs,lefthand ratio=0.66}
+\begin{tikzpicture}
+\path[fill stretch image*=
+ {angle=90,origin=c}{goldshade.png}]
+ (2.75,-0.75) -- (3,0) -- (2.75,0.75)
+ \foreach \w in {45,90,...,315}
+ { -- (\w:1.5cm) } -- cycle;
+\end{tikzpicture}
+\end{dispExample*}
+\end{docTikzKey}
+
+
+\begin{docTikzKey}{fill stretch picture}{=\meta{graphical code}}{no default, initially unset}
+ Fills the current path with the given \meta{graphical code}.
+ The result is stretched to fill the path area.
+\begin{dispExample*}{sbs,lefthand ratio=0.66}
+\begin{tikzpicture}
+\path[draw,fill stretch picture={%
+ \draw[red!50!yellow,line width=2mm]
+ (0,0) circle (1cm);
+ \draw[red,line width=5mm] (-1,-1) -- (1,1);
+ \draw[red,line width=5mm] (-1,1) -- (1,-1);
+ }]
+ (2.75,-0.75) -- (3,0) -- (2.75,0.75)
+ \foreach \w in {45,90,...,315}
+ { -- (\w:1.5cm) } -- cycle;
+\end{tikzpicture}
+\end{dispExample*}
+\end{docTikzKey}
+
+
+\clearpage
+\subsection{Fill Overzoom}
+\begin{docTikzKey}{fill overzoom image}{=\meta{file name}}{no default, initially unset}
+ Fills the current path with an external image referenced by \meta{file name}.
+ The image is zoomed such that the path area fills the image.
+\begin{dispExample*}{sbs,lefthand ratio=0.66}
+\begin{tikzpicture}
+\path[fill overzoom image=goldshade.png]
+ (2.75,-0.75) -- (3,0) -- (2.75,0.75)
+ \foreach \w in {45,90,...,315}
+ { -- (\w:1.5cm) } -- cycle;
+\end{tikzpicture}
+\end{dispExample*}
+\end{docTikzKey}
+
+
+\begin{docTikzKey}{fill overzoom image*}{=\marg{graphics options}\marg{file name}}{no default, initially unset}
+ Fills the current path with an external image referenced by \meta{file name}.
+ The \meta{graphics options} are given to the underlying \docAuxCommand*{includegraphics} command.
+ The image is zoomed such that the path area fills the image.
+\begin{dispExample*}{sbs,lefthand ratio=0.66}
+\begin{tikzpicture}
+\path[fill overzoom image*=
+ {angle=90,origin=c}{goldshade.png}]
+ (2.75,-0.75) -- (3,0) -- (2.75,0.75)
+ \foreach \w in {45,90,...,315}
+ { -- (\w:1.5cm) } -- cycle;
+\end{tikzpicture}
+\end{dispExample*}
+\end{docTikzKey}
+
+
+\begin{docTikzKey}{fill overzoom picture}{=\meta{graphical code}}{no default, initially unset}
+ Fills the current path with the given \meta{graphical code}.
+ The result is zoomed such that the path area fills the image.
+\begin{dispExample*}{sbs,lefthand ratio=0.66}
+\begin{tikzpicture}
+\path[draw,fill overzoom picture={%
+ \draw[red!50!yellow,line width=2mm]
+ (0,0) circle (1cm);
+ \draw[red,line width=5mm] (-1,-1) -- (1,1);
+ \draw[red,line width=5mm] (-1,1) -- (1,-1);
+ }]
+ (2.75,-0.75) -- (3,0) -- (2.75,0.75)
+ \foreach \w in {45,90,...,315}
+ { -- (\w:1.5cm) } -- cycle;
+\end{tikzpicture}
+\end{dispExample*}
+\end{docTikzKey}
+
+
+\clearpage
+\subsection{Fill Zoom}
+\begin{docTikzKey}{fill zoom image}{=\meta{file name}}{no default, initially unset}
+ Fills the current path with an external image referenced by \meta{file name}.
+ The image is zoomed such that it fits inside the path area.
+ Typically, some parts of the path area will stay unfilled.
+\begin{dispExample*}{sbs,lefthand ratio=0.66}
+\begin{tikzpicture}
+\path[draw,fill zoom image=goldshade.png]
+ (2.75,-0.75) -- (3,0) -- (2.75,0.75)
+ \foreach \w in {45,90,...,315}
+ { -- (\w:1.5cm) } -- cycle;
+\end{tikzpicture}
+\end{dispExample*}
+\end{docTikzKey}
+
+
+\begin{docTikzKey}{fill zoom image*}{=\marg{graphics options}\marg{file name}}{no default, initially unset}
+ Fills the current path with an external image referenced by \meta{file name}.
+ The \meta{graphics options} are given to the underlying \docAuxCommand*{includegraphics} command.
+ The image is zoomed such that it fits inside the path area.
+ Typically, some parts of the path area will stay unfilled.
+\begin{dispExample*}{sbs,lefthand ratio=0.66}
+\begin{tikzpicture}
+\path[draw,fill zoom image*=
+ {angle=90,origin=c}{goldshade.png}]
+ (2.75,-0.75) -- (3,0) -- (2.75,0.75)
+ \foreach \w in {45,90,...,315}
+ { -- (\w:1.5cm) } -- cycle;
+\end{tikzpicture}
+\end{dispExample*}
+\end{docTikzKey}
+
+
+\begin{docTikzKey}{fill zoom picture}{=\meta{graphical code}}{no default, initially unset}
+ Fills the current path with the given \meta{graphical code}.
+ The result is zoomed such that it fits inside the path area.
+ Typically, some parts of the path area will stay unfilled.
+\begin{dispExample*}{sbs,lefthand ratio=0.66}
+\begin{tikzpicture}
+\path[draw,fill zoom picture={%
+ \draw[red!50!yellow,line width=2mm]
+ (0,0) circle (1cm);
+ \draw[red,line width=5mm] (-1,-1) -- (1,1);
+ \draw[red,line width=5mm] (-1,1) -- (1,-1);
+ }]
+ (2.75,-0.75) -- (3,0) -- (2.75,0.75)
+ \foreach \w in {45,90,...,315}
+ { -- (\w:1.5cm) } -- cycle;
+\end{tikzpicture}
+\end{dispExample*}
+\end{docTikzKey}
+
+
+\clearpage
+\subsection{Fill Shrink}
+\begin{docTikzKey}{fill shrink image}{=\meta{file name}}{no default, initially unset}
+ Fills the current path with an external image referenced by \meta{file name}.
+ The image is zoomed such that it fits inside the path area, but it never
+ gets enlarged.
+ Typically, some parts of the path area will stay unfilled.
+\begin{dispExample*}{sbs,lefthand ratio=0.66}
+\begin{tikzpicture}
+\path[draw,fill shrink image=goldshade.png]
+ (2.75,-0.75) -- (3,0) -- (2.75,0.75)
+ \foreach \w in {45,90,...,315}
+ { -- (\w:1.5cm) } -- cycle;
+\end{tikzpicture}
+\end{dispExample*}
+\end{docTikzKey}
+
+
+\begin{docTikzKey}{fill shrink image*}{=\meta{file name}}{no default, initially unset}
+ Fills the current path with an external image referenced by \meta{file name}.
+ The \meta{graphics options} are given to the underlying \docAuxCommand*{includegraphics} command.
+ The image is zoomed such that it fits inside the path area, but it never
+ gets enlarged.
+ Typically, some parts of the path area will stay unfilled.
+\begin{dispExample*}{sbs,lefthand ratio=0.66}
+\begin{tikzpicture}
+\path[draw,fill shrink image*={width=1.5cm}{goldshade.png}]
+ (2.75,-0.75) -- (3,0) -- (2.75,0.75)
+ \foreach \w in {45,90,...,315}
+ { -- (\w:1.5cm) } -- cycle;
+\end{tikzpicture}
+\end{dispExample*}
+\end{docTikzKey}
+
+
+\begin{docTikzKey}{fill shrink picture}{=\meta{graphical code}}{no default, initially unset}
+ Fills the current path with the given \meta{graphical code}.
+ The result is zoomed such that it fits inside the path area, but it never
+ gets enlarged.
+ Typically, some parts of the path area will stay unfilled.
+\begin{dispExample*}{sbs,lefthand ratio=0.66}
+\begin{tikzpicture}
+\path[draw,fill shrink picture={%
+ \draw[red!50!yellow,line width=2mm]
+ (0,0) circle (1cm);
+ \draw[red,line width=5mm] (-1,-1) -- (1,1);
+ \draw[red,line width=5mm] (-1,1) -- (1,-1);
+ }]
+ (2.75,-0.75) -- (3,0) -- (2.75,0.75)
+ \foreach \w in {45,90,...,315}
+ { -- (\w:1.5cm) } -- cycle;
+\end{tikzpicture}
+\end{dispExample*}
+\end{docTikzKey}
+
+
+\clearpage
+\subsection{Fill Tile}
+\begin{docTikzKey}{fill tile image}{=\meta{file name}}{no default, initially unset}
+ Fills the current path with a tile pattern using an external image referenced by \meta{file name}.
+\begin{dispExample*}{sbs,lefthand ratio=0.66}
+\begin{tikzpicture}
+\path[fill tile image=pink_marble.png]
+ (2.75,-0.75) -- (3,0) -- (2.75,0.75)
+ \foreach \w in {45,90,...,315}
+ { -- (\w:1.5cm) } -- cycle;
+\end{tikzpicture}
+\end{dispExample*}
+\end{docTikzKey}
+
+
+\begin{docTikzKey}{fill tile image*}{=\marg{graphics options}\marg{file name}}{no default, initially unset}
+ Fills the current path with a tile pattern using an external image referenced by \meta{file name}.
+ The \meta{graphics options} are given to the underlying \docAuxCommand*{includegraphics} command.
+\begin{dispExample*}{sbs,lefthand ratio=0.66}
+\begin{tikzpicture}
+\path[fill tile image*={width=1cm}{pink_marble.png}]
+ (2.75,-0.75) -- (3,0) -- (2.75,0.75)
+ \foreach \w in {45,90,...,315}
+ { -- (\w:1.5cm) } -- cycle;
+\end{tikzpicture}
+\end{dispExample*}
+\end{docTikzKey}
+
+\begin{docTikzKey}{fill tile picture}{=\meta{graphical code}}{no default, initially unset}
+ Fills the current path with a tile pattern using the given \meta{graphical code}.
+\begin{dispExample*}{sbs,lefthand ratio=0.66}
+\begin{tikzpicture}
+\path[draw,fill tile picture={%
+ \draw[red!50!yellow,line width=2mm]
+ (0,0) circle (1cm);
+ \draw[red,line width=5mm] (-1,-1) -- (1,1);
+ \draw[red,line width=5mm] (-1,1) -- (1,-1);
+ }]
+ (2.75,-0.75) -- (3,0) -- (2.75,0.75)
+ \foreach \w in {45,90,...,315}
+ { -- (\w:1.5cm) } -- cycle;
+\end{tikzpicture}
+\end{dispExample*}
+\end{docTikzKey}
+
+
+\begin{docTikzKey}{fill tile picture*}{=\marg{fraction}\marg{graphical code}}{no default, initially unset}
+ Fills the current path with a tile pattern using the given \meta{graphical code}.
+ The graphic is resized by \meta{fraction}.
+\begin{dispExample*}{sbs,lefthand ratio=0.66}
+\begin{tikzpicture}
+\path[draw,fill tile picture*={0.25}{%
+ \draw[red!50!yellow,line width=2mm]
+ (0,0) circle (1cm);
+ \draw[red,line width=5mm] (-1,-1) -- (1,1);
+ \draw[red,line width=5mm] (-1,1) -- (1,-1);
+ }]
+ (2.75,-0.75) -- (3,0) -- (2.75,0.75)
+ \foreach \w in {45,90,...,315}
+ { -- (\w:1.5cm) } -- cycle;
+\end{tikzpicture}
+\end{dispExample*}
+\end{docTikzKey}
+
+
+\clearpage
+\subsection{Filling Options}
+\begin{docTikzKey}{fill image opacity}{=\meta{fraction}}{no default, initially |1.0|}
+ Sets the fill opacity for the image or picture fill options to the given \meta{fraction}.
+\begin{dispExample}
+\begin{tikzpicture}
+\path[fill stretch image=goldshade.png] (0,0) circle (1cm);
+\path[fill=red,fill stretch image=goldshade.png,fill image opacity=0.75]
+ (2,0) circle (1cm);
+\path[fill=red,fill stretch image=goldshade.png,fill image opacity=0.5]
+ (4,0) circle (1cm);
+\path[fill=red,fill stretch image=goldshade.png,fill image opacity=0.25]
+ (6,0) circle (1cm);
+\path[fill=red] (8,0) circle (1cm);
+\end{tikzpicture}
+\end{dispExample}
+\end{docTikzKey}
+
+
+\begin{docTikzKey}{fill image scale}{=\meta{fraction}}{no default, initially |1.0|}
+ Stretches, zooms, overzooms or shrinks the image or picture to the given \meta{fraction} of the
+ width and height of the current path.
+\begin{dispExample}
+\begin{tikzpicture}
+\path[draw,fill zoom image=goldshade.png]
+ (0,0) rectangle +(2,2);
+
+\path[draw,fill zoom image=goldshade.png,fill image scale=0.75]
+ (3,0) rectangle +(2,2);
+
+\path[draw,fill zoom image=goldshade.png,fill image scale=1.5]
+ (6,0) rectangle +(2,2);
+\end{tikzpicture}
+\end{dispExample}
+\end{docTikzKey}
+
+
+\begin{docTikzKey}[][doc updated=2018-03-18]{fill image options}{=\meta{graphics options}}{no default, initially empty}
+ The \meta{graphics options} are given to the underlying \docAuxCommand*{includegraphics} command
+ for the image fill options. This can be just together with
+ \refKey{/tikz/fill stretch image}, \refKey{/tikz/fill overzoom image}, \refKey{/tikz/fill zoom image},
+ and \refKey{/tikz/fill tile image}.
+\begin{dispExample*}{sbs,lefthand ratio=0.66}
+\begin{tikzpicture}
+\path[fill image options={width=1cm},
+ fill tile image=pink_marble.png]
+ (2.75,-0.75) -- (3,0) -- (2.75,0.75)
+ \foreach \w in {45,90,...,315}
+ { -- (\w:1.5cm) } -- cycle;
+\end{tikzpicture}
+\end{dispExample*}
+\end{docTikzKey}
+
+
+\begin{dispExample*}{sbs,lefthand ratio=0.6,center lower,fonttitle=\bfseries,
+ title=Image blending example}
+\begin{tikzpicture}[every node/.style=
+ {circle,minimum width=2cm}]
+\node[fill stretch image=blueshade.png]
+ (A) at (120:3cm) {A};
+\node[fill stretch image=goldshade.png]
+ (B) at (60:3cm) {B};
+\node[
+ preaction={fill stretch image=blueshade.png},
+ fill stretch image=goldshade.png,
+ fill image opacity=0.5] (C) {C};
+\path (A) -- node{$+$} (B);
+\draw[->,very thick] (A)--(C);
+\draw[->,very thick] (B)--(C);
+\end{tikzpicture}
+\end{dispExample*}
+
+
+\subsection{Straightening of the Arcs}
+
+\begin{marker}
+This patch is considered as an experimental feature.
+It changes some of the original \tikzname\ code. This change may break
+with future updates of \tikzname.
+\end{marker}
+
+\begin{docCommand}[doc new=2014-05-05]{tcbpatcharcangular}{}
+The \tikzname\ package provides a nice |rounded corners| option to replace
+all corners by little arcs. |\tcbpatcharcangular| is a patch which
+straightens the arcs. To say it more prosaic, the little arcs are replaced
+by little straight lines.
+
+\begin{dispExample*}{sbs,lefthand ratio=0.66}
+\begin{tikzpicture}
+ \draw[thick,rounded corners=8pt]
+ (0,0) -- (0,2) -- (1,3.25) -- (2,2) -- (2,0)
+ -- (0,2) -- (2,2) -- (0,0) -- (2,0);
+ \tcbpatcharcangular
+ \draw[thick,rounded corners=8pt,xshift=2.5cm]
+ (0,0) -- (0,2) -- (1,3.25) -- (2,2) -- (2,0)
+ -- (0,2) -- (2,2) -- (0,0) -- (2,0);
+\end{tikzpicture}
+\end{dispExample*}
+
+\end{docCommand}
+
+
+\begin{docCommand}[doc new=2014-05-05]{tcbpatcharcround}{}
+This macro reverts \refCom{tcbpatcharcangular}, i.e., the patch from
+\refCom{tcbpatcharcangular} is replaced by the original code.
+\end{docCommand}
+
+
+\clearpage
+\subsection{Extracting Node Dimensions}
+The following auxiliary macros are defined by the \mylib{skins} library.
+They allow to determine the width and height of an arbitrary \tikzname\ node.
+To be more specific, they determine the east-to-west and the north-to-south dimensions
+which may be not the maximal dimensions for a non-rectangular node.
+Note that the following dimensions are measured exactly including the line width
+of the border line. If a new rectangle or node with the same dimensions
+and a border is to be drawn, this border width has to be substracted.
+
+\begin{docCommand}[doc new=2014-09-19]{tcbsettowidthofnode}{\marg{register}\marg{node}}
+ Sets the east-to-west dimension of the given \meta{node}
+ to the \TeX\ \meta{register}.
+\end{docCommand}
+
+\begin{docCommand}[doc new=2014-09-19]{tcbsetmacrotowidthofnode}{\marg{macro}\marg{node}}
+ Defines \meta{macro} as the east-to-west dimension of the given \meta{node}.
+\end{docCommand}
+
+\begin{docCommand}[doc new=2014-09-19]{tcbsettoheightofnode}{\marg{register}\marg{node}}
+ Sets the north-to-south dimension of the given \meta{node}
+ to the \TeX\ \meta{register}.
+\end{docCommand}
+
+\begin{docCommand}[doc new=2014-09-19]{tcbsetmacrotoheightofnode}{\marg{macro}\marg{node}}
+ Defines \meta{macro} as the north-to-south dimension of the given \meta{node}.
+\end{docCommand}
+
+\begin{dispExample}
+\begin{tikzpicture}
+ \node[align=center,draw=red,fill=yellow] (A) {This is my\\example node};
+ \tcbsetmacrotowidthofnode\mywidth{A}
+ \tcbsetmacrotoheightofnode\myheight{A}
+ \path[fill=blue!25!white] % rectangle widthout border
+ ([xshift=2mm]A.south east)
+ rectangle node{Copy} +(\mywidth,\myheight);
+ \node[draw=blue,fill=blue!25!white, % standard border width 0.4pt
+ minimum width=\mywidth-0.4pt, % minus width of border
+ minimum height=\myheight-0.4pt % minus height of border
+ ]
+ at ([xshift=5cm]A) {Copy 2};
+\end{tikzpicture}
+\end{dispExample}
+
+
+\subsection{Hyper Nodes}
+The following auxiliary macro is defined by the \mylib{skins} library.
+\enlargethispage*{1cm}
+
+\begin{docCommand}[doc new=2016-02-03]{tcbhypernode}{\marg{macro}\marg{node}}
+% Sets the east-to-west dimension of the given \meta{node}
+% to the \TeX\ \meta{register}.
+ Applies a hyperlink creating \meta{macro} from the package |hyperref| \cite{rahtz:hyperref}
+ to an existing |tikz| \meta{node}. \refCom{tcbhypernode} can only
+ be used inside a |tikzpicture| environment.
+ The last argument of the \meta{macro} is to be omitted and should stand
+ for an object (text) which is to be made a hyperlink.
+ For example, use |\hyperref[name]| instead of |\hyperref[name]{text}|.
+
+\begin{dispExample}
+% \usepackage{hyperref}
+\begin{tikzpicture}
+ \node[align=center,draw=red,fill=red!5] (mybutton)
+ {Click me to jump to Section~\ref*{sec:tikzimagefilling}};
+ \tcbhypernode{\hyperref[sec:tikzimagefilling]}{mybutton}
+\end{tikzpicture}
+\end{dispExample}
+
+\end{docCommand}
+
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.fitting.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.fitting.tex
new file mode 100644
index 0000000000..8ff8fa0792
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.fitting.tex
@@ -0,0 +1,540 @@
+% !TeX root = tcolorbox.tex
+% include file of tcolorbox.tex (manual of the LaTeX package tcolorbox)
+\clearpage
+\section{Library \mylib{fitting}}\label{sec:fitting}%
+\tcbset{external/prefix=external/fitting_}%
+The library is loaded by a package option or inside the preamble by:
+\begin{dispListing}
+\tcbuselibrary{fitting}
+\end{dispListing}
+
+\subsection{Macros of the Library}
+
+\begin{docCommand}{tcboxfit}{\oarg{options}\marg{box content}}
+ Creates a colored box where the given \meta{box content} is fitted to
+ the width and height of the box. A |tcboxfit| has to have a fixed height.
+ If no fixed height is given, a square box is constructed.
+ In principle, most \meta{options} for a \refEnv{tcolorbox}
+ can be used for |\tcboxfit| with some restrictions. A |\tcboxfit| cannot have
+ a lower part and cannot be broken.
+
+\enlargethispage*{1cm}
+\begin{dispExample}
+% \usepackage{lipsum} \tcbuselibrary{raster}
+\tcbset{colframe=blue!50!black,colback=red!10!white,
+ boxsep=0pt,top=1mm,bottom=1mm,left=1mm,right=1mm,
+ fit algorithm=hybrid*,raster equal skip=1mm}
+\begin{tcbraster}[raster columns=3,raster valign=bottom]
+ \tcboxfit[height=8cm]{\lipsum[1]}
+ \tcboxfit[height=4cm]{\lipsum[1]}
+ \tcboxfit[height=2cm]{\lipsum[1]}
+\end{tcbraster}
+\begin{tcbraster}[colback=green!10!white,boxsep=1mm]
+ \tcboxfit[height=4cm]{\lipsum[2]}
+ \tcboxfit[height=4cm,title=With a title]{\lipsum[2]}
+\end{tcbraster}
+\end{dispExample}
+\end{docCommand}
+
+\clearpage
+\begin{marker}
+See \Vref{subsec:xparse_tcboxfit} for more
+elaborate methods to create new commands.
+\end{marker}
+
+\enlargethispage*{2cm}
+
+\begin{docCommand}{newtcboxfit}{\oarg{init options}\brackets{\texttt{\textbackslash}\rmfamily\meta{name}}\oarg{number}\oarg{default}\marg{options}}
+ Creates a new macro \texttt{\textbackslash}\meta{name} based on \refCom{tcboxfit}.
+ Basically, |\newtcboxfit| operates like |\newcommand|.
+ The new macro \texttt{\textbackslash}\meta{name} optionally takes \meta{number}$+1$ arguments, where
+ \meta{default} is the default value for the optional first argument.
+ The \meta{options} are given to the underlying |tcboxfit|.
+ The \meta{init options} allow setting up automatic numbering,
+ see Section \ref{sec:initkeys} from page \pageref{sec:initkeys}.
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+\newtcboxfit{\mybox}{colback=red!5!white,
+ colframe=red!75!black,width=4cm,
+ height=1.5cm,halign=center}
+
+\mybox{This is my own box.}\par
+\mybox{This is my own box with more text
+ to be written.}
+\end{dispExample*}
+
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+% \usepackage{lipsum}
+\newtcboxfit{\mybox}[2]{colback=red!5!white,
+ colframe=red!75!black,fonttitle=\bfseries,
+ boxsep=1mm,left=0mm,right=0mm,top=0mm,
+ bottom=0mm,halign=center,valign=center,
+ nobeforeafter,width=#1,height=#2}
+
+\mybox{2.5cm}{1cm}{First box}%
+\mybox{2.5cm}{1cm}{Second box with more text}\\
+\mybox{5cm}{2cm}{Third box with text}\\
+\mybox{5cm}{3cm}{\lipsum[1]}
+\end{dispExample*}
+
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+% \usepackage{lipsum}
+\newtcboxfit{\mybox}[2][]{colback=red!5!white,
+ colframe=red!75!black,
+ width=#2,height=#2/3*2,#1}
+
+\mybox[colback=yellow]{5cm}%
+ {\lipsum[2]}
+\end{dispExample*}
+\end{docCommand}
+
+
+\begin{docCommand}{renewtcboxfit}{\oarg{init options}\brackets{\texttt{\textbackslash}\rmfamily\meta{name}}\oarg{number}\oarg{default}\marg{options}}
+ Operates like \refCom{newtcboxfit}, but based on |\renewcommand| instead of |\newcommand|.
+ An existing macro is redefined.
+\end{docCommand}
+
+\enlargethispage*{1cm}
+\begin{docCommand}{tcbfontsize}{\marg{factor}}
+ Selects a font size inside a tcolorbox which is scaled with the given
+ \meta{factor} relative to \docAuxCommand{tcbfitdim}.%
+ %, see Subsection \ref{subsec:fit} from page \pageref{subsec:fit}.
+
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+\tcbset{colback=red!5!white,colframe=red!75!black}
+\begin{tcolorbox}[fit basedim=10pt]
+ {\tcbfontsize{0.25} Very tiny,}\\
+ {\tcbfontsize{0.5} Small,}\\
+ {\tcbfontsize{1} Normal,}\\
+ {\tcbfontsize{2} Large,}\\
+ {\tcbfontsize{4} Huge.}
+\end{tcolorbox}
+\end{dispExample*}
+\end{docCommand}
+
+
+\clearpage
+\subsection{Option Keys of the Library}\label{subsec:fit}
+
+The font size for the content of a box with fixed width and fixed height
+can be adjusted automatically. This is called the \emph{fitbox capture mode}.
+Note that the fit control algorithm
+constructs a series of versions for the box and selects the 'best'.
+Therefore, the compilation time is quite longer than for a normal box.
+The algorithm will fail, if a different selected font size does not change the
+overall size of the box content.
+The \refCom{tcboxfit} macro uses this algorithm by default.
+
+\medskip
+\begin{marker}
+ The fit control keys are only applicable to unbreakable boxes without
+ a lower part.
+ The box content should not change counters.
+\end{marker}
+\medskip
+
+\enlargethispage*{5mm}
+\begin{docTcbKey}{fit}{}{style, initially unset}
+ Sets the \refKey{/tcb/capture} mode to |fitbox|, i.\,e.\ enables the
+ font size adjustment algorithm. Thereby, a \refEnv{tcolorbox} acts
+ like \refCom{tcboxfit} where the given \meta{box content} is fitted to
+ the width and height of the box. Therefore, the box has to have a fixed height.
+ If no fixed height is given, a square box is constructed.
+ The font dimension \docAuxCommand{tcbfitdim} can also be used to adjust
+ the margins of the box since a box with a tiny font may not need large
+ margins. The number of constructed boxes is saved to the macro \docAuxCommand{tcbfitsteps}
+ for analysis.
+
+\begin{dispExample}
+% \usepackage{lipsum}
+% \tcbuselibrary{skins}
+\newtcolorbox{fitting}[2][]{fit,height=#2,boxsep=1pt,valign=center,opacityupper=0.5,
+ top=0.4\tcbfitdim,bottom=0.4\tcbfitdim,left=0.75\tcbfitdim,right=0.75\tcbfitdim,
+ enhanced,watermark text={\tcbfitsteps},colframe=blue!75!black,colback=white,#1}
+
+\begin{fitting}{4cm}
+\lipsum[1]
+\end{fitting}
+
+\begin{fitting}{2cm}
+\lipsum[2]
+\end{fitting}
+
+\begin{fitting}{1cm}
+\lipsum[3]
+\end{fitting}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}{fit to}{=\meta{width} and \meta{height}}{style, initially unset}
+ Shortcut for using \refKey{/tcb/fit} and setting the \meta{width} and \meta{height} values
+ separately.
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+\tcbset{colback=red!5!white,colframe=red!75!black}
+
+\begin{tcolorbox}[fit to=3cm and 2cm]
+ This box content is fitted to the given
+ dimensions.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{fit to height}{=\meta{height}}{style, initially unset}
+ Shortcut for using \refKey{/tcb/fit} and setting the \meta{height} value separately.
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+\tcbset{colback=red!5!white,colframe=red!75!black}
+
+\begin{tcolorbox}[fit to height=2cm]
+ This box content is fitted to the given
+ height.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}
+
+\begin{docTcbKey}{fit basedim}{=\meta{length}}{no default, initially |10pt|}
+ Sets the starting font dimension for the font size adjustment algorithm
+ to \meta{length}. The algorithm never enlarges this dimension.
+
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+\tcbset{colback=red!5!white,colframe=red!75!black}
+
+\begin{tcolorbox}[fit to=4cm and 2cm]
+ Too few words for the box.
+\end{tcolorbox}
+
+\begin{tcolorbox}[fit to=4cm and 2cm,
+ fit basedim=50pt]
+ Enough words for the box.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{fit skip}{=\meta{real value}}{no default, initially |1.2|}
+ Sets the skip value of the selected font to \meta{real value} times \docAuxCommand{tcbfitdim}.
+
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+% \usepackage{lipsum}
+\tcbset{colback=red!5!white,
+ colframe=red!75!black,left=1mm,
+ right=1mm,boxsep=0mm}
+
+\begin{tcolorbox}[fit to=5cm and 4cm,
+ fit skip=1.0 ]
+ \lipsum[1]
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}
+
+
+
+\clearpage
+\begin{docTcbKey}{fit fontsize macros}{}{style, initially unset}
+ Redefines the standard \LaTeX\ font size macros
+ |\tiny|, |\scriptsize|, |\footnotesize|, |\small|, |\normalsize|,
+ |\large|, |\Large|, |\LARGE|, |\huge|, and |\Huge|,
+ to set font sizes relative to
+ the current \docAuxCommand{tcbfitdim}. Note that the display skip values for
+ mathematical formulas are respected by the redefined macros.
+
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+% \usepackage{lipsum}
+\tcbset{colback=red!5!white,
+ colframe=red!75!black,left=1mm,
+ right=1mm,boxsep=0mm}
+
+\begin{tcolorbox}[fit to height=4cm]
+ {\Large\bfseries This text is
+ not adapted:\par}
+ \lipsum[2]
+\end{tcolorbox}
+
+\begin{tcolorbox}[fit to height=4cm,
+ fit fontsize macros ]
+ {\Large\bfseries This text is adapted:\par}
+ \lipsum[2]
+\end{tcolorbox}
+\end{dispExample*}
+
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+\tcbset{colback=red!5!white,
+ colframe=red!75!black,left=1mm,
+ right=1mm,boxsep=0mm}
+
+\let\realHuge=\Huge
+
+\begin{tcolorbox}[fit basedim=7pt,
+ fontupper=\normalsize,
+ fit fontsize macros]
+The relative relative font size macros
+are also usable without the
+\textit{fit} algorithm.\par
+{\Huge Adapted Huge} ---
+{\realHuge Original Huge}
+\end{tcolorbox}
+
+\end{dispExample*}
+
+
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+\tcbset{size=fbox,colback=red!5!white,
+ colframe=red!75!black}
+
+\tcboxfit[height=5cm,
+ fit fontsize macros,
+ fonttitle=\normalsize\bfseries,
+ title=Adapted title]
+{\lipsum[2]}
+
+\end{dispExample*}
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}{fit height plus}{=\meta{dimension}}{no default, initially |0pt|}
+ The box is allowed to enlarge the fixed height up to the given \meta{dimension},
+ before a font size fit is applied. An optional \refKey{/tcb/fit width plus}
+ is tried after the height adaption.
+\begin{dispExample}
+% \usepackage{lipsum}
+\tcbset{colback=red!5!white,colframe=red!75!black,left=1mm,top=1mm,bottom=1mm,
+ right=1mm,boxsep=0mm,width=3cm,height=3cm,nobeforeafter}
+
+\begin{tcolorbox}[fit]
+This is a tcolorbox.
+\end{tcolorbox}
+\begin{tcolorbox}[fit,fit height plus=1cm]
+This is a tcolorbox.
+\end{tcolorbox}
+\begin{tcolorbox}[fit]
+\lipsum[2]
+\end{tcolorbox}
+\begin{tcolorbox}[fit,fit height plus=1cm]
+\lipsum[2]
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{fit width plus}{=\meta{dimension}}{no default, initially |0pt|}
+ The box is allowed to enlarge the fixed width up to the given \meta{dimension},
+ before a font size fit is applied. An optional \refKey{/tcb/fit height plus}
+ is tried before the width adaption.
+ \enlargethispage*{1cm}
+\begin{dispExample}
+% \usepackage{lipsum}
+\tcbset{colback=red!5!white,colframe=red!75!black,left=1mm,top=1mm,bottom=1mm,
+ right=1mm,boxsep=0mm,width=3cm,height=3cm,nobeforeafter}
+
+\begin{tcolorbox}[fit]
+This is a tcolorbox.
+\end{tcolorbox}
+\begin{tcolorbox}[fit,fit width plus=1cm]
+This is a tcolorbox.
+\end{tcolorbox}
+\begin{tcolorbox}[fit]
+\lipsum[2]
+\end{tcolorbox}
+\begin{tcolorbox}[fit,fit width plus=1cm]
+\lipsum[2]
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{marker}
+Typically but not necessarily, the optional title of a |tcolorbox| is not part of the fit operation.
+If a \refKey{/tcb/fit width plus} is applied, the title is also adapted to
+the new width. If counters are increased inside the title text, they may be
+increased more than one time.
+To avoid this, you are encouraged to use \refKey{/tcb/phantom} or \refKey{/tcb/step and label}
+to set counters or use automatic numbering, see Subsection \ref{sec:numberedboxes}
+from page \pageref{sec:numberedboxes}.
+\end{marker}
+
+
+\begin{docTcbKey}{fit width from}{=\meta{min} \texttt{to} \meta{max}}{style, no default}
+ Sets the box width to \meta{min} and allows the width to grow up to \meta{max}.
+\begin{dispExample}
+% \usepackage{lipsum}
+\tcbset{colback=red!5!white,colframe=red!75!black,left=1mm,top=1mm,bottom=1mm,
+ right=1mm,boxsep=0mm,height=4cm}
+
+\begin{tcolorbox}[fit,width=\linewidth/2]
+\lipsum[2]
+\end{tcolorbox}\par
+\begin{tcolorbox}[fit width from=\linewidth/2 to \linewidth]
+\lipsum[2]
+\end{tcolorbox}\par
+\end{dispExample}
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}{fit height from}{=\meta{min} \texttt{to} \meta{max}}{style, no default}
+ Sets the box height to \meta{min} and allows the height to grow up to \meta{max}.
+\begin{dispExample}
+% \usepackage{lipsum}
+\newtcolorbox{mybox}{colback=red!5!white,colframe=red!75!black,left=1mm,top=1mm,
+ bottom=1mm,right=1mm,boxsep=0mm,width=4cm,nobeforeafter,
+ fit height from=1cm to 8cm}
+
+\begin{mybox}
+This is a tcolorbox.
+\end{mybox}
+\begin{mybox}
+This is a tcolorbox. This is a tcolorbox. This is a tcolorbox.
+\end{mybox}
+\begin{mybox}
+\lipsum[2]
+\end{mybox}
+\end{dispExample}
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}{fit algorithm}{=\meta{name}}{no default, initially |fontsize|}
+Sets the algorithm for the fitting process \emph{after} optionally width and height
+are adapted.
+ Feasible values for \meta{name} are:
+ \begin{itemize}
+ \item\docValue{fontsize} (initial):
+ The algorithm is a bisection method that adapts the font size until
+ certain stop conditions are fulfilled. This is the most time-consuming
+ method but it is robust and gives pleasant results.
+ \begin{marker}
+ The used font has to be freely scalable for this method!
+ Other content than text is not scaled down.
+ The aspect ratio is fully garanteed.
+ \end{marker}
+ \item\docValue{fontsize*}:\tcbdocmarginnote{\tcbdocnew{2014-10-29}}
+ First, the \docValue{fontsize} algorithm is applied. If the font was scaled down
+ and the resulting height is too small, the box is squeezed to fit the area.
+ \begin{marker}
+ The used font has to be freely scalable for this method!
+ Other content than text may be slightly rescaled.
+ The aspect ratio cannot be fully garanteed.
+ \end{marker}
+ \item\docValue{areasize}:
+ The algorithm calculates the area size for the text without scaling the font.
+ The text box is shaped for the needed aspect ratio in one or two
+ steps. Finally, it is scaled down with a standard |\resizebox| macro.
+ \begin{marker}
+ The used font has not to be scalable. Every box content is scaled down.
+ The aspect ratio cannot be fully garanteed.
+ \end{marker}
+ \item\docValue{areasize*}:\tcbdocmarginnote{\tcbdocnew{2014-10-29}}
+ The \docValue{areasize} algorithm is applied, but if the content was scaled
+ down and the resulting height is too small, the box is squeezed to fit the area.
+ \begin{marker}
+ The used font has not to be scalable. Every box content is scaled down.
+ The aspect ratio cannot be fully garanteed.
+ \end{marker}
+ \item\docValue{hybrid}:
+ First, this algorithm estimates the needed font size in one or two steps.
+ Then an \docValue{areasize} fitting as above is a applied.
+ \begin{marker}
+ The used font has to be freely scalable for this method!
+ Other content than text may be slightly rescaled.
+ The aspect ratio cannot be fully garanteed.
+ \end{marker}
+ \item\docValue{hybrid*}:\tcbdocmarginnote{\tcbdocnew{2014-10-29}}
+ First, this algorithm estimates the needed font size in one or two steps.
+ Then an \docValue{areasize*} fitting as above is a applied.
+ \begin{marker}
+ The used font has to be freely scalable for this method!
+ Other content than text may be slightly rescaled.
+ The aspect ratio cannot be fully garanteed.
+ \end{marker}
+ \item\docValue{squeeze}:
+ The text box is brutally scaled down to fit.
+ \begin{marker}
+ The aspect ratio is very likely to be horrible.
+ You should not use this method for final documents.
+ \end{marker}
+\end{itemize}
+
+
+\end{docTcbKey}
+\begin{dispExample}
+% \usepackage{lipsum}
+\newtcboxfit{mybox}[1]{colback=red!5!white,colframe=red!75!black,left=1mm,top=1mm,
+ bottom=1mm,right=1mm,boxsep=0mm,width=3.5cm,height=7cm,nobeforeafter,
+ before upper=\textcolor{blue}{\rule{5mm}{5mm}}\ ,
+ enhanced,watermark text={\tcbfitsteps},
+ fonttitle=\bfseries,adjusted title=#1,fit algorithm=#1}
+
+\mybox{fontsize}{\lipsum[2]}\hfill
+\mybox{hybrid}{\lipsum[2]}\hfill
+\mybox{areasize}{\lipsum[2]}\hfill
+\mybox{squeeze}{\lipsum[2]}
+
+Quality \dotfill versus \dotfill Speed
+\end{dispExample}
+
+
+\begin{dispExample}
+% \usepackage{lipsum}
+\newtcboxfit{mybox}[2]{colback=red!5!white,colframe=red!75!black,left=1mm,top=1mm,
+ size=tight,width=7.2cm,height=5cm,nobeforeafter,
+ before upper=\textcolor{blue}{\rule{5mm}{5mm}}\ ,
+ enhanced,fonttitle=\bfseries,adjusted title=#2,fit algorithm=#1}
+
+\mybox{hybrid}{hybrid (possible gap at end)}{\lipsum[1]}\hfill
+\mybox{hybrid*}{hybrid* (no gap but possibly squeezed)}{\lipsum[1]}
+\end{dispExample}
+
+
+\clearpage
+\begin{marker}
+The following options set control parameters for the fit algorithm.
+Mainly, they apply to the |fontsize| variant, see \refKey{/tcb/fit algorithm}.
+The options should be seen as experimental and are likely to change in future versions,
+if necessary.
+\end{marker}
+
+\begin{docTcbKey}{fit maxstep}{=\meta{number}}{no default, initially |20|}
+ Sets the maximal step size for the font size adjustment algorithm.
+ In normal situations, the algorithm stops before reaching the intial value of 20 steps.
+ If the box content does not shrink, this value prevents an endless loop.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{fit maxfontdiff}{=\meta{dimension}}{no default, initially |0.1pt|}
+ The algorithm stops, if the font size is determined within a deviation of
+ \meta{dimension}.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{fit maxfontdiffgap}{=\meta{dimension}}{no default, initially |1pt|}
+ The algorithm stops, if the number of lines is determined and the font size is
+ determined within a deviation of \meta{dimension}.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{fit maxwidthdiff}{=\meta{dimension}}{no default, initially |1pt|}
+ The algorithm stops, if the (optionally) flexible box width
+ is determined within a deviation of \meta{dimension}.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{fit maxwidthdiffgap}{=\meta{dimension}}{no default, initially |10pt|}
+ The algorithm stops, if the number of lines is determined and the (optionally) flexible box width
+ is determined within a deviation of \meta{dimension}.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{fit warning}{=\meta{value}}{no default, initially |off|}
+ Typically, the fit control algorithm constructs several auxiliary boxes
+ to determine the optimal one. If not switched off, the construction of
+ the auxiliary boxes may produce many |hbox| warnings. This option key
+ changes the |\hbadness| value.
+ \begin{itemize}
+ \item\docValue{off}: Most of |'Underfull \hbox'| and |'Overfull \hbox'| warnings are
+ switched off (including the ones for the finally used box).
+ \item\docValue{on}: All warnings for all auxiliary boxes are displayed.
+ \item\docValue{final}: Only warnings for the finally used box are displayed.
+ Note that an additional box has to be contructed for theses messages.
+ \end{itemize}
+\end{docTcbKey}
+
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.graphics.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.graphics.tex
new file mode 100644
index 0000000000..e99c8271b7
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.graphics.tex
@@ -0,0 +1,198 @@
+% !TeX root = tcolorbox.tex
+% include file of tcolorbox.tex (manual of the LaTeX package tcolorbox)
+\clearpage
+\section{Inclusion of Boxed Image Files}\label{sec:includegraphics}%
+\tcbset{external/prefix=external/graphics_}%
+The \mylib{skins} library adds some commands to conveniently include
+boxed image files.
+For the following macros and options, the \mylib{skins} library has to be loaded
+by a package option or inside the preamble by:
+\begin{dispListing}
+\tcbuselibrary{skins}
+\end{dispListing}
+
+See \Vref{sec:skins} for the documentation of all other options of the \mylib{skins} library.
+
+\subsection{Macros}
+
+\begin{docCommand}[doc new and updated={2014-11-14}{2016-07-13}]{tcbincludegraphics}{\oarg{options}\marg{file name}}
+ In principle, this macro includes an image file denoted by \meta{file name}
+ using the standard |\includegraphics| and puts it into a \refEnv{tcolorbox}.
+ The \meta{options} are |tcolorbox| keys to set up the colored box.
+ Use \refKey{/tcb/graphics options} to specify options for the underlying
+ |\includegraphics|.
+ Some |tcolorbox| option keys are automatically set, namely \refKey{/tcb/enhanced} and
+ options to center the image inside the box.
+
+ The sizing of the included image is done depending on the following:
+ \begin{itemize}
+ \item If a \refKey{/tcb/width} is specified, but no fixed \refKey{/tcb/height},
+ the image is sized to fill the inner width of the box. The height of the
+ box adapts to the image.
+ \item If a fixed \refKey{/tcb/height} is specified, the image is sized to fill
+ the fixed inner area of the box.
+ \item If the \refKey{/tcb/capture} mode \refKey{/tcb/hbox} is specified,
+ the image is sized according to given |\includegraphics| options only.
+ The box adapts to the image.
+ \end{itemize}
+
+\begin{dispExample}
+% \tcbuselibrary{raster}
+\begin{tcbraster}[raster columns=3,raster force size=false,size=fbox,
+ colframe=red!50!black,colback=red!20!black,
+ fonttitle=\bfseries,center title,drop fuzzy shadow]
+ \tcbincludegraphics[title=Normal]{goldshade.png}
+ \tcbincludegraphics[title=Fixed height,height=3cm]{goldshade.png}
+ \tcbincludegraphics[title=hbox mode,hbox,graphics options={width=3cm}]
+ {goldshade.png}
+\end{tcbraster}
+\end{dispExample}
+
+\clearpage
+The auxiliary macro \docAuxCommand{imagename} may be used inside
+\refCom{tcbincludegraphics} to display the name of the file.
+\docAuxCommand{imagename} is already partially detokenized and is allowed to
+contain special characters like the underscore. Note that an appropriate
+font is required to display such characters.
+%\docAuxCommand{imagepath}%
+
+\begin{dispExample}
+% \tcbuselibrary{raster}
+\begin{tcbraster}[size=fbox,
+ colframe=red!50!black,colback=red!20!black,
+ fonttitle=\bfseries\ttfamily,center title,drop fuzzy shadow]
+ \tcbincludegraphics[title=\imagename]{goldshade.png}
+ \tcbincludegraphics[finish={
+ \node[fill=white,fill opacity=0.5,text opacity=1]
+ at (frame.center) {\bfseries\ttfamily\imagename};}]{blueshade.png}
+\end{tcbraster}
+\end{dispExample}
+\end{docCommand}
+
+\clearpage
+\begin{docCommand}[doc new=2014-11-14]{tcbincludepdf}{\oarg{options}\marg{file name}}
+This is a generalized version of \refCom{tcbincludegraphics} which allows
+to include a complete PDF file denoted by \meta{file name}.
+Every page is boxed into an own \refEnv{tcolorbox} customized by the
+given \meta{options}. It is reasonable to put such a series of boxes
+inside a \refEnv{tcbraster} for alignment.
+
+Use \refKey{/tcb/graphics pages} to use a selection of pages instead of
+using the whole file.
+
+The auxiliary macro \docAuxCommand{imagepage} may be used inside
+\refCom{tcbincludepdf} to display the current page number.
+\end{docCommand}
+
+
+\begin{dispListing}
+% \tcbuselibrary{raster}
+\begin{tcbraster}[raster columns=3,colframe=blue,colback=white,
+ colbacktitle=blue!50!white,fonttitle=\small\bfseries\ttfamily,
+ left=0pt,right=0pt,top=0pt,bottom=0pt,boxsep=0pt,boxrule=0.6pt,
+ toptitle=1mm,bottomtitle=1mm,drop lifted shadow,center title,
+ graphics pages={1,...,6},title={\imagename\ [\imagepage]}]
+\tcbincludepdf{tcolorbox-example.pdf}
+\end{tcbraster}
+\end{dispListing}
+{\tcbusetemp}
+
+
+\clearpage
+\subsection{Option Keys}
+
+\begin{docTcbKey}[][doc new and updated={2014-11-14}{2018-03-18}]{graphics options}{=\meta{options}}{no default, initially empty}
+Used for \refCom{tcbincludegraphics} and \refCom{tcbincludepdf} to
+specify |\includegraphics| \meta{options}.
+
+\begin{dispExample}
+% \tcbuselibrary{raster}
+\begin{tcbraster}[raster columns=3,size=fbox,raster equal height,
+ colframe=red!50!black,colback=red!20!black,drop fuzzy shadow]
+ \tcbincludegraphics{goldshade.png}
+ \newcommand{\myangle}{angle=20}%
+ \tcbincludegraphics[graphics options=\myangle]{goldshade.png}
+ \tcbincludegraphics[graphics options={viewport=0cm 0cm 8cm 4cm,clip}]
+ {goldshade.png}
+\end{tcbraster}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2014-11-14]{graphics directory}{=\meta{directory}}{no default, initially empty}
+Used for \refCom{tcbincludegraphics} and \refCom{tcbincludepdf} to
+specify a file system \meta{directory} where the image files are located.
+\begin{dispListing}
+\tcbset{
+ graphics directory={.},
+ graphics directory={examples},
+ graphics directory={../../pictures},
+}
+\end{dispListing}
+\smallskip
+\begin{marker}
+The |\graphicspath| macro from the |graphics| package is superior to this option.
+\refKey{/tcb/graphics directory} may be used especially for
+\refCom{tcbincludepdf}.
+\end{marker}
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2014-11-14]{graphics pages}{=\meta{selection}}{no default, initially |1,...,|\cs{pdfpages}}
+Used for \refCom{tcbincludepdf} to specify a \meta{selection} of pages to be included.
+The largest page number is accessible by \docAuxCommand{pdfpages}.
+The \meta{selection} has to be given using the |\foreach| syntax of \tikzname.
+\begin{dispListing}
+\tcbset{
+ graphics pages={1,3,7},
+ graphics pages={1,...,10},
+ graphics pages={1,3,...,18},
+ graphics pages={100,...,\pdfpages},
+}
+\end{dispListing}
+\end{docTcbKey}
+
+\clearpage
+
+
+\begin{docTcbKey}[][doc new=2018-03-21]{graphics orientation}{=\meta{orientation}}{no default, initially |as-is|}
+ Used for \refCom{tcbincludegraphics} and \refCom{tcbincludepdf} to
+ guarantee a certain \meta{orientation} of the included image.
+ After all other options for the image are processed, the result is possibly
+ rotated to be in landscape or portrait mode.
+
+ Feasible values for \meta{orientation} are:
+ \begin{itemize}
+ \item\docValue{as-is}: no rotation of the processed image.
+ \item\docValue{landscape}:
+ the processed image is possibly rotated by 90 degrees
+ to ensure that the final width is not smaller than the final height.
+ \item\docValue{landscape*}:
+ the processed image is possibly rotated by -90 degrees
+ to ensure that the final width is not smaller than the final height.
+ \item\docValue{portrait}:
+ the processed image is possibly rotated by 90 degrees
+ to ensure that the final height is not smaller than the final width.
+ \item\docValue{portrait*}:
+ the processed image is possibly rotated by -90 degrees
+ to ensure that the final height is not smaller than the final width.
+ \end{itemize}
+
+\begin{dispExample}
+% \tcbuselibrary{raster}
+\begin{tcbraster}[raster columns=6,size=fbox,raster equal height,
+ colframe=red!50!black,colback=red!20!black,drop fuzzy shadow]
+ \tcbincludegraphics{Basilica_5.png}
+ \tcbincludegraphics[graphics orientation=landscape]{Basilica_5.png}
+ \tcbincludegraphics[graphics orientation=portrait]{Basilica_5.png}
+ \tcbincludegraphics[graphics orientation=portrait*]{Basilica_5.png}
+ \tcbincludegraphics[graphics options={viewport=0cm 0cm 2cm 3cm,clip}]
+ {goldshade.png}
+ \tcbincludegraphics[graphics options={viewport=0cm 0cm 2cm 3cm,clip},
+ graphics orientation=landscape]{goldshade.png}
+\end{tcbraster}
+\end{dispExample}
+
+
+\end{docTcbKey}
+
+
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.hooks.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.hooks.tex
new file mode 100644
index 0000000000..b5e37eee98
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.hooks.tex
@@ -0,0 +1,577 @@
+% !TeX root = tcolorbox.tex
+% include file of tcolorbox.tex (manual of the LaTeX package tcolorbox)
+\clearpage
+\section{Library \mylib{hooks}}\label{sec:hooks}%
+\tcbset{external/prefix=external/hooks_}%
+The library is loaded by a package option or inside the preamble by:
+\begin{dispListing}
+\tcbuselibrary{hooks}
+\end{dispListing}
+
+For the skin related options, the library \mylib{skins} has to be loaded
+separately.
+
+
+\subsection{Concept of Hooks}
+A hook is a placeholder in some \LaTeX\ code where additional code
+can be added. For example, the \LaTeX\ macro |\AtBeginDocument| adds code to a
+hook which is placed at the beginning of every document.
+
+Several option keys of |tcolorbox| allow providing some code which is
+added to specific places of a colored box. For example, \refKey{/tcb/before upper}
+places code before the content of the upper part. A following usage of this
+key overwrites any prior settings.
+
+The library \mylib{hooks} extends \refKey{/tcb/before upper} and several more
+existing keys to 'hookable' versions, e.\,g.\
+\refKey{/tcb/before upper app} and \refKey{/tcb/before upper pre}.
+The 'hookable' keys don't overwrite prior settings but either \emph{app}end
+or \emph{pre}pend the newly given code to the existing code.
+
+The general naming convention (with some small exceptions) is:
+\begin{itemize}
+\item \meta{option key} |app|: works like \meta{option key} but
+ \emph{app}ends its code to the existing code.
+\item \meta{option key} |pre|: works like \meta{option key} but
+ \emph{pre}pends its code to the existing code.
+\end{itemize}
+If the original \meta{option key} is used (again), all code will be overwritten.
+Therefore, the order of the option key usage is crucial.
+
+
+
+\begin{dispExample}
+% \usepackage{array,tabularx}
+\newcolumntype{Y}{>{\raggedleft\arraybackslash}X}% see tabularx
+\tcbset{enhanced,fonttitle=\bfseries\large,fontupper=\normalsize\sffamily,
+ colback=yellow!10!white,colframe=red!50!black,colbacktitle=Salmon!30!white,
+ coltitle=black,center title,
+ tabularx={X||Y|Y|Y|Y||Y},% this sets 'before upper' and 'after upper'
+ before upper app={Group & One & Two & Three & Four & Sum\\\hline\hline} }
+
+\begin{tcolorbox}[title=My table]
+Red & 1000.00 & 2000.00 & 3000.00 & 4000.00 & 10000.00\\\hline
+Green & 2000.00 & 3000.00 & 4000.00 & 5000.00 & 14000.00\\\hline
+Blue & 3000.00 & 4000.00 & 5000.00 & 6000.00 & 18000.00\\\hline\hline
+Sum & 6000.00 & 9000.00 & 12000.00 & 15000.00 & 42000.00
+\end{tcolorbox}
+\end{dispExample}
+
+
+
+\clearpage
+\subsection{Box Content Additions}\label{subsec:hookscontentadditions}
+The following option keys extend the options given in Subsection \ref{subsec:contentadditions}
+from page \pageref{subsec:contentadditions}.
+
+\begin{docTcbKey}{before title app}{=\meta{code}}{no default}
+ Appends the given \meta{code} to \refKey{/tcb/before title} \emph{after} the color and font settings
+ and \emph{before} the content of the title.
+\end{docTcbKey}
+
+\begin{docTcbKey}{before title pre}{=\meta{code}}{no default}
+ Prepends the given \meta{code} to \refKey{/tcb/before title} \emph{after} the color and font settings
+ and \emph{before} the content of the title.
+\end{docTcbKey}
+
+\begin{docTcbKey}{after title app}{=\meta{code}}{no default}
+ Appends the given \meta{code} to \refKey{/tcb/after title} \emph{after} the content of the title.
+\end{docTcbKey}
+
+\begin{docTcbKey}{after title pre}{=\meta{code}}{no default}
+ Prepends the given \meta{code} to \refKey{/tcb/after title} \emph{after} the content of the title.
+\end{docTcbKey}
+
+\begin{docTcbKey}{before upper app}{=\meta{code}}{no default}
+ Appends the given \meta{code} to \refKey{/tcb/before upper} or \refKey{/tcb/before upper*} \emph{after} the color and font settings
+ and \emph{before} the content of the upper part.
+\end{docTcbKey}
+
+\begin{docTcbKey}{before upper pre}{=\meta{code}}{no default}
+ Prepends the given \meta{code} to \refKey{/tcb/before upper} or \refKey{/tcb/before upper*} \emph{after} the color and font settings
+ and \emph{before} the content of the upper part.
+\end{docTcbKey}
+
+\begin{docTcbKey}{after upper app}{=\meta{code}}{no default}
+ Appends the given \meta{code} to \refKey{/tcb/after upper} or \refKey{/tcb/after upper*} \emph{after} the content of the upper part.
+\end{docTcbKey}
+
+\begin{docTcbKey}{after upper pre}{=\meta{code}}{no default}
+ Prepends the given \meta{code} to \refKey{/tcb/after upper} or \refKey{/tcb/after upper*} \emph{after} the content of the upper part.
+\begin{dispExample}
+% \tcbuselibrary{theorems}
+
+\begin{tcolorbox}[
+ ams align,% this sets 'before upper*' and 'after upper*'
+ colback=yellow!10!white,colframe=red!50!black,
+ before upper app={\frac{2}{\sqrt{2}}&=\sqrt{2}.\\},
+ after upper pre={\\\sin\left(\frac{\pi}{2}\right)&=1.},
+]
+ \sum\limits_{n=1}^{\infty} \frac{1}{n} &= \infty.\\
+ \int x^2 ~\text{d}x &= \frac13 x^3 + c.
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}{before lower app}{=\meta{code}}{no default}
+ Appends the given \meta{code} to \refKey{/tcb/before lower} or \refKey{/tcb/before lower*} \emph{after} the color and font settings
+ and \emph{before} the content of the lower part.
+\end{docTcbKey}
+
+\begin{docTcbKey}{before lower pre}{=\meta{code}}{no default}
+ Prepends the given \meta{code} to \refKey{/tcb/before lower} or \refKey{/tcb/before lower*} \emph{after} the color and font settings
+ and \emph{before} the content of the lower part.
+\end{docTcbKey}
+
+\begin{docTcbKey}{after lower app}{=\meta{code}}{no default}
+ Appends the given \meta{code} to \refKey{/tcb/after lower} or \refKey{/tcb/after lower*} \emph{after} the content of the lower part.
+\end{docTcbKey}
+
+\begin{docTcbKey}{after lower pre}{=\meta{code}}{no default}
+ Prepends the given \meta{code} to \refKey{/tcb/after lower} or \refKey{/tcb/after lower*} \emph{after} the content of the lower part.
+\end{docTcbKey}
+
+
+\subsection{Embedding into the Surroundings}
+The following option keys extend the options given in Subsection \ref{subsec:surroundings}
+from page \pageref{subsec:surroundings}.
+
+\begin{marker}
+The 'hookable' versions are usable inside the document.
+In the preamble, they can only be used after explicit setting of
+\refKey{/tcb/before} and \refKey{/tcb/after} or by e.\,g.\ \refKey{/tcb/parskip}.
+\end{marker}
+
+\begin{docTcbKey}{before app}{=\meta{code}}{no default}
+ Appends the given \meta{code} to \refKey{/tcb/before} before the colored box.
+\end{docTcbKey}
+
+\begin{docTcbKey}{before pre}{=\meta{code}}{no default}
+ Prepends the given \meta{code} to \refKey{/tcb/before} before the colored box.
+\end{docTcbKey}
+
+\begin{docTcbKey}{after app}{=\meta{code}}{no default}
+ Appends the given \meta{code} to \refKey{/tcb/after} after the colored box.
+\end{docTcbKey}
+
+\begin{docTcbKey}{after pre}{=\meta{code}}{no default}
+ Prepends the given \meta{code} to \refKey{/tcb/after} after the colored box.
+\end{docTcbKey}
+
+\begin{dispExample}
+\tcbset{colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries}
+
+\begin{tcolorbox}[title=My title,before app={The box follows:\\[4pt]},
+ after app={This is the end.}]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{dispExample}
+
+
+\clearpage
+\subsection{Overlays}
+The following option keys extend the options given in Subsection \ref{subsec:overlays}
+from page \pageref{subsec:overlays}.
+
+\begin{docTcbKey}{overlay app}{=\meta{graphical code}}{no default}
+ Appends the given \meta{graphical code} to \refKey{/tcb/overlay}.
+
+
+\begin{dispExample}
+% \usetikzlibrary{patterns} % preamble
+% \tcbuselibrary{skins} % preamble
+\tcbset{frogbox/.style={enhanced,colback=green!10,colframe=green!65!black,
+ enlarge top by=5.5mm,
+ overlay={\foreach \x in {2cm,3.5cm} {
+ \begin{scope}[shift={([xshift=\x]frame.north west)}]
+ \path[draw=green!65!black,fill=green!10,line width=1mm] (0,0) arc (0:180:5mm);
+ \path[fill=black] (-0.2,0) arc (0:180:1mm);
+ \end{scope}}}]}}
+\tcbset{ribbon/.style={overlay app={%
+ \path[fill=blue!75!white,draw=blue,double=white!85!blue,
+ preaction={opacity=0.6,fill=blue!75!white},
+ line width=0.1mm,double distance=0.2mm,
+ pattern=fivepointed stars,pattern color=white!75!blue]
+ ([xshift=-0.2mm,yshift=-1.02cm]frame.north east)
+ -- ++(-1,1) -- ++(-0.5,0) -- ++(1.5,-1.5) -- cycle;}}}
+
+\begin{tcolorbox}[frogbox,title=My title]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+
+\begin{tcolorbox}[frogbox,ribbon,title=My title]
+This is a \textbf{tcolorbox}.\par
+Here, we apply a second overlay.
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}{overlay pre}{=\meta{graphical code}}{no default}
+ Prepends the given \meta{graphical code} to \refKey{/tcb/overlay}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{overlay unbroken app}{=\meta{graphical code}}{no default}
+ Appends the given \meta{graphical code} to \refKey{/tcb/overlay unbroken}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{overlay unbroken pre}{=\meta{graphical code}}{no default}
+ Prepends the given \meta{graphical code} to \refKey{/tcb/overlay unbroken}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{overlay first app}{=\meta{graphical code}}{no default}
+ Appends the given \meta{graphical code} to \refKey{/tcb/overlay first}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{overlay first pre}{=\meta{graphical code}}{no default}
+ Prepends the given \meta{graphical code} to \refKey{/tcb/overlay first}.
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}{overlay middle app}{=\meta{graphical code}}{no default}
+ Appends the given \meta{graphical code} to \refKey{/tcb/overlay middle}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{overlay middle pre}{=\meta{graphical code}}{no default}
+ Prepends the given \meta{graphical code} to \refKey{/tcb/overlay middle}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{overlay last app}{=\meta{graphical code}}{no default}
+ Appends the given \meta{graphical code} to \refKey{/tcb/overlay last}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{overlay last pre}{=\meta{graphical code}}{no default}
+ Prepends the given \meta{graphical code} to \refKey{/tcb/overlay last}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{overlay broken app}{=\meta{graphical code}}{no default}
+ Appends the given \meta{graphical code} to \refKey{/tcb/overlay broken}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{overlay broken pre}{=\meta{graphical code}}{no default}
+ Prepends the given \meta{graphical code} to \refKey{/tcb/overlay broken}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{overlay unbroken and first app}{=\meta{graphical code}}{no default}
+ Appends the given \meta{graphical code} to \refKey{/tcb/overlay unbroken and first}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{overlay unbroken and first pre}{=\meta{graphical code}}{no default}
+ Prepends the given \meta{graphical code} to \refKey{/tcb/overlay unbroken and first}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{overlay middle and last app}{=\meta{graphical code}}{no default}
+ Appends the given \meta{graphical code} to \refKey{/tcb/overlay middle and last}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{overlay middle and last pre}{=\meta{graphical code}}{no default}
+ Prepends the given \meta{graphical code} to \refKey{/tcb/overlay middle and last}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{overlay unbroken and last app}{=\meta{graphical code}}{no default}
+ Appends the given \meta{graphical code} to \refKey{/tcb/overlay unbroken and last}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{overlay unbroken and last pre}{=\meta{graphical code}}{no default}
+ Prepends the given \meta{graphical code} to \refKey{/tcb/overlay unbroken and last}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2014-09-19]{overlay first and middle app}{=\meta{graphical code}}{no default}
+ Appends the given \meta{graphical code} to \refKey{/tcb/overlay first and middle}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2014-09-19]{overlay first and middle pre}{=\meta{graphical code}}{no default}
+ Prepends the given \meta{graphical code} to \refKey{/tcb/overlay first and middle}.
+\end{docTcbKey}
+
+
+\clearpage
+\subsection{Watermarks}
+The following option keys extend the options given in Subsection \ref{subsec:watermarks}
+from page \pageref{subsec:watermarks}.
+
+\begin{marker}
+Watermarks are special overlays. The \mylib{hooks} library allows the combination
+of several watermarks and overlays.
+\end{marker}
+
+\begin{docTcbKey}{watermark text app}{=\meta{text}}{no default}
+ Appends a \refKey{/tcb/watermark text} to the colored box.
+\begin{dispExample}
+\tcbset{colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries}
+
+\begin{tcolorbox}[enhanced,title=My title,watermark graphics=Basilica_5.png,
+ watermark opacity=0.25,
+ watermark text app=Basilica,watermark color=Navy
+ ]
+\lipsum[1-2]
+\tcblower
+This example uses a public domain picture from\\
+\url{http://commons.wikimedia.org/wiki/File:Basilica_5.png}
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}{watermark text pre}{=\meta{text}}{no default}
+ Prepends a \refKey{/tcb/watermark text} to the colored box.
+\end{docTcbKey}
+
+\begin{docTcbKey}{watermark text app on}{=\meta{part} is \meta{text}}{no default}
+ Appends a \refKey{/tcb/watermark text on} the named \meta{part} of a break sequence.
+\end{docTcbKey}
+
+\begin{docTcbKey}{watermark text pre on}{=\meta{part} is \meta{text}}{no default}
+ Prepends a \refKey{/tcb/watermark text on} the named \meta{part} of a break sequence.
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}{watermark graphics app}{=\meta{file name}}{no default}
+ Appends a \refKey{/tcb/watermark graphics} referenced by \meta{file name} to the colored box.
+\end{docTcbKey}
+
+\begin{docTcbKey}{watermark graphics pre}{=\meta{file name}}{no default}
+ Prepends a \refKey{/tcb/watermark graphics} referenced by \meta{file name} to the colored box.
+\end{docTcbKey}
+
+\begin{docTcbKey}{watermark graphics app on}{=\meta{part} is \meta{file name}}{no default}
+ Appends a \refKey{/tcb/watermark graphics on} the named \meta{part} of a break sequence.
+ The picture is referenced by \meta{file name}.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{watermark graphics pre on}{=\meta{part} is \meta{file name}}{no default}
+ Prepends a \refKey{/tcb/watermark graphics on} the named \meta{part} of a break sequence.
+ The picture is referenced by \meta{file name}.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{watermark tikz app}{=\meta{graphical code}}{no default}
+ Appends a \refKey{/tcb/watermark tikz} with the given |tikz| \meta{graphical code} to the colored box.
+\end{docTcbKey}
+
+\begin{docTcbKey}{watermark tikz pre}{=\meta{graphical code}}{no default}
+ Prepends a \refKey{/tcb/watermark tikz} with the given |tikz| \meta{graphical code} to the colored box.
+
+\begin{dispExample}
+% \usepackage{tikz}
+\tcbset{colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries,
+ watermark color=Navy,watermark opacity=0.25,
+ smiley/.style={watermark tikz pre={%
+ \path[fill=yellow,draw=yellow!75!red] (0,0) circle (1cm);
+ \fill[red] (45:5mm) circle (1mm);
+ \fill[red] (135:5mm) circle (1mm);
+ \draw[line width=1mm,red] (215:5mm) arc (215:325:5mm);}}}
+
+\begin{tcolorbox}[enhanced,title=My title, watermark text=Watermark,
+ smiley]
+\lipsum[1-2]
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}{watermark tikz app on}{=\meta{part} is \meta{graphical code}}{no default}
+ Appends a \refKey{/tcb/watermark tikz on} the named \meta{part} of a break sequence.
+\end{docTcbKey}
+
+\begin{docTcbKey}{watermark tikz pre on}{=\meta{part} is \meta{graphical code}}{no default}
+ Prepends a \refKey{/tcb/watermark tikz on} the named \meta{part} of a break sequence.
+\end{docTcbKey}
+
+
+\clearpage
+\subsection{Underlays}
+The following option keys extend the options given in \Vref{subsec:skinunderlay}.
+There are no |app| type keys since underlays are stackable by default.
+
+\begin{docTcbKey}{underlay pre}{=\meta{graphical code}}{no default}
+ Prepends the given \meta{graphical code} to \refKey{/tcb/underlay}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{underlay unbroken pre}{=\meta{graphical code}}{no default}
+ Prepends the given \meta{graphical code} to \refKey{/tcb/underlay unbroken}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{underlay first pre}{=\meta{graphical code}}{no default}
+ Prepends the given \meta{graphical code} to \refKey{/tcb/underlay first}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{underlay middle pre}{=\meta{graphical code}}{no default}
+ Prepends the given \meta{graphical code} to \refKey{/tcb/underlay middle}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{underlay last pre}{=\meta{graphical code}}{no default}
+ Prepends the given \meta{graphical code} to \refKey{/tcb/underlay last}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{underlay boxed title pre}{=\meta{graphical code}}{no default}
+ Prepends the given \meta{graphical code} to \refKey{/tcb/underlay boxed title}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{underlay broken pre}{=\meta{graphical code}}{no default}
+ Prepends the given \meta{graphical code} to \refKey{/tcb/underlay broken}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{underlay unbroken and first pre}{=\meta{graphical code}}{no default}
+ Prepends the given \meta{graphical code} to \refKey{/tcb/underlay unbroken and first}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{underlay middle and last pre}{=\meta{graphical code}}{no default}
+ Prepends the given \meta{graphical code} to \refKey{/tcb/underlay middle and last}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{underlay unbroken and last pre}{=\meta{graphical code}}{no default}
+ Prepends the given \meta{graphical code} to \refKey{/tcb/underlay unbroken and last}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2014-09-19]{underlay first and middle pre}{=\meta{graphical code}}{no default}
+ Prepends the given \meta{graphical code} to \refKey{/tcb/underlay first and middle}.
+\end{docTcbKey}
+
+
+\clearpage
+\subsection{Finishes}
+The following option keys extend the options given in \Vref{subsec:skinfinish}.
+There are no |app| type keys since finishes are stackable by default.
+
+\begin{docTcbKey}{finish pre}{=\meta{graphical code}}{no default}
+ Prepends the given \meta{graphical code} to \refKey{/tcb/finish}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{finish unbroken pre}{=\meta{graphical code}}{no default}
+ Prepends the given \meta{graphical code} to \refKey{/tcb/finish unbroken}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{finish first pre}{=\meta{graphical code}}{no default}
+ Prepends the given \meta{graphical code} to \refKey{/tcb/finish first}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{finish middle pre}{=\meta{graphical code}}{no default}
+ Prepends the given \meta{graphical code} to \refKey{/tcb/finish middle}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{finish last pre}{=\meta{graphical code}}{no default}
+ Prepends the given \meta{graphical code} to \refKey{/tcb/finish last}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{finish broken pre}{=\meta{graphical code}}{no default}
+ Prepends the given \meta{graphical code} to \refKey{/tcb/finish broken}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{finish unbroken and first pre}{=\meta{graphical code}}{no default}
+ Prepends the given \meta{graphical code} to \refKey{/tcb/finish unbroken and first}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{finish middle and last pre}{=\meta{graphical code}}{no default}
+ Prepends the given \meta{graphical code} to \refKey{/tcb/finish middle and last}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{finish unbroken and last pre}{=\meta{graphical code}}{no default}
+ Prepends the given \meta{graphical code} to \refKey{/tcb/finish unbroken and last}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2014-09-19]{finish first and middle pre}{=\meta{graphical code}}{no default}
+ Prepends the given \meta{graphical code} to \refKey{/tcb/finish first and middle}.
+\end{docTcbKey}
+
+
+\subsection{Skin Code}
+The following option keys extend the options given in Subsection \ref{subsec:addcodeoptions}
+from page \pageref{subsec:addcodeoptions}.
+
+\begin{docTcbKey}{frame code app}{=\meta{graphical code}}{no default}
+ Appends the given \meta{graphical code} to \refKey{/tcb/frame code}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{frame code pre}{=\meta{graphical code}}{no default}
+ Prepends the given \meta{graphical code} to \refKey{/tcb/frame code}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{interior titled code app}{=\meta{graphical code}}{no default}
+ Appends the given \meta{graphical code} to \refKey{/tcb/interior titled code}.
+\begin{dispExample}
+\begin{tcolorbox}[title=My title,enhanced,colframe=Navy,
+ frame code app={\draw[yellow,line width=1cm] (
+ frame.south west)--(frame.north east);},
+ interior titled code app={\draw[red,line width=1cm]
+ (frame.north west)--(frame.south east);},
+ ]
+\lipsum[1]
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}{interior titled code pre}{=\meta{graphical code}}{no default}
+ Prepends the given \meta{graphical code} to \refKey{/tcb/interior titled code}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{interior code app}{=\meta{graphical code}}{no default}
+ Appends the given \meta{graphical code} to \refKey{/tcb/interior code}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{interior code pre}{=\meta{graphical code}}{no default}
+ Prepends the given \meta{graphical code} to \refKey{/tcb/interior code}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{segmentation code app}{=\meta{graphical code}}{no default}
+ Appends the given \meta{graphical code} to \refKey{/tcb/segmentation code}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{segmentation code pre}{=\meta{graphical code}}{no default}
+ Prepends the given \meta{graphical code} to \refKey{/tcb/segmentation code}.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{title code app}{=\meta{graphical code}}{no default}
+ Appends the given \meta{graphical code} to \refKey{/tcb/title code}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{title code pre}{=\meta{graphical code}}{no default}
+ Prepends the given \meta{graphical code} to \refKey{/tcb/title code}.
+\end{docTcbKey}
+
+
+\clearpage
+\subsection{Extras}
+The following option keys extend the options given in \Vref{subsec:extras}.
+There are no |app| type keys since extras are stackable by default.
+
+\begin{docTcbKey}[][doc new=2015-07-16]{extras pre}{=\marg{options}}{no default}
+ Prepends the given \meta{options} to \refKey{/tcb/extras}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2015-07-16]{extras unbroken pre}{=\marg{options}}{no default}
+ Prepends the given \meta{options} to \refKey{/tcb/extras unbroken}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2015-07-16]{extras first pre}{=\marg{options}}{no default}
+ Prepends the given \meta{options} to \refKey{/tcb/extras first}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2015-07-16]{extras middle pre}{=\marg{options}}{no default}
+ Prepends the given \meta{options} to \refKey{/tcb/extras middle}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2015-07-16]{extras last pre}{=\marg{options}}{no default}
+ Prepends the given \meta{options} to \refKey{/tcb/extras last}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2015-07-16]{extras broken pre}{=\marg{options}}{no default}
+ Prepends the given \meta{options} to \refKey{/tcb/extras broken}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2015-07-16]{extras unbroken and first pre}{=\marg{options}}{no default}
+ Prepends the given \meta{options} to \refKey{/tcb/extras unbroken and first}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2015-07-16]{extras middle and last pre}{=\marg{options}}{no default}
+ Prepends the given \meta{options} to \refKey{/tcb/extras middle and last}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2015-07-16]{extras unbroken and last pre}{=\marg{options}}{no default}
+ Prepends the given \meta{options} to \refKey{/tcb/extras unbroken and last}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2015-07-16]{extras first and middle pre}{=\marg{options}}{no default}
+ Prepends the given \meta{options} to \refKey{/tcb/extras first and middle}.
+\end{docTcbKey}
+
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.index.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.index.tex
new file mode 100644
index 0000000000..8348f4a842
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.index.tex
@@ -0,0 +1,3 @@
+% !TeX root = tcolorbox.tex
+% include file of tcolorbox.tex (manual of the LaTeX package tcolorbox)
+\printindex
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.initoptions.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.initoptions.tex
new file mode 100644
index 0000000000..b2b742409c
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.initoptions.tex
@@ -0,0 +1,345 @@
+% !TeX root = tcolorbox.tex
+% include file of tcolorbox.tex (manual of the LaTeX package tcolorbox)
+\clearpage
+\section{Initialization Option Keys}\label{sec:initkeys}%
+\tcbset{external/prefix=external/initoptions_}%
+The \emph{initialization} options are only applicable for the generation
+of new environments and commands based on |tcolorbox| and friends.
+Particularly, they can be used for
+\begin{itemize}
+\item\refCom{newtcolorbox},
+\item\refCom{newtcbox},
+\item\refCom{newtcblisting},
+\item\refCom{newtcbinputlisting},
+\item\refCom{newtcbtheorem}, and
+\item\refCom{newtcboxfit}.
+\end{itemize}
+
+\bigskip
+\begin{marker}
+Typically, these options may generate counters and alike.
+It is \textbf{strongly} recommended that you use initialization options inside
+the preamble only. Otherwise, you may get trouble when using \LaTeX's |\include| features.
+\end{marker}
+
+
+\subsection{Numbered Boxes}\label{sec:numberedboxes}
+Counters assigned using the initialization options are administrated
+automatically. Especially, they are increased for each new box.
+Independent from the real counter name, the counter value can be
+referenced by \docAuxCommand{thetcbcounter}, e.\,g.\ inside the title of
+the box. The real counter name is stored inside \docAuxCommand{tcbcounter}.
+
+\begin{newTcbKey}{auto counter}{}{no value, initially unset}
+Creates a new counter automatically.
+With \refKey{/tcb/new/number format} and
+\refKey{/tcb/new/number within}, the appearance and behavior of the counter
+can be changed. The counter value is referenced by \docAuxCommand{thetcbcounter}.
+
+\inputpreamblelisting{A}
+
+\begin{dispExample}
+\begin{pabox}[label={myautocounter}]{Title with number}
+This box is automatically numbered with \ref{myautocounter} on page
+\pageref{myautocounter}. Inside the box, the \thetcbcounter\ can
+also be referenced by |\thetcbcounter|.
+The real counter name is \texttt{\tcbcounter}.
+\end{pabox}
+\end{dispExample}
+\end{newTcbKey}
+
+\clearpage
+\begin{newTcbKey}{use counter from}{=\meta{tcolorbox}}{no default, initially unset}
+Here, a counter from another \meta{tcolorbox} is reused.
+Note that the settings for \refKey{/tcb/new/number format} and
+\refKey{/tcb/new/number within} are inherited and cannot be changed.
+The counter value is referenced by \docAuxCommand{thetcbcounter}.
+
+\begin{dispExample}
+\newtcolorbox[use counter from=pabox]{mybox}[2][]{%
+colback=blue!5!white,colframe=blue!75!black,fonttitle=\bfseries,
+title=Some Box \thetcbcounter: #2,#1}
+
+\begin{mybox}[label={myusecounterfrom}]{Title with continued number}
+This box is automatically numbered with \ref{myusecounterfrom} on page
+\pageref{myusecounterfrom}. Inside the box, the \thetcbcounter\ can
+also be referenced by |\thetcbcounter|.
+The real counter name is \texttt{\tcbcounter}.
+\end{mybox}
+\end{dispExample}
+\end{newTcbKey}
+
+
+\begin{newTcbKey}{use counter}{=\meta{counter}}{no default, initially unset}
+Here, an ordinary existing \LaTeX\ \meta{counter} is used for numbering.
+With \refKey{/tcb/new/number format} and
+\refKey{/tcb/new/number within}, the appearance and behavior of the counter
+can be changed. The counter value is referenced by \docAuxCommand{thetcbcounter}.
+
+\begin{dispExample}
+% \newcounter{myexample}% preamble
+\newtcolorbox[use counter=myexample,number format=\Alph]{mybox}[2][]{%
+colback=green!5!white,colframe=green!55!black,fonttitle=\bfseries,
+title=Some Box \thetcbcounter: #2,#1}
+
+\begin{mybox}[label={myusecounter}]{Title with \LaTeX\ number}
+This box is automatically numbered with \ref{myusecounter} on page
+\pageref{myusecounter}. Inside the box, the \thetcbcounter\ can
+also be referenced by |\thetcbcounter|.
+The real counter name is \texttt{\tcbcounter}.
+\end{mybox}
+\end{dispExample}
+\end{newTcbKey}
+
+
+\begin{newTcbKey}[][doc new=2014-09-19]{use counter*}{=\meta{counter}}{no default, initially unset}
+An existing \LaTeX\ \meta{counter} is used for numbering. In contrast to
+\refKey{/tcb/new/use counter}, the options \refKey{/tcb/new/number format} and
+\refKey{/tcb/new/number within} are ignored. Use this for counters which
+are already configured outside the |tcolorbox| package, e.\,g.\ the standard
+|figure| counter.
+\end{newTcbKey}
+
+
+\begin{newTcbKey}{no counter}{}{no value, initially set}
+The created boxes are not numbered. This is the default. The option may
+be used to overrule a previous option.
+\end{newTcbKey}
+
+\clearpage
+\begin{newTcbKey}{number within}{=\meta{counter}}{no default, initially unset}
+The automatic counter is set to zero, if \meta{counter} is increased.
+Additionally, during output, the value of \meta{counter} is prepended to the value of
+the automatic counter.\par
+To prepend the automatic counter with the chapter number and to reset it
+with every new chapter, use:
+\begin{dispListing}
+number within=chapter
+\end{dispListing}
+See \refKey{/tcb/new/use counter} for a complete example.
+\end{newTcbKey}
+
+
+\begin{newTcbKey}{number format}{=\meta{format macro}}{no default, initially \texttt{\textbackslash arabic}}
+Declares the format of the automatic counter. The \meta{format macro} can be
+any valid \LaTeX\ number formatting macro like |\arabic|, |\roman|, etc.\par
+To display the counter value in large roman numbers, use:
+\begin{dispListing}
+number format=\Roman
+\end{dispListing}
+See \refKey{/tcb/new/auto counter} for a complete example.
+\end{newTcbKey}
+
+
+\begin{newTcbKey}{number freestyle}{=\meta{code}}{no default, initially unset}
+Allows advanced control over the complete number format. This option overrules
+the format given by \refKey{/tcb/new/number within} and \refKey{/tcb/new/number format}.
+Nevertheless, you can combine it with \refKey{/tcb/new/number within} to
+get the desired reset property.\par
+The \meta{code} is some formatting code which should contain |\tcbcounter| to
+reference the automated counter. Since this \meta{code} is expanded, you have
+to secure each macro with |\noexpand| with \emph{exception} of |\tcbcounter|.
+
+\inputpreamblelisting{H}
+
+\begin{dispExample}
+\begin{phbox}[label={myfreestyle}]{Title with freestyle number}
+This box is automatically numbered with \ref{myfreestyle} on page
+\pageref{myfreestyle}. Inside the box, the \thetcbcounter\ can
+also be referenced by |\thetcbcounter|.
+The real counter name is \texttt{\tcbcounter}.
+\end{phbox}
+\end{dispExample}
+\end{newTcbKey}
+
+\clearpage
+\begin{marker}
+The following options \refKey{/tcb/new/crefname} and \refKey{/tcb/new/Crefname}
+need to be set inside the preamble.
+\end{marker}
+
+\begin{newTcbKey}[][doc updated=2014-12-01]{crefname}{=\marg{singular}\marg{plural}}{no default, initially unset}
+ This option key can be used only in conjunction with the |cleveref| package
+ \cite{cubitt:2018a} which has to be loaded separately.
+ It creates a cross-reference type for the new |tcolorbox|'es, where the
+ lowercase \meta{singular} and \meta{plural} forms of the cross-reference are given.
+ This type is the environment or macro name and \refKey{/tcb/label type} is set automatically.
+ See \refKey{/tcb/label type} and \cite{cubitt:2018a} for more information.
+\end{newTcbKey}
+
+
+\begin{newTcbKey}[][doc updated=2014-12-01]{Crefname}{=\marg{singular}\marg{plural}}{no default, initially unset}
+ This option key can be used only in conjunction with the |cleveref| package
+ \cite{cubitt:2018a} which has to be loaded separately.
+ It creates a cross-reference type for the new |tcolorbox|'es, where the
+ uppercase \meta{singular} and \meta{plural} forms of the cross-reference are given.
+ This type is the environment or macro name and \refKey{/tcb/label type} is set automatically.
+ See \refKey{/tcb/label type} and \cite{cubitt:2018a} for more information.
+\end{newTcbKey}
+
+\inputpreamblelisting{I}
+\begin{dispExample}
+% \usepackage{varioref}
+% \usepackage{cleveref}
+\begin{mybluebox}[label={myreference}]{My title}
+This is an example.
+\end{mybluebox}
+
+\Cref{myreference}, \cref{myreference}.\\
+\Cpageref{myreference}, \cpageref{myreference}.\\
+\nameCref{myreference}, \namecref{myreference}.\\
+\labelcref{myreference}, \labelcpageref{myreference}.\\
+With \texttt{varioref}:\\
+\Vref{myreference}, \vref{myreference}.\\
+\Vref*{myreference}, \vref*{myreference}.
+\end{dispExample}
+
+\clearpage
+
+\begin{newTcbKey}[][doc new=2014-09-19]{blend into}{=\meta{name}}{style, no default, initially unset}
+Used to comfortably blend into an existing schema of naming and numbering for
+some selected cases. For example, a |tcolorbox| can be used to display
+and entitle an image pretending to be a standard |figure| environment.
+Here, \refKey{/tcb/title} is used instead of the standard |\caption|
+and \refKey{/tcb/list text} can be used instead of the optional parameter
+of the standard |\caption|.
+
+Feasible values for \meta{name} are:
+\begin{itemize}
+\item\docValue{figures}: blend into the standard |figure| environment.
+\item\docValue{tables}: blend into the standard |table| environment.
+\item\docValue{listings}: blend into the standard |lstlisting| environment
+ of the package |listings| \cite{hoffmann:2018a}.
+ \begin{marker}
+ Note that |blend into=listings| can only be used in the document content
+ or, preferably, inside a |\AtBeginDocument| clause! Using it without
+ |\AtBeginDocument| inside the preamble does not work since the |listings|
+ packages initializes its counter also inside |\AtBeginDocument|.
+ \end{marker}
+\end{itemize}
+\end{newTcbKey}
+
+\enlargethispage*{5cm}
+\begin{dispListing}
+\begin{figure}[htb]
+ \centering\includegraphics[height=4cm]{lichtspiel.jpg}
+ \caption{A standard figure}
+\end{figure}
+
+\newtcolorbox[blend into=figures]{myfigure}[2][]{float=htb,capture=hbox,
+ title={#2},every float=\centering,#1}
+
+\begin{myfigure}{A tcolorbox figure}
+ \includegraphics[height=4cm]{lichtspiel.jpg}
+\end{myfigure}
+\end{dispListing}
+{\tcbusetemp}
+
+
+
+\clearpage
+\begin{docTcbKey}[][doc new=2015-03-13]{blend before title}{=\meta{value}}{no default, initially \docValue{colon}}
+ This option formats the title output of \refKey{/tcb/new/blend into}.
+ Note that this is a common |tcolorbox| option which should be set
+ globally or in the normal option part of \refCom{newtcolorbox}.
+
+Feasible values for \meta{value} are:
+\begin{itemize}
+\item\docValue{colon}: use name/number plus colon.
+\item\docValue{dash}: use name/number plus dash.
+\item\docValue{colon hang}: use name/number plus colon with hanging indent.
+\item\docValue{dash hang}: use name/number plus dash with hanging indent.
+\end{itemize}
+
+\begin{dispListing}
+\newtcolorbox[blend into=figures]{myfigure}[2][]{float=htb,capture=hbox,
+ blend before title=dash hang,title={#2},every float=\centering,#1}
+
+\begin{myfigure}{A tcolorbox figure with quite a long title}
+ \includegraphics[height=5cm]{lichtspiel.jpg}
+\end{myfigure}
+\end{dispListing}
+{\tcbusetemp}
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}[][doc new=2015-03-13]{blend before title code}{=\meta{code}}{no default}
+ This option formats the title output of \refKey{/tcb/new/blend into}.
+ The \meta{code} takes one parameter, the name/number.
+ Use this, if \refKey{/tcb/blend before title} is not flexible enough.
+
+\begin{dispListing}
+\newtcolorbox[blend into=figures]{myfigure}[2][]{float=htb,capture=hbox,
+ blend before title code={\fbox{##1}\ },title={#2},every float=\centering,#1}
+
+\begin{myfigure}{A tcolorbox figure}
+ \includegraphics[height=6cm]{lichtspiel.jpg}
+\end{myfigure}
+\end{dispListing}
+{\tcbusetemp}
+\end{docTcbKey}
+
+
+
+\clearpage
+\subsection{Lists of \texttt{tcolorbox}es}\label{sec:listsof}
+For figures and tables, \LaTeX\ provides the |\listoffigures| and
+|\listoftables| commands to create lists of these numbered entities.
+Also, a |tcolorbox| can be part of such a kind of list.
+\begin{enumerate}
+\item Assign a list \meta{name} by the \emph{initialization} option
+ \refKey{/tcb/new/list inside}.
+\item Optionally, a new \meta{type} for list entries may be assigned
+ by the \emph{initialization} option \refKey{/tcb/new/list type}.
+\item List entries a generated automatically within each new |tcolorbox|
+ using the above initialization.
+ \begin{itemize}
+ \item If \refKey{/tcb/list entry} is set, the entry is generated with it.
+ \item Otherwise, if \refKey{/tcb/title} is set, the entry is generated with it.
+ \item Otherwise, the entry is generated with the current number and the environment name.
+ \end{itemize}
+\item The generated list is displayed by \refCom{tcblistof}.
+\end{enumerate}
+
+\begin{newTcbKey}{list inside}{=\meta{name}}{no default, initially unset}
+Assigns a list or contents file to the generated |tcolorbox|es.
+Entries to this list are saved to a file which gets the \meta{name} as
+file name extension. The list is referenced by this name in
+\refCom{tcblistof}.
+For example:
+\begin{dispListing}
+list inside=exam
+\end{dispListing}
+See Section \ref{listing:exercises} from page \pageref{listing:exercises}
+for a complete example.
+\end{newTcbKey}
+
+
+\begin{newTcbKey}{list type}{=\meta{type}}{no default, initially |tcolorbox|}
+Optionally, some \meta{type} can be assigned to the list entries.
+For a new \meta{type}, a macro |\l@|\meta{type} has to exist which controls
+the format of the list entry. The default type is defined by
+\begin{dispListing}
+\newcommand*\l@tcolorbox{\@dottedtocline{1}{1.5em}{2.3em}}
+\end{dispListing}
+This is identical to the |\l@section| setting of \LaTeX. |\l@tcolorbox| can
+be redefined or a new \meta{type} can be assigned.
+\end{newTcbKey}
+
+
+\begin{docCommand}{tcblistof}{\oarg{macro}\marg{name}\marg{title text}}
+Displays the generated list of |tcolorbox|es with the given \meta{name}.
+The heading is generated by \meta{macro}\marg{title text} where \texttt{\textbackslash section}
+is the default setting for \meta{macro}.\par
+To display the list inside a subsection, use for example:
+\begin{dispListing}
+\tcblistof[\subsection]{exam}{List of Exercises}
+\end{dispListing}
+The result of the example is found as Subsection \ref{listofexercises} on
+page \pageref{listofexercises}.
+\begin{marker}
+The core of the list is generated by |\@starttoc|\marg{name} which
+can be wrapped into an own macro.
+\end{marker}
+\end{docCommand}
+
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.intro.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.intro.tex
new file mode 100644
index 0000000000..84d9b00b05
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.intro.tex
@@ -0,0 +1,225 @@
+% !TeX root = tcolorbox.tex
+% include file of tcolorbox.tex (manual of the LaTeX package tcolorbox)
+\clearpage
+\section{Introduction}%
+\tcbset{external/prefix=external/intro_}%
+The package originates from the first edition of my book
+\flqq{\citetitle{sturm:2016e}\frqq~\cite{sturm:2016e}
+in about 2006.
+For the \LaTeX\ examples and tutorials given there, I wanted to have
+accentuated and colored boxes to display source code and
+compiled text in combination.
+Since, in my opinion, this type of boxes is also quite useful to highlight definitions
+and theorems, I applied them for my lecture notes in
+mathematics \cite{sturm:2007b,sturm:2008b,sturm:2010a}
+as well.
+With this package, you are invited to apply these boxes for similar projects.
+
+Starting with version 2.00, for all internal calculations
+$\varepsilon$-\TeX\ \cite{breitenlohner:1998a} expressions are used
+in replacement of the package |calc|.
+The breaking news for version 2.00 is the support for breakable boxes.
+This new feature allows new applications of the package without
+affecting the core package too much if you do not need boxes to break automatically.
+With version 2.20, the often requested 'side by side' mode for listings has been added.
+With version 3.00, boxed titles are introduced together with improved
+customization options for overlays, underlays, finishes, and own code extensions.
+
+\begin{tcolorbox}[enhanced,boxrule=0mm,boxsep=0mm,frame hidden,interior hidden,
+ left=0mm,right=0mm,top=0mm,bottom=0mm,watermark opacity=0.25,watermark zoom=1.2,before=\par\smallskip,
+ clip watermark=false,
+ watermark tikz={%
+ \path[fill=yellow,draw=yellow!75!red] (0,0) circle (1cm);
+ \fill[red] (45:5mm) circle (1mm);
+ \fill[red] (135:5mm) circle (1mm);
+ \draw[line width=1mm,red] (215:5mm) arc (215:325:5mm);}]
+Since the first public release in 2011, I received a lot of feedback from all over the world.
+I want to thank all who wrote me for supporting this package by sending bug reports
+and ideas for new or better features.
+\end{tcolorbox}
+
+
+\subsection{Installation}
+Typically, |tcolorbox| will be installed as part of a major \LaTeX\ distribution
+and there is nothing special to do for a user.
+
+If you intend to make a local
+installation \emph{by hand}, see the |README| file of the |tcolorbox| package
+for some hints. The short story is: you have to install not only
+|tcolorbox.sty|, but also all |*.code.tex| files in the local |texmf| tree.
+
+
+\subsection{Loading the Package}
+The base package |tcolorbox| loads the packages
+|pgf| \cite{tantau:tikz_and_pgf}, |verbatim| \cite{schoepf:2001a},
+|etoolbox| \cite{lehmann:2018a},
+and |environ| \cite{robertson:2014a}.
+|tcolorbox| itself is loaded in the usual manner in the preamble:
+\begin{dispListing}
+\usepackage{tcolorbox}
+\end{dispListing}
+The package takes option keys in the key-value syntax.
+Alternatively, you may use these keys later in the preamble with
+\refCom{tcbuselibrary} (see there).
+For example, the key to typeset listings is:
+\begin{dispListing}
+\usepackage[listings]{tcolorbox}
+\end{dispListing}
+
+
+\clearpage
+\subsection{Libraries}\label{sec:bibliothek}
+The base package |tcolorbox| is extendable by program libraries.
+This is done by using option keys while loading the package or inside
+the preamble by applying the following macro with the same set of keys.
+
+\begin{docCommand}{tcbuselibrary}{\marg{key list}}
+ Loads the libraries given by the \meta{key list}.
+\begin{dispListing}
+\tcbuselibrary{listings,theorems}
+\end{dispListing}
+\end{docCommand}
+
+The following keys are used inside |\tcbuselibrary| respectively
+|\usepackage| without the key tree path |/tcb/library/|.
+
+\begin{docTcbKey}[library]{skins}{}{\mylib{skins}}
+ Loads the package |tikz| \cite{tantau:tikz_and_pgf} and provides additional
+ styles (skins) for the appearance of the colored boxes; see
+ Section~\ref{sec:skins} from page~\pageref{sec:skins}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[library]{vignette}{}{\mylib{vignette}}
+ Provides code for more ornamental; see
+ Section~\ref{sec:vignette} from page~\pageref{sec:vignette}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[library]{raster}{}{\mylib{raster}}
+ Provides additional macros and options for typesetting multiple
+ boxes arranged in a kind of raster;
+ see Section~\ref{sec:raster} from page~\pageref{sec:raster}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[library]{listings}{}{\mylib{listings}}
+ Loads the package |listings| \cite{hoffmann:2018a} and provides additional
+ macros for typesetting listings which are described in Section~\ref{sec:listings}
+ from page~\pageref{sec:listings}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[library]{listingsutf8}{}{\mylib{listingsutf8}}
+ Loads the packages |listings| \cite{hoffmann:2018a} and
+ |listingsutf8| \cite{oberdiek:2016b} for UTF-8 support.
+ This is a variant of the library \mylib{listings}
+ and is described in Section \ref{sec:listings}
+ from page~\pageref{sec:listings}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[library]{minted}{}{\mylib{minted}}
+ Loads the package |minted| \cite{poore:minted} to
+ typeset listings with the |Pygments| \cite{pygments:web} tool,
+ also see \Vref{sec:listings}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[library]{theorems}{}{\mylib{theorems}}
+ Provides additional
+ macros for typesetting theorems which are described in Section~\ref{sec:theorems}
+ from page~\pageref{sec:theorems}.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[library]{breakable}{}{\mylib{breakable}}
+ Provides support for automatic box breaking from one page to another;
+ see \Fullref{sec:breakable}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[library]{magazine}{}{\mylib{magazine}}
+ Provides support for storing broken box parts to be used later or
+ in interchanged order, \Fullref{sec:magazine}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[library]{poster}{}{\mylib{poster}}
+ Provides support for creating posters, \Fullref{sec:poster}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[library]{fitting}{}{\mylib{fitting}}
+ Provides support for font size adaption of the box content to
+ the box dimensions;
+ see Section~\ref{sec:fitting} from page~\pageref{sec:fitting}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[library]{hooks}{}{\mylib{hooks}}
+ Extends several option keys to 'hookable' keys;
+ see Section~\ref{sec:hooks} from page~\pageref{sec:hooks}.
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}[library]{xparse}{}{\mylib{xparse}}
+ Provides document command production with |xparse| for |tcolorbox|;
+ see Section~\ref{sec:xparse} from page~\pageref{sec:xparse}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[library]{external}{}{\mylib{external}}
+ Provides externalization support for stand-alone document snippets,
+ see \Fullref{sec:external}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[library]{documentation}{}{\mylib{documentation}}
+ Provides additional
+ macros for typesetting \LaTeX\ documentations
+ which are described in Section~\ref{sec:documentation}
+ from page~\pageref{sec:documentation}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[library]{many}{}{style, no value}
+ Loads the libraries \mylib{skins}, \mylib{breakable}, \mylib{raster}, \mylib{hooks},
+ \mylib{theorems}, \mylib{fitting}, and \mylib{xparse}.
+ Use this shortcut, if you want to use all features of |tcolorbox|
+ with exception of typesetting listings and using
+ the specialized \mylib{documentation} library.
+\end{docTcbKey}
+
+\begin{docTcbKey}[library]{most}{}{style, no value}
+ Loads all libraries except \mylib{minted} and \mylib{documentation}.
+ Use this shortcut, if you want to use all features of |tcolorbox|
+ with exception of using the |minted| package and using
+ the specialized \mylib{documentation} library.
+\end{docTcbKey}
+
+\begin{docTcbKey}[library]{all}{}{style, no value}
+ Loads all libraries. Use this shortcut only, if you indend to use the
+ \mylib{documentation} library.
+\end{docTcbKey}
+
+
+\begin{extcolorbox}[runs=2]{intro_packageoverview}
+ [title={Package \texttt{tcolorbox}},center title,fonttitle=\bfseries,arc=0pt,
+ colback=red!10!white,
+ interior style={fill tile image*={width=2cm}{pink_marble.png},fill image opacity=0.5},
+ colframe=red!50!black]
+ \begin{tcolorbox}[beamer,adjusted title=Basic Features,colframe=blue!50!black,colback=blue!10!white]
+ Base package
+ \end{tcolorbox}
+ \begin{tcbitemize}[raster columns=3,raster before skip=2mm,raster after skip=0pt,
+ raster equal height,beamer,colframe=blue!50!black,colback=blue!10!white]
+ \tcbitem[adjusted title=Advanced Features]
+ \mylib{breakable}\\
+ \mylib{external}\\
+ \mylib{fitting}\\
+ \mylib{hooks}\\
+ \mylib{magazine}\\
+ \mylib{poster}\\
+ \mylib{raster}\\
+ \mylib{skins}\\
+ \mylib{theorems}\\
+ \mylib{vignette}\\
+ \mylib{xparse}
+ \tcbitem[adjusted title=Advanced Listings]
+ \mylib{listings}\\
+ \mylib{listingsutf8}
+ \tcblower
+ \mylib{minted}
+ \tcbitem[adjusted title=Documentation]
+ \mylib{documentation}
+ \end{tcbitemize}
+\end{extcolorbox}
+
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.listings.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.listings.tex
new file mode 100644
index 0000000000..2abe145bb6
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.listings.tex
@@ -0,0 +1,1567 @@
+% !TeX root = tcolorbox.tex
+% include file of tcolorbox.tex (manual of the LaTeX package tcolorbox)
+\clearpage
+\section{Libraries
+ \mylib{listings},
+ \mylib{listingsutf8}, and
+ \mylib{minted}}\label{sec:listings}%
+\tcbset{external/prefix=external/listings_}%
+
+\subsection{Loading the Libraries}
+In contrast to other |tcolorbox| libraries, the libraries
+\mylib{listings}, \mylib{listingsutf8}, and \mylib{minted} are concurrent in the sense that
+they all do the same thing, i.\,e.\ displaying listings with or without typesetting
+the listing in \LaTeX\ parallel.
+The difference is the underlying \LaTeX\ package which does the core job for
+displaying a listing. So, typically, you need just \emph{one} of these
+libraries. If you do not have a clue which one of them you should use
+and you are using |pdflatex|, you should take \mylib{listingsutf8}.
+If you are using |xelatex| or |lualatex|, you should take \mylib{listings}
+as |xelatex| and |lualatex| are not compatible with \mylib{listingsutf8}.
+
+\begin{marker}
+The order in which the libraries are included influences the default settings and
+the \refKey{/tcb/reset} behavior. The settings of a later loaded library overwrite
+the settings of a previous loaded library. A library is never loaded twice.
+\end{marker}
+
+
+\subsubsection{Loading \mylib{listings}}
+This library uses the package |listings| \cite{hoffmann:2018a} to typeset
+listings. It is loaded by a package option or inside the preamble by:
+\begin{dispListing}
+\tcbuselibrary{listings}
+\end{dispListing}
+This also loads the package |listings| \cite{hoffmann:2018a}.
+
+The \refKey{/tcb/listing engine} is set to |listings| by the library.
+To reactivate this setting, if overwritten by other libraries, use
+\begin{dispListing}
+\tcbset{listing engine=listings}
+\end{dispListing}
+
+\subsubsection{Loading \mylib{listingsutf8}}
+\begin{marker}
+This library is not needed (and troublesome) when using Xe\LaTeX\ or Lua\LaTeX.
+\end{marker}
+To extend |listings| for UTF-8 encoded sources, you can use the support from
+the package |listingsutf8| \cite{oberdiek:2016b} by loading the library
+variant \mylib{listingsutf8}.
+\begin{dispListing}
+\tcbuselibrary{listingsutf8}
+\tcbset{listing utf8=latin1}% optional; 'latin1' is the default.
+\end{dispListing}
+This also loads the library \mylib{listings}
+and the packages |listings| \cite{hoffmann:2018a}
+and |listingsutf8| \cite{oberdiek:2016b}.
+
+The \refKey{/tcb/listing engine} is set to |listings| by the library.
+To reactivate this setting, if overwritten by other libraries, use
+\begin{dispListing}
+\tcbset{listing engine=listings}
+\end{dispListing}
+
+
+\clearpage
+\subsubsection{Loading \mylib{minted}}
+This library uses the package |minted| \cite{poore:minted} to typeset
+listings. It is loaded by a package option or inside the preamble by:
+\begin{dispListing}
+\tcbuselibrary{minted}
+\end{dispListing}
+This also loads the package |minted| \cite{poore:minted}.
+
+\begin{marker}
+The |minted| package uses the external tool |Pygments| \cite{pygments:web}
+to apply syntax highlighting. It has to be installed and set up, before the
+library can be used, see \cite{poore:minted} and \cite{pygments:web}.
+The |tcolorbox| library \mylib{minted} does not work, if the package
+|minted| \cite{poore:minted} does not work.
+\end{marker}
+
+The \refKey{/tcb/listing engine} is set to |minted| by the library.
+To reactivate this setting, if overwritten by other libraries, use
+\begin{dispListing}
+\tcbset{listing engine=minted}
+\end{dispListing}
+
+
+\subsection{Common Macros of the Libraries}
+
+\begin{docEnvironment}{tcblisting}{\marg{options}}
+ Creates a colored box based on a \refEnv{tcolorbox}.
+ Controlled by the given \meta{options}, the
+ environment content is typeset normally and/or as a listing.
+ Furthermore, the \meta{options} control appearance and functions of
+ the |tcolorbox|.
+ By default, the listing is interpreted as a \LaTeX\ listing.
+\begin{dispExample}
+\begin{tcblisting}{colback=red!5!white,colframe=red!75!black}
+This is a \LaTeX\ example which displays the text as source code
+and in compiled form.
+\end{tcblisting}
+\end{dispExample}
+
+\clearpage
+
+\begin{dispExample}
+% \tcbuselibrary{listings} /or/ \tcbuselibrary{listingsutf8}
+\begin{tcblisting}{colback=yellow!5,colframe=yellow!50!black,listing only,
+ title=This is source code in another language (XML), fonttitle=\bfseries,
+ listing options={language=XML,columns=fullflexible,keywordstyle=\color{red}}}
+<?xml version="1.0"?>
+<project name="Package tcolorbox" default="documentation" basedir=".">
+ <description>
+ Apache Ant build file (http://ant.apache.org/)
+ </description>
+</project>
+\end{tcblisting}
+\end{dispExample}
+
+\enlargethispage*{10mm}
+
+\begin{dispExample}
+% \tcbuselibrary{minted}
+\begin{tcblisting}{colback=yellow!5,colframe=yellow!50!black,listing only,
+ title=This is source code in another language (XML), fonttitle=\bfseries,
+ listing engine=minted,minted language=xml}
+<?xml version="1.0"?>
+<project name="Package tcolorbox" default="documentation" basedir=".">
+ <description>
+ Apache Ant build file (http://ant.apache.org/)
+ </description>
+</project>
+\end{tcblisting}
+\end{dispExample}
+
+
+
+\begin{dispExample}
+% This box is as wide as needed (listing only !!)
+% \tcbuselibrary{skins}
+\begin{tcblisting}{colback=green!5!white,colframe=green!50!black,listing only,
+ hbox,enhanced,drop fuzzy shadow,before=\begin{center},after=\end{center}}
+\begin{tikzpicture}
+\fill[red] (0,0) rectangle (1,1);
+\end{tikzpicture}
+\end{tcblisting}
+\end{dispExample}
+\end{docEnvironment}
+
+
+\clearpage
+\begin{docEnvironment}{tcboutputlisting}{}
+ Saves the environment content to a file which is named by the key value of
+ |listing file|. Later, this file can be loaded by
+ |\tcbinputlisting| or |\tcbuselistingtext| or |\tcbuselistinglisting|.
+\begin{dispListing}
+\begin{tcboutputlisting}
+This \textbf{text} is written to a standardized file for later usage.
+\end{tcboutputlisting}
+\end{dispListing}
+\end{docEnvironment}
+
+
+\begin{docCommand}{tcbinputlisting}{\marg{options}}
+ Creates a colored boxed based on a |tcolorbox|. The text content is read
+ from a file named by the key value of |listing file|. Apart from that,
+ the function is equal to that of \refEnv{tcblisting}.
+\begin{dispExample}
+\tcbinputlisting{colback=red!5!white,colframe=red!75!black,text only}
+\tcbinputlisting{colback=green!5,colframe=green!75!black,listing only}
+\end{dispExample}
+\end{docCommand}
+
+\begin{docCommand}{tcbuselistingtext}{}
+ Loads text from a file named by the key value of |listing file|.
+\begin{dispExample}
+\tcbuselistingtext
+\end{dispExample}
+\end{docCommand}
+
+
+\begin{docCommand}{tcbuselistinglisting}{}
+ Typesets text as listing from a file named by the key value of |listing file|.
+\begin{dispExample}
+\tcbuselistinglisting
+\end{dispExample}
+\end{docCommand}
+
+%\enlargethispage*{5mm}
+\begin{docCommand}{tcbusetemplisting}{}
+ Typesets text as listing from a temporary file which was written by
+ \refEnv{tcbwritetemp}.
+\end{docCommand}
+
+
+\clearpage
+\begin{marker}
+See \Vref{subsec:xparse_listing} and \Vref{subsec:xparse_inputlisting} for more
+elaborate methods to create new environments and commands.
+\end{marker}
+\begin{marker}
+If a new sort of |tcblisting| environments should be created with
+one optional argument only, one is highly recommended to use
+\refCom{DeclareTCBListing} or \refCom{NewTCBListing}
+instead of \refCom{newtcblisting} to
+avoid content scanning problems.
+\end{marker}
+
+\begin{docCommand}{newtcblisting}{\oarg{init options}\marg{name}\oarg{number}\oarg{default}\marg{options}}
+ Creates a new environment \meta{name} based on \refEnv{tcblisting}.
+ Basically, |\newtcblisting| operates like |\newenvironment|. This means,
+ the new environment \meta{name} optionally takes \meta{number} arguments, where
+ \meta{default} is the default value for the optional first argument.
+ The \meta{options} are given to the underlying |tcblisting|.
+ Note that \refKey{/tcb/savedelimiter} is set to the given \meta{name}
+ automatically.
+ The \meta{init options} allow setting up automatic numbering,
+ see Section \ref{sec:initkeys} from page \pageref{sec:initkeys}.
+\begin{dispExample*}{sbs,lefthand ratio=0.5}
+\newtcblisting{mybox}{%
+ colback=red!5!white,
+ colframe=red!75!black}
+
+\begin{mybox}
+This is my \LaTeX\ box.
+\end{mybox}
+\end{dispExample*}
+
+\begin{dispExample*}{sbs,lefthand ratio=0.5}
+\newtcblisting{mybox}[1]{%
+ colback=red!5!white,
+ colframe=red!75!black,
+ fonttitle=\bfseries,
+ title=#1}
+
+\begin{mybox}{Listing Box}
+This is my \LaTeX\ box.
+\end{mybox}
+\end{dispExample*}
+
+\begin{dispExample*}{sbs,lefthand ratio=0.5}
+\newtcblisting{mybox}[2][]{%
+ colback=red!5!white,
+ colframe=red!75!black,
+ fonttitle=\bfseries,
+ title=#2,#1}
+
+\begin{mybox}[listing only]
+ {Listing Box}
+This is my \LaTeX\ box.
+\end{mybox}
+\bigskip
+
+\begin{mybox}[listing side text]
+ {Listing Box}
+This is my
+\LaTeX\ box.
+\end{mybox}
+\end{dispExample*}
+
+\clearpage
+\inputpreamblelisting{C}
+
+\begin{dispExample*}{sbs,lefthand ratio=0.5}
+\begin{mycbox}{Listing Box}
+This is my \LaTeX\ box.
+\end{mycbox}
+\end{dispExample*}
+\end{docCommand}
+
+
+%\enlargethispage*{1cm}
+\begin{docCommand}{renewtcblisting}{\oarg{init options}\marg{name}\oarg{number}\oarg{default}\marg{options}}
+ Operates like \refCom{newtcblisting}, but based on |\renewenvironment| instead of |\newenvironment|.
+ An existing environment is redefined.
+\end{docCommand}
+
+
+\clearpage
+\begin{docCommand}{newtcbinputlisting}{\oarg{init options}\brackets{\texttt{\textbackslash}\rmfamily\meta{name}}\oarg{number}\oarg{default}\marg{options}}
+ Creates a new macro \texttt{\textbackslash}\meta{name} based on \refCom{tcbinputlisting}.
+ Basically, |\newtcbinputlisting| operates like |\newcommand|.
+ The new macro \texttt{\textbackslash}\meta{name} optionally takes \meta{number} arguments, where
+ \meta{default} is the default value for the optional first argument.
+ The \meta{options} are given to the underlying |tcbinputlisting|.
+ The \meta{init options} allow setting up automatic numbering,
+ see Section \ref{sec:initkeys} from page \pageref{sec:initkeys}.
+
+\begin{dispExample}
+\newtcbinputlisting[use counter from=mycbox]{\mylisting}[2][]{%
+ listing file={#2},
+ title=Listing (\thetcbcounter) of \texttt{#2},
+ colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries,
+ listing only,breakable,#1}
+
+\mylisting[before upper=\textit{This is the included file content:}]
+ {\jobname.tcbtemp}
+\end{dispExample}
+
+\begin{dispExample}
+\newtcbinputlisting[use counter from=mycbox]{\mylisting}[2][]{%
+ listing engine=minted,minted language=latex,minted style=colorful,
+ listing file={#2},
+ title=Listing (\thetcbcounter) of \texttt{#2},
+ colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries,
+ listing only,breakable,#1}
+
+\mylisting[before upper=\textit{This is the included file content:}]
+ {\jobname.tcbtemp}
+\end{dispExample}
+\end{docCommand}
+
+
+\begin{docCommand}{renewtcbinputlisting}{\oarg{init options}\brackets{\texttt{\textbackslash}\rmfamily\meta{name}}\oarg{number}\oarg{default}\marg{options}}
+ Operates like \refCom{newtcbinputlisting}, but based on |\renewcommand| instead of |\newcommand|.
+ An existing macro is redefined.
+\end{docCommand}
+
+
+\clearpage
+\subsection{Option Keys of the \mylib{listings} Library}\label{sec:speclistingkeys}
+
+\begin{docTcbKey}{listing options}{=\meta{key list}}{no default, initially |style=tcblatex|}
+ Sets the options from the package |listings| \cite{hoffmann:2018a}
+ which are used during typesetting of the listing.
+ For \LaTeX\ listings, there is a predefined |listings| style named |tcblatex|
+ which can be used.
+\begin{dispExample}
+\begin{tcblisting}{colback=red!5!white,colframe=red!25,left=6mm,
+listing options={style=tcblatex,numbers=left,numberstyle=\tiny\color{red!75!black}}}
+This is a \LaTeX\ example which displays the text as source code
+and in compiled form. Additionally, we use line numbers here.
+\end{tcblisting}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{no listing options}{}{no value, initially unset}
+ Abbreviation for |listing options={}|.
+ This removes all options for the |listings| package.
+ This includes the |tcblisting| standard style |tcblatex| and the encoding presets.
+ Use this option, if you want to set the |listings| options outside of |tcblisting|, e.\,g.\ globally in
+ the preamble.
+\begin{dispExample}
+\begin{tcblisting}{no listing options}
+All \textit{listings} options removed.
+\end{tcblisting}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{listing style}{=\meta{style}}{no default, initially |tcblatex|}
+ Abbreviation for |listing options={style=...}|. This key sets a \meta{style}
+ for the |listings| package, see \cite{hoffmann:2018a}.
+ For \LaTeX, there is a predefined style named |tcblatex|.
+\begin{dispExample}
+\begin{tcblisting}{colback=red!5!white,colframe=red!75!black,
+listing style=tcblatex}
+Here, we use the predefined style.
+\end{tcblisting}
+\end{dispExample}
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}{listing inputencoding}{=\meta{encoding}}{no default, initially \texttt{\cs inputencodingname}}
+ Sets the input encoding value for the predefined listing style |tcblatex|
+ and |tcbdocumentation| from the library \mylib{documentation}.
+ The initial value is derived from the package |inputenc| if used.
+\end{docTcbKey}
+
+\begin{docTcbKey}{listing remove caption}{\colOpt{=true\textbar false}}{default |true|, initially |true|}
+If set to |true|, some part of the caption building code of the |listings| package
+is silenced to prevent some unwanted interaction with the |hyperref| package resulting
+in additional vertical space.
+If set to |false|, the |listings| package code is kept unchanged.
+Note that listings outside \refEnv{tcblisting} and
+\refCom{tcbinputlisting} are always processed normally.
+Typically, a user is not expected to use this key at all.
+\end{docTcbKey}
+
+\begin{docTcbKey}{every listing line}{=\meta{text}}{no default, initially unset/empty}
+Inserts some \meta{text} to the begin of every line of a listing.
+Note that this a hack of the |listings| package code. This may become unusable
+or superfluous in the future.
+\begin{dispExample}
+\newtcblisting{commandshell}{colback=black,colupper=white,colframe=yellow!75!black,
+ listing only,listing options={style=tcblatex,language=sh},
+ every listing line={\textcolor{red}{\small\ttfamily\bfseries root \$> }}}
+
+\begin{commandshell}
+ls -al
+cd /usr/lib
+\end{commandshell}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{every listing line*}{=\meta{text}}{no default, initially unset/empty}
+Identical to \refKey{/tcb/every listing line} plus additional enlargement
+of \refKey{/tcb/rightupper} by the width of \meta{text}. Therefore, this
+option has to be used after the geometry settings are done.
+This option is intended to be used in conjunction with \refKey{/tcb/hbox}.
+
+\begin{dispExample}
+\newtcblisting{commandshell}{colback=black,colupper=white,colframe=yellow!75!black,
+ listing only,listing options={style=tcblatex,language=sh},hbox,
+ every listing line*={\textcolor{red}{\small\ttfamily\bfseries root \$> }}}
+
+\begin{commandshell}
+ls -al
+cd /usr/lib
+\end{commandshell}
+\end{dispExample}
+\end{docTcbKey}
+
+See further options in \Vref{sec:commonlistingkeys}.
+
+\begin{marker}
+For an combined example of using |\lstinline| inside a |tcolorbox|, see
+\refCom{DeclareTotalTCBox}.
+\end{marker}
+
+\clearpage
+\subsection{Option Keys of the \mylib{listingsutf8} Library}
+\begin{marker}
+The \mylib{listingsutf8} library is not needed (and troublesome) when using Xe\LaTeX\ or Lua\LaTeX.
+\end{marker}
+
+The \mylib{listingsutf8} library is an extension of the
+\mylib{listings} library, so
+all options from \Vref{sec:speclistingkeys} are applicable.
+
+\begin{docTcbKey}{listing utf8}{=\meta{one-byte-encoding}}{style, no default, initially |latin1|}
+ Abbreviation for using \refKey{/tcb/listing inputencoding}
+ together with UTF-8 support from the package |listingsutf8| \cite{oberdiek:2016b}.
+ This option is available only for the library variant \mylib{listingsutf8}.
+ The \meta{one-byte-encoding} is one of
+ the applicable encodings from \cite{oberdiek:2016b}, e.\,g.\ |latin1|
+ which is the default.\par
+ Be aware that this means restriction to this specific \meta{one-byte-encoding}:
+ e.\,g.\ |latin1| comprises umlauts and other accented characters, but not
+ the Euro sign. If you want to use the |listings| package \emph{and} \flqq real\frqq\
+ UTF-8 source code, then do \emph{not} use \mylib{listingsutf8} but \mylib{listings}
+ with
+ \refKey{/tcb/listing inputencoding}|=utf8|
+ \emph{and} with specific manual hacks for specific UTF-8-encoded characters.
+
+\end{docTcbKey}
+
+See further options in \Vref{sec:commonlistingkeys}.
+
+\clearpage
+\subsection{Option Keys of the \mylib{minted} Library}
+
+\begin{docTcbKey}{minted language}{=\meta{programming language}}{no default, initially |latex|}
+Sets a \meta{programming language} known to |Pygments| \cite{pygments:web}.
+\begin{dispExample}
+\begin{tcblisting}{listing engine=minted,minted style=trac,
+ minted language=java,
+ colback=red!5!white,colframe=red!75!black,listing only}
+ public class HelloWorld {
+ // A 'Hello World' in Java
+ public static void main(String[] args) {
+ System.out.println("Hello World!");
+ }
+ }
+\end{tcblisting}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc updated={2017-07-05}]{minted options}{=\meta{key list}}{no default, initially
+ |tabsize=2,fontsize=\textbackslash small,|\linebreak|breaklines,autogobble|}
+ Sets the options from the package |minted| \cite{poore:minted}
+ which are used during typesetting of the listing.
+\begin{dispExample}
+% \tcbuselibrary{skins}
+\newtcblisting{myjava}{listing engine=minted,
+ minted style=colorful,
+ minted language=java,
+ minted options={fontsize=\small,breaklines,autogobble,linenos,numbersep=3mm},
+ colback=blue!5!white,colframe=blue!75!black,listing only,
+ left=5mm,enhanced,
+ overlay={\begin{tcbclipinterior}\fill[red!20!blue!20!white] (frame.south west)
+ rectangle ([xshift=5mm]frame.north west);\end{tcbclipinterior}}}
+
+\begin{myjava}
+ public class HelloWorld {
+ // A 'Hello World' in Java
+ public static void main(String[] args) {
+ System.out.println("Hello World!");
+ }
+ }
+\end{myjava}
+\end{dispExample}
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}{minted style}{=\meta{style}}{no default, initially unset}
+Sets a \meta{style} known to |Pygments| \cite{pygments:web}. This is
+independent from \refKey{/tcb/minted options}. Note that styles are always
+applied globally; all following examples will be set in the given \meta{style}
+until a new style is set. Also note that
+setting |\usemintedstyle|\marg{style} only once per document is more economic, if
+all styles in a document are the same.
+For examples of different styles, see
+\refKey{/tcb/minted language} and \refKey{/tcb/minted options}.
+\end{docTcbKey}
+
+See further options in \Vref{sec:commonlistingkeys}.
+
+
+\clearpage
+\subsection{Common Option Keys of all Libraries}\label{sec:commonlistingkeys}
+For the \meta{options} in \refEnv{tcblisting} respectively \refCom{tcbinputlisting}
+the following |pgf| keys can be applied. The key tree path |/tcb/| is not to
+be used inside these macros.
+
+\begin{docTcbKey}{listing engine}{=\meta{engine}}{no default}
+ Sets the \meta{engine} which typesets the listings. Feasible values are
+ \begin{itemize}
+ \item\docValue{listings}, if library \mylib{listings} or
+ \mylib{listingsutf8} is loaded.
+ \item\docValue{minted}, if library \mylib{minted} is loaded.
+ \end{itemize}
+\end{docTcbKey}
+
+\begin{docTcbKey}{listing file}{=\meta{file name}}{no default, initially \cs{jobname.listing}}
+ Sets the \meta{file name} of the file which is used to save listings.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{listing and text}{}{no value, initially set}
+ Typesets the environment content as listing in the upper part and
+ as compiled text in the lower part.
+\begin{dispExample}
+\begin{tcblisting}{colback=red!5!white,colframe=red!75!black,listing and text}
+This is a \LaTeX\ example.
+\end{tcblisting}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{text and listing}{}{no value}
+ Typesets the environment content as compiled text in the upper part and
+ as listing in the lower part.
+\begin{dispExample}
+\begin{tcblisting}{colback=red!5!white,colframe=red!75!black,text and listing}
+This is a \LaTeX\ example.
+\end{tcblisting}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{listing only}{}{no value}
+ Typesets the environment content as listing.
+\begin{dispExample}
+\begin{tcblisting}{colback=red!5!white,colframe=red!75!black,listing only}
+This is a \LaTeX\ example.
+\end{tcblisting}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}{text only}{}{no value}
+ Typesets the environment content as compiled text.
+\begin{dispExample}
+\begin{tcblisting}{colback=red!5!white,colframe=red!75!black,text only}
+This is a \LaTeX\ example.
+\end{tcblisting}
+\end{dispExample}
+\end{docTcbKey}
+
+
+
+\begin{docTcbKey}{comment}{=\meta{text}}{no default, initially empty}
+ Records a comment with \meta{text} as content. The comment is displayed
+ e.\,g.\ in conjunction with \refKey{/tcb/listing and comment}
+ and \refKey{/tcb/comment and listing}.
+\begin{dispExample}
+\begin{tcblisting}{comment={This comment is really only a comment},
+ colback=red!5!white,colframe=red!75!black}
+This is a \textbf{tcolorbox}.
+\end{tcblisting}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2014-11-17]{comment only}{}{no value}
+ Typesets the environment content with the comment text.
+\begin{dispExample}
+\begin{tcblisting}{comment only,
+ comment={This is a comment.},
+ colback=red!5!white,colframe=red!75!black}
+This is a \textbf{tcolorbox}.
+\end{tcblisting}
+\end{dispExample}
+\end{docTcbKey}
+
+
+
+\begin{docTcbKey}{image comment}{=\marg{options}\marg{filename}}{style, no default, initially unset}
+ Uses an image denoted by \meta{filename} as \textit{comment} for the listing.
+ The image is included by the standard |\includegraphics| macro with
+ given \meta{options}.
+\begin{dispExample}
+\begin{tcblisting}{colback=red!5!white,colframe=red!75!black,listing side comment,
+ image comment={width=2.5cm}{example-image-a.pdf},center lower}
+This is a \LaTeX\ example.
+\end{tcblisting}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}[][doc new=2014-11-14]{tcbimage comment}{=\meta{filename}}{style, no default, initially unset}
+ Uses an image denoted by \meta{filename} as \textit{comment} for the listing.
+ The image is included by the \refCom{tcbincludegraphics} macro.
+ The inclusion can be customized by \refKey{/tcb/comment style}.
+ \begin{marker}
+ The library \mylib{skins} is needed to apply this option.
+ \end{marker}
+ \medskip
+\begin{dispExample}
+% \tcbuselibrary{skins}
+\begin{tcblisting}{colback=red!5!white,colframe=red!75!black,listing side comment,
+ righthand width=3cm,lower separated=false,
+ tcbimage comment={example-image-a.pdf},
+ comment style={size=fbox,colframe=blue,colback=blue!50,sharp corners,
+ drop fuzzy shadow}}
+This is a \LaTeX\ example.
+\end{tcblisting}
+\end{dispExample}
+\end{docTcbKey}
+
+%\enlargethispage*{1cm}
+
+\begin{docTcbKey}[][doc new=2014-11-14]{pdf comment}{\colOpt{=\meta{filename}}}{style, default listing file, initially unset}
+ Uses a PDF file denoted by \meta{filename} as \textit{comment} for the listing.
+ The image is included by \refCom{tcbincludepdf} inside a \refEnv{tcbraster}.
+ The inclusion can be customized by \refKey{/tcb/comment style}.
+ \begin{marker}
+ The libraries \mylib{skins} and \mylib{raster} are needed to apply this option.
+ \end{marker}
+ \medskip
+\begin{dispExample}
+% \tcbuselibrary{skins,raster}
+\begin{tcblisting}{colback=red!5!white,colframe=red!75!black,listing and comment,
+ righthand width=3cm,lower separated=false,middle=1mm,
+ pdf comment={tcolorbox-example.pdf},
+ comment style={raster columns=3,graphics pages={1,2,3},
+ colframe=blue,drop fuzzy shadow}}
+This is a \LaTeX\ example.
+\end{tcblisting}
+\end{dispExample}
+\end{docTcbKey}
+
+\clearpage
+
+
+\begin{docTcbKey}[][doc new=2014-11-14]{pdf extension}{=\meta{extension}}{no default, initially |pdf|}
+ Sets the PDF file name extension for \refKey{/tcb/pdf comment} to \meta{extension}.
+ Note that \meta{extension} always overwrites any actual extension given
+ inside \refKey{/tcb/pdf comment}.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2014-11-14]{comment style}{=\meta{options}}{no default, initially empty}
+ Sets the \meta{options} for \refKey{/tcb/tcbimage comment} and \refKey{/tcb/pdf comment}.
+ These are |tcolorbox| options to customize the colored box drawn around the
+ image(s), also image options encapsulated by \refKey{/tcb/graphics options},
+ and \refEnv{tcbraster} options for \refKey{/tcb/pdf comment}.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{listing and comment}{}{no value}
+ Typesets the environment content as listing in the upper part and
+ a given comment in the lower part.
+\begin{dispExample}
+\begin{tcblisting}{colback=red!5!white,colframe=red!75!black,listing and comment,
+ comment={This is my comment. It may contain line breaks.\par
+ It can even use the environment content
+ \flqq\ignorespaces\tcbuselistingtext\unskip\frqq}}
+This is a \LaTeX\ example.
+\end{tcblisting}
+\end{dispExample}
+\end{docTcbKey}
+
+\enlargethispage*{10mm}
+\begin{docTcbKey}{comment and listing}{}{no value}
+ Typesets a given comment in the upper part and
+ the environment content as listing in the lower part.
+\begin{dispExample}
+\begin{tcblisting}{colback=red!5!white,colframe=red!75!black,comment and listing,
+comment={This is my comment.}}
+This is a \LaTeX\ example.
+\end{tcblisting}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}{listing side text}{}{style, no value}
+Typesets the environment content side by side as listing in the left (upper)
+part and as compiled text in the right (lower) part.
+This is a shortcut for setting \refKey{/tcb/listing and text} and \refKey{/tcb/sidebyside}.
+\begin{dispExample}
+\begin{tcblisting}{colback=red!5!white,colframe=red!75!black,listing side text}
+This is a \LaTeX\ example.
+\end{tcblisting}
+\end{dispExample}
+\begin{marker}
+Note that |sidebyside=false| has to be added, if the setting of
+\refKey{/tcb/listing side text} is to be annihilated.
+\end{marker}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{text side listing}{}{style, no value}
+Typesets the environment content side by side as compiled text in the left (upper)
+part and as listing in the right (lower) part.
+This is a shortcut for setting \refKey{/tcb/text and listing} and \refKey{/tcb/sidebyside}.
+\begin{dispExample}
+\begin{tcblisting}{colback=red!5!white,colframe=red!75!black,text side listing}
+This is a \LaTeX\ example.
+\end{tcblisting}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{listing outside text}{}{no value}
+Typesets the environment content side by side as listing in a |tcolorbox|
+and as compiled text outside the box in the right part of the page.
+Nevertheless, the outside text is treated as \emph{lower} part of the
+|tcolorbox| and can be formatted with all lower part options.
+The space partitioning is done with the side by side options from
+\Fullref{sec:sidebyside}.
+\begin{dispExample}
+\begin{tcblisting}{colback=red!5!white,colframe=red!75!black,listing outside text}
+This is a \LaTeX\ example.
+\end{tcblisting}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{text outside listing}{}{no value}
+Typesets the environment content side by side as listing in a |tcolorbox|
+and as compiled text outside the box in the left part of the page.
+Nevertheless, the outside text is treated as \emph{lower} part of the
+|tcolorbox| and can be formatted with all lower part options.
+The space partitioning is done with the side by side options from
+\Fullref{sec:sidebyside}.
+\begin{dispExample}
+\begin{tcblisting}{colback=red!5!white,colframe=red!75!black,text outside listing}
+This is a \LaTeX\ example.
+\end{tcblisting}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}{listing side comment}{}{style, no value}
+Typesets the environment content side by side as listing in the left (upper)
+part and a given comment in the right (lower) part.
+This is a shortcut for setting \refKey{/tcb/listing and comment} and \refKey{/tcb/sidebyside}.
+\begin{dispExample}
+\begin{tcblisting}{colback=red!5!white,colframe=red!75!black,listing side comment,
+ righthand width=1.5cm,image comment={width=1.5cm}{example-image-a.pdf}}
+This is a \LaTeX\ example.
+\end{tcblisting}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{comment side listing}{}{style, no value}
+Typesets the environment content side by side with a given comment in the left (upper)
+part and as listing in the right (lower) part.
+This is a shortcut for setting \refKey{/tcb/comment and listing} and \refKey{/tcb/sidebyside}.
+\begin{dispExample}
+\begin{tcblisting}{colback=red!5!white,colframe=red!75!black,comment side listing,
+ lefthand width=1.5cm,image comment={width=1.5cm}{example-image-a.pdf}}
+This is a \LaTeX\ example.
+\end{tcblisting}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\enlargethispage*{2cm}
+\begin{docTcbKey}{listing outside comment}{}{no value}
+Typesets the environment content side by side as listing in a |tcolorbox|
+and a given comment outside the box in the right part of the page.
+Nevertheless, the outside text is treated as \emph{lower} part of the
+|tcolorbox| and can be formatted with all lower part options.
+The space partitioning is done with the side by side options from
+\Fullref{sec:sidebyside}.
+\begin{dispExample}
+\begin{tcblisting}{colback=red!5!white,colframe=red!75!black,listing outside comment,
+ righthand width=1.5cm,image comment={width=1.5cm}{example-image-a.pdf}}
+This is a \LaTeX\ example.
+\end{tcblisting}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{comment outside listing}{}{no value}
+Typesets the environment content side by side as listing in a |tcolorbox|
+and a given comment outside the box in the left part of the page.
+Nevertheless, the outside text is treated as \emph{lower} part of the
+|tcolorbox| and can be formatted with all lower part options.
+The space partitioning is done with the side by side options from
+\Fullref{sec:sidebyside}.
+\begin{dispExample}
+\begin{tcblisting}{colback=red!5!white,colframe=red!75!black,comment outside listing,
+ lefthand width=1.5cm,image comment={width=1.5cm}{example-image-a.pdf}}
+This is a \LaTeX\ example.
+\end{tcblisting}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}{listing above text}{}{no value}
+ Typesets the environment content as listing in a |tcolorbox|
+ and as compiled text outside and below the box.
+ The outside text is treated as \emph{lower} part of the
+ |tcolorbox| and can be formatted with all lower part options.
+ The distance between box and text is controlled by \refKey{/tcb/middle}.
+\begin{dispExample}
+\begin{tcblisting}{colback=red!5!white,colframe=red!75!black,listing above text}
+This is a \LaTeX\ example.
+\end{tcblisting}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2014-11-07]{listing above* text}{}{no value}
+ Widely equal to \refKey{/tcb/listing above text}, but the outside text is
+ not formatted with the lower part options.
+ Also, it is not put into a minipage and it may span several pages.
+ The distance between box and text is controlled by \refKey{/tcb/after}.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{text above listing}{}{no value}
+ Typesets the environment content as listing in a |tcolorbox|
+ and as compiled text outside and above the box.
+ The outside text is treated as \emph{lower} part of the
+ |tcolorbox| and can be formatted with all lower part options.
+ The distance between box and text is controlled by \refKey{/tcb/middle}.
+\begin{dispExample}
+\begin{tcblisting}{colback=red!5!white,colframe=red!75!black,text above listing}
+This is a \LaTeX\ example.
+\end{tcblisting}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2014-11-07]{text above* listing}{}{no value}
+ Widely equal to \refKey{/tcb/text above listing}, but the outside text is
+ not formatted with the lower part options.
+ Also, it is not put into a minipage and it may span several pages.
+ The distance between box and text is controlled by \refKey{/tcb/before}.
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}{listing above comment}{}{no value}
+ Typesets the environment content as listing in a |tcolorbox|
+ and a given comment outside and below the box.
+ The outside text is treated as \emph{lower} part of the
+ |tcolorbox| and can be formatted with all lower part options.
+ The distance between box and comment is controlled by \refKey{/tcb/middle}.
+\begin{dispExample}
+\begin{tcblisting}{colback=red!5!white,colframe=red!75!black,listing above comment,
+ center lower,image comment={width=3cm}{example-image-a.pdf}}
+This is a \LaTeX\ example.
+\end{tcblisting}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2014-11-07]{listing above* comment}{}{no value}
+ Widely equal to \refKey{/tcb/listing above comment}, but the outside comment is
+ not formatted with the lower part options.
+ Also, it is not put into a minipage and it may span several pages.
+ The distance between box and comment is controlled by \refKey{/tcb/after}.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{comment above listing}{}{no value}
+ Typesets the environment content as listing in a |tcolorbox|
+ and a given comment outside and above the box.
+ The outside text is treated as \emph{lower} part of the
+ |tcolorbox| and can be formatted with all lower part options.
+ The distance between box and comment is controlled by \refKey{/tcb/middle}.
+\begin{dispExample}
+\begin{tcblisting}{colback=red!5!white,colframe=red!75!black,comment above listing,
+ center lower,image comment={width=3cm}{example-image-a.pdf}}
+This is a \LaTeX\ example.
+\end{tcblisting}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2014-11-07]{comment above* listing}{}{no value}
+ Widely equal to \refKey{/tcb/comment above listing}, but the outside comment is
+ not formatted with the lower part options.
+ Also, it is not put into a minipage and it may span several pages.
+ The distance between box and comment is controlled by \refKey{/tcb/before}.
+\end{docTcbKey}
+
+
+\clearpage
+\subsection{Option Keys for Processing and Full Document Examples}\label{sec:proclistingkeys}
+A complete \LaTeX\ document including |\documentclass|, |\begin{document}|
+and |\end{document}| cannot be processed directly by |tcolorbox|.
+It always has to be compiled separately. There are two methods supported
+by the package to process and display such a full document example:
+\begin{itemize}
+\item Prepare and compile the example document independent from your main
+ document. The source file and the resulting PDF file can be included
+ into the main document afterwards. This is the most economic way since
+ the example document can be left untouched after the example is complete.
+\item The other possibility is to compile the example on the fly while
+ the main document is compiled. This way has some charm, because the
+ example can be edited inside the main document. But be aware that the
+ compilation of the example is issued on every run of the main document.
+ Also, there are fewer degrees of freedom how the example is compiled.
+\end{itemize}
+
+For both methods, the resulting example PDF file can be included
+as a \refKey{/tcb/pdf comment}.
+
+The following example shows how to apply the first method.
+There already is a file |tcolorbox-example.tex| and a PDF file
+|tcolorbox-example.pdf|. Both of them are input partly by the following:
+
+\begin{dispListing}
+% \tcbuselibrary{breakable,skins,raster}
+\tcbinputlisting{
+ enhanced jigsaw,breakable,pad at break*=2mm,height fixed for=first and middle,
+ lower separated=false,
+ leftlower=0pt,rightlower=0pt,middle=0pt,
+ colframe=red!50!black,colback=yellow!10!white,
+ listing and comment,
+ listing file={tcolorbox-example},
+ listing options=
+ {style=tcblatex,texcsstyle=*\color{red!70!black},firstline=20,lastline=85},
+ after upper={\par\bigskip\texttt{\ldots}\par},
+ pdf comment,
+ comment style={drop lifted shadow,graphics pages={1,...,4}},
+}
+\end{dispListing}
+{\tcbusetemp}
+
+
+\clearpage
+
+
+\begin{docTcbKey}[][doc new=2014-11-14]{no process}{}{no default}
+ Removes all processing commands if set before.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2014-11-14]{process code}{=\meta{code}}{no default, initially empty}
+ Adds \meta{code} which is executed during \refCom{tcbinputlisting}
+ and \refEnv{tcblisting}. At the time of executing the given \meta{code},
+ the listing is already written to \refKey{/tcb/listing file}, but
+ the colored box is not constructed yet.
+ Its intended use is to process the listing somehow before displaying.
+ The processing result can be used inside a \refKey{/tcb/comment}.
+ Several \refKey{/tcb/process code} options can be given which are
+ processed in the given order.
+ Typically, \meta{code} is added by using the following styles
+ \refKey{/tcb/run system command}, \refKey{/tcb/run pdflatex}, etc.
+\end{docTcbKey}
+
+\begin{marker}
+To use the further options, the compiler has to be called with the
+|-shell-escape| permission to authorize potentially dangerous system calls.
+Be warned that this is a security risk. Anyway, it's more economic to
+compile examples independent from the main document and to include them as
+shown in the previous pages.
+\end{marker}
+
+\begin{docTcbKey}[][doc new=2014-11-14]{run system command}{=\meta{system command}}{style, no default, initially unset}
+Runs a \meta{system command}, if the document is compiled with the
+|-shell-escape| permission.
+The current listing file can be accessed as |\filename@area\filename@base\filename@ext|.
+This \meta{system command} is added to \refKey{/tcb/process code}.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new and updated={2014-11-14}{2016-05-27}]{compilable listing}{}{style, no default}
+ Sets \refKey{/tcb/listing file} to |\jobname|\texttt{-listing-}\meta{counter}.
+ \begin{marker}
+ The default \refKey{/tcb/listing file} setting cannot be used to compile
+ a listing, since the base name equals the |\jobname| and the included PDF
+ files should be unique.
+ Therefore, to use \refKey{/tcb/run pdflatex} etc., the \refKey{/tcb/listing file}
+ has to be set to a unique value.
+ One may use \refKey{/tcb/compilable listing} for this purpose.
+ \end{marker}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2014-11-14]{run pdflatex}{\colOpt{=\meta{arguments}}}{style, no default, initially unset}
+Issues a |pdflatex| compilation of the listing with the given \meta{arguments}.
+\begin{itemize}
+\item The main document has to be compiled with the |-shell-escape| permission.
+\item The \refKey{/tcb/listing file} has to be unique for the listing.
+\item If the listing has to be compiled twice, add |run pdflatex| two times to
+ the option list.
+\end{itemize}
+
+\begin{dispListing*}{breakable,enhanced,pad at break*=2mm,before upper=,after skip=3mm}
+\begin{tcblisting}{enhanced jigsaw,lower separated=false,
+ leftlower=0pt,rightlower=0pt,
+ colframe=red!50!black,colback=yellow!10!white,
+ listing options={style=tcblatex,texcsstyle=*\color{red!70!black}},
+ listing and comment,
+ pdf comment,freeze pdf,
+ compilable listing,
+ run pdflatex
+}
+\documentclass{beamer}
+\usetheme{Warsaw}
+\begin{document}
+\begin{frame}{Beamer example}
+ \begin{block}{Hello World}
+ \begin{itemize}[<+->]
+ \item One
+ \item Two
+ \end{itemize}
+ \end{block}
+
+ \begin{alertblock}{Integral}
+ \begin{equation}
+ \visible<3->{\int\limits_1^x \frac{1}{t}~dt}
+ \visible<4->{ = \ln(x).}
+ \end{equation}
+ \end{alertblock}
+\end{frame}
+\end{document}
+\end{tcblisting}
+\end{dispListing*}
+{\tcbusetemp}
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}[][doc new=2014-11-14]{run xelatex}{\colOpt{=\meta{arguments}}}{style, no default, initially unset}
+Issues a |xelatex| compilation of the listing with the given \meta{arguments}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2014-11-14]{run lualatex}{\colOpt{=\meta{arguments}}}{style, no default, initially unset}
+Issues a |lualatex| compilation of the listing with the given \meta{arguments}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2014-11-14]{run makeindex}{\colOpt{=\meta{arguments}}}{style, no default, initially unset}
+Issues a |makeindex| compilation of the listing with the given \meta{arguments}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2014-11-14]{run bibtex}{\colOpt{=\meta{arguments}}}{style, no default, initially unset}
+Issues a |bibtex| compilation of the listing with the given \meta{arguments}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2014-11-14]{run biber}{\colOpt{=\meta{arguments}}}{style, no default, initially unset}
+Issues a |biber| compilation of the listing with the given \meta{arguments}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2014-11-14]{run arara}{\colOpt{=\meta{arguments}}}{style, no default, initially unset}
+Issues an |arara| compilation of the listing with the given \meta{arguments}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2014-11-14]{run latex}{\colOpt{=\meta{arguments}}}{style, no default, initially unset}
+Issues a |latex| compilation of the listing with the given \meta{arguments}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2014-11-14]{run dvips}{\colOpt{=\meta{arguments}}}{style, no default, initially unset}
+Issues a |dvips| compilation of the listing with the given \meta{arguments}.
+\end{docTcbKey}
+
+\enlargethispage*{1cm}
+\begin{docTcbKey}[][doc new=2014-11-14]{run ps2pdf}{\colOpt{=\meta{arguments}}}{style, no default, initially unset}
+Issues a |ps2pdf| compilation of the listing with the given \meta{arguments}.
+\end{docTcbKey}
+
+\begin{dispListing*}{breakable,enhanced,pad at break*=2mm,before upper=,after skip=3mm}
+\begin{tcblisting}{enhanced jigsaw,
+ title={PSTricks with pdflatex},fonttitle=\bfseries,
+ colframe=red!50!black,colback=yellow!10!white,
+ listing options={style=tcblatex,texcsstyle=*\color{red!70!black}},
+ lower separated=false,middle=0pt,
+ listing side comment,righthand width=4cm,
+ compilable listing,
+ run latex,run dvips,run ps2pdf,
+ pdf comment,freeze pdf,
+ comment style={raster columns=1,
+ graphics options={viewport=0.5in 7.7in 3.5in 10.5in,clip}},
+}
+\documentclass{article}
+\usepackage{pstricks,multido}
+\begin{document}
+\psset{unit=3}%
+\multido{\nHue=0.01+0.01}{100}{%
+\definecolor{MyColor}{hsb}{\nHue,1,1}%
+\pscircle[linewidth=0.01,linecolor=MyColor]{\nHue}}
+\end{document}
+\end{tcblisting}
+\end{dispListing*}
+{\tcbusetemp}
+
+\clearpage
+
+\begin{marker}
+ For most applications, you will like to add \refKey{/tcb/freeze pdf} as option,
+ since the included |pdf| file is only refreshed, if the source for this file
+ has changed.
+\end{marker}
+
+\begin{docTcbKey}[][doc new=2016-07-14]{freeze file}{=\meta{file}}{no default, initially unset}
+ Observes some \meta{file}, usually the final file produced by \refKey{/tcb/process code},
+ \refKey{/tcb/run system command}, \refKey{/tcb/run pdflatex}, etc.
+ If the MD5 checksum of the current \refKey{/tcb/listing file} is unchanged
+ and \meta{file} exists, the processing is skipped and
+ the \meta{file} is kept (frozen).
+ Typically, the style \refKey{/tcb/freeze pdf} can be used for
+ convenience.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2016-07-14]{freeze none}{}{no default, initially set}
+ Freeze no file and always execute the given process commands.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2016-07-14]{freeze extension}{=\meta{text}}{style, no default}
+ Calls \refKey{/tcb/freeze file} with the current \refKey{/tcb/listing file}
+ stripped with its extension plus \meta{text} as new extension.
+\begin{dispListing}
+ ...
+ listing file=myfile.tex,
+ freeze extension=-modified.pdf, % -> myfile-modified.pdf is observed
+ ...
+\end{dispListing}
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2016-07-14]{freeze pdf}{}{no value}
+ Calls \refKey{/tcb/freeze file} with the current \refKey{/tcb/listing file}
+ stripped with its extension plus |.pdf| as new extension.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2016-07-14]{freeze png}{}{no value}
+ Calls \refKey{/tcb/freeze file} with the current \refKey{/tcb/listing file}
+ stripped with its extension plus |.png| as new extension.
+ See the examples for \refKey{/tcb/run pdflatex} and \refKey{/tcb/run ps2pdf}.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2016-07-14]{freeze jpg}{}{no value}
+ Calls \refKey{/tcb/freeze file} with the current \refKey{/tcb/listing file}
+ stripped with its extension plus |.jpg| as new extension.
+\end{docTcbKey}
+
+
+
+
+\clearpage
+\subsection{Creation of \LaTeX\ Tutorials}\label{sec:latextutorial}
+The following source code gives a guideline for the creation of \LaTeX\ tutorials.
+In the next section, a framework for \LaTeX\ exercises is described.
+All examples shall be numbered optionally.
+
+Firstly, some additional |tcb| keys are defined for the appearance.
+For the examples, three environments |texexp|, |texexptitled|,
+and |texexptitledspec| are defined with automatic numbering.
+
+\begin{itemize}
+\item |texexp| is used for untitled examles,
+\item |texexptitled| is used for titled examles,
+\item |texexptitledspec| is used for titled examles with special treatment.
+\end{itemize}
+
+\inputpreamblelisting{D}
+
+\begin{dispExample}
+\begin{tcblisting}{texexp}
+This is a \LaTeX\ example which displays the text as source code
+and in compiled form.
+\end{tcblisting}
+\end{dispExample}
+
+
+\begin{dispExample}
+\begin{texexptitled}{First example with a title line}{firstExample}
+Here, we use Example \ref{firstExample} with a title line.
+\end{texexptitled}
+\end{dispExample}
+
+
+\begin{dispExample}
+\begin{texexp}{}
+This is a \LaTeX\ example which displays the text as source code
+and in compiled form.
+\end{texexp}
+\end{dispExample}
+
+
+\begin{dispExample}
+\begin{texexp}{text and listing}
+This is a \LaTeX\ example which displays the text as source code
+and in compiled form.
+\end{texexp}
+\end{dispExample}
+
+
+\begin{dispExample}
+\begin{texexp}{listing only}
+This is a \LaTeX\ example which displays the text as source code only.
+\end{texexp}
+\end{dispExample}
+
+
+\begin{dispExample}
+\begin{texexp}{text only}
+This is a \LaTeX\ example which displays the text in compiled form only.
+\end{texexp}
+\end{dispExample}
+
+
+\begin{dispExample}
+\begin{texexptitled}{An Example with a Heading}{heading1}
+This is a \LaTeX\ example with a numbered heading line
+which can be referred to.
+\end{texexptitled}
+Here, we see Example \ref{heading1}.
+\end{dispExample}
+
+
+\begin{dispExample}
+\begin{texexptitled}[listing only]{Another Example with a Heading}{heading2}
+The keys can be used in combination. Here, an example with a heading line
+and source code only is given.
+\end{texexptitled}
+Here, we see Example \ref{heading2}.
+\end{dispExample}
+
+
+\begin{dispListing}
+\begin{texexptitled}[float]{A floating Example with a Heading}{heading3}
+This is another \LaTeX\ example with numbered heading line.
+But now, the box is a floating object.
+\end{texexptitled}
+\end{dispListing}
+\tcbusetemp
+
+\begin{dispExample}
+The floating box of the last example is seen as Example \ref{heading3}
+on page \pageref{heading3}.
+\end{dispExample}
+
+
+\begin{dispExample}
+\begin{texexptitledspec}{Special application}{texexpbox1}
+\begin{lstlisting}[style=tcblatex]
+Some \LaTeX\ source code.
+\end{lstlisting}
+\tcblower
+For special cases, the environment |texexptitledspec| with style
+|example| can be used directly. As one can see, the upper and the lower
+part of the box can be used uncoupled also.
+\end{texexptitledspec}
+\end{dispExample}
+
+
+The following series of examples demonstrate the application of
+\refEnv{tcolorbox} options for diversification.
+
+\begin{dispExample}
+\begin{texexptitled}{How to use options (1):\par The basic example}{options1}
+\begin{tikzpicture}
+\path[fill=yellow!50!white] (0,0) circle (11mm);
+\path[fill=white] (0,0) circle (9mm);
+\foreach \w/\c in {90/red,210/green,330/blue}
+{\path[shading=ball,ball color=\c] (\w:1cm) circle (7mm);}
+\end{tikzpicture}
+\end{texexptitled}
+\end{dispExample}
+
+
+\begin{dispExample}
+\begin{texexptitled}[center lower,enhanced,segmentation hidden,middle=0mm]
+ {How to use options (2):\par The text output is centered and the
+ segmentation line has vanished.}{options2}
+\begin{tikzpicture}
+\path[fill=yellow!50!white] (0,0) circle (11mm);
+\path[fill=white] (0,0) circle (9mm);
+\foreach \w/\c in {90/red,210/green,330/blue}
+{\path[shading=ball,ball color=\c] (\w:1cm) circle (7mm);}
+\end{tikzpicture}
+\end{texexptitled}
+\end{dispExample}
+
+\begin{dispExample}
+\begin{texexptitled}[tikz lower,bicolor,colbacklower=white]
+ {How to use options (3):\par Here, the |tikzpicture| is totally hidden.
+ The |bicolor| skin highlights the output.}{options3}
+\path[fill=yellow!50!white] (0,0) circle (11mm);
+\path[fill=white] (0,0) circle (9mm);
+\foreach \w/\c in {90/red,210/green,330/blue}
+{\path[shading=ball,ball color=\c] (\w:1cm) circle (7mm);}
+\end{texexptitled}
+\end{dispExample}
+
+\begin{dispExample}
+\begin{texexptitled}[center lower,listing side text,righthand width=3.5cm,
+ bicolor,colbacklower=white]
+ {How to use options (4):\par The |bicolor| skin also works with side
+ by side mode}{options4}
+\begin{tikzpicture}
+\path[fill=yellow!50!white] (0,0) circle (11mm);
+\path[fill=white] (0,0) circle (9mm);
+\foreach \w/\c in {90/red,210/green,330/blue}
+{\path[shading=ball,ball color=\c]
+ (\w:1cm) circle (7mm);}
+\end{tikzpicture}
+\end{texexptitled}
+\end{dispExample}
+
+
+\begin{dispExample}
+\begin{texexptitled}[center lower,listing outside text,righthand width=3.5cm]
+ {How to use options (5):\par Putting our picture outside is just
+ a matter of one word.}{options5}
+\begin{tikzpicture}
+\path[fill=yellow!50!white] (0,0) circle (11mm);
+\path[fill=white] (0,0) circle (9mm);
+\foreach \w/\c in {90/red,210/green,330/blue}
+{\path[shading=ball,ball color=\c]
+ (\w:1cm) circle (7mm);}
+\end{tikzpicture}
+\end{texexptitled}
+\end{dispExample}
+
+
+\begin{dispExample}
+\begin{texexptitled}[center lower,text above listing]
+ {How to use options (6):\par The picture may also be put above
+ the listing box.}{options6}
+\begin{tikzpicture}
+\path[fill=yellow!50!white] (0,0) circle (11mm);
+\path[fill=white] (0,0) circle (9mm);
+\foreach \w/\c in {90/red,210/green,330/blue}
+{\path[shading=ball,ball color=\c]
+ (\w:1cm) circle (7mm);}
+\end{tikzpicture}
+\end{texexptitled}
+\end{dispExample}
+
+
+\begin{dispExample}
+\begin{texexptitled}[beamer,center lower,text outside listing,lefthand width=3.5cm]
+ {How to use options (7):\par Our style is easily transformed into
+ a beamerish one.}{options7}
+\begin{tikzpicture}
+\path[fill=yellow!50!white] (0,0) circle (11mm);
+\path[fill=white] (0,0) circle (9mm);
+\foreach \w/\c in {90/red,210/green,330/blue}
+{\path[shading=ball,ball color=\c]
+ (\w:1cm) circle (7mm);}
+\end{tikzpicture}
+\end{texexptitled}
+\end{dispExample}
+
+
+\clearpage
+\subsection{Creation of \LaTeX\ Exercises}\label{listing:exercises}
+In the following, a guideline is given for the creation of \LaTeX\ exercises
+with solutions. These solutions are saved to disk for application at a place of
+choice.
+Therefore, all used exercises are logged to a file |\jobname.records| for automatic
+processing. The solution contents themselves are saved to a subdirectory named
+|solutions|. Also see \Vref{sec:recording}.
+
+\begin{itemize}
+\item Before the first exercise is given,
+ \refCom{tcbstartrecording} has to be called to start recording.
+\item The solution is given as content of a \refEnv{tcboutputlisting}
+ environment. Note, that you can use this content also inside the
+ exercise with \refCom{tcbuselistingtext} in compiled form.
+\item After the last exercise is given (and before using the solutions),
+ \refCom{tcbstoprecording} has to be called to stop recording.
+\item The solutions are loaded by \refCom{tcbinputrecords}.
+\end{itemize}
+
+Inside the exercise text, there may be text parts which are needed as
+\LaTeX\ source code and as compiled text as well. These parts can be
+saved by \refEnv{tcbwritetemp} and used in compiled form by \refCom{tcbusetemp}
+or as source code by \refCom{tcbusetemplisting}.
+
+At first, we generate some a common style for the exercises and the
+solutions. Further, since exercises and solutions should
+be numbered, we force to use a label \meta{marker}.
+Automatically, the label |exe:|\meta{marker} is used to mark the exercise
+and the label |sol:|\meta{marker} is used to mark the solution.
+
+\begin{dispListing}
+\tcbset{texercisestyle/.style={arc=0.5mm, colframe=blue!25!yellow!90!white,
+ colback=blue!25!yellow!5!white, coltitle=blue!25!yellow!40!black,
+ fonttitle=\small\sffamily\bfseries, fontupper=\small, fontlower=\small,
+ listing options={style=tcblatex,texcsstyle=*\color{red!40!black}},
+}}
+\end{dispListing}
+\tcbusetemp
+
+With these preparations, the kernel environment |texercise| for our
+exercises is created quickly:
+
+\inputpreamblelisting{E}
+
+\clearpage
+The following examples demonstrate the application.
+
+\begin{dispListing}
+\tcbstartrecording
+\end{dispListing}
+\tcbusetemp
+
+
+\begin{dispExample}
+\begin{texercise}{tabular_example}
+\textit{Create the following table:}\par\smallskip%
+\begin{tcboutputlisting}
+\begin{tabular}{|p{3cm}|p{3cm}|p{3cm}|p{3cm}|}\hline
+\multicolumn{4}{|c|}{\bfseries\itshape Das alte Italien}\\\hline
+\multicolumn{2}{|c|}{\bfseries Antike} &
+\multicolumn{2}{c|}{\bfseries Mittelalter}\\\hline
+\multicolumn{1}{|c|}{\itshape Republik}&
+\multicolumn{1}{c|}{\itshape Kaiserreich}&
+\multicolumn{1}{c|}{\itshape Franken}&
+\multicolumn{1}{c|}{\itshape Teilstaaten}\\\hline
+In den Zeiten der r\"{o}mischen Republik standen dem Staat jeweils zwei
+Konsuln vor, deren Machtbefugnisse identisch waren. &
+Das r\"{o}mische Kaiserreich wurde von einem Alleinherrscher, dem Kaiser,
+regiert.
+& In der V\"{o}lkerwanderungszeit \"{u}bernahmen die Goten und sp\"{a}ter die
+Franken die Vorherrschaft.
+& Im sp\"{a}teren Mittelalter regierten F\"{u}rsten einen Fleckenteppich
+von Einzelstaaten.\\\hline
+\end{tabular}
+\end{tcboutputlisting}
+\tcbuselistingtext%
+\end{texercise}
+\end{dispExample}
+
+
+\begin{dispExample}
+\begin{texercise}{macro_oneparam}
+\begin{tcboutputlisting}
+\newcommand{\headingline}[1]{%
+ \begin{center}\Large\bfseries #1\end{center}}
+\end{tcboutputlisting}
+\tcbuselistingtext%
+
+Create a new macro \verb+\headingline+ which produces the
+following output:\par\smallskip
+\begin{tcbwritetemp}
+\headingline{Very important heading}
+\end{tcbwritetemp}
+\tcbusetemplisting\tcbusetemp%
+\end{texercise}
+\end{dispExample}
+
+
+
+\begin{dispExample}
+\begin{texercise}{macro_twoparam}
+\begin{tcboutputlisting}
+\newcommand{\minitable}[2]{%
+ \begin{center}\begin{tabular}{p{10cm}}\hline%
+ \multicolumn{1}{c}{\bfseries#1}\\\hline%
+ #2\\\hline%
+ \end{tabular}\end{center}}
+\end{tcboutputlisting}
+\tcbuselistingtext%
+Create a new macro \verb+\minitable+ which produces the
+following output:\par\smallskip
+\begin{tcbwritetemp}
+\minitable{My heading}{In this tiny tabular, there is only a heading
+ and some text below which has a width of ten centimeters.}
+\end{tcbwritetemp}
+\tcbusetemplisting\par\smallskip\tcbusetemp%
+\end{texercise}
+\end{dispExample}
+
+
+\begin{dispExample}
+\begin{texercise}{macro_threeparam}
+\begin{tcboutputlisting}
+\newcommand{\synop}[3]{%
+ \begin{tabular}{@{}p{(\linewidth-\tabcolsep*2-\arrayrulewidth)/2}|%
+ p{(\linewidth-\tabcolsep*2-\arrayrulewidth)/2}@{}}\hline
+ \multicolumn{2}{c}{\bfseries #1}\\\hline
+ \multicolumn{1}{c|}{\itshape English}&
+ \multicolumn{1}{c}{\itshape German}\\\hline
+ #2 & #3
+ \end{tabular}}
+\end{tcboutputlisting}
+\tcbuselistingtext%
+Create a new macro \verb+\synop+ which typesets a synoptic text according
+to the following example. Base your macro on a tabular which takes the
+total line width.\par\smallskip
+\begin{tcbwritetemp}
+\synop{Neil Armstrong}%
+{That's one small step for a man, one giant leap for mankind.}%
+{Das ist ein kleiner Schritt f\"{u}r einen Mann,
+ ein riesiger Sprung f\"{u}r die Menschheit.}
+\end{tcbwritetemp}
+\tcbusetemplisting\par\smallskip\tcbusetemp%
+\end{texercise}
+\end{dispExample}
+%\closeoutsol
+
+\begin{dispListing}
+\tcbstoprecording
+\end{dispListing}
+\tcbusetemp
+
+\bigskip
+
+Now, we give a list of all exercises with:
+
+\begin{dispListing}
+\tcblistof[\subsection]{exam}{List of Exercises%
+ \label{listofexercises}}
+\end{dispListing}
+\tcbusetemp
+
+\clearpage
+\subsection{Solutions for the given \LaTeX\ Exercises}
+
+For all solutions, a macro |\processsol| was written to the file |\jobname.records|.
+Now, we need a definition for this macro to use the solutions.
+
+\begin{dispListing}
+% \usepackage{hyperref} % for phantomlabel
+\newtcbinputlisting{\processsol}[2]{%
+ texercisestyle,
+ listing only,
+ listing file={#1},
+ phantomlabel={sol:#2},%
+ title={Solution for Exercise \ref{exe:#2} on page \pageref{exe:#2}},
+}
+\end{dispListing}
+\tcbusetemp
+
+The loading of all solutions is done by:
+
+\begin{dispListing}
+\tcbinputrecords
+\end{dispListing}
+
+With this, we get:
+
+\tcbusetemp
+
+
+
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.magazine.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.magazine.tex
new file mode 100644
index 0000000000..bf9c106bc4
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.magazine.tex
@@ -0,0 +1,516 @@
+% !TeX root = tcolorbox.tex
+% include file of tcolorbox.tex (manual of the LaTeX package tcolorbox)
+\clearpage
+\section{Library \mylib{magazine}}\label{sec:magazine}%
+\tcbset{external/prefix=external/magazine_}%
+\newboxarray{myarticle}
+
+\begin{tcolorbox}[
+ enhanced jigsaw,
+ size=small,width=6cm,
+ title=Example Article,
+ fonttitle=\bfseries,center title,
+ fontupper=\small,
+ %height fixed for=first and middle,
+ watermark text=\arabic{tcbbreakpart},
+ breakable,
+ break at=8.5\baselineskip/9\baselineskip,
+ reset and store to box array=myarticle,
+ colframe=green!50!black,
+ colback=green!10,
+ pad at break=5mm,
+ ]
+This is an example for an article which starts right here and
+is continued to the following pages.
+The body text for the article is written inside a single
+|tcolorbox|. This box is split into parts using the tools from
+this section, namely \refKey{/tcb/reset and store to box array}
+with a new box array |myarticle| which was created by
+|\newboxarray{myarticle}|.
+
+The resulting parts are distributed throughout this
+\Fullref{sec:magazine} using \refCom{consumetcboxarray}
+at the appropriate places you see.
+The linking texts like \emph{continued on page x} are created
+by \refKey{/tcb/finish} commands for the embedding \refCom{tcbox}.
+To label the box parts, \refKey{/tcb/phantomlabel} is used.
+
+These quite small partial boxes are for demonstration purposes.
+With the tools of this section, a magazine type document could be
+created, but this still needs a lot of manual control.
+\end{tcolorbox}
+
+\newtcolorbox{articleside}[1][]{blanker,sidebyside,sidebyside gap=5mm,sidebyside align=top seam,
+ parbox=false,righthand width=6cm,
+ goto/.style={finish={\node[above=-2pt,color=green!50!black] at (frame.south)
+ {\slshape\scriptsize --- continued on page~\hypersetup{linkcolor=green!50!black}\pageref{myarticle-##1}\ \textcolor{green!50!black}{---}};}},
+ from/.style={finish={\node[below=-1pt,color=green!50!black] at (frame.north)
+ {\slshape\scriptsize --- continued from page~\hypersetup{linkcolor=green!50!black}\pageref{myarticle-##1}\ \textcolor{green!50!black}{---}};}},
+ #1}
+
+\begin{articleside}[after skip=6pt]
+The main purpose of this library is to store a |tcolorbox| into an array
+of box registers for later usage.
+
+If the |tcolorbox| is not breakable, there is not much add-on
+compared to usual \TeX/\LaTeX\ box storage and usage (and you do not really need this
+library for that use case).
+For a breakable |tcolorbox|, this library allows to capture all partial boxes
+into a sequence of registers. The partial boxes can be used anywhere in
+arbitrary order.
+\tcblower\consumetcboxarray[myarticle]{1}{blanker,nobeforeafter,phantomlabel=myarticle-one,goto=two}
+\end{articleside}
+
+The name of this library indicates \emph{magazine} in the sense of storage,
+but also in the sense of a journal where an article often is \emph{continued on page x}.
+An example for this kind of application is given throughout this section starting
+on the right hand side. The creation of this library was motivated by
+Ulrike Fischer and Steven B.~Segletes.
+
+The library is loaded by a package option or inside the preamble by:
+\begin{dispListing}
+ \tcbuselibrary{magazine}
+\end{dispListing}
+This also loads the library \mylib{breakable}, see \Fullref{sec:breakable}.
+
+\begin{marker}
+The box register operations of this library are global. \TeX\ grouping will
+not clear the registers when leaving the current group. Also be aware that
+extensive use of large box arrays may eat up \TeX's available memory and
+registers.
+\end{marker}
+
+\subsection{Creation and Resetting of Box Arrays}\label{subsec:magazine_creation}
+
+\begin{docCommand}[doc new=2015-07-13]{newboxarray}{\marg{name}}
+ This creates a new box array called \meta{name}. There already is a
+ box array available with name |default| which can be used directly.
+ Note that the creation is a global operation.
+\begin{dispListing}
+\newboxarray{myarray}
+\end{dispListing}
+\end{docCommand}
+
+
+\begin{docCommand}[doc new=2015-07-13]{boxarrayreset}{\oarg{name}}
+ Resets the size counter of a box array \meta{name} to zero.
+ If \meta{name} is not provided, |default| is used as name.
+ Use this or \refKey{/tcb/reset box array} before
+ you apply \refKey{/tcb/store to box array}. Otherwise, all boxes would
+ be appended to the already existing boxes.
+ This command does not clear box registers.
+\begin{dispListing}
+\boxarrayreset % resets 'default'
+\boxarrayreset{myarray} % resets 'myarray'
+\end{dispListing}
+\end{docCommand}
+
+\enlargethispage*{20mm}
+
+\begin{docTcbKey}[][doc new=2015-07-13]{reset box array}{\colOpt{=\meta{name}}}{default |default|, initially unset}
+ Resets the size counter of a box array \meta{name} to zero.
+ Use this or \refCom{boxarrayreset} (which does the same) before
+ you apply \refKey{/tcb/store to box array}.
+\begin{dispListing}
+\tcbset{
+ reset box array, % resets 'default'
+ reset box array=myarray, % resets 'myarray'
+}
+\end{dispListing}
+\end{docTcbKey}
+
+\clearpage
+\begin{docCommand}[doc new=2015-07-13]{boxarrayclear}{\oarg{name}}
+ Works like \refCom{boxarrayreset} to reset the size counter of a
+ box array \meta{name} to zero. Additionally, all allocated box registers
+ of the box array are cleared of their content.
+ Note that the allocated box registers stay allocated. So, this may be
+ useful to clear memory, but not to free registers for other applications.
+ If \refCom{consumeboxarray} or \refCom{consumetcboxarray} was used to
+ apply the stored boxes, there is no advantage in using \refCom{boxarrayclear}.
+\begin{dispListing}
+\boxarrayclear % clears 'default'
+\boxarrayclear{myarray} % clears 'myarray'
+\end{dispListing}
+\end{docCommand}
+
+
+
+\subsection{Storing Content}\label{subsec:magazine_storing}
+
+\begin{docTcbKey}[][doc new=2015-07-13]{store to box array}{\colOpt{=\meta{name}}}{default |default|, initially unset}
+Stores a |tcolorbox| or all parts of a break sequence of a |tcolorbox| into
+a box array \meta{name}. If no \meta{name} is given, the already existing |default|
+box array is used. Otherwise, the box array has to be created beforehand
+with \refCom{newboxarray}. Note that the box has to be \refKey{/tcb/breakable},
+if the box shall break into several parts.
+Typically, manual break points are additionally defined by \refKey{/tcb/break at}.
+Otherwise, the box parts will have a length of about |\textheight|.
+For most use cases, a \refKey{/tcb/reset box array} should be applied
+to reset the box array counter.\enlargethispage*{2cm}
+
+\begin{exdispExample}{storetoboxarray_1}
+% \usepackage{lipsum}
+\begin{tcolorbox}[enhanced jigsaw,size=fbox,width=4cm,
+ colback=yellow!10,colframe=yellow!10!black,
+ enforce breakable,% use only breakable in the real world!
+ break at=7cm/4cm,
+ height fixed for=all,
+ watermark text=\arabic{tcbbreakpart},
+ reset box array,
+ store to box array
+ ]
+\lipsum[1]
+\end{tcolorbox}
+
+\useboxarray{1}\hfill
+\begin{tabular}[b]{cc}
+\multicolumn{2}{c}{\includegraphics[width=7cm]{Basilica_5.png}}\\
+\useboxarray{2} & \useboxarray{3}
+\end{tabular}
+\end{exdispExample}
+
+\clearpage
+If the first box part should fill the rest of the available space of
+the current page, you can use |\pagegoal-\pagetotal| minus some distance for
+the first element of \refKey{/tcb/break at}. You may want to have some
+additional distance to the preceeding text.
+
+\begin{dispListing}
+% \usepackage{lipsum}
+\begin{tcolorbox}[enhanced,breakable,
+ reset box array,
+ store to box array,
+ break at=\pagegoal-\pagetotal-5mm/0pt,
+ height fixed for=first and middle]
+\lipsum[1-15]
+\end{tcolorbox}%
+%
+\consumetcboxarray{1}{blanker,before=\par\vfill\noindent}
+\end{dispListing}
+
+
+\begin{exdispExample}{storetoboxarray_2}
+\begin{tcolorbox}[blanker,width=4cm,
+ fontupper=\footnotesize,
+ enforce breakable,% use only breakable in the real world!
+ break at=4cm,
+ height fixed for=all,
+ watermark text=\arabic{tcbbreakpart},
+ reset box array,
+ store to box array
+ ]
+\includegraphics[width=\linewidth]{Basilica_5.png}\par
+\lipsum[1-2]
+\end{tcolorbox}
+
+\begin{tcbitemize}[raster columns=3,raster equal height,
+ size=small,halign=center,sharp corners,colback=blue!5]
+\tcbitem\consumeboxarray{5}
+\tcbitem\consumeboxarray{6}
+\tcbitem\consumeboxarray{1}
+\tcbitem\consumeboxarray{2}
+\tcbitem\consumeboxarray{3}
+\tcbitem\consumeboxarray{4}
+\end{tcbitemize}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2015-07-13]{reset and store to box array}{\colOpt{=\meta{name}}}{style, default |default|, initially unset}
+ Combination of \refKey{/tcb/reset box array} and \refKey{/tcb/store to box array}.
+\end{docTcbKey}
+
+
+
+\begin{docTcbKey}[][doc new=2015-07-13]{do not store to box array}{}{style, no default, initially set}
+Disables the \refKey{/tcb/store to box array} option, if set before.
+\end{docTcbKey}
+
+
+\begin{docEnvironment}[doc new=2015-07-13]{boxarraystore}{\marg{name}}
+ Stores the environment content into a box array \meta{name}.
+ This corresponds to the standard \LaTeX\ environment |lrbox|, but
+ the storage operation is global. As long as \refCom{boxarrayreset} is
+ not used, every new \refEnv{boxarraystore} adds a further box to
+ the array.
+
+\begin{dispExample}
+\boxarrayreset
+\begin{boxarraystore}{default}\fbox{Mary}\end{boxarraystore}
+\begin{boxarraystore}{default}\fbox{Had}\end{boxarraystore}
+\begin{boxarraystore}{default}\fbox{a}\end{boxarraystore}
+\begin{boxarraystore}{default}\fbox{Little}\end{boxarraystore}
+\begin{boxarraystore}{default}\fbox{Lamb}\end{boxarraystore}
+\useboxarray{5}\useboxarray{4}\useboxarray{3}\useboxarray{2}\useboxarray{1}\hfill
+\useboxarray{1}\useboxarray{5}
+\end{dispExample}
+\end{docEnvironment}
+
+\subsection{Retrieving Content}\label{subsec:magazine_retrieve}
+
+\begin{docCommand}[doc new=2015-07-13]{boxarraygetsize}{\oarg{name}\marg{macro}}
+\begin{articleside}[before skip=5pt]
+ Stores the current size of a box array \meta{name} into a given \meta{macro}.
+ If no \meta{name} is given, the already existing |default| box array is used.
+\begin{dispExample}
+\boxarraygetsize{\mysize}
+Current size of the default box array:
+\mysize.
+\end{dispExample}
+\tcblower\consumetcboxarray[myarticle]{2}{blanker,nobeforeafter,phantomlabel=myarticle-two,from=one,goto=three}
+\end{articleside}
+\end{docCommand}
+
+\begin{docCommand}[doc new=2015-07-13]{useboxarray}{\oarg{name}\marg{index}}
+ Typesets the box with the given \meta{index} number from the box array \meta{name}.
+ If no \meta{name} is given, the already existing |default| box array is used.
+ It is considered an error, if a not existing box array \meta{name} is used.
+ It is silently ignored, if the \meta{index} is out of range.
+ Note that \refCom{useboxarray} corresponds to the standard |\usebox| macro,
+ respectively, |\copy|.
+\begin{dispExample}
+\boxarraygetsize{\mysize}
+\foreach \n in {1,...,\mysize} { \useboxarray{\n} }
+\end{dispExample}
+\end{docCommand}
+
+\clearpage
+\begin{docCommand}[doc new=2015-07-13]{usetcboxarray}{\oarg{name}\marg{index}\marg{options}}
+ Typesets the box with the given \meta{index} number from the box array \meta{name}
+ using \refCom{useboxarray} as content of a \refCom{tcbox}.
+ If no \meta{name} is given, the already existing |default| box array is used.
+ It is considered an error, if a not existing box array \meta{name} is used.
+ It is silently ignored, if the \meta{index} is out of range.
+ The \refCom{tcbox} can be customized by |tcolorbox| \meta{options}.
+\begin{dispExample}
+\boxarraygetsize{\mysize}
+\foreach \n in {1,...,\mysize} { \usetcboxarray{\n}{on line,colframe=yellow,
+ colback=yellow!10} }
+\end{dispExample}
+\end{docCommand}
+
+
+\begin{docCommand}[doc new=2015-07-13]{consumeboxarray}{\oarg{name}\marg{index}}
+ Typesets the box with the given \meta{index} number from the box array \meta{name}.
+ If no \meta{name} is given, the already existing |default| box array is used.
+ It is considered an error, if a not existing box array \meta{name} is used.
+ It is silently ignored, if the \meta{index} is out of range.
+ In contrast to \refCom{useboxarray},
+ \refCom{consumeboxarray} corresponds to the standard |\box| macro, i.e.
+ after typesetting the box register is cleared and cannot be used again.
+\begin{dispExample}
+\boxarraygetsize{\mysize}
+First run: \foreach \n in {1,...,\mysize} { \consumeboxarray{\n} }
+\par
+Second run: \foreach \n in {1,...,\mysize} { \consumeboxarray{\n} }
+\end{dispExample}
+\end{docCommand}
+
+
+\begin{docCommand}[doc new=2015-07-13]{consumetcboxarray}{\oarg{name}\marg{index}\marg{options}}
+\begin{articleside}[before skip=5pt]
+ Typesets the box with the given \meta{index} number from the box array \meta{name}
+ using \refCom{consumeboxarray} as content of a \refCom{tcbox}.
+ If no \meta{name} is given, the already existing |default| box array is used.
+ It is considered an error, if a not existing box array \meta{name} is used.
+ It is silently ignored, if the \meta{index} is out of range.
+ The \refCom{tcbox} can be customized by |tcolorbox| \meta{options}.
+ After typesetting the box register is cleared and cannot be used again.
+\tcblower\consumetcboxarray[myarticle]{3}{blanker,nobeforeafter,phantomlabel=myarticle-three,,from=two,goto=four}
+\end{articleside}
+\begin{exdispExample}{consumetcboxarray}
+% \usepackage{lipsum}
+\begin{tcolorbox}[enhanced jigsaw,size=fbox,width=6cm,
+ colback=yellow!10,colframe=yellow!10!black,
+ enforce breakable,% use only breakable in the real world!
+ break at=5cm,
+ watermark text=\arabic{tcbbreakpart},
+ reset and store to box array
+ ]
+\lipsum[1]
+\end{tcolorbox}
+
+\consumeboxarray{2} \hfill \consumeboxarray{1} \hfill \consumeboxarray{1}
+\end{exdispExample}
+\end{docCommand}
+
+
+\begin{docCommand}[doc new=2015-07-13]{boxarraygetbox}{\oarg{name}\marg{macro}\marg{index}}
+ Assigns the box with the given \meta{index} number from the box array \meta{name}
+ to a \meta{macro}.
+ If no \meta{name} is given, the already existing |default| box array is used.
+ It is considered an error, if a not existing box array \meta{name} is used.
+ If the \meta{index} is out of range, the \meta{macro} will be undefined.
+\begin{exdispExample}{boxarraygetbox}
+\tcbox[size=small,colframe=blue!20,colback=yellow!5,on line,
+ reset and store to box array]{Test}
+
+\boxarraygetsize{\mysize} Array size: \mysize
+
+\boxarraygetbox{\mybox}{1}
+Box width: \the\wd\mybox
+\quad\usebox{\mybox}
+\end{exdispExample}
+\end{docCommand}
+
+
+\begin{docCommand}[doc new=2017-06-27]{ifboxarrayempty}{\oarg{name}\marg{index}\marg{true}\marg{false}}
+ Tests the box with the given \meta{index} number from the box array \meta{name}
+ for emptiness be empty and executes \meta{true} if it is empty, and \meta{false} otherwise.
+ If no \meta{name} is given, the already existing |default| box array is used.
+ It is considered an error, if a not existing box array \meta{name} is used.
+\begin{exdispExample}{ifboxarrayempty}
+\tcbox[size=small,colframe=blue!20,colback=yellow!5,on line,
+ reset and store to box array]{Test}
+
+\ifboxarrayempty{1}{no Box~1}{Box~1: \useboxarray{1}},
+\ifboxarrayempty{2}{no Box~2}{Box~2: \useboxarray{2}}
+\end{exdispExample}
+\end{docCommand}
+
+
+\clearpage
+\subsection{Box Dimensions}\label{subsec:magazine_dimensions}
+
+\begin{docCommand}[doc new=2015-07-13]{boxarraygetwidth}{\oarg{name}\marg{macro}\marg{index}}
+ Assigns the width of the box with the given \meta{index} number from the box array \meta{name}
+ to a \meta{macro}.
+ If no \meta{name} is given, the already existing |default| box array is used.
+ It is considered an error, if a not existing box array \meta{name} is used.
+ If the \meta{index} is out of range, the \meta{macro} will be set to |0pt|.
+\begin{exdispExample}{boxarraygetwidth}
+\tcbox[size=small,colframe=blue!20,colback=yellow!5,on line,
+ reset and store to box array]{Test}
+
+\begin{tabular}{ll}
+\useboxarray{1} & width of box 1: \boxarraygetwidth{\mylen}{1} \mylen\\
+\useboxarray{2} & width of box 2: \boxarraygetwidth{\mylen}{2} \mylen
+\end{tabular}
+\end{exdispExample}
+\end{docCommand}
+
+
+\begin{docCommand}[doc new=2015-07-13]{boxarraygetheight}{\oarg{name}\marg{macro}\marg{index}}
+ Assigns the height of the box with the given \meta{index} number from the box array \meta{name}
+ to a \meta{macro}.
+ If no \meta{name} is given, the already existing |default| box array is used.
+ It is considered an error, if a not existing box array \meta{name} is used.
+ If the \meta{index} is out of range, the \meta{macro} will be set to |0pt|.
+\begin{exdispExample}{boxarraygetheight}
+\tcbox[size=small,colframe=blue!20,colback=yellow!5,on line,
+ reset and store to box array]{Test}
+
+\begin{tabular}{ll}
+\useboxarray{1} & height of box 1: \boxarraygetheight{\mylen}{1} \mylen\\
+\useboxarray{2} & height of box 2: \boxarraygetheight{\mylen}{2} \mylen
+\end{tabular}
+\end{exdispExample}
+\end{docCommand}
+
+
+\begin{docCommand}[doc new=2015-07-13]{boxarraygetdepth}{\oarg{name}\marg{macro}\marg{index}}
+ Assigns the depth of the box with the given \meta{index} number from the box array \meta{name}
+ to a \meta{macro}.
+ If no \meta{name} is given, the already existing |default| box array is used.
+ It is considered an error, if a not existing box array \meta{name} is used.
+ If the \meta{index} is out of range, the \meta{macro} will be set to |0pt|.
+\begin{exdispExample}{boxarraygetdepth}
+\tcbox[size=small,colframe=blue!20,colback=yellow!5,on line,
+ reset and store to box array]{Test}
+
+\begin{tabular}{ll}
+\useboxarray{1} & depth of box 1: \boxarraygetdepth{\mylen}{1} \mylen\\
+\useboxarray{2} & depth of box 2: \boxarraygetdepth{\mylen}{2} \mylen
+\end{tabular}
+\end{exdispExample}
+\end{docCommand}
+
+
+\clearpage
+\begin{docCommand}[doc new=2015-07-13]{boxarraygettotalheight}{\oarg{name}\marg{macro}\marg{index}}
+\begin{articleside}[before skip=5pt]
+ Assigns the total height of the box with the given \meta{index} number from the box array \meta{name}
+ to a \meta{macro}.
+ If no \meta{name} is given, the already existing |default| box array is used.
+ It is considered an error, if a not existing box array \meta{name} is used.
+ If the \meta{index} is out of range, the \meta{macro} will be set to |0pt|.
+\tcblower\consumetcboxarray[myarticle]{4}{blanker,nobeforeafter,phantomlabel=myarticle-four,from=three}
+\end{articleside}
+\begin{exdispExample}{boxarraygettotalheight}
+\boxarrayreset
+\tcbox[size=small,colframe=blue!20,colback=yellow!5,on line,
+ store to box array]{Test}
+
+\begin{tabular}{ll}
+\useboxarray{1} & total height of box 1: \boxarraygettotalheight{\mylen}{1} \mylen\\
+\useboxarray{2} & total height of box 2: \boxarraygettotalheight{\mylen}{2} \mylen
+\end{tabular}
+\end{exdispExample}
+\end{docCommand}
+
+\clearpage
+\subsection{Leaflet Example}
+The following full application example can be used to create leaflets.
+Obviously, the code can be adapted and customized in many ways.
+
+\begin{tcblisting}{
+ enhanced jigsaw,lower separated=false,breakable,
+ listing style=mydocumentation,base example,
+ listing and comment,
+ pdf comment,freeze pdf,
+ comment style={raster columns=1},
+ compilable listing,
+ run pdflatex}
+\documentclass[a4paper,landscape]{article}
+\usepackage[noheadfoot,margin=0pt]{geometry}
+\usepackage[skins,raster,magazine]{tcolorbox}
+\usepackage{lipsum}
+
+\newenvironment{leaflet}[1][]{%
+ \begin{tcolorbox}[nobeforeafter,empty,colback=white,
+ sharp corners,size=minimal,left=10mm,right=10mm,top=10mm,bottom=10mm,
+ width=\textwidth/3,
+ breakable,
+ break at=\textheight,
+ height fixed for=all,
+ reset box array,
+ store to box array,#1]}
+ {\end{tcolorbox}%
+ \begin{tcbitemize}[raster columns=3,raster equal skip=0pt,blankest]
+ \tcbitem\consumeboxarray{5}
+ \tcbitem\consumeboxarray{6}
+ \tcbitem\consumeboxarray{1}
+ \tcbitem\consumeboxarray{2}
+ \tcbitem\consumeboxarray{3}
+ \tcbitem\consumeboxarray{4}
+ \end{tcbitemize}%
+ }
+
+\pagestyle{empty}
+\begin{document}
+
+\begin{leaflet}[underlay={\node[above=5mm,font=\footnotesize]
+ at (frame.south) {- \arabic{tcbbreakpart} -};}]
+ \includegraphics[width=\linewidth]{Basilica_5.png}
+ \begin{center}
+ \bfseries\LARGE Example
+ \end{center}
+
+ \section{Introduction}
+ \lipsum[1]
+
+ \section{Main Part A}
+ \lipsum[2-8]
+
+ \section{Main Part B}
+ \lipsum[9-15]
+
+ \section{Conclusion}
+ \lipsum[16-18]
+\end{leaflet}
+
+\end{document}
+\end{tcblisting}
+
+
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.picturecredits.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.picturecredits.tex
new file mode 100644
index 0000000000..0b9db2bbd1
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.picturecredits.tex
@@ -0,0 +1,33 @@
+% !TeX root = tcolorbox.tex
+% include file of tcolorbox.tex (manual of the LaTeX package tcolorbox)
+\clearpage
+\section{Picture Credits}%
+\tcbset{external/prefix=external/picturecredits_}%
+The following pictures were used inside this documentation.
+
+\DeclareTotalTColorBox{\diabox}{ O{} v m }
+ { bicolor,fonttitle=\bfseries\ttfamily,adjusted title={#2},center title,
+ colframe=blue!20!black,leftupper=0mm,rightupper=0mm,colback=black!75!white,
+ finish vignette={size=1.5mm},#1}
+ { \tikz\path[fill zoom image={#2}] (0,0) rectangle (\linewidth,4cm);%
+ \tcblower#3}
+
+\begin{tcbraster}[raster equal height]
+\diabox{Basilica_5.png}{
+ \url{http://commons.wikimedia.org/wiki/File:Basilica_5.png}}
+\diabox{lichtspiel.jpg}{
+ Photograph taken by Thomas F.~Sturm.}
+\diabox{crinklepaper.png}{%
+ Created with |GIMP|.\\
+ \url{http://www.gimp.org}}
+\diabox{pink_marble.png}{%
+ Created with |GIMP|.\\
+ \url{http://www.gimp.org}}
+\diabox{blueshade.png}{%
+ Created with |GIMP|.\\
+ \url{http://www.gimp.org}}
+\diabox{goldshade.png}{%
+ Created with |GIMP|.\\
+ \url{http://www.gimp.org}}
+\end{tcbraster}
+
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.poster.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.poster.tex
new file mode 100644
index 0000000000..3be23c743a
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.poster.tex
@@ -0,0 +1,608 @@
+% !TeX root = tcolorbox.tex
+% include file of tcolorbox.tex (manual of the LaTeX package tcolorbox)
+\clearpage
+\section{Library \mylib{poster}}\label{sec:poster}%
+\tcbset{external/prefix=external/poster_}%
+
+The main purpose of this library is to support creation of single page posters
+with |tcolorbox|es.
+
+A \refEnv{tcbposter} is a |tikzpicture| where |tcolorbox|es can be
+placed in a column oriented manner using \refCom{posterbox} commands.
+This base concept is more or less copied from the great |baposter| package.
+
+The \mylib{raster} library, see \Fullref{sec:raster}, can produce
+similar looking results and may be more appropriate
+depending on the actual project.
+\begin{itemize}
+\item The \mylib{raster} library has a flow oriented concept, just like a
+ convential text flow. The text flow (box flow) is a merely endless ribbon
+ which gets broken into lines (and paragraphs) and the lines are broken
+ into pages. \mylib{raster} shapes the boxes to convenient sizes to fill
+ lines and pages in a pleasant way.
+\item The \mylib{tcbposter} library supports a quite free placement of
+ boxes inside a page.
+ Basically, boxes are placed like |node|s are placed inside a |tikzpicture|.
+ In contrast to \mylib{raster}, this is a \emph{single} page
+ and not a flow of pages.
+ The poster is divided into columns and rows.
+ There is a more or less gentle force to use the columns (or spans of columns)
+ for positioning and sizing while the row placement is completely optional.
+\end{itemize}
+The creation of this library was motivated by Ignasi.
+
+\begin{marker}
+Inside a |tikzpicture| there should be no embedded |tikzpicture|s.
+This rule is violated by the \mylib{poster} library. Be aware that there
+may be some unwanted interactions between the main |tikzpicture| and
+the embedded ones inside the |tcolorbox|es.
+\end{marker}
+
+The library is loaded by a package option or inside the preamble by:
+\begin{dispListing}
+\tcbuselibrary{poster}
+\end{dispListing}
+This also loads the libraries
+\mylib{skins}, see \Fullref{sec:skins},
+\mylib{breakable}, see \Fullref{sec:breakable},
+\mylib{magazine}, see \Fullref{sec:magazine}, and
+\mylib{fitting}, see \Fullref{sec:fitting}.
+
+
+%--------------------------
+\subsection{Overview}\label{subsec:poster_overview}
+
+
+\begin{tcolorbox}[base example,hyperurl={tcolorbox-tutorial-poster.pdf},title=Click me to see the tutorial]
+You get the best overview of the \mylib{poster} library and its facilities,
+if you look at the \textbf{Poster Tutorial} which is part of the |tcolorbox|
+documentation:\par
+\texttt{tcolorbox-tutorial-poster.pdf}
+\end{tcolorbox}
+
+
+
+\clearpage
+%--------------------------
+\subsection{Main Poster Environment}\label{subsec:poster_environment}
+
+\begin{docEnvironment}[doc new=2017-07-03]{tcbposter}{\oarg{options}}
+ This creates a |tikzpicture| environment with suitable additional
+ settings defined by the given \meta{options}.
+ Basically, \refCom{posterbox} and \refEnv{posterboxenv} are
+ used to place |tcolorboxes| as nodes into the environment,
+ but additional \tikzname\ code can also be used.
+ As \meta{options} all |/tcb/posterset/| keys may be applied, namely:
+\begin{itemize}
+\item\refKey{/tcb/posterset/poster}: poster settings like columns, rows, sizes\ldots
+\item\refKey{/tcb/posterset/coverage} and \refKey{/tcb/posterset/no coverage}:
+ settings for a surrounding |tcolorbox| for background and margins.
+\item\refKey{/tcb/posterset/boxes}: style of the |tcolorbox|es used for the poster.
+\item\refKey{/tcb/posterset/fontsize}: scaling of used fonts.
+\end{itemize}
+
+\begin{exdispExample}{tcbposter}
+ \begin{tcbposter}[
+ poster = {showframe,height=10cm,spacing=2mm},
+ boxes = {beamer,colframe=blue!50!black,colback=blue!50,colupper=yellow!50},
+ ]
+ \posterbox{name=A,column=3,row=2}{My first box}
+ \posterbox[adjusted title=Second box]
+ {name=B,column=2,span=2,below=A}{My second box}
+ \posterbox[adjusted title=Third box]
+ {name=C,column=2,between=B and bottom}{My third box}
+ \end{tcbposter}
+\end{exdispExample}
+\end{docEnvironment}
+
+\clearpage
+ Inside \refEnv{tcbposter}, there are several predefined \tikzname\ nodes.
+ These nodes share a common \refKey{/tcb/poster/prefix} which is
+ |TCBPOSTER@| by default. This prefix is used to discriminate the
+ poster nodes from local nodes of any embedded |tikzpicture| environment.
+ You will never need this prefix using \refCom{posterbox} and its
+ placement options, but if you want to refer to a predefined node using
+ pure \tikzname\ code.
+ The predefined nodes (shown without prefix) are:
+ \begin{itemize}
+ \item|poster|: defines the bounding box of the poster (without the coverage).
+ \item|top|: top position plus row spacing
+ \item|bottom|: bottom position minus row spacing
+ \item|middle|: vertical middle position
+ \item|col1|, |col2|, \ldots: bounding box of column~1, column~2, \ldots
+ \item|row1|, |row2|, \ldots: bounding box of row~1, row~2, \ldots
+ \end{itemize}
+ Further nodes are defined using the \refKey{/tcb/posterloc/name} option.
+
+ \begin{marker}
+ Never use a \refEnv{tcbposter} inside a \refEnv{tcbposter}.
+ But, if you do anyway, use a different \refKey{/tcb/poster/prefix} for
+ the embedded poster or you surely get a total mess.
+ \end{marker}
+
+ There are several properties inside a \refEnv{tcbposter} which may be useful
+ for advanced code (skip the following on first reading):
+ \begin{itemize}
+ \item\docAuxCommand{tcbposterwidth}: Width of the poster (without margins).
+ \item\docAuxCommand{tcbposterheight}: Height of the poster (without margins).
+ \item\docAuxCommand{tcbpostercolspacing}: Column distance.
+ \item\docAuxCommand{tcbposterrowspacing}: Row distance.
+ \item\docAuxCommand{tcbpostercolumns}: Column quantity.
+ \item\docAuxCommand{tcbposterrows}: Row quantity.
+ \item\docAuxCommand{tcbpostercolwidth}: Width of a column.
+ \item\docAuxCommand{tcbposterrowheight}: Height of a row.
+ \end{itemize}
+
+\medskip
+\begin{docCommand}[doc new=2017-07-03]{tcbposterset}{\marg{options}}
+ Sets options for every following \refEnv{tcbposter} inside the current \TeX\ group.
+ For example, the numbers for rows and columns may be defined for the whole document by this:
+\begin{dispListing}
+\tcbposterset{poster={columns=2,rows=3}}
+\end{dispListing}
+ See \refEnv{tcbposter} for all feasible options.
+\end{docCommand}
+
+
+\clearpage
+%--------------------------
+\subsection{Poster Settings}\label{subsec:poster_settings}
+
+\begin{postersetTcbKey}[][doc new=2017-07-03]{poster}{=\marg{option list}}{style, no default}
+ This option can be applied inside \refEnv{tcbposter} and \refCom{tcbposterset}
+ to set the given poster \meta{option list}, e.g.
+\begin{dispListing}
+\tcbposterset{poster={width=20cm,height=15cm}}
+\end{dispListing}
+ For the \meta{option list}, see the following keys.
+\end{postersetTcbKey}
+
+
+\begin{posterTcbKey}[][doc new=2017-07-03]{columns}{=\meta{number}}{no default, initially |3|}
+ Sets the \meta{number} of columns for a |tcbposter|.
+\begin{exdispExample}{columns}
+ \begin{tcbposter}[
+ poster = {showframe,columns=5,rows=2,spacing=1mm,height=4cm},
+ ]
+ \end{tcbposter}
+\end{exdispExample}
+\end{posterTcbKey}
+
+\begin{posterTcbKey}[][doc new=2017-07-03]{rows}{=\meta{number}}{no default, initially |4|}
+ Sets the \meta{number} of rows for a |tcbposter|.
+\end{posterTcbKey}
+
+
+\begin{posterTcbKey}[][doc new=2017-07-03]{colspacing}{=\meta{length}}{no default, initially |4mm|}
+ Sets \meta{length} as distance between columns.
+\end{posterTcbKey}
+
+\begin{posterTcbKey}[][doc new=2017-07-03]{rowspacing}{=\meta{length}}{no default, initially |4mm|}
+ Sets \meta{length} as distance between rows.
+\end{posterTcbKey}
+
+\begin{posterTcbKey}[][doc new=2017-07-03]{spacing}{=\meta{length}}{style, no default, initially |4mm|}
+ Sets \meta{length} as distance between columns and rows.
+\end{posterTcbKey}
+
+
+\begin{posterTcbKey}[][doc new=2017-07-03]{showframe}{\colOpt{=true\textbar false}}{default |true|, initially |false|}
+ Displays a red auxiliary mesh as optical support during poster creation.
+ Also, every \refKey{/tcb/posterloc/name} is displayed.
+\end{posterTcbKey}
+
+
+\begin{posterTcbKey}[][doc new=2017-07-03]{width}{=\meta{length}}{no default, initially \cs{linewidth}}
+ Sets \meta{length} as width of the poster. For a typical poster, this has not
+ to be set manually.
+\end{posterTcbKey}
+
+\begin{posterTcbKey}[][doc new=2017-07-03]{height}{=\meta{length}}{no default, initially unset}
+ Sets \meta{length} as height of the poster. For a typical poster, this has not
+ to be set manually, but is set automatically to an appropriate value.
+\end{posterTcbKey}
+
+
+\begin{posterTcbKey}[][doc new=2017-07-03]{prefix}{=\meta{name}}{no default, initially |TCBPOSTER@|}
+ \meta{name} is set as prefix for any \tikzname\ node which is generated
+ automatically by the \mylib{poster} library. This encompasses predefined
+ nodes like |top|, |bottom|, \ldots, and nodes defined by using
+ \refKey{/tcb/posterloc/name}. Also, see~\Fullref{subsec:poster_environment}.
+ For a typical poster, this value can stay as it is.
+\end{posterTcbKey}
+
+
+%--------------------------
+\subsection{Coverage}\label{subsec:poster_coverage}
+
+\begin{postersetTcbKey}[][doc new=2017-07-03]{coverage}{=\marg{option list}}{style, no default}
+ This option can be applied inside \refEnv{tcbposter} and \refCom{tcbposterset}
+ and it adds an optional coverage for the poster which is a surrounding |tcolorbox|
+ with the given \meta{option list}. Here, margins and background settings
+ for the poster can be given.
+ The \emph{coverage} has several default |tcolorbox| settings
+ suitable for the purpose:
+\begin{dispListing}
+enhanced, frame hidden, sharp corners, boxsep=0pt, boxrule=0pt,
+top=4mm, bottom=4mm, left=4mm, right=4mm,
+toptitle=2mm, bottomtitle=2mm, colback=white
+\end{dispListing}
+
+The \meta{option list} can contain any |tcolorbox| option.
+
+\begin{exdispExample}{coverage}
+\begin{tcbposter}[
+ poster = {showframe,spacing=1mm},
+ coverage = {height=5cm,
+ interior style={top color=yellow,bottom color=yellow!50!red},
+ watermark text={My Poster},watermark color=white,
+ },
+]
+\end{tcbposter}
+\end{exdispExample}
+
+\begin{itemize}
+\item For a typical poster, the option \refKey{/tcb/spread} will use the
+ whole page for the poster coverage.
+\item Poster margins can be adapted by \refKey{/tcb/left}, \refKey{/tcb/right},
+ \refKey{/tcb/top}, \refKey{/tcb/bottom}.
+\item Poster background can be changed by \refKey{/tcb/colback},
+ \refKey{/tcb/interior style}, \refKey{/tcb/interior style image}, etc.
+\end{itemize}
+\end{postersetTcbKey}
+
+
+\begin{postersetTcbKey}[][doc new=2017-07-03]{no coverage}{}{style, no value, initially set}
+ Removes the surrounding |tcolorbox| completely.
+\end{postersetTcbKey}
+
+\clearpage
+%--------------------------
+\subsection{Common Box Settings}\label{subsec:poster_boxsettings}
+
+
+\begin{postersetTcbKey}[][doc new=2017-07-03]{boxes}{=\marg{option list}}{style, no default}
+ This option can be applied inside \refEnv{tcbposter} and \refCom{tcbposterset}
+ and it is used to set up the style of the |tcolorbox|es inside the poster.
+ The \meta{option list} can contain any |tcolorbox| option, but box size
+ options are not assumed to be useful here, because the size will be
+ determined by the placement options.
+
+\begin{exdispExample}{boxes}
+\begin{tcbposter}[
+ poster = {spacing=2mm,columns=3,rows=2},
+ coverage = {height=5cm,
+ interior style={top color=yellow,bottom color=yellow!50!red},
+ },
+ boxes = {sharp corners=downhill,arc=3mm,boxrule=1mm,
+ colback=white,colframe=cyan,
+ title style={left color=black,right color=cyan},
+ fonttitle=\bfseries\scshape}
+]
+ \posterbox[adjusted title=First]{column=1,row=1,span=2}{First box}
+ \posterbox[adjusted title=Second]{column=1,row=2,span=2}{Second box}
+ \posterbox[adjusted title=Third]{column=3,row=1,rowspan=2}{Third box}
+\end{tcbposter}
+\end{exdispExample}
+
+\end{postersetTcbKey}
+
+
+%--------------------------
+\subsection{Font Scaling}\label{subsec:poster_fontsize}
+
+\begin{postersetTcbKey}[][doc new=2017-07-03]{fontsize}{=\meta{length}}{style, no default, initially unset}
+ This option can be applied inside \refEnv{tcbposter} and \refCom{tcbposterset}.
+ It uses \refKey{/tcb/fit basedim} and \refKey{/tcb/fit fontsize macros}
+ to redefine |\normalsize| to \meta{length} and all other standard
+ font size macros like |\small| and |\large| accordingly.\par
+ This needs a freely scalable font family like |lmodern| to work.
+ If \refKey{/tcb/posterset/fontsize} is not applied, there standard
+ font size macros are not changed in any way.
+
+\begin{dispListing}
+\begin{tcbposter}[
+ poster = {spacing=2mm,columns=3,rows=2},
+ coverage = {height=5cm,
+ interior style={top color=yellow,bottom color=yellow!50!red},
+ },
+ fontsize = 15pt, % <--- \normalsize is now 15pt
+]
+...
+\end{dispListing}
+\end{postersetTcbKey}
+
+
+\clearpage
+%--------------------------
+\subsection{Box Placement}\label{subsec:poster_boxplacement}
+
+\begin{docCommand}[doc new=2017-07-03]{posterbox}{\oarg{options}\marg{placement}\marg{box content}}
+ Inside a \refEnv{tcbposter} environment, this places a |tcolorbox| with
+ additional |tcolorbox| \meta{options} and the given \meta{box content}
+ at a place determined by \meta{placement}.
+ All \meta{placement} options are described in the following.
+ Note that \meta{box content} cannot contain \emph{verbatim} material,
+ see \refEnv{posterboxenv}.
+\begin{exdispExample}{posterbox}
+\begin{tcbposter}[
+ poster = {showframe,height=4cm,spacing=2mm,rows=2},
+ boxes = {beamer,colframe=blue!50!black,colback=blue!50,colupper=yellow!50},
+]
+\posterbox[title=My title]{name=A,column=2,row=2}{My first box}
+\end{tcbposter}
+\end{exdispExample}
+\end{docCommand}
+
+\begin{docEnvironment}[doc new=2017-07-03]{posterboxenv}{\oarg{options}\marg{placement}}
+ This is the environment version of \refCom{posterbox}, i.e.\ inside a
+ \refEnv{tcbposter} environment, this places a |tcolorbox| with
+ additional |tcolorbox| \meta{options} and the given \meta{environment content}
+ at a place determined by \meta{placement}.
+ In contrast to \refCom{posterbox}, the \meta{environment content} is
+ allowed to contain \emph{verbatim} material. Note that the implementation
+ of \refCom{posterbox} is more efficient than the implementation of \refEnv{posterboxenv}.
+
+\enlargethispage*{1cm}
+\begin{exdispExample}{posterboxenv}
+\begin{tcbposter}[
+ poster = {showframe,height=4cm,spacing=2mm,rows=2},
+ boxes = {size=small,beamer,
+ colframe=blue!50!black,colback=blue!50,colupper=yellow!50},
+]
+\begin{posterboxenv}[title=My title]{name=A,column=2,between=top and bottom}
+ My first box.
+ \begin{tcblisting}{size=small,colback=yellow!10}
+My \textbf{first}
+poster listing.
+ \end{tcblisting}
+\end{posterboxenv}
+\end{tcbposter}
+\end{exdispExample}
+
+\end{docEnvironment}
+
+
+\clearpage
+\begin{posterlocTcbKey}[][doc new=2017-07-03]{name}{=\meta{name}}{no default, initially |@|}
+ Sets \meta{name} as reference for the current \refCom{posterbox} or
+ \refEnv{posterboxenv}.
+ A \tikzname\ shape name is constructed automatically as combination
+ of \refKey{/tcb/poster/prefix} and \meta{name}.
+\begin{exdispExample}{name}
+\begin{tcbposter}[
+ poster = {showframe,height=2.5cm,spacing=2mm,rows=2},
+ boxes = {beamer,colframe=blue!50!black,colback=blue!50,colupper=yellow!50},
+]
+\posterbox{name=A,column=2,row=2}{My first box}
+\node[below right=4mm,fill=yellow] (X) at (TCBPOSTER@poster.north west) {Example A};
+\draw[blue,very thick,->] (X) |- (TCBPOSTER@A);
+\end{tcbposter}
+\end{exdispExample}
+\end{posterlocTcbKey}
+
+
+\begin{posterlocTcbKey}[][doc new=2017-07-03]{column}{=\meta{number}}{no default, initially |1|}
+ Places the box at the column denoted by \meta{number}. If \refKey{/tcb/posterloc/span}
+ is not |1|, the box is aligned to the left side of column \meta{number}.
+\begin{exdispExample}{column}
+\begin{tcbposter}[
+ poster = {showframe,height=2.5cm,spacing=2mm,rows=2},
+ boxes = {beamer,colframe=blue!50!black,colback=blue!50,colupper=yellow!50},
+]
+\posterbox{row=1,column=2,span=2}{First box}
+\posterbox{row=2,column=2,span=0.8}{Second box}
+\end{tcbposter}
+\end{exdispExample}
+\end{posterlocTcbKey}
+
+\enlargethispage*{1cm}
+\begin{posterlocTcbKey}[][doc new=2017-07-03]{column*}{=\meta{number}}{no default, initially unset}
+ Places the box at the column denoted by \meta{number}. If \refKey{/tcb/posterloc/span}
+ is not |1|, the box is aligned to the right side of column \meta{number}.
+\begin{exdispExample}{columnstar}
+\begin{tcbposter}[
+ poster = {showframe,height=2.5cm,spacing=2mm,rows=2},
+ boxes = {beamer,colframe=blue!50!black,colback=blue!50,colupper=yellow!50},
+]
+\posterbox{row=1,column*=2,span=2}{First box}
+\posterbox{row=2,column*=2,span=0.8}{Second box}
+\end{tcbposter}
+\end{exdispExample}
+\end{posterlocTcbKey}
+
+
+\clearpage
+\begin{posterlocTcbKey}[][doc new=2017-07-03]{span}{=\meta{number}}{no default, initially |1|}
+ Sets the width of the current box to span \meta{number} columns.
+ \meta{number} is also allowed to be a real number like |0.5| or |1.7|.
+ See \refKey{/tcb/posterloc/column} and \refKey{/tcb/posterloc/column*}
+ for examples.
+\end{posterlocTcbKey}
+
+\begin{posterlocTcbKey}[][doc new=2017-07-03]{row}{=\meta{number}}{no default, initially unset}
+ If this option is applied, the box is placed at the row denoted by \meta{number}.
+ Also, the height is set as fixed according to \refKey{/tcb/posterloc/rowspan}.
+\begin{exdispExample}{row}
+\begin{tcbposter}[
+ poster = {showframe,height=2.5cm,spacing=2mm,rows=2},
+ boxes = {beamer,colframe=blue!50!black,colback=blue!50,colupper=yellow!50},
+]
+\posterbox{row=1,column=1}{First box}
+\posterbox{row=1,column=2,rowspan=2}{Second box}
+\posterbox[natural height]{row=1,column=3}{Third box}
+\end{tcbposter}
+\end{exdispExample}
+\end{posterlocTcbKey}
+
+\begin{posterlocTcbKey}[][doc new=2017-07-03]{rowspan}{=\meta{number}}{no default, initially |1|}
+ Sets the height of the current box to span \meta{number} rows.
+ \meta{number} is also allowed to be a real number like |0.5| or |1.7|.
+\begin{exdispExample}{rowspan}
+\begin{tcbposter}[
+ poster = {showframe,height=2.5cm,spacing=2mm,rows=2},
+ boxes = {beamer,colframe=blue!50!black,colback=blue!50,colupper=yellow!50},
+]
+\posterbox{row=1,column=1,rowspan=0.9}{First box}
+\posterbox{row=1,column=2,rowspan=1.5}{Second box}
+\posterbox{row=1,column=3,rowspan=2}{Third box}
+\end{tcbposter}
+\end{exdispExample}
+\end{posterlocTcbKey}
+
+\begin{posterlocTcbKey}[][doc new=2017-07-03]{fixed height}{}{no value, initially |0pt|}
+ Sets the height of the current box span rows as denoted by
+ \refKey{/tcb/posterloc/rowspan}.
+ This can be used, if not \refKey{/tcb/posterloc/row}, but another
+ height placement option is applied.
+\end{posterlocTcbKey}
+
+
+\clearpage
+\begin{posterlocTcbKey}[][doc new=2017-07-03]{below}{=\meta{name}}{no default, initially |top|}
+ The box is placed below another box with the given \meta{name}. Also,
+ \meta{name} can be a predefined node, see \Fullref{subsec:poster_environment}.
+\begin{exdispExample}{below}
+\begin{tcbposter}[
+ poster = {showframe,height=3cm,spacing=2mm,rows=2},
+ boxes = {beamer,colframe=blue!50!black,colback=blue!50,colupper=yellow!50},
+]
+\posterbox{name=A,column=1,below=top}{First box}
+\posterbox{name=B,column=1,below=A}{Second box}
+\posterbox{name=C,column=2,below=B}{Third box}
+\posterbox{name=D,column=3,below=row1}{Fourth box}
+\end{tcbposter}
+\end{exdispExample}
+\end{posterlocTcbKey}
+
+
+\begin{posterlocTcbKey}[][doc new=2017-07-03]{above}{=\meta{name}}{no default, initially unset}
+ The box is placed above another box with the given \meta{name}. Also,
+ \meta{name} can be a predefined node, see \Fullref{subsec:poster_environment}.
+\begin{exdispExample}{above}
+\begin{tcbposter}[
+ poster = {showframe,height=3cm,spacing=2mm,rows=2},
+ boxes = {beamer,colframe=blue!50!black,colback=blue!50,colupper=yellow!50},
+]
+\posterbox{name=A,column=1,above=bottom}{First box}
+\posterbox{name=B,column=1,above=A}{Second box}
+\posterbox{name=C,column=2,above=B}{Third box}
+\posterbox{name=D,column=3,above=row2}{Fourth box}
+\end{tcbposter}
+\end{exdispExample}
+\end{posterlocTcbKey}
+
+
+\clearpage
+\begin{posterlocTcbKey}[][doc new=2017-07-03]{at}{=\meta{name}}{no default, initially unset}
+ The box is placed at the position with the given \meta{name}. This is
+ quite likely a predefined node, see \Fullref{subsec:poster_environment}.
+\begin{exdispExample}{at}
+\begin{tcbposter}[
+ poster = {showframe,height=3cm,spacing=2mm,rows=2},
+ boxes = {beamer,colframe=blue!50!black,colback=blue!50,colupper=yellow!50},
+]
+\posterbox{name=A,column=1,at=middle}{First box}
+\posterbox{name=B,column=2,at=row1}{Second box}
+\end{tcbposter}
+\end{exdispExample}
+\end{posterlocTcbKey}
+
+
+\begin{posterlocTcbKey}[][doc new=2017-07-03]{between}{=\meta{name1} and \meta{name2}}{no default, initially unset}
+ The box is placed below a box \meta{name1} and above another box \meta{name2}. Also,
+ \meta{name1} and \meta{name2} can be predefined nodes, see \Fullref{subsec:poster_environment}.
+\begin{exdispExample}{between}
+\begin{tcbposter}[
+ poster = {showframe,height=3cm,spacing=2mm,rows=2},
+ boxes = {beamer,colframe=blue!50!black,colback=blue!50,colupper=yellow!50},
+]
+\posterbox{name=A,column=1,below=top}{First box}
+\posterbox{name=B,column=1,between=A and bottom}{Second box}
+\posterbox{name=C,column=2,above=bottom}{Third box}
+\posterbox{name=D,column=2,between=top and C,span=2}{Fourth box}
+\posterbox{name=E,column=3,between=D and bottom}{Fifth box}
+\end{tcbposter}
+\end{exdispExample}
+\end{posterlocTcbKey}
+
+
+\clearpage
+\begin{posterlocTcbKey}[][doc new=2017-07-03]{sequence}{=\meta{sequence}}{no default, initially unset}
+ The box is broken into partial boxes. These partial boxes are placed
+ following the given \meta{sequence} of placements.
+ The feasible syntax for the \meta{sequence} is:\par\medskip
+ \meta{column a} |between| \meta{name a1} |and| \meta{name a2} |then|\\
+ \meta{column b} |between| \meta{name b1} |and| \meta{name b2} |then|\\
+ \meta{column c} |between| \meta{name c1} |and| \meta{name c2} |then|\ldots\par\medskip
+ Obviously, this places the first part box at \meta{column a} between
+ \meta{name a2} and \meta{name a2}. The second box part is placed
+ at \meta{column b} between
+ \meta{name b2} and \meta{name b2}, and so on.
+
+\begin{exdispExample}{sequence}
+\begin{tcbposter}[
+ poster = {showframe,height=6cm,spacing=2mm,rows=2},
+ boxes = {beamer,colframe=blue!50!black,colback=blue!50,colupper=yellow!50},
+]
+\posterbox[adjusted title=A]{name=A,column=1,below=top,span=2}{First box}
+\posterbox{name=B,column=2,above=bottom,span=2}{Second box}
+\posterbox[adjusted title=C,colframe=red!50!black,colback=red!50]{
+ name=C, sequence=1 between A and bottom then
+ 2 between A and B then
+ 3 between top and B
+ }{\lipsum[2]}
+\end{tcbposter}
+\end{exdispExample}
+\end{posterlocTcbKey}
+
+\enlargethispage*{2cm}
+\begin{docTcbKey}[][doc new=2017-07-03]{placeholder}{}{style, no value}
+ If the box content of a \refKey{/tcb/posterloc/sequence} is too short
+ to fill all reserved box parts, the empty boxes are drawn with
+ the \refKey{/tcb/placeholder} style. This style can be redefined, e.g.
+ to \refKey{/tcb/blankest}, if nothing should be drawn for empty boxes.
+\begin{exdispExample}{placeholder}
+\begin{tcbposter}[
+ poster = {showframe,height=2.5cm,spacing=2mm,rows=2},
+ boxes = {beamer,colframe=blue!50!black,colback=blue!50,colupper=yellow!50},
+]
+\posterbox{name=A,column=1,below=top,span=2}{First box}
+\posterbox[colframe=red!50!black,colback=red!50]{
+ name=B, sequence=1 between A and bottom then
+ 2 between A and bottom then
+ 3 between top and bottom
+ }{Second box followed by placeholder boxes}
+\end{tcbposter}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+\clearpage
+\begin{posterlocTcbKey}[][doc new=2017-07-03]{xshift}{=\meta{length}}{no default, initially |0pt|}
+ Horizontal shift of a box by \meta{length}.
+\begin{exdispExample}{xshift}
+\begin{tcbposter}[
+ poster = {showframe,height=3cm,spacing=2mm,rows=2},
+ boxes = {beamer,colframe=blue!50!black,colback=blue!50,colupper=yellow!50},
+]
+\posterbox{name=A,column=1,row=1,xshift=6mm}{First box}
+\posterbox{name=B,column=2,row=2,xshift=-6mm}{Second box}
+\end{tcbposter}
+\end{exdispExample}
+\end{posterlocTcbKey}
+
+
+\begin{posterlocTcbKey}[][doc new=2017-07-03]{yshift}{=\meta{length}}{no default, initially |0pt|}
+ Vertical shift of a box by \meta{length}.
+\begin{exdispExample}{yshift}
+\begin{tcbposter}[
+ poster = {showframe,height=3cm,spacing=2mm,rows=2},
+ boxes = {beamer,colframe=blue!50!black,colback=blue!50,colupper=yellow!50},
+]
+\posterbox{name=A,column=1,row=1,yshift=-4mm}{First box}
+\posterbox{name=B,column=2,row=2,yshift=4mm}{Second box}
+\end{tcbposter}
+\end{exdispExample}
+\end{posterlocTcbKey}
+
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.quickref.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.quickref.tex
new file mode 100644
index 0000000000..f9162deaf5
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.quickref.tex
@@ -0,0 +1,118 @@
+% !TeX root = tcolorbox.tex
+% include file of tcolorbox.tex (manual of the LaTeX package tcolorbox)
+\clearpage
+\section{Quick Reference}\label{sec:quickref}%
+\tcbset{external/prefix=external/quickref_}%
+
+\makeatletter
+\begin{tcolorbox}[enhanced,title={tcolorbox},
+ enlarge top initially by=1cm,enlarge bottom finally by=1cm,left skip=1cm,right skip=1cm,
+ colframe=red!50!black!30!white,colback=red!10!white!40!white,
+ colbacktitle=red!30!white,colupper=black!20!white,
+ code={\appto\kvtcb@shadow{%
+ \path[fill=yellow!20!white,draw=yellow!50!black,dashed,line width=0.4pt]
+ ([xshift=-1cm,yshift=-1cm]frame.south west) rectangle
+ ([xshift=1cm,yshift=1cm]frame.north east);
+ }},
+ finish={
+ \draw[thick,<->] ([yshift=-1.3cm]frame.north west)-- node[below]{\refKey{/tcb/width}}
+ ([yshift=-1.3cm]frame.north east);
+ \draw[thick,<->] ([xshift=-15mm]frame.north east)-- node[left,pos=0.35]{\refKey{/tcb/height}}
+ ([xshift=-15mm]frame.south east);
+ \draw[thick,<->] (frame.north)-- node[right]{\refKey{/tcb/before}, \refKey{/tcb/before skip}} +(0,1);
+ \draw[thick,<->] (frame.south)-- node[right]{\refKey{/tcb/after}, \refKey{/tcb/after skip}} +(0,-1);
+ \draw[thick,<->] (frame.west)-- node[below right,align=center]{\refKey{/tcb/left skip}\\\refKey{/tcb/grow to left by}}+(-1,0);
+ \draw[thick,<->] (frame.east)-- node[below left,align=center]{\refKey{/tcb/right skip}\\\refKey{/tcb/grow to right by}}+(1,0);
+ }
+ ]
+ \lipsum[1]
+\end{tcolorbox}
+\makeatother
+
+\bigskip
+\bigskip
+
+\begin{tcolorbox}[enhanced,title={tcolorbox},before skip=5mm,after skip=5mm,
+ colframe=red!50!black!30!white,colback=red!10!white!40!white,
+ colbacktitle=red!30!white,coltext=black!20!white,
+ toptitle=1mm,bottomtitle=1mm,
+ overlay={\begin{tcbclipinterior}%
+ \path[fill=red!10!white!40!yellow!20!white,draw=yellow!50!black,dotted]
+ ([xshift=1mm,yshift=1mm]interior.south west)
+ rectangle ([xshift=-1mm,yshift=-1mm]interior.north east);
+ \path[fill=red!10!white!40!white,draw=yellow!50!black,dotted] (
+ [xshift=5mm,yshift=3mm]interior.south west)
+ rectangle ([xshift=-5mm,yshift=-3mm]interior.north east);
+ \path[fill=red!10!white!40!yellow!20!white,draw=yellow!50!black,dotted]
+ ([xshift=5mm,yshift=-1mm]segmentation.south west)
+ rectangle ([xshift=-5mm,yshift=1mm]segmentation.north east);
+ \path[fill=red!10!white!40!white,draw=yellow!50!black,dotted]
+ ([xshift=5mm,yshift=1mm]segmentation.south west)
+ rectangle ([xshift=-5mm,yshift=-1mm]segmentation.north east);
+ \path[dashed,draw=red!50!black!30!white] (segmentation.west) -- (segmentation.east);
+ \end{tcbclipinterior}%
+ \begin{tcbcliptitle}
+ \path[fill=red!30!white!70!yellow,draw=yellow!50!black,dotted]
+ ([xshift=1mm,yshift=1mm]title.south west)
+ rectangle ([xshift=-1mm,yshift=-1mm]title.north east);
+ \path[fill=red!30!white,draw=yellow!50!black,dotted]
+ ([xshift=5mm,yshift=2mm]title.south west)
+ rectangle ([xshift=-5mm,yshift=-2mm]title.north east);
+ \end{tcbcliptitle}},
+ finish={
+ \coordinate (A) at ([yshift=-0.25mm]frame.north);
+ \draw[thick,<-] (A) -- +(-1,0.3) node[left]{\refKey{/tcb/toprule}};
+ \coordinate (A) at ([yshift=-0.75mm]A);
+ \draw[thick,<-] (A) -- +(1,0) node[right]{\refKey{/tcb/boxsep}};
+ \coordinate (A) at ([yshift=-1mm]A);
+ \draw[thick,<-] (A) -- +(-1,0) node[left]{\refKey{/tcb/toptitle}};
+ %
+ \coordinate (A) at ([yshift=1.00mm]interior.north);
+ \draw[thick,<-] (A) -- +(1,0) node[right]{\refKey{/tcb/boxsep}};
+ \coordinate (A) at ([yshift=1mm]A);
+ \draw[thick,<-] (A) -- +(-1,0) node[left]{\refKey{/tcb/bottomtitle}};
+ \coordinate (A) at ([yshift=0.25mm]interior.north);
+ \draw[thick,<-] (A) -- +(-1,-0.4) node[left]{\refKey{/tcb/titlerule}};
+ \coordinate (A) at ([yshift=-0.5mm]interior.north);
+ \draw[thick,<-] (A) -- +(1,-0.2) node[right]{\refKey{/tcb/boxsep}};
+ \coordinate (A) at ([yshift=-1.5mm]A);
+ \draw[thick,<-] (A) -- +(-1,-0.6) node[left]{\refKey{/tcb/top}};
+ %
+ \coordinate (A) at ([yshift=2.0mm]segmentation);
+ \draw[thick,<-] (A) -- +(-1,0) node[left]{\refKey{/tcb/middle}};
+ \coordinate (A) at ([yshift=0.5mm]segmentation);
+ \draw[thick,<-] (A) -- +(1,0.2) node[right]{\refKey{/tcb/boxsep}};
+ \coordinate (A) at ([yshift=-0.5mm]segmentation);
+ \draw[thick,<-] (A) -- +(1,-0.2) node[right]{\refKey{/tcb/boxsep}};
+ \coordinate (A) at ([yshift=-2.0mm]segmentation);
+ \draw[thick,<-] (A) -- +(-1,0) node[left]{\refKey{/tcb/middle}};
+ %
+ \coordinate (A) at ([yshift=0.25mm]frame.south);
+ \draw[thick,<-] (A) -- +(-1,-0.3) node[left]{\refKey{/tcb/bottomrule}};
+ \coordinate (A) at ([yshift=0.75mm]A);
+ \draw[thick,<-] (A) -- +(1,0) node[right]{\refKey{/tcb/boxsep}};
+ \coordinate (A) at ([yshift=1.5mm]A);
+ \draw[thick,<-] (A) -- +(-1,0) node[left]{\refKey{/tcb/bottom}};
+ %
+ \coordinate (A) at ([xshift=0.25mm]frame.west);
+ \draw[thick,<-] (A) -- +(-0.3,-1) node[below]{\refKey{/tcb/leftrule}};
+ \coordinate (A) at ([xshift=0.75mm]A);
+ \draw[thick,<-] (A) -- +(0,1) node[above]{\refKey{/tcb/boxsep}};
+ \coordinate (A) at ([xshift=2.5mm]A);
+ \draw[thick,<-] (A) -- +(0.7,0.5) node[above right]{\refKey{/tcb/left}};
+ %
+ \coordinate (A) at ([xshift=-0.25mm]frame.east);
+ \draw[thick,<-] (A) -- +(0.3,-1) node[below]{\refKey{/tcb/rightrule}};
+ \coordinate (A) at ([xshift=-0.75mm]A);
+ \draw[thick,<-] (A) -- +(0,1) node[above]{\refKey{/tcb/boxsep}};
+ \coordinate (A) at ([xshift=-2.5mm]A);
+ \draw[thick,<-] (A) -- +(-0.7,0.5) node[above left]{\refKey{/tcb/right}};
+ }
+ ]
+ \lipsum[1]
+ \tcblower
+ \lipsum[2]
+\end{tcolorbox}
+
+
+
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.raster.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.raster.tex
new file mode 100644
index 0000000000..3a9c7524aa
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.raster.tex
@@ -0,0 +1,946 @@
+% !TeX root = tcolorbox.tex
+% include file of tcolorbox.tex (manual of the LaTeX package tcolorbox)
+\clearpage
+\section{Library \mylib{raster}}\label{sec:raster}%
+\tcbset{external/prefix=external/raster_}%
+The library is loaded by a package option or inside the preamble by:
+\begin{dispListing}
+\tcbuselibrary{raster}
+\end{dispListing}
+%This also loads the package |xparse| \cite{latexproject:xparse}.
+
+%The purpose of this library is to give comfortable access to the
+%powerful document command production with |xparse| for |tcolorbox|.
+%See the |xparse| package documentation \cite{latexproject:xparse}
+%for details about the argument \meta{specification} used in this section.
+
+\subsection{Concept of Rasters}\label{subsec:raster_overview}
+
+A \emph{raster} is used to align several colored boxes in a regular way.
+It can be seen as a far related counterpart to the |matrix| construct
+of \tikzname, but it differs in many aspects.
+
+In principle, |tcolorbox|es are arranged in rows and columns when put
+inside a \refEnv{tcbraster} environment. The boxes are fluently added to the
+raster like adding text to a paragraph.
+Especially, line/row breaks are done
+automatically and one cannot end a line/row ahead of schedule.
+Further, a \emph{raster} is not restricted to a single page but may
+break into an arbitrary series of pages.
+
+\bigskip
+\begin{tcolorbox}[enhanced,size=tight,boxrule=0pt,frame hidden,
+ top=5mm,bottom=5mm,colback=yellow!20!white,
+ borderline={0.4pt}{0pt}{dashed,yellow!50!black},
+ finish={
+ \draw[thick,<->] ([yshift=-1.3cm]frame.north west)-- node[below]{\refKey{/tcb/raster width}}
+ ([yshift=-1.3cm]frame.north east);
+ \draw[thick,<->] ([xshift=5mm,yshift=-5mm]frame.north east)-- node[left,pos=.75]{\refKey{/tcb/raster height}}
+ ([xshift=5mm,yshift=5mm]frame.south east);
+ }]
+ \begin{tcbitemize}[enhanced,fontupper=\tiny,
+ title={Box \#\thetcbrasternum},
+ colframe=red!50!black!30!white,colback=red!10!white!40!white,
+ colupper=black!20!white,
+ raster equal height=rows,
+ raster left skip=5mm,raster right skip=5mm,
+ raster before skip=5mm,raster after skip=5mm,
+ raster row skip=3mm,raster column skip=3mm,
+ ]
+ \tcbitem[finish={%
+ \draw[thick,<->] (frame.west)-- node[below right]{\refKey{/tcb/raster left skip}}+(-0.5,0);
+ \draw[thick,<->] (frame.north)-- node[right]{\refKey{/tcb/raster before skip}} +(0,0.5);
+ \draw[thick,<->] (frame.south)-- node[above]{\refKey{/tcb/raster row skip}} +(0,-0.3);
+ }] \lipsum[1]
+ \tcbitem[finish={
+ \draw[thick,<->] (frame.east)-- node[below left]{\refKey{/tcb/raster right skip}}+(0.5,0);
+ \draw[thick,<->] ([yshift=5mm]frame.south west)-- node[above]{\refKey{/tcb/raster column skip}}+(-0.3,0);
+ }] \lipsum[2]
+ \tcbitem[finish={%
+ \draw[thick,<->] (frame.south)-- node[right]{\refKey{/tcb/raster after skip}} +(0,-0.5);
+ }] \lipsum[3]
+ \tcbitem \lipsum[4]
+ \end{tcbitemize}
+\end{tcolorbox}
+
+\clearpage
+\begin{tcboutputlisting}
+\begin{tcbraster}[raster columns=3,raster rows=3,raster height=\linewidth,
+ enhanced,size=small,sharp corners,arc=8mm,colframe=red!50!black,
+ colback=yellow!10!white,watermark overzoom=1.0,fit algorithm=hybrid* ]
+ \begin{tcolorbox}[rounded corners=northwest,boxrule=0pt,
+ watermark graphics=lichtspiel.jpg]\end{tcolorbox}
+ \tcboxfit{\lipsum[1]}
+ \begin{tcolorbox}[rounded corners=northeast,boxrule=0pt,
+ watermark graphics=goldshade.png]\end{tcolorbox}
+ \tcboxfit{\lipsum[2]}
+ \begin{tcolorbox}[valign=center,halign=center]Nine Boxes.\end{tcolorbox}
+ \tcboxfit{\lipsum[3]}
+ \begin{tcolorbox}[rounded corners=southwest,boxrule=0pt,
+ watermark graphics=goldshade.png]\end{tcolorbox}
+ \tcboxfit{\lipsum[4]}
+ \begin{tcolorbox}[rounded corners=southeast,boxrule=0pt,
+ watermark graphics=lichtspiel.jpg]\end{tcolorbox}
+\end{tcbraster}
+\end{tcboutputlisting}
+
+\tcbinputlisting{base example,listing only,listing style=mydocumentation}
+
+\bigskip
+{\tcbuselistingtext}
+
+\clearpage
+\subsection{Macros of the Library}\label{subsec:raster_macros}
+
+\begin{docEnvironment}[doc new and updated={2014-11-10}{2017-02-01}]{tcbraster}{\oarg{options}}
+A raster arranges enclosed boxes in a regular way, mainly into rows and
+columns. The \meta{options} are used to control the raster
+parameters and to set the properties for the enclosed boxes.
+\begin{itemize}
+\item The \emph{raster} is only allowed to contain a series of
+ \refEnv{tcolorbox} environments or derived constructs.
+ With some small restrictions, boxes created with \refCom{tcboxfit} can also be added.
+ Boxes created with \refCom{tcbox} are not reasonable here, but may be
+ used to a certain degree.
+\item Do not add anything else between the boxes inside the raster with
+ exception of white\-space. Especially, do not use |\\| or |\par| to end
+ a row; row breaks are done automatically.
+\item The boxes inside a raster are numbered automatically.
+ \docAuxCommand{thetcbrasternum} may be used inside a box to access
+ this number.
+\end{itemize}
+
+\begin{dispExample}
+\begin{tcbraster}[raster columns=3, raster equal height,
+ size=small,colframe=red!50!black,colback=red!10!white,colbacktitle=red!50!white,
+ title={Box \# \thetcbrasternum}]
+ \begin{tcolorbox}First box\end{tcolorbox}
+ \begin{tcolorbox}Second box\end{tcolorbox}
+ \begin{tcolorbox}This is a box\\with a second line\end{tcolorbox}
+ \begin{tcolorbox}Another box\end{tcolorbox}
+ \begin{tcolorbox}A box again\end{tcolorbox}
+\end{tcbraster}
+\end{dispExample}
+
+\begin{dispExample}
+\begin{tcbraster}[raster columns=2, raster equal height=rows,
+ size=small,colframe=red!50!black,colback=red!10!white,colbacktitle=red!50!white,
+ title={Box \# \thetcbrasternum}]
+ \begin{tcolorbox}First box\end{tcolorbox}
+ \begin{tcolorbox}Second box\end{tcolorbox}
+ \begin{tcolorbox}This is a box\\with a second line\end{tcolorbox}
+ \begin{tcolorbox}Another box\end{tcolorbox}
+ \begin{tcolorbox}A box again\end{tcolorbox}
+\end{tcbraster}
+\end{dispExample}
+\end{docEnvironment}
+
+
+\clearpage
+
+\begin{docEnvironment}[doc new=2014-11-10]{tcbitemize}{\oarg{options}}
+This is a special case of a \refEnv{tcbraster} with the given \meta{options}.
+\begin{itemize}
+\item Here, the enclosed boxes are created using \refCom{tcbitem}.
+\item There has to be at least one \refCom{tcbitem}.
+\item One cannot use anything else than \refCom{tcbitem} to add something
+ to the \emph{raster}.
+\end{itemize}
+This leads to a very compact syntax.
+
+\begin{dispExample}
+\begin{tcbitemize}[raster columns=2, raster equal height=rows,
+ size=small,colframe=red!50!black,colback=red!10!white,colbacktitle=red!50!white,
+ title={Box \# \thetcbrasternum}]
+ \tcbitem First box
+ \tcbitem Second box
+ \tcbitem This is a box\\with a second line
+ \tcbitem[colback=yellow,colbacktitle=yellow!50!black] Another box
+ \tcbitem A box again
+\end{tcbitemize}
+\end{dispExample}
+
+\begin{marker}
+\refEnv{tcbitemize} has more restrictions than \refEnv{tcbraster}.
+Especially, the \refKey{/tcb/capture} mode has to be \docValue{minipage}.
+For example, \refKey{/tcb/fit} cannot be used safely.
+If \refKey{/tcb/fit} should be used, turn over to \refEnv{tcbraster}.
+\end{marker}
+\end{docEnvironment}
+
+
+\begin{docCommand}[doc new=2014-11-10]{tcbitem}{\oarg{options}}
+ Used inside \refEnv{tcbitemize} to create a new \refEnv{tcolorbox}
+ with the given \meta{options}.
+\end{docCommand}
+
+
+\clearpage
+\begin{docEnvironment}[doc new=2016-02-19]{tcboxedraster}{\oarg{raster options}\marg{box options}}
+ This is a convenience environment which combines a \refEnv{tcolorbox} with
+ an embedded \refEnv{tcbraster}. The \meta{box options} are given to the
+ outer \refEnv{tcolorbox}, while the \meta{raster options} are given to the
+ embedded \refEnv{tcbraster}.
+ This environment is especially useful for rasters inside rasters.
+
+\begin{dispExample}
+\begin{tcboxedraster}[raster columns=3, raster equal height,
+ size=small,colframe=red!50!black,colback=red!10!white,colbacktitle=red!50!white,
+ title={Box \# \thetcbrasternum}]
+ {colback=yellow!10,fonttitle=\bfseries,title=Boxed Raster}
+ \begin{tcolorbox}First box\end{tcolorbox}
+ \begin{tcolorbox}Second box\end{tcolorbox}
+ \begin{tcolorbox}This is a box\\with a second line\end{tcolorbox}
+ \begin{tcolorbox}Another box\end{tcolorbox}
+ \begin{tcolorbox}A box again\end{tcolorbox}
+\end{tcboxedraster}
+\end{dispExample}
+
+\begin{dispExample}
+% \tcbuselibrary{skins}
+\begin{tcbraster}[raster columns=2, raster equal height,
+ raster every box/.style={size=small,colframe=red!50!black,colback=red!10!white,
+ valign=center,halign=center}]
+ \begin{tcolorbox}One\end{tcolorbox}
+ \begin{tcolorbox}Two\end{tcolorbox}
+ \begin{tcboxedraster}{blankest}
+ \begin{tcolorbox}Three\end{tcolorbox}
+ \begin{tcolorbox}Four\end{tcolorbox}
+ \begin{tcolorbox}Five\end{tcolorbox}
+ \begin{tcolorbox}Six\end{tcolorbox}
+ \end{tcboxedraster}
+ \begin{tcolorbox}Seven\end{tcolorbox}
+\end{tcbraster}
+\end{dispExample}
+\end{docEnvironment}
+
+
+\clearpage
+\begin{docEnvironment}[doc new=2016-04-27]{tcboxeditemize}{\oarg{raster options}\marg{box options}}
+ This is a convenience environment which combines a \refEnv{tcolorbox} with
+ an embedded \refEnv{tcbitemize}. The \meta{box options} are given to the
+ outer \refEnv{tcolorbox}, while the \meta{raster options} are given to the
+ embedded \refEnv{tcbitemize}.
+ This environment is especially useful for rasters inside rasters.
+
+\begin{dispExample}
+\begin{tcboxeditemize}[raster columns=3, raster equal height,
+ size=small,colframe=red!50!black,colback=red!10!white,colbacktitle=red!50!white,
+ title={Box \# \thetcbrasternum}]
+ {colback=yellow!10,fonttitle=\bfseries,title=Boxed Itemize}
+ \tcbitem First box
+ \tcbitem Second box
+ \tcbitem This is a box\\with a second line
+ \tcbitem Another box
+ \tcbitem A box again
+\end{tcboxeditemize}
+\end{dispExample}
+\end{docEnvironment}
+
+
+\clearpage
+\subsection{Option Keys of the Library}\label{subsec:raster_options}
+
+\begin{docTcbKey}[][doc new=2014-11-10]{raster columns}{=\meta{number}}{no default, initially |2|}
+ Sets the \meta{number} of columns for a \emph{raster}.
+\begin{dispExample}
+\begin{tcbitemize}[raster columns=3,
+ size=small,colframe=red!50!black,colback=red!10!white]
+ \tcbitem One
+ \tcbitem Two
+ \tcbitem Three
+ \tcbitem Four
+\end{tcbitemize}
+\begin{tcbitemize}[raster columns=4,
+ size=small,colframe=blue!50!black,colback=blue!10!white]
+ \tcbitem One
+ \tcbitem Two
+ \tcbitem Three
+ \tcbitem Four
+\end{tcbitemize}
+\end{dispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2014-11-10]{raster rows}{=\meta{number}}{no default, initially |2|}
+ Sets the \meta{number} of rows for a \emph{raster}.
+ Note that this is only relevant in connection with setting \refKey{/tcb/raster height}
+ to a value greater than |0pt|. Then, it defines the number of rows \emph{per} given
+ height.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2014-11-10]{raster width}{=\meta{length}}{no default, initially \cs{linewidth}}
+ Sets the total raster width to the given \meta{length}.
+ \refKey{/tcb/raster left skip} and \refKey{/tcb/raster right skip} are part
+ of the total width. Note that both skip values are not changed by this option.
+\begin{dispExample}
+\begin{tcbitemize}[raster width=\linewidth/2,
+ size=small,colframe=red!50!black,colback=red!10!white]
+ \tcbitem One
+ \tcbitem Two
+ \tcbitem Three
+ \tcbitem Four
+\end{tcbitemize}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}[][doc new=2018-11-30]{raster width flush left}{=\meta{length}}{style, no default}
+ Sets the total \refKey{/tcb/raster width} to \cs{linewidth} and adapts
+ \refKey{/tcb/raster left skip} and \refKey{/tcb/raster right skip} to
+ place the raster on the left hand side
+ with a visual width of the given \meta{length}.
+\begin{dispExample}
+\begin{tcbitemize}[raster width flush left=\linewidth/2,
+ size=small,colframe=red!50!black,colback=red!10!white]
+ \tcbitem One
+ \tcbitem Two
+ \tcbitem Three
+ \tcbitem Four
+\end{tcbitemize}
+\end{dispExample}
+Note that the results of \refKey{/tcb/raster width} and \refKey{/tcb/raster width flush left}
+look identical, but differ on technical side since the later always fills
+the available \cs{linewidth}.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2018-11-30]{raster width center}{=\meta{length}}{style, no default}
+ Sets the total \refKey{/tcb/raster width} to \cs{linewidth} and adapts
+ \refKey{/tcb/raster left skip} and \refKey{/tcb/raster right skip} to center
+ the raster with a visual width of the given \meta{length}.
+\begin{dispExample}
+\begin{tcbitemize}[raster width center=\linewidth/2,
+ size=small,colframe=red!50!black,colback=red!10!white]
+ \tcbitem One
+ \tcbitem Two
+ \tcbitem Three
+ \tcbitem Four
+\end{tcbitemize}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2018-11-30]{raster width flush right}{=\meta{length}}{style, no default}
+ Sets the total \refKey{/tcb/raster width} to \cs{linewidth} and adapts
+ \refKey{/tcb/raster left skip} and \refKey{/tcb/raster right skip} to
+ place the raster on the right hand side
+ with a visual width of the given \meta{length}.
+\begin{dispExample}
+\begin{tcbitemize}[raster width flush right=\linewidth/2,
+ size=small,colframe=red!50!black,colback=red!10!white]
+ \tcbitem One
+ \tcbitem Two
+ \tcbitem Three
+ \tcbitem Four
+\end{tcbitemize}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}[][doc new=2014-11-10]{raster height}{=\meta{length}}{no default, initially |0pt|}
+ Sets the raster height \emph{per} \refKey{/tcb/raster rows} to the given \meta{length}.
+ This forces an appropriate height for the enclosed boxes.
+ \refKey{/tcb/raster before skip} and \refKey{/tcb/raster after skip}
+ are not part of this calculation.
+ If the \meta{length} is set to |0pt|, this feature is deactivated.
+\begin{dispExample}
+\begin{tcbitemize}[raster height=4cm, raster rows=2,
+ size=small,colframe=red!50!black,colback=red!10!white]
+ \tcbitem One
+ \tcbitem Two
+ \tcbitem[enhanced,
+ finish={\draw[blue,very thick,<->] (frame.south)
+ -- node[right,pos=.75]{4cm} +(0,4); }]
+ Three
+ \tcbitem Four
+ \tcbitem Five
+\end{tcbitemize}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new and updated={2014-11-10}{2014-12-16}]{raster before skip}{=\meta{glue}}{no default, initially |2mm|}
+ Space of the given \meta{glue} is inserted vertically before the \emph{raster}.
+ This space is discardable.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new and updated={2014-11-10}{2014-12-16}]{raster after skip}{=\meta{glue}}{no default, initially |2mm|}
+ Space of the given \meta{glue} is inserted vertically after the \emph{raster}.
+ This space is discardable.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2015-01-08]{raster equal skip}{=\meta{length}}{style, no default}
+ Shortcut to set
+ \refKey{/tcb/raster before skip},
+ \refKey{/tcb/raster after skip},
+ \refKey{/tcb/raster column skip}, and
+ \refKey{/tcb/raster row skip}
+ to the same \meta{length} value.
+\begin{dispExample}
+\begin{tcbitemize}[raster equal skip=4mm,
+ size=small,colframe=red!50!black,colback=red!10!white]
+ \tcbitem One
+ \tcbitem Two
+ \tcbitem Three
+ \tcbitem Four
+\end{tcbitemize}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\clearpage
+
+\begin{docTcbKey}[][doc new=2014-11-10]{raster left skip}{=\meta{length}}{no default, initially |0pt|}
+ Space of the given \meta{length} is inserted horizontally left of the \emph{raster}.
+\begin{dispExample}
+\begin{tcbitemize}[raster left skip=2cm,
+ size=small,colframe=red!50!black,colback=red!10!white]
+ \tcbitem One
+ \tcbitem Two
+ \tcbitem Three
+ \tcbitem Four
+\end{tcbitemize}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2014-11-10]{raster right skip}{=\meta{length}}{no default, initially |0pt|}
+ Space of the given \meta{length} is inserted horizontally right of the \emph{raster}.
+\begin{dispExample}
+\begin{tcbitemize}[raster right skip=2cm,
+ size=small,colframe=red!50!black,colback=red!10!white]
+ \tcbitem One
+ \tcbitem Two
+ \tcbitem Three
+ \tcbitem Four
+\end{tcbitemize}
+\end{dispExample}
+\end{docTcbKey}
+
+\enlargethispage*{1cm}
+
+\begin{docTcbKey}[][doc new=2014-11-10]{raster column skip}{=\meta{length}}{no default, initially |2mm|}
+ Space of the given \meta{length} is inserted horizontally between the columns.
+\begin{dispExample}
+\begin{tcbitemize}[raster column skip=2cm,
+ size=small,colframe=red!50!black,colback=red!10!white]
+ \tcbitem One
+ \tcbitem Two
+ \tcbitem Three
+ \tcbitem Four
+\end{tcbitemize}
+\end{dispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2014-11-10]{raster row skip}{=\meta{length}}{no default, initially |2mm|}
+ Space of the given \meta{length} is inserted vertically between the rows.
+\begin{dispExample}
+\begin{tcbitemize}[raster row skip=0pt,
+ size=small,colframe=red!50!black,colback=red!10!white]
+ \tcbitem One
+ \tcbitem Two
+ \tcbitem Three
+ \tcbitem Four
+\end{tcbitemize}
+\end{dispExample}
+\end{docTcbKey}
+
+\clearpage
+
+\begin{docTcbKey}[][doc new=2014-11-10]{raster halign}{=\meta{alignment}}{no default, initially \docValue{left}}
+ Defines the horizontal alignment for the boxes of the rows of a \emph{raster},
+ if these rows are not completely filled (mainly: the last one).
+
+ Feasible values for \meta{alignment} are:
+ \begin{itemize}
+ \item\docValue{left}: align to the left side,
+ \item\docValue{center}: align to the center,
+ \item\docValue{right}: align to the right side.
+ \end{itemize}
+
+\begin{dispExample}
+\begin{tcbitemize}[raster halign=center,
+ size=small,colframe=red!50!black,colback=red!10!white]
+ \tcbitem One
+ \tcbitem Two
+ \tcbitem Three
+\end{tcbitemize}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2014-11-10]{raster valign}{=\meta{alignment}}{no default, initially \docValue{center}}
+ Defines the vertical alignment for the boxes of a row,
+ if the boxes do not have equal height. This sets the
+ \refKey{/tcb/box align} option.
+
+ Feasible values for \meta{alignment} are:
+ \begin{itemize}
+ \item\docValue{top}: align to the top side,
+ \item\docValue{center}: align to the center,
+ \item\docValue{bottom}: align to the bottom side.
+ \end{itemize}
+
+\begin{dispExample}
+\begin{tcbitemize}[raster valign=top, raster columns=3,
+ size=small,colframe=red!50!black,colback=red!10!white]
+ \tcbitem \Huge One
+ \tcbitem \Large Two
+ \tcbitem Three
+\end{tcbitemize}
+\begin{tcbitemize}[raster valign=center, raster columns=3,
+ size=small,colframe=blue!50!black,colback=blue!10!white]
+ \tcbitem \Huge One
+ \tcbitem \Large Two
+ \tcbitem Three
+\end{tcbitemize}
+\begin{tcbitemize}[raster valign=bottom, raster columns=3,
+ size=small,colframe=green!50!black,colback=green!10!white]
+ \tcbitem \Huge One
+ \tcbitem \Large Two
+ \tcbitem Three
+\end{tcbitemize}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}[][doc new and updated={2014-11-10}{2017-02-28}]{raster equal height}{=\meta{type}}{default \docValue{all}, initially \docValue{none}}
+ Puts the enclosed boxes into a common \refKey{/tcb/equal height group}.
+ The \meta{id} of the equal height group is chosen automatically, but
+ it may be set manually by \refKey{/tcb/raster equal height group}.
+ Also see \refKey{/tcb/minimum for current equal height group}.
+
+ Feasible values for \meta{type} are:
+ \begin{itemize}
+ \item\docValue{none}: no equal height setting,
+ \item\docValue{rows}: all boxes in a row are set to equal height,
+ \item\docValue{all}: all boxes in the raster are set to equal height.
+ \end{itemize}
+ Note that you have to compile twice to see changes.
+
+\begin{dispExample}
+\begin{tcbitemize}[raster equal height=rows,
+ size=small,colframe=red!50!black,colback=red!10!white]
+ \tcbitem One
+ \tcbitem \Huge Two
+ \tcbitem Three
+ \tcbitem Four
+\end{tcbitemize}
+\end{dispExample}
+\begin{dispExample}
+\begin{tcbitemize}[raster equal height,
+ size=small,colframe=red!50!black,colback=red!10!white]
+ \tcbitem One
+ \tcbitem \Huge Two
+ \tcbitem Three
+ \tcbitem Four
+\end{tcbitemize}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2014-11-10]{raster equal height group}{=\meta{id}}{no default}
+ Overwrites the automatically chosen id with the given \meta{id}.
+ If this is used to share a common height between the \emph{raster} and
+ another raster or box, the \refKey{/tcb/raster equal height} option
+ should be set to \docValue{all}.
+\begin{dispExample}
+\tcbset{size=small,colframe=red!50!black,colback=red!10!white}
+\begin{tcolorbox}[equal height group=raster-manual-id]
+ A single box
+\end{tcolorbox}
+\begin{tcbitemize}[raster equal height,raster equal height group=raster-manual-id]
+ \tcbitem One
+ \tcbitem \Huge Two
+\end{tcbitemize}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\clearpage
+
+\begin{docTcbKey}[][doc new=2014-11-10]{raster force size}{\colOpt{=true\textbar false}}{default |true|, initially |true|}
+ Enforces the raster size computations onto the enclosed boxes.
+ If set to \docValue{false}, individual settings can be used (for the better or worse).
+\begin{dispExample}
+\begin{tcbitemize}[raster force size=false, raster halign=center,
+ size=small,colframe=red!50!black,colback=red!10!white]
+ \tcbitem One
+ \tcbitem Two
+ \tcbitem[add to width=-3cm] Three
+ \tcbitem[add to width=-3cm] Four
+ \tcbitem[add to width=-3cm] Five
+ \tcbitem[add to width=3cm] Six
+\end{tcbitemize}
+\end{dispExample}
+\end{docTcbKey}
+
+
+
+\begin{docTcbKey}[][doc new=2014-11-10]{raster reset}{}{no value}
+ Sets all raster settings back to their default values.
+ Note that \refKey{/tcb/reset} does not execute this option.
+ Style settings like \refKey{/tcb/raster odd column} etc. are not
+ touched by \refKey{/tcb/raster reset}.
+\end{docTcbKey}
+
+
+
+\subsection{Adding Styles for Specific Boxes}\label{subsec:raster_styles}
+
+The following styles can be defined to address certain boxes inside
+a \emph{raster}. Note that such style definitions are not removed by
+\refKey{/tcb/reset} or \refKey{/tcb/raster reset}.
+The style definitions are used in the order given below.
+
+\begin{docTcbKey}[][doc new=2014-11-24]{raster every box}{}{style}
+This style is used for every box.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2014-11-10]{raster odd column}{}{style}
+This style is used for every box in an odd column.
+\begin{dispExample}
+\begin{tcbitemize}[size=small,colframe=red!50!black,colback=red!10!white,
+ raster odd column/.style={colframe=blue!50!black,colback=blue!10!white}]
+ \tcbitem One
+ \tcbitem Two
+ \tcbitem Three
+ \tcbitem Four
+\end{tcbitemize}
+\end{dispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2014-11-10]{raster even column}{}{style}
+This style is used for every box in an even column.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2014-11-10]{raster column n}{}{style}
+This style is used for every box in the |n|-th column.
+|n| has to be replaced by a number.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2014-11-10]{raster odd row}{}{style}
+This style is used for every box in an odd row.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2014-11-10]{raster even row}{}{style}
+This style is used for every box in an even row.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2014-11-10]{raster row m}{}{style}
+This style is used for every box in the |m|-th row.
+|m| has to be replaced by a number.
+\begin{dispExample}
+\begin{tcbitemize}[size=small,colframe=red!50!black,colback=red!10!white,
+ raster row 2/.style={colframe=blue!50!black,colback=blue!10!white}]
+ \tcbitem One
+ \tcbitem Two
+ \tcbitem Three
+ \tcbitem Four
+\end{tcbitemize}
+\end{dispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2014-11-10]{raster odd number}{}{style}
+This style is used for every box with an odd number.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2014-11-10]{raster even number}{}{style}
+This style is used for every box with an even number.
+\begin{dispExample}
+\begin{tcbitemize}[size=small,colframe=red!50!black,colback=red!10!white,
+ raster columns=3,
+ raster even number/.style={colframe=blue!50!black,colback=blue!10!white}]
+ \tcbitem One
+ \tcbitem Two
+ \tcbitem Three
+ \tcbitem Four
+ \tcbitem Five
+ \tcbitem Six
+\end{tcbitemize}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2014-11-10]{raster row m column n}{}{style}
+This style is used for the box in the
+|m|-th row and |n|-th column.
+|m| and |n| have to be replaced by numbers.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2014-11-10]{raster number n}{}{style}
+This style is used for the box with number |n|.
+|n| has to be replaced by a number.
+\begin{dispExample}
+\begin{tcbitemize}[size=small,colframe=red!50!black,colback=red!10!white,
+ raster number 4/.style={colframe=blue!50!black,colback=blue!10!white}]
+ \tcbitem One
+ \tcbitem Two
+ \tcbitem Three
+ \tcbitem Four
+\end{tcbitemize}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\clearpage
+\subsection{Combining Columns or Rows}\label{subsec:raster_multicolrow}
+
+\begin{docTcbKey}[][doc new=2016-02-19]{raster multicolumn}{=\meta{number}}{no default, initially unset}
+ This option has to be set inside the option list of a \refEnv{tcolorbox}
+ inside a \refEnv{tcbraster} or inside \refCom{tcbitem} inside \refEnv{tcbitemize}.
+ It merges the given \meta{number} of boxes into one single box
+ on the same line. The resulting box gets the \docAuxCommand{thetcbrasternum}
+ of the first box.
+ If there are not enough boxes available on the current line, this option
+ is ignored and a warning is given.
+
+\begin{dispExample}
+\begin{tcbitemize}[raster equal height=rows,raster columns=3,
+ title=\thetcbrasternum,colframe=red!50!black,colback=red!10!white]
+\tcbitem[colframe=blue!50!black,colback=blue!10!white,raster multicolumn=1]
+ multicolumn=1
+\tcbitem
+\tcbitem
+\tcbitem[colframe=blue!50!black,colback=blue!10!white,raster multicolumn=2]
+ multicolumn=2
+\tcbitem
+\tcbitem[colframe=blue!50!black,colback=blue!10!white,raster multicolumn=3]
+ multicolumn=3
+\tcbitem
+\tcbitem[colframe=blue!50!black,colback=blue!10!white,raster multicolumn=2]
+ multicolumn=2
+\end{tcbitemize}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}[][doc new=2016-02-19]{raster multirow}{=\meta{number}}{no default, initially unset}
+ This option has to be set inside the option list of a \refEnv{tcolorbox}
+ inside a \refEnv{tcbraster} or inside \refCom{tcbitem} inside \refEnv{tcbitemize}.
+ This option not really merges boxes, but simply sizes the current box to fit
+ the space of \meta{number} rows.
+
+ \begin{marker}
+ \refKey{/tcb/raster multirow} needs \refKey{/tcb/raster height} to be set.
+ How to achieve a similar result for boxes without fixed \refKey{/tcb/raster height}
+ is shown afterwards.
+ \end{marker}
+
+\begin{dispExample}
+\begin{tcbitemize}[raster rows=3,raster columns=3,raster height=6cm,
+ raster every box/.style={colframe=red!50!black,colback=red!10!white}]
+\tcbitem
+\tcbitem
+\tcbitem
+\tcbitem[colframe=blue!50!black,colback=blue!10!white,raster multirow=2]
+ multirow=2
+\tcbitem[raster multicolumn=2,raster multirow=2,blankest]
+ \begin{tcbitemize}[raster rows=2,raster columns=2,raster height=\tcbtextheight]
+ \tcbitem
+ \tcbitem
+ \tcbitem
+ \tcbitem
+ \end{tcbitemize}
+\end{tcbitemize}
+\end{dispExample}
+
+
+\clearpage
+For rasters without fixed \refKey{/tcb/raster height}, \refKey{/tcb/raster multirow}
+cannot be used. Note that \refCom{tcbtextheight} also cannot be used like
+in the previous example.
+
+But, with combination of \refKey{/tcb/raster equal height} and
+\refKey{/tcb/space to}, a similar effect can be created:
+
+\begin{dispExample}
+\begin{tcbitemize}[raster columns=3,raster equal height=rows,
+ raster every box/.style={colframe=red!50!black,colback=red!10!white}]
+\tcbitem
+\tcbitem
+\tcbitem
+\tcbitem[colframe=blue!50!black,colback=blue!10!white]
+ \lipsum[2]
+\tcbitem[raster multicolumn=2,blankest,space to=\myspace]
+ \begin{tcbitemize}[raster columns=2]
+ \tcbitem This is a box of the inner raster.
+ \tcbitem
+ \tcbitem[height=\myspace]
+ \tcbitem[height=\myspace]
+ \end{tcbitemize}
+\end{tcbitemize}
+\end{dispExample}
+
+\end{docTcbKey}
+
+
+
+\clearpage
+\subsection{Rasters inside Rasters}\label{subsec:raster_insideraster}
+
+A \emph{raster} inside a \emph{raster} cannot be used directly, because
+a \emph{raster} can only contain a \emph{tcolorbox} or something
+derived from a \emph{tcolorbox}. So, a \emph{raster} can be put inside
+a \emph{tcolorbox} inside a \emph{raster}.
+
+Some examples for such constructions can be found at \refEnv{tcboxedraster},
+\refKey{/tcb/raster multicolumn},
+\refKey{/tcb/raster multirow}.
+
+
+\subsubsection{Raster Setup}
+The intermediating \refEnv{tcolorbox} can be made invisible by using
+\refKey{/tcb/blankest}.
+
+\begin{dispExample}
+\begin{tcbraster}[raster equal height=rows,
+ raster every box/.style={colframe=red!50!black,colback=red!10!white}]
+ \begin{tcolorbox}[blankest]
+ \begin{tcbraster}[raster columns=1]
+ \begin{tcolorbox}One\end{tcolorbox}
+ \begin{tcolorbox}Two\end{tcolorbox}
+ \end{tcbraster}
+ \end{tcolorbox}
+ \begin{tcolorbox}raster+tcolorbox+raster\end{tcolorbox}
+\end{tcbraster}
+\end{dispExample}
+
+\enlargethispage*{1cm}
+\begin{dispExample}
+\begin{tcbraster}[raster equal height=rows,
+ raster every box/.style={colframe=red!50!black,colback=red!10!white}]
+ \begin{tcboxedraster}[raster columns=1]{blankest}
+ \begin{tcolorbox}One\end{tcolorbox}
+ \begin{tcolorbox}Two\end{tcolorbox}
+ \end{tcboxedraster}
+ \begin{tcolorbox}raster+tcboxedraster\end{tcolorbox}
+\end{tcbraster}
+\end{dispExample}
+
+
+\begin{dispExample}
+\begin{tcbitemize}[raster equal height=rows,
+ raster every box/.style={colframe=red!50!black,colback=red!10!white}]
+ \tcbitem[blankest]
+ \begin{tcbitemize}[raster columns=1]
+ \tcbitem One
+ \tcbitem Two
+ \end{tcbitemize}
+ \tcbitem tcbitemize+tcbitem+tcbitemize
+\end{tcbitemize}
+\end{dispExample}
+
+
+\subsubsection{Placing Spaces}
+If the heights of boxes inside staggered rasters should be matched, the
+space has to be distributed accordingly.
+
+\begin{itemize}
+\item For fixed height boxes/rasters using \refKey{/tcb/raster height},
+ the height of boxes is available by \refCom{tcbtextheight}. This can be
+ used to size deeper layered boxes/rasters.
+\item For boxes/rasters layed out using \refKey{/tcb/raster equal height},
+ space can be distributed by \refKey{/tcb/space to}.
+ It can take several compilations until all spaces are distributed correctly.
+\end{itemize}
+
+
+\begin{dispExample}
+\begin{tcbitemize}[raster rows=2,raster height=6cm,
+ raster every box/.style={colframe=red!50!black,colback=red!10!white}]
+ \tcbitem[blankest]
+ \begin{tcbitemize}[raster columns=1,raster rows=2,raster height=\tcbtextheight]
+ \tcbitem One
+ \tcbitem Two
+ \end{tcbitemize}
+ \tcbitem This is a fixed height box.
+ \tcbitem Three
+ \tcbitem Four
+\end{tcbitemize}
+\end{dispExample}
+
+
+\begin{dispExample}
+\begin{tcbitemize}[raster columns=4,raster rows=4,raster height=0.8\linewidth,
+ raster every box/.style={size=small,beamer,
+ colframe=blue!75!yellow,colback=red!75!yellow!20,
+ center title,title=Box}]
+ \tcbitem One
+ \tcbitem Two
+ \tcbitem Three
+ \tcbitem Four
+ \tcbitem[raster multirow=2,blankest]
+ \begin{tcbitemize}[raster columns=1,raster rows=2,raster height=\tcbtextheight]
+ \tcbitem Twelve
+ \tcbitem Eleven
+ \end{tcbitemize}
+ \tcbitem[raster multirow=2,raster multicolumn=2,
+ colframe=red!75!yellow,colback=blue!75!yellow!20]
+ This is an example with fixed height boxes.
+ \tcbitem[raster multirow=2,blankest]
+ \begin{tcbitemize}[raster columns=1,raster rows=2,raster height=\tcbtextheight]
+ \tcbitem Five
+ \tcbitem Six
+ \end{tcbitemize}
+ \tcbitem Ten
+ \tcbitem Nine
+ \tcbitem Eight
+ \tcbitem Seven
+\end{tcbitemize}
+\end{dispExample}
+
+
+\begin{dispExample}
+\begin{tcbitemize}[raster equal height=rows,
+ raster every box/.style={colframe=red!50!black,colback=red!10!white}]
+ \tcbitem[blankest,space to=\myspace]
+ \begin{tcbitemize}[raster columns=1]
+ \tcbitem One
+ \tcbitem[add to natural height=\myspace]
+ This box will adapt its height.
+ \end{tcbitemize}
+ \tcbitem This is a flexible height box.
+ \tcbitem \lipsum[4]
+ \tcbitem[blankest,space to=\myspace]
+ \begin{tcbitemize}[raster columns=1]
+ \tcbitem One
+ \tcbitem[add to natural height=\myspace]
+ This box will adapt its height.
+ \end{tcbitemize}
+\end{tcbitemize}
+\end{dispExample}
+
+
+
+\begin{dispExample}
+\begin{tcbitemize}[raster equal height=rows,
+ raster every box/.style={colframe=red!50!black,colback=red!10!white}]
+ \tcbitem[blankest,space to=\myspace]
+ \begin{tcbitemize}[raster columns=1]
+ \tcbitem One
+ \tcbitem[add to natural height=\myspace]
+ This box will adapt its height.
+ \tcbitem \lipsum[4]
+ \end{tcbitemize}
+ \tcbitem[blankest,space to=\myspace]
+ \begin{tcbitemize}[raster columns=1]
+ \tcbitem[blankest]\includegraphics[width=\linewidth]{goldshade.png}
+ \tcbitem[add to natural height=\myspace]
+ This box will adapt its height.
+ \end{tcbitemize}
+\end{tcbitemize}
+\end{dispExample}
+
+
+
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.recording.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.recording.tex
new file mode 100644
index 0000000000..75c016fb91
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.recording.tex
@@ -0,0 +1,187 @@
+% !TeX root = tcolorbox.tex
+% include file of tcolorbox.tex (manual of the LaTeX package tcolorbox)
+\clearpage
+\section{Recording}\label{sec:recording}%
+\tcbset{external/prefix=external/recording_}%
+The package provides some macros and options to take \emph{records} during
+compilation. This is done by \LaTeX\ file operations to save some data
+to a file for later usage. The main application scenario is depicted in
+\Vref{sec:recording-exercises} where
+information about example solutions is recorded and read again
+in \Vref{sec:recording-solutions}.
+
+\subsection{Macros}\label{sec:recording-makros}
+\begin{docCommand}[doc new=2014-11-28]{tcbstartrecording}{\oarg{file name}}
+ Opens a file denoted by \meta{file name} for writing the records.
+ The default file name is |\jobname.records|.
+ See \Vref{sec:recording-exercises} for an example application.
+\end{docCommand}
+
+\begin{docCommand}[doc new=2014-11-28]{tcbrecord}{\marg{content}}
+ Records any \meta{content} to the record file.
+ \refCom{tcbrecord} is implemented as |\immediate\write|.
+ \refCom{tcbstartrecording} has to be called before; otherwise, \refCom{tcbrecord}
+ is silently ignored.
+\begin{dispListing}
+\tcbrecord{\string\solution{\thetcbcounter}{solutions/exercise-\thetcbcounter.tex}}
+\end{dispListing}
+\end{docCommand}
+
+\begin{docCommand}[doc new=2014-11-28]{tcbstoprecording}{}
+ Closes the current record file which was opened by \refCom{tcbstartrecording}
+ before.
+\end{docCommand}
+
+\begin{docCommand}[doc new=2014-11-28]{tcbinputrecords}{\oarg{file name}}
+ Opens a file denoted by \meta{file name} for reading the records via |\input|.
+ The default file name is the name of the last used record file for saving.
+ \refCom{tcbstoprecording} has to be called before.
+\end{docCommand}
+
+
+\subsection{Options}\label{sec:recording-options}
+\begin{docTcbKey}[][doc new=2014-11-28]{record}{=\meta{content}}{style, no default}
+ Records any \meta{content} to the record file, see \refCom{tcbrecord}.
+ This key can be used several times to write several lines.
+ \begin{dispListing}
+ record={\string\solution{\thetcbcounter}{solutions/exercise-\thetcbcounter.tex}}
+ \end{dispListing}
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2014-11-28]{no recording}{}{}
+ Disables \refCom{tcbrecord} and \refKey{/tcb/record} inside the current
+ group.
+\end{docTcbKey}
+
+
+\clearpage
+\subsection{Example: Exercises}\label{sec:recording-exercises}
+The following application example creates exercises and their corresponding
+solutions. Each pair is generated inside a single |tcolorbox| where the
+solution is given below \refCom{tcblower}. For every example, the solution part
+is saved by \refKey{/tcb/savelowerto} to a file. The saving is recorded using
+\refKey{/tcb/record}. To enlighten the possibilities, the second exercise
+has no solution. Finally, the solutions are input in \Vref{sec:recording-solutions}.
+
+\inputpreamblelisting{L}
+
+\begin{dispListing*}{breakable,before upper=}
+\tcbstartrecording
+
+\begin{exercise}
+ Compute the derivative of the following function:
+ \begin{equation*}
+ f(x)=\sin((\sin x)^2)
+ \end{equation*}
+\tcblower
+ The derivative is:
+ \begin{align*}
+ f'(x) &= \left( \sin((\sin x)^2) \right)'
+ =\cos((\sin x)^2) 2\sin x \cos x.
+ \end{align*}
+\end{exercise}
+
+\begin{exercise}[no solution]
+ It holds:
+ \begin{equation*}
+ \frac{d}{dx}\left(\ln|x|\right) = \frac{1}{x}.
+ \end{equation*}
+\end{exercise}
+
+\begin{exercise}
+ Compute the derivative of the following function:
+ \begin{equation*}
+ f(x)=(\sin(\sin x))^2
+ \end{equation*}
+\tcblower
+ The derivative is:
+ \begin{align*}
+ f'(x) &= \left( (\sin(\sin x))^2 \right)'
+ =2\sin(\sin x)\cos(\sin x)\cos x.
+ \end{align*}
+\end{exercise}
+
+\begin{exercise}
+ Compute the derivative of the following function:
+ \begin{equation*}
+ f(x)=\sqrt{x^3-6x^2+2x}
+ \end{equation*}
+\tcblower
+ The derivative is:
+ \begin{align*}
+ f'(x) &= \left( \sqrt{x^3-6x^2+2x} \right)'
+ = \frac{3x^2-12x+2}{2\sqrt{x^3-6x^2+2x}}.
+ \end{align*}
+\end{exercise}
+
+\begin{exercise}
+ Compute the derivative of the following function:
+ \begin{equation*}
+ f(x)=\left(\frac{2+3x}{1-2x}\right)^3
+ \end{equation*}
+\tcblower
+ The derivative is:
+ \begin{align*}
+ f'(x) &= \left( \left(\frac{2+3x}{1-2x}\right)^3 \right)'
+ = 3 \left(\frac{2+3x}{1-2x}\right)^2 \frac{(1-2x)3-(2+3x)(-2)}{(1-2x)^2}
+ = \frac{21(2+3x)^2}{(1-2x)^4}.
+ \end{align*}
+\end{exercise}
+
+\begin{exercise}
+ Compute the derivative of the following function:
+ \begin{equation*}
+ f(x)=\frac{\cos x}{(\tan 2x)^2}
+ \end{equation*}
+\tcblower
+ The derivative is:
+ \begin{align*}
+ f'(x) &= \left( \frac{\cos x}{(\tan 2x)^2} \right)'
+ = \left( \frac{\cos x (\cos 2x)^2}{(\sin 2x)^2} \right)'\\
+ &= \frac{(\sin 2x)^2 [(-\sin x)(\cos 2x)^2+(\cos x)4\cos 2x (-\sin 2x)]
+ - \cos x (\cos 2x)^2 4\sin 2x \cos 2x}{(\sin 2x)^4}\\
+ &= -\frac{\cos(2x) [\sin x \sin 2x \cos 2x+ 4\cos x(\sin 2x)^2
+ + 4 \cos x (\cos 2x)^2]}{(\sin 2x)^3}\\
+ &= -\frac{\cos(2x) [\sin x \sin 2x \cos 2x+ 4\cos x]}{(\sin 2x)^3}.
+ \end{align*}
+\end{exercise}
+
+\begin{exercise}
+ Compute the derivative of the following function:
+ \begin{equation*}
+ f(x)=\cos((2x^2+3)^3)
+ \end{equation*}
+\tcblower
+ The derivative is:
+ \begin{align*}
+ f'(x) &= \left( \cos((2x^2+3)^3) \right)'
+ =-\sin((2x^2+3)^3) 3(2x^2+3)^2 2\cdot 2x\\
+ &=-12x(2x^2+3)^2\sin((2x^2+3)^3).
+ \end{align*}
+\end{exercise}
+
+\begin{exercise}
+ Compute the derivative of the following function:
+ \begin{equation*}
+ f(x)=(x^2+1)\sqrt{x^4+1}
+ \end{equation*}
+\tcblower
+ The derivative is:
+ \begin{align*}
+ f'(x) &= \left( (x^2+1)\sqrt{x^4+1} \right)'
+ = 2x\sqrt{x^4+1} + \frac{2x^3(x^2+1)}{\sqrt{x^4+1}}.
+ \end{align*}
+\end{exercise}
+
+\tcbstoprecording
+\end{dispListing*}
+\tcbusetemp
+
+\subsection{Example: Solutions}\label{sec:recording-solutions}
+This concludes the example given in \Vref{sec:recording-exercises}.
+Now, the saved and recorded solutions are included.
+
+\begin{dispListing*}{breakable,before upper=}
+\tcbinputrecords
+\end{dispListing*}
+\tcbusetemp
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.references.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.references.tex
new file mode 100644
index 0000000000..8cfebb8cbe
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.references.tex
@@ -0,0 +1,4 @@
+% !TeX root = tcolorbox.tex
+% include file of tcolorbox.tex (manual of the LaTeX package tcolorbox)
+\clearpage
+\printbibliography[heading=bibintoc]
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.s_main.sty b/macros/latex/contrib/tcolorbox/tcolorbox.doc.s_main.sty
new file mode 100644
index 0000000000..9a48d42bb6
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.s_main.sty
@@ -0,0 +1,272 @@
+% !TeX root = tcolorbox.tex
+% include file (style) of tcolorbox.tex (manual of the LaTeX package tcolorbox)
+\renewcommand*\l@subsection{\@dottedtocline{2}{1.5em}{2.7em}}
+\renewcommand*\l@subsubsection{\@dottedtocline{3}{4.2em}{3.2em}}
+
+\RequirePackage[T1]{fontenc}
+\RequirePackage[latin1]{inputenc}
+\RequirePackage[english]{babel}
+\RequirePackage{lmodern,parskip,array,ifthen,calc}
+\RequirePackage{amsmath,amssymb}
+\RequirePackage[svgnames,table,hyperref]{xcolor}
+\RequirePackage{tikz}
+\RequirePackage{varioref}
+\RequirePackage[makeindex]{imakeidx}
+\RequirePackage[pdftex,bookmarks,raiselinks,pageanchor,hyperindex,colorlinks]{hyperref}
+\RequirePackage{bookmark,varwidth,cleveref,incgraph}
+
+\RequirePackage[a4paper,left=2.5cm,right=2.5cm,top=1.5cm,bottom=1.5cm,
+ marginparsep=3mm,marginparwidth=18mm,
+ headheight=0mm,headsep=0cm,
+ footskip=1.5cm,includeheadfoot%,showframe
+ ]{geometry}
+\RequirePackage{fancyhdr}
+\fancyhf{}
+\fancyfoot[C]{\thepage}%
+\renewcommand{\headrulewidth}{0pt}
+\renewcommand{\footrulewidth}{0pt}
+\pagestyle{fancy}
+\tolerance=2000%
+\setlength{\emergencystretch}{20pt}%
+
+
+\usetikzlibrary{shadings,shadows}
+\usetikzlibrary{decorations.pathmorphing}
+\usetikzlibrary{patterns}
+\usetikzlibrary{spy}
+\usetikzlibrary{arrows.meta}
+
+\RequirePackage{array,tabularx}
+\RequirePackage{amsmath}
+\RequirePackage{lipsum}
+\RequirePackage{empheq}
+\RequirePackage[extendedchars,encoding,filenameencoding=utf-8]{grffile}
+
+\providecommand{\tcbpkgprefix}{}
+\RequirePackage{\tcbpkgprefix tcolorbox}
+
+\tcbuselibrary{most,documentation}
+\tcbifexternal{}{%
+ \tcbuselibrary{minted}%
+ \tcbset{listing engine=listings,initialize@reset={listing engine=listings}}%
+}
+
+\tcbset{skin=enhanced,
+ doc head={colback=yellow!10!white,interior style=fill},
+ doc head key={colback=magenta!5!white,interior style=fill},
+ color key=DarkViolet,
+ color value=Teal,
+ color color=Teal,
+ color counter=Orange!85!black,
+ color length=Orange!85!black,
+ index colorize,
+ index annotate,
+}
+\urlstyle{sf}
+
+\tcbmakedocSubKey{docTcbKey}{tcb}
+\tcbmakedocSubKey{langTcbKey}{tcb/doclang}
+\tcbmakedocSubKey{newTcbKey}{tcb/new}
+\tcbmakedocSubKey{boxTcbKey}{tcb/boxtitle}
+\tcbmakedocSubKey{extTcbKey}{tcb/external}
+\tcbmakedocSubKey{vigTcbKey}{tcb/vig}
+\tcbmakedocSubKey{posterTcbKey}{tcb/poster}
+\tcbmakedocSubKey{posterlocTcbKey}{tcb/posterloc}
+\tcbmakedocSubKey{postersetTcbKey}{tcb/posterset}
+\tcbmakedocSubKey{docTikzKey}{tikz}
+
+\def\tikzname{Ti\emph{k}Z}
+
+\newrobustcmd{\tcbIndexPrintSkinCA}[1]{\tcb@Index@Print@CA{#1}{\kvtcb@col@key}{Skin}}
+\newrobustcmd{\tcbIndexPrintSkinC}[1]{\tcb@Index@Print@C{#1}{\kvtcb@col@key}}
+\def\tcb@index@Skin#1{\iftcb@doc@toindex\index{#1\idx@actual\tcbIndexPrintSkinCA{#1}}\index{Skins\idx@level#1\idx@actual\tcbIndexPrintSkinC{#1}}\fi}%
+
+\newenvironment{docSkin}[2][]{\begin{tcb@manual@entry}%
+ \begin{tcb@doc@head}{colback=magenta!5!white,interior style=fill,#1}%
+ \hypertarget{skin:#2}{\tcb@Print@Key{/tcb/skin=}\tcb@Print@Val{#2}\tcb@index@Skin{#2}\protected@edef\@currentlabel{#2}\label{skin:#2}\hfill(skin)}%
+ \end{tcb@doc@head}}%
+ {\end{tcb@manual@entry}}
+\def\refSkin{\tcb@ref@doc{skin}}
+
+\newrobustcmd{\tcbIndexPrintFadCA}[1]{\tcb@Index@Print@CA{#1}{\kvtcb@col@value}{fading}}
+\newrobustcmd{\tcbIndexPrintFadC}[1]{\tcb@Index@Print@C{#1}{\kvtcb@col@value}}
+\def\tcb@Print@Fad#1{\textcolor{\kvtcb@col@value}{\bfseries\tcb@scantokens{#1}}}
+\def\tcb@index@Fad#1{\iftcb@doc@toindex\kvtcb@index@command{#1\idx@actual\tcbIndexPrintFadCA{#1}}\kvtcb@index@command{Fadings\idx@level#1\idx@actual\tcbIndexPrintFadC{#1}}\fi}
+
+\DeclareDocumentCommand\docFading{sm}{%
+ \tcb@Print@Fad{#2}%
+ \IfBooleanTF{#1}{}{\tcb@index@Fad{#2}}%
+}
+
+\newtcolorbox{marker}[1][]{enhanced,
+ before skip=2mm,after skip=3mm,
+ boxrule=0.4pt,left=5mm,right=2mm,top=1mm,bottom=1mm,
+ colback=yellow!50,
+ colframe=yellow!20!black,
+ sharp corners,rounded corners=southeast,arc is angular,arc=3mm,
+ underlay={%
+ \path[fill=tcbcolback!80!black] ([yshift=3mm]interior.south east)--++(-0.4,-0.1)--++(0.1,-0.2);
+ \path[draw=tcbcolframe,shorten <=-0.05mm,shorten >=-0.05mm] ([yshift=3mm]interior.south east)--++(-0.4,-0.1)--++(0.1,-0.2);
+ \path[fill=yellow!50!black,draw=none] (interior.south west) rectangle node[white]{\Huge\bfseries !} ([xshift=4mm]interior.north west);
+ },
+ drop fuzzy shadow,#1}
+
+
+\renewcommand*{\tcbdocnew}[1]{\textcolor{green!50!black}{\sffamily\bfseries N} #1}
+\renewcommand*{\tcbdocupdated}[1]{\textcolor{blue!75!black}{\sffamily\bfseries U} #1}
+
+\newcounter{texexp}
+\newcounter{texercise}
+\newcounter{mytheorem}[section]
+
+\newcounter{myexample}
+
+\newcounter{example}
+\newlength{\examlen}
+\newsavebox\mysavebox
+
+\lstdefinestyle{mydocumentation}{style=tcbdocumentation,
+ classoffset=0,
+ texcsstyle=*\color{blue},
+ % LaTeX and other packages
+ moretexcs={arrayrulecolor,draw,includegraphics,ifthenelse,isodd,lipsum,path,pgfkeysalso},
+ classoffset=1,
+ % tcolorbox macros
+ moretexcs={% core
+ endtcolorbox,endtcbverbatimwrite,newtcolorbox,newtcbox,newtcboxfit,tcbusetemp,tcbtitle,tcbtitletext,
+ tcblower,tcbox,tcboxfit,tcbset,tcbuselibrary,tcolorbox,tcbverbatimwrite,tcbsetforeverylayer,tcbsubtitle,
+ tcolorboxenvironment,tcblistof,tcbstartrecording,tcbrecord,tcbstoprecording,tcbinputrecords,
+ tcbpatcharcangular,tcbpatcharcround,tcbifoddpage,thetcolorboxnumber,thetcolorboxpage,
+ tcbheightfromgroup,tcbheightspace,tcbtextwidth,tcbtextheight,
+ % listings
+ endtcblisting,newtcblisting,newtcbinputlisting,
+ tcblisting,tcbinputlisting,tcbuselistingtext,tcbuselistinglisting,tcbusetemplisting,
+ tcbfitdim,tcbfitsteps,
+ % raster
+ thetcbrasternum,tcbitem,
+ % breakable
+ tcbbreak,
+ % theorems
+ tcbmaketheorem,tcboxmath,tcbhighmath,thetcbcounter,newtcbtheorem,
+ % documentation
+ brackets,
+ colDef,colOpt,cs,
+ docAuxCommand,docColor,docAuxEnvironment,docAuxKey,
+ docCounter,docLength,
+ meta,marg,
+ oarg,
+ refCom,refEnv,refKey,
+ tcbmakedocSubKey,tcbdocmarginnote,tcbdocnew,tcbdocupdated,
+ % skins
+ tcbincludegraphics,tcbincludepdf,pdfpages,imagepage,imagepath,imagename,
+ tcbline,tcboxedtitleheight,tcboxedtitlewidth,
+ tcbsettowidthofnode,tcbsetmacrotowidthofnode,tcbsettoheightofnode,tcbsetmacrotoheightofnode,
+ tcbhypernode,
+ % vignette
+ tcbvignette,
+ % xparse
+ DeclareTColorBox,NewTColorBox,RenewTColorBox,ProvideTColorBox,
+ DeclareTotalTColorBox,NewTotalTColorBox,RenewTotalTColorBox,ProvideTotalTColorBox,
+ DeclareTCBox,NewTCBox,RenewTCBox,ProvideTCBox,
+ DeclareTotalTCBox,NewTotalTCBox,RenewTotalTCBox,ProvideTotalTCBox,
+ DeclareTCBListing,NewTCBListing,RenewTCBListing,ProvideTCBListing,
+ DeclareTCBInputListing,NewTCBInputListing,RenewTCBInputListing,ProvideTCBInputListing,
+ DeclareTCBoxFit,NewTCBoxFit,RenewTCBoxFit,ProvideTCBoxFit,
+ DeclareTotalTCBoxFit,NewTotalTCBoxFit,RenewTotalTCBoxFit,ProvideTotalTCBoxFit,
+ tcbsidebyside,tcboxverb,
+ % externalization
+ tcbEXTERNALIZE,tcbifexternal,newtcbexternalizeenvironment,
+ renewtcbexternalizeenvironment,extcolorbox,extikzpicture,
+ newtcbexternalizetcolorbox,renewtcbexternalizetcolorbox,
+ tcbiffileprocess,
+ % box array
+ newboxarray,boxarraygetsize,boxarrayreset,boxarrayclear,
+ boxarraygetbox,boxarraygetwidth,boxarraygetheight,boxarraygetdepth,
+ boxarraygettotalheight,useboxarray,usetcboxarray,
+ consumeboxarray,consumetcboxarray,ifboxarrayempty,
+ % poster
+ posterbox,tcbposterwidth,tcbposterheight,tcbpostercolspacing,
+ tcbposterrowspacing,tcbpostercolumns,tcbposterrows,tcbpostercolwidth,
+ tcbposterrowheight,tcbposterset,
+ },
+ texcsstyle=*\color{Definition}\bfseries,
+ classoffset=0% restore default
+ }
+
+\definecolor{Green_Dark}{rgb}{0.078431,0.407843,0.176471}
+\definecolor{Blue_Dark}{rgb}{0.090196,0.211765,0.364706}
+\definecolor{Blue_Bright}{rgb}{0.858824,0.898039,0.945098}
+
+\tcbset{
+ documentation listing style=mydocumentation,%
+ sbs/.style={sidebyside,before lower app={\tcbset{sidebyside=false}}},%
+ innerbox/.style={reset,documentation listing style=mydocumentation,
+ docexample/.style={docexample original},%
+ },
+ beforeafter example/.style={
+ before skip=4pt plus 2pt minus 1pt,
+ after skip=8pt plus 4pt minus 2pt
+ },
+ base example/.style={bicolor,
+ beforeafter example,arc is angular,fonttitle=\bfseries,
+ fontlower=\footnotesize,
+ colframe=Blue_Dark,
+ colback=Blue_Bright,
+ colbacklower=white,
+ drop fuzzy shadow,
+ },
+ docexample/.style={base example,%
+ every box on layer 2/.style={every box},
+ before upper={\tcbset{innerbox}},before lower={\tcbset{innerbox}}
+ },
+ docexample original/.style={colframe=ExampleFrame,colback=ExampleBack,fontlower=\footnotesize,
+ before skip=\medskipamount,after skip=\medskipamount,frame style={}},
+}
+
+\newtcbexternalizetcolorbox{exdispExample}{dispExample}{environment with percent=false,minipage}{beforeafter example}
+
+\newtcbexternalizetcolorbox{exdispExample*}{dispExample*}{environment with percent=false,minipage}{beforeafter example}
+
+\newcommand{\inputpreamblelisting}[1]{%
+ \tcbinputlisting{title=Definition in the preamble:,
+ base example,coltitle=black,fonttitle=\itshape,titlerule=0pt,
+ colbacktitle=Navy!15!ExampleBack,
+ top=0mm,
+ before=\par\smallskip,%
+ listing style=mydocumentation,
+ listing only,listing file={\jobname_preamble_#1.tex}}%
+}
+
+\newtcolorbox{deprecated}{blank,breakable,watermark text=deprecated}
+
+\newtcbox{\mylib}{enhanced,nobeforeafter,tcbox raise base,boxrule=0.4pt,top=0mm,bottom=0mm,
+ right=0mm,left=4mm,arc=1pt,boxsep=2pt,before upper={\vphantom{dlg}},
+ colframe=green!50!black,coltext=green!25!black,colback=green!10!white,
+ overlay={\begin{tcbclipinterior}\fill[green!75!blue!50!white] (frame.south west)
+ rectangle node[text=white,font=\sffamily\bfseries\tiny,rotate=90] {LIB} ([xshift=4mm]frame.north west);\end{tcbclipinterior}}}
+
+\robustify{\mylib}
+
+\pdfstringdefDisableCommands{%
+ \def\mylib#1{'#1'}%
+}
+
+\newrobustcmd*{\tcbexclamation}{!}
+
+\newtcbox{\section@box}{tile,before=\clearpage\noindent,after=,
+ fontupper=\normalfont\Large\bfseries,capture=minipage,colback=blue!80,coltext=white,
+ boxsep=0mm,top=4mm,bottom=4mm,left=\oddsidemargin+1in,right=\oddsidemargin+1in,
+ spread sidewards,fuzzy halo=1mm with blue!50!gray}
+
+\renewcommand\section{\@startsection{section}{1}{\z@}{\z@}{5mm}{\section@box}}
+
+\newtcblisting{fulldocumentlisting}[1]{%
+ enhanced jigsaw,lower separated=false,breakable,
+ leftlower=0mm,rightlower=0mm,bottom=0mm,middle=1mm,
+ listing style=mydocumentation,base example,
+ listing and comment,
+ pdf comment,freeze pdf,
+ comment style={raster columns=2,raster equal skip=1mm},
+ compilable listing,
+ run pdflatex,#1
+}
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.s_snippet.sty b/macros/latex/contrib/tcolorbox/tcolorbox.doc.s_snippet.sty
new file mode 100644
index 0000000000..c33f924d01
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.s_snippet.sty
@@ -0,0 +1,183 @@
+% !TeX root = tcolorbox.tex
+% include file (style) of tcolorbox.tex (manual of the LaTeX package tcolorbox)
+
+\begin{tcbverbatimwrite}{\jobname_preamble_A.tex}
+\newtcolorbox[auto counter,number within=section]{pabox}[2][]{%
+ colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries,
+ title=Examp.~\thetcbcounter: #2,#1}
+\end{tcbverbatimwrite}
+\input{\jobname_preamble_A.tex}
+
+
+\begin{tcbverbatimwrite}{\jobname_preamble_B.tex}
+% counter from previous example
+\newtcbox[use counter from=pabox]{\pbbox}[2][]{%
+ colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries,
+ title=(\thetcbcounter) #2,#1}
+\end{tcbverbatimwrite}
+\input{\jobname_preamble_B.tex}
+
+
+\begin{tcbverbatimwrite}{\jobname_preamble_C.tex}
+\newtcblisting[auto counter]{mycbox}[1]{%
+ colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries,
+ title=Listing \thetcbcounter: #1}
+\end{tcbverbatimwrite}
+\input{\jobname_preamble_C.tex}
+
+
+\begin{tcbverbatimwrite}{\jobname_preamble_D.tex}
+\tcbset{
+ texexp/.style={colframe=red!50!yellow!50!black, colback=red!50!yellow!5!white,
+ coltitle=red!50!yellow!3!white,
+ fonttitle=\small\sffamily\bfseries, fontupper=\small, fontlower=\small},
+ example/.style 2 args={texexp,
+ title={Example \thetcbcounter: #1},label={#2}},
+}
+
+
+\newtcblisting{texexp}[1]{texexp,#1}
+\newtcblisting[auto counter,number within=section]{texexptitled}[3][]{%
+ example={#2}{#3},#1}
+\newtcolorbox[use counter from=texexptitled]{texexptitledspec}[3][]{%
+ example={#2}{#3},#1}
+\end{tcbverbatimwrite}
+\input{\jobname_preamble_D.tex}
+
+
+\begin{tcbverbatimwrite}{\jobname_preamble_E.tex}
+\newtcolorbox[auto counter,number within=section,list inside=exam]{texercise}[2][]{%
+ texercisestyle,
+ listing file={solutions/texercise\thetcbcounter.tex},
+ label={exe:#2},
+ record={\string\processsol{solutions/texercise\thetcbcounter.tex}{#2}},
+ title={Exercise \thetcbcounter\hfill\mdseries Solution on page \pageref{sol:#2}},
+ list text={Exercise with solution on page \pageref{sol:#2}},#1}
+\end{tcbverbatimwrite}
+\input{\jobname_preamble_E.tex}
+
+
+\begin{tcbverbatimwrite}{\jobname_preamble_F.tex}
+\newtcbtheorem[number within=section]{mytheo}{My Theorem}%
+ {colback=green!5,colframe=green!35!black,fonttitle=\bfseries}{th}
+\end{tcbverbatimwrite}
+\input{\jobname_preamble_F.tex}
+
+
+\begin{tcbverbatimwrite}{\jobname_preamble_G.tex}
+% \usepackage{cleveref}
+\tcbset{
+ defstyle/.style={fonttitle=\bfseries\upshape, fontupper=\slshape,
+ arc=0mm, colback=blue!5!white,colframe=blue!75!black},
+ theostyle/.style={fonttitle=\bfseries\upshape, fontupper=\slshape,
+ colback=red!10!white,colframe=red!75!black},
+}
+\newtcbtheorem[number within=subsection,crefname={definition}{definitions}]%
+ {Definition}{Definition}{defstyle}{def}
+\newtcbtheorem[use counter from=Definition,crefname={theorem}{theorems}]%
+ {Theorem}{Theorem}{theostyle}{theo}
+\newtcbtheorem[use counter from=Definition,crefname={corollary}{corollaries}]%
+ {Corollary}{Corollary}{theostyle}{cor}
+\end{tcbverbatimwrite}
+\input{\jobname_preamble_G.tex}
+
+
+\begin{tcbverbatimwrite}{\jobname_preamble_H.tex}
+\newtcolorbox[auto counter,number within=section,
+ number freestyle={(Q/\noexpand\thesection/\noexpand\Alph{\tcbcounter})},
+ ]{phbox}[2][]{%
+ colback=yellow!15!white,colframe=blue!75!black,fonttitle=\bfseries,
+ title=Question~\thetcbcounter: #2,#1}
+\end{tcbverbatimwrite}
+\input{\jobname_preamble_H.tex}
+
+
+\begin{tcbverbatimwrite}{\jobname_preamble_I.tex}
+% \usepackage{cleveref}
+\newtcolorbox[auto counter,number within=section,
+ crefname={bluebox}{blueboxes}]%
+ {mybluebox}[2][]{colback=blue!5!white,colframe=blue!75!black,fonttitle=\bfseries,
+ title=Bluebox \thetcbcounter: #2,#1}
+\end{tcbverbatimwrite}
+\input{\jobname_preamble_I.tex}
+
+
+\begin{tcbverbatimwrite}{\jobname_preamble_J.tex}
+\newtcbtheorem[use counter from=mytheo]{theorem}{Theorem}{%
+ fonttitle=\bfseries\upshape,fontupper=\itshape,
+ colframe=green!50!black,colback=green!10!white,
+ colbacktitle=green!20!white,coltitle=blue!75!black}{theo}
+\end{tcbverbatimwrite}
+\input{\jobname_preamble_J.tex}
+
+
+\begin{tcbverbatimwrite}{\jobname_preamble_K.tex}
+\usepackage{amsthm}
+
+\theoremstyle{plain}% from 'amsthm'
+\newtheorem{lem}{Lemma}% from 'amsthm'
+
+\tcolorboxenvironment{lem}{
+ enhanced jigsaw,colframe=cyan,interior hidden,
+ breakable,before skip=10pt,after skip=10pt }
+
+\tcolorboxenvironment{proof}{% 'proof' from 'amsthm'
+ blanker,breakable,left=5mm,
+ before skip=10pt,after skip=10pt,
+ borderline west={1mm}{0pt}{red}}
+\end{tcbverbatimwrite}
+\input{\jobname_preamble_K.tex}
+
+
+\begin{tcbverbatimwrite}{\jobname_preamble_L.tex}
+% \tcbuselibrary{skins,xparse}
+
+\NewTColorBox[auto counter,number within=section]{exercise}{+!O{}}{%
+ enhanced,colframe=green!20!black,colback=yellow!10!white,coltitle=green!40!black,
+ fonttitle=\bfseries,
+ underlay={\begin{tcbclipinterior}
+ \shade[inner color=green!80!yellow,outer color=yellow!10!white]
+ (interior.north west) circle (2cm);
+ \draw[help lines,step=5mm,yellow!80!black,shift={(interior.north west)}]
+ (interior.south west) grid (interior.north east);
+ \end{tcbclipinterior}},
+ title={Exercise~\thetcbcounter:},
+ label={exercise@\thetcbcounter},
+ attach title to upper=\quad,
+ after upper={\par\hfill\textcolor{green!40!black}%
+ {\itshape Solution on page~\pageref{solution@\thetcbcounter}}},
+ lowerbox=ignored,
+ savelowerto=solutions/exercise-\thetcbcounter.tex,
+ record={\string\solution{\thetcbcounter}{solutions/exercise-\thetcbcounter.tex}},
+ #1
+}
+
+\NewTotalTColorBox{\solution}{mm}{%
+ enhanced,colframe=red!20!black,colback=yellow!10!white,coltitle=red!40!black,
+ fonttitle=\bfseries,
+ underlay={\begin{tcbclipinterior}
+ \shade[inner color=red!50!yellow,outer color=yellow!10!white]
+ (interior.north west) circle (2cm);
+ \draw[help lines,step=5mm,yellow!80!black,shift={(interior.north west)}]
+ (interior.south west) grid (interior.north east);
+ \end{tcbclipinterior}},
+ title={Solution of Exercise~\ref{exercise@#1} on page~\pageref{exercise@#1}:},
+ phantomlabel={solution@#1},
+ attach title to upper=\par,
+}{\input{#2}}
+
+\tcbset{no solution/.style={no recording,after upper=}}
+\end{tcbverbatimwrite}
+\input{\jobname_preamble_L.tex}
+
+
+\begin{tcbverbatimwrite}{\jobname_preamble_M.tex}
+\newtcblisting{myownlisting}[2][]{
+ enhanced,colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries,
+ colbacktitle=red!50!yellow,before skip=6pt,after skip=6pt,
+ title={#2},#1}
+
+\newtcbexternalizetcolorbox{exmyownlisting}{myownlisting}{minipage}%
+ {before skip=6pt,after skip=6pt}% same values as for mylisting
+\end{tcbverbatimwrite}
+\input{\jobname_preamble_M.tex}
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.sidebyside.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.sidebyside.tex
new file mode 100644
index 0000000000..b01c299e0c
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.sidebyside.tex
@@ -0,0 +1,408 @@
+% !TeX root = tcolorbox.tex
+% include file of tcolorbox.tex (manual of the LaTeX package tcolorbox)
+\clearpage
+\section{Side by Side}\label{sec:sidebyside}%
+\tcbset{external/prefix=external/sidebyside_}%
+
+A \emph{side by side} box is a special \refEnv{tcolorbox} where
+the upper and lower part of the box are set side by side.
+All boxes of this kind are unbreakable.
+
+\begin{marker}
+ Further side by side options for code examples are
+ \refKey{/tcb/listing side text},
+ \refKey{/tcb/text side listing},
+ \refKey{/tcb/listing outside text}, and
+ \refKey{/tcb/text outside listing}.
+\end{marker}
+
+\subsection{Basic Settings}\label{subsec:sidebyside_basic}
+
+\begin{docTcbKey}{sidebyside}{\colOpt{=true\textbar false}}{default |true|, initially |false|}
+Normally, the upper part and the lower part of the box have their positions
+as their names suggest. If |sidebyside| is set to |true|, the upper part
+is drawn \emph{left-handed} and the lower part is drawn \emph{right-handed}.
+Both parts are drawn together with the geometry settings of the upper part but the
+space is divided horizontally according to the following options.
+Colors, fonts, and box content additions are used individually.
+The resulting box is unbreakable.
+
+\begin{dispExample}
+\tcbset{colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries}
+
+\begin{tcolorbox}[title=My title,sidebyside]
+ This is the upper (\textit{left-handed}) part.
+\tcblower
+ This is the lower (\textit{right-handed}) part.
+\end{tcolorbox}
+\end{dispExample}
+
+
+\begin{dispExample}
+% \usepackage{lipsum}
+% \tcbuselibrary{skins}
+\begin{tcolorbox}[bicolor,sidebyside,righthand width=3cm,
+ sharp corners,boxrule=.4pt,colback=green!5,colbacklower=green!50!black!50]
+ \lipsum[2]
+\tcblower
+ \includegraphics[width=\linewidth]{goldshade}%
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+
+
+\clearpage
+\begin{docTcbKey}[][doc updated=2015-02-06]{sidebyside align}{=\meta{alignment}}{no default, initially |center|}
+ Sets the vertical \meta{alignment} for the left-handed and right-handed part.
+
+ Feasible values for \meta{alignment} are:
+ \begin{itemize}
+ \item\docValue{center}: identical to |minipage| option |c|.
+ \item\docValue{top}: identical to |minipage| option |t| (aligns the top
+ lines of the left-handed and right-handed side according to their baselines).
+ \item\docValue{bottom}: identical to |minipage| option |b| (aligns the bottom
+ lines of the left-handed and right-handed side according to their baselines).
+ \item\docValue{center seam}: aligns the center of the left-handed and right-handed side.
+ \item\docValue{top seam}: aligns the very top seam of the left-handed and right-handed side.
+ \item\docValue{bottom seam}: aligns the very bottom seam of the left-handed and right-handed side.
+ \end{itemize}
+
+\begin{exdispExample}{sidebyside_align}
+\tcbset{colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries,nobeforeafter,
+ left=2mm,right=2mm,sidebyside,sidebyside gap=6mm,width=(\linewidth-2mm)/3}
+
+\begin{tcolorbox}[adjusted title=center,sidebyside align=center]
+This is a text which is too long for one line.
+\tcblower
+This is a short text.
+\end{tcolorbox}\hfill
+\begin{tcolorbox}[adjusted title=top,sidebyside align=top]
+This is a text which is too long for one line.
+\tcblower
+This is a short text.
+\end{tcolorbox}\hfill
+\begin{tcolorbox}[adjusted title=bottom,sidebyside align=bottom]
+This is a text which is too long for one line.
+\tcblower
+This is a short text.
+\end{tcolorbox}
+\end{exdispExample}
+
+
+\docValue{center}, \docValue{top}, and \docValue{bottom} are identical
+to the known corresponding |minipage| options.
+While this is the preferred approach for text content, the result for
+boxed content like tables or images may not be as expected.
+
+For such content, one may use \docValue{center seam}, \docValue{top seam},
+and \docValue{bottom seam}. For example, \docValue{top seam} aligns
+the very top seam of the left-handed and right-handed side.
+
+
+\begin{dispExample}
+\tcbset{colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries,
+ size=small,righthand width=4cm,sidebyside,sidebyside gap=6mm,lower separated=false}
+
+\begin{tcolorbox}[adjusted title=center seam,sidebyside align=center seam]
+ This is my description text for the pictures displayed on the right-handed side.
+ \tcblower
+ \includegraphics[width=\linewidth/2]{goldshade}%
+ \includegraphics[width=\linewidth/2]{blueshade}
+\end{tcolorbox}
+
+\begin{tcolorbox}[adjusted title=top seam,sidebyside align=top seam]
+ This is my description text for the pictures displayed on the right-handed side.
+ \tcblower
+ \includegraphics[width=\linewidth/2]{goldshade}%
+ \includegraphics[width=\linewidth/2]{blueshade}
+\end{tcolorbox}
+
+\begin{tcolorbox}[adjusted title=bottom seam,sidebyside align=bottom seam]
+ This is my description text for the pictures displayed on the right-handed side.
+ \tcblower
+ \includegraphics[width=\linewidth/2]{goldshade}%
+ \includegraphics[width=\linewidth/2]{blueshade}
+\end{tcolorbox}
+\end{dispExample}
+
+
+
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}{sidebyside gap}{=\meta{length}}{no default, initially |10mm|}
+Sets the horizontal distance between the left-handed and right-handed part to
+\meta{length}.
+\begin{dispExample}
+\tcbset{colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries,nobeforeafter,
+ sidebyside,width=(\linewidth-2mm)/2}
+
+\begin{tcolorbox}[adjusted title=Wide gap,sidebyside gap=30mm]
+This is a text which is too long for one line.
+\tcblower
+This is a short text.
+\end{tcolorbox}\hfill
+\begin{tcolorbox}[adjusted title=Narrow gap,sidebyside gap=1mm]
+This is a text which is too long for one line.
+\tcblower
+This is a short text.
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{lefthand width}{=\meta{length}}{no default, initially unset}
+Sets the width of the left-handed part to the given \meta{length}.
+\begin{dispExample}
+\tcbset{colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries}
+
+\begin{tcolorbox}[title=My title,sidebyside,lefthand width=3cm]
+This is the upper (\textit{left-handed}) part.
+\tcblower
+This is the lower (\textit{right-handed}) part.
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+\enlargethispage*{1cm}
+\begin{docTcbKey}{righthand width}{=\meta{length}}{no default, initially unset}
+Sets the width of the right-handed part to the given \meta{length}.
+\begin{dispExample}
+\tcbset{colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries}
+
+\begin{tcolorbox}[title=My title,sidebyside,righthand width=3cm]
+This is the upper (\textit{left-handed}) part.
+\tcblower
+This is the lower (\textit{right-handed}) part.
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}{lefthand ratio}{=\meta{fraction}}{no default, initially |0.5|}
+Sets the width of the left-handed part to the given \meta{fraction} of
+the available space. \meta{fraction} is a value between |0| and |1|.
+\begin{dispExample}
+\tcbset{colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries}
+
+\begin{tcolorbox}[title=My title,sidebyside,lefthand ratio=0.25]
+This is the upper (\textit{left-handed}) part.
+\tcblower
+This is the lower (\textit{right-handed}) part.
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{righthand ratio}{=\meta{fraction}}{no default, initially |0.5|}
+Sets the width of the right-handed part to the given \meta{fraction} of
+the available space. \meta{fraction} is a value between |0| and |1|.
+\begin{dispExample}
+\tcbset{colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries}
+
+\begin{tcolorbox}[title=My title,sidebyside,righthand ratio=0.25]
+This is the upper (\textit{left-handed}) part.
+\tcblower
+This is the lower (\textit{right-handed}) part.
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\clearpage
+If one side of a side-by-side box should be adapted to the width of
+its content, this width has to be computed beforehand.
+The following example uses a savebox |\mysavebox| to store the picture to determine
+its width. A more convenient way to handle this task is to use the
+methods from \Fullref{subsec:sidebyside_xparse}.
+
+\begin{dispExample}
+% \tcbuselibrary{skins,xparse}
+% \usepackage{lipsum}
+% \newsavebox\mysavebox % preamble
+\DeclareTotalTColorBox{\mysidebox}{ O{} +m +m }{
+ bicolor,colback=white,colbacklower=yellow!10,
+ fonttitle=\bfseries,center title,
+ sidebyside,
+ code={\sbox{\mysavebox}{#2}},
+ lefthand width=\wd\mysavebox,
+ drop lifted shadow,
+ #1
+}
+{\usebox{\mysavebox}\tcblower#3}
+
+\mysidebox[title=The Triangle]{%
+ \begin{tikzpicture}
+ \path[fill=red!20,draw=red!50!black]
+ (0,0) node[below]{A} -- (3,1) node[right]{B}
+ -- (1,4) node[above]{C} -- cycle;
+ \end{tikzpicture}%
+}{%
+ \lipsum[1]
+}
+\end{dispExample}
+
+
+\clearpage
+\subsection{Advanced Settings from the \mylib{xparse} Library}\label{subsec:sidebyside_xparse}
+
+\begin{marker}
+All following macros and options need the \mylib{xparse} library to be
+loaded, see \Fullref{sec:xparse}.
+\end{marker}
+
+
+\begin{docCommand}[doc new=2015-11-20]{tcbsidebyside}{\oarg{options}\marg{left-handed content}\marg{right-handed content}}
+Creates a colored box using more or less arbitrary \meta{options} for a \refEnv{tcolorbox}.
+The \refKey{/tcb/sidebyside} option is set to |true| and the
+\meta{left-handed content} and \meta{right-handed content}
+is filled into the box appropriately.
+The resulting box is unbreakable.
+
+\refCom{tcbsidebyside} is not only a shortcut for using
+a normal \refEnv{tcolorbox} with \refKey{/tcb/sidebyside}, but allows
+setting further options like \refKey{/tcb/sidebyside adapt}
+and \refKey{/tcb/sidebyside switch}.
+
+
+\begin{dispExample}
+% \tcbuselibrary{skins,xparse}
+% \usepackage{lipsum}
+\tcbsidebyside[title=The Triangle,
+ sidebyside adapt=left,
+ bicolor,colback=white,colbacklower=yellow!10,
+ fonttitle=\bfseries,center title,drop lifted shadow,
+]{%
+ \begin{tikzpicture}
+ \path[fill=red!20,draw=red!50!black]
+ (0,0) node[below]{A} -- (3,1) node[right]{B}
+ -- (1,4) node[above]{C} -- cycle;
+ \end{tikzpicture}%
+}{%
+ \lipsum[1]
+}
+\end{dispExample}
+\end{docCommand}
+
+
+\clearpage
+\begin{docTcbKey}[][doc new=2015-11-20]{sidebyside adapt}{=\meta{side(s)}}{no default, initially |none|}
+The option allows the left-handed and/or right-handed side to determine the
+dimensions of the box. This option is only valid inside \refCom{tcbsidebyside}.
+
+Feasible values for \meta{side(s)} are:
+\begin{itemize}
+\item\docValue{none}: no measurement of left-handed and right-handed side.
+\item\docValue{left}:
+ the actual width of the left-handed content is used to set \refKey{/tcb/lefthand width}.
+\item\docValue{right}:
+ the actual width of the right-handed content is used to set \refKey{/tcb/righthand width}.
+\item\docValue{both}:
+ the actual width of the left-handed and right-handed content is used to set
+ \refKey{/tcb/lefthand width}, \refKey{/tcb/righthand width}, and
+ the overall \refKey{/tcb/width}.
+\end{itemize}
+
+\begin{dispExample}
+% \tcbuselibrary{skins,xparse}
+\tcbsidebyside[sidebyside adapt=left,
+ title=Very important table,
+ beamer,colframe=blue!50!black,colback=blue!10,
+ lower separated=false,sidebyside gap=5mm
+]{%
+ \begin{tabular}{|l|c|r|}\hline
+ left & center & right\\\hline
+ A & B & C\\\hline
+ D & E & F\\\hline
+ \end{tabular}
+}{%
+ This table contains the most important figures for
+ all future actions. You may notice that B follows A,
+ C follows B, and so on.
+}
+\end{dispExample}
+
+
+
+\begin{dispExample}
+% \tcbuselibrary{skins,xparse}
+\tcbsidebyside[sidebyside adapt=right,
+ blanker,sidebyside gap=5mm
+]{%
+ \lipsum[2]
+}{%
+\begin{tikzpicture}
+ \path[fill=yellow,draw=yellow!75!red] (0,0) circle (1cm);
+ \fill[red] (45:5mm) circle (1mm);
+ \fill[red] (135:5mm) circle (1mm);
+ \draw[line width=1mm,red] (215:5mm) arc (215:325:5mm);
+\end{tikzpicture}
+}
+\end{dispExample}
+
+
+\begin{dispExample}
+% \tcbuselibrary{skins,xparse}
+\tcbsidebyside[sidebyside adapt=both,
+ enhanced,center,
+ title=Both sides adapted,
+ attach boxed title to top center={yshift=-2mm},
+ coltitle=black,boxed title style={colback=red!25},
+ segmentation style=solid,colback=red!5,colframe=red!50
+]{%
+ \begin{tabular}{|l|c|r|}\hline
+ left & center & right\\\hline
+ A & B & C\\\hline
+ D & E & F\\\hline
+ \end{tabular}
+}{%
+\begin{tikzpicture}
+ \path[fill=yellow,draw=yellow!75!red] (0,0) circle (1cm);
+ \fill[red] (45:5mm) circle (1mm);
+ \fill[red] (135:5mm) circle (1mm);
+ \draw[line width=1mm,red] (215:5mm) arc (215:325:5mm);
+\end{tikzpicture}
+}
+\end{dispExample}
+
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}[][doc new=2015-11-20]{sidebyside switch}{\colOpt{=true\textbar false}}{default |true|, initially |false|}
+If set to |true|, the
+\meta{left-handed content} and \meta{right-handed content}
+of \refCom{tcbsidebyside} are switched.
+Obviously, this option is only valid inside \refCom{tcbsidebyside}.
+
+The side switching can be made even/odd page sensitive, if used inside
+\refKey{/tcb/if odd page}.
+
+\begin{dispExample}
+% \tcbuselibrary{skins,xparse}
+\tcbsidebyside{Left}{Right}
+
+\tcbsidebyside[sidebyside switch]{Left}{Right}
+
+\tcbsidebyside[title=Very important table,
+ if odd page={sidebyside switch,sidebyside adapt=right,flushright title}%
+ {sidebyside adapt=left},
+ beamer,colframe=blue!50!black,colback=blue!10,
+ lower separated=false,sidebyside gap=5mm
+]{%
+ \begin{tabular}{|l|c|r|}\hline
+ left & center & right\\\hline
+ A & B & C\\\hline
+ D & E & F\\\hline
+ \end{tabular}
+}{%
+ This table contains the most important figures for
+ all future actions. You may notice that B follows A,
+ C follows B, and so on.
+}
+\end{dispExample}
+
+
+\end{docTcbKey}
+
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.skins.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.skins.tex
new file mode 100644
index 0000000000..e357d5b78c
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.skins.tex
@@ -0,0 +1,4936 @@
+% !TeX root = tcolorbox.tex
+% include file of tcolorbox.tex (manual of the LaTeX package tcolorbox)
+\clearpage
+\section{Library \mylib{skins}}\label{sec:skins}%
+\tcbset{external/prefix=external/skins_}%
+The library is loaded by a package option or inside the preamble by:
+\begin{dispListing}
+\tcbuselibrary{skins}
+\end{dispListing}
+This also loads the package |tikz| \cite{tantau:tikz_and_pgf}. Typically but not necessarily,
+the following skins use |tikz| instead of |pgf|.
+
+\subsection{Style Option Keys}\label{subsec:addstyleoptions}
+The following style options are applicable for all skins which
+use engines of type |path|, |pathfirst|, |pathmiddle|, or |pathlast|.
+Especially, the skin \refSkin{enhanced} supports \emph{all} of them
+and \refSkin{standard} \emph{none}.
+
+\begin{docTcbKey}{frame style}{=\meta{\texttt{\upshape tikz} keys}}{style, no default}
+ The \meta{\texttt{\upshape tikz} keys} are used inside the |tikz| path command
+ for drawing the \emph{frame} of the box.\\
+ This option is available if the \refKey{/tcb/frame engine} is set to
+ |path|, |pathfirst|, |pathmiddle|, or |pathlast|.
+ It is \emph{not} available for |standard|.
+\begin{exdispExample*}{frame_style}{sbs,lefthand ratio=0.66}
+\tcbset{colback=red!5!white,fonttitle=\bfseries}
+
+\begin{tcolorbox}[enhanced,title=My title,
+ frame style={left color=red!75!black,
+ right color=blue!75!black}]
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{frame style image}{=\meta{file name}}{no default, initially unset}
+ Fills the frame with an external image referenced by \meta{file name}.
+ For advanced features like blending of a picture with the background,
+ use \refKey{/tcb/frame style} together with \refKey{/tikz/fill stretch image}.
+\begin{exdispExample*}{frame_style_image}{sbs,lefthand ratio=0.66}
+\tcbset{colback=red!5!white,fonttitle=\bfseries}
+
+\begin{tcolorbox}[enhanced,title=My title,
+ frame style image=blueshade.png]
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}{frame style tile}{=\marg{graphics options}\marg{file name}}{no default, initially unset}
+ Fills the frame with a tile pattern based on an external image referenced by \meta{file name}.
+ The \meta{graphics options} are given to the underlying \docAuxCommand*{includegraphics} command.
+ For advanced features like blending of a picture with the background,
+ use \refKey{/tcb/frame style} together with \refKey{/tikz/fill tile image}.
+\begin{exdispExample*}{frame_style_tile}{sbs,lefthand ratio=0.66}
+\tcbset{colback=red!5!white,coltitle=red!30!black,
+ opacityback=0.75,fonttitle=\bfseries}
+
+\begin{tcolorbox}[enhanced,title=My title,
+ frame style tile={width=1cm}{pink_marble.png}]
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{frame hidden}{}{style, no value}
+ This is a shortcut for |frame style={draw=none,fill=none}|.
+ Depending on the skin, this option switches off the drawing of the
+ frame.
+ Alternatively, use \refKey{/tcb/frame empty}.
+\begin{exdispExample*}{frame_hidden}{sbs,lefthand ratio=0.66}
+\tcbset{colback=red!5!white,colframe=red!75!black,
+ fonttitle=\bfseries,coltitle=black}
+
+\begin{tcolorbox}[enhanced,title=My title,
+ frame hidden]
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{interior style}{=\meta{\texttt{\upshape tikz} keys}}{style, no default}
+ The \meta{\texttt{\upshape tikz} keys} are used inside the |tikz| path command
+ for drawing the \emph{interior} of the box. They are used for the titled
+ and for the untitled version as well.\\
+ This option is available if the \refKey{/tcb/interior titled engine}
+ or \refKey{/tcb/interior engine} is set to
+ |path|, |pathfirst|, |pathmiddle|, or |pathlast|.
+ It is \emph{not} available for |standard|.
+\begin{exdispExample*}{interior_style}{sbs,lefthand ratio=0.66}
+\tcbset{colframe=red!75!black,fonttitle=\bfseries}
+
+\begin{tcolorbox}[enhanced,title=My title,
+ interior style={left color=red!20!white,
+ right color=yellow!50!white}]
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}{interior style image}{=\meta{file name}}{no default, initially unset}
+ Fills the interior with an external image referenced by \meta{file name}.
+ For advanced features like blending of a picture with the background,
+ use \refKey{/tcb/interior style} together with \refKey{/tikz/fill stretch image}.
+\begin{exdispExample*}{interior_style_image}{sbs,lefthand ratio=0.66}
+\tcbset{colframe=red!75!black,fonttitle=\bfseries}
+
+\begin{tcolorbox}[enhanced,title=My title,
+ interior style image=goldshade.png]
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{interior style tile}{=\marg{graphics options}\marg{file name}}{no default, initially unset}
+ Fills the interior with a tile pattern based on an external image referenced by \meta{file name}.
+ The \meta{graphics options} are given to the underlying \docAuxCommand*{includegraphics} command.
+ For advanced features like blending of a picture with the background,
+ use \refKey{/tcb/interior style} together with \refKey{/tikz/fill tile image}.
+
+\begin{exdispExample*}{interior_style_tile}{sbs,lefthand ratio=0.66}
+\tcbset{colframe=red!75!black,fonttitle=\bfseries}
+
+\begin{tcolorbox}[enhanced,title=My title,
+ interior style tile={width=2cm}{crinklepaper.png}]
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{interior hidden}{}{style, no value}
+ This is a shortcut for |interior style={draw=none,fill=none}|.
+ Depending on the skin, this option switches off the drawing of the
+ interior.
+ Alternatively, use \refKey{/tcb/interior empty} and/or \refKey{/tcb/interior titled empty}.
+\begin{exdispExample*}{interior_hidden}{sbs,lefthand ratio=0.66}
+\tcbset{frame style={top color=red!20!white,
+ bottom color=red!20!white!75!black},
+ fonttitle=\bfseries,coltitle=black}
+
+\begin{tcolorbox}[enhanced,title=My title,
+ interior hidden]
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}{segmentation style}{=\meta{\texttt{\upshape tikz} keys}}{style, no default}
+ The \meta{\texttt{\upshape tikz} keys} are used inside the |tikz| path command
+ for drawing the \emph{segmentation} line of the box.\\
+ This option is available if the \refKey{/tcb/segmentation engine}
+ is set to |path|.
+ It is \emph{not} available for |standard|.
+\begin{exdispExample*}{segmentation_style}{sbs,lefthand ratio=0.66}
+\tcbset{colback=red!5!white,colframe=red!75!black,
+ fonttitle=\bfseries}
+
+\begin{tcolorbox}[enhanced,title=My title,
+ segmentation style={double=white,draw=blue,
+ double distance=1pt,solid}]
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{segmentation hidden}{}{style, no value}
+ This is a shortcut for |segmentation style={draw=none,fill=none}|.
+ Depending on the skin, this option switches off the drawing of the
+ segmentation line. See also \refKey{/tcb/lower separated} which
+ has the same effect for most skins.
+ Alternatively, use \refKey{/tcb/segmentation empty}.
+\begin{exdispExample*}{segmentation_hidden}{sbs,lefthand ratio=0.66}
+\tcbset{colback=red!5!white,colframe=red!75!black,
+ fonttitle=\bfseries}
+
+\begin{tcolorbox}[title=My title,
+ enhanced,segmentation hidden]
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{title style}{=\meta{\texttt{\upshape tikz} keys}}{style, no default}
+ The \meta{\texttt{\upshape tikz} keys} are used inside the |tikz| path command
+ for drawing the \emph{title area} of the box.\\
+ This option is available if the \refKey{/tcb/title engine} is set to
+ |path|, |pathfirst|, |pathmiddle|, or |pathlast|.
+ It is \emph{not} available for |standard|.
+\begin{exdispExample*}{title_style}{sbs,lefthand ratio=0.66}
+\tcbset{colback=red!5!white,colframe=red!75!black,
+ coltitle=blue!50!black,fonttitle=\bfseries}
+
+\begin{tcolorbox}[enhanced,title=My title,
+ title style={left color=blue!15!yellow,
+ right color=red!85!black}]
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}{title style image}{=\meta{file name}}{no default, initially unset}
+ Fills the title area with an external image referenced by \meta{file name}.
+ For advanced features like blending of a picture with the background,
+ use \refKey{/tcb/title style} together with \refKey{/tikz/fill stretch image}.
+
+\begin{exdispExample*}{title_style_image}{sbs,lefthand ratio=0.66}
+\tcbset{colback=blue!5!white,colframe=blue!75!black,
+ fonttitle=\bfseries}
+
+\begin{tcolorbox}[enhanced,title=My title,
+ title style image=blueshade.png]
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{title style tile}{=\marg{graphics options}\marg{file name}}{no default, initially unset}
+ Fills the title area with a tile pattern based on an external image referenced by \meta{file name}.
+ The \meta{graphics options} are given to the underlying \docAuxCommand*{includegraphics} command.
+ For advanced features like blending of a picture with the background,
+ use \refKey{/tcb/title style} together with \refKey{/tikz/fill tile image}.
+
+\begin{exdispExample*}{title_style_tile}{sbs,lefthand ratio=0.66}
+\tcbset{colback=red!5!white,colframe=red!75!black,
+ coltitle=blue!50!black,fonttitle=\bfseries}
+
+\begin{tcolorbox}[enhanced,title=My title,
+ title style tile={width=1cm}{pink_marble.png}]
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{title hidden}{}{style, no value}
+ This is a shortcut for |title style={draw=none,fill=none}|.
+ Depending on the skin, this option switches off the drawing of the
+ title background. See also \refKey{/tcb/title filled} for a similar effect.
+ Alternatively, use \refKey{/tcb/title empty}.
+\begin{exdispExample*}{title_hidden}{sbs,lefthand ratio=0.66}
+\tcbset{colback=red!5!white,colframe=red!75!black,
+ fonttitle=\bfseries}
+
+\begin{tcolorbox}[title=My title,
+ enhanced,title hidden]
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+
+\clearpage
+
+
+\begin{docTcbKey}[][doc new=2015-01-14]{titlerule style}{=\meta{\texttt{\upshape tikz} keys}}{style, no default}
+ The \meta{\texttt{\upshape tikz} keys} are used to draw a title rule,
+ i.e.\ a rule below the optional title. The width of the rule is controlled
+ by \refKey{/tcb/titlerule}. It may be set directly to a smaller width
+ to create mixed effects with the standard rule.
+ This option is implemented as an \refKey{/tcb/underlay}. Thus, it is not
+ available for \refSkin{standard} and \refSkin{standard jigsaw}, but for
+ all other skins, e.g.\ \refSkin{enhanced}.
+ As an underlay, this option can be used multiple times and is removed
+ by \refKey{/tcb/no underlay}.
+\begin{exdispExample*}{titlerule_style_1}{sbs,lefthand ratio=0.66}
+\begin{tcolorbox}[enhanced,
+ colback=red!5!white,colframe=red!75!black,
+ colbacktitle=red!50!yellow,fonttitle=\bfseries,
+ title=My title,
+ titlerule=1mm,
+ titlerule style=yellow ]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+
+\begin{exdispExample*}{titlerule_style_2}{sbs,lefthand ratio=0.66}
+\begin{tcolorbox}[enhanced,
+ colback=red!5!white,colframe=red!75!black,
+ colbacktitle=red!50!yellow,fonttitle=\bfseries,
+ title=My title,
+ titlerule=1mm,
+ titlerule style={yellow,line width=0.5mm} ]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+
+\begin{exdispExample*}{titlerule_style_3}{sbs,lefthand ratio=0.66}
+\begin{tcolorbox}[enhanced,
+ colback=red!10!white,colframe=red!75!black,
+ colbacktitle=red!50!yellow,fonttitle=\bfseries,
+ frame hidden,
+ title=My title,
+ boxrule=0pt,titlerule=1mm,
+ titlerule style=red!50!black ]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+
+\begin{exdispExample*}{titlerule_style_4}{sbs,lefthand ratio=0.66}
+%\usetikzlibrary{arrows.meta}
+\begin{tcolorbox}[empty,
+ coltitle=red!75!black,fonttitle=\bfseries,
+ borderline horizontal={0.5mm}{0pt}{red!50!white},
+ title=My title,
+ titlerule style={red,
+ arrows = {Hooks[arc=270]-Hooks[arc=270]}} ]
+This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+\clearpage
+
+The combined \tikzname\ style applied to frame, interior, and title
+background can used by authors in customizing code.
+
+\begin{docTikzKey}{tcb fill frame}{}{style, no value}
+This is a \tikzname\ style which is finally applied to the \emph{frame}
+of the box.
+
+\begin{exdispExample*}{tcb_fill_frame}{sbs,lefthand ratio=0.66}
+% \tcbuselibrary{hooks}
+\tcbset{enhanced,colback=red!5!white,
+ colframe=red!75!black,fonttitle=\bfseries,
+ frame code app={\path[tcb fill frame]
+ ([yshift=-2mm]frame.north)
+ circle (8mm); } }
+
+\begin{tcolorbox}[title=My title]
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTikzKey}
+
+
+\begin{docTikzKey}{tcb fill interior}{}{style, no value}
+This is a \tikzname\ style which is finally applied to the \emph{interior}
+of the box.
+
+\begin{exdispExample*}{tcb_fill_interior}{sbs,lefthand ratio=0.66}
+% \tcbuselibrary{hooks}
+\tcbset{enhanced,colback=red!5!white,
+ colframe=red!75!black,fonttitle=\bfseries,
+ interior titled code app={\path[tcb fill interior]
+ ([yshift=-0.1pt]interior.north east)
+ --([yshift=3pt]interior.north)
+ --([yshift=-0.1pt]interior.north west)
+ --cycle;} }
+
+\begin{tcolorbox}[title=My title]
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTikzKey}
+
+
+\begin{docTikzKey}{tcb fill title}{}{style, no value}
+This is a \tikzname\ style which is finally applied to the \emph{title area}
+of the box.
+
+\begin{exdispExample*}{tcb_fill_title}{sbs,lefthand ratio=0.66}
+% \tcbuselibrary{hooks}
+\tcbset{enhanced,colback=red!5!white,
+ colframe=red!75!black,fonttitle=\bfseries,
+ colbacktitle=blue!75!black,
+ title code app={\path[tcb fill title]
+ (title) circle (5mm); } }
+
+\begin{tcolorbox}[title=My title]
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTikzKey}
+
+
+\clearpage
+\subsection{Boxed Title Option Keys}\label{subsec:skinboxedtitle}
+
+\subsubsection{Boxed Title Placement}
+The following options place the title text into an own \refCom{tcbox}.
+This boxed title can be customized independently from the main box using
+\refKey{/tcb/boxed title style}.
+The placement can be influenced by \meta{boxtitle options}.
+
+\begin{docTcbKey}{attach boxed title to top left}{\colOpt{=\marg{boxtitle options}}}{style, default empty}
+The title is boxed with a \refCom{tcbox} and attached to
+the top left corner of the main box.
+\begin{exdispExample*}{attach_boxed_title_to_top_left}{sbs,lefthand ratio=0.66}
+\begin{tcolorbox}[enhanced,title=My title,
+ attach boxed title to top left]
+ This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+\begin{docTcbKey}{attach boxed title to top center}{\colOpt{=\marg{boxtitle options}}}{style, default empty}
+The title is boxed with a \refCom{tcbox} and attached to
+the top of the main box.
+\begin{exdispExample*}{attach_boxed_title_to_top_center}{sbs,lefthand ratio=0.66}
+\begin{tcolorbox}[enhanced,title=My title,
+ attach boxed title to top center]
+ This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+\begin{docTcbKey}{attach boxed title to top right}{\colOpt{=\marg{boxtitle options}}}{style, default empty}
+The title is boxed with a \refCom{tcbox} and attached to
+the top right corner of the main box.
+\begin{exdispExample*}{attach_boxed_title_to_top_right}{sbs,lefthand ratio=0.66}
+\begin{tcolorbox}[enhanced,title=My title,
+ attach boxed title to top right]
+ This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+\begin{docTcbKey}{attach boxed title to bottom left}{\colOpt{=\marg{boxtitle options}}}{style, default empty}
+The title is boxed with a \refCom{tcbox} and attached to
+the bottom left corner of the main box.
+\begin{exdispExample*}{attach_boxed_title_to_bottom_left}{sbs,lefthand ratio=0.66}
+\begin{tcolorbox}[enhanced,title=My title,
+ attach boxed title to bottom left]
+ This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+\begin{docTcbKey}{attach boxed title to bottom center}{\colOpt{=\marg{boxtitle options}}}{style, default empty}
+The title is boxed with a \refCom{tcbox} and attached to
+the bottom of the main box.
+\begin{exdispExample*}{attach_boxed_title_to_bottom_center}{sbs,lefthand ratio=0.66}
+\begin{tcolorbox}[enhanced,title=My title,
+ attach boxed title to bottom center]
+ This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+\begin{docTcbKey}{attach boxed title to bottom right}{\colOpt{=\marg{boxtitle options}}}{style, default empty}
+The title is boxed with a \refCom{tcbox} and attached to
+the bottom right corner of the main box.
+\begin{exdispExample*}{attach_boxed_title_to_bottom_right}{sbs,lefthand ratio=0.66}
+\begin{tcolorbox}[enhanced,title=My title,
+ attach boxed title to bottom right]
+ This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}[][doc new=2016-02-26]{attach boxed title to top}{\colOpt{=\marg{boxtitle options}}}{style, default empty}
+ This is a convenient style to mimic a standard title.
+ It uses \refKey{/tcb/attach boxed title to top center},
+ \refKey{/tcb/minipage boxed title}, and sizes the boxed title to match
+ the base box.
+\begin{dispExample*}{sbs,lefthand ratio=0.66}
+\begin{tcolorbox}[enhanced,title=My title,
+ attach boxed title to top,
+ boxed title style={colframe=red}]
+ This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2016-02-26]{attach boxed title to top*}{\colOpt{=\marg{boxtitle options}}}{style, default empty}
+ In contrast to \refKey{/tcb/attach boxed title to top}, this style
+ uses smaller left and right rules to avoid previewer glitches.
+ Typically, one would not use different colors for the frame as in the
+ example below.
+\begin{dispExample*}{sbs,lefthand ratio=0.66}
+\begin{tcolorbox}[enhanced,title=My title,
+ attach boxed title to top*,
+ boxed title style={colframe=red}]
+ This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2016-02-26]{attach boxed title to bottom}{\colOpt{=\marg{boxtitle options}}}{style, default empty}
+ This is a convenient style to produce a standard-like title at the bottom
+ of the box.
+ It uses \refKey{/tcb/attach boxed title to bottom center},
+ \refKey{/tcb/minipage boxed title}, and sizes the boxed title to match
+ the base box.
+\begin{dispExample*}{sbs,lefthand ratio=0.66}
+\begin{tcolorbox}[enhanced,title=My title,
+ attach boxed title to bottom,
+ boxed title style={colframe=red}]
+ This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2016-02-26]{attach boxed title to bottom*}{\colOpt{=\marg{boxtitle options}}}{style, default empty}
+ In contrast to \refKey{/tcb/attach boxed title to top}, this style
+ uses smaller left and right rules to avoid previewer glitches.
+\begin{dispExample*}{sbs,lefthand ratio=0.66}
+\begin{tcolorbox}[enhanced,title=My title,
+ attach boxed title to bottom*]
+ This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2016-02-26]{flip title}{\colOpt{=\marg{options}}}{style, default empty}
+ This style combines \refKey{/tcb/attach boxed title to bottom*}
+ with \refKey{/tcb/boxed title style}. The \meta{options} are given to
+ \refKey{/tcb/boxed title style}.
+\begin{dispExample*}{sbs,lefthand ratio=0.66}
+\begin{tcolorbox}[tile,flip title={sharp corners},
+ title=My title,colback=red!10,
+ colbacktitle=red!75!black]
+ This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}
+
+\clearpage
+
+\subsubsection{Options for the Boxed Title Placement}
+The \meta{boxtitle options} of the keys described above are shift values.
+The dimensions of the boxed title are stored into two macros
+\docAuxCommand{tcboxedtitleheight} and
+\docAuxCommand{tcboxedtitlewidth}. These macros can be used inside the
+following \meta{boxtitle options}:
+
+\begin{boxTcbKey}{xshift}{=\meta{length}}{no default, initially |0pt|}
+The boxed title is shifted by \meta{length} in the horizontal direction.
+\begin{exdispExample*}{xshift}{sbs,lefthand ratio=0.66}
+\begin{tcolorbox}[enhanced,title=My title,
+ attach boxed title to top left={xshift=-2mm},
+ boxed title style={size=small,colback=blue}]
+ This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{boxTcbKey}
+
+\begin{boxTcbKey}{yshift}{=\meta{length}}{no default, initially |0pt|}
+The boxed title is shifted by \meta{length} in the vertical direction.
+\begin{exdispExample*}{yshift}{sbs,lefthand ratio=0.66}
+\begin{tcolorbox}[enhanced,title=My title,
+ attach boxed title to top center=
+ {yshift=-\tcboxedtitleheight/2},
+ boxed title style={size=small,colback=blue}]
+ This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{boxTcbKey}
+
+\begin{boxTcbKey}{yshifttext}{=\meta{length}}{no default, initially |0pt|}
+The text inside the main box by \meta{length} to give room for e.\,g.\ a sunken title.
+\begin{exdispExample*}{yshifttext}{sbs,lefthand ratio=0.66}
+\begin{tcolorbox}[enhanced,title=My title,
+ attach boxed title to top center=
+ {yshift=-3mm,yshifttext=-1mm},
+ boxed title style={size=small,colback=blue}]
+ This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{boxTcbKey}
+
+\begin{boxTcbKey}{yshift*}{=\meta{length}}{no default, initially |0pt|}
+Sets \refKey{/tcb/boxtitle/yshift} and \refKey{/tcb/boxtitle/yshifttext}
+the same time.\\
+\refKey{/tcb/boxtitle/yshifttext} is only set if necessary.
+\begin{exdispExample*}{yshiftstar}{sbs,lefthand ratio=0.66}
+\begin{tcolorbox}[enhanced,title=My title,
+ attach boxed title to top center={yshift*=-3mm},
+ boxed title style={size=small,colback=blue}]
+ This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+\end{boxTcbKey}
+
+\begin{marker}
+The bounding box of the resulting total |tcolorbox| is adapted automatically to the
+\emph{vertical} dimensions of the boxed title. Possible horizontal enlargements
+are \emph{not} automatically computed.
+\end{marker}
+
+
+\begin{exdispExample*}{boxed_title_example_1}{sbs,lefthand ratio=0.66}
+\begin{tcolorbox}[enhanced,title=My title,
+ attach boxed title to top left=
+ {xshift=-2mm,yshift=-2mm},
+ boxed title style={size=small,colback=blue},
+ show bounding box]
+ This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+
+
+\clearpage
+\subsubsection{Options for the Boxed Title Box}
+\begin{marker}
+ The boxed title options are implemented as an underlay, see \Vref{subsec:skinunderlay}.
+ Therefore, a boxed title is not drawn, if a skin does not support underlays
+ like \refSkin{standard}. Still, the room for the boxed
+ titles gets reserved in these cases.
+\end{marker}
+
+\begin{marker}
+ A \tikzname\ node |title| is produced by a boxed title which can be used
+ inside \refKey{/tcb/frame code}, \refKey{/tcb/interior code},
+ underlays, overlays, and finishes.
+\end{marker}
+
+\begin{marker}
+ A boxed title is almost always the first underlay. The only exceptions are
+ underlays defined by \refKey{/tcb/underlay boxed title} which are drawn
+ before. Additionally, underlays defined by \refKey{/tcb/underlay boxed title}
+ are only drawn, if a boxed title is actually set. They are ignored, if
+ there is no boxed title.
+\end{marker}
+
+
+
+\begin{docTcbKey}[][doc new=2016-02-26]{boxed title size}{=\meta{size}}{no default, initially |title|}
+ This setting defines the basic size for the title box. Further settings
+ can be applied using \refKey{/tcb/boxed title style}.
+ Feasible values for \meta{size} are:
+ \begin{itemize}
+ \item\docValue{title}: Sets the size according to \refKey{/tcb/size}|=|\docValue{title}.
+ \item\docValue{standard}: No size setting. Typically, this is identical to
+ \refKey{/tcb/size}|=|\docValue{normal}.
+ \item\docValue{copy}: The size values for a title of the base box are copied
+ for the title box.
+ \end{itemize}
+
+\begin{dispExample}
+% \tcbuselibrary{raster}
+\begin{tcbraster}[raster columns=3,enhanced,boxrule=0.4pt,
+ title=My title,attach boxed title to top center]
+ \begin{tcolorbox}[boxed title size=title]
+ This is a \textbf{tcolorbox}.
+ \end{tcolorbox}
+ \begin{tcolorbox}[boxed title size=standard]
+ This is a \textbf{tcolorbox}.
+ \end{tcolorbox}
+ \begin{tcolorbox}[boxed title size=copy]
+ This is a \textbf{tcolorbox}.
+ \end{tcolorbox}
+\end{tcbraster}
+\end{dispExample}
+
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}[][doc updated=2016-02-26]{boxed title style}{=\meta{options}}{style, initially empty}
+By default, a boxed title is dimensioned with \refKey{/tcb/size}|=|\docValue*{title}
+and inherits the \refKey{/tcb/skin} and \refKey{/tcb/colframe} of the main box.
+Also, the \refKey{/tcb/colback} is inherited from the main \refKey{/tcb/colbacktitle}.
+Font and color of the title text are set as usual.
+All other \meta{options} are set by the \refKey{/tcb/boxed title style} key.
+Since a boxed title is set by \refCom{tcbox}, all |tcolorbox| options are
+applicable here. If \refKey{/tcb/boxed title style} is used several times,
+the \meta{options} are is appended.
+
+\begin{exdispExample*}{boxed_title_style_1}{sbs,lefthand ratio=0.66}
+\begin{tcolorbox}[enhanced,title=My title,
+ fonttitle=\bfseries,coltitle=green!25!black,
+ attach boxed title to top center=
+ {yshift=-2mm,yshifttext=-1mm},
+ boxed title style={colframe=green!75!black,
+ colback=yellow!50!green}]
+ This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+
+
+\begin{exdispExample*}{boxed_title_style_2}{sbs,lefthand ratio=0.66}
+\begin{tcolorbox}[enhanced,title=My title,
+ colframe=red!50!black,colback=red!10!white,
+ arc=1mm,colbacktitle=red!10!white,
+ fonttitle=\bfseries,coltitle=red!50!black,
+ attach boxed title to top left=
+ {xshift=3.2mm,yshift=-0.50mm},
+ boxed title style={skin=enhancedfirst jigsaw,
+ size=small,arc=1mm,bottom=-1mm,
+ interior style={fill=none,
+ top color=red!30!white,
+ bottom color=red!20!white}}]
+ This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{exdispExample*}
+
+\begin{exdispExample}{boxed_title_style_3}
+\begin{tcolorbox}[enhanced,title=My title,
+ colframe=blue!50!black,colback=blue!10!white,colbacktitle=blue!5!yellow!10!white,
+ fonttitle=\bfseries,coltitle=black,attach boxed title to top center=
+ {yshift=-0.25mm-\tcboxedtitleheight/2,yshifttext=2mm-\tcboxedtitleheight/2},
+ boxed title style={boxrule=0.5mm,
+ frame code={ \path[tcb fill frame] ([xshift=-4mm]frame.west)
+ -- (frame.north west) -- (frame.north east) -- ([xshift=4mm]frame.east)
+ -- (frame.south east) -- (frame.south west) -- cycle; },
+ interior code={ \path[tcb fill interior] ([xshift=-2mm]interior.west)
+ -- (interior.north west) -- (interior.north east)
+ -- ([xshift=2mm]interior.east) -- (interior.south east) -- (interior.south west)
+ -- cycle;} }]
+ \lipsum[2]
+\end{tcolorbox}
+\end{exdispExample}
+
+
+\begin{exdispExample}{boxed_title_style_4}
+% \usepackage{varwidth}
+\newtcolorbox{mybox}[2][]{enhanced,skin=enhancedlast jigsaw,
+ attach boxed title to top left={xshift=-4mm,yshift=-0.5mm},
+ fonttitle=\bfseries\sffamily,varwidth boxed title=0.7\linewidth,
+ colbacktitle=blue!45!white,colframe=red!50!black,
+ interior style={top color=blue!10!white,bottom color=red!10!white},
+ boxed title style={empty,arc=0pt,outer arc=0pt,boxrule=0pt},
+ underlay boxed title={
+ \fill[blue!45!white] (title.north west) -- (title.north east)
+ -- +(\tcboxedtitleheight-1mm,-\tcboxedtitleheight+1mm)
+ -- ([xshift=4mm,yshift=0.5mm]frame.north east) -- +(0mm,-1mm)
+ -- (title.south west) -- cycle;
+ \fill[blue!45!white!50!black] ([yshift=-0.5mm]frame.north west)
+ -- +(-0.4,0) -- +(0,-0.3) -- cycle;
+ \fill[blue!45!white!50!black] ([yshift=-0.5mm]frame.north east)
+ -- +(0,-0.3) -- +(0.4,0) -- cycle; },
+ title={#2},#1}
+
+\begin{mybox}{My title}
+ \lipsum[2]
+\end{mybox}
+\end{exdispExample}
+
+
+\begin{exdispExample}{boxed_title_style_5}
+% \usepackage{varwidth}
+\newtcolorbox{mybox}[2][]{enhanced,
+ attach boxed title to top left={xshift=1cm,yshift=-2mm},
+ fonttitle=\bfseries,varwidth boxed title=0.7\linewidth,
+ colbacktitle=green!45!white,coltitle=green!10!black,colframe=green!50!black,
+ interior style={top color=yellow!10!white,bottom color=green!10!white},
+ boxed title style={boxrule=0.75mm,colframe=white,
+ borderline={0.1mm}{0mm}{green!50!black},
+ borderline={0.1mm}{0.75mm}{green!50!black},
+ interior style={top color=green!10!white,bottom color=green!10!white,
+ middle color=green!50!white},
+ drop fuzzy shadow},
+ title={#2},#1}
+
+\begin{mybox}{My title}
+ \lipsum[2]
+\end{mybox}
+\end{exdispExample}
+
+
+\begin{exdispExample}{boxed_title_style_6}
+\newtcolorbox{flipbox}[2][]{
+ enhanced,colframe=blue!50!black,colback=yellow!5,fonttitle=\bfseries,
+ flip title={interior hidden},title={#2},#1}
+
+\begin{flipbox}{My title}
+\lipsum[2]
+\end{flipbox}
+\end{exdispExample}
+
+
+\begin{exdispExample}{boxed_title_style_7}
+% \usepackage{varwidth}
+\newtcolorbox{mybox}[2][]{skin=enhancedlast jigsaw,interior hidden,
+ boxsep=0pt,top=0pt,colframe=red,coltitle=red!50!black,
+ fonttitle=\bfseries\sffamily,
+ attach boxed title to bottom center,
+ boxed title style={empty,boxrule=0.5mm},
+ varwidth boxed title=0.5\linewidth,
+ underlay boxed title={
+ \draw[white,line width=0.5mm]
+ ([xshift=0.3mm-\tcboxedtitleheight*2,yshift=0.3mm]title.north west)
+ --([xshift=-0.3mm+\tcboxedtitleheight*2,yshift=0.3mm]title.north east);
+ \path[draw=red,top color=white,bottom color=red!50!white,line width=0.5mm]
+ ([xshift=0.25mm-\tcboxedtitleheight*2,yshift=0.25mm]title.north west)
+ cos +(\tcboxedtitleheight,-\tcboxedtitleheight/2)
+ sin +(\tcboxedtitleheight,-\tcboxedtitleheight/2)
+ -- ([xshift=0.25mm,yshift=0.25mm]title.south west)
+ -- ([yshift=0.25mm]title.south east)
+ cos +(\tcboxedtitleheight,\tcboxedtitleheight/2)
+ sin +(\tcboxedtitleheight,\tcboxedtitleheight/2); },
+ title={#2},#1}
+
+\begin{mybox}{My title}
+ \lipsum[2]
+\end{mybox}
+\end{exdispExample}
+
+
+\begin{exdispExample}{boxed_title_style_8}
+% \usepackage{varwidth}
+\newtcolorbox{mybox}[2][]{enhanced,
+ before skip=2mm,after skip=2mm,
+ colback=black!5,colframe=black!50,boxrule=0.2mm,
+ attach boxed title to top left={xshift=1cm,yshift*=1mm-\tcboxedtitleheight},
+ varwidth boxed title*=-3cm,
+ boxed title style={frame code={
+ \path[fill=tcbcolback!30!black]
+ ([yshift=-1mm,xshift=-1mm]frame.north west)
+ arc[start angle=0,end angle=180,radius=1mm]
+ ([yshift=-1mm,xshift=1mm]frame.north east)
+ arc[start angle=180,end angle=0,radius=1mm];
+ \path[left color=tcbcolback!60!black,right color=tcbcolback!60!black,
+ middle color=tcbcolback!80!black]
+ ([xshift=-2mm]frame.north west) -- ([xshift=2mm]frame.north east)
+ [rounded corners=1mm]-- ([xshift=1mm,yshift=-1mm]frame.north east)
+ -- (frame.south east) -- (frame.south west)
+ -- ([xshift=-1mm,yshift=-1mm]frame.north west)
+ [sharp corners]-- cycle;
+ },interior engine=empty,
+ },
+ fonttitle=\bfseries,
+ title={#2},#1}
+
+\begin{mybox}[colbacktitle=green]{My title}
+\lipsum[2]
+\end{mybox}
+\begin{mybox}[colbacktitle=red]{My title}
+\lipsum[3]
+\end{mybox}
+\end{exdispExample}
+\end{docTcbKey}
+
+
+
+\begin{docTcbKey}[][doc new=2016-02-26]{no boxed title style}{}{style, initially set}
+ Removes all options which were set by \refKey{/tcb/boxed title style}.
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}{hbox boxed title}{}{no value, initially set}
+The title text content is captured with a horizontal box.
+Especially, there are no linebreak possible.
+\begin{exdispExample*}{hbox_boxed_title}{sbs,lefthand ratio=0.66}
+\newtcolorbox{mybox}[1]{hbox boxed title,
+ enhanced,attach boxed title to top center=
+ {yshift=-3mm,yshifttext=-1mm},
+ boxed title style={size=small,colback=red},
+ title={#1}}
+
+\begin{mybox}{Short title}
+ This is a \textbf{tcolorbox}.
+\end{mybox}\bigskip
+
+\begin{mybox}{This title is not really very short}
+ This is a \textbf{tcolorbox}.
+\end{mybox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{minipage boxed title}{\colOpt{=\meta{length}}}{initially unset}
+The title text content is captured with a minipage with a width of \meta{length}.
+By default, the resulting boxed title is somewhat smaller than the main box.
+\begin{exdispExample*}{minipage_boxed_title}{sbs,lefthand ratio=0.66}
+\newtcolorbox{mybox}[1]{minipage boxed title,
+ enhanced,attach boxed title to top center=
+ {yshift=-3mm,yshifttext=-1mm},
+ boxed title style={size=small,colback=red},
+ center title,title={#1}}
+
+\begin{mybox}{Short title}
+ This is a \textbf{tcolorbox}.
+\end{mybox}\bigskip
+
+\begin{mybox}{This title is not really very short}
+ This is a \textbf{tcolorbox}.
+\end{mybox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{minipage boxed title*}{\colOpt{=\meta{length}}}{initially unset}
+The title text content is captured with a minipage with a width of main box width plus \meta{length}.
+By default, the resulting boxed title is somewhat smaller than the main box.
+\begin{exdispExample*}{minipage_boxed_title_star}{sbs,lefthand ratio=0.66}
+\newtcolorbox{mybox}[1]{minipage boxed title*=-2cm,
+ enhanced,attach boxed title to top center=
+ {yshift=-3mm,yshifttext=-1mm},
+ boxed title style={size=small,colback=red},
+ center title,title={#1}}
+
+\begin{mybox}{Short title}
+ This is a \textbf{tcolorbox}.
+\end{mybox}\bigskip
+
+\begin{mybox}{This title is not really very short}
+ This is a \textbf{tcolorbox}.
+\end{mybox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}{tikznode boxed title}{=\meta{options}}{initially unset}
+The title text content is captured with a \tikzname\ node with given \tikzname\ \meta{options}.
+The text is centered by default
+\begin{exdispExample*}{tikznode_boxed_title}{sbs,lefthand ratio=0.66}
+\newtcolorbox{mybox}[1]{tikznode boxed title,
+ enhanced,attach boxed title to top center=
+ {yshift=-3mm,yshifttext=-1mm},
+ boxed title style={size=small,colback=red},
+ title={#1}}
+
+\begin{mybox}{Short title}
+ This is a \textbf{tcolorbox}.
+\end{mybox}\bigskip
+
+\begin{mybox}{This title\\is not really\\very short}
+ This is a \textbf{tcolorbox}.
+\end{mybox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{varwidth boxed title}{\colOpt{=\meta{length}}}{initially unset}
+The title text content is captured with a |varwidth| environment with a width of \meta{length}.
+This style needs the |varwidth| package \cite{arseneau:2011a} to be loaded manually.
+By default, the resulting boxed title is somewhat smaller than the main box.
+\begin{exdispExample*}{varwidth_boxed_title}{sbs,lefthand ratio=0.66}
+% \usepackage{varwidth}
+\newtcolorbox{mybox}[1]{varwidth boxed title,
+ enhanced,attach boxed title to top center=
+ {yshift=-3mm,yshifttext=-1mm},
+ boxed title style={size=small,colback=red},
+ center title,title={#1}}
+
+\begin{mybox}{Short title}
+ This is a \textbf{tcolorbox}.
+\end{mybox}\bigskip
+
+\begin{mybox}{This title is not really very short}
+ This is a \textbf{tcolorbox}.
+\end{mybox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{varwidth boxed title*}{\colOpt{=\meta{length}}}{initially unset}
+The title text content is captured with a |varwidth| environment with a width of main box width plus \meta{length}.
+This style needs the |varwidth| package \cite{arseneau:2011a} to be loaded manually.
+By default, the resulting boxed title is somewhat smaller than the main box.
+\begin{exdispExample*}{varwidth_boxed_title_star}{sbs,lefthand ratio=0.66}
+% \usepackage{varwidth}
+\newtcolorbox{mybox}[1]{varwidth boxed title*=-2cm,
+ enhanced,attach boxed title to top center=
+ {yshift=-3mm,yshifttext=-1mm},
+ boxed title style={size=small,colback=red},
+ center title,title={#1}}
+
+\begin{mybox}{Short title}
+ This is a \textbf{tcolorbox}.
+\end{mybox}\bigskip
+
+\begin{mybox}{This title is not really very short}
+ This is a \textbf{tcolorbox}.
+\end{mybox}
+\end{exdispExample*}
+\end{docTcbKey}
+
+
+\clearpage
+\subsection{Watermark Option Keys}\label{subsec:watermarks}
+The following watermark options are applicable for all skins which
+use |tikzpicture| as \refKey{/tcb/graphical environment}.
+Therefore, the skin \refSkin{standard} does not support these watermarks,
+but all other skins, e.\,g.\ \refSkin{enhanced}.
+
+\begin{marker}
+The watermark options rely on the more general overlay options described in
+Section \ref{subsec:overlays} from page \pageref{subsec:overlays}.
+Therefore, \emph{watermarks} and \emph{overlays} cannot be used mixed.
+But a mixture is possible with the \mylib{hooks} library, see Section \ref{sec:hooks}.
+\end{marker}
+
+
+\begin{docTcbKey}{watermark text}{=\meta{text}}{no default, initially unset}
+ Writes some \meta{text} in the center of the interior region of a |tcolorbox|.
+ This \meta{text} is written \emph{after} the
+ frame and interior are drawn and \emph{before} the text content is drawn.
+ It is zoomed or stretched according the values of
+ \refKey{/tcb/watermark zoom} or \refKey{/tcb/watermark stretch}.
+\begin{dispExample}
+\tcbset{colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries}
+
+\begin{tcolorbox}[enhanced,title=My title,watermark text=My Watermark]
+\lipsum[1]
+\tcblower
+\lipsum[2]
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+\enlargethispage*{1cm}
+
+\begin{docTcbKey}{watermark text on}{=\meta{part} is \meta{text}}{no default, initially unset}
+ This option writes some \meta{text} in the center of the interior region of a |tcolorbox|
+ as described for \refKey{/tcb/watermark text}.
+ But this is done only for boxes named \meta{part} of a break sequence, see
+ \refKey{/tcb/breakable}.\\
+ Feasible values for \meta{part} are:
+ \begin{itemize}
+ \item\docValue{broken}: all broken box parts,
+ \item\docValue{unbroken}: unbroken boxes only,
+ \item\docValue{first}: first parts of a break sequence,
+ \item\docValue{middle}: middle parts of a break sequence,
+ \item\docValue{last}: last parts of a break sequence,
+ \item\docValue{unbroken and first}: unbroken boxes and first parts of a break sequence,
+ \item\docValue{middle and last}: middle and last parts of a break sequence.
+ \item\docValue{first and middle}: first and middle parts of a break sequence.
+ \end{itemize}
+\end{docTcbKey}
+
+
+\clearpage
+
+
+\begin{docTcbKey}{watermark graphics}{=\meta{file name}}{no default, initially unset}
+ Draws an external picture referenced by \meta{file name}
+ in the center of the interior region of a |tcolorbox|.
+ The picture is drawn \emph{after} the
+ frame and interior are drawn and \emph{before} the text content is drawn.
+ It is zoomed or stretched according the values of
+ \refKey{/tcb/watermark zoom} or \refKey{/tcb/watermark stretch}.
+\begin{dispExample}
+\tcbset{colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries}
+
+\begin{tcolorbox}[enhanced,title=My title,watermark graphics=Basilica_5.png,
+ watermark opacity=0.15]
+\lipsum[1-2]
+\tcblower
+This example uses a public domain picture from\\
+\url{http://commons.wikimedia.org/wiki/File:Basilica_5.png}
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{watermark graphics on}{=\meta{part} is \meta{file name}}{no default, initially unset}
+ This option draws a picture referenced by \meta{file name} in the center of the interior region of a |tcolorbox|
+ as described for \refKey{/tcb/watermark graphics}.
+ But this is done only for boxes named \meta{part} of a break sequence, see
+ \refKey{/tcb/breakable}.\\
+ Feasible values for \meta{part} are:
+ \begin{itemize}
+ \item\docValue{broken}: all broken box parts,
+ \item\docValue{unbroken}: unbroken boxes only,
+ \item\docValue{first}: first parts of a break sequence,
+ \item\docValue{middle}: middle parts of a break sequence,
+ \item\docValue{last}: last parts of a break sequence,
+ \item\docValue{unbroken and first}: unbroken boxes and first parts of a break sequence,
+ \item\docValue{middle and last}: middle and last parts of a break sequence.
+ \end{itemize}
+\end{docTcbKey}
+
+
+
+\clearpage
+\begin{docTcbKey}{watermark tikz}{=\meta{graphical code}}{no default, initially unset}
+ Draws the given |tikz| \meta{graphical code}
+ in the center of the interior region of a |tcolorbox|.
+ The code is executed \emph{after} the
+ frame and interior are drawn and \emph{before} the text content is drawn.
+ The result is zoomed or stretched according the values of
+ \refKey{/tcb/watermark zoom} or \refKey{/tcb/watermark stretch}.
+\begin{dispExample}
+\tcbset{colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries}
+
+\begin{tcolorbox}[enhanced,title=My title,
+ watermark tikz={\draw[line width=2mm] circle (1cm)
+ node{\fontfamily{ptm}\fontseries{b}\fontsize{20mm}{20mm}\selectfont ?};}]
+\lipsum[1]
+\tcblower
+\lipsum[2]
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+
+
+\begin{docTcbKey}{watermark tikz on}{=\meta{part} is \meta{graphical code}}{no default, initially unset}
+ This option draws the given |tikz| \meta{graphical code} in the center of the interior region of a |tcolorbox|
+ as described for \refKey{/tcb/watermark tikz}.
+ But this is done only for boxes named \meta{part} of a break sequence, see
+ \refKey{/tcb/breakable}.\\
+ Feasible values for \meta{part} are:
+ \begin{itemize}
+ \item\docValue{broken}: all broken box parts,
+ \item\docValue{unbroken}: unbroken boxes only,
+ \item\docValue{first}: first parts of a break sequence,
+ \item\docValue{middle}: middle parts of a break sequence,
+ \item\docValue{last}: last parts of a break sequence,
+ \item\docValue{unbroken and first}: unbroken boxes and first parts of a break sequence,
+ \item\docValue{middle and last}: middle and last parts of a break sequence.
+ \end{itemize}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{no watermark}{}{style, no default, initially set}
+ Removes the watermark if set before. This is an alias for
+ \refKey{/tcb/no overlay}.
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}{watermark opacity}{=\meta{fraction}}{no default, initially |1.00|}
+ Sets the opacity value $\in[0,1]$ for a watermark.
+\begin{dispExample}
+\tcbset{enhanced,colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries,
+ watermark text=Watermark,nobeforeafter,width=(\linewidth-2mm)/2}
+
+\begin{tcolorbox}[title=Opacity 1.00,watermark opacity=1.00]
+\lipsum[2]
+\end{tcolorbox}\hfill%
+\begin{tcolorbox}[title=Opacity 0.50,watermark opacity=0.50]
+\lipsum[2]
+\end{tcolorbox}%
+\end{dispExample}
+\end{docTcbKey}
+
+\enlargethispage{5mm}
+\begin{docTcbKey}{watermark zoom}{=\meta{fraction}}{no default, initially |0.75|}
+ Sets the zoom value for a watermark. The zoom respects the aspect ratio.
+ The value $1.0$ means to fill the whole box until the watermark touches the frame.
+\begin{dispExample}
+\tcbset{enhanced,colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries,
+ watermark text=Watermark,nobeforeafter,width=(\linewidth-2mm)/2}
+
+\begin{tcolorbox}[title=Zoom 1.0,watermark zoom=1.0]
+\lipsum[2]
+\end{tcolorbox}\hfill%
+\begin{tcolorbox}[title=Zoom 0.5,watermark zoom=0.5]
+\lipsum[2]
+\end{tcolorbox}%
+\end{dispExample}
+\end{docTcbKey}
+
+\clearpage
+
+\begin{docTcbKey}{watermark shrink}{=\meta{fraction}}{no default, initially unset}
+ Identically to \refKey{/tcb/watermark zoom}, but the watermark
+ never gets enlarged. Thus, the watermark keeps its original size or is shrunk.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{watermark overzoom}{=\meta{fraction}}{no default, initially unset}
+ Sets the overzoom value for a watermark. The overzoom respects the aspect ratio.
+ The value $1.0$ means to fill the whole box until the watermark touches
+ all four sides of the frame.
+\begin{dispExample}
+\tcbset{enhanced,colback=white,colframe=blue!50!black,fonttitle=\bfseries,
+ watermark opacity=0.5,
+ watermark graphics=lichtspiel.jpg,nobeforeafter,width=(\linewidth-2mm)/2}
+
+\begin{tcolorbox}[title=Zoom 1.0,watermark zoom=1.0]
+\lipsum[1]
+\end{tcolorbox}\hfill%
+\begin{tcolorbox}[title=Overzoom 1.0,watermark overzoom=1.0]
+\lipsum[1]
+\end{tcolorbox}%
+\end{dispExample}
+\end{docTcbKey}
+
+\begin{marker}
+If a \refKey{/tcb/watermark overzoom} value of |1.0| is used in connection
+with invisible top and bottom rules which still have a thickness greater than |0pt|,
+the space of these invisible rules may not be covered by the watermark.
+For example, this situation may occur during the breaking of \refKey{/tcb/enhanced} boxes.
+To avoid this optical glitch, just set \refKey{/tcb/pad at break} to any desired value.
+\end{marker}
+
+\clearpage
+\begin{docTcbKey}{watermark stretch}{=\meta{fraction}}{no default, initially unset}
+ Sets the stretch value for a watermark. The stretch value is applied to width
+ and height in relation to the box dimensions. It does not respect the aspect ratio.
+ The value $1.0$ means to fill the whole box.
+\begin{dispExample}
+\tcbset{enhanced,colback=white,colframe=blue!50!black,fonttitle=\bfseries,
+ watermark graphics=lichtspiel.jpg,watermark opacity=0.5,
+ nobeforeafter,width=(\linewidth-2mm)/2}
+
+\begin{tcolorbox}[title=Stretch 1.00,watermark stretch=1.00]
+\lipsum[2]
+\end{tcolorbox}\hfill%
+\begin{tcolorbox}[title=Stretch 0.50,watermark stretch=0.50]
+\lipsum[2]
+\end{tcolorbox}%
+\end{dispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}{watermark color}{=\meta{color}}{no default, initially mixed background and frame color}
+ Sets the color for the watermark.
+\begin{dispExample}
+\tcbset{colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries}
+
+\begin{tcolorbox}[enhanced,title=My title,watermark text=My Watermark,
+ watermark color=yellow!50!red]
+\lipsum[1]
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+\clearpage
+
+\begin{docTcbKey}{clip watermark}{\colOpt{=true\textbar false}}{default |true|, initially |true|}
+ Sets the watermark to be clipped to the interior area.
+\begin{dispExample}
+\tcbset{enhanced,colback=white,colframe=blue!50!white,fonttitle=\bfseries,
+ watermark opacity=0.5,watermark stretch=1.00,arc=3mm,
+ watermark graphics=lichtspiel.jpg}
+
+\begin{tcolorbox}[title=Clip (default),clip watermark]
+\lipsum[1]
+\end{tcolorbox}
+
+\begin{tcolorbox}[title=No clip,clip watermark=false]
+\lipsum[1]
+\end{tcolorbox}%
+\end{dispExample}
+\end{docTcbKey}
+
+
+
+\clearpage
+\subsection{Clip Environments}\label{subsec:clipping}
+The following clip environments are applicable for all skins which
+use engines of type |path|, |pathfirst|, |pathmiddle|, or |pathlast|.
+Especially, the skin \refSkin{enhanced} supports \emph{all} of them
+and \refSkin{standard} \emph{none}. The typical area of application
+is inside overlay code, see Section \ref{subsec:overlays} from
+page \pageref{subsec:overlays}.
+
+
+\begin{docEnvironment}{tcbclipframe}{}
+Defines a |Tikz| scope which clips to the frame area path.
+\begin{dispExample}
+\makeatletter
+\newtcolorbox{picturebox}[2][]{%
+ enhanced,frame hidden,interior hidden,fonttitle=\bfseries,
+ overlay={\begin{tcbclipframe}\node at (frame)
+ {\includegraphics[width=\tcb@width,height=\tcb@height]{#2}};\end{tcbclipframe}%
+ \begin{tcbclipinterior}\fill[white,opacity=0.75]
+ (frame.south west) rectangle (frame.north east);\end{tcbclipinterior}},#1}
+\makeatother
+
+\begin{picturebox}[title=My Picture Box]{lichtspiel.jpg}
+\lipsum[1]
+\end{picturebox}
+\end{dispExample}
+\end{docEnvironment}
+
+\clearpage
+\begin{docEnvironment}{tcbinvclipframe}{}
+Defines a |Tikz| scope which clips to the \emph{outside} of the frame area path.
+
+\begin{dispExample*}{segmentation style={pattern=checkerboard light gray}}
+\tcbset{enhanced jigsaw,fonttitle=\bfseries,opacityback=0.35,colback=blue!5!white,
+ frame style={left color=red!75!black,right color=red!10!yellow}}
+
+\begin{tikzpicture}% draw two balls
+ \path[use as bounding box] (0,0.8) rectangle +(0.1,0.1);
+ \shadedraw [shading=ball] (0,0) circle (1cm);
+ \shadedraw [ball color=red] (3,-2.2) circle (1cm);
+\end{tikzpicture}
+
+\begin{tcolorbox}[title=A translucent box,
+ overlay={\begin{tcbinvclipframe}
+ \draw[red,line width=1cm] ([xshift=-2mm,yshift=2mm]frame.north west)
+ --([xshift=2mm,yshift=-2mm]frame.south east);
+ \draw[red,line width=1cm] ([xshift=-2mm,yshift=-2mm]frame.south west)
+ --([xshift=2mm,yshift=2mm]frame.north east);
+ \end{tcbinvclipframe}}]
+ \lipsum[2]
+\end{tcolorbox}
+\end{dispExample*}
+\end{docEnvironment}
+
+\clearpage
+\begin{docEnvironment}{tcbclipinterior}{}
+Defines a |Tikz| scope which clips to the interior area path.
+\begin{dispExample}
+\begin{tcolorbox}[enhanced,title=My Title,
+ overlay={\begin{tcbclipinterior}
+ \draw[red,line width=1cm] (interior.north west)--(interior.south east);
+ \draw[red,line width=1cm] (interior.south west)--(interior.north east);
+ \end{tcbclipinterior}}]
+\lipsum[1]
+\end{tcolorbox}
+\end{dispExample}
+\end{docEnvironment}
+
+\begin{docEnvironment}{tcbcliptitle}{}
+Defines a |Tikz| scope which clips to the title area path.
+\begin{dispExample}
+\begin{tcolorbox}[enhanced,title=My Title,colframe=blue,colback=yellow!10!white,
+ overlay={\begin{tcbcliptitle}\node at (title)
+ {\includegraphics[width=\linewidth]{lichtspiel.jpg}};\end{tcbcliptitle}}]
+\lipsum[1]
+\end{tcolorbox}
+\end{dispExample}
+\end{docEnvironment}
+
+\clearpage
+\begin{docTcbKey}{clip title}{\colOpt{=true\textbar false}}{default |true|, initially |false|}
+ Sets the title to be clipped to the title area.
+\begin{dispExample}
+\tcbset{enhanced,width=5cm,colframe=red!50!white,coltitle=black,
+ colbacktitle=yellow!50!white}
+
+\begin{tcolorbox}[title=\mbox{This is a title which is unbreakable and far too long}]
+This is a tcolorbox.
+\end{tcolorbox}
+
+\begin{tcolorbox}[title=\mbox{This is a title which is unbreakable and far too long},
+ clip title]
+This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{clip upper}{\colOpt{=true\textbar false}}{default |true|, initially |false|}
+ Sets the upper part to be clipped to the interior area.
+\begin{dispExample}
+\newcommand{\mygraphics}[2][]{%
+ \tcbox[enhanced,boxsep=0pt,top=0pt,bottom=0pt,left=0pt,
+ right=0pt,boxrule=0.4pt,drop fuzzy shadow,clip upper,
+ colback=black!75!white,toptitle=2pt,bottomtitle=2pt,nobeforeafter,
+ center title,fonttitle=\small\sffamily,title=\detokenize{#2}]
+ {\includegraphics[width=\the\dimexpr(\linewidth-4mm)/2\relax]{#2}}}
+
+\mygraphics{lichtspiel.jpg}\hfill
+\mygraphics{Basilica_5.png}
+\end{dispExample}
+\end{docTcbKey}
+
+\clearpage
+The example for \refKey{/tcb/clip upper} sizes the box according to
+the dimensions of the picture. To do it the other way around, the watermark
+options provide an easy solution.
+\begin{dispExample}
+\newcommand{\mygraphics}[2][]{%
+ \tcbox[enhanced,capture=minipage,boxsep=0pt,top=0pt,bottom=0pt,left=0pt,
+ right=0pt,boxrule=0.4pt,drop fuzzy shadow,nobeforeafter,
+ colback=black!75!white,toptitle=2pt,bottomtitle=2pt,
+ center title,fonttitle=\small\sffamily,title=\detokenize{#2},
+ width=(\linewidth-4mm)/2,height=6cm,colbacktitle={black},
+ watermark zoom=1.0,watermark graphics={#2}]{}}
+
+\mygraphics{lichtspiel.jpg}\hfill
+\mygraphics{Basilica_5.png}
+\end{dispExample}
+
+
+\begin{docTcbKey}{clip lower}{\colOpt{=true\textbar false}}{default |true|, initially |false|}
+ Sets the lower part to be clipped to the interior area.
+\begin{dispExample}
+\tcbset{enhanced,width=5cm,colframe=red!50!black,text and listing}
+
+\begin{tcblisting}{}
+Donau\-dampf\-schiff\-fahrts\-ka\-pi\-t\"ans\-m\"ut\-zen\-fran\-sen
+\end{tcblisting}
+
+\begin{tcblisting}{clip lower}
+Donau\-dampf\-schiff\-fahrts\-ka\-pi\-t\"ans\-m\"ut\-zen\-fran\-sen
+\end{tcblisting}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\clearpage
+\subsection{Border Line Option Keys}\label{subsec:borderline}
+The following borderline options are applicable for most skins which
+use |tikzpicture| as \refKey{/tcb/graphical environment}.
+Therefore, the skin \refSkin{standard} does not support these border lines,
+but most other skins, e.\,g.\ \refSkin{enhanced}.
+
+The borderlines are independent from the normal |tcolorbox| rules.
+They may be used with or without the \refKey{/tcb/segmentation engine}.
+
+The borderlines are stackable, i.\,e.\ several different border lines can be
+used on the same |tcolorbox|. They are drawn \emph{after} the box frame and box
+interior and \emph{before} overlays or watermarks.
+
+\begin{marker}
+Technically, the normal |tcolorbox| rules result from a \tikzname\ \emph{filling}
+process. The border lines are created by a \tikzname\ \emph{drawing} process.
+This can be used to apply different effects.
+\end{marker}
+
+
+\begin{docTcbKey}{borderline}{=\marg{width}\marg{offset}\marg{options}}{no default, initially unset}
+ Adds a new borderline to the stack of border lines.
+ This border line is drawn with the given \meta{width} and gets an
+ \meta{offset} computed from the frame outline. A positive \meta{offset} value
+ moves the borderline inside the |tcolorbox| and a negative \meta{offset} value
+ moves it outside without changing the bounding box.\\
+ The border line is drawn along a \tikzname\ path with the given \tikzname\ \meta{options}.
+ Note that the \tikzname\ |line width| option should not be used here.\\
+ The border lines adapt to the rounded corners of the |tcolorbox|. An inside
+ borderline will switch to sharp corners if necessary, an outside borderline will
+ always be rounded except for \refKey{/tcb/sharp corners}.
+\begin{dispExample}
+\begin{tcolorbox}[enhanced,title=Rounded corners,fonttitle=\bfseries,boxsep=5pt,
+ arc=8pt,
+ borderline={0.5pt}{0pt}{red},
+ borderline={0.5pt}{5pt}{blue,dotted},
+ borderline={0.5pt}{-5pt}{green} ]
+This is a tcolorbox.
+\end{tcolorbox}
+\bigskip
+\begin{tcolorbox}[enhanced,title=Sharp corners,fonttitle=\bfseries,boxsep=5pt,
+ arc=8pt,sharp corners=downhill,
+ borderline={0.5pt}{0pt}{red},
+ borderline={0.5pt}{5pt}{blue,dotted},
+ borderline={0.5pt}{-5pt}{green} ]
+This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample}
+
+\begin{dispExample}
+% \usepackage{lipsum}
+\begin{tcolorbox}[enhanced,arc=3mm,boxrule=1.5mm,boxsep=1.5mm,
+ colback=yellow!20!white,
+ colframe=blue,
+ borderline={1mm}{1mm}{white},
+ borderline={1mm}{2mm}{red} ]
+ \lipsum[1]
+\end{tcolorbox}
+\end{dispExample}
+
+
+\begin{dispExample}
+% \usepackage{lipsum}
+\begin{tcolorbox}[enhanced,arc=3mm,boxrule=1.5mm,
+ frame hidden,colback=blue!10!white,
+ borderline={1mm}{0mm}{blue,dotted} ]
+ \lipsum[2]
+\end{tcolorbox}
+\end{dispExample}
+
+
+\begin{dispExample}
+% \usepackage{lipsum}
+\begin{tcolorbox}[enhanced,skin=enhancedmiddle,
+ frame hidden,interior hidden,top=0mm,bottom=0mm,boxsep=0mm,
+ borderline={0.75mm}{0mm}{red},
+ borderline={0.75mm}{0.75mm}{red!50!yellow},
+ borderline={0.75mm}{1.5mm}{yellow}, ]
+ \lipsum[3]
+\end{tcolorbox}
+\end{dispExample}
+
+\begin{dispExample}
+% \usepackage{lipsum}
+\newtcolorbox{mygreenbox}[2][]{%
+ enhanced,width=\linewidth-6pt,
+ enlarge top by=3pt,enlarge bottom by=3pt,
+ enlarge left by=3pt,enlarge right by=3pt,
+ title={#2},frame hidden,boxrule=0pt,top=1mm,bottom=1mm,
+ colframe=green!30!black, colbacktitle=green!50!yellow,
+ coltitle=black, colback=green!25!white,
+ borderline={0.5pt}{-0.5pt}{green!75!blue},
+ borderline={1pt}{-3pt}{green!50!blue},#1}
+
+\begin{mygreenbox}{My title}
+ \lipsum[4]
+\end{mygreenbox}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{no borderline}{}{no default, initially set}
+ Removes all borderlines if set before.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{show bounding box}{\colOpt{=\meta{color}}}{default |red|, initially unset}
+ Displays the bounding box borderline of a |tcolorbox|.
+ Its intended use is debugging and fine tuning.
+ It should not be part of a final document.
+ The optional \meta{color} is the base color for the bounding box
+ borderline.
+\begin{dispExample}
+\tcbset{enhanced,nobeforeafter,width=4cm,fonttitle=\bfseries}
+
+\begin{tcolorbox}[show bounding box,title=Normal]
+This is a tcolorbox.
+\end{tcolorbox}%
+\begin{tcolorbox}[show bounding box=blue,title=Shadow,drop fuzzy shadow]
+This is a tcolorbox.
+\end{tcolorbox}%
+\begin{tcolorbox}[show bounding box=green,title=Enlarged,drop fuzzy shadow,
+ enlarge by=2mm]
+This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+\clearpage
+
+\begin{marker}
+The following \emph{partial} borderlines act slightly different from the
+complete borderlines described before. They ignore rounded corner settings,
+their length is not modified by their \meta{offset}, they ignore skin settings
+but adapt to breakable boxes.
+\end{marker}
+
+\begin{docTcbKey}[][doc new=2014-10-20]{borderline north}{=\marg{width}\marg{offset}\marg{options}}{no default, initially unset}
+ Adds a new borderline with the given \meta{width} to the
+ north of the |tcolorbox|.
+ A positive \meta{offset} value
+ moves the borderline inside the |tcolorbox| and a negative \meta{offset} value
+ moves it outside without changing the bounding box.
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+\begin{tcolorbox}[enhanced,
+ borderline north={2pt}{-2pt}{red}]
+ This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2014-10-20]{borderline south}{=\marg{width}\marg{offset}\marg{options}}{no default, initially unset}
+ Adds a new borderline with the given \meta{width} to the
+ south of the |tcolorbox|.
+ A positive \meta{offset} value
+ moves the borderline inside the |tcolorbox| and a negative \meta{offset} value
+ moves it outside without changing the bounding box.
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+\begin{tcolorbox}[enhanced,
+ borderline south={2pt}{-2pt}{red}]
+ This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2014-10-20]{borderline east}{=\marg{width}\marg{offset}\marg{options}}{no default, initially unset}
+ Adds a new borderline with the given \meta{width} to the
+ east of the |tcolorbox|.
+ A positive \meta{offset} value
+ moves the borderline inside the |tcolorbox| and a negative \meta{offset} value
+ moves it outside without changing the bounding box.
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+\begin{tcolorbox}[enhanced,
+ borderline east={2pt}{-2pt}{red}]
+ This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2014-10-20]{borderline west}{=\marg{width}\marg{offset}\marg{options}}{no default, initially unset}
+ Adds a new borderline with the given \meta{width} to the
+ west of the |tcolorbox|.
+ A positive \meta{offset} value
+ moves the borderline inside the |tcolorbox| and a negative \meta{offset} value
+ moves it outside without changing the bounding box.
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+\begin{tcolorbox}[enhanced,
+ borderline west={2pt}{-2pt}{red}]
+ This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}[][doc new=2014-10-20]{borderline horizontal}{=\marg{width}\marg{offset}\marg{options}}{no default, initially unset}
+ Adds a new borderline with the given \meta{width} to the
+ north and south of the |tcolorbox|.
+ A positive \meta{offset} value
+ moves the borderlines inside the |tcolorbox| and a negative \meta{offset} value
+ moves them outside without changing the bounding box.
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+\begin{tcolorbox}[blanker,top=3mm,bottom=3mm,
+ borderline horizontal={2pt}{0pt}{red}]
+ This is a \textbf{tcolorbox}.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2014-10-20]{borderline vertical}{=\marg{width}\marg{offset}\marg{options}}{no default, initially unset}
+ Adds a new borderline with the given \meta{width} to the
+ east and west of the |tcolorbox|.
+ A positive \meta{offset} value
+ moves the borderlines inside the |tcolorbox| and a negative \meta{offset} value
+ moves them outside without changing the bounding box.
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+\begin{tcolorbox}[blanker,left=3mm,right=3mm,
+ borderline vertical={2pt}{0pt}{red}]
+ This is a \textbf{tcolorbox}.\\
+ My second line.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}
+
+\begin{dispExample}
+\begin{tcolorbox}[enhanced,colback=yellow!10!white,boxrule=0pt,frame hidden,
+ borderline north={1mm}{-2mm}{red},
+ borderline south={1mm}{-2mm}{blue},
+ borderline west={1mm}{-2mm}{green},
+ borderline east={1mm}{-2mm}{yellow}]
+\lipsum[1]
+\end{tcolorbox}
+\end{dispExample}
+
+\clearpage
+\subsection{Shadow Option Keys}\label{subsec:shadows}
+The following shadow options are applicable for most skins which
+use |tikzpicture| as \refKey{/tcb/graphical environment}.
+Therefore, the skin \refSkin{standard} does not support these shadows,
+but most other skins, e.\,g.\ \refSkin{enhanced}.
+
+The shadows are stackable, i.\,e.\ several different shadows can be
+used on the same |tcolorbox|. They are drawn \emph{before} the box frame is drawn.
+
+\begin{docTcbKey}{no shadow}{}{no default}
+ Removes all shadows if set before.
+\end{docTcbKey}
+
+\subsubsection{Common Shadows and Halos}
+
+\begin{docTcbKey}{drop shadow}{\colOpt{=\meta{color}}}{style, default |black!50!white|}
+ Adds a new shadow with standard dimensions to the stack of shadows.
+ Optionally, the \meta{color} for the shadow can be changed.
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+\tcbset{enhanced,colback=red!5!white,
+ colframe=red!75!black,fonttitle=\bfseries}
+
+\begin{tcolorbox}[drop shadow]
+This is a tcolorbox.
+\end{tcolorbox}\par\bigskip
+\begin{tcolorbox}[title=Another shadow,
+ drop shadow=blue]
+This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{drop fuzzy shadow}{\colOpt{=\meta{color}}}{style, default |black!50!white|}
+ Adds a new fuzzy shadow with standard dimensions to the stack of shadows.
+ Optionally, the \meta{color} for the shadow can be changed.
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+\tcbset{enhanced,colback=red!5!white,
+ colframe=red!75!black,fonttitle=\bfseries}
+
+\begin{tcolorbox}[drop fuzzy shadow]
+This is a tcolorbox.
+\end{tcolorbox}\par\bigskip
+\begin{tcolorbox}[title=Another shadow,
+ drop fuzzy shadow=blue]
+This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{drop midday shadow}{\colOpt{=\meta{color}}}{style, default |black!50!white|}
+ Adds a new shadow with standard dimensions to the stack of shadows.
+ Optionally, the \meta{color} for the shadow can be changed.
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+\tcbset{enhanced,colback=red!5!white,
+ colframe=red!75!black,fonttitle=\bfseries}
+
+\begin{tcolorbox}[drop midday shadow]
+This is a tcolorbox.
+\end{tcolorbox}\par\bigskip
+\begin{tcolorbox}[title=Another shadow,
+ drop midday shadow=blue]
+This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}
+
+%\enlargethispage*{2cm}
+\begin{docTcbKey}{drop fuzzy midday shadow}{\colOpt{=\meta{color}}}{style, default |black!50!white|}
+ Adds a new fuzzy shadow with standard dimensions to the stack of shadows.
+ Optionally, the \meta{color} for the shadow can be changed.
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+\tcbset{enhanced,colback=red!5!white,
+ colframe=red!75!black,fonttitle=\bfseries}
+
+\begin{tcolorbox}[drop fuzzy midday shadow]
+This is a tcolorbox.
+\end{tcolorbox}\par\bigskip
+\begin{tcolorbox}[title=Another shadow,
+ drop fuzzy midday shadow=blue]
+This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{halo}{\colOpt{=\meta{size} \texttt{with} \meta{color}}}{style, default |0.9mm with yellow|}
+ Adds a new halo shadow with the given \meta{color}
+ which overlaps the colorbox an all sides by \meta{size}.
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+\tcbset{enhanced,colback=red!5!white,
+ colframe=red!75!black,fonttitle=\bfseries}
+
+\begin{tcolorbox}[title=My own halo,halo]
+This is a tcolorbox.
+\end{tcolorbox}
+\par\bigskip\bigskip
+\begin{tcolorbox}[title=Another halo,
+ halo=2mm with green]
+This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}
+
+\enlargethispage*{2cm}
+\begin{docTcbKey}{fuzzy halo}{\colOpt{=\meta{size} \texttt{with} \meta{color}}}{style, default |0.9mm with yellow|}
+ Adds a new fuzzy halo shadow with the given \meta{color}
+ which overlaps the colorbox an all sides by \meta{size} plus |0.48mm|.
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+\tcbset{enhanced,colback=red!5!white,
+ colframe=red!75!black,fonttitle=\bfseries}
+
+\begin{tcolorbox}[title=My own halo,fuzzy halo]
+This is a tcolorbox.
+\end{tcolorbox}
+\par\bigskip\bigskip
+\begin{tcolorbox}[title=Another halo,
+ fuzzy halo=2mm with green]
+This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+
+\begin{dispExample}
+\begin{tcolorbox}[blank,enhanced jigsaw,boxsep=2pt,arc=2pt,
+ fuzzy halo=2mm with red!50!white,
+ fuzzy halo=1mm with white]
+\lipsum[1]
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\clearpage
+For all following shadows, the optionally given \meta{color} for the shadow can be changed
+equivalent to the preceding examples.
+
+\begin{docTcbKey}{drop shadow southeast}{\colOpt{=\meta{color}}}{style, default |black!50!white|}
+ Adds a new shadow with standard dimensions to the stack of shadows.
+ This shadow is identical to \refKey{/tcb/drop shadow}.
+\begin{dispExample*}{sbs,lefthand ratio=0.7}
+\begin{tcolorbox}[drop shadow southeast,
+ enhanced,colback=red!5!white,colframe=red!75!black]
+ This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}%
+
+\begin{docTcbKey}{drop shadow south}{\colOpt{=\meta{color}}}{style, default |black!50!white|}
+ Adds a new shadow with standard dimensions to the stack of shadows.
+ This shadow is identical to \refKey{/tcb/drop midday shadow}.
+\begin{dispExample*}{sbs,lefthand ratio=0.7}
+\begin{tcolorbox}[drop shadow south,
+ enhanced,colback=red!5!white,colframe=red!75!black]
+ This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}%
+
+\begin{docTcbKey}{drop shadow southwest}{\colOpt{=\meta{color}}}{style, default |black!50!white|}
+ Adds a new shadow with standard dimensions to the stack of shadows.
+\begin{dispExample*}{sbs,lefthand ratio=0.7}
+\begin{tcolorbox}[drop shadow southwest,
+ enhanced,colback=red!5!white,colframe=red!75!black]
+ This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}%
+
+\begin{docTcbKey}{drop shadow west}{\colOpt{=\meta{color}}}{style, default |black!50!white|}
+ Adds a new shadow with standard dimensions to the stack of shadows.
+\begin{dispExample*}{sbs,lefthand ratio=0.7}
+\begin{tcolorbox}[drop shadow west,
+ enhanced,colback=red!5!white,colframe=red!75!black]
+ This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}%
+
+\begin{docTcbKey}{drop shadow northwest}{\colOpt{=\meta{color}}}{style, default |black!50!white|}
+ Adds a new shadow with standard dimensions to the stack of shadows.
+\begin{dispExample*}{sbs,lefthand ratio=0.7}
+\begin{tcolorbox}[drop shadow northwest,
+ enhanced,colback=red!5!white,colframe=red!75!black]
+ This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}%
+
+\begin{docTcbKey}{drop shadow north}{\colOpt{=\meta{color}}}{style, default |black!50!white|}
+ Adds a new shadow with standard dimensions to the stack of shadows.
+\begin{dispExample*}{sbs,lefthand ratio=0.7}
+\begin{tcolorbox}[drop shadow north,
+ enhanced,colback=red!5!white,colframe=red!75!black]
+ This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}%
+
+\clearpage
+\begin{docTcbKey}{drop shadow northeast}{\colOpt{=\meta{color}}}{style, default |black!50!white|}
+ Adds a new shadow with standard dimensions to the stack of shadows.
+\begin{dispExample*}{sbs,lefthand ratio=0.7}
+\begin{tcolorbox}[drop shadow northeast,
+ enhanced,colback=red!5!white,colframe=red!75!black]
+ This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}%
+
+\begin{docTcbKey}{drop shadow east}{\colOpt{=\meta{color}}}{style, default |black!50!white|}
+ Adds a new shadow with standard dimensions to the stack of shadows.
+\begin{dispExample*}{sbs,lefthand ratio=0.7}
+\begin{tcolorbox}[drop shadow east,
+ enhanced,colback=red!5!white,colframe=red!75!black]
+ This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}%
+
+
+\begin{docTcbKey}{drop fuzzy shadow southeast}{\colOpt{=\meta{color}}}{style, default |black!50!white|}
+ Adds a new fuzzy shadow with standard dimensions to the stack of shadows.
+ This shadow is identical to \refKey{/tcb/drop fuzzy shadow}.
+\begin{dispExample*}{sbs,lefthand ratio=0.7}
+\begin{tcolorbox}[drop fuzzy shadow southeast,
+ enhanced,colback=red!5!white,colframe=red!75!black]
+ This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}%
+
+\begin{docTcbKey}{drop fuzzy shadow south}{\colOpt{=\meta{color}}}{style, default |black!50!white|}
+ Adds a new fuzzy shadow with standard dimensions to the stack of shadows.
+ This shadow is identical to \refKey{/tcb/drop fuzzy midday shadow}.
+\begin{dispExample*}{sbs,lefthand ratio=0.7}
+\begin{tcolorbox}[drop fuzzy shadow south,
+ enhanced,colback=red!5!white,colframe=red!75!black]
+ This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}%
+
+\begin{docTcbKey}{drop fuzzy shadow southwest}{\colOpt{=\meta{color}}}{style, default |black!50!white|}
+ Adds a new fuzzy shadow with standard dimensions to the stack of shadows.
+\begin{dispExample*}{sbs,lefthand ratio=0.7}
+\begin{tcolorbox}[drop fuzzy shadow southwest,
+ enhanced,colback=red!5!white,colframe=red!75!black]
+ This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}%
+
+\begin{docTcbKey}{drop fuzzy shadow west}{\colOpt{=\meta{color}}}{style, default |black!50!white|}
+ Adds a new fuzzy shadow with standard dimensions to the stack of shadows.
+\begin{dispExample*}{sbs,lefthand ratio=0.7}
+\begin{tcolorbox}[drop fuzzy shadow west,
+ enhanced,colback=red!5!white,colframe=red!75!black]
+ This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}%
+
+\clearpage
+\begin{docTcbKey}{drop fuzzy shadow northwest}{\colOpt{=\meta{color}}}{style, default |black!50!white|}
+ Adds a new fuzzy shadow with standard dimensions to the stack of shadows.
+\begin{dispExample*}{sbs,lefthand ratio=0.7}
+\begin{tcolorbox}[drop fuzzy shadow northwest,
+ enhanced,colback=red!5!white,colframe=red!75!black]
+ This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}%
+
+\begin{docTcbKey}{drop fuzzy shadow north}{\colOpt{=\meta{color}}}{style, default |black!50!white|}
+ Adds a new fuzzy shadow with standard dimensions to the stack of shadows.
+\begin{dispExample*}{sbs,lefthand ratio=0.7}
+\begin{tcolorbox}[drop fuzzy shadow north,
+ enhanced,colback=red!5!white,colframe=red!75!black]
+ This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}%
+
+\begin{docTcbKey}{drop fuzzy shadow northeast}{\colOpt{=\meta{color}}}{style, default |black!50!white|}
+ Adds a new fuzzy shadow with standard dimensions to the stack of shadows.
+\begin{dispExample*}{sbs,lefthand ratio=0.7}
+\begin{tcolorbox}[drop fuzzy shadow northeast,
+ enhanced,colback=red!5!white,colframe=red!75!black]
+ This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}%
+
+\begin{docTcbKey}{drop fuzzy shadow east}{\colOpt{=\meta{color}}}{style, default |black!50!white|}
+ Adds a new fuzzy shadow with standard dimensions to the stack of shadows.
+\begin{dispExample*}{sbs,lefthand ratio=0.7}
+\begin{tcolorbox}[drop fuzzy shadow east,
+ enhanced,colback=red!5!white,colframe=red!75!black]
+ This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}%
+
+
+\clearpage
+\subsubsection{Lifted Shadows}
+
+\begin{docTcbKey}{drop lifted shadow}{\colOpt{=\meta{color}}}{style, default |black!50!white|}
+ Adds a new lifted shadow with standard dimensions to the stack of shadows.
+ Optionally, the \meta{color} for the shadow can be changed.
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+\tcbset{enhanced,colback=red!5!white,
+ boxrule=0.4pt,sharp corners,
+ colframe=red!75!black,fonttitle=\bfseries}
+
+\begin{tcolorbox}[drop lifted shadow]
+This is a tcolorbox.
+\end{tcolorbox}\par\bigskip
+\begin{tcolorbox}[title=Another shadow,
+ drop lifted shadow=blue]
+This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{drop small lifted shadow}{\colOpt{=\meta{color}}}{style, default |black!50!white|}
+ Adds a new small lifted shadow with standard dimensions to the stack of shadows.
+ Optionally, the \meta{color} for the shadow can be changed.
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+\tcbset{enhanced,colback=red!5!white,
+ boxrule=0.4pt,sharp corners,
+ colframe=red!75!black,fonttitle=\bfseries}
+
+\tcbox[drop small lifted shadow,size=fbox]
+ {This is a tcolorbox.}
+\par\bigskip
+\begin{tcolorbox}[title=Another shadow,
+ drop small lifted shadow=black]
+This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{drop large lifted shadow}{\colOpt{=\meta{color}}}{style, default |black!50!white|}
+ Adds a new large lifted shadow with standard dimensions to the stack of shadows.
+ Optionally, the \meta{color} for the shadow can be changed.
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+\tcbset{enhanced,colback=red!5!white,
+ colframe=red!75!black,fonttitle=\bfseries}
+
+\begin{tcolorbox}[drop large lifted shadow]
+This is a tcolorbox.
+\end{tcolorbox}\par\bigskip
+\begin{tcolorbox}[title=Another shadow,
+ drop large lifted shadow=blue]
+This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}
+
+
+\clearpage
+
+\subsubsection{Generic Shadows}
+\begin{docTcbKey}{shadow}{=\marg{xshift}\marg{yshift}\marg{offset}\marg{options}}{no default}
+ Adds a new shadow to the stack of shadows.
+ This shadow follows the outline of the |tcolorbox| but is shifted by
+ \meta{xshift} and \meta{yshift}. The \meta{offset} value is a distance value
+ from the frame outline. A positive \meta{offset} value shrinks the shadow
+ and a negative \meta{offset} value enlarges the shadow.
+ The shadow is filled along a \tikzname\ path with the given \tikzname\ \meta{options}.\\
+ The shadows adapt to the rounded corners of the |tcolorbox|. An shrinked shadow
+ will switch to sharp corners if necessary, an enlarged shadow may become
+ more rounded depending on several factors. But \refKey{/tcb/sharp corners}
+ have sharp shadows.
+ \begin{marker}
+ Shadows are not considered for the bounding box computation by default.
+ Large shadows may be overlaped by the following content. But, the
+ bounding box can be adapted if necessary.
+ \end{marker}
+
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+\tcbset{enhanced,colback=red!5!white,
+ colframe=red!75!black,fonttitle=\bfseries}
+
+\begin{tcolorbox}[title=My own shadow,
+ shadow={2mm}{-1mm}{0mm}{black!50!white}]
+This is a tcolorbox.
+\end{tcolorbox}
+\par\bigskip
+\begin{tcolorbox}[title=Another shadow,
+ shadow={-1mm}{-2mm}{0mm}{fill=blue,
+ opacity=0.5}]
+This is a tcolorbox.
+\end{tcolorbox}
+\par\bigskip
+\begin{tcolorbox}[title=Double shadow,
+ shadow={-1.5mm}{-1.5mm}{0mm}{fill=blue,
+ opacity=0.25},
+ shadow={1.5mm}{-1.5mm}{0mm}{fill=red,
+ opacity=0.25}]
+This is a tcolorbox.
+\end{tcolorbox}
+\par\bigskip
+\begin{tcolorbox}[title=Far shadow,
+ shadow={5.5mm}{-3.5mm}{2mm}{fill=black,
+ opacity=0.25}]
+This is a tcolorbox.
+\end{tcolorbox}
+\par\bigskip\bigskip
+\begin{tcolorbox}[title=Halo shadow,
+ shadow={0mm}{0mm}{-1.5mm}%
+ {fill=yellow!75!red,opacity=0.5}]
+This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}{fuzzy shadow}{=\marg{xshift}\marg{yshift}\marg{offset}\marg{step}\marg{options}}{no default}
+ Adds a new fuzzy shadow to the stack of shadows. Actually, this option
+ adds several shadows which appear like a shadow with a fuzzy border.
+ This fuzzy shadow follows the outline of the |tcolorbox| but is shifted by
+ \meta{xshift} and \meta{yshift}. The \meta{offset} value is a distance value
+ from the frame outline. A positive \meta{offset} value shrinks the shadow
+ and a negative \meta{offset} value enlarges the shadow.
+ The \marg{step} value describes a shrink
+ offset used for the combination of the partial shadows.
+ The shadow is filled along a \tikzname\ path with the given \tikzname\ \meta{options} but
+ any |opacity| value will be ignored.
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+\tcbset{enhanced,colback=red!5!white,
+ colframe=red!75!black,fonttitle=\bfseries}
+
+\begin{tcolorbox}[title=My own shadow,
+ fuzzy shadow={2mm}{-1mm}{0mm}{0.1mm}%
+ {black!50!white}]
+This is a tcolorbox.
+\end{tcolorbox}
+\par\bigskip
+\begin{tcolorbox}[title=Another shadow,
+ fuzzy shadow={-1mm}{-2mm}{0mm}{0.2mm}%
+ {fill=blue}]
+This is a tcolorbox.
+\end{tcolorbox}
+\par\bigskip
+\begin{tcolorbox}[title=Double shadow,
+ fuzzy shadow={-1.5mm}{-1.5mm}{0mm}{0.1mm}%
+ {blue},
+ fuzzy shadow={1.5mm}{-1.5mm}{0mm}{0.1mm}%
+ {red}]
+This is a tcolorbox.
+\end{tcolorbox}
+\par\bigskip
+\begin{tcolorbox}[title=Far shadow,
+ fuzzy shadow={5.5mm}{-3.5mm}{0mm}{0.3mm}%
+ {black}]
+This is a tcolorbox.
+\end{tcolorbox}
+\par\bigskip\bigskip
+\begin{tcolorbox}[title=Glow shadow,
+ fuzzy shadow={0mm}{0mm}{-1.5mm}{0.15mm}%
+ {yellow!75!red}]
+This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+
+\begin{dispExample}
+\newtcolorbox{mybox}[1][]{enhanced,
+ fuzzy shadow={1.0mm}{-1.0mm}{0.12mm}{0mm}{blue!50!white},
+ fuzzy shadow={-1.0mm}{-1.0mm}{0.12mm}{0mm}{red!50!white},
+ fuzzy shadow={-1.0mm}{1.0mm}{0.12mm}{0mm}{green!50!white},
+ fuzzy shadow={1.0mm}{1.0mm}{0.12mm}{0mm}{yellow!50!white},#1
+}
+
+\begin{mybox}[title=A multi shadow box]
+This is a tcolorbox.
+\end{mybox}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}[][doc new=2015-05-05]{smart shadow arc}{\colOpt{=true\textbar false}}{default |true|,
+ initially |true|}
+If set to |true|, the shadow drawing algorithm tries to do a somewhat
+smart calculation of the arc for the shadow. The result is pleasing for typical boxes
+with rounded corners, but gives strange results for circular boxes.
+
+\begin{dispExample}
+\tcbset{enhanced,nobeforeafter,colback=red!5!white,
+ colframe=red!75!black,width=3cm,square,halign=center,valign=center
+ }
+
+\begin{tcolorbox}[drop shadow]
+Smart shadow arc (arguably better than normal)
+\end{tcolorbox}
+\hfill
+\begin{tcolorbox}[smart shadow arc=false, drop shadow]
+Normal shadow arc
+\end{tcolorbox}
+\hfill
+\begin{tcolorbox}[circular arc, drop shadow]
+Smart shadow arc (worse than normal)
+\end{tcolorbox}
+\hfill
+\begin{tcolorbox}[circular arc, smart shadow arc=false, drop shadow]
+Normal shadow arc
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{lifted shadow}{=\marg{xshift}\marg{yshift}\marg{bend}\marg{step}\marg{options}}{no default}
+ Adds a new lifted shadow to the stack of shadows. Actually, this option
+ adds several shadows which appear like a shadow with a fuzzy border.
+ This lifted shadow follows the outline of the |tcolorbox| but is shifted by
+ \meta{xshift} and \meta{yshift} on the lower left corner and by
+ $-$\meta{xshift} and \meta{yshift} on the lower right corner.
+ Additionally, there is a \meta{bend} in the middle.
+ The \marg{step} value describes a shrink
+ offset used for the combination of the partial shadows.
+ The shadow is filled along a \tikzname\ path with the given \tikzname\ \meta{options} but
+ any |opacity| value will be ignored.
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+\tcbset{enhanced,colback=red!5!white,
+ boxrule=0.1pt,
+ colframe=red!75!black,fonttitle=\bfseries}
+
+\begin{tcolorbox}[title=My own shadow,
+ lifted shadow={1mm}{-2mm}{3mm}{0.1mm}%
+ {black!50!white}]
+This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}
+
+\clearpage
+\subsubsection{\tikzname\ Shadows}
+Alternativ to the package shadow options described before, shadows from
+the \flqq Shadows Library\frqq\ of \tikzname\ can be used.
+Such shadows can be added directly to the frame path using \refKey{/tcb/frame style}.
+
+\begin{exdispExample*}{tikz_shadow_1}{sbs,lefthand ratio=0.7}
+% \usetikzlibrary{shadows}
+\begin{tcolorbox}[enhanced,
+ colback=red!5!white,colframe=red!75!black,
+ frame style={drop shadow} ]
+ This is a tcolorbox.
+\end{tcolorbox}
+\end{exdispExample*}
+
+\begin{exdispExample*}{tikz_shadow_2}{sbs,lefthand ratio=0.7}
+% \usetikzlibrary{shadows}
+\begin{tcolorbox}[enhanced,height=3cm,
+ colback=red!5!white,colframe=red!75!black,
+ halign=center,valign=center,
+ frame style={circular drop shadow} ]
+ This is a tcolorbox.
+\end{tcolorbox}
+\end{exdispExample*}
+
+\begin{exdispExample*}{tikz_shadow_3}{sbs,lefthand ratio=0.7}
+% \usetikzlibrary{shadows}
+\begin{tcolorbox}[enhanced,width=2.5cm,
+ square,circular arc,
+ halign=center,valign=center,
+ colback=red!5!white,colframe=red!75!black,
+ frame style={circular glow={fill=red}} ]
+ tcolorbox
+\end{tcolorbox}
+\end{exdispExample*}
+
+
+\clearpage
+\subsection{\tikzname\ Picture Option Keys}\label{subsec:tikzpicture}
+The following general options are applicable for skins which
+use |tikzpicture| as \refKey{/tcb/graphical environment}.
+Therefore, the skin \refSkin{standard} does not support these options,
+but most other skins, e.\,g.\ \refSkin{enhanced}.
+
+
+\begin{docTcbKey}{tikz}{=\meta{tikz option list}}{no default, initially empty}
+ Adds the given \meta{tikz option list} to the main |tikzpicture| environment
+ used to draw the color box, see \cite{tantau:tikz_and_pgf}. If this option is
+ applied a second time, the new \meta{tikz option list} is appended to the
+ current option list.
+\begin{dispExample*}{sbs,lefthand ratio=0.66,
+ segmentation style={pattern=checkerboard light gray}}
+\tcbset{enhanced,colback=red!5!white,
+ colframe=red!75!black,fonttitle=\bfseries}
+
+\begin{tcolorbox}[title=Transparent box,
+ tikz={opacity=0.5,transparency group}]
+This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+
+\begin{dispExample*}{sbs,lefthand ratio=0.66}
+\tcbset{enhanced,colback=red!5!white,
+ colframe=red!75!black,fonttitle=\bfseries,
+ fontupper=\bfseries\Huge,
+ halign title=center,halign=center}
+
+\begin{tcolorbox}[title=Rotated box,
+ tikz={rotate=30}]
+Sold!
+\end{tcolorbox}
+\end{dispExample*}
+
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{tikz reset}{}{initially set}
+ Removes all options given by \refKey{/tcb/tikz}.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{at begin tikz}{=\meta{tikz code}}{no default, initially empty}
+ The given \meta{tikz code} is executed at the beginning of the |tikzpicture| environment
+ after the \tikzname\ option |execute at begin picture| was applied.
+ If this option is applied a second time, the new \meta{tikz code} is appended to the current code.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{at begin tikz reset}{}{initially set}
+ Removes all code given by \refKey{/tcb/at begin tikz}.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{at end tikz}{=\meta{tikz code}}{no default, initially empty}
+ The given \meta{tikz code} is executed at the ending of the |tikzpicture| environment
+ before the \tikzname\ option |execute at end picture| was applied.
+ If this option is applied a second time, the new \meta{tikz code} is appended to the current code.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{at end tikz reset}{}{initially set}
+ Removes all code given by \refKey{/tcb/at end tikz}.
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}{rotate}{=\meta{angle}}{no default, initially unset}
+ Rotates the |tcolorbox| by the given \meta{angle}. Note that this is
+ a \tikzname\ coordinate transformation i.e. not all graphical elements like shadings
+ will really be rotated.
+\begin{dispExample*}{sbs,lefthand ratio=0.66}
+\tcbset{enhanced,colback=red!5!white,
+ colframe=red!75!black,fonttitle=\bfseries}
+
+\begin{tcolorbox}[title=Rotated box,rotate=30]
+This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}
+
+\begin{docTcbKey}{scale}{=\meta{fraction}}{no default, initially unset}
+ Scales the |tcolorbox| by the given \meta{fraction}. Note that this is
+ a \tikzname\ coordinate transformation i.e. not all graphical elements like line widths
+ will really be scaled.
+\begin{dispExample*}{sbs,lefthand ratio=0.66}
+\tcbset{enhanced,colback=red!5!white,
+ colframe=red!75!black,fonttitle=\bfseries}
+
+\begin{tcolorbox}[title=Scaled box,scale=0.5]
+This is a tcolorbox.
+\end{tcolorbox}
+\begin{tcolorbox}[title=Scaled box,scale=1.25]
+This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{remember}{}{style, initially unset}
+ Shortcut for |tikz={remember picture}|. This allows one to reference nodes
+ in other \tikzname\ pictures.
+\begin{dispExample}
+\begin{tcolorbox}[enhanced,remember,colback=red!5!white,colframe=red!75!black,
+ fonttitle=\bfseries,title=The four corners of a paper,
+ overlay={\draw[red!50!white,line width=1mm,opacity=0.5,shorten >=3mm]
+ (frame.north west) edge[->] (current page.north west)
+ (frame.north east) edge[->] (current page.north east)
+ (frame.south west) edge[->] (current page.south west)
+ (frame.south east) edge[->] (current page.south east);}]
+This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+\clearpage
+\tcbinterruptdraftmode%
+\begin{docTcbKey}{remember as}{=\meta{name}}{style, no default, initially unset}
+ The |frame| node will be remembered by the given \meta{name} to be referenced
+ in other \tikzname\ pictures.
+\begin{dispExample}
+% \usepackage{lipsum}
+\newtcolorbox{mybox}[1][]{enhanced,colframe=blue!75!black,colback=blue!10!white,
+ fonttitle=\bfseries,#1}
+
+\begin{mybox}[title=First Box,nobeforeafter,width=\linewidth/4,remember as=one]
+This is a test.
+\end{mybox}
+\hfill
+\begin{mybox}[title=Second Box,nobeforeafter,width=\linewidth/4,remember as=two]
+This is a test.
+\end{mybox}
+\hfill
+\begin{mybox}[title=Third Box,nobeforeafter,width=\linewidth/4,remember as=three]
+This is a test.
+\end{mybox}
+
+\lipsum[2]
+
+\begin{mybox}[title=Fourth Box,remember as=four]
+This is a test.
+\end{mybox}
+
+\begin{tikzpicture}[overlay,remember picture,line width=1mm,draw=red!75!black]
+ \draw[->] (one.east) to[bend right] node[above] {A} (two.west);
+ \draw[->] (two.east) to[bend left] node[above] {B} (three.west);
+ \draw[->] (three.east) to[bend left=90] node[right] {C} (four.east);
+ \draw[->] (four.west) to[bend left=90] node[left] {D} (one.west);
+\end{tikzpicture}
+\end{dispExample}
+\end{docTcbKey}
+\tcbcontinuedraftmode%
+
+
+\clearpage
+\subsection{Underlay Option Keys}\label{subsec:skinunderlay}
+
+Underlays are quite similar to overlays described in \Vref{subsec:overlays}.
+Underlays are drawn \emph{after} the frame and interior are
+drawn and \emph{before} overlays and the text content is drawn; see
+\Vref{subsec:tcolorboxdrawing} for the general drawing scheme.
+
+The differences between underlays and overlays are:
+\begin{itemize}
+\item Underlays are not applicable for the skins
+ \refSkin{standard} and
+ \refSkin{standard jigsaw},
+ whereas overlays are applicable also for these skins.
+ The skin \refSkin{spartan} supports underlays but no overlays.
+ \begin{marker}
+ If an underlay is used with the \refSkin{standard} skin, it is silently ignored.
+ \end{marker}
+\item Underlays are stackable, i.\,e.\ several different underlays can be
+ used on the same |tcolorbox|. Overlays are not stackable by default (but with
+ some help of the library \mylib{hooks}).
+\item Boxed titles are implemented with underlays (\Vref{subsec:skinboxedtitle}),
+ watermarks are implemented with overlays (\Vref{subsec:watermarks}).
+\end{itemize}
+
+
+\begin{docTcbKey}{underlay}{=\meta{graphical code}}{no default, initially unset}
+ Adds \meta{graphical code} to the box drawing process. This \meta{graphical code}
+ is drawn \emph{after} the frame and interior and \emph{before} the text content.
+\begin{dispExample}
+\newtcolorbox{mybox}[1][]{enhanced,colback=red!5!white,
+ colbacktitle=red!85!black!50!white,
+ colframe=red!75!black,fonttitle=\bfseries,watermark color=yellow!50!white,
+ underlay={\begin{tcbclipinterior}
+ \draw[red!40!white,line width=1cm] (interior.south west)--(interior.north east);
+ \end{tcbclipinterior}},
+ attach boxed title to top center={yshift=-2mm},#1}
+
+\begin{mybox}[title=My box,watermark text=My Watermark]
+\lipsum[2]
+\end{mybox}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{no underlay}{}{style, no default, initially set}
+ Removes the underlay if set before.
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}{underlay broken}{=\meta{graphical code}}{no default, initially unset}
+ If the box is set to be \refKey{/tcb/breakable} and \emph{is} broken actually,
+ then the \meta{graphical code} is added to the box drawing process.
+ \refKey{/tcb/underlay} overwrites this key.
+\end{docTcbKey}
+
+\begin{docTcbKey}{underlay unbroken}{=\meta{graphical code}}{no default, initially unset}
+ If the box is set to be \refKey{/tcb/breakable} but \emph{is not} broken actually
+ or if the box is set to be \refKey{/tcb/unbreakable},
+ then the \meta{graphical code} is added to the box drawing process.
+ \refKey{/tcb/underlay} overwrites this key.
+\end{docTcbKey}
+
+\begin{docTcbKey}{no underlay unbroken}{}{style, no default, initially set}
+ Removes the unbroken underlay if set before.
+\end{docTcbKey}
+
+\begin{docTcbKey}{underlay first}{=\meta{graphical code}}{no default, initially unset}
+ If the box is set to be \refKey{/tcb/breakable} and \emph{is} broken actually,
+ then the \meta{graphical code} is added to the box drawing process for
+ the \emph{first} part of the break sequence.
+ \refKey{/tcb/underlay} overwrites this key.
+\end{docTcbKey}
+
+\begin{docTcbKey}{no underlay first}{}{style, no default, initially set}
+ Removes the first underlay if set before.
+\end{docTcbKey}
+
+\begin{docTcbKey}{underlay middle}{=\meta{graphical code}}{no default, initially unset}
+ If the box is set to be \refKey{/tcb/breakable} and \emph{is} broken actually,
+ then the \meta{graphical code} is added to the box drawing process for
+ the \emph{middle} parts (if any) of the break sequence.
+ \refKey{/tcb/underlay} overwrites this key.
+\end{docTcbKey}
+
+\begin{docTcbKey}{no underlay middle}{}{style, no default, initially set}
+ Removes the middle underlay if set before.
+\end{docTcbKey}
+
+\begin{docTcbKey}{underlay last}{=\meta{graphical code}}{no default, initially unset}
+ If the box is set to be \refKey{/tcb/breakable} and \emph{is} broken actually,
+ then the \meta{graphical code} is added to the box drawing process for
+ the \emph{last} part of the break sequence.
+ \refKey{/tcb/underlay} overwrites this key.
+\end{docTcbKey}
+
+\begin{docTcbKey}{no underlay last}{}{style, no default, initially set}
+ Removes the last underlay if set before.
+\end{docTcbKey}
+
+\begin{docTcbKey}{underlay boxed title}{=\meta{graphical code}}{no default, initially unset}
+ If the box has a \emph{boxed title}, see \Vref{subsec:skinboxedtitle},
+ then the \meta{graphical code} is added to the box drawing process
+ \emph{before} the boxed title is drawn.
+\end{docTcbKey}
+
+\begin{docTcbKey}{no underlay boxed title}{}{style, no default, initially set}
+ Removes the boxed title underlay if set before.
+\end{docTcbKey}
+
+\begin{docTcbKey}{underlay unbroken and first}{=\meta{graphical code}}{no default, initially unset}
+ This is an abbreviation for setting
+ \refKey{/tcb/underlay unbroken} and
+ \refKey{/tcb/underlay first} together.
+ \refKey{/tcb/underlay} overwrites this key.
+\end{docTcbKey}
+
+\begin{docTcbKey}{underlay middle and last}{=\meta{graphical code}}{no default, initially unset}
+ This is an abbreviation for setting
+ \refKey{/tcb/underlay middle} and
+ \refKey{/tcb/underlay last} together.
+ \refKey{/tcb/underlay} overwrites this key.
+\end{docTcbKey}
+
+\begin{docTcbKey}{underlay unbroken and last}{=\meta{graphical code}}{no default, initially unset}
+ This is an abbreviation for setting
+ \refKey{/tcb/underlay unbroken} and
+ \refKey{/tcb/underlay last} together.
+ \refKey{/tcb/underlay} overwrites this key.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2014-09-19]{underlay first and middle}{=\meta{graphical code}}{no default, initially unset}
+ This is an abbreviation for setting
+ \refKey{/tcb/underlay first} and
+ \refKey{/tcb/underlay middle} together.
+ \refKey{/tcb/underlay} overwrites this key.
+\end{docTcbKey}
+
+
+\clearpage
+\subsection{Finish Option Keys}\label{subsec:skinfinish}
+
+Finishes are quite similar to underlays described in \Vref{subsec:skinunderlay}
+and overlays described in \Vref{subsec:overlays}.
+Finishes are drawn \emph{after} the text content is drawn; see
+\Vref{subsec:tcolorboxdrawing} for the general drawing scheme.
+Therefore, a finish will reduce the readability of the text content.
+
+Finishes are intended for special effects like highlights or glosses or text over text.
+
+\begin{itemize}
+\item Finishes are only applicable for the skins
+ \refSkin{enhanced},
+ \refSkin{empty},
+ \refSkin{freelance},
+ \refSkin{bicolor},
+ \refSkin{beamer}, and
+ \refSkin{widget}.
+ \begin{marker}
+ If a finish is used with the \refSkin{standard} skin, it is silently ignored.
+ \end{marker}
+\item Finishes are stackable, i.\,e.\ several different finishes can be
+ used on the same |tcolorbox|.
+\end{itemize}
+
+\enlargethispage*{2cm}
+\begin{docTcbKey}{finish}{=\meta{graphical code}}{no default, initially unset}
+ Adds \meta{graphical code} to the box drawing process. This \meta{graphical code}
+ is drawn \emph{after} the text content.
+\begin{dispExample}
+\newtcolorbox{mybox}[1][]{enhanced,colback=red!5!white,
+ colbacktitle=red!85!black!50!white,colframe=red!75!black,fonttitle=\bfseries,
+ finish={\begin{tcbclipframe}
+ \path[bottom color=black,top color=black!50!white,opacity=0.1]
+ (frame.south west) -- (frame.south east) -- (frame.north east) -- cycle;
+ \path[top color=white,bottom color=black!50!white,opacity=0.1]
+ (frame.south west) -- (frame.north east) -- (frame.north west) -- cycle;
+ \end{tcbclipframe}},#1}
+
+\begin{mybox}[title=My box]
+\lipsum[2]
+\end{mybox}
+\end{dispExample}
+\begin{dispExample}
+\newtcolorbox{mybox}[1][]{enhanced,colback=red!5!white,
+ colbacktitle=red!85!black!50!white,colframe=red!75!black,fonttitle=\bfseries,
+ finish={\node[draw,fill=white,fill opacity=0.85,inner sep=5mm,
+ rounded corners] at (frame.center) {\Huge\bfseries Finish!};},#1}
+
+\begin{mybox}[title=My box]
+\lipsum[2]
+\end{mybox}
+\end{dispExample}
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}{no finish}{}{style, no default, initially set}
+ Removes the finish if set before.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{finish broken}{=\meta{graphical code}}{no default, initially unset}
+ If the box is set to be \refKey{/tcb/breakable} and \emph{is} broken actually,
+ then the \meta{graphical code} is added to the box drawing process.
+ \refKey{/tcb/finish} overwrites this key.
+\end{docTcbKey}
+
+\begin{docTcbKey}{finish unbroken}{=\meta{graphical code}}{no default, initially unset}
+ If the box is set to be \refKey{/tcb/breakable} but \emph{is not} broken actually
+ or if the box is set to be \refKey{/tcb/unbreakable},
+ then the \meta{graphical code} is added to the box drawing process.
+ \refKey{/tcb/finish} overwrites this key.
+\end{docTcbKey}
+
+\begin{docTcbKey}{no finish unbroken}{}{style, no default, initially set}
+ Removes the unbroken finish if set before.
+\end{docTcbKey}
+
+\begin{docTcbKey}{finish first}{=\meta{graphical code}}{no default, initially unset}
+ If the box is set to be \refKey{/tcb/breakable} and \emph{is} broken actually,
+ then the \meta{graphical code} is added to the box drawing process for
+ the \emph{first} part of the break sequence.
+ \refKey{/tcb/finish} overwrites this key.
+\end{docTcbKey}
+
+\begin{docTcbKey}{no finish first}{}{style, no default, initially set}
+ Removes the first finish if set before.
+\end{docTcbKey}
+
+\begin{docTcbKey}{finish middle}{=\meta{graphical code}}{no default, initially unset}
+ If the box is set to be \refKey{/tcb/breakable} and \emph{is} broken actually,
+ then the \meta{graphical code} is added to the box drawing process for
+ the \emph{middle} parts (if any) of the break sequence.
+ \refKey{/tcb/finish} overwrites this key.
+\end{docTcbKey}
+
+\begin{docTcbKey}{no finish middle}{}{style, no default, initially set}
+ Removes the middle finish if set before.
+\end{docTcbKey}
+
+\begin{docTcbKey}{finish last}{=\meta{graphical code}}{no default, initially unset}
+ If the box is set to be \refKey{/tcb/breakable} and \emph{is} broken actually,
+ then the \meta{graphical code} is added to the box drawing process for
+ the \emph{last} part of the break sequence.
+ \refKey{/tcb/finish} overwrites this key.
+\end{docTcbKey}
+
+\begin{docTcbKey}{no finish last}{}{style, no default, initially set}
+ Removes the last finish if set before.
+\end{docTcbKey}
+
+\begin{docTcbKey}{finish unbroken and first}{=\meta{graphical code}}{no default, initially unset}
+ This is an abbreviation for setting
+ \refKey{/tcb/finish unbroken} and
+ \refKey{/tcb/finish first} together.
+ \refKey{/tcb/finish} overwrites this key.
+\end{docTcbKey}
+
+\begin{docTcbKey}{finish middle and last}{=\meta{graphical code}}{no default, initially unset}
+ This is an abbreviation for setting
+ \refKey{/tcb/finish middle} and
+ \refKey{/tcb/finish last} together.
+ \refKey{/tcb/finish} overwrites this key.
+\end{docTcbKey}
+
+\begin{docTcbKey}{finish unbroken and last}{=\meta{graphical code}}{no default, initially unset}
+ This is an abbreviation for setting
+ \refKey{/tcb/finish unbroken} and
+ \refKey{/tcb/finish last} together.
+ \refKey{/tcb/finish} overwrites this key.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2014-09-19]{finish first and middle}{=\meta{graphical code}}{no default, initially unset}
+ This is an abbreviation for setting
+ \refKey{/tcb/finish first} and
+ \refKey{/tcb/finish middle} together.
+ \refKey{/tcb/finish} overwrites this key.
+\end{docTcbKey}
+
+\clearpage
+\subsection{Hyper Option Keys}\label{subsec:hyper}
+All options of this section need the package |hyperref| \cite{rahtz:hyperref}
+to be loaded separately. All these options are implemented as
+\refKey{/tcb/finish} and can be disabled by \refKey{/tcb/no finish}.
+
+\begin{marker}
+If the package |hyperref| \cite{rahtz:hyperref} is not loaded or if
+the \refSkin{standard} skin is used, all hyper option are silently ignored.
+\end{marker}
+
+\begin{docTcbKey}[][doc new=2017-02-03]{hyperref}{=\meta{marker}}{no default, initially unset}
+ The whole \textit{frame} of a |tcolorbox| is make an active hyperlink for a
+ \meta{marker} which was given by |\label| or \refKey{/tcb/label} or \refKey{/tcb/phantomlabel}.
+ Such, the |tcolorbox| is made a clickable button (depending on the previewer).
+ \begin{dispExample*}{sbs,lefthand ratio=0.7}
+% \section{Library skins}\label{sec:skins}%
+\begin{tcolorbox}[beamer,colback=red!50,
+ hyperref=sec:skins]
+Jump to the heading of Section~\ref*{sec:skins}.
+\end{tcolorbox}
+ \end{dispExample*}
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2017-02-03]{hyperref interior}{=\meta{marker}}{no default, initially unset}
+ Identical to \refKey{/tcb/hyperref}, but only the \textit{interior} of a
+ |tcolorbox| is made a hyperlink (without frame and title).
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2017-02-03]{hyperref title}{=\meta{marker}}{no default, initially unset}
+ Identical to \refKey{/tcb/hyperref}, but only the \textit{title} of a
+ |tcolorbox| is made a hyperlink.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2017-02-03]{hyperref node}{=\marg{marker}\marg{node}}{no default, initially unset}
+ Identical to \refKey{/tcb/hyperref}, but only the given \tikzname\ \meta{node}
+ is made a hyperlink. This \meta{node} may be |frame|, |interior|, |title|, or
+ any other named node used for drawing the |tcolorbox|.
+ The \meta{node} may be defined inside
+ \refKey{/tcb/underlay}, \refKey{/tcb/overlay} or \refKey{/tcb/finish}.
+ If the later is used, define the node \emph{before} \refKey{/tcb/hyperref node}
+ is applied.
+ \begin{dispExample*}{sbs,lefthand ratio=0.7}
+% \section{Library skins}\label{sec:skins}%
+\begin{tcolorbox}[enhanced,colback=yellow!10,
+ underlay={\node[red,fill=red!30,inner sep=3mm]
+ (click) at (frame.center) {X};},
+ hyperref node={sec:skins}{click}]
+Jump to the heading of Section~\ref*{sec:skins}
+(X marks the click point).
+\end{tcolorbox}
+ \end{dispExample*}
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2017-02-03]{hyperlink}{=\meta{marker}}{no default, initially unset}
+ The whole \textit{frame} of a |tcolorbox| is make an active hyperlink for a
+ \meta{marker} which was given by |\hypertarget| or \refKey{/tcb/hypertarget}.
+ Such, the |tcolorbox| is made a clickable button (depending on the previewer).
+ \begin{dispExample*}{sbs,lefthand ratio=0.7}
+% \usepackage{hyperref}%
+\begin{tcolorbox}[enhanced,
+ colback=blue!10,colframe=blue!50!black,
+ hypertarget=hypertwinB,
+ hyperlink=hypertwinA,
+ title=Box B]
+Click me to jump to Box A.
+\end{tcolorbox}
+ \end{dispExample*}
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}[][doc new=2017-02-03]{hyperlink interior}{=\meta{marker}}{no default, initially unset}
+ Identical to \refKey{/tcb/hyperlink}, but only the \textit{interior} of a
+ |tcolorbox| is made a hyperlink (without frame and title).
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2017-02-03]{hyperlink title}{=\meta{marker}}{no default, initially unset}
+ Identical to \refKey{/tcb/hyperlink}, but only the \textit{title} of a
+ |tcolorbox| is made a hyperlink.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2017-02-03]{hyperlink node}{=\marg{marker}\marg{node}}{no default, initially unset}
+ Identical to \refKey{/tcb/hyperlink}, but only the given \tikzname\ \meta{node}
+ is made a hyperlink. This \meta{node} may be |frame|, |interior|, |title|, or
+ any other named node used for drawing the |tcolorbox|.
+ The \meta{node} may be defined inside
+ \refKey{/tcb/underlay}, \refKey{/tcb/overlay} or \refKey{/tcb/finish}.
+ If the later is used, define the node \emph{before} \refKey{/tcb/hyperlink node}
+ is applied.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2017-02-03]{hyperurl}{=\meta{url}}{no default, initially unset}
+ The whole \textit{frame} of a |tcolorbox| is make an active hyperlink for an
+ \meta{url} in the same manner as using |\href| or |\url|.
+ Such, the |tcolorbox| is made a clickable button (depending on the previewer).
+ \begin{dispExample*}{sbs,lefthand ratio=0.7}
+\begin{tcolorbox}[enhanced,colback=red!50,
+ hyperurl=http://www.ctan.org/pkg/tcolorbox]
+View CTAN with a browser.
+\end{tcolorbox}
+ \end{dispExample*}
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2017-02-03]{hyperurl interior}{=\meta{url}}{no default, initially unset}
+ Identical to \refKey{/tcb/hyperurl}, but only the \textit{interior} of a
+ |tcolorbox| is made a hyperlink (without frame and title).
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2017-02-03]{hyperurl title}{=\meta{url}}{no default, initially unset}
+ Identical to \refKey{/tcb/hyperurl}, but only the \textit{title} of a
+ |tcolorbox| is made a hyperlink.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2017-02-03]{hyperurl node}{=\marg{url}\marg{node}}{no default, initially unset}
+ Identical to \refKey{/tcb/hyperurl}, but only the given \tikzname\ \meta{node}
+ is made a hyperlink. This \meta{node} may be |frame|, |interior|, |title|, or
+ any other named node used for drawing the |tcolorbox|.
+ The \meta{node} may be defined inside
+ \refKey{/tcb/underlay}, \refKey{/tcb/overlay} or \refKey{/tcb/finish}.
+ If the later is used, define the node \emph{before} \refKey{/tcb/hyperurl node}
+ is applied.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2017-02-03]{hyperurl*}{=\marg{options}\marg{url}}{no default, initially unset}
+ Identical to \refKey{/tcb/hyperurl}, but additional |hyperref| \cite{rahtz:hyperref}
+ \meta{options} are applied.
+ \begin{dispExample*}{sbs,lefthand ratio=0.7}
+\begin{tcolorbox}[enhanced,colback=green!50,
+ hyperurl*={page=3,pdfnewwindow=true}%
+ {tcolorbox-example.pdf}]
+Open example file on Page~3.
+\end{tcolorbox}
+ \end{dispExample*}
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2017-02-03]{hyperurl* interior}{=\marg{options}\marg{url}}{no default, initially unset}
+ Identical to \refKey{/tcb/hyperurl interior}, but additional |hyperref| \cite{rahtz:hyperref}
+ \meta{options} are applied.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2017-02-03]{hyperurl* title}{=\marg{options}\marg{url}}{no default, initially unset}
+ Identical to \refKey{/tcb/hyperurl title}, but additional |hyperref| \cite{rahtz:hyperref}
+ \meta{options} are applied.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2017-02-03]{hyperurl* node}{=\marg{options}\marg{url}\marg{node}}{no default, initially unset}
+ Identical to \refKey{/tcb/hyperurl node}, but additional |hyperref| \cite{rahtz:hyperref}
+ \meta{options} are applied.
+\end{docTcbKey}
+
+
+
+\clearpage
+\subsection{Jigsaw Skin Variants}\label{subsec:skinjigsaw}
+As described in \Vref{sec:skincorekeys}, a |tcolorbox| is drawn by up to
+four \emph{engines}. Typically, the \emph{frame} engine fills the complete box area
+with color and the other engines fill certain areas with other colors.
+Finally, only the area which you see as \emph{frame} of the box will display
+the frame color. For most applications, this is a good approach.
+
+For certain boxes, a more delicate procedure is needed. E.g., if the box should
+be translucent, an already painted area cannot be made unpainted. Therefore,
+more elaborate frame engines saw holes into the frame where the interior area and
+optionally the title area will be painted.
+The resulting skins are called \emph{jigsaw} skins. For \refSkin{standard}
+and \refSkin{enhanced}, there are variants called \refSkin{standard jigsaw}
+and \refSkin{enhanced jigsaw}.
+
+
+\begin{dispExample*}{segmentation style={pattern=checkerboard light gray}}
+\newcommand{\ballexample}{\begin{tikzpicture}
+ \path[use as bounding box] (0,0.8) rectangle +(0.1,0.1);
+ \shadedraw [shading=ball] (0,0) circle (1cm);
+ \shadedraw [ball color=red] (3,-2.2) circle (1cm);
+\end{tikzpicture}}
+
+\tcbset{enhanced,colback=blue!5!white,
+ frame style={left color=red!75!black,right color=red!10!yellow},
+ fonttitle=\bfseries }
+
+\ballexample
+
+\begin{tcolorbox}[title=A normal box]
+ \lipsum[2]
+\end{tcolorbox}
+
+\ballexample
+
+\begin{tcolorbox}[title=A translucent jigsaw box,
+ enhanced jigsaw,opacityback=0.35]
+ \lipsum[2]
+\end{tcolorbox}
+\end{dispExample*}
+
+
+\begin{dispExample*}{segmentation style={pattern=checkerboard light gray}}
+\tcbset{enhanced,colback=red!10!white,coltitle=black,
+ frame style={left color=red!75!black,right color=red!10!yellow},
+ fonttitle=\bfseries,interior hidden,title hidden}
+
+\begin{tcolorbox}[title=A normal box with hidden interior and title]
+ This is a tcolorbox.
+\end{tcolorbox}
+
+\begin{tcolorbox}[enhanced jigsaw,
+ title=A jigsaw box with hidden interior and title]
+ This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+
+
+\begin{dispExample*}{segmentation style={pattern=checkerboard light gray}}
+\newtcolorbox{mybox}{skin=enhancedmiddle jigsaw,leftrule=5mm,rightrule=5mm,
+ boxsep=0mm,top=0mm,bottom=0mm,
+ frame style={top color=blue,bottom color=red},interior hidden}
+
+\begin{mybox}
+ \lipsum[2]
+\end{mybox}
+\end{dispExample*}
+
+
+\clearpage
+\subsection{Draft Mode}\label{subsec:draftmode}
+To reduce the compiliation time while drafting a document, the \emph{draft mode}
+can be applied. Basically, it changes all skins to \refSkin{spartan} and
+sets the \refKey{/tcb/fit algorithm} to |squeeze|. Especially,
+when fuzzy shadows are used, the speedup will be considerable high.
+
+\begin{marker}
+It is strongly recommended that the draft mode is \emph{not} used for the final document.
+Use \refSkin{spartan} directly, if you want to stay with it. The draft mode
+implementation may change in future.
+\end{marker}
+
+\begin{marker}
+Normally, switching to the draft mode should not alter the geometry of
+your document. Since overlays are deactivated, any code placed there
+(e.g. counter changes) is not executed anymore! Also, \refKey{/tcb/remember as}
+will not have any effect. You may exclude critical code with
+\refCom{tcbinterruptdraftmode} / \refCom{tcbcontinuedraftmode}
+from converting to draft mode.
+\end{marker}
+
+
+\begin{docCommand}{tcbstartdraftmode}{}
+ Any following |tcolorbox| code is put into \emph{draft mode}. All skin
+ settings are overruled with \refSkin{spartan}. Overlays, watermarks,
+ shadows, borderlines, and rounded corners are deactivated for all |tcolorbox|
+ layers.
+\end{docCommand}
+
+\begin{docCommand}{tcbstopdraftmode}{}
+ The \emph{draft mode} is deactivated for the following code.
+\end{docCommand}
+
+\begin{docCommand}{tcbinterruptdraftmode}{}
+ If the compilation is in \emph{draft mode}, the \emph{draft mode} is deactivated
+ until a following \refCom{tcbcontinuedraftmode} is detected.\par
+ If the compilation is not in \emph{draft mode}, nothing happens and a following
+ \refCom{tcbcontinuedraftmode} will not start the \emph{draft mode}.
+ \begin{marker}
+ The pair |\tcbinterruptdraftmode| and |\tcbcontinuedraftmode| cannot
+ be used nested.
+ \end{marker}
+\end{docCommand}
+
+\begin{docCommand}{tcbcontinuedraftmode}{}
+ Continues the \emph{draft mode} which was suspended by a preceding
+ \refCom{tcbinterruptdraftmode}. Nothing happens, if there was no draft
+ mode before \refCom{tcbinterruptdraftmode}.
+ \begin{marker}
+ Code, which is place between \refCom{tcbinterruptdraftmode} and
+ \refCom{tcbcontinuedraftmode} is shielded from \emph{draft mode}.
+ \end{marker}
+\end{docCommand}
+
+\enlargethispage*{2cm}
+\begin{docTcbKey}{draftmode}{\colOpt{=true\textbar false}}{default |true|, initially |false|}
+ If set to |true|, the \emph{draft mode} is started.
+ If set to |false|, the \emph{draft mode} is stopped.
+
+\begin{dispExample*}{}
+\newtcolorbox{mybeamer}[2][]{beamer,colback=Salmon!50!white,
+ colframe=FireBrick!75!black,adjusted title={#2},#1}
+
+\begin{mybeamer}{Beamer box}
+This box looks like a box provided by the \texttt{beamer} class.
+\end{mybeamer}\par\medskip
+\begin{mybeamer}[draftmode]{Beamer box}
+This box looks like a box provided by the \texttt{beamer} class.
+\end{mybeamer}
+\end{dispExample*}
+\end{docTcbKey}
+
+
+
+\clearpage
+\tcbset{skintable/.style={colframe=red!50!yellow!50!black,
+ colback=red!50!yellow!5!white,coltitle=red!50!yellow!3!white,
+ fonttitle=\bfseries,before=\par\smallskip,
+ title=Environment and engines for the skin '\texttt{#1}'}}
+
+\subsection{Skin Family 'standard'}\label{subsec:skinstandard}
+\begin{marker}Note that the option keys \refKey{/tcb/frame style},
+ \refKey{/tcb/interior style},
+ \refKey{/tcb/segmentation style}, and
+ \refKey{/tcb/title style} are not be applicable to the standard skin.
+ Also, watermarks (see Subsection \ref{subsec:watermarks})
+ are not usable with the standard skin.
+\end{marker}
+
+\begin{docSkin}{standard}
+ This is the standard skin from the core package. All drawing engines
+ are set to type |standard|. The drawing is based on |pgf| commands and
+ does not need the |tikz| package.
+\begin{tcolorbox}[skintable=standard]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |pgfpicture|\\
+ \refKey{/tcb/frame engine}: \> |standard|\\
+ \refKey{/tcb/interior titled engine}: \> |standard|\\
+ \refKey{/tcb/interior engine}: \> |standard|\\
+ \refKey{/tcb/segmentation engine}: \> |standard|\\
+ \refKey{/tcb/title engine}: \> |standard|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+\begin{docTcbKey}{standard}{}{style, no value}
+ This is an abbreviation for setting |skin=standard|.
+\end{docTcbKey}
+
+\begin{dispExample}
+\begin{tcbraster}[standard,raster equal height,raster columns=4,
+ colback=LightGreen,colframe=DarkGreen,colbacktitle=LimeGreen!75!DarkGreen,
+ left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
+ \begin{tcolorbox}
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+\end{tcbraster}
+\end{dispExample}
+
+
+\clearpage
+
+\begin{docSkin}{standard jigsaw}
+ This is the standard jigsaw skin from the core package. It differs from
+ the skin \refSkin{standard} by its frame engine, see \Vref{subsec:skinjigsaw}.
+\begin{tcolorbox}[skintable=standard jigsaw]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |pgfpicture|\\
+ \refKey{/tcb/frame engine}: \> |standardjigsaw|\\
+ \refKey{/tcb/interior titled engine}: \> |standard|\\
+ \refKey{/tcb/interior engine}: \> |standard|\\
+ \refKey{/tcb/segmentation engine}: \> |standard|\\
+ \refKey{/tcb/title engine}: \> |standard|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+\begin{docTcbKey}{standard jigsaw}{}{style, no value}
+ This is an abbreviation for setting |skin=standard jigsaw|.
+\end{docTcbKey}
+
+\begin{dispExample*}{segmentation style={pattern=checkerboard light gray}}
+\begin{tcbraster}[standard jigsaw,raster equal height,raster columns=4,
+ colback=LightGreen,colframe=DarkGreen,colbacktitle=LimeGreen!75!DarkGreen,
+ opacityframe=0.5,opacityback=0.5,opacitybacktitle=0.5,
+ left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
+ \begin{tcolorbox}
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+\end{tcbraster}
+\end{dispExample*}
+
+
+\clearpage
+\subsection{Skin Family 'enhanced'}
+\begin{marker}
+If you like the standard appearance of a |tcolorbox| but you want to
+have some 'enhanced' features, the |enhanced| skin is what you are looking for.
+\end{marker}
+
+\begin{docSkin}{enhanced}
+ This skin translates the drawing commands of the core package into |tikz|
+ path commands. Therefore, it allows all |tikz| high level options for
+ these paths and has more flexibility compared to the \refSkin{standard} skin.
+ You pay for this with some prolonged compilation time.
+ The |tikz| path options can
+ be given with the option keys
+ \refKey{/tcb/frame style},
+ \refKey{/tcb/interior style},
+ \refKey{/tcb/segmentation style}, and
+ \refKey{/tcb/title style}.
+\begin{tcolorbox}[skintable=enhanced]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |path|\\
+ \refKey{/tcb/interior titled engine}: \> |path|\\
+ \refKey{/tcb/interior engine}: \> |path|\\
+ \refKey{/tcb/segmentation engine}: \> |path|\\
+ \refKey{/tcb/title engine}: \> |path|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{docTcbKey}{enhanced}{}{style, no value}
+ This is an abbreviation for setting |skin=enhanced|.
+\end{docTcbKey}
+
+\begin{dispExample}
+\begin{tcbraster}[enhanced,raster equal height,raster columns=4,
+ colback=LightGreen,colframe=DarkGreen,colbacktitle=LimeGreen!75!DarkGreen,
+ left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
+ \begin{tcolorbox}
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+\end{tcbraster}
+\end{dispExample}
+
+\begin{dispExample}
+% \usetikzlibrary{shadings} % preamble
+\tcbset{skin=enhanced,fonttitle=\bfseries,
+ frame style={upper left=blue,upper right=red,lower left=yellow,lower right=green},
+ interior style={white,opacity=0.5},
+ segmentation style={black,solid,opacity=0.2,line width=1pt}}
+
+\begin{tcolorbox}[title=Nice box in rainbow colors]
+ With the 'enhanced' skin, it is quite easy to produce fancy looking effects.
+ \tcblower
+ Note that this is still a \texttt{tcolorbox}.
+\end{tcolorbox}
+\end{dispExample}
+
+
+\begin{dispExample}
+% \usetikzlibrary{decorations.pathmorphing} % preamble
+\tcbset{skin=enhanced,fonttitle=\bfseries,boxrule=1mm,
+ frame style={draw=FireBrick,fill=Salmon},drop fuzzy shadow,
+ interior style={draw=FireBrick,top color=Salmon!10,bottom color=Salmon!20},
+ segmentation style={draw=FireBrick,solid,decorate,
+ decoration={coil,aspect=0,segment length=10.1mm}}}
+
+\begin{tcblisting}{title=A listing box with shadow and some specials}
+Of course, skins can be used for listings also.
+\begin{equation}
+ \int\limits_1^2 \frac{1}{x}~dx = \ln(2).
+\end{equation}
+\end{tcblisting}
+\end{dispExample}
+
+
+\clearpage
+
+
+\begin{docTcbKey}{enhanced standard}{}{style, no value}
+ For unbreakable boxes, this is identical to using \refKey{/tcb/enhanced}.
+ But, for breakable boxes, the \emph{break sequence} is identical to the \refSkin{standard} skin,
+ see Section \ref{subsec:breaksequence} from page \pageref{subsec:breaksequence}.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{blank}{}{style, initially unset}
+ This style relies on the skin \refSkin{enhanced}. All drawing operations
+ are hidden and all margins are set to |0pt|. See \refKey{/tcb/blanker}
+ for switching off the drawing engines.
+\begin{dispExample}
+\begin{tcolorbox}[blank,watermark text=A blank box]
+\lipsum[1]
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+\clearpage
+\begin{docCommand}{tcbline}{}
+ Sometimes, a line is only a line. With \refCom{tcblower} you separate
+ the box content into two functional units. |\tcbline| draws only a line
+ which looks like the segmentation line between upper and lower part.
+ Furthermore, you can use |\tcbline| more than just once.
+ |\tcbline| always uses the |path| drawing engine. Therefore,
+ the \refKey{/tcb/segmentation style} can be applied.
+
+\begin{dispExample}
+\tcbset{enhanced,colframe=blue!50!black,colback=white}
+
+\begin{tcolorbox}[colupper=red!50!black,collower=green!50!black]
+\lipsum[1]
+\tcbline
+\lipsum[2]
+\tcblower
+\lipsum[3]
+\tcbline
+\lipsum[4]
+\end{tcolorbox}
+\end{dispExample}
+\end{docCommand}
+
+\begin{docCommand}{tcbline*}{}
+ Equivalent to \refCom{tcbline}, but in a breakable box, \refCom{tcbline*}
+ is removed if at a page/box break. Also, it is removed at the end
+ of a box.
+\end{docCommand}
+
+\clearpage
+\begin{docSkin}{enhancedfirst}
+This is a flavor of \refSkin{enhanced} which is used as a \emph{first} part
+in a break sequence for \refSkin{enhanced}.
+Nevertheless, this skin can be applied independently.
+\begin{tcolorbox}[skintable=enhancedfirst]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |pathfirst|\\
+ \refKey{/tcb/interior titled engine}: \> |pathfirst|\\
+ \refKey{/tcb/interior engine}: \> |pathfirst|\\
+ \refKey{/tcb/segmentation engine}: \> |path|\\
+ \refKey{/tcb/title engine}: \> |pathfirst|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{dispExample}
+\begin{tcbraster}[skin=enhancedfirst,raster equal height,raster columns=4,
+ colback=LightGreen,colframe=DarkGreen,colbacktitle=LimeGreen!75!DarkGreen,
+ left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
+ \begin{tcolorbox}
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+\end{tcbraster}
+\end{dispExample}
+
+
+
+\clearpage
+\begin{docSkin}{enhancedmiddle}
+This is a flavor of \refSkin{enhanced} which is used as a \emph{middle} part
+in a break sequence for \refSkin{enhanced}.
+Nevertheless, this skin can be applied independently.
+\begin{tcolorbox}[skintable=enhancedmiddle]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |pathmiddle|\\
+ \refKey{/tcb/interior titled engine}: \> |pathmiddle|\\
+ \refKey{/tcb/interior engine}: \> |pathmiddle|\\
+ \refKey{/tcb/segmentation engine}: \> |path|\\
+ \refKey{/tcb/title engine}: \> |pathmiddle|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{dispExample}
+\begin{tcbraster}[skin=enhancedmiddle,raster equal height,raster columns=4,
+ colback=LightGreen,colframe=DarkGreen,colbacktitle=LimeGreen!75!DarkGreen,
+ left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
+ \begin{tcolorbox}
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+\end{tcbraster}
+\end{dispExample}
+
+
+
+
+\clearpage
+\begin{docSkin}{enhancedlast}
+This is a flavor of \refSkin{enhanced} which is used as a \emph{last} part
+in a break sequence for \refSkin{enhanced}.
+Nevertheless, this skin can be applied independently.
+\begin{tcolorbox}[skintable=enhancedlast]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |pathlast|\\
+ \refKey{/tcb/interior titled engine}: \> |pathlast|\\
+ \refKey{/tcb/interior engine}: \> |pathlast|\\
+ \refKey{/tcb/segmentation engine}: \> |path|\\
+ \refKey{/tcb/title engine}: \> |pathlast|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+\begin{dispExample}
+\begin{tcbraster}[skin=enhancedlast,raster equal height,raster columns=4,
+ colback=LightGreen,colframe=DarkGreen,colbacktitle=LimeGreen!75!DarkGreen,
+ left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
+ \begin{tcolorbox}
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+\end{tcbraster}
+\end{dispExample}
+
+
+\clearpage
+\begin{docSkin}{enhanced jigsaw}
+ This is the jigsaw variant of skin \refSkin{enhanced}.
+ It differs by its frame engine, see \Vref{subsec:skinjigsaw}.
+\begin{tcolorbox}[skintable=enhanced jigsaw]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |pathjigsaw|\\
+ \refKey{/tcb/interior titled engine}: \> |path|\\
+ \refKey{/tcb/interior engine}: \> |path|\\
+ \refKey{/tcb/segmentation engine}: \> |path|\\
+ \refKey{/tcb/title engine}: \> |path|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+\begin{docTcbKey}{enhanced jigsaw}{}{style, no value}
+ This is an abbreviation for setting |skin=enhanced jigsaw|.
+\end{docTcbKey}
+
+\begin{dispExample*}{segmentation style={pattern=checkerboard light gray}}
+\begin{tcbraster}[enhanced jigsaw,raster equal height,raster columns=4,
+ colback=LightGreen,colframe=DarkGreen,colbacktitle=LimeGreen!75!DarkGreen,
+ opacityframe=0.5,opacityback=0.5,opacitybacktitle=0.5,
+ left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
+ \begin{tcolorbox}
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+\end{tcbraster}
+\end{dispExample*}
+
+
+\begin{docTcbKey}[][doc new=2017-07-01]{enhanced standard jigsaw}{}{style, no value}
+ For unbreakable boxes, this is identical to using \refKey{/tcb/enhanced jigsaw}.
+ But, for breakable boxes, the \emph{break sequence} is identical to the \refSkin{standard jigsaw} skin,
+ see Section \ref{subsec:breaksequence} from page \pageref{subsec:breaksequence}.
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docSkin}{enhancedfirst jigsaw}
+ This is the jigsaw variant of skin \refSkin{enhancedfirst}.
+ It differs by its frame engine, see \Vref{subsec:skinjigsaw}.
+\begin{tcolorbox}[skintable=enhancedfirst jigsaw]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |pathfirstjigsaw|\\
+ \refKey{/tcb/interior titled engine}: \> |pathfirst|\\
+ \refKey{/tcb/interior engine}: \> |pathfirst|\\
+ \refKey{/tcb/segmentation engine}: \> |path|\\
+ \refKey{/tcb/title engine}: \> |pathfirst|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{dispExample*}{segmentation style={pattern=checkerboard light gray}}
+\begin{tcbraster}[skin=enhancedfirst jigsaw,raster equal height,raster columns=4,
+ colback=LightGreen,colframe=DarkGreen,colbacktitle=LimeGreen!75!DarkGreen,
+ opacityframe=0.5,opacityback=0.5,opacitybacktitle=0.5,
+ left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
+ \begin{tcolorbox}
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+\end{tcbraster}
+\end{dispExample*}
+
+
+\clearpage
+\begin{docSkin}{enhancedmiddle jigsaw}
+ This is the jigsaw variant of skin \refSkin{enhancedmiddle}.
+ It differs by its frame engine, see \Vref{subsec:skinjigsaw}.
+\begin{tcolorbox}[skintable=enhancedmiddle jigsaw]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |pathmiddlejigsaw|\\
+ \refKey{/tcb/interior titled engine}: \> |pathmiddle|\\
+ \refKey{/tcb/interior engine}: \> |pathmiddle|\\
+ \refKey{/tcb/segmentation engine}: \> |path|\\
+ \refKey{/tcb/title engine}: \> |pathmiddle|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{dispExample*}{segmentation style={pattern=checkerboard light gray}}
+\begin{tcbraster}[skin=enhancedmiddle jigsaw,raster equal height,raster columns=4,
+ colback=LightGreen,colframe=DarkGreen,colbacktitle=LimeGreen!75!DarkGreen,
+ opacityframe=0.5,opacityback=0.5,opacitybacktitle=0.5,
+ left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
+ \begin{tcolorbox}
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+\end{tcbraster}
+\end{dispExample*}
+
+
+\begin{docTcbKey}{marker}{}{style, no value}
+ This styles relies on the skin \refSkin{enhancedmiddle jigsaw}. It is
+ intended to be used as an optical marker like a highlighter pen.
+\begin{dispExample}
+\begin{tcolorbox}[marker]
+\lipsum[2]
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+\clearpage
+
+\begin{dispListing*}{before upper={This examples demonstrates the creation of several
+ \emph{text marker} environments based on \refSkin{enhancedmiddle}.\par\medskip}}
+\tcbset{textmarker/.style={%
+ skin=enhancedmiddle jigsaw,breakable,parbox=false,
+ boxrule=0mm,leftrule=5mm,rightrule=5mm,boxsep=0mm,arc=0mm,outer arc=0mm,
+ left=3mm,right=3mm,top=1mm,bottom=1mm,toptitle=1mm,bottomtitle=1mm,oversize}}
+
+\newtcolorbox{yellow}{textmarker,colback=yellow!5!white,colframe=yellow}
+\newtcolorbox{orange}{textmarker,colback=DarkOrange!5!white,
+ colframe=DarkOrange!75!yellow}
+\newtcolorbox{red}{textmarker,colback=red!5!white,colframe=red}
+\newtcolorbox{blue}{textmarker,colback=DeepSkyBlue!5!white,colframe=DeepSkyBlue}
+\newtcolorbox{green}{textmarker,colback=Chartreuse!5!white,colframe=Chartreuse}
+\newtcolorbox{rainbow}{textmarker,interior hidden,
+ frame style={top color=blue,bottom color=red,middle color=green}}
+
+\begin{yellow}
+ \lipsum[1-3]
+\end{yellow}
+
+\begin{orange}
+ \lipsum[4]
+\end{orange}
+
+\begin{red}
+ \lipsum[5]
+\end{red}
+
+\begin{green}
+ \lipsum[6]
+\end{green}
+
+\begin{blue}
+ \lipsum[7]
+\end{blue}
+
+\begin{rainbow}
+ \lipsum[8]
+\end{rainbow}
+\end{dispListing*}
+{\tcbusetemp}
+
+
+\clearpage
+\begin{docSkin}{enhancedlast jigsaw}
+ This is the jigsaw variant of skin \refSkin{enhancedlast}.
+ It differs by its frame engine, see \Vref{subsec:skinjigsaw}.
+\begin{tcolorbox}[skintable=enhancedlast]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |pathlastjigsaw|\\
+ \refKey{/tcb/interior titled engine}: \> |pathlast|\\
+ \refKey{/tcb/interior engine}: \> |pathlast|\\
+ \refKey{/tcb/segmentation engine}: \> |path|\\
+ \refKey{/tcb/title engine}: \> |pathlast|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{dispExample*}{segmentation style={pattern=checkerboard light gray}}
+\begin{tcbraster}[skin=enhancedlast jigsaw,raster equal height,raster columns=4,
+ colback=LightGreen,colframe=DarkGreen,colbacktitle=LimeGreen!75!DarkGreen,
+ opacityframe=0.5,opacityback=0.5,opacitybacktitle=0.5,
+ left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
+ \begin{tcolorbox}
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+\end{tcbraster}
+\end{dispExample*}
+
+
+
+\clearpage
+\subsection{Skin Family 'bicolor'}
+\begin{docSkin}{bicolor}
+ This skin is quite similar to the \refSkin{standard} and \refSkin{enhanced} skin.
+ But instead of a segmentation line, the optional lower part of the box is filled with a
+ different color or drawn with a different style.
+\begin{tcolorbox}[skintable=bicolor]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |path|\\
+ \refKey{/tcb/interior titled engine}: \> \emph{special}\\
+ \refKey{/tcb/interior engine}: \> \emph{special}\\
+ \refKey{/tcb/segmentation engine}: \> \emph{special}\\
+ \refKey{/tcb/title engine}: \> |path|
+ \end{tabbing}
+\end{tcolorbox}
+ \begin{itemize}
+ \item The most basic usage of this skin is to set the background color of
+ the lower part by \refKey{/tcb/colbacklower} and all other options like for
+ the \refSkin{standard} skin.
+\begin{dispExample}
+\begin{tcolorbox}[skin=bicolor,title=The title,
+ colframe=FireBrick!75!black,colback=Salmon!50!white,colbacklower=Salmon]
+ The upper part.
+ \tcblower
+ The lower part.
+\end{tcolorbox}
+\end{dispExample}
+ \item The more advanced usage of this skin is to apply the \refKey{/tcb/frame style}
+ and the \refKey{/tcb/interior style} like for
+ the \refSkin{enhanced} skin. Also, the \refKey{/tcb/segmentation style} can be
+ used, but it is applied to the whole lower part.
+\begin{dispExample}
+\begin{tcolorbox}[skin=bicolor,title=The title,
+ frame style={top color=FireBrick,
+ bottom color=FireBrick!15!white,draw=black},
+ interior style={left color=Salmon,right color=Salmon!50!white},
+ segmentation style={right color=Salmon,left color=Salmon!50!white}]
+ The upper part.
+ \tcblower
+ The lower part.
+\end{tcolorbox}
+\end{dispExample}
+ \end{itemize}
+\end{docSkin}
+
+\begin{docTcbKey}{bicolor}{}{style, no value}
+ This is an abbreviation for setting |skin=bicolor|.
+\end{docTcbKey}
+
+
+\begin{dispExample}
+\begin{tcbraster}[bicolor,raster equal height,raster columns=4,
+ colback=LightGreen,colframe=DarkGreen,colbacklower=LimeGreen!75!LightGreen,
+ colbacktitle=LimeGreen!75!DarkGreen,
+ left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
+ \begin{tcolorbox}
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+\end{tcbraster}
+\end{dispExample}
+
+\begin{docTcbKey}{colbacklower}{=\meta{color}}{no default, initially \texttt{black!15!white}}
+ Sets the background \meta{color} of the lower part. It depends on the skin,
+ if this value is used.
+\end{docTcbKey}
+
+\begin{dispExample}
+\tcbset{gitexample/.style={listing and comment,comment={#1},
+ skin=bicolor,boxrule=1mm,fonttitle=\bfseries,coltitle=black,
+ frame style={draw=black,left color=Gold,right color=Goldenrod!50!Gold},
+ colback=black,colbacklower=Goldenrod!75!Gold,
+ colupper=white,collower=black,
+ listing options={language={bash},aboveskip=0pt,belowskip=0pt,nolol,
+ basicstyle=\ttfamily\bfseries,extendedchars=true}}}
+
+\begin{tcblisting}{title={Snapshot of the staging area},
+ gitexample={The option '-a' automatically stages all tracked and modified
+ files before the commit.\par
+ This can be combined with the message option '-m'
+ as seen in the third line.}}
+git commit
+git commit -a
+git commit -am 'changes to my example'
+\end{tcblisting}
+\end{dispExample}
+
+
+\clearpage
+
+
+\begin{docSkin}{bicolorfirst}
+This is a flavor of \refSkin{bicolor} which is used as a \emph{first} part
+in a break sequence for \refSkin{bicolor}.
+Nevertheless, this skin can be applied independently.
+\begin{tcolorbox}[skintable=bicolorfirst]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |pathfirst|\\
+ \refKey{/tcb/interior titled engine}: \> \emph{special}\\
+ \refKey{/tcb/interior engine}: \> \emph{special}\\
+ \refKey{/tcb/segmentation engine}: \> \emph{special}\\
+ \refKey{/tcb/title engine}: \> |pathfirst|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+\begin{dispExample}
+\begin{tcbraster}[skin=bicolorfirst,raster equal height,raster columns=4,
+ colback=LightGreen,colframe=DarkGreen,colbacklower=LimeGreen!75!LightGreen,
+ colbacktitle=LimeGreen!75!DarkGreen,
+ left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
+ \begin{tcolorbox}
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+\end{tcbraster}
+\end{dispExample}
+
+
+\clearpage
+\begin{docSkin}{bicolormiddle}
+This is a flavor of \refSkin{bicolor} which is used as a \emph{middle} part
+in a break sequence for \refSkin{bicolor}.
+Nevertheless, this skin can be applied independently.
+\begin{tcolorbox}[skintable=bicolormiddle]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |pathmiddle|\\
+ \refKey{/tcb/interior titled engine}: \> \emph{special}\\
+ \refKey{/tcb/interior engine}: \> \emph{special}\\
+ \refKey{/tcb/segmentation engine}: \> \emph{special}\\
+ \refKey{/tcb/title engine}: \> |pathmiddle|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{dispExample}
+\begin{tcbraster}[skin=bicolormiddle,raster equal height,raster columns=4,
+ colback=LightGreen,colframe=DarkGreen,colbacklower=LimeGreen!75!LightGreen,
+ colbacktitle=LimeGreen!75!DarkGreen,
+ left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
+ \begin{tcolorbox}
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+\end{tcbraster}
+\end{dispExample}
+
+
+\clearpage
+\begin{docSkin}{bicolorlast}
+This is a flavor of \refSkin{bicolor} which is used as a \emph{last} part
+in a break sequence for \refSkin{bicolor}.
+Nevertheless, this skin can be applied independently.
+\begin{tcolorbox}[skintable=bicolorlast]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |pathlast|\\
+ \refKey{/tcb/interior titled engine}: \> \emph{special}\\
+ \refKey{/tcb/interior engine}: \> \emph{special}\\
+ \refKey{/tcb/segmentation engine}: \> \emph{special}\\
+ \refKey{/tcb/title engine}: \> |pathlast|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{dispExample}
+\begin{tcbraster}[skin=bicolorlast,raster equal height,raster columns=4,
+ colback=LightGreen,colframe=DarkGreen,colbacklower=LimeGreen!75!LightGreen,
+ colbacktitle=LimeGreen!75!DarkGreen,
+ left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
+ \begin{tcolorbox}
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+\end{tcbraster}
+\end{dispExample}
+
+
+
+\clearpage
+\subsection{Skin Family 'tile'}
+\begin{docSkin}[doc new=2016-02-25]{tile}
+ This skin is a variant of skin \refSkin{bicolor}. Especially, the
+ optional lower part of the box is colored by \refKey{/tcb/colbacklower}.
+ The main difference to \refSkin{bicolor} is that \refSkin{tile} has no
+ frame.
+\begin{tcolorbox}[skintable=tile]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |empty|\\
+ \refKey{/tcb/interior titled engine}: \> \emph{special}\\
+ \refKey{/tcb/interior engine}: \> \emph{special}\\
+ \refKey{/tcb/segmentation engine}: \> \emph{special}\\
+ \refKey{/tcb/title engine}: \> |path|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+\begin{docTcbKey}[][doc new=2016-02-25]{tile}{}{style, no value}
+ This is an abbreviation for setting |skin=tile|.
+ \begin{marker}It also changes the geometry and some style options.\end{marker}
+\end{docTcbKey}
+
+
+\begin{dispExample}
+\begin{tcbraster}[tile,raster equal height,raster columns=4,
+ colback=LightGreen,colframe=DarkGreen,colbacklower=LimeGreen!75!LightGreen,
+ colbacktitle=LimeGreen!75!DarkGreen,
+ left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
+ \begin{tcolorbox}
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+\end{tcbraster}
+\end{dispExample}
+
+
+\clearpage
+\begin{docSkin}[doc new=2016-02-25]{tilefirst}
+This is a flavor of \refSkin{tile} which is used as a \emph{first} part
+in a break sequence for \refSkin{tile}.
+Nevertheless, this skin can be applied independently.
+\begin{tcolorbox}[skintable=tilefirst]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |empty|\\
+ \refKey{/tcb/interior titled engine}: \> \emph{special}\\
+ \refKey{/tcb/interior engine}: \> \emph{special}\\
+ \refKey{/tcb/segmentation engine}: \> \emph{special}\\
+ \refKey{/tcb/title engine}: \> |pathfirst|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+\begin{dispExample}
+\begin{tcbraster}[skin=tilefirst,raster equal height,raster columns=4,
+ colback=LightGreen,colframe=DarkGreen,colbacklower=LimeGreen!75!LightGreen,
+ colbacktitle=LimeGreen!75!DarkGreen,
+ left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm,boxrule=0pt]
+ \begin{tcolorbox}
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+\end{tcbraster}
+\end{dispExample}
+
+
+\clearpage
+\begin{docSkin}[doc new=2016-02-25]{tilemiddle}
+This is a flavor of \refSkin{tile} which is used as a \emph{middle} part
+in a break sequence for \refSkin{tile}.
+Nevertheless, this skin can be applied independently.
+\begin{tcolorbox}[skintable=tilemiddle]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |empty|\\
+ \refKey{/tcb/interior titled engine}: \> \emph{special}\\
+ \refKey{/tcb/interior engine}: \> \emph{special}\\
+ \refKey{/tcb/segmentation engine}: \> \emph{special}\\
+ \refKey{/tcb/title engine}: \> |pathmiddle|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{dispExample}
+\begin{tcbraster}[skin=tilemiddle,raster equal height,raster columns=4,
+ colback=LightGreen,colframe=DarkGreen,colbacklower=LimeGreen!75!LightGreen,
+ colbacktitle=LimeGreen!75!DarkGreen,
+ left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm,boxrule=0pt]
+ \begin{tcolorbox}
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+\end{tcbraster}
+\end{dispExample}
+
+
+\clearpage
+\begin{docSkin}[doc new=2016-02-25]{tilelast}
+This is a flavor of \refSkin{tile} which is used as a \emph{last} part
+in a break sequence for \refSkin{tile}.
+Nevertheless, this skin can be applied independently.
+\begin{tcolorbox}[skintable=tilelast]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |empty|\\
+ \refKey{/tcb/interior titled engine}: \> \emph{special}\\
+ \refKey{/tcb/interior engine}: \> \emph{special}\\
+ \refKey{/tcb/segmentation engine}: \> \emph{special}\\
+ \refKey{/tcb/title engine}: \> |pathlast|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{dispExample}
+\begin{tcbraster}[skin=tilelast,raster equal height,raster columns=4,
+ colback=LightGreen,colframe=DarkGreen,colbacklower=LimeGreen!75!LightGreen,
+ colbacktitle=LimeGreen!75!DarkGreen,
+ left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm,boxrule=0pt]
+ \begin{tcolorbox}
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+\end{tcbraster}
+\end{dispExample}
+
+
+
+\clearpage
+\subsection{Skin Family 'beamer'}
+
+\begin{docSkin}{beamer}
+ This skin resembles boxes known from the |beamer| class and therefore is
+ called 'beamer'. It uses the normal colors from the core package but shades
+ them a little bit. To use this skin, the |tikz| library |shadings|
+ has to be included in the preamble by:
+\begin{dispListing}
+\usetikzlibrary{shadings}
+\end{dispListing}
+\begin{tcolorbox}[skintable=beamer]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |path|\\
+ \refKey{/tcb/interior titled engine}: \> \emph{special}\\
+ \refKey{/tcb/interior engine}: \> \emph{special}\\
+ \refKey{/tcb/segmentation engine}: \> \emph{special}\\
+ \refKey{/tcb/title engine}: \> |path|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+
+\begin{docTcbKey}{beamer}{}{style, no value}
+ This is an abbreviation for setting |skin=beamer|.
+ \begin{marker}It also changes the geometry and some style options.\end{marker}
+\end{docTcbKey}
+
+
+
+\begin{dispExample}
+\begin{tcbraster}[beamer,raster equal height,raster columns=4,
+ colback=LightGreen,colframe=DarkGreen,
+ left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
+ \begin{tcolorbox}
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+\end{tcbraster}
+\end{dispExample}
+
+
+
+\begin{dispExample}
+\begin{tcolorbox}[beamer,colback=Salmon!50!white,colframe=FireBrick!75!black,
+ adjusted title=A colored box with the 'beamer' skin]
+This box looks like a box provided by the \texttt{beamer} class.
+\end{tcolorbox}
+\end{dispExample}
+
+
+\begin{dispExample}
+\begin{tcolorbox}[beamer,colframe=blue,colback=black,
+ watermark graphics=lichtspiel.jpg,
+ coltext=white,watermark opacity=0.75,watermark stretch=1.0,
+ title=Beamer Box with background picture]
+\lipsum[1]
+\end{tcolorbox}
+\end{dispExample}
+
+
+\begin{dispExample}
+\newtcolorbox{myblock}[2][]{%
+ beamer,breakable,colback=LightBlue,colframe=DarkBlue,#1,title=#2}%
+
+\begin{myblock}{Beamerish \texttt{block}: \texttt{myblock}}
+\lipsum[1]
+\end{myblock}
+\end{dispExample}
+
+
+\clearpage
+\begin{docSkin}{beamerfirst}
+This is a flavor of \refSkin{beamer} which is used as a \emph{first} part
+in a break sequence for \refSkin{beamer}.
+Nevertheless, this skin can be applied independently.
+\begin{tcolorbox}[skintable=beamerfirst]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |pathfirst|\\
+ \refKey{/tcb/interior titled engine}: \> \emph{special}\\
+ \refKey{/tcb/interior engine}: \> \emph{special}\\
+ \refKey{/tcb/segmentation engine}: \> \emph{special}\\
+ \refKey{/tcb/title engine}: \> |pathfirst|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{dispExample}
+\begin{tcbraster}[beamer,skin=beamerfirst,raster equal height,raster columns=4,
+ colback=LightGreen,colframe=DarkGreen,
+ left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
+ \begin{tcolorbox}
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+\end{tcbraster}
+\end{dispExample}
+
+
+\clearpage
+
+\begin{docSkin}{beamermiddle}
+This is a flavor of \refSkin{beamer} which is used as a \emph{middle} part
+in a break sequence for \refSkin{beamer}.
+Nevertheless, this skin can be applied independently.
+\begin{tcolorbox}[skintable=beamermiddle]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |pathmiddle|\\
+ \refKey{/tcb/interior titled engine}: \> \emph{special}\\
+ \refKey{/tcb/interior engine}: \> \emph{special}\\
+ \refKey{/tcb/segmentation engine}: \> \emph{special}\\
+ \refKey{/tcb/title engine}: \> |pathmiddle|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{dispExample}
+\begin{tcbraster}[beamer,skin=beamermiddle,raster equal height,raster columns=4,
+ colback=LightGreen,colframe=DarkGreen,
+ left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
+ \begin{tcolorbox}
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+\end{tcbraster}
+\end{dispExample}
+
+
+\clearpage
+\begin{docSkin}{beamerlast}
+This is a flavor of \refSkin{beamer} which is used as a \emph{last} part
+in a break sequence for \refSkin{beamer}.
+Nevertheless, this skin can be applied independently.
+\begin{tcolorbox}[skintable=beamerlast]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |pathlast|\\
+ \refKey{/tcb/interior titled engine}: \> \emph{special}\\
+ \refKey{/tcb/interior engine}: \> \emph{special}\\
+ \refKey{/tcb/segmentation engine}: \> \emph{special}\\
+ \refKey{/tcb/title engine}: \> |pathlast|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+\begin{dispExample}
+\begin{tcbraster}[beamer,skin=beamerlast,raster equal height,raster columns=4,
+ colback=LightGreen,colframe=DarkGreen,
+ left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
+ \begin{tcolorbox}
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+\end{tcbraster}
+\end{dispExample}
+
+
+
+\clearpage
+\subsection{Skin Family 'widget'}
+\begin{docSkin}{widget}
+ This skin uses the normal colors from the core package but shades
+ them a little bit. To use this skin, the |tikz| library |shadings|
+ has to be included in the preamble by:
+\begin{dispListing}
+\usetikzlibrary{shadings}
+\end{dispListing}
+The appearance of the skin can be controlled by \refKey{/tcb/frame style},
+\refKey{/tcb/interior style}, and \refKey{/tcb/segmentation style},
+if needed.
+\begin{tcolorbox}[skintable=widget]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |path|\\
+ \refKey{/tcb/interior titled engine}: \> |path|\\
+ \refKey{/tcb/interior engine}: \> |path|\\
+ \refKey{/tcb/segmentation engine}: \> \emph{special}\\
+ \refKey{/tcb/title engine}: \> \emph{special}
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{docTcbKey}{widget}{}{style, no value}
+ This is an abbreviation for setting |skin=widget|.
+ \begin{marker}It also changes the geometry and some style options.\end{marker}
+\end{docTcbKey}
+
+
+\begin{dispExample}
+\begin{tcbraster}[widget,raster equal height,raster columns=4,
+ colback=LightGreen,colframe=DarkGreen,
+ left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
+ \begin{tcolorbox}
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+\end{tcbraster}
+\end{dispExample}
+
+
+\begin{dispExample}
+\begin{tcolorbox}[widget,colback=Salmon!50!white,colframe=FireBrick!75!black,
+ adjusted title=A colored box with the 'widget' skin]
+This is my content.
+\end{tcolorbox}
+\end{dispExample}
+
+
+
+\begin{docSkin}{widgetfirst}
+This is a flavor of \refSkin{widget} which is used as a \emph{first} part
+in a break sequence for \refSkin{widget}.
+Nevertheless, this skin can be applied independently.
+\begin{tcolorbox}[skintable=widgetfirst]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |pathfirst|\\
+ \refKey{/tcb/interior titled engine}: \> |pathfirst|\\
+ \refKey{/tcb/interior engine}: \> |pathfirst|\\
+ \refKey{/tcb/segmentation engine}: \> \emph{special}\\
+ \refKey{/tcb/title engine}: \> \emph{special}
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{dispExample}
+\begin{tcbraster}[widget,skin=widgetfirst,raster equal height,raster columns=4,
+ colback=LightGreen,colframe=DarkGreen,
+ left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
+ \begin{tcolorbox}
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+\end{tcbraster}
+\end{dispExample}
+
+\clearpage
+
+\begin{docSkin}{widgetmiddle}
+This is a flavor of \refSkin{widget} which is used as a \emph{middle} part
+in a break sequence for \refSkin{widget}.
+Nevertheless, this skin can be applied independently.
+\begin{tcolorbox}[skintable=widgetmiddle]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |pathmiddle|\\
+ \refKey{/tcb/interior titled engine}: \> |pathmiddle|\\
+ \refKey{/tcb/interior engine}: \> |pathmiddle|\\
+ \refKey{/tcb/segmentation engine}: \> \emph{special}\\
+ \refKey{/tcb/title engine}: \> \emph{special}
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+\begin{dispExample}
+\begin{tcbraster}[widget,skin=widgetmiddle,raster equal height,raster columns=4,
+ colback=LightGreen,colframe=DarkGreen,
+ left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
+ \begin{tcolorbox}
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+\end{tcbraster}
+\end{dispExample}
+
+
+\clearpage
+\begin{docSkin}{widgetlast}
+This is a flavor of \refSkin{widget} which is used as a \emph{last} part
+in a break sequence for \refSkin{widget}.
+Nevertheless, this skin can be applied independently.
+\begin{tcolorbox}[skintable=widgetlast]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |pathlast|\\
+ \refKey{/tcb/interior titled engine}: \> |pathlast|\\
+ \refKey{/tcb/interior engine}: \> |pathlast|\\
+ \refKey{/tcb/segmentation engine}: \> \emph{special}\\
+ \refKey{/tcb/title engine}: \> \emph{special}
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{dispExample}
+\begin{tcbraster}[widget,skin=widgetlast,raster equal height,raster columns=4,
+ colback=LightGreen,colframe=DarkGreen,
+ left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
+ \begin{tcolorbox}
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+\end{tcbraster}
+\end{dispExample}
+
+
+
+
+\clearpage
+\subsection{Skin Family 'empty'}
+
+\begin{docSkin}{empty}
+ This skin sets all engines to |empty|, i.\,e.\ nothing is drawn at all.
+ Therefore, this skin is a good starting point to create a complete
+ new style by yourself.
+\begin{tcolorbox}[skintable=empty]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |empty|\\
+ \refKey{/tcb/interior titled engine}: \> |empty|\\
+ \refKey{/tcb/interior engine}: \> |empty|\\
+ \refKey{/tcb/segmentation engine}: \> |empty|\\
+ \refKey{/tcb/title engine}: \> |empty|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{docTcbKey}{empty}{}{style, no value}
+ This is an abbreviation for setting |skin=empty|.
+\end{docTcbKey}
+
+\begin{dispExample}
+\begin{tcbraster}[empty,raster equal height,raster columns=4,
+ coltitle=Navy,borderline={2pt}{0pt}{black!10!white},
+ left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
+ \begin{tcolorbox}
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+\end{tcbraster}
+\end{dispExample}
+
+
+\clearpage
+\begin{docTcbKey}{blanker}{}{style, initially unset}
+ This style relies on the skin \refSkin{empty}. All engines
+ are set to empty and all margins are set to |0pt|.
+ In contrast to \refKey{/tcb/blank}, the graphical paths are
+ not constructed with exception of the geometry nodes.
+\begin{dispExample}
+\begin{tcolorbox}[blanker,watermark text=A blank box]
+\lipsum[1]
+\end{tcolorbox}
+\end{dispExample}
+
+\begin{dispExample}
+% \tcbuselibrary{fitting}
+\newtcboxfit{\mybox}[1]{blanker,width=4cm,height=7cm,top=4pt,
+ watermark text=#1}
+
+\begin{tabular}{|c|c|c|}\hline
+A & B & C\\\hline
+\mybox{A}{\lipsum[1]} & \mybox{B}{\lipsum[2]} & \mybox{C}{\lipsum[3]}\\\hline
+\end{tabular}
+\end{dispExample}
+\end{docTcbKey}
+
+
+
+\clearpage
+\begin{docTcbKey}{blankest}{}{style, initially unset}
+ This style extends \refKey{/tcb/blanker}.
+ All engines are set to empty and all margins are set to |0pt|.
+ In contrast to \refKey{/tcb/blanker}, also title, shadow, underlay,
+ overlay, finish and borderline are removed.
+
+\begin{dispExample}
+% \tcbuselibrary{raster}
+\begin{tcbraster}[raster columns=3,raster equal height,
+ title=Box \thetcbrasternum,
+ enhanced,size=small,colframe=red!50!black,colback=red!10!white,
+ coltitle=yellow!85!black,
+ drop fuzzy shadow,watermark text={Box \thetcbrasternum},
+ borderline={.25mm}{-0.5mm}{green!40!black},
+ finish={\begin{tcbclipframe}\draw[blue,opacity=0.1,line width=1cm]
+ (frame.south west) -- (frame.north east);\end{tcbclipframe}},
+ ]
+ \begin{tcolorbox}\lipsum[4]\end{tcolorbox}
+ \begin{tcolorbox}[blanker]\lipsum[4]\end{tcolorbox}
+ \begin{tcolorbox}[blankest]\lipsum[4]\end{tcolorbox}
+\end{tcbraster}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docSkin}{emptyfirst}
+This is a flavor of \refSkin{empty} which is used as a \emph{first} part
+in a break sequence for \refSkin{empty}.
+Nevertheless, this skin can be applied independently.
+\begin{tcolorbox}[skintable=emptyfirst]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |empty|\\
+ \refKey{/tcb/interior titled engine}: \> |empty|\\
+ \refKey{/tcb/interior engine}: \> |empty|\\
+ \refKey{/tcb/segmentation engine}: \> |empty|\\
+ \refKey{/tcb/title engine}: \> |empty|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{dispExample}
+\begin{tcbraster}[empty,skin=emptyfirst,raster equal height,raster columns=4,
+ coltitle=Navy,borderline={2pt}{0pt}{black!10!white},
+ left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
+ \begin{tcolorbox}
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+\end{tcbraster}
+\end{dispExample}
+
+
+\clearpage
+
+\begin{docSkin}{emptymiddle}
+This is a flavor of \refSkin{empty} which is used as a \emph{middle} part
+in a break sequence for \refSkin{empty}.
+Nevertheless, this skin can be applied independently.
+\begin{tcolorbox}[skintable=emptymiddle]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |empty|\\
+ \refKey{/tcb/interior titled engine}: \> |empty|\\
+ \refKey{/tcb/interior engine}: \> |empty|\\
+ \refKey{/tcb/segmentation engine}: \> |empty|\\
+ \refKey{/tcb/title engine}: \> |empty|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{dispExample}
+\begin{tcbraster}[empty,skin=emptymiddle,raster equal height,raster columns=4,
+ coltitle=Navy,borderline={2pt}{0pt}{black!10!white},
+ left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
+ \begin{tcolorbox}
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+\end{tcbraster}
+\end{dispExample}
+
+
+\clearpage
+\begin{docSkin}{emptylast}
+This is a flavor of \refSkin{empty} which is used as a \emph{last} part
+in a break sequence for \refSkin{empty}.
+Nevertheless, this skin can be applied independently.
+\begin{tcolorbox}[skintable=emptylast]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |empty|\\
+ \refKey{/tcb/interior titled engine}: \> |empty|\\
+ \refKey{/tcb/interior engine}: \> |empty|\\
+ \refKey{/tcb/segmentation engine}: \> |empty|\\
+ \refKey{/tcb/title engine}: \> |empty|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+\begin{dispExample}
+\begin{tcbraster}[empty,skin=emptylast,raster equal height,raster columns=4,
+ coltitle=Navy,borderline={2pt}{0pt}{black!10!white},
+ left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
+ \begin{tcolorbox}
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+\end{tcbraster}
+\end{dispExample}
+
+\clearpage
+\begin{dispListing*}{breakable,phantomlabel=freeboxexample,before upper={This example demonstrates
+a breakable customized box. Here, we define an environment |freebox|.
+The first application of |freebox| produces an unbroken |tcolorbox|.
+The box is drawn by the code given by \refKey{/tcb/frame code}
+and \refKey{/tcb/interior code}.\par
+The second application of |freebox| is broken into several parts which
+are drawn by the codes given by
+\refKey{/tcb/skin first is subskin of},
+\refKey{/tcb/skin middle is subskin of}, and
+\refKey{/tcb/skin last is subskin of}.
+\par\bigskip
+}}
+% Preamble:
+%\usepackage{tikz,lipsum}
+%\tcbuselibrary{skins,breakable}
+\tikzset{coltria/.style={fill=red!15!white}}
+
+\newtcolorbox{freebox}[1][]{empty,breakable,leftrule=5mm,left=2mm,
+ frame style={fill,top color=red!75!black,bottom color=red!75!black,middle color=red},
+ colback=yellow!50!white,
+ watermark color=red!50!yellow!75!white,
+ watermark text on=unbroken is unbroken box,
+ watermark text on=first is first part,
+ watermark text on=middle is middle part,
+ watermark text on=last is last part,
+ % code for unbroken boxes:
+ frame code={\path[tcb fill frame] (frame.south west)--(frame.north west)
+ --([xshift=-5mm]frame.north east)--([yshift=-5mm]frame.north east)
+ --([yshift=5mm]frame.south east)--([xshift=-5mm]frame.south east)--cycle; },
+ interior code={\path[tcb fill interior] (interior.south west)--(interior.north west)
+ --([xshift=-4.8mm]interior.north east)--([yshift=-4.8mm]interior.north east)
+ --([yshift=4.8mm]interior.south east)--([xshift=-4.8mm]interior.south east)
+ --cycle; },
+ % code for the first part of a break sequence:
+ skin first is subskin of={emptyfirst}{%
+ frame code={\path[tcb fill frame] (frame.south west)--(frame.north west)
+ --([xshift=-5mm]frame.north east)--([yshift=-5mm]frame.north east)
+ --(frame.south east)--cycle;
+ \path[coltria] ([xshift=2.5mm,yshift=1mm]frame.south west) -- +(120:2mm)
+ -- +(60:2mm)-- cycle; },
+ interior code={\path[tcb fill interior] (interior.south west|-frame.south)
+ --(interior.north west)--([xshift=-4.8mm]interior.north east)
+ --([yshift=-4.8mm]interior.north east)--(interior.south east|-frame.south)
+ --cycle; },
+ },%
+ % code for the middle part of a break sequence:
+ skin middle is subskin of={emptymiddle}{%
+ frame code={\path[tcb fill frame] (frame.south west)--(frame.north west)
+ --(frame.north east)--(frame.south east)--cycle;
+ \path[coltria] ([xshift=2.5mm,yshift=-1mm]frame.north west) -- +(240:2mm)
+ -- +(300:2mm) -- cycle;
+ \path[coltria] ([xshift=2.5mm,yshift=1mm]frame.south west) -- +(120:2mm)
+ -- +(60:2mm) -- cycle;
+ },
+ interior code={\path[tcb fill interior] (interior.south west|-frame.south)
+ --(interior.north west|-frame.north)--(interior.north east|-frame.north)
+ --(interior.south east|-frame.south)--cycle; },
+ },
+ % code for the last part of a break sequence:
+ skin last is subskin of={emptylast}{%
+ frame code={\path[tcb fill frame] (frame.south west)--(frame.north west)
+ --(frame.north east)--([yshift=5mm]frame.south east)
+ --([xshift=-5mm]frame.south east)--cycle;
+ \path[coltria] ([xshift=2.5mm,yshift=-1mm]frame.north west) -- +(240:2mm)
+ -- +(300:2mm) -- cycle;
+ },
+ interior code={\path[tcb fill interior] (interior.south west)
+ --(interior.north west|-frame.north)--(interior.north east|-frame.north)
+ --([yshift=4.8mm]interior.south east)--([xshift=-4.8mm]interior.south east)
+ --cycle; },
+ },
+ #1}
+
+\begin{freebox}
+\lipsum[1]
+\end{freebox}
+
+\begin{freebox}
+\lipsum[1-12]
+\end{freebox}
+\end{dispListing*}
+{\tcbusetemp}
+
+
+\clearpage
+
+\subsection{Skin 'spartan'}\label{subsec:spartan}
+
+\begin{docSkin}{spartan}
+ This skin is quite \ldots\ spartan.
+ It supports no rounded corners, no overlays, no shadows, no borderlines,
+ and no finishes. The only exception are underlays.
+ One cannot do very fancy things with this skin, but it compiles very fast.
+ Therefore, the |spartan| skin is
+ used for the draft mode, see \Vref{subsec:draftmode}.
+ Nevertheless, it can be used as a normal skin.
+
+\begin{tcolorbox}[skintable=spartan]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |spartan|\\
+ \refKey{/tcb/interior titled engine}: \> |spartan|\\
+ \refKey{/tcb/interior engine}: \> |spartan|\\
+ \refKey{/tcb/segmentation engine}: \> |spartan|\\
+ \refKey{/tcb/title engine}: \> |spartan|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{docTcbKey}{spartan}{}{style, no value}
+ This is an abbreviation for setting |skin=spartan|.
+\end{docTcbKey}
+
+
+\begin{dispExample}
+\begin{tcbraster}[spartan,raster equal height,raster columns=4,
+ colback=LightGreen,colframe=DarkGreen,colbacktitle=LimeGreen!75!DarkGreen,
+ left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
+ \begin{tcolorbox}
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+\end{tcbraster}
+\end{dispExample}
+
+
+\clearpage
+
+\subsection{Skin 'draft'}\label{subsec:draft}
+
+\begin{docSkin}{draft}
+ This skin is intended to be used while drafting new geometric settings
+ for a |tcolorbox|.
+\begin{tcolorbox}[skintable=draft]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> \emph{special}\\
+ \refKey{/tcb/interior titled engine}: \> \emph{special}\\
+ \refKey{/tcb/interior engine}: \> \emph{special}\\
+ \refKey{/tcb/segmentation engine}: \> |path|\\
+ \refKey{/tcb/title engine}: \> |path|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+\begin{docTcbKey}{draft}{}{style, no value}
+ This is an abbreviation for setting |skin=draft|.
+\end{docTcbKey}
+
+
+\begin{dispExample}
+\begin{tcbraster}[draft,raster equal height,raster columns=4,
+ colback=LightGreen,colframe=DarkGreen,colbacktitle=LimeGreen!75!DarkGreen,
+ left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
+ \begin{tcolorbox}
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+\end{tcbraster}
+\end{dispExample}
+
+
+\begin{dispExample}
+\vspace*{3mm}
+\begin{tcolorbox}[draft,title=A colored box with the 'draft' skin]
+\lipsum[1-3]
+\tcblower
+\lipsum[4-6]
+\end{tcolorbox}
+\end{dispExample}
+
+
+
+\clearpage
+\subsection{Skin Family 'freelance'}
+\begin{marker}
+This skin family 'freelance' is deprecated with |tcolorbox| 3.00.
+It is not longer needed, because
+\refKey{/tcb/frame code},
+\refKey{/tcb/interior code},
+\refKey{/tcb/interior titled code}, and
+\refKey{/tcb/title code}
+can be applied to every skin now. In this sense, everything has become
+\emph{freelance} now.\par
+For users of \refKey{/tcb/freelance}: Old code should continue to work. There may be
+exceptions for breakable freelance boxes under certain circumstances.
+For new code, use \refKey{/tcb/empty} or \refKey{/tcb/enhanced} where
+you would have used \refKey{/tcb/freelance} before.
+\end{marker}
+
+\begin{docSkin}{freelance}
+ This skin gives full freedom for the appearance of the |tcolorbox|.
+ All drawing engines are set to type |freelance|; they use the |tikz| package
+ and compute the \refKey{/tcb/geometry nodes}.
+ %This skin is useful for boxes which should differ much from the normal
+ %appearance. Note that this difference has to be programmed by the user.
+ %The drawing code can be given
+ %with the following option keys. As default value, the code from the |standard|
+ %skin is set.
+\begin{tcolorbox}[skintable=freelance]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |freelance|\\
+ \refKey{/tcb/interior titled engine}: \> |freelance|\\
+ \refKey{/tcb/interior engine}: \> |freelance|\\
+ \refKey{/tcb/segmentation engine}: \> |freelance|\\
+ \refKey{/tcb/title engine}: \> |freelance|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+\begin{docTcbKey}{freelance}{}{style, no value}
+ This is an abbreviation for setting |skin=freelance|.
+\end{docTcbKey}
+
+\begin{docSkin}{freelancefirst}
+ This skin equals \refSkin{freelance} with exception of the break sequence,
+ see \Vref{subsec:breaksequence}.
+ %It is used as first part of the
+ %break sequence of \refSkin{freelance}. \refKey{/tcb/extend freelancefirst}
+ %can be used to customize this part.
+\end{docSkin}
+
+\begin{docSkin}{freelancemiddle}
+ This skin equals \refSkin{freelance} with exception of the break sequence,
+ see \Vref{subsec:breaksequence}.
+ %It is used as middle part of the
+ %break sequence of \refSkin{freelance}. \refKey{/tcb/extend freelancemiddle}
+ %can be used to customize this part.
+\end{docSkin}
+
+\begin{docSkin}{freelancelast}
+ This skin equals \refSkin{freelance} with exception of the break sequence,
+ see \Vref{subsec:breaksequence}.
+ %It is used as last part of the
+ %break sequence of \refSkin{freelance}. \refKey{/tcb/extend freelancelast}
+ %can be used to customize this part.
+\end{docSkin}
+
+
+\begin{docTcbKey}{extend freelance}{=\meta{options}}{no default, initially empty}
+The \meta{options} are added to the skin definition of \refSkin{freelance}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{extend freelancefirst}{=\meta{options}}{no default, initially empty}
+The \meta{options} are added to the skin definition of \refSkin{freelancefirst} which
+is used as first part of the break sequence of \refSkin{freelance}.
+See \refKey{/tcb/skin first is subskin of} for a substitute of this key.
+\end{docTcbKey}
+
+\begin{docTcbKey}{extend freelancemiddle}{=\meta{options}}{no default, initially empty}
+The \meta{options} are added to the skin definition of \refSkin{freelancemiddle} which
+is used as middle part of the break sequence of \refSkin{freelance}.
+See \refKey{/tcb/skin middle is subskin of} for a substitute of this key.
+\end{docTcbKey}
+
+\begin{docTcbKey}{extend freelancelast}{=\meta{options}}{no default, initially empty}
+The \meta{options} are added to the skin definition of \refSkin{freelancelast} which
+is used as last part of the break sequence of \refSkin{freelance}.
+See \refKey{/tcb/skin last is subskin of} for a substitute of this key.
+\end{docTcbKey}
+
+
+
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.technical.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.technical.tex
new file mode 100644
index 0000000000..2d637f4678
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.technical.tex
@@ -0,0 +1,769 @@
+% !TeX root = tcolorbox.tex
+% include file of tcolorbox.tex (manual of the LaTeX package tcolorbox)
+\clearpage
+\section{Technical Overview and Customization}\label{sec:technical}%
+\tcbset{external/prefix=external/technical_}%
+This section provides a technical overview of the skin concept of |tcolorbox|.
+For most applications of |tcolorbox|, one will not need to know the bells and
+whistles described herein.
+You may proceed to \Vref{sec:skins} where the customization options
+for most users are documented.
+
+The following explanations also cover options and settings from the \mylib{skins} library,
+see \Vref{sec:skins}.
+
+\subsection{Skins and Drawing Engines}\label{sec:skincorekeys}
+From a technical point of view, a \emph{skin} is a style definition for the
+appearance of a |tcolorbox|. The core package provides some additional
+option keys for skins but only two skins called \refSkin{standard}
+and \refSkin{standard jigsaw}.
+The \mylib{skins} library adds several more skins. To change to a skin, only one
+option from the core package has to be set.
+
+\begin{docTcbKey}{skin}{=\meta{name}}{style, no default, initially \texttt{standard}}
+ Sets the current skin to \meta{name}. This is a style definition which sets all the following
+ keys, i.\,e.\ for many use cases there is nothing more to do.
+\begin{dispExample}
+\tcbset{colback=Salmon!50!white,colframe=FireBrick!75!black,
+ width=(\linewidth-8mm)/2,before=,after=\hfill,equal height group=ske}
+
+\begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+\end{tcolorbox}
+\begin{tcolorbox}[skin=beamer,beamer,adjusted title=My title]
+ This is my content.
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}{skin first}{=\meta{name}}{style, no default, initially \texttt{standard}}
+ If the box is set to be \refKey{/tcb/breakable} and \emph{is} broken actually,
+ then the skin for the \emph{first} part of the break sequence
+ is set to \meta{name}, see Subsection \ref{subsec:breaksequence} on page \pageref{subsec:breaksequence}.
+ Typically, this key is set by a \refKey{/tcb/skin}.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{skin middle}{=\meta{name}}{style, no default, initially \texttt{standard}}
+ If the box is set to be \refKey{/tcb/breakable} and \emph{is} broken actually,
+ then the skin for the \emph{middle} parts (if any) of the break sequence
+ is set to \meta{name}, see Subsection \ref{subsec:breaksequence} on page \pageref{subsec:breaksequence}.
+ Typically, this key is set by a \refKey{/tcb/skin}.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{skin last}{=\meta{name}}{style, no default, initially \texttt{standard}}
+ If the box is set to be \refKey{/tcb/breakable} and \emph{is} broken actually,
+ then the skin for the \emph{last} part of the break sequence
+ is set to \meta{name}, see Subsection \ref{subsec:breaksequence} on page \pageref{subsec:breaksequence}.
+ Typically, this key is set by a \refKey{/tcb/skin}.
+\end{docTcbKey}
+
+
+\clearpage
+
+\begin{docTcbKey}{graphical environment}{=\meta{name}}{no default, initially \texttt{pgfpicture}}
+ Sets the graphical environment for the |tcolorbox| to \meta{name}.
+ Feasible values are |pgfpicture| and |tikzpicture| or environments which
+ inherit from one of these two. This key is set by a \refKey{/tcb/skin} and
+ may seldom be used directly.
+\end{docTcbKey}
+
+The skin of a |tcolorbox| is drawn by up to four \emph{engines}.
+Afterwards, the text content is drawn which is not part of a skin.
+The four steps are:
+\begin{enumerate}
+\item The \emph{frame} of the box, drawn by \refKey{/tcb/frame engine}.
+\item The \emph{interior} of the box. The interior of a box with title is
+ drawn differently from a box without title.
+ \refKey{/tcb/interior titled engine} or \refKey{/tcb/interior engine}
+ is used to draw the interior.
+\item The \emph{segmentation} (line) of the box, if there is a lower part;
+ drawn by \refKey{/tcb/segmentation engine}.
+\item The \emph{title area} of the box, if there is a title and
+ \refKey{/tcb/title filled} is set to |true|; drawn
+ by \refKey{/tcb/title engine}.
+\end{enumerate}
+
+%Every engine for the up to four steps can be set to one of the following types:
+%\begin{enumerate}
+%\item\docValue{standard}: the original code from the core package.
+%\item\docValue{path}: a |tikz| path which can be controlled by options.
+%\item\docValue{pathfirst}: a |tikz| path which can be controlled by options.
+%\item\docValue{pathmiddle}: a |tikz| path which can be controlled by options.
+%\item\docValue{pathlast}: a |tikz| path which can be controlled by options.
+%\item\docValue{freelance}: arbitrary user code.
+%\item\docValue{spartan}: a quite spartan code.
+%\end{enumerate}
+%\clearpage
+
+\begin{docTcbKey}{frame engine}{=\meta{name}}{no default, initially \texttt{standard}}
+ Sets the \emph{frame} drawing engine for a box to \meta{name}.
+ Typically, this key is set by a \refKey{/tcb/skin}.
+ Feasible values for \meta{name} are:
+ \begin{itemize}
+ \item\docValue{standard}: the original code from the core package,
+ \item\docValue{path}: a |tikz| path which is controlled by \refKey{/tcb/frame style},
+ \item\docValue{pathjigsaw}: a |tikz| path which is controlled by \refKey{/tcb/frame style},
+ \item\docValue{pathfirst}: a |tikz| path which is controlled by \refKey{/tcb/frame style},
+ \item\docValue{pathfirstjigsaw}: a |tikz| path which is controlled by \refKey{/tcb/frame style},
+ \item\docValue{pathmiddle}: a |tikz| path which is controlled by \refKey{/tcb/frame style},
+ \item\docValue{pathmiddlejigsaw}: a |tikz| path which is controlled by \refKey{/tcb/frame style},
+ \item\docValue{pathlast}: a |tikz| path which is controlled by \refKey{/tcb/frame style},
+ \item\docValue{pathlastjigsaw}: a |tikz| path which is controlled by \refKey{/tcb/frame style},
+ \item\docValue{freelance}: deprecated.
+ \item\docValue{spartan}: a quite spartan code.
+ \item\docValue{empty}: draw nothing.
+\end{itemize}
+\end{docTcbKey}
+
+\begin{docTcbKey}{interior titled engine}{=\meta{name}}{no default, initially \texttt{standard}}
+ Sets the \emph{interior} drawing engine for a titled box to \meta{name}.
+ Typically, this key is set by a \refKey{/tcb/skin}.
+ Feasible values for \meta{name} are:
+ \begin{itemize}
+ \item\docValue{standard}: the original code from the core package,
+ \item\docValue{path}: a |tikz| path which is controlled by \refKey{/tcb/interior style},
+ \item\docValue{pathfirst}: a |tikz| path which is controlled by \refKey{/tcb/interior style},
+ \item\docValue{pathmiddle}: a |tikz| path which is controlled by \refKey{/tcb/interior style},
+ \item\docValue{pathlast}: a |tikz| path which is controlled by \refKey{/tcb/interior style},
+ \item\docValue{freelance}: deprecated.
+ \item\docValue{spartan}: a quite spartan code.
+ \item\docValue{empty}: draw nothing.
+ \end{itemize}
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}{interior engine}{=\meta{name}}{no default, initially \texttt{standard}}
+ Sets the \emph{interior} drawing engine for an untitled box to \meta{name}.
+ Typically, this key is set by a \refKey{/tcb/skin}.
+ Feasible values for \meta{name} are:
+ \begin{itemize}
+ \item\docValue{standard}: the original code from the core package,
+ \item\docValue{path}: a |tikz| path which is controlled by \refKey{/tcb/interior style},
+ \item\docValue{pathfirst}: a |tikz| path which is controlled by \refKey{/tcb/interior style},
+ \item\docValue{pathmiddle}: a |tikz| path which is controlled by \refKey{/tcb/interior style},
+ \item\docValue{pathlast}: a |tikz| path which is controlled by \refKey{/tcb/interior style},
+ \item\docValue{freelance}: deprecated.
+ \item\docValue{spartan}: a quite spartan code.
+ \item\docValue{empty}: draw nothing.
+ \end{itemize}
+\end{docTcbKey}
+
+\begin{docTcbKey}{segmentation engine}{=\meta{name}}{no default, initially \texttt{standard}}
+ Sets the \emph{segmentation} (line) drawing engine for a box to \meta{name}.
+ Typically, this key is set by a \refKey{/tcb/skin}.
+ Feasible values for \meta{name} are:
+ \begin{itemize}
+ \item\docValue{standard}: the original code from the core package,
+ \item\docValue{path}: a |tikz| path which is controlled by \refKey{/tcb/segmentation style},
+ \item\docValue{freelance}: deprecated.
+ \item\docValue{spartan}: a quite spartan code.
+ \item\docValue{empty}: draw nothing.
+ \end{itemize}
+\end{docTcbKey}
+
+\begin{docTcbKey}{title engine}{=\meta{name}}{no default, initially \texttt{standard}}
+ Sets the \emph{title area} drawing engine for a titled box to \meta{name}.
+ Typically, this key is set by a \refKey{/tcb/skin}.
+ Feasible values for \meta{name} are:
+ \begin{itemize}
+ \item\docValue{standard}: the original code from the core package,
+ \item\docValue{path}: a |tikz| path which is controlled by \refKey{/tcb/title style},
+ \item\docValue{pathfirst}: a |tikz| path which is controlled by \refKey{/tcb/title style},
+ \item\docValue{pathmiddle}: a |tikz| path which is controlled by \refKey{/tcb/title style},
+ \item\docValue{pathlast}: a |tikz| path which is controlled by \refKey{/tcb/title style},
+ \item\docValue{freelance}: deprecated.
+ \item\docValue{spartan}: a quite spartan code.
+ \item\docValue{empty}: draw nothing.
+ \end{itemize}
+\end{docTcbKey}
+
+\begin{marker}
+After an engine is set to an initializing value, the resulting graphical
+code can be changed using code option keys, see \Vref{subsec:addcodeoptions}.
+\end{marker}
+
+\clearpage
+\begin{docTcbKey}{geometry nodes}{\colOpt{=true\textbar false}}{default |true|, initially |false|}
+ If set to |true|, up to four |tikz| nodes are defined for a |tcolorbox|
+ which are named |frame|, |interior|, |segmentation|, and |title|. These nodes
+ describe the boundaries of the equally named parts of a |tcolorbox|.
+ They are used by most engines based on \tikzname.
+ Typically, this key is set automatically by a \refKey{/tcb/skin}.
+\begin{dispExample}
+\tcbset{colback=Salmon!50!white,colframe=FireBrick!75!black,
+ width=(\linewidth-8mm)/2,before=,after=\hfill,equal height group=geon}
+
+\begin{tcolorbox}[adjusted title=The title]
+ The upper part.\tcblower The lower part.
+\end{tcolorbox}
+\begin{tcolorbox}[enhanced,adjusted title=The title,
+ frame code={\path[draw=red,fill=red!25]
+ (frame.south west) rectangle (frame.north east);},
+ interior titled code={\path[draw=blue,fill=blue!25]
+ (interior.south west) rectangle (interior.north east);},
+ segmentation code={\path[draw=green,fill=green!25]
+ (segmentation.south west) rectangle (segmentation.north east);},
+ title code={\path[draw=black,fill=brown!75!black]
+ (title.south west) rectangle (title.north east);}]
+ The upper part.\tcblower The lower part.
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+
+
+
+
+
+\clearpage
+\subsection{Code Option Keys}\label{subsec:addcodeoptions}
+The following code options are applicable for all skins.
+%which
+%use engines of type |freelance|.
+%Especially, the skin \refSkin{freelance} supports \emph{all} of them,
+%\refSkin{standard} and \refSkin{enhanced} \emph{none} of them.
+The used \meta{graphical code} can be any |pgf| code. For all skins
+with exception of \refSkin{standard}
+and \refSkin{standard jigsaw}, the \meta{graphical code} can also
+be any \tikzname\ code.
+
+
+\begin{docTcbKey}{frame code}{\colOpt{=\meta{graphical code}}}{code, default from |standard|}
+ The given \meta{graphical code} is used for drawing the \emph{frame} of the box.
+ %This option is available only if the \refKey{/tcb/frame engine} is set to |freelance|.
+\begin{dispExample}
+\tcbset{colback=red!5!white,colframe=red!75!black}
+
+\begin{tcolorbox}[enhanced,frame code={
+ \foreach \n in {north east,north west,south east,south west}
+ {\path [fill=red!75!black] (interior.\n) circle (3mm); }; }]
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{frame empty}{}{style, no value}
+ This is a shortcut for setting \refKey{/tcb/frame code} to empty.
+ This option removes the drawing of the frame.
+ Alternatively, use \refKey{/tcb/frame hidden}.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{interior titled code}{\colOpt{=\meta{graphical code}}}{code, default from |standard|}
+ The given \meta{graphical code} is used
+ for drawing the \emph{interior} of the box, if the box comes with a title.
+ %This option is available only if the \refKey{/tcb/interior titled engine} is set to |freelance|.
+\begin{dispExample}
+\tcbset{colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries}
+
+\begin{tcolorbox}[enhanced,title=My title,interior titled code={
+ \path[draw=red!5!white,line width=5mm,line cap=round]
+ ([xshift=3mm,yshift=-3mm]interior.north west)
+ --([xshift=-3mm,yshift=3mm]interior.south east)
+ ([xshift=3mm,yshift=3mm]interior.south west)
+ --([xshift=-3mm,yshift=-3mm]interior.north east);}]
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{interior titled empty}{}{style, no value}
+ This is a shortcut for setting \refKey{/tcb/interior titled code} to empty.
+ This option removes the drawing of the untitled interior.
+ Alternatively, use \refKey{/tcb/interior hidden}.
+\end{docTcbKey}
+
+
+
+\clearpage
+\begin{docTcbKey}{interior code}{\colOpt{=\meta{graphical code}}}{code, default from |standard|}
+ The given \meta{graphical code} is used
+ for drawing the \emph{interior} of the box, if the box is without a title.%\\
+ %This option is available only if the \refKey{/tcb/interior engine} is set to |freelance|.
+\begin{dispExample}
+\tcbset{colback=red!5!white,colframe=red!75!black}
+
+\begin{tcolorbox}[enhanced,interior code={
+ \path[draw=red!5!white,line width=5mm,line cap=round]
+ ([xshift=3mm,yshift=-3mm]interior.north west)
+ --([xshift=-3mm,yshift=3mm]interior.south east)
+ ([xshift=3mm,yshift=3mm]interior.south west)
+ --([xshift=-3mm,yshift=-3mm]interior.north east);}]
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}{interior empty}{}{style, no value}
+ This is a shortcut for setting \refKey{/tcb/interior code} to empty.
+ This option removes the drawing of the interior.
+ Alternatively, use \refKey{/tcb/interior hidden}.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{segmentation code}{\colOpt{=\meta{graphical code}}}{code, default from |standard|}
+ The given \meta{graphical code} is used for drawing the
+ \emph{segmentation} area of the box.%\\
+ %This option is available only if the \refKey{/tcb/segmentation engine} is set to |freelance|.
+\begin{dispExample}
+\tcbset{colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries}
+
+\begin{tcolorbox}[enhanced,title=My title,segmentation code={
+ \path[top color=red!5!white,bottom color=red!5!white,middle color=blue]
+ (segmentation.south west) rectangle (segmentation.north east);}]
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{segmentation empty}{}{style, no value}
+ This is a shortcut for setting \refKey{/tcb/segmentation code} to empty.
+ This option removes the drawing of the segmentation line.
+ Alternatively, use \refKey{/tcb/segmentation hidden}.
+\end{docTcbKey}
+
+
+
+\clearpage
+\begin{docTcbKey}{title code}{\colOpt{=\meta{graphical code}}}{code, default from |standard|}
+ The given \meta{graphical code} is used for drawing the
+ \emph{title} area of the box.
+ %\\
+ %This option is available only if the \refKey{/tcb/title engine} is set to |freelance|.
+\begin{dispExample}
+\tcbset{colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries,
+ coltitle=black}
+
+\begin{tcolorbox}[enhanced,title=My title,title code={
+ \path[draw=yellow,solid,decorate,line width=2mm,
+ decoration={coil,aspect=0,segment length=10.1mm}]
+ ([xshift=1mm]title.west) -- ([xshift=-1mm]title.east);}]
+This is a \textbf{tcolorbox}.
+\tcblower
+This is the lower part.
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{title empty}{}{style, no value}
+ This is a shortcut for setting \refKey{/tcb/title code} to empty.
+ This option removes the drawing of the title area.
+ Alternatively, use \refKey{/tcb/title hidden}.
+\end{docTcbKey}
+
+\clearpage
+\subsection{Subskins}\label{subsec:subskins}
+A subskin is a new \refKey{/tcb/skin} based on an existing skin which
+is extended or changed.
+
+\begin{marker}
+Never use geometry settings or bounding box options inside a subskin definition!
+If one skin is replaced by another skin, the overall bounding box should stay
+constant. Especially, if a skin is used for a breakable box, unpredictable
+and unpleasant results could arise otherwise. If you want to change the
+geometry also, use an additional style. See the skin \refSkin{beamer} and
+the style \refKey{/tcb/beamer} as pattern.
+\end{marker}
+
+\begin{docCommand}{tcbsubskin}{\marg{name}\marg{base skin}\marg{options}}
+ Creates a new skin \meta{name} which inherits all properties of an
+ existing \meta{base skin} plus the given \meta{options}.
+ The new skin \meta{name} can be used as value for the keys
+ \refKey{/tcb/skin},
+ \refKey{/tcb/skin first},
+ \refKey{/tcb/skin middle}, and
+ \refKey{/tcb/skin last}.
+ As \meta{base skin}, one can take \refSkin{standard}, \refSkin{empty},
+ \refSkin{enhanced}, or any skin from the \mylib{skins} library,
+ see \Vref{sec:skins}.
+
+\begin{dispExample}
+% \tcbuselibrary{skins}
+\tcbsubskin{mycross}{empty}{frame code={%
+ \draw[red,line width=5pt] (frame.south west)--(frame.north east);
+ \draw[red,line width=5pt] (frame.north west)--(frame.south east);},
+ skin first=mycross,skin middle=mycross,skin last=mycross }
+
+\begin{tcolorbox}[skin=mycross]
+ This is my content.
+\end{tcolorbox}
+\end{dispExample}
+
+\end{docCommand}
+
+
+\begin{docTcbKey}{skin first is subskin of}{=\marg{base skin}\marg{options}}{no default, initially unset}
+ Creates a new unnamed skin which inherits all properties of an
+ existing \meta{base skin} plus the given \meta{options}.
+ This skin is set as \refKey{/tcb/skin first}.\\
+ See a detailed example on page~\pageref{freeboxexample}.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{skin middle is subskin of}{=\marg{base skin}\marg{options}}{no default, initially unset}
+ Creates a new unnamed skin which inherits all properties of an
+ existing \meta{base skin} plus the given \meta{options}.
+ This skin is set as \refKey{/tcb/skin middle}.\\
+ See a detailed example on page~\pageref{freeboxexample}.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{skin last is subskin of}{=\marg{base skin}\marg{options}}{no default, initially unset}
+ Creates a new unnamed skin which inherits all properties of an
+ existing \meta{base skin} plus the given \meta{options}.
+ This skin is set as \refKey{/tcb/skin last}.\\
+ See a detailed example on page~\pageref{freeboxexample}.
+\end{docTcbKey}
+
+
+\clearpage
+\subsection{Drawing Scheme}\label{subsec:tcolorboxdrawing}
+
+\bgroup
+
+Depending on the complexity of a |tcolorbox| definition, the resulting box
+is drawn in a more or less complex series of steps.
+
+To document and demonstrate these drawing steps, we consider the
+following box definition:
+
+\begin{dispListing}
+\newtcolorbox{testbox}[1][]{enhanced,title=Test Box,
+ boxrule=1mm,titlerule=0.5mm,colframe=blue!50!black,
+ interior style={top color=blue!20!green!50!white,bottom color=blue!20!yellow!50!white},
+ colbacktitle=blue!50!green!90!white,segmentation style={solid},
+ fonttitle=\bfseries,drop fuzzy shadow,borderline={0.3mm}{0.35mm}{yellow!50!white},
+ underlay={\path[fill image opacity=0.15,fill image scale=0.9,
+ fill stretch picture={\draw[blue,line width=2mm] circle (1);}]
+ (interior.south west) rectangle (interior.north east);},
+ watermark text={Watermark},watermark color={green!20!white},
+ finish={\begin{tcbclipframe}
+ \path[bottom color=black,top color=black!50!white,opacity=0.1]
+ (frame.south west) -- (frame.south east) -- (frame.north east) -- cycle;
+ \path[top color=white,bottom color=black!50!white,opacity=0.1]
+ (frame.south west) -- (frame.north east) -- (frame.north west) -- cycle;
+ \end{tcbclipframe}},#1}
+\end{dispListing}
+\tcbusetemp
+
+For this definition, we get the maximal number of drawing steps:
+
+\newtcolorbox{itembox}{oversize,enhanced,frame empty,segmentation empty,colback=white,middle=2mm,boxsep=0pt,
+ fuzzy halo=0.5mm with blue!15!white,
+ before lower=\raggedright\begin{itemize},after lower=\end{itemize}}
+
+\tcbset{finishcomment/.style={
+ finish={\node[fill=white,draw=black!50!white,rounded corners] at (frame.center) {#1};}
+}}
+
+
+\begin{itembox}
+\begin{testbox}[frame empty,interior titled empty,title empty,segmentation empty,
+ no shadow,no borderline,no underlay,no overlay,no finish,opacityupper=0,opacitylower=0,opacitytitle=0,
+ drop fuzzy shadow=red!75!white,
+ finishcomment={1.~shadow}]
+\lipsum[2]
+\tcblower
+Lower part
+\end{testbox}
+\tcblower
+\item Section~\ref{subsec:shadows} on page \pageref{subsec:shadows}.
+\end{itembox}
+
+\begin{itembox}
+\begin{testbox}[interior titled empty,title empty,segmentation empty,
+ no borderline,no underlay,no overlay,no finish,opacityupper=0,opacitylower=0,opacitytitle=0,
+ colframe=red!75!white,
+ finishcomment={2.~frame}]
+\lipsum[2]
+\tcblower
+Lower part
+\end{testbox}
+\tcblower
+\item\refKey{/tcb/colframe}, \refKey{/tcb/opacityframe}
+\item\refKey{/tcb/frame code}
+\item\refKey{/tcb/frame style}
+\end{itembox}
+
+
+\begin{itembox}
+\begin{testbox}[title empty,segmentation empty,
+ no borderline,no underlay,no overlay,no finish,opacityupper=0,opacitylower=0,opacitytitle=0,
+ colback=red!75!white,
+ finishcomment={3.~interior}]
+\lipsum[2]
+\tcblower
+Lower part
+\end{testbox}
+\tcblower
+\item\refKey{/tcb/colback}, \refKey{/tcb/opacityback}
+\item\refKey{/tcb/interior code}, \refKey{/tcb/interior titled code}
+\item\refKey{/tcb/interior style}
+\end{itembox}
+
+
+\begin{itembox}
+\begin{testbox}[segmentation empty,
+ no borderline,no underlay,no overlay,no finish,opacityupper=0,opacitylower=0,opacitytitle=0,
+ colbacktitle=red!75!white,
+ finishcomment={4.~title area}]
+\lipsum[2]
+\tcblower
+Lower part
+\end{testbox}
+\tcblower
+\item\refKey{/tcb/colbacktitle}, \refKey{/tcb/opacitybacktitle}
+\item\refKey{/tcb/title code}
+\item\refKey{/tcb/title style}
+\end{itembox}
+
+
+\begin{itembox}
+\begin{testbox}[
+ no borderline,no underlay,no overlay,no finish,opacityupper=0,opacitylower=0,opacitytitle=0,
+ segmentation style={solid,red!75!white},
+ finishcomment={5.~segmentation}]
+\lipsum[2]
+\tcblower
+Lower part
+\end{testbox}
+\tcblower
+\item\refKey{/tcb/lower separated}
+\item\refKey{/tcb/segmentation code}
+\item\refKey{/tcb/segmentation style}
+\end{itembox}
+
+
+\begin{itembox}
+\begin{testbox}[
+ no borderline,no underlay,no overlay,no finish,opacityupper=0,opacitylower=0,opacitytitle=0,
+ borderline={0.3mm}{0.35mm}{red!75!white},
+ finishcomment={6.~border line}]
+\lipsum[2]
+\tcblower
+Lower part
+\end{testbox}
+\tcblower
+\item\Vref{subsec:borderline}
+\end{itembox}
+
+
+\begin{itembox}
+\begin{testbox}[
+ no underlay,no overlay,no finish,opacityupper=0,opacitylower=0,opacitytitle=0,
+ underlay={\path[opacity=0.15,fill image scale=0.9,
+ fill stretch picture={\draw[red,line width=2mm] circle (1);}]
+ (interior.south west) rectangle (interior.north east);},
+ finishcomment={7.~underlay}]
+\lipsum[2]
+\tcblower
+Lower part
+\end{testbox}
+\tcblower
+\item\Vref{subsec:skinboxedtitle}
+\item\Vref{subsec:skinunderlay}
+\end{itembox}
+
+
+\begin{itembox}
+\begin{testbox}[
+ no finish,opacityupper=0,opacitylower=0,opacitytitle=0,
+ watermark color={red!75!white},
+ finishcomment={8.~overlay}]
+\lipsum[2]
+\tcblower
+Lower part
+\end{testbox}
+\tcblower
+\item\Vref{subsec:overlays}
+\item\Vref{subsec:watermarks}
+\end{itembox}
+
+
+\begin{itembox}
+\begin{testbox}[
+ no finish,
+ colupper=red!75!white,coltitle=red!75!white,collower=red!75!white,
+ finishcomment={9.~text content}]
+\lipsum[2]
+\tcblower
+Lower part
+\end{testbox}
+\tcblower
+\item\refKey{/tcb/colupper}, \refKey{/tcb/collower}, \refKey{/tcb/coltitle}
+\item\refKey{/tcb/fontupper}, \refKey{/tcb/fontlower}, \refKey{/tcb/fonttitle}
+\item\refKey{/tcb/opacityupper}, \refKey{/tcb/opacitylower}, \refKey{/tcb/opacitytitle}
+\end{itembox}
+
+
+\begin{itembox}
+\begin{testbox}[
+ finishcomment={10.~finish}]
+\lipsum[2]
+\tcblower
+Lower part
+\end{testbox}
+\tcblower
+\item\Vref{subsec:skinfinish}
+\end{itembox}
+
+All together, the box is drawn:
+\begin{dispExample}
+% \usepackage{lipsum}
+\begin{testbox}
+\lipsum[2]
+\tcblower
+Lower part
+\end{testbox}
+\end{dispExample}
+
+\egroup
+
+
+\clearpage
+\subsection{Color Names}\label{subsec:tech_colornames}
+Color settings for a |tcolorbox| are saved into named colors which may be
+used inside a box, e.g. for an overlay.
+\tcbdocmarginnote{\tcbdocnew{2019-01-18}}
+These color names are
+\begin{itemize}
+\item\docColor{tcbcolframe} set by \refKey{/tcb/colframe} (frame color)
+\item\docColor{tcbcolback} set by \refKey{/tcb/colback} (background color)
+\item\docColor{tcbcolbacktitle} set by \refKey{/tcb/colbacktitle} (background color of the title)
+\item\docColor{tcbcolbacklower} set by \refKey{/tcb/colbacklower} (skin dependend background color
+ of the lower part; needs \mylib{skins} to be loaded)
+\item\docColor{tcbcolupper} set by \refKey{/tcb/colupper} (text color upper part)
+\item\docColor{tcbcollower} set by \refKey{/tcb/collower} (text color lower part)
+\item\docColor{tcbcoltitle} set by \refKey{/tcb/coltitle} (text color title)
+\end{itemize}
+
+\medskip
+
+\begin{dispExample}
+% \tcbuselibrary{skins}
+\begin{tcolorbox}[title=Color names,
+ colframe=blue!50!black,colback=blue!5,
+ colbacktitle=blue!50,colupper=red!35!black]
+ \foreach \name in {tcbcolframe,tcbcolback,tcbcolbacktitle,tcbcolbacklower,
+ tcbcolupper,tcbcollower,tcbcoltitle}
+ {\tikz\path[draw,fill=\name]
+ (0,0) rectangle node[right=4mm,font=\ttfamily]{\name} (0.8,0.8);\par}
+\end{tcolorbox}
+\end{dispExample}
+
+
+
+\clearpage
+\subsection{Useful Properties}\label{subsec:tech_properties}
+
+The following macros describe certain \textit{properties} which may be
+used for the drawing scheme, see \Fullref{subsec:tcolorboxdrawing}.
+Sometimes, they are even available inside the box content. All of them are
+considered to be \textit{read-only} and should never be redefined by the user.
+
+\begin{docCommand}[doc new=2016-02-16]{tcbheightspace}{}
+ If the height of a |tcolorbox| is not the natural height, the space
+ difference between the forced and the natural size is hold by
+ \refCom{tcbheightspace}.
+ This macro is not usable inside the box content, but for skins or
+ inside \refKey{/tcb/underlay}, \refKey{/tcb/overlay}, etc.
+
+ If such a space information is needed inside the box content, see
+ \refKey{/tcb/space to} instead.
+\begin{dispExample}
+% \tcbuselibrary{skins}
+\newtcolorbox{testbox}[2][]{enhanced,size=fbox,
+ colframe=blue!75!black,colback=white,height=#2,
+ underlay={\node[above,inner sep=3pt] at (interior.south){%
+ \includegraphics[width=\tcbtextwidth,height=\tcbheightspace-3pt]{goldshade.png}};
+ },
+ #1}
+\begin{testbox}{3cm}
+ This is my box. The space is filled with a picture.
+\end{testbox}
+\begin{testbox}{2cm}
+ This is my box. The space is filled with a picture.
+\end{testbox}
+\end{dispExample}
+\end{docCommand}
+
+
+\begin{docCommand}[doc new=2016-02-16]{tcbtextwidth}{}
+ This property describes the box content width.
+ \begin{itemize}
+ \item If there also is a lower part, it describes the width of the upper part.
+ \item For \refKey{/tcb/sidebyside} boxes, it describes the combined text
+ width plus segmentation.
+ \item This property can be used inside the box content text with exception
+ of \refKey{/tcb/fit} boxes.
+ \item \refCom{tcbtextwidth} can be used for all box types for skins or
+ inside \refKey{/tcb/underlay}, \refKey{/tcb/overlay}, etc.
+ \end{itemize}
+\begin{dispExample}
+\begin{tcolorbox}[colframe=blue!75!black]
+ Inside a box: \tcbtextwidth\ (=\the\linewidth).
+\end{tcolorbox}
+\end{dispExample}
+\end{docCommand}
+
+\pagebreak
+\begin{docCommand}[doc new=2016-02-16]{tcbtextheight}{}
+ This property describes the designated box content height. If the
+ box is larger than the natural height, the actual content will be smaller
+ than \refCom{tcbtextheight}.
+ \begin{itemize}
+ \item For boxes with a fixed \refKey{/tcb/height}, this property can
+ be used inside the box content text. For other boxes, it denotes |0pt|
+ inside the box content.
+ \item \refCom{tcbtextheight} can be used for all box types for skins or
+ inside \refKey{/tcb/underlay}, \refKey{/tcb/overlay}, etc.
+ \end{itemize}
+
+\begin{dispExample}
+% \tcbuselibrary{skins}
+\begin{tcolorbox}[enhanced,colframe=blue!75!black,
+ underlay={\node[left,red] at (frame.east) {Here: \tcbtextheight};}]
+ Inside a box with natural height: \tcbtextheight.
+\end{tcolorbox}
+\begin{tcolorbox}[enhanced,colframe=blue!75!black,height=1cm,
+ underlay={\node[left,red] at (frame.east) {Here: \tcbtextheight};}]
+ Inside a box with fixed height: \tcbtextheight.
+\end{tcolorbox}
+\end{dispExample}
+\end{docCommand}
+
+
+\begin{docCommand}[doc new=2017-04-25]{tcbsegmentstate}{}
+ This macro contains |0|, |1|, or |2|. Itis set for every unbroken box and every broken partial box
+ with the following meaning:
+ \begin{itemize}
+ \item\docValue{0}: The current (partial) box contains only an upper part.
+ \item\docValue{1}: The current (partial) box contains an upper and a lower part.
+ The segmentation node can be used for positioning.
+ \item\docValue{2}: The current (partial) box contains only a lower part.
+ This can only be true for parts of breakable boxes.
+ \end{itemize}
+ Skins like \refSkin{bicolor} use this property to paint the (partial) boxes.
+\begin{dispExample}
+% \tcbuselibrary{skins,raster}
+\begin{tcbraster}[raster equal height,enhanced,
+ watermark text=\tcbsegmentstate]
+ \begin{tcolorbox}Upper part\end{tcolorbox}
+ \begin{tcolorbox}Upper part\tcblower Lower part\end{tcolorbox}
+\end{tcbraster}
+\end{dispExample}
+\end{docCommand}
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.theorems.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.theorems.tex
new file mode 100644
index 0000000000..e67508f74c
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.theorems.tex
@@ -0,0 +1,1065 @@
+% !TeX root = tcolorbox.tex
+% include file of tcolorbox.tex (manual of the LaTeX package tcolorbox)
+\clearpage
+\section{Library \mylib{theorems}}\label{sec:theorems}%
+\tcbset{external/prefix=external/theorems_}%
+The library is loaded by a package option or inside the preamble by:
+\begin{dispListing}
+\tcbuselibrary{theorems}
+\end{dispListing}
+This also loads the package |amsmath|.
+
+\subsection{Macros of the Library}
+
+\begin{docCommand}[doc updated=2016-06-22]{newtcbtheorem}{\oarg{init options}\marg{name}\marg{display name}\marg{options}\marg{prefix}}
+ Creates new environments \meta{name} and \meta{name}|*| based on |tcolorbox| to frame a
+ (mathematical) theorem. The \meta{display name} is used in the title line
+ with a number, e.\,g. \mbox{\flqq Theorem 5.1\frqq}.
+ The \meta{options} are given to the underlying |tcolorbox| to control
+ the appearance.
+ %The \meta{counter} is used for automatic numbering.
+ The \meta{init options} allow setting up automatic numbering,
+ see \Vref{sec:initkeys}.\par
+ The new environment \meta{name} takes one optional and two mandatory
+ parameters. The optional parameter supplements the options and should be
+ used only in rare cases.
+ The first mandatory parameter is the title text for the theorem and
+ is also set as \refKey{/tcb/nameref} identifier.
+ The second mandatory parameter is a \meta{marker}. The theorem is
+ automatically labeled with \meta{prefix}\meta{separator}\meta{marker}
+ where \meta{separator} is predefined as '|:|', see \refKey{/tcb/label separator}.\par
+ The new environment \meta{name}|*| takes one optional and one mandatory
+ parameter and represents an unnumbered variant of the environment \meta{name}.
+ This variant is not labeled and not listed in lists of theorems.
+\enlargethispage*{20mm}
+\inputpreamblelisting{F}
+\begin{dispExample}
+% usage of '\nameref' needs 'nameref' or 'hyperref' to be loaded
+\begin{mytheo}{This is my title}{theoexample}
+ This is the text of the theorem. The counter is automatically assigned and,
+ in this example, prefixed with the section number. This theorem is numbered with
+ \ref{th:theoexample}, it is given on page~\pageref{th:theoexample},
+ and it is titled \flqq\nameref{th:theoexample}\frqq.
+\end{mytheo}
+\end{dispExample}
+
+\begin{dispExample}
+\begin{mytheo}[label=myownlabel]{This is my title}{}
+ The label parameter can be left empty without \LaTeX\ error.
+ Or you may use an own label to reference Theorem \ref{myownlabel}.
+\end{mytheo}
+\end{dispExample}
+
+\begin{dispExample}
+\begin{mytheo}{}{}
+ The title can also be left empty without problem. Note that the ':'
+ vanished magically.
+\end{mytheo}
+\end{dispExample}
+
+\begin{dispExample}
+\begin{mytheo*}{Unnumbered Theorem}
+ This theorem is not numbered.
+\end{mytheo*}
+\end{dispExample}
+
+\begin{dispExample}
+\begin{mytheo*}{}
+ This theorem has no number and no title.
+\end{mytheo*}
+\end{dispExample}
+
+\begin{marker}
+To switch off the \texttt{nameref} feature permanently, add
+\mbox{\texttt{nameref/.style=\{\}}} inside the \meta{options} list.
+\end{marker}
+
+\end{docCommand}
+
+
+\begin{docCommand}{renewtcbtheorem}{\oarg{init options}\marg{name}\marg{display name}\marg{options}\marg{prefix}}
+ Operates like \refCom{newtcbtheorem}, but based on |\renewenvironment| instead of |\newenvironment|.
+ An existing environment is redefined.
+\end{docCommand}
+
+
+\begin{docCommand}{tcbmaketheorem}{\marg{name}\marg{display name}\marg{options}\marg{counter}\marg{prefix}}
+\smallskip\begin{marker}
+\refCom{newtcbtheorem} supersedes this macro.
+\end{marker}
+\begin{deprecated}
+ Creates a new environment \meta{name} based on |tcolorbox| to frame a
+ (mathematical) theorem. The \meta{display name} is used in the title line
+ with a number, e.\,g. \mbox{\flqq Theorem 5.1\frqq}.
+ The \meta{options} are given to the underlying |tcolorbox| to control
+ the appearance.
+ The \meta{counter} is used for automatic numbering.
+ The new environment \meta{name} takes one optional and two mandatory
+ parameters. The optional parameter supplements the options and should be
+ used only in rare cases.
+ The first mandatory parameter is the title text for the theorem and
+ the second mandatory parameter is a \meta{marker}. The theorem is
+ automatically labeled with \meta{prefix}\meta{separator}\meta{marker}
+ where \meta{separator} is predefined as '|:|', see \refKey{/tcb/label separator}.
+\end{deprecated}
+\end{docCommand}
+
+\clearpage
+\begin{docCommand}{tcboxmath}{\oarg{options}\marg{mathematical box content}}
+ Creates a \refEnv{tcolorbox} which is fitted to the width of the given
+ \meta{mathematical box content}. This box is intended to be applied as
+ part of a larger formula and may be used as replacement for the |\boxed|
+ macro of |amsmath|.
+
+\begin{dispExample}
+\begin{equation}
+\tcbset{fonttitle=\scriptsize}
+\tcboxmath[colback=LightBlue!25!white,colframe=blue]{ a^2 = 16 }
+\quad \Rightarrow \quad
+\tcboxmath[colback=Salmon!25!white,colframe=red,title=Implication]%
+ { a = 4 ~\vee~ a=-4. }
+\end{equation}
+\end{dispExample}
+\end{docCommand}
+
+\begin{docCommand}{tcbhighmath}{\oarg{options}\marg{mathematical box content}}
+ This is a special case of the \refCom{tcboxmath} macro which uses
+ the style \refKey{/tcb/highlight math}.
+ It is intended to provide context sensitive highlighting of formula parts.
+ The color settings via \refKey{/tcb/highlight math style} may be different
+ inside theorems or other colored areas and outside.
+
+\begin{dispExample}
+\tcbset{myformula/.style={colback=yellow!10!white,colframe=red!50!black,
+ every box/.style={highlight math style={colback=LightBlue!50!white,colframe=Navy}}
+ }}
+
+\begin{align}
+ \tcbhighmath{\sum\limits_{n=1}^{\infty} \frac{1}{n}} &= \infty.\\
+ \int x^2 ~\text{d}x &= \frac13 x^3 + c.
+\end{align}
+
+\begin{tcolorbox}[ams align,myformula]
+ \tcbhighmath{\sum\limits_{n=1}^{\infty} \frac{1}{n}} &= \infty.\\
+ \int x^2 ~\text{d}x &= \frac13 x^3 + c.
+\end{tcolorbox}
+\end{dispExample}
+
+\clearpage
+\refCom{tcbhighmath} can be used in symbiosis with the |empheq| package
+which allows to specify own boxing commands to mark multiline formulas.
+
+\begin{dispExample}
+% \usepackage{empheq}
+\begin{empheq}[box=\tcbhighmath]{align}
+a&=\sin(z)\\
+E&=mc^2 + \int_a^b x\, dx
+\end{empheq}
+
+\tcbset{highlight math style={enhanced,
+ colframe=red!60!black,colback=yellow!50!white,arc=4pt,boxrule=1pt,
+ drop fuzzy shadow}}
+
+\begin{empheq}[box=\tcbhighmath]{align}
+a&=\sin(z)\\
+E&=mc^2 + \int_a^b x\, dx
+\end{empheq}
+\end{dispExample}
+
+Besides \refCom{tcbhighmath}, one can easily define an independent new box
+based on \refCom{tcbox} which acts like \refCom{tcbhighmath}:
+
+\begin{dispExample}
+% \usepackage{empheq}
+\newtcbox{\otherbox}[1][]{nobeforeafter,math upper,tcbox raise base,
+ enhanced,frame hidden,boxrule=0pt,interior style={top color=green!10!white,
+ bottom color=green!10!white,middle color=green!50!yellow},
+ fuzzy halo=1pt with green,#1}
+
+\begin{empheq}[box=\otherbox]{align}
+a&=\sin(z)\\
+E&=mc^2 + \int_a^b x\, dx
+\end{empheq}
+
+\begin{equation}
+\tcbhighmath{E} = \otherbox{mc^2}
+\end{equation}
+\end{dispExample}
+\end{docCommand}
+
+
+\clearpage
+\subsection{Option Keys of the Library}
+
+
+\begin{docTcbKey}{separator sign}{=\meta{sign}}{no default, initially |:|}
+ The given \meta{sign} is used inside the title text of a theorem
+ as separater between display name combined with number and
+ the specific title text. It is omitted, if there is no specific title text.
+
+\begin{dispExample}
+% \usepackage{amssymb}
+\newtcbtheorem[use counter from=mytheo]{sometheorem}{Theorem}%
+ {colback=white,colframe=red!50!black,fonttitle=\bfseries,
+ separator sign={\ $\blacktriangleright$}}{theo}
+\begin{sometheorem}{My example}{}
+My theorem text.
+\end{sometheorem}
+\end{dispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}{separator sign colon}{}{style, no value, initially set}
+Sets \refKey{/tcb/separator sign} to the default colon |:| sign.
+\end{docTcbKey}
+
+\begin{docTcbKey}{separator sign dash}{}{style, no value}
+Sets \refKey{/tcb/separator sign} to an en-dash sign.
+\begin{dispExample}
+\newtcbtheorem[use counter from=mytheo]{sometheorem}{Theorem}%
+ {colback=white,colframe=red!50!black,fonttitle=\bfseries,
+ separator sign dash}{theo}
+\begin{sometheorem}{My example}{}
+My theorem text.
+\end{sometheorem}
+\end{dispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}{separator sign none}{}{style, no value}
+Sets \refKey{/tcb/separator sign} to empty.
+\begin{dispExample}
+\newtcbtheorem[use counter from=mytheo]{sometheorem}{Theorem}%
+ {colback=white,colframe=red!50!black,fonttitle=\bfseries,
+ separator sign none}{theo}
+\begin{sometheorem}{My example}{}
+My theorem text.
+\end{sometheorem}
+\end{dispExample}
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}{description delimiters}{=\marg{left}\marg{right}}{no default, initially empty}
+ The given \meta{left} and \meta{right} delimiter signs are used to frame
+ the descriptive title text of a theorem.
+
+\begin{dispExample}
+\newtcbtheorem[use counter from=mytheo]{sometheorem}{Theorem}%
+ {colback=white,colframe=red!50!black,fonttitle=\bfseries,
+ description delimiters={\flqq}{\frqq}}{theo}
+\begin{sometheorem}{My example}{}
+My theorem text.
+\end{sometheorem}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{description delimiters parenthesis}{}{style, no value}
+Sets \refKey{/tcb/description delimiters} to |(| and |)|.
+\begin{dispExample}
+\newtcbtheorem[use counter from=mytheo]{sometheorem}{Theorem}%
+ {colback=white,colframe=red!50!black,fonttitle=\bfseries,
+ description delimiters parenthesis}{theo}
+\begin{sometheorem}{My example}{}
+My theorem text.
+\end{sometheorem}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{description delimiters none}{}{style, no value, initially set}
+Sets \refKey{/tcb/description delimiters} to the default empty texts.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{description color}{\colOpt{=\meta{color}}}{default empty, initially empty}
+ Sets the \meta{color} of the descriptive title text deviating from \refKey{/tcb/coltitle}.
+ The color is reset to \refKey{/tcb/coltitle}, if |description color| is used without value.
+
+\begin{dispExample}
+\newtcbtheorem[use counter from=mytheo]{sometheorem}{Theorem}%
+ {colback=white,colframe=red!50!black,fonttitle=\bfseries,
+ description color=red!25!yellow}{theo}
+\begin{sometheorem}{My example}{}
+My theorem text.
+\end{sometheorem}
+\end{dispExample}
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}{description font}{\colOpt{=\meta{text}}}{default empty, initially empty}
+ Sets \meta{text} (e.\,g.\ font settings) before the descriptive title text deviating from \refKey{/tcb/fonttitle}.
+ The \meta{text} is removed, if |description font| is used without value.
+
+\begin{dispExample}
+\newtcbtheorem[use counter from=mytheo]{sometheorem}{Theorem}%
+ {colback=white,colframe=red!50!black,fonttitle=\bfseries,
+ description delimiters={\glqq}{\grqq},
+ description font=\mdseries\itshape}{theo}
+\begin{sometheorem}{My example}{}
+My theorem text.
+\end{sometheorem}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{description formatter}{\colOpt{=\meta{macro}}}{default empty, initially empty}
+ Sets \meta{macro} as formatter for the descriptive title text. The \meta{macro}
+ has to take one mandatory argument (the description text).\\
+ Note that \refKey{/tcb/description delimiters}, \refKey{/tcb/description color},
+ and \refKey{/tcb/description font} are ignored, if this option is used.\\
+ If |description formatter| is used without value, the formatter is reset
+ to its standard behavior.
+
+\begin{dispExample}
+\newtcbox{\formbox}{enhanced,frame empty,size=minimal,boxsep=2pt,arc=1pt,
+ on line,interior style image=goldshade.png}
+
+\newtcbtheorem[use counter from=mytheo]{sometheorem}{Theorem}%
+ {colback=white,colframe=red!50!black,fonttitle=\bfseries,
+ description formatter=\formbox}{theo}
+\begin{sometheorem}{My example}{}
+My theorem text.
+\end{sometheorem}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{terminator sign}{=\meta{sign}}{no default, initially empty}
+ The given \meta{sign} is used as terminator at the end of the title text of a theorem.
+
+\begin{dispExample}
+\newtcbtheorem[use counter from=mytheo]{sometheorem}{Theorem}%
+ {colback=white,colframe=red!50!black,fonttitle=\bfseries,
+ terminator sign={.}}{theo}
+\begin{sometheorem}{My example}{}
+My theorem text.
+\end{sometheorem}
+\end{dispExample}
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}{terminator sign colon}{}{style, no value, initially set}
+Sets \refKey{/tcb/terminator sign} to the colon |:| sign.
+\begin{dispExample}
+\newtcbtheorem[use counter from=mytheo]{sometheorem}{Theorem}%
+ {colback=white,colframe=red!50!black,fonttitle=\bfseries,
+ separator sign dash,terminator sign colon}{theo}
+\begin{sometheorem}{My example}{}
+My theorem text.
+\end{sometheorem}
+\end{dispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}{terminator sign dash}{}{style, no value}
+Sets \refKey{/tcb/terminator sign} to an en-dash sign.
+\begin{dispExample}
+\newtcbtheorem[use counter from=mytheo]{sometheorem}{Theorem}%
+ {colback=white,colframe=red!50!black,fonttitle=\bfseries,
+ terminator sign dash}{theo}
+\begin{sometheorem}{My example}{}
+My theorem text.
+\end{sometheorem}
+\end{dispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}{terminator sign none}{}{style, no value}
+Sets \refKey{/tcb/terminator sign} to the default empty text.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2016-04-19]{label separator}{=\meta{separator}}{no default, initially |:|}
+ The given \meta{separator} is used for labels created with environments which
+ are defined themselves by \refCom{newtcbtheorem}. This \meta{separator} is
+ put between \meta{prefix} (defined by \refCom{newtcbtheorem})
+ and \meta{marker} (defined by an actual theorem environment).
+\begin{dispExample}
+\newtcbtheorem[use counter from=mytheo]{sometheorem}{Theorem}%
+ {colback=white,colframe=red!50!black,fonttitle=\bfseries,
+ label separator=*}{theo}
+\begin{sometheorem}{My example}{myex}
+My theorem text.
+\end{sometheorem}
+See Example~\ref{theo*myex}.
+\end{dispExample}
+\end{docTcbKey}
+
+
+\clearpage
+
+\begin{docTcbKey}[][doc new=2018-01-12]{theorem full label supplement}{=\marg{style}}{no default, initially empty}
+ The given \meta{style} is used in connection with labels created with environments which
+ are defined themselves by \refCom{newtcbtheorem}.
+ This \meta{style} uses one argument which is automatically set to the
+ full label marker of the environment, i.e. a text consisting of
+ \meta{prefix} (defined by \refCom{newtcbtheorem}),
+ \refKey{/tcb/label separator},
+ and \meta{marker} (defined by an actual theorem environment).
+
+\begin{dispExample}
+% The following adds a hyper target to all environments
+% created with \newtcbtheorem
+\tcbset{theorem full label supplement={hypertarget={#1}}}
+
+\newtcbtheorem[use counter from=mytheo]{sometheorem}{Theorem}%
+ {colback=white,colframe=red!50!black,fonttitle=\bfseries}{theo}
+\begin{sometheorem}{My example}{myex2}
+My theorem text.
+\end{sometheorem}
+This automated \hyperlink{theo:myex2}{hyper target can be linked to with a
+ hyper link}.
+\end{dispExample}
+
+A second usage of \refKey{/tcb/theorem full label supplement} overwrites
+the first setting.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2018-01-12]{theorem label supplement}{=\marg{style}}{no default, initially empty}
+ The given \meta{style} is used in connection with labels created with environments which
+ are defined themselves by \refCom{newtcbtheorem}.
+ This \meta{style} uses one argument which is automatically set to the
+ label \meta{marker} defined by an actual theorem environment.\par
+ A second usage of \refKey{/tcb/theorem label supplement} overwrites
+ the first setting, but
+ \refKey{/tcb/theorem full label supplement}
+ and \refKey{/tcb/theorem label supplement} can be used independently.
+
+\begin{dispExample}
+% 'marginnote' has to be loaded
+\newtcbtheorem[use counter from=mytheo]{sometheorem}{Theorem}%
+ {colback=white,colframe=red!50!black,fonttitle=\bfseries,
+ theorem label supplement={hypertarget={XYZ-##1}},
+ theorem full label supplement={code={\marginnote{##1}}}
+ }{theo}
+\begin{sometheorem}{My example}{myex3}
+My theorem text.
+\end{sometheorem}
+This automated \hyperlink{XYZ-myex3}{hyper target can be linked to with a
+ hyper link}.
+\end{dispExample}
+\end{docTcbKey}
+
+
+
+\clearpage
+\begin{docTcbKey}{theorem name and number}{}{style, no value, initially set}
+Prints theorem name followed by theorem number inside the title.
+\begin{dispExample}
+\newtcbtheorem[use counter from=mytheo]{sometheorem}{Theorem}%
+ {colback=white,colframe=red!50!black,fonttitle=\bfseries,
+ theorem name and number}{theo}
+\begin{sometheorem}{My example}{}
+My theorem text.
+\end{sometheorem}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{theorem number and name}{}{style, no value}
+Prints theorem number followed by theorem name inside the title.
+\begin{dispExample}
+\newtcbtheorem[use counter from=mytheo]{sometheorem}{Theorem}%
+ {colback=white,colframe=red!50!black,fonttitle=\bfseries,
+ theorem number and name}{theo}
+\begin{sometheorem}{My example}{}
+My theorem text.
+\end{sometheorem}
+\end{dispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}{theorem name}{}{style, no value}
+Prints theorem name without number inside the title.
+\begin{dispExample}
+\newtcbtheorem[use counter from=mytheo]{sometheorem}{Theorem}%
+ {colback=white,colframe=red!50!black,fonttitle=\bfseries,
+ theorem name,enhanced,watermark text={\thetcbcounter}}{theo}
+\begin{sometheorem}{My example}{}
+My theorem text.
+\end{sometheorem}
+\end{dispExample}
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}{theorem}{=\marg{display name}\marg{counter}\marg{title}\marg{marker}}{no default}
+ This key is internally used by \refCom{tcbmaketheorem}, but can be used
+ directly in a |tcolorbox| for a more flexible approach.
+ The \meta{display name} is used together with the increased \meta{counter} value
+ and the \meta{title} for the title line of the box. Additionally, a
+ |\label| with the given \meta{marker} is created.
+\begin{dispExample}
+% \newcounter{texercise}% preamble
+\begin{tcolorbox}[colback=green!10,colframe=green!50!black,arc=4mm,
+ theorem={Test}{texercise}{Direct usage}{myMarker}]
+Here, we see the test \ref{myMarker}.
+\end{tcolorbox}
+\end{dispExample}
+For a common appearance inside the document, the key |theorem| should not be
+used directly as in the example above, but as part of a new environment
+created by hand or using \refCom{tcbmaketheorem} or using its successor
+\refCom{newtcbtheorem}.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{highlight math}{}{style, no value}
+ Predefined style which is used for \refCom{tcbhighmath}.
+ It can be changed comfortable with \refKey{/tcb/highlight math style}.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{highlight math style}{=\meta{style definition}}{style, no default}
+ Changes the definition for \refKey{/tcb/highlight math} to the given
+ \meta{style definition}. See \refCom{tcbhighmath} for another example.
+\begin{dispExample}
+% \tcbuselibrary{skins}
+\tcbset{highlight math style={enhanced,%<-- needed for the 'remember' options
+ colframe=red,colback=red!10!white,boxsep=0pt}}
+\begin{align*}
+\tcbhighmath[remember as=fx]{f(x)}
+ &= \int\limits_{1}^{x} \frac{1}{t^2}~dt
+ = \left[ -\frac{1}{t} \right]_{1}^{x}\\
+ &= -\frac{1}{x} + \frac{1}{1}\\
+ &=
+\tcbhighmath[remember,overlay={%
+ \draw[blue,very thick,->] (fx.south) to[bend right] ([yshift=2mm]frame.west);}]
+ {1-\frac{1}{x}.}
+\end{align*}
+\end{dispExample}
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}{math upper}{}{style, no value}
+ Sets the upper part to mathematical mode with font |\displaystyle|.
+\end{docTcbKey}
+
+\begin{docTcbKey}{math lower}{}{style, no value}
+ Sets the lower part to mathematical mode with font |\displaystyle|.
+\end{docTcbKey}
+
+\begin{docTcbKey}{math}{}{style, no value}
+ Sets the upper part \emph{and} lower part to mathematical mode with font |\displaystyle|.
+\begin{dispExample}
+\begin{tcolorbox}[math,colback=yellow!10!white,colframe=red!50!black]
+ \sum\limits_{n=1}^{\infty} \frac{1}{n} = \infty.
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\begin{marker}
+ The following styles are only tested to work with the original |amsmath| environments.
+ If e.g. the |equation| environment is redefined as |gather|, then
+ \refKey{/tcb/ams equation} should / could not be used. Obviously, you are encouraged
+ to use \refKey{/tcb/ams gather} in this case.
+\end{marker}
+
+\begin{docTcbKey}[][doc updated=2014-10-30]{ams equation upper}{}{style, no value}
+ Adds an |amsmath| |equation| environment to the start and end
+ of the upper part.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc updated=2014-10-30]{ams equation lower}{}{style, no value}
+ Adds an |amsmath| |equation| environment to the start and end
+ of the lower part.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc updated=2014-10-30]{ams equation}{}{style, no value}
+ Adds an |amsmath| |equation| environment to the start and end
+ of the upper \emph{and} lower part.
+\begin{dispExample}
+\begin{tcolorbox}[ams equation,colback=yellow!10!white,colframe=red!50!black]
+ \sum\limits_{n=1}^{\infty} \frac{1}{n} = \infty.
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc updated=2014-10-30]{ams equation* upper}{}{style, no value}
+ Adds an |amsmath| |equation*| environment to the start and end
+ of the upper part.
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc updated=2014-10-30]{ams equation* lower}{}{style, no value}
+ Adds an |amsmath| |equation*| environment to the start and end
+ of the lower part.
+\end{docTcbKey}
+
+\enlargethispage*{1cm}
+\begin{docTcbKey}[][doc updated=2014-10-30]{ams equation*}{}{style, no value}
+ Adds an |amsmath| |equation*| environment to the start and end
+ of the upper \emph{and} lower part.
+\begin{dispExample}
+\begin{tcolorbox}[ams equation*,colback=yellow!10!white,colframe=red!50!black]
+ \sum\limits_{n=1}^{\infty} \frac{1}{n} = \infty.
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}{ams align upper}{}{style, no value}
+ Adds an |amsmath| |align| environment to the start and end
+ of the upper part.
+\end{docTcbKey}
+
+\begin{docTcbKey}{ams align lower}{}{style, no value}
+ Adds an |amsmath| |align| environment to the start and end
+ of the lower part.
+\end{docTcbKey}
+
+\begin{docTcbKey}{ams align}{}{style, no value}
+ Adds an |amsmath| |align| environment to the start and end
+ of the upper \emph{and} lower part.
+\begin{dispExample}
+\begin{tcolorbox}[ams align,colback=yellow!10!white,colframe=red!50!black]
+ \sum\limits_{n=1}^{\infty} \frac{1}{n} &= \infty.\\
+ \int x^2 ~\text{d}x &= \frac13 x^3 + c.
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}{ams align* upper}{}{style, no value}
+ Adds an |amsmath| |align*| environment to the start and end
+ of the upper part.
+\end{docTcbKey}
+
+\begin{docTcbKey}{ams align* lower}{}{style, no value}
+ Adds an |amsmath| |align*| environment to the start and end
+ of the lower part.
+\end{docTcbKey}
+
+\begin{docTcbKey}{ams align*}{}{style, no value}
+ Adds an |amsmath| |align*| environment to the start and end
+ of the upper \emph{and} lower part.
+\begin{dispExample}
+\begin{tcolorbox}[ams align*,colback=yellow!10!white,colframe=red!50!black]
+ \sum\limits_{n=1}^{\infty} \frac{1}{n} &= \infty.\\
+ \int x^2 ~\text{d}x &= \frac13 x^3 + c.
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}{ams gather upper}{}{style, no value}
+ Adds an |amsmath| |gather| environment to the start and end
+ of the upper part.
+\end{docTcbKey}
+
+\begin{docTcbKey}{ams gather lower}{}{style, no value}
+ Adds an |amsmath| |gather| environment to the start and end
+ of the lower part.
+\end{docTcbKey}
+
+\begin{docTcbKey}{ams gather}{}{style, no value}
+ Adds an |amsmath| |gather| environment to the start and end
+ of the upper \emph{and} lower part.
+\begin{dispExample}
+\begin{tcolorbox}[ams gather,colback=yellow!10!white,colframe=red!50!black]
+ \sum\limits_{n=1}^{\infty} \frac{1}{n} = \infty.\\
+ \int x^2 ~\text{d}x = \frac13 x^3 + c.
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}{ams gather* upper}{}{style, no value}
+ Adds an |amsmath| |gather*| environment to the start and end
+ of the upper part.
+\end{docTcbKey}
+
+\begin{docTcbKey}{ams gather* lower}{}{style, no value}
+ Adds an |amsmath| |gather*| environment to the start and end
+ of the lower part.
+\end{docTcbKey}
+
+\begin{docTcbKey}{ams gather*}{}{style, no value}
+ Adds an |amsmath| |gather*| environment to the start and end
+ of the upper \emph{and} lower part.
+\begin{dispExample}
+\begin{tcolorbox}[ams gather*,colback=yellow!10!white,colframe=red!50!black]
+ \sum\limits_{n=1}^{\infty} \frac{1}{n} = \infty.\\
+ \int x^2 ~\text{d}x = \frac13 x^3 + c.
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}{ams nodisplayskip upper}{}{style, no value}
+ Neutralizes the |\abovedisplayskip| of a following |align| or |gather|
+ environment for the upper part. Note that the text content has to
+ start with such a formula.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{ams nodisplayskip lower}{}{style, no value}
+ Neutralizes the |\abovedisplayskip| of a following |align| or |gather|
+ environment for the lower part. Note that the text content has to
+ start with such a formula.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{ams nodisplayskip}{}{style, no value}
+ Neutralizes the |\abovedisplayskip| of a following |align| or |gather|
+ environment for the upper part \emph{and} lower part.
+ Note that the text content has to start with such a formula.
+\begin{dispExample}
+\begin{tcolorbox}[ams nodisplayskip,colback=yellow!10!white,colframe=red!50!black]
+ \begin{gather}
+ \sum\limits_{n=1}^{\infty} \frac{1}{n} = \infty.\\
+ \int x^2 ~\text{d}x = \frac13 x^3 + c.
+ \end{gather}
+ And now for something completely different.
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+\bigskip
+New colored mathematical environments are easily created using
+\refCom{newtcolorbox}:
+
+\begin{dispExample}
+\newtcolorbox{mymath}{ams gather*,colback=yellow!10!white,colframe=red!50!black}
+
+\begin{mymath}
+ \sum\limits_{n=1}^{\infty} \frac{1}{n} = \infty.\\
+ \int x^2 ~\text{d}x = \frac13 x^3 + c.
+\end{mymath}
+\end{dispExample}
+
+\bigskip
+\begin{marker}
+ All described options like \refKey{/tcb/ams gather upper}, \refKey{/tcb/ams gather lower},
+ \refKey{/tcb/ams gather} are (partially) setting (overwritting) the
+ keys \refKey{/tcb/before upper}, \refKey{/tcb/after upper},
+ \refKey{/tcb/before lower}, \refKey{/tcb/after lower}.\par
+ Therefore, e.\,g.\ |\tcbset{ams gather,before upper={\text{Pythagoras:}}}|
+ produces an invalid result. For this case, you are invited to use\\
+ |\tcbset{ams gather,before upper app={\text{Pythagoras:}}}|,\\
+ see \refKey{/tcb/before upper app}.
+\end{marker}
+
+
+\clearpage
+\begin{docTcbKey}{theorem style}{=\meta{name}}{no default, initially |standard|}
+Applies a predefined style \meta{name} to the theorem environment. Some of
+the feasible \meta{name} values resemble style names from the packages |theorem|
+and |ntheorem| to give convenient access to known patterns.
+\begin{marker}
+The styles alter \refKey{/tcb/separator sign}, \refKey{/tcb/description delimiters},
+\refKey{/tcb/terminator sign}, and more. Therefore, one should apply such
+keys \emph{after} a theorem style.
+\end{marker}
+
+For the following examples, we use:
+\inputpreamblelisting{J}
+
+The predefined styles are:
+\begin{itemize}
+%
+\item\docValue{standard}: This is the initial value.
+\begin{dispExample}
+\begin{theorem}[theorem style=standard]{standard}{}
+This is my theorem. \begin{equation*} a^2 + b^2 = c^2. \end{equation*}
+\end{theorem}
+\end{dispExample}
+%
+\item\docValue{change standard}
+\begin{dispExample}
+\begin{theorem}[theorem style=change standard]{change standard}{}
+This is my theorem. \begin{equation*} a^2 + b^2 = c^2. \end{equation*}
+\end{theorem}
+\end{dispExample}
+%
+\item\docValue{plain}
+\begin{dispExample}
+\begin{theorem}[theorem style=plain]{plain}{}
+This is my theorem. \begin{equation*} a^2 + b^2 = c^2. \end{equation*}
+\end{theorem}
+\end{dispExample}
+%
+\clearpage
+\item\docValue{break}
+\begin{dispExample}
+\begin{theorem}[theorem style=break]{break}{}
+This is my theorem. \begin{equation*} a^2 + b^2 = c^2. \end{equation*}
+\end{theorem}
+\end{dispExample}
+%
+\item\docValue{plain apart}
+\begin{dispExample}
+\begin{theorem}[theorem style=plain apart]{plain apart}{}
+This is my theorem. \begin{equation*} a^2 + b^2 = c^2. \end{equation*}
+\end{theorem}
+\end{dispExample}
+%
+\item\docValue{change}
+\begin{dispExample}
+\begin{theorem}[theorem style=change]{change}{}
+This is my theorem. \begin{equation*} a^2 + b^2 = c^2. \end{equation*}
+\end{theorem}
+\end{dispExample}
+%
+\item\docValue{change break}
+\begin{dispExample}
+\begin{theorem}[theorem style=change break]{change break}{}
+This is my theorem. \begin{equation*} a^2 + b^2 = c^2. \end{equation*}
+\end{theorem}
+\end{dispExample}
+%
+\item\docValue{change apart}
+\begin{dispExample}
+\begin{theorem}[theorem style=change apart]{change apart}{}
+This is my theorem. \begin{equation*} a^2 + b^2 = c^2. \end{equation*}
+\end{theorem}
+\end{dispExample}
+%
+\clearpage
+\item\docValue{margin}
+\begin{dispExample}
+\begin{theorem}[theorem style=margin,left=10mm]{margin}{}
+This is my theorem. \begin{equation*} a^2 + b^2 = c^2. \end{equation*}
+\end{theorem}
+\begin{theorem}[theorem style=margin,left=10mm,oversize]{margin}{}
+This is my theorem. \begin{equation*} a^2 + b^2 = c^2. \end{equation*}
+\end{theorem}
+\end{dispExample}
+%
+\item\docValue{margin break}
+\begin{dispExample}
+\begin{theorem}[theorem style=margin break,left=10mm]{margin break}{}
+This is my theorem. \begin{equation*} a^2 + b^2 = c^2. \end{equation*}
+\end{theorem}
+\begin{theorem}[theorem style=margin break,left=10mm,oversize]{margin break}{}
+This is my theorem. \begin{equation*} a^2 + b^2 = c^2. \end{equation*}
+\end{theorem}
+\end{dispExample}
+%
+\item\docValue{margin apart}
+\begin{dispExample}
+\begin{theorem}[theorem style=margin apart,left=10mm]{margin apart}{}
+This is my theorem. \begin{equation*} a^2 + b^2 = c^2. \end{equation*}
+\end{theorem}
+\begin{theorem}[theorem style=margin apart,left=10mm,oversize]{margin apart}{}
+This is my theorem. \begin{equation*} a^2 + b^2 = c^2. \end{equation*}
+\end{theorem}
+\end{dispExample}
+%
+\end{itemize}
+\end{docTcbKey}
+
+
+%
+\clearpage
+\subsection{Examples for Definitions and Theorems}
+In the following, the application of \refCom{tcbmaketheorem}
+to highlight mathematical definitions, theorems, or the like is demonstrated.
+
+At first, additional |tcb| keys are created for the appearance of
+the colored boxes. It is assumed that theorems and corollaries should be
+identically colored.
+All following environments are numbered with a common counter, but this
+can be changed easily. Here, the counter output is supplemented by
+the subsection number.
+Further, the |cleveref| package \cite{cubitt:2018a} is used for clever
+references.
+
+\inputpreamblelisting{G}
+
+By \refCom{newtcbtheorem}, commonly numbered theorem environments are
+created now. |defstyle| and |theostyle| are used for the appearance.
+
+Now, everything is prepared for the following examples.
+
+\begin{dispExample}
+The following theorem is numbered as \Cref{theo:diffbarstetig} and
+referenced with the marker \texttt{theo:diffbarstetig}.\bigskip
+
+\begin{Theorem}{Differenzierbarkeit bedingt Stetigkeit, wobei diese Benennung
+ zu Testzwecken ungew\"{o}hnlich lang ist}{diffbarstetig}%
+ Eine Funktion $f:I\to\mathbb{R}$ ist in $x_0\in I$ stetig, wenn $f$ in
+ $x_0$ differenzierbar ist.
+\end{Theorem}
+\end{dispExample}
+
+
+\begin{dispExample}
+The following definition is numbered as \Cref{def:diffbarkeit} and
+referenced with the marker \texttt{def:diffbarkeit}.\bigskip
+
+\begin{Definition}{Differenzierbarkeit}{diffbarkeit}
+ Eine Funktion $f:~I\to\mathbb{R}$ auf einem Intervall $I$ hei\ss{}t in
+ $x_0\in I$ differenzierbar oder linear approximierbar,
+ wenn der Grenzwert
+ \begin{equation*}
+ \lim\limits_{x\to x_0}\frac{f(x)-f(x_0)}{x-x_0}=
+ \lim\limits_{h\to 0}\frac{f(x_0+h)-f(x_0)}{h}
+ \end{equation*}
+ existiert. Bei Existenz hei\ss{}t dieser Grenzwert Ableitung
+ oder Differentialquotient von $f$ in $x_0$ und man
+ schreibt f\"{u}r ihn
+ \begin{equation*}
+ f'(x_0)\quad\text{oder}\quad\frac{df}{dx}(x_0).
+ \end{equation*}
+\end{Definition}
+\end{dispExample}
+
+
+\begin{dispExample}
+The following corollary is numbered as \Cref{cor:nullstellen} and
+referenced with the marker \texttt{cor:nullstellen}.\bigskip
+
+\begin{Corollary}{Nullstellenexistenz}{nullstellen}
+ Ist $f:[a,b]\to\mathbb{R}$ stetig und haben $f(a)$ und $f(b)$ entgegengesetzte
+ Vorzeichen, also $f(a)f(b)<0$, so besitzt $f$ eine Nullstelle $x_0\in]a,b[$,
+ also $f(x_0)=0$.
+\end{Corollary}
+\end{dispExample}
+
+
+\begin{dispExample}
+\begin{Theorem}[boxrule=2mm,toptitle=-1.5mm,bottomtitle=-1.5mm]{%
+ Hinreichende Bedingung f\"{u}r Wendepunkte}{wendehinreichend}%
+ $f$ sei eine auf einem Intervall $]a,b[$ dreimal stetig differenzierbare Funktion.
+ Ist $f''(x_0)=0$ in $x_0\in]a,b[$ und $f'''(x_0)\ne 0$, so ist
+ $(x_0,f(x_0))$ ein Wendepunkt von $f$.
+\end{Theorem}
+\end{dispExample}
+
+\begin{dispExample}
+% \usepackage{varioref}
+% \usepackage{cleveref}
+% \tcbuselibrary{skins}
+\newtcbtheorem[use counter from=Definition]{YetAnotherTheorem}{Theorem}%
+ {theorem style=plain apart,label type=theorem,enhanced,frame hidden,
+ boxrule=2mm,titlerule=0mm,toptitle=1mm,bottomtitle=1mm,
+ fonttitle=\bfseries\large,fontupper=\normalsize,
+ coltitle=green!35!black,colbacktitle=green!15!white,
+ colback=green!50!yellow!15!white,borderline={1pt}{0pt}{green!25!blue},
+ }{theo}
+
+\begin{YetAnotherTheorem}{Mittelwertsatz f\"{u}r $n$ Variable}{meanvaluetheorem}%
+ Es sei $n\in\mathbb{N}$, $D\subseteq\mathbb{R}^n$ eine offene Menge und
+ $f\in C^{1}(D,\mathbb{R})$. Dann gibt es auf jeder Strecke
+ $[x_0,x]\subset D$ einen Punkt $\xi\in[x_0,x]$, so dass gilt
+ \begin{equation*}
+ f(x)-f(x_0) = \operatorname{grad} f(\xi)^{\top}(x-x_0)
+ \end{equation*}
+\end{YetAnotherTheorem}
+
+\medskip
+Here, |cleveref| support is used to reference \Cref{theo:meanvaluetheorem}
+on \Cpageref{theo:meanvaluetheorem}. This \namecref{theo:meanvaluetheorem}
+can also be referenced by |\Vref| resulting in \Vref{theo:meanvaluetheorem}.
+\end{dispExample}
+
+\begin{marker}
+Note that \refKey{/tcb/label type} was used in the example above to feed
+|cleveref| \cite{cubitt:2018a} with the needed name information.
+\end{marker}
+
+\clearpage
+
+\begin{dispExample}
+Here, using |\Vref| resulting in \Vref{theo:meanvaluetheorem} is more interesting\ldots
+\end{dispExample}
+
+
+\begin{dispExample}
+% \tcbuselibrary{skins}
+\newtcbtheorem[use counter from=Definition]{YetAnotherTheorem}{Theorem}%
+ {theorem style=change apart,enhanced,arc=0mm,outer arc=0mm,
+ boxrule=0mm,toprule=1mm,bottomrule=1mm,left=1mm,right=1mm,
+ titlerule=0mm,toptitle=0mm,bottomtitle=1mm,top=0mm,
+ colframe=red!50!black,colback=red!5!white,coltitle=red!50!black,
+ title style={top color=yellow!50!white,bottom color=red!5!white,
+ middle color=yellow!50!white},
+ fonttitle=\bfseries\sffamily\normalsize,fontupper=\normalsize\itshape,
+ }{theo}
+
+\begin{YetAnotherTheorem}{Mittelwertsatz f\"{u}r $n$ Variable}{mittelwertsatz_n2}%
+ Es sei $n\in\mathbb{N}$, $D\subseteq\mathbb{R}^n$ eine offene Menge und
+ $f\in C^{1}(D,\mathbb{R})$. Dann gibt es auf jeder Strecke
+ $[x_0,x]\subset D$ einen Punkt $\xi\in[x_0,x]$, so dass gilt
+ \begin{equation*}
+ f(x)-f(x_0) = \operatorname{grad} f(\xi)^{\top}(x-x_0)
+ \end{equation*}
+\end{YetAnotherTheorem}
+\end{dispExample}
+
+
+\begin{dispExample}
+% \usepackage{varwidth} \tcbuselibrary{skins}
+\newtcbtheorem[use counter from=Definition]{YetAnotherTheorem}{Theorem}%
+{enhanced,frame empty,interior empty,colframe=ForestGreen!50!white,
+ coltitle=ForestGreen!50!black,fonttitle=\bfseries,colbacktitle=ForestGreen!15!white,
+ borderline={0.5mm}{0mm}{ForestGreen!15!white},
+ borderline={0.5mm}{0mm}{ForestGreen!50!white,dashed},
+ attach boxed title to top center={yshift=-2mm},
+ boxed title style={boxrule=0.4pt},varwidth boxed title}{theo}
+
+\begin{YetAnotherTheorem}{Mittelwertsatz f\"{u}r $n$ Variable}{mittelwertsatz_n3}%
+ Es sei $n\in\mathbb{N}$, $D\subseteq\mathbb{R}^n$ eine offene Menge und
+ $f\in C^{1}(D,\mathbb{R})$. Dann gibt es auf jeder Strecke
+ $[x_0,x]\subset D$ einen Punkt $\xi\in[x_0,x]$, so dass gilt
+ \begin{equation*}
+ f(x)-f(x_0) = \operatorname{grad} f(\xi)^{\top}(x-x_0)
+ \end{equation*}
+\end{YetAnotherTheorem}
+\end{dispExample}
+
+
+\clearpage
+You need more attention for your theorems? Here, you are \ldots
+
+\begin{dispExample}
+% tcbuselibrary{skins} % preamble
+\begin{Theorem}[enhanced,
+ fuzzy halo=3mm with yellow,
+ fuzzy halo=2mm with red,
+ fuzzy halo=1mm with yellow,
+ watermark color=red!35!white,
+ watermark text={Overacting\\Fundamental Theorem}]%
+ {Fundamental Theorem of Theorems}{fundamental}%
+ \lipsum[1-2]
+\end{Theorem}
+\end{dispExample}
+
+Let's try a more conservative approach:
+
+\begin{dispExample}
+% \tcbuselibrary{skins}
+\newtcbtheorem[use counter from=Definition]{YetAnotherTheorem}{Theorem}%
+ {theorem style=plain,enhanced,colframe=blue!50!black,colback=yellow!20!white,
+ coltitle=red!50!black,fonttitle=\upshape\bfseries,fontupper=\itshape,
+ drop fuzzy shadow=blue!50!black!50!white,boxrule=0.4pt}{theo}
+
+\begin{YetAnotherTheorem}{Mittelwertsatz f\"{u}r $n$ Variable}{mittelwertsatz_n4}%
+ Es sei $n\in\mathbb{N}$, $D\subseteq\mathbb{R}^n$ eine offene Menge und
+ $f\in C^{1}(D,\mathbb{R})$. Dann gibt es auf jeder Strecke
+ $[x_0,x]\subset D$ einen Punkt $\xi\in[x_0,x]$, so dass gilt
+ \begin{equation*}
+ f(x)-f(x_0) = \operatorname{grad} f(\xi)^{\top}(x-x_0)
+ \end{equation*}
+\end{YetAnotherTheorem}
+\end{dispExample}
+
+
+\clearpage
+\subsection{Using other theorem environments with \texttt{tcolorbox}}\label{subsec:theorems_other}
+
+Instead of creating theorem environments with the methods described before,
+environments from other packages can be boxed with a |tcolorbox|.
+
+Environments may be created e.g. by methods from the |theorem| package or
+the |amsthm| package. \refCom{tcolorboxenvironment} can be used to put a box
+around these environments.
+
+\inputpreamblelisting{K}
+
+\begin{dispExample}
+\begin{lem}
+ \lipsum[2]
+\end{lem}
+
+\lipsum[3]
+
+\begin{proof}
+ \lipsum*[4]
+\end{proof}
+\end{dispExample}
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.verbatim.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.verbatim.tex
new file mode 100644
index 0000000000..de7d56aeb9
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.verbatim.tex
@@ -0,0 +1,117 @@
+% !TeX root = tcolorbox.tex
+% include file of tcolorbox.tex (manual of the LaTeX package tcolorbox)
+\clearpage
+\section{Saving and Loading of Verbatim Texts}%
+\tcbset{external/prefix=external/verbatim_}%
+The following macros are slightly modified versions of the original macros
+from the known packages |moreverb| and |verbatim|.
+They are used implicitly inside of a |tcolorbox| environment,
+but they can be used outside also.
+\enlargethispage*{1.5cm}
+
+\begin{docEnvironment}{tcbverbatimwrite}{\marg{file name}}
+ Saves the \meta{environment content} to a file named by \meta{file name}.
+ \TeX\ macros inside the environment are not expanded.
+\begin{dispExample}
+\begin{tcbverbatimwrite}{\jobname_verbexp.tex}
+ This text is saved \textit{as is}.
+\end{tcbverbatimwrite}
+
+Now, we are using the file:\par
+\input{\jobname_verbexp.tex}
+\end{dispExample}
+
+This environment may be used inside an own environment. Note, that inside
+the environment definition |\tcbverbatimwrite| has to be used instead of
+|\begin{tcbverbatimwrite}| and |\endtcbverbatimwrite| instead of |\end{tcbverbatimwrite}|.
+\begin{dispExample}
+\newenvironment{myverbatim}{%
+ \begingroup\tcbverbatimwrite{\jobname_myverb.tex}}%
+ {\endtcbverbatimwrite\endgroup}
+
+\begin{myverbatim}
+ This is the text which is saved by my own environment.
+\end{myverbatim}
+
+Now, we are using the file:\par
+\input{\jobname_myverb.tex}
+\end{dispExample}
+\end{docEnvironment}
+
+\begin{docEnvironment}{tcbwritetemp}{}
+ Has the same function as \refEnv{tcbverbatimwrite}, but uses the key value
+ of |tempfile| for the file name.
+\begin{dispExample}
+\begin{tcbwritetemp}
+ This text is saved \textit{as is}.
+\end{tcbwritetemp}
+
+Now, we are using the file:\par
+\tcbusetemp
+\end{dispExample}
+\end{docEnvironment}
+
+
+\begin{docCommand}{tcbusetemp}{}
+ Loads the current temporary file which was saved by \refEnv{tcbwritetemp}.
+\end{docCommand}
+
+\clearpage
+
+\begin{docTcbKey}[][doc new=2017-07-05]{verbatim ignore percent}{\colOpt{=true\textbar false}}{default |true|, initially |false|}
+ If this option is set to be |true|, the percent sign \% is silently
+ ignored for \refEnv{tcbverbatimwrite} and all macros and environments
+ which are built using \refEnv{tcbverbatimwrite}, e.g.\
+ \refEnv{tcbwritetemp}, \refEnv{tcblisting}, or \refEnv{dispExample}.\par
+ This option may be useful for creating some special effects, but mainly
+ it is intended to be applied for documentation with DocStrip.
+ The creation of this option was motivated by Yudai Nakata.
+ Note that this option is not getting reset by \refKey{/tcb/reset}.
+\begin{dispExample*}{sidebyside}
+Normal usage:
+\begin{tcbwritetemp}
+%\begin{center}\bfseries
+This is my text.
+%\end{center}
+\end{tcbwritetemp}
+
+\tcbusetemp
+
+\tcbset{verbatim ignore percent}
+\bigskip Option applied:
+\begin{tcbwritetemp}
+%\begin{center}\bfseries
+This is my text.
+%\end{center}
+\end{tcbwritetemp}
+
+\tcbusetemp
+\end{dispExample*}
+
+\begin{marker}
+Note that \emph{every} percent sign is removed, also escaped ones.
+\end{marker}
+
+\begin{dispExample*}{sidebyside}
+% \tcbuselibrary{listings}
+\def\percent{\%}
+
+\begin{tcblisting}{title=Normal}
+%\begin{center}\bfseries
+This is my 5\percent\ text
+and this is my 10\% text.
+%\end{center}
+\end{tcblisting}
+
+\begin{tcblisting}{
+ title=Option applied,
+ verbatim ignore percent}
+%\begin{center}\bfseries
+This is my 5\percent\ text
+and this is my 10\% text.
+%\end{center}
+\end{tcblisting}
+\end{dispExample*}
+
+\end{docTcbKey}
+
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.vignette.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.vignette.tex
new file mode 100644
index 0000000000..c1d9d7efc0
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.vignette.tex
@@ -0,0 +1,760 @@
+% !TeX root = tcolorbox.tex
+% include file of tcolorbox.tex (manual of the LaTeX package tcolorbox)
+\clearpage
+\section{Library \mylib{vignette}}\label{sec:vignette}%
+\tcbset{external/prefix=external/vignette_}%
+The library is loaded by a package option or inside the preamble by:
+\begin{dispListing}
+\tcbuselibrary{vignette}
+\end{dispListing}
+This also loads the \mylib{skins} library, see \Fullref{sec:skins},
+and the |fadings| library of |tikz| \cite{tantau:tikz_and_pgf}.
+
+
+\subsection{Vignette Drawing}\label{subsec:vignettedrawing}
+
+\begin{docCommand}[doc new=2016-04-22]{tcbvignette}{\marg{options}}
+ In this context, a \emph{vignette} is a four part rectangular frame.
+ It is constructed as several \tikzname\ paths and, therefore, can only be
+ used inside a |tikzpicture| environment or inside \refEnv{tcolorbox} options.
+
+ The \meta{options} control position, size and style settings of the vignette.
+ Theses options have the common key path |/tcb/vig/| and are described in
+ the following.
+
+ The next examples show direct \refCom{tcbvignette} usage without
+ a \refEnv{tcolorbox}.
+
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tikzpicture}
+ \tcbvignette{}
+\end{tikzpicture}
+\end{dispExample*}
+
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tikzpicture}
+ \node[draw,fill=blue!15!white] (A) {Test};
+ \tcbvignette{outside node=A,raised color=blue}
+\end{tikzpicture}
+\end{dispExample*}
+
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tikzpicture}
+ \node[draw,fill=blue!15!white] (A) {Another Test};
+ \tcbvignette{size=3mm,outside node=A,
+ north style=red,east style=yellow,
+ south style=blue,west style=green}
+\end{tikzpicture}
+\end{dispExample*}
+
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tikzpicture}
+ \node[inner sep=3mm,fill=red!75] (A) {Test};
+ \tcbvignette{over node=A,fade in}
+\end{tikzpicture}
+\end{dispExample*}
+
+\refCom{tcbvignette} can be used directly inside appropriate options keys
+for \refEnv{tcolorbox}. Note that options like \refKey{/tcb/underlay} need
+\refKey{/tcb/enhanced} or similar settings.
+
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tcolorbox}[enhanced,size=small,sharp corners,
+ colback=green!10,colframe=green!50!black,
+ boxrule=1mm,titlerule=0mm,
+ title=My title,center title,fonttitle=\bfseries,
+ underlay={\tcbvignette{size=1mm,inside node=frame,
+ raised color=green!50!black}}]
+ This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+
+Mostly, convenient short cuts like \refKey{/tcb/underlay vignette} can
+be used to add a \emph{vignette} to a \refEnv{tcolorbox}. Here, \refCom{tcbvignette}
+is used internally.
+
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tcolorbox}[enhanced,size=small,sharp corners,
+ colback=green!10,colframe=green!50!black,
+ boxrule=1mm,titlerule=0mm,
+ title=My title,center title,fonttitle=\bfseries,
+ underlay vignette]
+ This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+
+\end{docCommand}
+
+
+
+\subsection{Generic Geometry Settings}\label{subsec:vignettegeometry}
+
+
+\begin{vigTcbKey}[][doc new=2016-04-22]{xmin}{=\meta{length}}{no default, initially |0pt|}
+ Sets the lower horizontal limit of a \refCom{tcbvignette}.
+\end{vigTcbKey}
+
+\begin{vigTcbKey}[][doc new=2016-04-22]{xmax}{=\meta{length}}{no default, initially |1cm|}
+ Sets the upper horizontal limit of a \refCom{tcbvignette}.
+\end{vigTcbKey}
+
+\begin{vigTcbKey}[][doc new=2016-04-22]{ymin}{=\meta{length}}{no default, initially |0pt|}
+ Sets the lower vertical limit of a \refCom{tcbvignette}.
+\end{vigTcbKey}
+
+\begin{vigTcbKey}[][doc new=2016-04-22]{ymax}{=\meta{length}}{no default, initially |1cm|}
+ Sets the upper vertical limit of a \refCom{tcbvignette}.
+\end{vigTcbKey}
+
+
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tikzpicture}
+ \fill [black!20] (0,0) rectangle (3,2);
+ \path [pattern=checkerboard,pattern color=black!30]
+ (0,0) rectangle (3,2);
+ \tcbvignette{xmin=1cm,xmax=2.5cm,ymin=0.5cm,ymax=1.75cm}
+\end{tikzpicture}
+\end{dispExample*}
+
+
+\begin{vigTcbKey}[][doc new=2016-04-22]{lower left corner}{=\meta{coordinates}}{style, initially |0,0|}
+ Sets the lower left corner of a \refCom{tcbvignette}.
+ This style sets \refKey{/tcb/vig/xmin} and \refKey{/tcb/vig/ymin}.
+\end{vigTcbKey}
+
+\begin{vigTcbKey}[][doc new=2016-04-22]{upper right corner}{=\meta{coordinates}}{style, initially |1,1|}
+ Sets the upper right corner of a \refCom{tcbvignette}.
+ This style sets \refKey{/tcb/vig/xmax} and \refKey{/tcb/vig/ymax}.
+\end{vigTcbKey}
+
+
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tikzpicture}
+ \fill [black!20] (0,0) rectangle (3,2);
+ \path [pattern=checkerboard,pattern color=black!30]
+ (0,0) rectangle (3,2);
+ \tcbvignette{lower left corner={1,0.5},
+ upper right corner={2.5,1.75}}
+\end{tikzpicture}
+\end{dispExample*}
+
+
+\begin{vigTcbKey}[][doc new=2016-04-22]{inside node}{=\meta{name}}{style, initally unset}
+ Places the \refCom{tcbvignette} inside the node with the given \meta{name}.
+ The outer limits of the \emph{vignette} are adapted to the node geometry.
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tikzpicture}
+ \node[minimum width=2cm,minimum height=1cm] (A) {Node A};
+ \tcbvignette{inside node=A}
+ \draw[very thick] (A.south west) rectangle (A.north east);
+\end{tikzpicture}
+\end{dispExample*}
+\end{vigTcbKey}
+
+
+\begin{vigTcbKey}[][doc new=2016-04-22]{outside node}{=\meta{name}}{style, initally unset}
+ Places the \refCom{tcbvignette} outside the node with the given \meta{name}.
+ The inner limits of the \emph{vignette} are adapted to the node geometry.
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tikzpicture}
+ \node[minimum width=2cm,minimum height=1cm] (A) {Node A};
+ \tcbvignette{outside node=A}
+ \draw[very thick] (A.south west) rectangle (A.north east);
+\end{tikzpicture}
+\end{dispExample*}
+\end{vigTcbKey}
+
+
+\begin{vigTcbKey}[][doc new=2016-04-22]{over node}{=\meta{name}}{style, initally unset}
+ Places the \refCom{tcbvignette} over the node with the given \meta{name}.
+ The outer limits of the \emph{vignette} are adapted to the node geometry, but
+ are shifted to the outside by \refKey{/tcb/vig/over node offset}.
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tikzpicture}
+ \node[minimum width=2cm,minimum height=1cm] (A) {Node A};
+ \tcbvignette{over node offset=1mm,over node=A}
+ \draw[very thick] (A.south west) rectangle (A.north east);
+\end{tikzpicture}
+\end{dispExample*}
+\end{vigTcbKey}
+
+\begin{vigTcbKey}[][doc new=2016-04-22]{over node offset}{=\meta{length}}{no default, initially |0.1mm|}
+ Determines the shift value for \refKey{/tcb/vig/over node}.
+ Note that \refKey{/tcb/vig/over node offset} has to be set \emph{before}
+ \refKey{/tcb/vig/over node} is used.
+\end{vigTcbKey}
+
+
+\begin{vigTcbKey}[][doc new=2016-04-22]{north size}{=\meta{length}}{no default, initially |2mm|}
+ Sets the thickness of the north \emph{vignette} part.
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tikzpicture}
+ \tcbvignette{north size=4mm}
+\end{tikzpicture}
+\end{dispExample*}
+\end{vigTcbKey}
+
+\begin{vigTcbKey}[][doc new=2016-04-22]{south size}{=\meta{length}}{no default, initially |2mm|}
+ Sets the thickness of the south \emph{vignette} part.
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tikzpicture}
+ \tcbvignette{south size=4mm}
+\end{tikzpicture}
+\end{dispExample*}
+\end{vigTcbKey}
+
+\begin{vigTcbKey}[][doc new=2016-04-22]{east size}{=\meta{length}}{no default, initially |2mm|}
+ Sets the thickness of the east \emph{vignette} part.
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tikzpicture}
+ \tcbvignette{east size=4mm}
+\end{tikzpicture}
+\end{dispExample*}
+\end{vigTcbKey}
+
+\begin{vigTcbKey}[][doc new=2016-04-22]{west size}{=\meta{length}}{no default, initially |2mm|}
+ Sets the thickness of the west \emph{vignette} part.
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tikzpicture}
+ \tcbvignette{west size=4mm}
+\end{tikzpicture}
+\end{dispExample*}
+\end{vigTcbKey}
+
+\begin{vigTcbKey}[][doc new=2016-04-22]{vertical size}{=\meta{length}}{style, initially |2mm|}
+ Sets \refKey{/tcb/vig/north size} and \refKey{/tcb/vig/south size},
+ to the given \meta{length}.
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tikzpicture}
+ \tcbvignette{vertical size=4mm}
+\end{tikzpicture}
+\end{dispExample*}
+\end{vigTcbKey}
+
+\begin{vigTcbKey}[][doc new=2016-04-22]{horizontal size}{=\meta{length}}{style, initially |2mm|}
+ Sets \refKey{/tcb/vig/east size} and \refKey{/tcb/vig/west size},
+ to the given \meta{length}.
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tikzpicture}
+ \tcbvignette{horizontal size=4mm}
+\end{tikzpicture}
+\end{dispExample*}
+\end{vigTcbKey}
+
+
+\begin{vigTcbKey}[][doc new=2016-04-22]{size}{=\meta{length}}{style, initially |2mm|}
+ Sets \refKey{/tcb/vig/north size}, \refKey{/tcb/vig/south size},
+ \refKey{/tcb/vig/east size}, and \refKey{/tcb/vig/west size} to the given \meta{length}.
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tikzpicture}
+ \tcbvignette{size=4mm}
+\end{tikzpicture}
+\end{dispExample*}
+\end{vigTcbKey}
+
+
+\begin{marker}
+\refKey{/tcb/vig/north size}, \refKey{/tcb/vig/south size}, etc. have to
+be set \emph{before} \refKey{/tcb/vig/outside node} is used.
+\end{marker}
+
+
+
+\subsection{Generic Color and Style Settings}\label{subsec:vignettestyle}
+
+\begin{vigTcbKey}[][doc new=2016-04-22]{north style}{=\marg{style}}{no default, initially |red!50!white|}
+ Sets \tikzname\ \meta{style} options for the north \emph{vignette} part.
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tikzpicture}
+ \tcbvignette{north style=blue}
+\end{tikzpicture}
+\end{dispExample*}
+\end{vigTcbKey}
+
+\begin{vigTcbKey}[][doc new=2016-04-22]{south style}{=\marg{style}}{no default, initially |red!50!black|}
+ Sets \tikzname\ \meta{style} options for the south \emph{vignette} part.
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tikzpicture}
+ \tcbvignette{south style={draw=blue,fill=yellow}}
+\end{tikzpicture}
+\end{dispExample*}
+\end{vigTcbKey}
+
+\clearpage
+
+\begin{vigTcbKey}[][doc new=2016-04-22]{east style}{=\marg{style}}{no default, initially |red!75!black|}
+ Sets \tikzname\ \meta{style} options for the east \emph{vignette} part.
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tikzpicture}
+ \tcbvignette{east style={left color=yellow!75!black,
+ right color=blue!75!black}}
+\end{tikzpicture}
+\end{dispExample*}
+\end{vigTcbKey}
+
+
+\begin{vigTcbKey}[][doc new=2016-04-22]{west style}{=\marg{style}}{no default, initially |red!75!white|}
+ Sets \tikzname\ \meta{style} options for the west \emph{vignette} part.
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tikzpicture}
+ \tcbvignette{west style={preaction={fill=black!20},
+ pattern=checkerboard,
+ pattern color=black!30}}
+\end{tikzpicture}
+\end{dispExample*}
+\end{vigTcbKey}
+
+
+\begin{vigTcbKey}[][doc new=2016-05-24]{scope}{=\marg{style}}{no default, initially empty}
+ The four \emph{vignette} parts are drawn inside a \tikzname\ |scope|
+ environment which takes the given \meta{style} as option.
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tikzpicture}
+ \tcbvignette{scope={transparency group,opacity=0.25}}
+\end{tikzpicture}
+\end{dispExample*}
+\end{vigTcbKey}
+
+
+
+\begin{vigTcbKey}[][doc new=2016-04-22]{raised color}{=\meta{color}}{no default}
+ Creates a raised frame impression by setting the four style options
+ \refKey{/tcb/vig/north style},
+ \refKey{/tcb/vig/south style},
+ \refKey{/tcb/vig/east style}, and
+ \refKey{/tcb/vig/west style}
+ to darkened and lightened variations of the given \meta{color}.
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tikzpicture}
+ \tcbvignette{raised color=blue}
+\end{tikzpicture}
+\end{dispExample*}
+\end{vigTcbKey}
+
+
+\begin{vigTcbKey}[][doc new=2016-04-22]{lowered color}{=\meta{color}}{no default}
+ Creates a lowered frame impression by setting the four style options
+ \refKey{/tcb/vig/north style},
+ \refKey{/tcb/vig/south style},
+ \refKey{/tcb/vig/east style}, and
+ \refKey{/tcb/vig/west style}
+ to darkened and lightened variations of the given \meta{color}.
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tikzpicture}
+ \tcbvignette{lowered color=green!75!black}
+\end{tikzpicture}
+\end{dispExample*}
+\end{vigTcbKey}
+
+
+\begin{vigTcbKey}[][doc new=2016-04-22]{color from}{=\meta{inner} |to| \meta{outer}}{no default}
+ Sets the four style options
+ \refKey{/tcb/vig/north style},
+ \refKey{/tcb/vig/south style},
+ \refKey{/tcb/vig/east style}, and
+ \refKey{/tcb/vig/west style}
+ such that the color shades from the
+ \meta{inner} color to the \meta{outer} color.
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tikzpicture}
+ \tcbvignette{color from=red to blue!50}
+\end{tikzpicture}
+\end{dispExample*}
+\end{vigTcbKey}
+
+
+\begin{vigTcbKey}[][doc new=2016-04-22]{base color}{=\meta{color}}{no default}
+ Sets the base color for \refKey{/tcb/vig/raised color},
+ \refKey{/tcb/vig/lowered color}, \refKey{/tcb/finish fading vignette}.
+ Typically, this value has not to be set directly.
+\end{vigTcbKey}
+
+
+\clearpage
+\begin{vigTcbKey}[][doc new=2016-04-22]{draw method}{=\docValue{direct}\textbar\docValue{clipped}}{no default, initially |direct|}
+ Especially, if shadings or fadings are used, the drawn \emph{vignette}
+ graphs are displayed sometimes not as perfect as expected. Glitches and
+ imperfections are very dependent on the previewer software.
+ The \refKey{/tcb/vig/draw method} intends to give a choice of alternative
+ drawing methods.
+ \begin{itemize}
+ \item\docValue{direct}: The \emph{vignette} parts are drawn/filled
+ by using a single \tikzname\ graph. This is the preferred (and default)
+ method for solid color graphs.
+ \item\docValue{clipped}: The \emph{vignette} parts are drawn somewhat
+ oversized and are clipped to the intended region.
+ In combination with shadings and fadings this seems to give a
+ better/different optical result (depends on the previewer).
+ \end{itemize}
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tikzpicture}
+ \tcbvignette{color from=red to yellow}
+\end{tikzpicture}
+\end{dispExample*}
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tikzpicture}
+ \tcbvignette{color from=red to yellow,draw method=clipped}
+\end{tikzpicture}
+\end{dispExample*}
+
+\begin{marker}
+This option is a stopgap and may be changed or preferably removed in
+future.
+\end{marker}
+\end{vigTcbKey}
+
+
+
+\subsection{Generic Fading Settings}\label{subsec:vignettefading}
+
+The |fadings| library of |tikz| \cite{tantau:tikz_and_pgf} is loaded
+automatically by the \mylib{vignette} library.
+Amongst others, the fadings
+\docFading{west},
+\docFading{east},
+\docFading{north}, and
+\docFading{south} are defined inside the |fadings| library.
+
+The \mylib{vignette} library adds some more fadings called
+\docFading{semi west},
+\docFading{semi east},
+\docFading{semi north}, and
+\docFading{semi south}.
+These fadings are much \emph{weaker} than the normal fadings.
+
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tikzpicture}
+ \fill [black!20] (0,0) rectangle (1,1);
+ \path [pattern=checkerboard,pattern color=black!30]
+ (0,0) rectangle (1,1);
+ \fill [path fading=semi west,blue] (0,0) rectangle (1,1);
+\end{tikzpicture}
+\end{dispExample*}
+
+
+
+\begin{tcboxedraster}{base example,title=Comparison of the Fadings}
+ \def\doShadingExample#1{%
+ \begin{tcolorbox}[sbs,size=fbox,colback=white,lower separated=false,
+ righthand width=2cm,left=5mm]
+ \docFading{#1}\tcblower
+ \begin{tikzpicture}
+ \fill [black!20] (0,0) rectangle (1,1);
+ \path [pattern=checkerboard,pattern color=black!30] (0,0) rectangle (1,1);
+ \fill [path fading=#1,blue] (0,0) rectangle (1,1);
+ \end{tikzpicture}
+ \end{tcolorbox}}%
+ \doShadingExample{west}
+ \doShadingExample{east}
+ \doShadingExample{north}
+ \doShadingExample{south}
+ \doShadingExample{semi west}
+ \doShadingExample{semi east}
+ \doShadingExample{semi north}
+ \doShadingExample{semi south}
+\end{tcboxedraster}
+
+
+\begin{vigTcbKey}[][doc new=2016-04-22]{fade in}{\colOpt{=\marg{style}}}{style, default |white|}
+ Sets the four style options
+ \refKey{/tcb/vig/north style},
+ \refKey{/tcb/vig/south style},
+ \refKey{/tcb/vig/east style}, and
+ \refKey{/tcb/vig/west style}
+ such that the paths fade from outside to inside.
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tikzpicture}
+ \fill [black!20] (-0.5,-0.5) rectangle (1.5,1.5);
+ \path [pattern=checkerboard,pattern color=black!30]
+ (-0.5,-0.5) rectangle (1.5,1.5);
+ \tcbvignette{fade in=blue}
+\end{tikzpicture}
+\end{dispExample*}
+\end{vigTcbKey}
+
+
+\begin{vigTcbKey}[][doc new=2016-04-22]{fade out}{\colOpt{=\marg{style}}}{style, default |white|}
+ Sets the four style options
+ \refKey{/tcb/vig/north style},
+ \refKey{/tcb/vig/south style},
+ \refKey{/tcb/vig/east style}, and
+ \refKey{/tcb/vig/west style}
+ such that the paths fade from inside to outside.
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tikzpicture}
+ \fill [black!20] (-0.5,-0.5) rectangle (1.5,1.5);
+ \path [pattern=checkerboard,pattern color=black!30]
+ (-0.5,-0.5) rectangle (1.5,1.5);
+ \tcbvignette{fade out=blue}
+\end{tikzpicture}
+\end{dispExample*}
+\end{vigTcbKey}
+
+
+\begin{vigTcbKey}[][doc new=2016-04-22]{semi fade in}{\colOpt{=\marg{style}}}{style, default |white|}
+ Sets the four style options
+ \refKey{/tcb/vig/north style},
+ \refKey{/tcb/vig/south style},
+ \refKey{/tcb/vig/east style}, and
+ \refKey{/tcb/vig/west style}
+ such that the paths fade weak from outside to inside.
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tikzpicture}
+ \fill [black!20] (-0.5,-0.5) rectangle (1.5,1.5);
+ \path [pattern=checkerboard,pattern color=black!30]
+ (-0.5,-0.5) rectangle (1.5,1.5);
+ \tcbvignette{semi fade in=blue}
+\end{tikzpicture}
+\end{dispExample*}
+\end{vigTcbKey}
+
+
+\begin{vigTcbKey}[][doc new=2016-04-22]{semi fade out}{\colOpt{=\marg{style}}}{style, default |white|}
+ Sets the four style options
+ \refKey{/tcb/vig/north style},
+ \refKey{/tcb/vig/south style},
+ \refKey{/tcb/vig/east style}, and
+ \refKey{/tcb/vig/west style}
+ such that the paths fade weak from inside to outside.
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tikzpicture}
+ \fill [black!20] (-0.5,-0.5) rectangle (1.5,1.5);
+ \path [pattern=checkerboard,pattern color=black!30]
+ (-0.5,-0.5) rectangle (1.5,1.5);
+ \tcbvignette{semi fade out=blue}
+\end{tikzpicture}
+\end{dispExample*}
+\end{vigTcbKey}
+
+
+
+
+\clearpage
+\subsection{Vignette as Underlay}\label{subsec:vignetteunderlay}
+
+\begin{docTcbKey}[][doc new=2016-04-22]{underlay vignette}{\colOpt{=\marg{options}}}{style, no default}
+ This puts a \refCom{tcbvignette} with the given \meta{options}
+ as \refKey{/tcb/underlay} to a \refEnv{tcolorbox}.
+ The dimensions of the \emph{vignette} are matched to the dimensions of
+ the \refEnv{tcolorbox}. For example, \refKey{/tcb/leftrule} is used as
+ \refKey{/tcb/vig/west size}. Also, \refKey{/tcb/colframe} is used as
+ \refKey{/tcb/vig/raised color}.
+
+ For a \refKey{/tcb/breakable} tcolorbox, the \emph{vignette} is also
+ been broken.
+ Alternatively, \refCom{tcbvignette} could be used directly inside
+ an \refKey{/tcb/underlay} with appropriate settings.
+
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tcolorbox}[enhanced,size=small,sharp corners,
+ colback=green!10,colframe=green!50!black,
+ boxrule=2mm,titlerule=0mm,
+ title=My title,center title,fonttitle=\bfseries,
+ underlay vignette]
+ This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tcolorbox}[enhanced,size=small,arc=0pt,
+ colback=blue!10,colframe=blue,boxrule=2mm,
+ underlay vignette={size=1.5mm}]
+ This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tcolorbox}[enhanced,size=small,sharp corners,
+ colframe=red,interior hidden,boxrule=2mm,
+ colupper=white,center upper,fontupper=\bfseries,
+ underlay vignette]
+ This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tcolorbox}[enhanced,size=small,sharp corners,
+ colback=red!50!yellow,frame hidden,boxrule=2mm,
+ underlay vignette={color from=red!50!yellow to white,
+ draw method=clipped,size=2.1mm}]
+ This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\tcbox[enhanced,sharp corners,colback=red!10,colframe=red]
+ {Test}
+
+\tcbox[enhanced,sharp corners,colback=red!10,colframe=red,
+ underlay vignette]{Test}
+\end{dispExample*}
+
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}[][doc new=2016-04-22]{underlay raised shading vignette}{\colOpt{=\marg{options}}}{style, no default}
+ This is a special style derived from \refKey{/tcb/underlay vignette},
+ where the frame color is shaded to create a soft raised frame impression.
+
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tcolorbox}[enhanced,sharp corners,
+ colback=green!10,
+ colframe=green!50!black,
+ size=small,boxrule=2mm,titlerule=0mm,
+ title=My title,center title,fonttitle=\bfseries,
+ underlay raised shading vignette]
+ This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}
+
+
+
+\begin{docTcbKey}[][doc new=2016-04-22]{underlay raised fading vignette}{\colOpt{=\marg{options}}}{style, no default}
+ This style gives a similar effect as \refKey{/tcb/underlay raised shading vignette},
+ but a path fading is used here. Different optical impression are very
+ previewer-dependent.
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tcolorbox}[enhanced,sharp corners,
+ colback=green!10,
+ colframe=green!50!black,
+ size=small,boxrule=2mm,titlerule=0mm,
+ title=My title,center title,fonttitle=\bfseries,
+ underlay raised fading vignette]
+ This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}
+
+\begin{docTcbKey}[][doc new=2016-04-22]{underlay shade in vignette}{\colOpt{=\marg{options}}}{style, no default}
+ This is a special style derived from \refKey{/tcb/underlay vignette},
+ where the frame color is shaded into the interior color.
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tcolorbox}[enhanced,sharp corners,frame hidden,
+ colback=green!10,
+ colframe=green!50!black,
+ size=small,boxrule=2mm,titlerule=0mm,
+ underlay shade in vignette]
+ This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+\end{docTcbKey}
+
+
+\clearpage
+\subsection{Vignette as Finish}\label{subsec:vignettefinish}
+
+
+\begin{docTcbKey}[][doc new=2016-04-22]{finish vignette}{\colOpt{=\marg{options}}}{style, no default}
+ This puts a \refCom{tcbvignette} with the given \meta{options}
+ as \refKey{/tcb/finish} to a \refEnv{tcolorbox}.
+ The default style settings create a raised frame impression by
+ drawing black and white color parts with reduced opacity.
+
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tcolorbox}[enhanced,size=small,
+ colback=green!10,colframe=green!50!black,
+ boxrule=0.5mm,titlerule=0mm,
+ title=My title,center title,fonttitle=\bfseries,
+ finish vignette={size=1mm}]
+ This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\tcbincludegraphics[blankest,width=3cm,
+ finish vignette={size=3mm}]{pink_marble.png}
+\end{dispExample*}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}[][doc new=2016-04-22]{finish raised fading vignette}{\colOpt{=\marg{options}}}{style, no default}
+ This puts a \refCom{tcbvignette} with the given \meta{options}
+ as \refKey{/tcb/finish} to a \refEnv{tcolorbox}.
+ The default style settings create a soft raised frame impression by
+ drawing fading black and white color parts.
+
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tcolorbox}[enhanced,size=small,
+ colback=green!10,colframe=green!50!black,
+ boxrule=0.5mm,titlerule=0mm,
+ title=My title,center title,fonttitle=\bfseries,
+ finish raised fading vignette={size=1mm}]
+ This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\tcbincludegraphics[blankest,width=3cm,
+ finish raised fading vignette={size=3mm}]{pink_marble.png}
+\end{dispExample*}
+
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docTcbKey}[][doc new=2016-04-22]{finish fading vignette}{\colOpt{=\marg{options}}}{style, no default}
+ This puts a \refCom{tcbvignette} with the given \meta{options}
+ as \refKey{/tcb/finish} to a \refEnv{tcolorbox}.
+ The default style settings fade the box into white from inside to outside.
+ Note that \refKey{/tcb/vig/over node} is used here.
+ \refKey{/tcb/vig/over node offset} can be adapted to overlap the box
+ more or less. The fade color can be set using
+ \refKey{/tcb/vig/base color}.
+
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tcolorbox}[enhanced,size=small,
+ colback=green!10,colframe=green!50!black,
+ boxrule=0.5mm,titlerule=0mm,
+ title=My title,center title,fonttitle=\bfseries,
+ finish fading vignette={size=2mm}]
+ This is a tcolorbox.
+\end{tcolorbox}
+\end{dispExample*}
+
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\tcbincludegraphics[blankest,width=3cm,
+ finish fading vignette={size=3mm}]{pink_marble.png}
+\end{dispExample*}
+
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tcolorbox}[colback=blue!50!black,size=small,
+ title=Example]
+\tcbincludegraphics[blankest,
+ finish fading vignette={base color=blue!50!black,size=3mm,
+ over node offset=0.2mm}]{pink_marble.png}
+\end{tcolorbox}
+\end{dispExample*}
+
+\end{docTcbKey}
+
+
+\begin{dispExample*}{}
+\begin{tcbitemize}[raster columns=3,bicolor,
+ raster equal height,sharp corners,boxrule=2mm,
+ colframe=red,colback=yellow!5,colbacklower=yellow!25!red!20]
+\tcbitem A
+\tcbitem[underlay vignette] B
+\tcbitem[underlay={\tcbvignette{inside node=interior,
+ lowered color=red,size=1mm}}] C
+\tcbitem[underlay vignette,
+ underlay={\tcbvignette{inside node=interior,
+ lowered color=red,size=1mm}}] D
+\tcbitem[boxrule=3mm,underlay vignette={size=2mm},
+ underlay={\tcbvignette{inside node=interior,
+ lowered color=red,size=1mm}}] E
+\tcbitem[underlay raised shading vignette] F
+\tcbitem[underlay raised shading vignette,
+ underlay={\tcbvignette{inside node=interior,
+ lowered color=red,size=1mm}}] G
+\tcbitem[title=H1,underlay={\tcbvignette{inside node=interior,
+ lowered color=red,size=1mm}},finish vignette] H2
+\tcbitem[boxrule=0.25mm,colback=red!30,finish vignette] I1 \tcblower I2
+\tcbitem[tile,colback=red!30,finish raised fading vignette] J1 \tcblower J2
+\tcbitem[boxrule=1mm,underlay={\tcbvignette{inside node=interior,
+ raised color=red,size=1mm}}] K
+\tcbitem[boxrule=1mm,title=L1,underlay={\tcbvignette{inside node=title,
+ lowered color=red,size=0.5mm}}] L2
+\end{tcbitemize}
+\end{dispExample*}
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.xparse.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.xparse.tex
new file mode 100644
index 0000000000..f5ad60430a
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.xparse.tex
@@ -0,0 +1,589 @@
+% !TeX root = tcolorbox.tex
+% include file of tcolorbox.tex (manual of the LaTeX package tcolorbox)
+\clearpage
+\section{Library \mylib{xparse}}\label{sec:xparse}%
+\tcbset{external/prefix=external/xparse_}%
+The library is loaded by a package option or inside the preamble by:
+\begin{dispListing}
+\tcbuselibrary{xparse}
+\end{dispListing}
+This also loads the package |xparse| \cite{latexproject:xparse}.
+
+The purpose of this library is to give comfortable access to the
+powerful document command production with |xparse| for |tcolorbox|.
+See the |xparse| package documentation \cite{latexproject:xparse}
+for details about the argument \meta{specification} used in this section.
+
+%\subsection{Producing Document Commands With \texttt{xparse}}
+
+
+\subsection{Option Keys}\label{subsec:xparse_options}
+
+\begin{docTcbKey}{verbatim}{}{style, no value}
+ Sets options for a \textit{verbatim} style \refCom{tcbox}.
+ Since the indented boxes may contain only very few words, the
+ dimensions are made smaller and \refKey{/tcb/nobeforeafter}
+ and \refKey{/tcb/tcbox raise base} are set.
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+\DeclareTotalTCBox{\myverb}{ v }{verbatim,
+ colframe=red!75!black,colupper=blue}{#1}
+
+\myverb{\textbf} is a \myverb{\LaTeX} command.
+\end{dispExample*}
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{IfNoValueTF}{=\marg{argument}\marg{true options}\marg{false options}}{no default}
+ Wraps the |\IfNoValueTF| command of |xparse| for option setting.
+ If the \meta{argument} has no value, the \meta{true options} are set.
+ Otherwise, the \meta{false options} are set.
+\begin{dispExample}
+\DeclareTColorBox{mybox}{ o }{colframe=red!75!black,
+ IfNoValueTF={#1}{colback=red!5!white}{enhanced,interior style image=#1}}
+
+\begin{mybox}
+This is a tcolorbox.
+\end{mybox}
+
+\begin{mybox}[goldshade.png]
+This is a tcolorbox.
+\end{mybox}
+\end{dispExample}
+\end{docTcbKey}
+
+\clearpage
+\begin{docTcbKey}{IfValueTF}{=\marg{argument}\marg{true options}\marg{false options}}{no default}
+ Wraps the |\IfValueTF| command of |xparse| for option setting.
+ If the \meta{argument} has a value, the \meta{true options} are set.
+ Otherwise, the \meta{false options} are set.
+\begin{dispExample}
+\DeclareTColorBox{mybox}{ o }{colframe=red!75!black,colback=red!5!white,
+ IfValueTF={#1}{title={\flqq #1\frqq},fonttitle=\bfseries}{}}
+
+\begin{mybox}
+This is a tcolorbox.
+\end{mybox}
+
+\begin{mybox}[My title]
+This is a tcolorbox.
+\end{mybox}
+\end{dispExample}
+\end{docTcbKey}
+
+\begin{docTcbKey}{IfBooleanTF}{=\marg{argument}\marg{true options}\marg{false options}}{no default}
+ Wraps the |\IfBooleanTF| command of |xparse| for option setting.
+ If the \meta{argument} is |\BooleanTue|, the \meta{true options} are set.
+ If the \meta{argument} is |\BooleanFalse|, the \meta{false options} are set.
+
+\begin{dispExample}
+\DeclareTColorBox{mybox}{ s }{colframe=red!75!black,
+ IfBooleanTF={#1}{colback=yellow!50!red}{colback=red!5!white}}
+
+\begin{mybox}
+This is a tcolorbox.
+\end{mybox}
+
+\begin{mybox}*
+This is a tcolorbox.
+\end{mybox}
+\end{dispExample}
+\end{docTcbKey}
+
+
+
+\clearpage
+\subsection{Producing \texttt{tcolorbox} Environments and Commands}\label{subsec:xparse_tcolorbox}
+
+\begin{docCommand}{DeclareTColorBox}{\oarg{init options}\marg{name}\marg{specification}\marg{options}}
+ Creates a new environment \meta{name} based on \refEnv{tcolorbox}.\\
+ Basically, |\DeclareTColorBox| operates like |\DeclareDocumentEnvironment|. This means,
+ the new environment \meta{name} is constructed with the given argument \meta{specification}.
+ The \meta{options} are given to the underlying \refEnv{tcolorbox}.\\
+ Note that \refKey{/tcb/savedelimiter} is set to the given \meta{name}
+ automatically.\\
+ The \meta{init options} allow setting up automatic numbering,
+ see Section \ref{sec:initkeys} from page \pageref{sec:initkeys}.\\
+ The new environment is always created, irrespective of an already existing
+ environment with the same name.
+
+\begin{dispExample}
+% counter from previous example
+\DeclareTColorBox[use counter from=pabox]{mybox}{ O{red} m d"" !O{} }
+ {enhanced,colframe=#1!75!black,colback=#1!5!white,
+ fonttitle=\bfseries,title={\thetcbcounter~#2},
+ IfValueTF={#3}{watermark text={#3}}{},#4}
+
+\begin{mybox}{My title}
+This is a tcolorbox.
+\end{mybox}
+
+\begin{mybox}[blue]{My title}
+This is a tcolorbox.
+\end{mybox}
+
+\begin{mybox}[green]{My title}"My Watermark"
+This is a tcolorbox.
+\end{mybox}
+
+\begin{mybox}[yellow]{My title}[colbacktitle=yellow!50!white,coltitle=black]
+This is a tcolorbox.
+\end{mybox}
+
+\begin{mybox}[purple]{My title}"All together"[coltitle=yellow]
+This is a tcolorbox.
+\end{mybox}
+\end{dispExample}
+\end{docCommand}
+
+\clearpage
+\begin{docCommand}{NewTColorBox}{\oarg{init options}\marg{name}\marg{specification}\marg{options}}
+ Operates like \refCom{DeclareTColorBox}, but based on |\NewDocumentEnvironment| instead of |\DeclareDocumentEnvironment|.
+ An error is issued if \meta{name} has already been defined.
+\end{docCommand}
+
+\begin{docCommand}{RenewTColorBox}{\oarg{init options}\marg{name}\marg{specification}\marg{options}}
+ Operates like \refCom{DeclareTColorBox}, but based on |\RenewDocumentEnvironment| instead of |\DeclareDocumentEnvironment|.
+ An existing environment is redefined.
+\end{docCommand}
+
+\begin{docCommand}{ProvideTColorBox}{\oarg{init options}\marg{name}\marg{specification}\marg{options}}
+ Operates like \refCom{DeclareTColorBox}, but based on |\ProvideDocumentEnvironment| instead of |\DeclareDocumentEnvironment|.
+ The environment \meta{name} is only created if it is not already defined.
+\end{docCommand}
+
+
+\clearpage
+
+\begin{docCommand}{DeclareTotalTColorBox}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}\marg{content}}
+ Creates a new command \texttt{\textbackslash}\meta{name} based on \refEnv{tcolorbox}.
+ In contrast to \refCom{DeclareTColorBox}, also the \meta{content} of the |tcolorbox| is specified.\\
+ Basically, |\DeclareTotalTColorBox| operates like |\DeclareDocumentCommand|. This means,
+ the new command \texttt{\textbackslash}\meta{name} is constructed with the given argument \meta{specification}.
+ The \meta{options} are given to the underlying \refEnv{tcolorbox} which is filled with
+ the specified \meta{content}.\\
+ Note that \refKey{/tcb/savedelimiter} is set to the given \meta{name}
+ automatically.\\
+ The \meta{init options} allow setting up automatic numbering,
+ see Section \ref{sec:initkeys} from page \pageref{sec:initkeys}.\\
+ The new command is always created, irrespective of an already existing
+ command with the same name.
+
+\begin{dispExample}
+\DeclareTotalTColorBox{\diabox}{ O{} v m }
+ { bicolor,nobeforeafter,equal height group=diabox,width=5.7cm,
+ fonttitle=\bfseries\ttfamily,adjusted title={#2},center title,
+ colframe=blue!20!black,leftupper=0mm,rightupper=0mm,colback=black!75!white,#1}
+ { \tikz\path[fill zoom image={#2}] (0,0) rectangle (\linewidth,4cm);%
+ \tcblower#3}
+
+\diabox{blueshade.png}{Created with |GIMP|.\\\url{http://www.gimp.org}}
+\diabox{goldshade.png}{Created with |GIMP|.\\\url{http://www.gimp.org}}
+
+\end{dispExample}
+\end{docCommand}
+
+\begin{docCommand}{NewTotalTColorBox}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}\marg{content}}
+ Operates like \refCom{DeclareTotalTColorBox}, but based on |\NewDocumentCommand| instead of |\DeclareDocumentCommand|.
+ An error is issued if \texttt{\textbackslash}\meta{name} has already been defined.
+\end{docCommand}
+
+\begin{docCommand}{RenewTotalTColorBox}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}\marg{content}}
+ Operates like \refCom{DeclareTotalTColorBox}, but based on |\RenewDocumentCommand| instead of |\DeclareDocumentCommand|.
+ An existing command is redefined.
+\end{docCommand}
+
+\begin{docCommand}{ProvideTotalTColorBox}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}\marg{content}}
+ Operates like \refCom{DeclareTotalTColorBox}, but based on |\ProvideDocumentCommand| instead of |\DeclareDocumentCommand|.
+ The command \texttt{\textbackslash}\meta{name} is only created if it is not already defined.
+\end{docCommand}
+
+
+\clearpage
+\subsection{Producing \texttt{tcbox} Commands}\label{subsec:xparse_tcbox}
+
+
+\begin{docCommand}{DeclareTCBox}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}}
+ Creates a new command \texttt{\textbackslash}\meta{name} based on \refCom{tcbox}.
+ Basically, |\DeclareTCBox| operates like |\DeclareDocumentCommand|. This means,
+ the new command \texttt{\textbackslash}\meta{name} is constructed with the given argument \meta{specification}.
+ The \meta{options} are given to the underlying \refCom{tcbox}.\\
+ Note that \refKey{/tcb/savedelimiter} is set to the given \meta{name}
+ automatically.\\
+ The \meta{init options} allow setting up automatic numbering,
+ see Section \ref{sec:initkeys} from page \pageref{sec:initkeys}.\\
+ The new command is always created, irrespective of an already existing
+ command with the same name.
+
+\begin{dispExample}
+% counter from previous example
+\DeclareTCBox[use counter from=pabox]{\mybox}{ s m s }
+{ nobeforeafter,colback=red!5!white,colframe=red!75!black,
+ title={#2 (Box \thetcbcounter)},fonttitle=\bfseries,
+ IfBooleanTF={#1}{enhanced,drop shadow}{},
+ IfBooleanTF={#3}{colbacktitle=red!50!white}{} }
+
+\mybox{Bird}{This is my first box.}
+ \hfill
+\mybox*{Tree}{This is my second box.}
+ \par\bigskip
+\mybox{Bike}*{This is my third box.}
+ \hfill
+\mybox*{City}*{This is my fourth box.}
+\end{dispExample}
+\end{docCommand}
+
+\begin{docCommand}{NewTCBox}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}}
+ Operates like \refCom{DeclareTCBox}, but based on |\NewDocumentCommand| instead of |\DeclareDocumentCommand|.
+ An error is issued if \texttt{\textbackslash}\meta{name} has already been defined.
+\end{docCommand}
+
+\begin{docCommand}{RenewTCBox}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}}
+ Operates like \refCom{DeclareTCBox}, but based on |\RenewDocumentCommand| instead of |\DeclareDocumentCommand|.
+ An existing command is redefined.
+\end{docCommand}
+
+\begin{docCommand}{ProvideTCBox}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}}
+ Operates like \refCom{DeclareTCBox}, but based on |\ProvideDocumentCommand| instead of |\DeclareDocumentCommand|.
+ The command \texttt{\textbackslash}\meta{name} is only created if it is not already defined.
+\end{docCommand}
+
+
+
+\clearpage
+
+\begin{docCommand}{DeclareTotalTCBox}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}\marg{content}}
+ Creates a new command \texttt{\textbackslash}\meta{name} based on \refCom{tcbox}.
+ In contrast to \refCom{DeclareTCBox}, also the \meta{content} of the |tcbox| is specified.\\
+ Basically, |\DeclareTotalTCBox| operates like |\DeclareDocumentCommand|. This means,
+ the new command \texttt{\textbackslash}\meta{name} is constructed with the given argument \meta{specification}.
+ The \meta{options} are given to the underlying \refCom{tcbox} which is filled with
+ the specified \meta{content}.\\
+ Note that \refKey{/tcb/savedelimiter} is set to the given \meta{name}
+ automatically.\\
+ The \meta{init options} allow setting up automatic numbering,
+ see Section \ref{sec:initkeys} from page \pageref{sec:initkeys}.\\
+ The new command is always created, irrespective of an already existing
+ command with the same name.
+
+\begin{dispExample}
+\DeclareTotalTCBox{\myverb}{ O{red} v !O{} }
+{ fontupper=\ttfamily,nobeforeafter,tcbox raise base,arc=0pt,outer arc=0pt,
+ top=0pt,bottom=0pt,left=0mm,right=0mm,
+ leftrule=0pt,rightrule=0pt,toprule=0.3mm,bottomrule=0.3mm,boxsep=0.5mm,
+ colback=#1!10!white,colframe=#1!50!black,#3}{#2}
+
+To set a word \textbf{bold} in \myverb{\LaTeX}, use
+\myverb[green]{\textbf{bold}}. Alternatively, write
+\myverb[yellow]{{\bfseries bold}}.
+In \myverb[blue]{\LaTeX}[enhanced,fuzzy halo], other font settings are
+done in the same way, e.\,g. \myverb{\textit}, \myverb{\itshape}\\
+or \myverb[brown]{\texttt}, \myverb[brown]{\ttfamily}.
+\end{dispExample}
+
+The next example uses |\lstinline| from the |listings| package to
+typeset the verbatim content.
+
+\begin{dispExample}
+% \usepackage{listings} or \tcbuselibrary{listings}
+\DeclareTotalTCBox{\commandbox}{ s v }
+{verbatim,colupper=white,colback=black!75!white,colframe=black}
+{\IfBooleanTF{#1}{\textcolor{red}{\ttfamily\bfseries > }}{}%
+ \lstinline[language=command.com,keywordstyle=\color{blue!35!white}\bfseries]^#2^}
+
+\commandbox*{cd "My Documents"} changes to directory \commandbox{My Documents}.
+
+\commandbox*{dir /A} lists the directory content.
+
+\commandbox*{copy example.txt d:\target} copies \commandbox{example.txt} to
+ \commandbox{d:\target}.
+\end{dispExample}
+\end{docCommand}
+
+\clearpage
+\begin{docCommand}{NewTotalTCBox}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}\marg{content}}
+ Operates like \refCom{DeclareTotalTCBox}, but based on |\NewDocumentCommand| instead of |\DeclareDocumentCommand|.
+ An error is issued if \texttt{\textbackslash}\meta{name} has already been defined.
+\end{docCommand}
+
+\begin{docCommand}{RenewTotalTCBox}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}\marg{content}}
+ Operates like \refCom{DeclareTotalTCBox}, but based on |\RenewDocumentCommand| instead of |\DeclareDocumentCommand|.
+ An existing command is redefined.
+\end{docCommand}
+
+\begin{docCommand}{ProvideTotalTCBox}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}\marg{content}}
+ Operates like \refCom{DeclareTotalTCBox}, but based on |\ProvideDocumentCommand| instead of |\DeclareDocumentCommand|.
+ The command \texttt{\textbackslash}\meta{name} is only created if it is not already defined.
+\end{docCommand}
+
+
+\begin{docCommand}{tcboxverb}{\oarg{options}\marg{verbatim box content}}
+ Creates a colored box based on \refCom{tcbox} which is fitted to the width of the given
+ \meta{verbatim box content}.
+ The underlying \refCom{tcbox} is styled with
+ \refKey{/tcb/verbatim} plus the given \meta{options}.
+ The difference to \refCom{tcbox} is that the \meta{verbatim box content} is
+ interpreted \textit{verbatim}. Therefore, |\tcboxverb| acts similar to |\verb|.
+
+\begin{dispExample}
+\tcboxverb{\LaTeX}, \tcboxverb[colback=blue!10!white,colupper=blue]{\LaTeX},
+\tcboxverb[blank,fuzzy halo]{\LaTeX}, \tcboxverb[beamer]{\LaTeX},
+\tcboxverb[enhanced,skin=enhancedmiddle jigsaw,colframe=red]{\LaTeX}.
+\end{dispExample}
+\end{docCommand}
+
+
+
+
+\clearpage
+\subsection{Producing \texttt{tcblisting} Environments}\label{subsec:xparse_listing}
+\begin{marker}
+Besides \mylib{xparse}, the following commands also need the \mylib{listings} library to be included.
+\end{marker}
+
+\begin{docCommand}{DeclareTCBListing}{\oarg{init options}\marg{name}\marg{specification}\marg{options}}
+ Creates a new environment \meta{name} based on \refEnv{tcblisting}.\\
+ Basically, |\DeclareTCBListing| operates like |\DeclareDocumentEnvironment|. This means,
+ the new environment \meta{name} is constructed with the given argument \meta{specification}.
+ The \meta{options} are given to the underlying \refEnv{tcblisting}.\\
+ Note that \refKey{/tcb/savedelimiter} is set to the given \meta{name}
+ automatically.\\
+ The \meta{init options} allow setting up automatic numbering,
+ see Section \ref{sec:initkeys} from page \pageref{sec:initkeys}.\\
+ The new environment is always created, irrespective of an already existing
+ environment with the same name.
+
+\begin{dispExample*}{sbs,lefthand ratio=0.5}
+\DeclareTCBListing{mybox}{ s O{} m }{%
+ colback=red!5!white,
+ colframe=red!75!black,
+ fonttitle=\bfseries,
+ IfBooleanTF={#1}
+ {listing side text}
+ {text side listing},
+ title=#3,#2}
+
+\begin{mybox}{Listing Box}
+This is my
+\LaTeX\ box.
+\end{mybox}
+\bigskip
+
+\begin{mybox}*{Listing Box}
+This is my
+\LaTeX\ box.
+\end{mybox}
+\bigskip
+
+\begin{mybox}[colback=yellow]
+ {Listing Box}
+This is my
+\LaTeX\ box.
+\end{mybox}
+\end{dispExample*}
+\end{docCommand}
+
+
+
+\begin{docCommand}{NewTCBListing}{\oarg{init options}\marg{name}\marg{specification}\marg{options}}
+ Operates like \refCom{DeclareTCBListing}, but based on |\NewDocumentEnvironment| instead of |\DeclareDocumentEnvironment|.
+ An error is issued if \meta{name} has already been defined.
+\end{docCommand}
+
+\begin{docCommand}{RenewTCBListing}{\oarg{init options}\marg{name}\marg{specification}\marg{options}}
+ Operates like \refCom{DeclareTCBListing}, but based on |\RenewDocumentEnvironment| instead of |\DeclareDocumentEnvironment|.
+ An existing environment is redefined.
+\end{docCommand}
+
+\begin{docCommand}{ProvideTCBListing}{\oarg{init options}\marg{name}\marg{specification}\marg{options}}
+ Operates like \refCom{DeclareTCBListing}, but based on |\ProvideDocumentEnvironment| instead of |\DeclareDocumentEnvironment|.
+ The environment \meta{name} is only created if it is not already defined.
+\end{docCommand}
+
+\clearpage
+
+
+\begin{marker}
+With date of 2018-05-12, the |xparse| \cite{latexproject:xparse} package
+changed the argument collection process.
+Now, spaces are ignored which leads to a serious change for listing environments
+ending with an optional argument like \verb+O{}+.
+The former behaviour of respecting spaces can be preserved by adding a \flqq\verb+!+\frqq.
+Note that the following code uses \verb+!O{}+ now.
+\begin{itemize}
+\item For older |xparse| versions, the following code is correct when using \verb+O{}+.
+\item For |xparse| of 2018-05-12, only the first two examples of
+ the following code using \verb+O{}+ are really \flqq good\frqq\ -- all others do not work.
+\item For |xparse| of 2018-05-12 and later, the following code is correct when using \verb+!O{}+.
+\end{itemize}
+\end{marker}
+
+
+
+
+
+\begin{dispListing*}{title={Caveats of using an environment ending with an
+ optional argument},fonttitle=\bfseries}
+\DeclareTCBListing{mybox}{ !O{} }{listing only,#1}
+
+\begin{mybox}[colframe=red]
+\good
+\end{mybox}
+
+\begin{mybox}[colframe=red]\good\end{mybox}
+
+\begin{mybox}
+\good
+\end{mybox}
+
+\begin{mybox} \good\end{mybox}
+
+\begin{mybox}\bad!\end{mybox}
+
+\begin{mybox}
+[\good]
+\end{mybox}
+
+\begin{mybox} [\good]\end{mybox}
+
+\begin{mybox}[\bad!]\end{mybox}
+\end{dispListing*}
+
+\clearpage
+\subsection{Producing \texttt{tcbinputlisting} Commands}\label{subsec:xparse_inputlisting}
+\begin{marker}
+The following commands need the \mylib{listings} library to be included.
+\end{marker}
+
+
+\begin{docCommand}{DeclareTCBInputListing}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}}
+ Creates a new command \texttt{\textbackslash}\meta{name} based on \refCom{tcbinputlisting}.
+ Basically, |\DeclareTCBInputListing| operates like |\DeclareDocumentCommand|. This means,
+ the new command \texttt{\textbackslash}\meta{name} is constructed with the given argument \meta{specification}.
+ The \meta{options} are given to the underlying \refCom{tcbinputlisting}.\\
+ The \meta{init options} allow setting up automatic numbering,
+ see Section \ref{sec:initkeys} from page \pageref{sec:initkeys}.\\
+ The new command is always created, irrespective of an already existing
+ command with the same name.
+
+\begin{dispExample}
+% counter from previous example
+\DeclareTCBInputListing[use counter from=pabox]{\mylisting}{ O{} O{red} m }{%
+ listing file={#3},title=Listing~\thetcbcounter,
+ colback=#2!5!white,colframe=#2!50!black,colbacktitle=#2!75!black,
+ fonttitle=\bfseries,listing only,#1}
+
+\mylisting[before upper=\textit{This is the included file content:}]
+ [blue]{\jobname.tcbtemp}
+\end{dispExample}
+ \end{docCommand}
+
+\begin{docCommand}{NewTCBInputListing}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}}
+ Operates like \refCom{DeclareTCBInputListing}, but based on |\NewDocumentCommand| instead of |\DeclareDocumentCommand|.
+ An error is issued if \texttt{\textbackslash}\meta{name} has already been defined.
+\end{docCommand}
+
+\begin{docCommand}{RenewTCBInputListing}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}}
+ Operates like \refCom{DeclareTCBInputListing}, but based on |\RenewDocumentCommand| instead of |\DeclareDocumentCommand|.
+ An existing command is redefined.
+\end{docCommand}
+
+\begin{docCommand}{ProvideTCBInputListing}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}}
+ Operates like \refCom{DeclareTCBInputListing}, but based on |\ProvideDocumentCommand| instead of |\DeclareDocumentCommand|.
+ The command \texttt{\textbackslash}\meta{name} is only created if it is not already defined.
+\end{docCommand}
+
+
+\clearpage
+\subsection{Producing \texttt{tboxfit} Commands}\label{subsec:xparse_tcboxfit}
+\begin{marker}
+The following commands need the \mylib{fitting} library to be included.
+\end{marker}
+
+\begin{docCommand}{DeclareTCBoxFit}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}}
+ Creates a new command \texttt{\textbackslash}\meta{name} based on \refCom{tcboxfit}.
+ Basically, |\DeclareTCBoxFit| operates like |\DeclareDocumentCommand|. This means,
+ the new command \texttt{\textbackslash}\meta{name} is constructed with the given argument \meta{specification}.
+ The \meta{options} are given to the underlying \refCom{tcboxfit}.\\
+ Note that \refKey{/tcb/savedelimiter} is set to the given \meta{name}
+ automatically.\\
+ The \meta{init options} allow setting up automatic numbering,
+ see Section \ref{sec:initkeys} from page \pageref{sec:initkeys}.\\
+ The new command is always created, irrespective of an already existing
+ command with the same name.
+
+\begin{dispExample*}{sbs,lefthand ratio=0.6}
+% \usepackage{lipsum}
+
+\DeclareTCBoxFit{\mybox}{ O{} m !o }
+ {colback=red!5!white,
+ colframe=red!75!black,
+ width=#2,height=#2/3*2,
+ IfValueTF={#3}{height=#3}{},
+ #1}
+
+\mybox[colback=yellow]{5cm}%
+ {\lipsum[2]}
+
+\mybox[colback=yellow]{5cm}[4cm]{\lipsum[2]}
+\end{dispExample*}
+\end{docCommand}
+
+\begin{docCommand}{NewTCBoxFit}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}}
+ Operates like \refCom{DeclareTCBoxFit}, but based on |\NewDocumentCommand| instead of |\DeclareDocumentCommand|.
+ An error is issued if \texttt{\textbackslash}\meta{name} has already been defined.
+\end{docCommand}
+
+\begin{docCommand}{RenewTCBoxFit}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}}
+ Operates like \refCom{DeclareTCBoxFit}, but based on |\RenewDocumentCommand| instead of |\DeclareDocumentCommand|.
+ An existing command is redefined.
+\end{docCommand}
+
+\begin{docCommand}{ProvideTCBoxFit}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}}
+ Operates like \refCom{DeclareTCBoxFit}, but based on |\ProvideDocumentCommand| instead of |\DeclareDocumentCommand|.
+ The command \texttt{\textbackslash}\meta{name} is only created if it is not already defined.
+\end{docCommand}
+
+\clearpage
+
+\begin{docCommand}{DeclareTotalTCBoxFit}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}\marg{content}}
+ Creates a new command \texttt{\textbackslash}\meta{name} based on \refCom{tcboxfit}.
+ In contrast to \refCom{DeclareTCBoxFit}, also the \meta{content} of the |tcboxfit| is specified.\\
+ Basically, |\DeclareTotalTCBoxFit| operates like |\DeclareDocumentCommand|. This means,
+ the new command \texttt{\textbackslash}\meta{name} is constructed with the given argument \meta{specification}.
+ The \meta{options} are given to the underlying \refCom{tcboxfit} which is filled with
+ the specified \meta{content}.\\
+ Note that \refKey{/tcb/savedelimiter} is set to the given \meta{name}
+ automatically.\\
+ The \meta{init options} allow setting up automatic numbering,
+ see Section \ref{sec:initkeys} from page \pageref{sec:initkeys}.\\
+ The new command is always created, irrespective of an already existing
+ command with the same name.
+
+\begin{dispExample}
+% \usepackage{lipsum}
+
+\DeclareTotalTCBoxFit{\multibox}{ O{} m O{10} m }
+ {nobeforeafter,colback=red!5!white,colframe=red!75!black,width=#2,height=#2/3*2,
+ valign=center,#1}
+ { \foreach \n in {1,...,#3} { #4} }
+
+\multibox{5cm}{I shall not repeat.}
+\multibox[colframe=blue!75!white]{5cm}[20]{I shall not repeat.}\\
+\multibox[colback=yellow,height=5cm]{14cm}[100]{I shall not repeat.}
+\end{dispExample}
+\end{docCommand}
+
+\begin{docCommand}{NewTotalTCBoxFit}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}\marg{content}}
+ Operates like \refCom{DeclareTotalTCBoxFit}, but based on |\NewDocumentCommand| instead of |\DeclareDocumentCommand|.
+ An error is issued if \texttt{\textbackslash}\meta{name} has already been defined.
+\end{docCommand}
+
+\begin{docCommand}{RenewTotalTCBoxFit}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}\marg{content}}
+ Operates like \refCom{DeclareTotalTCBoxFit}, but based on |\RenewDocumentCommand| instead of |\DeclareDocumentCommand|.
+ An existing command is redefined.
+\end{docCommand}
+
+\begin{docCommand}{ProvideTotalTCBoxFit}{\oarg{init options}\brackets{\texttt{\textbackslash}\meta{name}}\marg{specification}\marg{options}\marg{content}}
+ Operates like \refCom{DeclareTotalTCBoxFit}, but based on |\ProvideDocumentCommand| instead of |\DeclareDocumentCommand|.
+ The command \texttt{\textbackslash}\meta{name} is only created if it is not already defined.
+\end{docCommand}
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.pdf b/macros/latex/contrib/tcolorbox/tcolorbox.pdf
new file mode 100644
index 0000000000..e1e37bfe2c
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.pdf
Binary files differ
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 <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
+%%
+\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
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.tex b/macros/latex/contrib/tcolorbox/tcolorbox.tex
new file mode 100644
index 0000000000..69d5d40992
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.tex
@@ -0,0 +1,95 @@
+% \LaTeX-Main\
+%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% tcolorbox.tex: Manual
+%%
+%% -------------------------------------------------------------------------------------------
+%% 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
+%%
+% arara: pdflatex: { shell: yes }
+% arara: biber
+% arara: pdflatex: { shell: yes }
+% arara: pdflatex: { shell: yes }
+% arara: pdflatex: { shell: yes, synctex: yes }
+% arara: pdflatex: { shell: yes, synctex: yes }
+%
+\documentclass[a4paper,11pt]{ltxdoc}
+
+\usepackage{tcolorbox.doc.s_main}
+\tcbEXTERNALIZE
+\usepackage{tcolorbox.doc.s_snippet}
+%\tcbset{external/PassOptionsToPackage={cache=false}{minted}}
+\ShellEscape{mkdir external}
+\ShellEscape{mkdir solutions}
+
+\RequirePackage{csquotes}
+\RequirePackage[style=numeric-comp,sorting=nyt,
+ maxnames=8,minnames=8,abbreviate=false,backend=biber,
+ bibencoding=latin1,texencoding=ascii]{biblatex}
+\DeclareFieldFormat{url}{\newline\url{#1}}%
+\DeclareListFormat{language}{}%
+\setlength{\bibitemsep}{\smallskipamount}
+\addbibresource{tcolorbox.doc.bib}
+
+\def\version{4.20}%
+\def\datum{2019/03/02}%
+\makeindex
+
+\hypersetup{
+ pdftitle={Manual for the tcolorbox package},
+ pdfauthor={Thomas F. Sturm},
+ pdfsubject={colored boxes},
+ pdfkeywords={colored boxes, LaTeX examples, theorems}
+}
+
+\usepackage{pgfplots}
+
+%\tcbset{draftmode}
+\tcbset{/tcb/external/-}% for final run
+%\includeonly{tcolorbox.doc.skins}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{document}
+\include{tcolorbox.doc.abstract}
+\include{tcolorbox.doc.intro}
+\include{tcolorbox.doc.quickref}
+\include{tcolorbox.doc.coremacros}
+\include{tcolorbox.doc.coreoptions}
+\include{tcolorbox.doc.initoptions}
+\include{tcolorbox.doc.sidebyside}
+\include{tcolorbox.doc.verbatim}
+\include{tcolorbox.doc.recording}
+\include{tcolorbox.doc.technical}
+\include{tcolorbox.doc.skins}
+\include{tcolorbox.doc.graphics}
+\include{tcolorbox.doc.filling}
+\include{tcolorbox.doc.beamer}
+\include{tcolorbox.doc.vignette}
+\include{tcolorbox.doc.raster}
+\include{tcolorbox.doc.listings}
+\include{tcolorbox.doc.theorems}
+\include{tcolorbox.doc.breakable}
+\include{tcolorbox.doc.magazine}
+\include{tcolorbox.doc.poster}
+\include{tcolorbox.doc.fitting}
+\include{tcolorbox.doc.hooks}
+\include{tcolorbox.doc.xparse}
+\include{tcolorbox.doc.external}
+\include{tcolorbox.doc.documentation}
+\appendix
+\include{tcolorbox.doc.picturecredits}
+\include{tcolorbox.doc.references}
+\include{tcolorbox.doc.index}
+\end{document}