diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/tcolorbox/tcbfitting.code.tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/tcolorbox/tcbfitting.code.tex | 229 |
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 |