summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/tcolorbox/tcolorbox.sty
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-02-11 03:01:17 +0000
committerNorbert Preining <norbert@preining.info>2023-02-11 03:01:17 +0000
commit73abb311c03e955ad9f7b7464390a5722b20b915 (patch)
treea8e116777430169c28f315127303eb19626a4d30 /macros/latex/contrib/tcolorbox/tcolorbox.sty
parente10a52ebe817fe7ff0235c066d83f51f39d3e023 (diff)
CTAN sync 202302110301
Diffstat (limited to 'macros/latex/contrib/tcolorbox/tcolorbox.sty')
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.sty273
1 files changed, 186 insertions, 87 deletions
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.sty b/macros/latex/contrib/tcolorbox/tcolorbox.sty
index 21447f7a97..87d8d40309 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.sty
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.sty
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 5.1.1 (2022/06/24)
+%% The LaTeX package tcolorbox - version 6.0.0 (2023/02/10)
%% tcolorbox.sty: Text color boxes
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2023 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -18,8 +18,8 @@
%% This work consists of all files listed in README
%%
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
-\ProvidesPackage{tcolorbox}[2022/06/24 version 5.1.1 text color boxes]
-\def\tcb@version{5.1.1}
+\ProvidesPackage{tcolorbox}[2023/02/10 version 6.0.0 text color boxes]
+\def\tcb@version{6.0.0}
\RequirePackage{pgf}[2008/01/15]
\RequirePackage{verbatim}[2003/08/22]
@@ -142,7 +142,7 @@
\newcommand\tcbtitle{\ifx\tcbtitletext\@empty\else%
- \leavevmode{\color{tcbcoltitle}\kvtcb@fonttitle\kvtcb@haligntitle\kvtcb@before@title\tcbtitletext\kvtcb@after@title}\fi}
+ \leavevmode{\color{tcbcoltitle}\kvtcb@fonttitle\kvtcb@haligntitle\tcb@insert@before@title\tcbtitletext\tcb@insert@after@title}\fi}
\def\tcb@detach@title@code@{%
\let\tcbtitletext\kvtcb@title%
@@ -181,10 +181,16 @@
\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@before@title@ignore{\kvtcb@before@title\ignorespaces}
+\def\tcb@insert@before@title@noignore{\kvtcb@before@title}
+
\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}
+\def\tcb@insert@after@title@unskip{\ifvmode\else\unskip\fi\kvtcb@after@title}
+\def\tcb@insert@after@title@nounskip{\kvtcb@after@title}
+
\tcbset{%
title/.store in=\kvtcb@title,
@@ -293,7 +299,7 @@
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},
+ before/.code={\def\kvtcb@beforebox{#1}\let\tcb@use@autoparskip=\relax},
after/.code={\def\kvtcb@afterbox{#1}\let\tcb@use@autoparskip=\relax},
before skip balanced/.style={before={%
\ifnum\lastnodetype=-1\relax%
@@ -306,18 +312,13 @@
\fi%
\else%
\ifdim\prevdepth<\z@\relax%
- \tcbdimto\tcb@prevdepth{\prevdepth}%
\addvspace{\glueexpr#1-\parskip}%
- \def\tcb@undo@before{\addvspace{-\glueexpr#1+\tcb@prevdepth}}%
\else%
\ifdim\prevdepth>.3\baselineskip\relax%
- \tcbdimto\tcb@prevdepth{\prevdepth}%
\addvspace{\glueexpr#1-\parskip}%
\else%
- \tcbdimto\tcb@prevdepth{.3\baselineskip}%
\addvspace{\glueexpr#1+.3\baselineskip-\prevdepth-\parskip}%
\fi%
- \def\tcb@undo@before{\addvspace{-\glueexpr#1+\tcb@prevdepth}}%
\fi%
\fi%
\nointerlineskip%
@@ -336,15 +337,13 @@
}},
beforeafter skip balanced/.style={before skip balanced={#1},after skip balanced={#1}},
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\noindent},
+ parskip/.style={%
+ before={\ifnum\lastnodetype=-1\relax\else\par%
+ \ifvmode\pagebreak[0]\fi\fi\noindent},
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\noindent},
+ noparskip/.style={%
+ before={\ifnum\lastnodetype=-1\relax\else\par%
+ \ifvmode\pagebreak[0]\smallskip\fi\fi\noindent},
after={\tcb@parfillskip@check\par\smallskip}},
nobeforeafter/.style={before=,after=},
force nobeforeafter/.code={\tcbset@late@options{nobeforeafter}},
@@ -358,9 +357,7 @@
\addvspace{-\parskip}%
\fi%
\else%
- \tcbdimto\tcb@prevdepth{\prevdepth}%
\addvspace{\glueexpr#1-\parskip}%
- \def\tcb@undo@before{\addvspace{-\glueexpr#1+\tcb@prevdepth}}%
\fi%
\nointerlineskip%
\fi%
@@ -445,6 +442,8 @@
halign/center/.code={\let\kvtcb@halignupper=\tcb@raggedcenter@plain},
halign/justify/.code={\let\kvtcb@halignupper=\@empty},
halign upper/.style={halign=#1},
+ halign upper code/.store in=\kvtcb@halignupper,
+ halign code/.store in=\kvtcb@halignupper,
%
halign lower/.is choice,
halign lower/flush left/.code={\let\kvtcb@halignlower=\raggedright},
@@ -454,6 +453,7 @@
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 lower code/.store in=\kvtcb@halignlower,
%
halign title/.is choice,
halign title/flush left/.code={\let\kvtcb@haligntitle=\raggedright},
@@ -463,6 +463,7 @@
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},
+ halign title code/.store in=\kvtcb@haligntitle,
%
valign scale limit/.store in=\kvtcb@valignscalelimit,
valign scale limit=1.1,
@@ -634,8 +635,6 @@
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},%
@@ -644,6 +643,10 @@
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},%
+ before title/.code={\def\kvtcb@before@title{#1}\let\tcb@insert@before@title\tcb@insert@before@title@ignore},%
+ before title*/.code={\def\kvtcb@before@title{#1}\let\tcb@insert@before@title\tcb@insert@before@title@noignore},%
+ after title/.code={\def\kvtcb@after@title{#1}\let\tcb@insert@after@title\tcb@insert@after@title@unskip},%
+ after title*/.code={\def\kvtcb@after@title{#1}\let\tcb@insert@after@title\tcb@insert@after@title@nounskip},%
center title/.style={halign title=flush center},%
center upper/.style={halign upper=flush center},%
center lower/.style={halign lower=flush center},%
@@ -791,10 +794,7 @@
\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}{}}%
@@ -803,9 +803,6 @@
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,
@@ -819,6 +816,7 @@
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}}},
+ short title/.style={list text={#1},nameref={#1}},
title filled/.is if=tcb@titlefilled,%
@colbacktitle/.colorlet=tcbcolbacktitle,
colbacktitle/.style={title filled,@colbacktitle={#1}},
@@ -873,8 +871,67 @@
}
\ExplSyntaxOn
+
+\tl_new:N \l__tcobox_kv_labeltype_tl
+
+
+\cs_new:Npn \__tcobox_label_label:n #1
+ {
+ \quark_if_nil:NTF \l__tcobox_kv_labeltype_tl
+ {
+ \label{#1}
+ }
+ {
+ \exp_last_unbraced:NNV \label[\l__tcobox_kv_labeltype_tl]{#1}
+ }
+ }
+
+
+\cs_new:Npn \__tcobox_zcsetup_countertype:nn #1#2
+ {
+ \cs_if_exist:NT \zcsetup
+ {
+ \zcsetup { countertype={#1={#2}} }
+ }
+ }
+
+
+\cs_new:Npn \__tcobox_label_zlabel:n #1
+ {
+ \quark_if_nil:NF \l__tcobox_kv_labeltype_tl
+ {
+ \cs_if_exist:NT \tcbcounter
+ {
+ \exp_args:NVV \__tcobox_zcsetup_countertype:nn \tcbcounter \l__tcobox_kv_labeltype_tl
+ }
+ }
+ \cs_if_exist:NT \zlabel
+ {
+ \zlabel { #1 }
+ }
+ }
+
+
\tcbset
{
+ label /.style = { phantom={\__tcobox_label:n{#1}} },
+ phantomlabel /.style = { phantom={\cs_if_exist_use:N\phantomsection\__tcobox_label:n{#1}} },
+ step~and~label /.style~n~args = { 2 }{ phantom={\refstepcounter{#1}\__tcobox_label:n{#2}} },
+ nameref /.code =
+ {
+ \tcb@gettitle{#1}
+ \cs_if_exist:NT \zref@titleref@setcurrent { \zref@titleref@setcurrent{#1} }
+ },
+ label~type / .store~in = \l__tcobox_kv_labeltype_tl,
+ no~label~type / .style = { label~type=\q_nil },
+ label~is~label/.code=
+ {
+ \cs_set_eq:NN \__tcobox_label:n \__tcobox_label_label:n
+ },
+ label~is~zlabel/.code=
+ {
+ \cs_set_eq:NN \__tcobox_label:n \__tcobox_label_zlabel:n
+ },
IfBlankTF/.code~n~args={3}{\tl_if_blank:nTF{#1}{\pgfkeysalso{#2}}{\pgfkeysalso{#3}}},
IfBlankT/.code~n~args={2}{\tl_if_blank:nT{#1}{\pgfkeysalso{#2}}},
IfBlankF/.code~n~args={2}{\tl_if_blank:nF{#1}{\pgfkeysalso{#2}}},
@@ -896,19 +953,11 @@
\def\kvtcb@beforebox{}
\def\kvtcb@afterbox{}
-\def\tcb@set@label#1{%
- \ifx\kvtcb@label@type\@empty%
- \label{#1}%
- \else%
- \label[\kvtcb@label@type]{#1}%
- \fi%
-}
-
\def\tcb@parbox@true@indent{}%
\def\tcb@parbox@false@indent{%
- \preto\kvtcb@before@title{\noindent}%
- \preto\kvtcb@before@upper{\noindent}%
- \preto\kvtcb@before@lower{\noindent}%
+ \preto\kvtcb@before@title{\vspace{-\parskip}\noindent}%
+ \preto\kvtcb@before@upper{\vspace{-\parskip}\noindent}%
+ \preto\kvtcb@before@lower{\vspace{-\parskip}\noindent}%
}%
\let\tcb@parboxrestore=\@parboxrestore
@@ -937,7 +986,10 @@
\let\tcb@minipage=\tcb@minipage@bottom
% lrbox with integrated minipage
-\def\tcb@lrbox#1#2{%
+% #1 box
+% #2 width
+% #3 color (for color stack)
+\def\tcb@lrbox#1#2#3{%
\edef\reserved@a{%
\endgroup
\setbox#1\hbox{%
@@ -945,20 +997,22 @@
\def\noexpand\@currenvir{\@currenvir}%
\def\noexpand\@currenvline{\on@line}}%
\reserved@a
- \@endpefalse
+ \@endpefalse%
\let\tcbbreak\par%
\csname tcb@parbox@use@\kvtcb@parbox\endcsname%
- \tcb@minipage#2\tcb@hyph@fix\ignorespaces}
+ \tcb@minipage{#2}%
+ \color{#3}%
+ \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}\tcb@lua@color{tcbcolupper}\kvtcb@fontupper\kvtcb@halignupper\tcb@insert@before@upper}
+\begin{tcb@savebox}{\tcb@upperbox}{\tcb@w@upper}{tcbcolupper}\kvtcb@fontupper\kvtcb@halignupper\tcb@insert@before@upper}
\def\tcb@savelowerbox{%
-\begin{tcb@savebox}{\tcb@lowerbox}{\tcb@w@lower}\tcb@lua@color{tcbcollower}\kvtcb@fontlower\kvtcb@halignlower\tcb@insert@before@lower}
+\begin{tcb@savebox}{\tcb@lowerbox}{\tcb@w@lower}{tcbcollower}\kvtcb@fontlower\kvtcb@halignlower\tcb@insert@before@lower}
% counter for float
@@ -974,11 +1028,11 @@
\tcbset{autoparskip/.style=noparskip}%
\fi%
\tcb@use@autoparskip%
-\ifx\luacolorProcessBox\@undefined%
- \def\tcb@lua@color#1{}%
-\else%
- \def\tcb@lua@color#1{\color{#1}}%
-\fi%
+%\ifx\luacolorProcessBox\@undefined%
+% \def\tcb@lua@color#1{}%
+%\else%
+% \def\tcb@lua@color#1{\color{#1}}%
+%\fi%
}
\long\def\tcb@colorbox{%
@@ -998,7 +1052,7 @@
\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}\tcb@lua@color{tcbcoltitle}\kvtcb@fonttitle\kvtcb@haligntitle\kvtcb@before@title\kvtcb@title\kvtcb@after@title\end{tcb@savebox}%
+ \begin{tcb@savebox}{\tcb@titlebox}{\tcb@w@title}{tcbcoltitle}\kvtcb@fonttitle\kvtcb@haligntitle\tcb@insert@before@title\kvtcb@title\tcb@insert@after@title\end{tcb@savebox}%
\fi%
}
@@ -1067,24 +1121,12 @@
\sbox{\tcb@lowerbox}{\color{tcbcollower}\kvtcb@fontlower\kvtcb@halignlower\tcb@insert@before@lower\tcb@sbs@text@right\tcb@insert@after@lower}%
}
-\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%
@@ -1099,7 +1141,6 @@
\fi%
\tcb@startbox}%
% start of upper box
- \tcb@set@color{tcbcolupper}%
\ifx\kvtcb@saveupperto\@empty%
\let\tcb@startbox\tcb@saveupperbox%
\let\endtcolorbox\tcb@endboxanddraw%
@@ -1321,7 +1362,6 @@
\def\tcb@endboxanddraw{%
\tcb@insert@after@part%
\end{tcb@savebox}%
- \tcb@reset@color%
\tcb@draw@color@box%
\tcb@finalize@environment%
}
@@ -1804,7 +1844,7 @@
}
\def\tcb@sbs@mix{%
- \begin{tcb@savebox}{\tcb@upperbox}{\tcb@w@upper@real}%
+ \begin{tcb@savebox}{\tcb@upperbox}{\tcb@w@upper@real}{tcbcolupper}%
\tcb@box@align{\tcb@upperbox}%
\iftcb@uppervisible%
\tcbdimto{\tcb@temp@wd}{\tcb@w@upper-\wd\tcb@upperbox+\kvtcb@sbs@gap}%
@@ -1957,13 +1997,11 @@
\long\def\tcbox@inner@hbox#1{%
\tcb@set@@phantom%
- \colorlet{tcbcol@origin}{.}%
- \tcb@set@color{tcbcolupper}%
\sbox\tcb@upperbox{\tcb@embed@tcbox{%
\csname tcb@parbox@use@\kvtcb@parbox\endcsname%
\@parboxrestore%
- \tcb@lua@color{tcbcolupper}\kvtcb@fontupper\kvtcb@halignupper\tcb@insert@before@upper#1\tcb@insert@after@upper}}%
- \tcb@reset@color%
+ \color{tcbcolupper}%
+ \kvtcb@fontupper\kvtcb@halignupper\tcb@insert@before@upper#1\tcb@insert@after@upper}}%
\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%
@@ -1977,10 +2015,7 @@
\tcb@set@@phantom%
\tcb@set@@title%
\tcb@set@@dimensions%
- \colorlet{tcbcol@origin}{.}%
- \tcb@set@color{tcbcolupper}%
- \begin{tcb@savebox}{\tcb@upperbox}{\tcb@w@upper}\tcb@lua@color{tcbcolupper}\kvtcb@fontupper\kvtcb@halignupper\tcb@insert@before@upper#1\tcb@insert@after@upper\end{tcb@savebox}%
- \tcb@reset@color%
+ \begin{tcb@savebox}{\tcb@upperbox}{\tcb@w@upper}{tcbcolupper}\kvtcb@fontupper\kvtcb@halignupper\tcb@insert@before@upper#1\tcb@insert@after@upper\end{tcb@savebox}%
\tcb@hasLowerfalse%
\tcb@draw@color@box%
}
@@ -2077,6 +2112,7 @@
}
\def\tcb@proc@counter@autoanduse#1{%
+ \let\tcb@tcbcounter@savetemp=\tcbcounter%
\letcs\tcbcounter{tcb@cnt@#1}%
\ifx\kvtcb@new@numberwithin\@empty%
\csxdef{the\tcbcounter}{\expandafter\noexpand\kvtcb@new@format{\tcbcounter}}%
@@ -2090,6 +2126,7 @@
\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}}}}%
+ \let\tcbcounter=\tcb@tcbcounter@savetemp%
}
\def\tcb@proc@counter@auto#1{%
@@ -2135,16 +2172,20 @@
\ExplSyntaxOn
+\bool_new:N \l__tcobox_prevent_init_overwrite_bool
+
\cs_new:Npn \__tcobox_process_newtcolorbox:nn #1#2
{
- \edef\tcb@new@boxname{#2}
- \def\tcb@new@colopt{}
- \tl_if_novalue:nF { #1 }
+ \bool_lazy_and:nnF
+ { \l__tcobox_prevent_init_overwrite_bool }
+ { \cs_if_exist_p:c { tcb@opt@#2 } }
{
+ \edef\tcb@new@boxname{#2}
+ \def\tcb@new@colopt{}
\tcb@proc@options@init{#1}{#2}
+ \preto\tcb@new@colopt{savedelimiter=#2}
+ \exp_args:Nc \cs_set_eq:NN { tcb@opt@#2 } \tcb@new@colopt
}
- \preto\tcb@new@colopt{savedelimiter=#2}
- \exp_args:Nc \cs_set_eq:NN { tcb@opt@#2 } \tcb@new@colopt
}
@@ -2156,7 +2197,7 @@
}
-\NewDocumentCommand \__tcobox_new_tcolorbox:w { m +o m o +o +m }
+\NewDocumentCommand \__tcobox_new_tcolorbox:w { m +O{} >{\TrimSpaces} m o +o +m }
{
\__tcobox_process_newtcolorbox:nn { #2 }{ #3 }
\tl_if_novalue:nTF { #4 }
@@ -2175,33 +2216,39 @@
}
\NewDocumentCommand \newtcolorbox { }
{
+ \bool_set_true:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_tcolorbox:w \newenvironment
}
\NewDocumentCommand \renewtcolorbox { }
{
+ \bool_set_false:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_tcolorbox:w \renewenvironment
}
-\NewDocumentCommand \__tcobox_new_TColorBox:w { m +o m +m +m }
+\NewDocumentCommand \__tcobox_new_TColorBox:w { m +O{} >{\TrimSpaces} m +m +m }
{
\__tcobox_process_newtcolorbox:nn { #2 }{ #3 }
#1 { #3 }{ #4 }{ \tcolorbox[#5,options@for=#3] }{ \endtcolorbox }
}
\NewDocumentCommand \DeclareTColorBox { }
{
+ \bool_set_false:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TColorBox:w \DeclareDocumentEnvironment
}
\NewDocumentCommand \NewTColorBox { }
{
+ \bool_set_true:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TColorBox:w \NewDocumentEnvironment
}
\NewDocumentCommand \RenewTColorBox { }
{
+ \bool_set_false:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TColorBox:w \RenewDocumentEnvironment
}
\NewDocumentCommand \ProvideTColorBox { }
{
+ \bool_set_true:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TColorBox:w \ProvideDocumentEnvironment
}
@@ -2211,25 +2258,29 @@
\__tcobox_process_newtcolorbox:nn { #2 }{ #3 }
\exp_args:Nc #1 { #3 }{ #4 }{ \begin{tcolorbox}[#5,options@for=#3]#6\end{tcolorbox} }
}
-\NewDocumentCommand \__tcobox_new_TotalTColorBox:w { m +o m }
+\NewDocumentCommand \__tcobox_new_TotalTColorBox:w { m +O{} m }
{
\__tcobox_set_backslash_removed:Nn \l_tmpa_tl { #3 }
\exp_args:NNnV \__tcobox_new_TotalTColorBox:Nnnnnn #1 {#2} \l_tmpa_tl
}
\NewDocumentCommand \DeclareTotalTColorBox { }
{
+ \bool_set_false:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TotalTColorBox:w \DeclareDocumentCommand
}
\NewDocumentCommand \NewTotalTColorBox { }
{
+ \bool_set_true:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TotalTColorBox:w \NewDocumentCommand
}
\NewDocumentCommand \RenewTotalTColorBox { }
{
+ \bool_set_false:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TotalTColorBox:w \RenewDocumentCommand
}
\NewDocumentCommand \ProvideTotalTColorBox { }
{
+ \bool_set_true:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TotalTColorBox:w \ProvideDocumentCommand
}
@@ -2251,17 +2302,19 @@
}
}
}
-\NewDocumentCommand \__tcobox_new_tcbox_i:w { m +o m }
+\NewDocumentCommand \__tcobox_new_tcbox_i:w { m +O{} m }
{
\__tcobox_set_backslash_removed:Nn \l_tmpa_tl { #3 }
\exp_args:NNnV \__tcobox_new_tcbox_ii:w #1 {#2} \l_tmpa_tl
}
\NewDocumentCommand \newtcbox { }
{
+ \bool_set_true:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_tcbox_i:w \newcommand
}
\NewDocumentCommand \renewtcbox { }
{
+ \bool_set_false:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_tcbox_i:w \renewcommand
}
@@ -2271,25 +2324,29 @@
\__tcobox_process_newtcolorbox:nn { #2 }{ #3 }
\exp_args:Nc #1 { #3 }{ #4 }{ \tcbox[#5,options@for=#3] }
}
-\NewDocumentCommand \__tcobox_new_TCBox:w { m +o m }
+\NewDocumentCommand \__tcobox_new_TCBox:w { m +O{} m }
{
\__tcobox_set_backslash_removed:Nn \l_tmpa_tl { #3 }
\exp_args:NNnV \__tcobox_new_TCBox:Nnnnn #1 {#2} \l_tmpa_tl
}
\NewDocumentCommand \DeclareTCBox { }
{
+ \bool_set_false:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TCBox:w \DeclareDocumentCommand
}
\NewDocumentCommand \NewTCBox { }
{
+ \bool_set_true:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TCBox:w \NewDocumentCommand
}
\NewDocumentCommand \RenewTCBox { }
{
- \__tcobox_new_TCBox:w \RewewDocumentCommand
+ \bool_set_false:N \l__tcobox_prevent_init_overwrite_bool
+ \__tcobox_new_TCBox:w \RenewDocumentCommand
}
\NewDocumentCommand \ProvideTCBox { }
{
+ \bool_set_true:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TCBox:w \ProvideDocumentCommand
}
@@ -2299,25 +2356,29 @@
\__tcobox_process_newtcolorbox:nn { #2 }{ #3 }
\exp_args:Nc #1 { #3 }{ #4 }{ \tcbox[#5,options@for=#3]{#6} }
}
-\NewDocumentCommand \__tcobox_new_TotalTCBox:w { m +o m }
+\NewDocumentCommand \__tcobox_new_TotalTCBox:w { m +O{} m }
{
\__tcobox_set_backslash_removed:Nn \l_tmpa_tl { #3 }
\exp_args:NNnV \__tcobox_new_TotalTCBox:Nnnnnn #1 {#2} \l_tmpa_tl
}
\NewDocumentCommand \DeclareTotalTCBox { }
{
+ \bool_set_false:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TotalTCBox:w \DeclareDocumentCommand
}
\NewDocumentCommand \NewTotalTCBox { }
{
+ \bool_set_true:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TotalTCBox:w \NewDocumentCommand
}
\NewDocumentCommand \RenewTotalTCBox { }
{
- \__tcobox_new_TotalTCBox:w \RewewDocumentCommand
+ \bool_set_false:N \l__tcobox_prevent_init_overwrite_bool
+ \__tcobox_new_TotalTCBox:w \RenewDocumentCommand
}
\NewDocumentCommand \ProvideTotalTCBox { }
{
+ \bool_set_true:N \l__tcobox_prevent_init_overwrite_bool
\__tcobox_new_TotalTCBox:w \ProvideDocumentCommand
}
@@ -2418,9 +2479,11 @@
\let\tcb@verbatim@begin@hook\@empty
\let\tcb@verbatim@end@hook\@empty
\let\tcb@verbatim@change@percent\@empty
+\let\tcb@set@verbatim@finish\@empty
\def\tcbverbatimwrite#1{%
\@bsphack
+ \tcb@set@verbatim@finish%
\tcb@allocate@tcb@out%
\immediate\openout\tcb@out #1
\tcb@verbatim@begin@hook%
@@ -2439,6 +2502,41 @@
}
+\ExplSyntaxOn
+
+\cs_new_nopar:Npn \__tcobox_verbatim_finish:
+ {
+ \tl_set_rescan:Nnx \l_tmpa_tl
+ {
+ \char_set_catcode_space:n { 9 }
+ \char_set_catcode_space:n { 32 }
+ } { \the\verbatim@line }
+ \tl_if_blank:VF \l_tmpa_tl
+ {
+ \verbatim@processline
+ }
+ }
+
+\tcbset{%
+ verbatim~ignore~indention~at~end/.is~choice,
+ verbatim~ignore~indention~at~end/true/.code=
+ {
+ \cs_set:Npn \tcb@set@verbatim@finish
+ {
+ \cs_set_eq:NN \verbatim@finish \__tcobox_verbatim_finish:
+ }
+ },
+ verbatim~ignore~indention~at~end/false/.code=
+ {
+ \cs_set_eq:NN \tcb@set@verbatim@finish \prg_do_nothing:
+ },
+ verbatim~ignore~indention~at~end/.default=true,
+ verbatim~ignore~indention~at~end
+}
+
+\ExplSyntaxOff
+
+
% saving of the lower box
\def\tcb@lowerverbatim{%
@@ -2568,6 +2666,7 @@
\tcbset{%
minipage,savedelimiter=tcolorbox,%
set@extensions@preframe=,set@extensions@postframe=,set@extensions@final=,%
+ label is label,
}%
\def\tcbsetforeverylayer#1{\tcbset{initialize@reset={#1}}}