summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/tcolorbox/tcbfitting.code.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/tcolorbox/tcbfitting.code.tex')
-rw-r--r--Master/texmf-dist/tex/latex/tcolorbox/tcbfitting.code.tex229
1 files changed, 147 insertions, 82 deletions
diff --git a/Master/texmf-dist/tex/latex/tcolorbox/tcbfitting.code.tex b/Master/texmf-dist/tex/latex/tcolorbox/tcbfitting.code.tex
index 85ec5f60284..3a66d5d6d84 100644
--- a/Master/texmf-dist/tex/latex/tcolorbox/tcbfitting.code.tex
+++ b/Master/texmf-dist/tex/latex/tcolorbox/tcbfitting.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 2.60 (2013/12/17)
+%% The LaTeX package tcolorbox - version 2.61 (2014/01/10)
%% tcbfitting.code.tex: Code for fit boxes
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2012 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2014 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,7 +18,7 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{2.60}
+\tcb@set@library@version{2.61}
\newdimen\tcbfitdim
\newdimen\tcb@lowerfitdim
@@ -58,6 +58,12 @@
\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/areasize/.code={\let\tcbox@fitalgorithm=\tcbox@fitalgorithm@areasize},
+ fit algorithm/hybrid/.code={\let\tcbox@fitalgorithm=\tcbox@fitalgorithm@hybrid},
+ fit algorithm/squeeze/.code={\let\tcbox@fitalgorithm=\tcbox@fitalgorithm@squeeze},
+ spartan@fit/.style={fit algorithm=squeeze},
}
\def\tcb@@capture@fitbox{%
@@ -76,6 +82,138 @@
\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@areasize{%
+ \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}%
+ \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
+ \setbox\tcb@upperbox\hbox{\resizebox*{\tcb@w@upper}{\tcb@fit@@h}{\box\tcb@upperbox}}%
+ %
+ \tcbdimto\tcb@fit@@h{\ht\tcb@upperbox+\dp\tcb@upperbox}%
+}
+
+\def\tcbox@fitalgorithm@squeeze{%
+ \setbox\tcb@upperbox\hbox{\resizebox*{\tcb@w@upper}{\tcb@fit@@target}{\box\tcb@upperbox}}%
+ \tcbdimto\tcb@fit@@h{\ht\tcb@upperbox+\dp\tcb@upperbox}%
+}
+
+\def\tcbox@fitalgorithm@hybrid{%
+ \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%
+ %
+ \tcbox@fitalgorithm@areasize%
+}
+
+\def\tcb@fit@@box{%
+ \tcbdimto\tcb@fit@@line{\kvtcb@fit@skip\tcbfitdim}%
+ \tcbdimto\tcb@w@upper{\tcb@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}%
+}%
+
+\def\tcb@fit@@box@titled{%
+ \tcb@set@@dim@and@title%
+ \iftcb@hasTitle%
+ \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%
+ \tcb@fit@@box%
+}%
+
\long\def\tcbox@inner@fitbox#1{%
\tcbset{breakable@false,sidebyside=false}%
\let\tcb@val@raisebase=\tcb@zpt%
@@ -88,32 +226,14 @@
\tcbfitdim\kvtcb@fit@basedim%
\tcb@fit@warn@begin%
%
- \def\tcb@fit@@box{%
- \tcbdimto\tcb@fit@@line{\kvtcb@fit@skip\tcbfitdim}%
- \tcbdimto\tcb@w@upper{\tcb@width-\kvtcb@left@rule-\kvtcb@right@rule-\kvtcb@boxsep*2-\kvtcb@leftupper-\kvtcb@rightupper}%
- \begin{tcb@savebox}{\tcb@upperbox}{\tcb@w@upper}%
+ \def\tcb@fit@@boxsave##1{%
+ \begin{tcb@savebox}{\tcb@upperbox}{##1}%
\color{\kvtcb@colupper}%
\kvtcb@fontupper\fontsize{\tcbfitdim}{\tcb@fit@@line}\selectfont%
\kvtcb@before@upper\ignorespaces#1\unskip\kvtcb@after@upper%
\end{tcb@savebox}%
- %
- \ifdim\wd\tcb@upperbox>\tcb@w@upper\relax
- \message{WARNING!!!!!}
- \fi
- %
- \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}%
\advance\count@ 1\relax%
}%
- \def\tcb@fit@@box@titled{%
- \tcb@set@@dim@and@title%
- \iftcb@hasTitle%
- \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%
- \tcb@fit@@box%
- }%
%
\tcb@fit@@box@titled%
%
@@ -182,66 +302,10 @@
\fi%
\fi%
%
- % font fit
+ % (font) fit
\ifnum\count@<\kvtcb@fit@maxstep\relax%
\ifdim\dimexpr\tcb@fit@@h>\tcb@fit@@target\relax%
- \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%
+ \tcbox@fitalgorithm%
\fi%
\fi%
%
@@ -312,8 +376,9 @@
\tcbset{%
reset@fitting/.style={%
+ fit algorithm=fontsize,%
fit basedim=10pt,fit skip=1.2,
- fit height plus=0pt,fit width plus=0pt,
+ 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