marketing

Marketing materials (presentations, posters, flyers)
Log | Files | Refs

adjustbox.sty (34406B)


      1 %% Copyright (C) 2011-2012 by Martin Scharrer <martin@scharrer-online.de>
      2 %% ----------------------------------------------------------------------
      3 %% This work may be distributed and/or modified under the
      4 %% conditions of the LaTeX Project Public License, either version 1.3
      5 %% of this license or (at your option) any later version.
      6 %% The latest version of this license is in
      7 %%   http://www.latex-project.org/lppl.txt
      8 %% and version 1.3 or later is part of all distributions of LaTeX
      9 %% version 2005/12/01 or later.
     10 %%
     11 %% This work has the LPPL maintenance status `maintained'.
     12 %%
     13 %% The Current Maintainer of this work is Martin Scharrer.
     14 %%
     15 %% This work consists of the files adjustbox.dtx, adjustbox.ins
     16 %% and the derived file adjustbox.sty.
     17 %%
     18 \ProvidesPackage{adjustbox}[%
     19     2012/05/21
     20     v1.0
     21     Adjusting TeX boxes (trim, clip, ...)]
     22 \RequirePackage{xkeyval}
     23 \RequirePackage{adjcalc}
     24 \def\adjbox@fam{adjbox}
     25 \DeclareOptionX<Adjbox>{export}{\def\adjbox@fam{Gin}}
     26 \DeclareOptionX<Adjbox>{Export}{\AtEndOfPackage{\let\includegraphics\adjincludegraphics}}
     27 \DeclareOptionX<Adjbox>{patch}{%
     28     \PackageWarning{adjustbox}{%
     29          The 'patch' option is now deprecated.\MessageBreak
     30          Use the new \string\adjustimage\space or \string\adjincludegraphics\space macros instead%
     31          \@gobble
     32     }%
     33 }
     34 \DeclareOptionX<Adjbox>{minimal}{\let\adjustbox@minimal\endinput}
     35 \DeclareOptionX<Adjbox>{pgfmath}{\AtEndOfPackage{\RequirePackage{pgf}\adjcalcset{pgfmath}}}
     36 \DeclareOptionX<Adjbox>{calc}{\AtEndOfPackage{\RequirePackage{calc}\adjcalcset{calc}}}
     37 \DeclareOptionX<Adjbox>{etex}{\AtEndOfPackage{\adjcalcset{etex}}}
     38 \DeclareOptionX<Adjbox>{defaultunit}{\AtEndOfPackage{\adjcalcset{defaultunit={#1}}}}
     39 \DeclareOptionX<Adjbox>{pgf}{\PassOptionsToPackage{pgf}{trimclip}}
     40 \DeclareOptionX<Adjbox>{PGF}{\PassOptionsToPackage{pgf}{trimclip}\AtEndOfPackage{\RequirePackage{pgf}\adjcalcset{pgfmath}}}
     41 \DeclareOptionX*{%
     42     \IfFileExists{tc-\CurrentOption.def}{%
     43         \PassOptionsToPackage\CurrentOption{trimclip}%
     44     }{%
     45         \PassOptionsToPackage\CurrentOption{graphicx}%
     46     }%
     47 }
     48 \ProcessOptionsX*<Adjbox>\relax
     49 \RequirePackage{trimclip}
     50 \RequirePackage{graphicx}[1999/02/16]
     51 \RequirePackage{collectbox}[2012/05/17]
     52 \@ifpackagelater{collectbox}{2012/05/17}{}{%
     53     \let\@Collectbox\@collectbox
     54 }
     55 \newcommand*\adjustboxset{%
     56     \@ifstar
     57         {\adjbox@addkeysafter}%
     58         {\adjbox@addkeysbefore}%
     59 }
     60 \def\adjbox@addkeysbefore#1{%
     61     \ifx\@nnil#1\@nnil
     62         \let\adjbox@keysbefore\@empty
     63     \else
     64         \expandafter\def\expandafter\adjbox@keysbefore\expandafter{\adjbox@keysbefore,#1}%
     65         \let\adjbox@setkeys\adjbox@setkeys@ba
     66     \fi
     67 }
     68 \let\adjbox@keysbefore\@empty
     69 \def\adjbox@addkeysafter#1{%
     70     \begingroup
     71     \def\@tempa{#1}%
     72     \ifx\@tempa\@empty
     73         \endgroup
     74         \let\adjbox@keysafter\@empty
     75     \else
     76         \expandafter\expandafter
     77         \expandafter\endgroup
     78         \expandafter\expandafter
     79         \expandafter\def
     80         \expandafter\expandafter
     81         \expandafter\adjbox@keysafter
     82         \expandafter\expandafter
     83         \expandafter{\expandafter\@tempa\expandafter,\adjbox@keysafter}%
     84         \let\adjbox@setkeys\adjbox@setkeys@ba
     85     \fi
     86 }
     87 \let\adjbox@keysafter\@empty
     88 \newcommand\adjustbox[1]{%
     89     \begingroup
     90     \edef\adjbox@line{\the\inputlineno}%
     91     \let\collectbox@mode\relax
     92     \let\collectbox@noindent\relax
     93     \collectboxcheckenv{adjustbox}%
     94     \ifcollectboxenv\else
     95         \let\adjustbox@noindent\relax
     96     \fi
     97     \begingroup
     98     \adjbox@setkeys{#1}%
     99     \expandafter\expandafter\expandafter
    100     \endgroup
    101     \expandafter
    102     \adjbox@collectbox\expandafter{\expandafter\adjustbox@\expandafter{\XKV@rm}}%
    103 }
    104 \def\adjbox@collectbox{\@collectbox}
    105 \def\adjbox@setkeys@ba{%
    106     \expandafter\expandafter
    107     \expandafter\adjbox@@setkeys@ba
    108     \expandafter\expandafter
    109     \expandafter{\expandafter\adjbox@keysbefore\expandafter}%
    110     \expandafter{\adjbox@keysafter}%
    111 }
    112 \def\adjbox@@setkeys@ba#1#2#3{%
    113     \setkeys*{ADJBOX}{#1,#3,#2}%
    114 }
    115 \def\adjbox@setkeys{%
    116     \setkeys*{ADJBOX}%
    117 }
    118 \let\adjustbox@noindent\noindent
    119 \def\adjustbox@#1{%
    120     \adjbox@Width\width
    121     \adjbox@Height\height
    122     \adjbox@Depth\depth
    123     \adjbox@Totalheight\totalheight
    124     \let\Width\adjbox@Width
    125     \let\Height\adjbox@Height
    126     \let\Depth\adjbox@Depth
    127     \let\Totalheight\adjbox@Totalheight
    128     \let\Gin@esetsize\adjbox@esetsize
    129     \let\@collectbox\@Collectbox
    130     \@tempswatrue
    131     \toks@{{\adjustbox@content}}%
    132     \def\setlength{\adjsetlength}%
    133     \setkeys{adjbox,Gin,adjcalc}{#1}%
    134     \adjbox@esetsize
    135     \adjustbox@noindent
    136     \the\toks@
    137     \endgroup
    138 }
    139 \def\adjustbox@content{%
    140     \usebox\collectedbox
    141 }
    142 \newdimen\adjbox@Width
    143 \newdimen\adjbox@Height
    144 \newdimen\adjbox@Depth
    145 \newdimen\adjbox@Totalheight
    146 \def\adjbox@esetsize{%
    147   \ifcase0%
    148     \ifx\Gin@ewidth\Gin@exclamation\else 1\fi
    149     \ifx\Gin@eheight\Gin@exclamation\else 1\fi
    150   \relax
    151   \else
    152     \edef\@tempa{\toks@{\noexpand
    153                 \Gscale@@box\noexpand\Gin@eresize
    154                 {\Gin@ewidth}{\Gin@eheight}{\the\toks@}}}%
    155     \@tempa
    156     \let\Gin@ewidth\Gin@exclamation
    157     \let\Gin@eheight\Gin@exclamation
    158   \fi
    159 }
    160 \newcommand*\adjustimage[2]{%
    161     \adjustbox{#1}{\Gin@clipfalse\Gin@i{#2}}%
    162 }
    163 \newcommand*\adjincludegraphics[2][]{%
    164     \adjustbox{#1}{\Gin@clipfalse\Gin@i{#2}}%
    165 }
    166 {\csname adjustbox@minimal\endcsname}
    167 \def\adjbox@Gin@add#1{%
    168     \def\@tempa{#1}%
    169     \toks@\expandafter\expandafter\expandafter{\expandafter\@tempa\expandafter{\the\toks@}}%
    170 }
    171 \def\adjbox@Gin@Add{%
    172     \Gin@esetsize
    173     \@tempswatrue
    174     \adjbox@Gin@add
    175 }
    176 \newcommand\newadjustboxkey{%
    177     \@adjustboxkey\adjustbox@newkey
    178 }
    179 \newcommand\renewadjustboxkey{%
    180     \@adjustboxkey\adjustbox@renewkey
    181 }
    182 \newcommand\provideadjustboxkey{%
    183     \@adjustboxkey\adjustbox@providekey
    184 }
    185 \newcommand\defadjustboxkey{%
    186     \@adjustboxkey\@secondoftwo
    187 }
    188 \def\@adjustboxkey#1{%
    189     \@ifstar
    190         {\@adjustboxkey@i#1*}%
    191         {\@adjustboxkey@i#1\relax}%
    192 }
    193 \def\@adjustboxkey@i#1#2#3{%
    194     \@ifnextchar{[}%
    195         {\@adjustboxkey@ii#1#2{#3}}%
    196         {\@adjustboxkey@ii#1#2{#3}[\@nnil]}%
    197 }
    198 \def\@adjustboxkey@ii#1#2#3[#4]#5{%
    199   \ifx\@nnil#4\relax
    200     \@adjustboxkey@iii#1#2{#3}{}{#5}%
    201   \else
    202     \@adjustboxkey@iii#1#2{#3}{[#4]}{#5}%
    203   \fi
    204 }
    205 \def\@adjustboxkey@iii#1#2#3#4#5{%
    206   #1{#3}{%
    207     \ifx*#2\relax
    208         \define@key\adjbox@fam{#3}#4{#5}%
    209     \else
    210         \define@key\adjbox@fam{#3}#4{%
    211             \adjbox@Gin@Add{\@Collectbox{#5}}%
    212         }%
    213     \fi
    214   }{}%
    215 }
    216 \def\define@adjboxkey#1#2{%
    217     \define@key\adjbox@fam{#1}{%
    218         \adjbox@Gin@Add{#2}%
    219     }%
    220 }
    221 \def\define@adjboxkey@defvalue#1#2#3{%
    222     \define@key\adjbox@fam{#1}[{#2}]{%
    223         \adjbox@Gin@Add{#3}%
    224     }%
    225 }
    226 \def\define@adjboxkey@novalue#1#2{%
    227     \define@key\adjbox@fam{#1}[\@nil]{%
    228         \adjbox@novalue{##1}%
    229         \adjbox@Gin@Add{#2}%
    230     }%
    231 }
    232 \def\adjbox@novalue#1{%
    233     \ifx\@nil#1\else
    234         \PackageWarning{adjustbox}{%
    235             Key '\XKV@tkey' does not await a value.\MessageBreak
    236             Given value will be ignored%
    237         }%
    238     \fi
    239 }
    240 \def\adjustbox@newkey#1#2{%
    241     \@ifundefined{KV@\adjbox@fam @#1}{#2}{%
    242         \PackageError{adjustbox}{Key '#1' already defined}{}%
    243     }%
    244 }
    245 \def\adjustbox@renewkey#1{%
    246     \@ifundefined{KV@\adjbox@fam @#1}{%
    247         \PackageError{adjustbox}{Key '#1' undefined}{}%
    248     }%
    249 }
    250 \def\adjustbox@providekey#1#2{%
    251     \@ifundefined{KV@\adjbox@fam @#1}{#2}{}%
    252 }
    253 \def\adjbox@let@key#1#2#3{%
    254     \expandafter\let\csname KV@#1@#2\expandafter\endcsname\csname KV@#1@#3\endcsname
    255     \expandafter\let\csname KV@#1@#2@default\expandafter\endcsname\csname KV@#1@#3@default\endcsname
    256 }
    257 \define@key{adjbox}{viewport}{%
    258     \def\adjustbox@content{%
    259         \@trimclip{%
    260             \ifGin@clip
    261                 \expandafter\@clipvpbox
    262             \else
    263                 \expandafter\@viewportbox
    264             \fi
    265         }{#1}%
    266     }%
    267 }
    268 \define@adjboxkey{Viewport}{\trimbox@s{#1}}%
    269 \define@key{adjbox}{trim}{%
    270     \def\adjustbox@content{%
    271         \@trimclip{%
    272             \ifGin@clip
    273                 \expandafter\@clipbox
    274             \else
    275                 \expandafter\@trimbox
    276             \fi
    277         }{#1}%
    278     }%
    279 }
    280 \define@adjboxkey{Trim}{\trimbox@{#1}}%
    281 \define@adjboxkey{Clip}{\clipbox@{#1}}
    282 \define@adjboxkey{Clip*}{\clipbox@s{#1}}
    283 \define@adjboxkey{margin}{\marginbox@{#1}}
    284 \define@adjboxkey{margin*}{\marginbox@s{#1}}
    285 \adjbox@let@key\adjbox@fam{padding}{margin}
    286 \adjbox@let@key\adjbox@fam{padding*}{margin*}
    287 \define@key\adjbox@fam{scale}{%
    288     \@ifnextchar\bgroup{%
    289         \adjbox@scale@xy
    290     }{%
    291         \adjbox@scale@x
    292     }#1\@nnil
    293 }
    294 \def\adjbox@scale@x#1\@nnil{%
    295     \adjbox@scale@xy{#1}{#1}\@nnil%
    296 }
    297 \def\adjbox@scale@xy#1#2\@nnil{%
    298   \if@tempswa
    299     \adjbox@Gin@add{\Gscale@box{#1}[{#2}]}%
    300   \else
    301     \def\Gin@req@sizes{%
    302       \def\Gin@scalex{#1}\def\Gin@scaley{#2}%
    303       \Gin@req@height\Gin@scaley\Gin@nat@height
    304       \Gin@req@width\Gin@scalex\Gin@nat@width}%
    305   \fi
    306   \@tempswatrue
    307 }
    308 \define@key\adjbox@fam{reflect}[]{%
    309     \adjbox@scale@xy{-1}{1}\@nnil
    310 }
    311 \expandafter\let\csname KV@\adjbox@fam @rotate\endcsname\KV@Gin@angle
    312 \def\adjbox@halign#1#2#3{%
    313     \@collectbox{\@adjbox@halign{#1}{#2}{#3}}%
    314 }
    315 \def\@adjbox@halign#1#2#3{%
    316     \begingroup
    317     \adjsetlength\@tempdima{#1}%
    318     \leavevmode\hb@xt@\the\@tempdima{#2\BOXCONTENT#3}%
    319     \endgroup
    320 }
    321 \define@adjboxkey@defvalue{center}{\linewidth}{\adjbox@halign{#1}\hss\hss}
    322 \define@adjboxkey@defvalue{left}{\linewidth}{\adjbox@halign{#1}\relax\hss}
    323 \define@adjboxkey@defvalue{right}{\linewidth}{\adjbox@halign{#1}\hss\relax}
    324 \newcommand\centerbox[1][\linewidth]{%
    325     \adjustbox@noindent
    326     \adjbox@halign{#1}\hss\hss
    327 }
    328 \newcommand\leftalignbox[1][\linewidth]{%
    329     \adjustbox@noindent
    330     \adjbox@halign{#1}\relax\hss
    331 }
    332 \newcommand\rightalignbox[1][\linewidth]{%
    333     \adjustbox@noindent
    334     \adjbox@halign{#1}\hss\relax
    335 }
    336 \define@adjboxkey@defvalue{outer}{\linewidth}{%
    337     \outersidebox[{#1}]%
    338 }
    339 \define@adjboxkey@defvalue{inner}{\linewidth}{%
    340     \innersidebox[{#1}]%
    341 }
    342 \newcommand\outersidebox[1][\linewidth]{%
    343     \collectboxcheckenv{outersidebox}%
    344     \adjustbox@noindent
    345     \adjbox@halign{#1}{%
    346         \checkoddpage
    347         \ifoddpageoroneside
    348             \hss
    349         \else
    350             \relax
    351         \fi
    352     }{%
    353         \ifoddpageoroneside
    354             \relax
    355         \else
    356             \hss
    357         \fi
    358     }%
    359 }
    360 \newcommand\innersidebox[1][\linewidth]{%
    361     \collectboxcheckenv{innersidebox}%
    362     \adjustbox@noindent
    363     \adjbox@halign{#1}{%
    364         \checkoddpage
    365         \ifoddpageoroneside
    366             \relax
    367         \else
    368             \hss
    369         \fi
    370     }{%
    371         \ifoddpageoroneside
    372             \hss
    373         \else
    374             \relax
    375         \fi
    376     }%
    377 }
    378 \IfFileExists{ifoddpage.sty}{%
    379     \RequirePackage{ifoddpage}%
    380 }{%
    381     \renewcommand\outersidebox[1][]{%
    382         \PackageError{adjustbox}{%
    383             The 'outer' and 'inner' keys as well as the\MessageBreak
    384             \string\outersidebox\space and \string\innersidebox\space macros\MessageBreak
    385             require the 'ifoddpage' package, which is not\MessageBreak
    386             installed}{}%
    387     }%
    388     \let\innersidebox\outersidebox
    389 }%
    390 \define@key\adjbox@fam{raise}{%
    391     \@ifnextchar\bgroup{%
    392         \adjbox@raise
    393     }{%
    394         \adjbox@raise{#1}{}{}%
    395     }#1{}{}{}\@nnil
    396 }
    397 \def\adjbox@raise#1#2#3#4\@nnil{%
    398     \adjbox@Gin@Add{\adjbox@raisebox{#1}{#2}{#3}}%
    399 }
    400 \def\adjbox@raisebox#1#2#3{%
    401     \@collectbox{\adjbox@@raisebox{#1}{#2}{#3}}%
    402 }
    403 \def\adjbox@@raisebox#1#2#3{%
    404     \ifx\@nnil#1\@nnil
    405         \setbox\@tempboxa\copy\collectedbox
    406     \else
    407         \adjsetlength\@tempdima{#1}%
    408         \setbox\@tempboxa\hbox{\raise\@tempdima\copy\collectedbox}%
    409     \fi
    410     \ifx\@nnil#2\@nnil\else
    411         \adjsetlength\@tempdima{#2}%
    412         \ht\@tempboxa\@tempdima
    413     \fi
    414     \ifx\@nnil#3\@nnil\else
    415         \adjsetlength\@tempdima{#3}%
    416         \dp\@tempboxa\@tempdima
    417     \fi
    418     \leavevmode
    419     \box\@tempboxa
    420 }
    421 \define@key\adjbox@fam{valign}{%
    422     \expandafter\adjbox@Gin@Add\expandafter{\csname adjbox@valign@#1\endcsname}%
    423 }
    424 \def\adjboxvtop{\ht\strutbox}
    425 \def\adjboxvcenter{1ex}
    426 \def\adjboxvbottom{-\dp\strutbox}
    427 \def\adjbox@valign@t{%
    428     \adjbox@raisebox{-\height+\adjboxvtop}{}{}%
    429 }
    430 \def\adjbox@valign@T{%
    431     \adjbox@raisebox{-\height}{}{}%
    432 }
    433 \def\adjbox@valign@M{%
    434     \adjbox@raisebox{.5\depth-.5\height}{}{}%
    435 }
    436 \def\adjbox@valign@m{%
    437     \adjbox@raisebox{.5\depth-.5\height+\adjboxvcenter}{}{}%
    438 }
    439 \def\adjbox@valign@c#1{%
    440     \leavevmode
    441     \hbox{%
    442         $\vcenter{\hbox{#1}}\m@th$%
    443     }%
    444 }
    445 \def\adjbox@valign@b{%
    446     \adjbox@raisebox{\depth+\adjboxvbottom}{}{}%
    447 }
    448 \def\adjbox@valign@B{%
    449     \adjbox@raisebox{\depth}{}{}%
    450 }
    451 \define@adjboxkey{set height}{\adjbox@raisebox{}{#1}{}}
    452 \define@adjboxkey{set depth}{\adjbox@raisebox{}{}{#1}}
    453 \define@adjboxkey{set vsize}{\adjbox@raisebox{}#1}
    454 \define@key\adjbox@fam{vspace}{%
    455     \adjbox@vskip#1 {} \@nnil{}%
    456 }
    457 \define@key\adjbox@fam{vspace*}{%
    458     \adjbox@vskip#1 {} \@nnil*%
    459 }
    460 \def\adjbox@vskip#1 #2 #3\@nnil#4{%
    461     \ifx\@nnil#2\@nnil
    462         \adjust@addcode{\par\vspace#4{#1}\noindent}{\par\vspace#4{#1}}%
    463     \else
    464         \adjust@addcode{\par\vspace#4{#1}\noindent}{\par\vspace#4{#2}}%
    465     \fi
    466 }
    467 \define@adjboxkey{min width}{\@minsizebox\height{#1}!}
    468 \define@adjboxkey{max width}{\@maxsizebox\height{#1}!}
    469 \define@adjboxkey{min height}{\@minsizebox\height!{#1}}
    470 \define@adjboxkey{max height}{\@maxsizebox\height!{#1}}
    471 \define@adjboxkey{min totalheight}{\@minsizebox\totalheight!{#1}}
    472 \define@adjboxkey{max totalheight}{\@maxsizebox\totalheight!{#1}}
    473 \def\adjbox@Gin@sizeadd#1#2\@nnil{%
    474     \@ifnextchar\bgroup{%
    475         \adjbox@Gin@Add{#1#2}%
    476         \remove@to@nnil
    477     }{%
    478         \adjbox@Gin@Add{#1{#2}{#2}}%
    479         \remove@to@nnil
    480     }#2\@nnil
    481 }
    482 \define@key\adjbox@fam{min size}{%
    483     \adjbox@Gin@sizeadd{\@minsizebox\height}#1\@nnil
    484 }
    485 \define@key\adjbox@fam{max size}{%
    486     \adjbox@Gin@sizeadd{\@maxsizebox\height}#1\@nnil
    487 }
    488 \define@key\adjbox@fam{min totalsize}{%
    489     \adjbox@Gin@sizeadd{\@minsizebox\totalheight}#1\@nnil
    490 }
    491 \define@key\adjbox@fam{max totalsize}{%
    492     \adjbox@Gin@sizeadd{\@maxsizebox\totalheight}#1\@nnil
    493 }
    494 \define@adjboxkey@defvalue{warn width}{\linewidth}{\@Collectbox{\adjbox@warnwidth{#1}}}
    495 \def\adjbox@warnwidth#1{%
    496         \@tempdima=#1\relax
    497         \advance\@tempdima by -\width
    498         \@tempdima=-\@tempdima
    499         \ifdim\@tempdima>\hfuzz
    500             \typeout{Overfull \string\hbox\space (\the\@tempdima\space too wide) in adjustbox at
    501                 \ifnum\adjbox@line=\inputlineno
    502                     line \adjbox@line
    503                 \else
    504                     lines \adjbox@line--\the\inputlineno
    505                 \fi
    506             }%
    507         \fi
    508         \BOXCONTENT
    509 }
    510 \newcommand*\minsizebox{%
    511     \collectboxcheckenv{minsizebox}%
    512     \@ifstar{\@minsizebox\totalheight}{\@minsizebox\height}%
    513 }
    514 \expandafter\newcommand\expandafter*\csname minsizebox*\endcsname{%
    515     \@collectboxisenv{minsizebox*}%
    516     \@minsizebox\totalheight
    517 }
    518 \newcommand*\@minsizebox[3]{%
    519     \@collectbox{\@minmaxsizebox>#1{#2}{#3}}%
    520 }
    521 \newcommand*\maxsizebox{%
    522     \collectboxcheckenv{maxsizebox}%
    523     \@ifstar{\@maxsizebox\totalheight}{\@maxsizebox\height}%
    524 }
    525 \expandafter\newcommand\expandafter*\csname maxsizebox*\endcsname{%
    526     \@collectboxisenv{maxsizebox*}%
    527     \@maxsizebox\totalheight
    528 }
    529 \newcommand*\@maxsizebox[3]{%
    530     \@collectbox{\@minmaxsizebox<#1{#2}{#3}}%
    531 }
    532 \newcommand*\@minmaxsizebox[4]{%
    533     \edef\@tempa{#3}%
    534     \edef\@tempb{#4}%
    535     \ifcase0%
    536     \ifx\@tempa\Gin@exclamation
    537         \ifx\@tempb\Gin@exclamation
    538         \else
    539             \ifdim\@tempb#1#2%
    540                 1%
    541             \fi
    542         \fi
    543     \else
    544         \ifx\@tempb\Gin@exclamation
    545             \ifdim\@tempa#1\width
    546                 2%
    547             \fi
    548         \else
    549             \ifdim\@tempa#1\width
    550                 \ifdim\@tempb#1#2%
    551                     3%
    552                 \else
    553                     2%
    554                 \fi
    555             \else
    556                 \ifdim\@tempb#1#2%
    557                     1%
    558                 \fi
    559             \fi
    560         \fi
    561     \fi
    562     \relax% 0
    563         \BOXCONTENT
    564     \or
    565         \adjsetlength\@tempdima\@tempb
    566         \Gscale@div\@tempa\@tempdima#2%
    567         \Gscale@box\@tempa[\@tempa]\BOXCONTENT
    568     \or
    569         \adjsetlength\@tempdima\@tempa
    570         \Gscale@div\@tempa\@tempdima\width
    571         \Gscale@box\@tempa[\@tempa]\BOXCONTENT
    572     \or
    573         \adjsetlength\@tempdima\@tempa
    574         \Gscale@div\@tempa\@tempdima\width
    575         \adjsetlength\@tempdima\@tempb
    576         \Gscale@div\@tempb\@tempdima#2%
    577         \ifdim\@tempa\p@#1\@tempb\p@
    578             \let\@tempb\@tempa
    579         \else
    580             \let\@tempa\@tempb
    581         \fi
    582         \Gscale@box\@tempa[\@tempb]\BOXCONTENT
    583     \fi
    584 }
    585 \define@key\adjbox@fam{frame}[{{\fboxrule}}]{%
    586     \adjbox@frame{\fboxsep\z@}#1 {} {} \relax\relax\@nnil
    587 }
    588 \define@key\adjbox@fam{fbox}[{{\fboxrule}}]{%
    589     \adjbox@frame{}#1 {} {} {} \relax\relax\@nnil
    590 }
    591 \def\adjbox@frame#1#2 #3 #4 #5\relax{%
    592     \adjbox@Gin@Add{%
    593         \@Collectbox{#1\adjbox@@frame{}{#2}{#3}{#4}}%
    594     }%
    595     \remove@to@nnil
    596 }
    597 \define@key\adjbox@fam{cframe}{%
    598     \adjbox@checkcolor
    599     \adjbox@cframe{\fboxsep\z@}#1 {} {} {} \relax\relax\@nnil
    600 }
    601 \define@key\adjbox@fam{cfbox}{%
    602     \adjbox@checkcolor
    603     \adjbox@cframe{}#1 {} {} {} \relax\relax\@nnil
    604 }
    605 \def\adjbox@cframe#1#2 #3 #4 #5 #6\relax{%
    606     \adjbox@Gin@Add{%
    607         \@Collectbox{#1\adjbox@@frame{\color{#2}}{#3}{#4}{#5}}%
    608     }%
    609     \remove@to@nnil
    610 }
    611 \def\adjbox@checkcolor{%
    612     \ifcase0%
    613         \expandafter\ifx\csname ver@xcolor.sty\endcsname\relax
    614         \expandafter\ifx\csname ver@color.sty\endcsname\relax
    615         \expandafter\ifx\csname ver@xxcolor.sty\endcsname\relax 1\fi\fi\fi
    616     \relax
    617         \global\let\adjbox@checkcolor\relax
    618     \else
    619         \PackageError{adjustbox}{Using a macro, environment or key with color\MessageBreak
    620                 requires a color package to be loaded manually.\MessageBreak
    621                 Recommended is 'xcolor' but 'color' is ok, too}{}.
    622     \fi
    623 }
    624 \def\adjbox@@frame#1#2#3#4{%
    625     \ifx\@nnil#2\@nnil\else
    626         \adjsetlength\fboxrule{#2}%
    627     \fi
    628     \ifx\@nnil#3\@nnil\else
    629         \adjsetlength\fboxsep{#3}%
    630     \fi
    631     \adjsetlength\tc@llx{\fboxrule + \fboxsep}%
    632     \@marginbox\collectedbox\tc@llx\tc@llx\tc@llx\tc@llx
    633     \ifx\@nnil#4\@nnil\else
    634       \setbox\collectedbox
    635     \fi
    636       \hbox\bgroup\color@setgroup
    637         \BOXCONTENT
    638         \hskip-\width
    639         #1%
    640         \adjbox@boxframe\width\height\depth
    641       \color@endgroup\egroup
    642     \ifx\@nnil#4\@nnil\else
    643       \adjsetlength\tc@llx{#4}%
    644       \@marginbox\collectedbox\tc@llx\tc@llx\tc@llx\tc@llx
    645       \BOXCONTENT
    646     \fi
    647 }
    648 \let\adjbox@boxframe\boxframe
    649 \providecommand\adjbox@boxframe[3]{%
    650     \hbox{%
    651         \dimen@ #2%
    652         \advance \dimen@ #3\relax
    653         \lower #3\vbox {%
    654             \hrule \@height \fboxrule
    655             \@tempdima -0.5\fboxrule
    656             \ifodd\fboxrule
    657                 \advance \@tempdima \m@ne sp
    658             \fi
    659             \kern \@tempdima
    660             \hbox {%
    661                 \advance \dimen@ -\fboxrule
    662                 \vrule \@width \fboxrule \@height \dimen@ \@depth \z@
    663                 \@tempdima #1%
    664                 \advance \@tempdima -\tw@ \fboxrule
    665                 \kern \@tempdima
    666                 \vrule \@width \fboxrule \@height \dimen@ \@depth \z@
    667             }%
    668             \kern -0.5\fboxrule
    669             \hrule \@height \fboxrule
    670         }%
    671     }%
    672 }
    673 \define@key\adjbox@fam{dpi}{%
    674     \adjsetlength\pdfpxdimen{1in/(#1)}%
    675 }
    676 \define@key\adjbox@fam{pxdim}{%
    677     \adjsetlength\pdfpxdimen{#1}%
    678 }
    679 \define@key\adjbox@fam{execute}{%
    680     #1%
    681 }
    682 \define@key\adjbox@fam{@debug}[]{%
    683     \showthe\toks@
    684 }
    685 \define@key{ADJBOX}{Execute}{%
    686     #1%
    687 }
    688 \define@key{adjbox}{Addcode}{%
    689     \adjust@@addcode#1{}\@nnil%
    690 }
    691 \define@key{adjbox}{addcode}{%
    692     \Gin@esetsize
    693     \@tempswatrue
    694     \adjust@@addcode#1{}\@nnil%
    695 }
    696 \long\def\adjust@@addcode#1#2#3\@nnil{%
    697     \ifx\@nnil#3\@nnil
    698         \adjust@addcode{#1}{#2}%
    699     \else
    700         \PackageError{adjustbox}{Incorrect input for key 'addcode={<code before>}{<code afterwards>}'!}%
    701     \fi
    702 }
    703 \define@key{adjbox}{precode}{%
    704     \Gin@esetsize
    705     \@tempswatrue
    706     \adjust@addcode{#1}{}%
    707 }
    708 \define@key{adjbox}{Precode}{%
    709     \adjust@addcode{#1}{}%
    710 }
    711 \define@key{adjbox}{appcode}{%
    712     \toks@\expandafter{\the\toks@#1}%
    713 }
    714 \long\def\adjust@addcode#1#2{%
    715     \def\@tempa{#1}%
    716     \toks@\expandafter\expandafter\expandafter{\expandafter\@tempa\expandafter{\the\toks@}#2}%
    717 }%
    718 \define@key\adjbox@fam{env}{%
    719     \@ifnextchar\bgroup{%
    720         \adjbox@addenv
    721     }{%
    722         \adjbox@addenv{#1}\@nnil%
    723         \remove@to@nnil
    724     }#1\@nnil
    725 }
    726 \def\adjbox@addenv#1#2\@nnil{%
    727     \def\@tempa{\begin{#1}#2}%
    728     \toks@\expandafter\expandafter\expandafter{\expandafter\@tempa\the\toks@\end{#1}}%
    729 }%
    730 \define@key\adjbox@fam{bgcolor}{%
    731     \adjbox@checkcolor
    732     \@ifnextchar\bgroup{%
    733         \adjbox@bgcolor
    734     }{%
    735         \adjbox@bgcolor{}{#1}%
    736     }#1\@nnil
    737 }
    738 \def\adjbox@bgcolor#1#2#3\@nnil{%
    739     \ifx\@nnil#1\@nnil
    740         \adjbox@Gin@add{\@Collectbox{\adjbox@@bgcolor{\color{#2}}}}%
    741     \else
    742         \adjbox@Gin@add{\@Collectbox{\adjbox@@bgcolor{\color[#1]{#2}}}}%
    743     \fi
    744 }
    745 \define@key\adjbox@fam{bgcolor*}{%
    746     \adjbox@checkcolor
    747     \adjbox@Gin@add{\@Collectbox{\adjbox@@bgcolor{#1}}}%
    748 }
    749 \def\adjbox@@bgcolor#1{%
    750     \mbox{%
    751         \hbox{%
    752             #1%
    753             \vrule\@width\width\@height\height\@depth\depth%
    754         }%
    755         \hskip-\width
    756         \BOXCONTENT
    757     }%
    758 }%
    759 \newcommand*\bgimagebox[2][]{%
    760     \collectboxcheckenv{bgimagebox}%
    761     \@collectbox{\@bgimagebox{#1}{#2}}%
    762 }
    763 \def\@bgimagebox#1#2{%
    764     \mbox{%
    765         \lower\depth\hbox{%
    766             \edef\@tempa{\noexpand\adjustimage
    767                 {#1,width=\the\width,totalheight=\the\totalheight}%
    768                 {#2}%
    769             }%
    770             \@tempa
    771         }%
    772         \hskip-\width%
    773         \BOXCONTENT
    774     }%
    775 }
    776 \define@key{adjbox}{bgimage}{%
    777     \@ifnextchar\bgroup{%
    778         \adjbox@bgimage
    779     }{%
    780         \adjbox@bgimage{}{#1}%
    781     }#1\@nnil
    782 }
    783 \def\adjbox@bgimage#1#2#3\@nnil{%
    784     \adjbox@Gin@add{\@Collectbox{\@bgimagebox{#1}{#2}}}%
    785 }
    786 \define@key\adjbox@fam{lap}{%
    787     \@ifnextchar\bgroup{%
    788         \adjbox@lapbox
    789     }{%
    790         \adjbox@lapbox{#1}{}%
    791     }#1{}{}\@nnil
    792 }
    793 \def\adjbox@lapbox#1#2#3\@nnil{%
    794     \ifx\@nnil#2\@nnil
    795         \adjbox@Gin@Add{\lapbox{#1}}%
    796     \else
    797         \adjbox@Gin@Add{\lapbox[{#1}]{#2}}%
    798     \fi
    799 }
    800 \define@key\adjbox@fam{rlap}[]{%
    801     \adjbox@Gin@Add{\lapbox{\width}}%
    802 }
    803 \define@key\adjbox@fam{llap}[]{%
    804     \adjbox@Gin@Add{\lapbox{-\width}}%
    805 }
    806 \newcommand*\lapbox[2][\width-\@tempdimb]{%
    807     \collectboxcheckenv{lapbox}%
    808     \@collectbox{\@lapbox{#1}{#2}}%
    809 }
    810 \def\@lapbox#1#2{%
    811     \adjsetlength\@tempdima{#2}%
    812     \ifdim\@tempdima<\z@
    813         \@tempdimb=-\@tempdima
    814     \else
    815         \@tempdimb=\@tempdima
    816     \fi
    817     \adjsetlength\@tempdimc{#1}%
    818     \ifdim\@tempdimc<\z@
    819         \@tempdimc=\z@
    820     \fi
    821     \leavevmode
    822     \ifdim\@tempdima<\z@
    823         \hb@xt@\@tempdimc{\hss\hb@xt@\@tempdimb{\usebox\collectedbox\hss}\hskip\@tempdimc}%
    824     \else
    825         \hb@xt@\@tempdimc{\hskip\@tempdimc\hb@xt@\@tempdimb{\hss\usebox\collectedbox}\hss}%
    826     \fi
    827 }
    828 \define@key{ADJBOX}{minipage}{%
    829     \adjbox@page{minipage}{#1}%
    830 }
    831 \define@key{ADJBOX}{varwidth}{%
    832     \adjbox@page{varwidth}{#1}%
    833 }
    834 \def\adjbox@page#1#2{%
    835     \@ifnextchar[{%
    836         \adjbox@@page{#1}%
    837     }{%
    838         \@ifnextchar\bgroup{%
    839             \adjbox@@page{#1}%
    840         }{%
    841             \adjbox@@page{#1}{{#2}}\@nnil%
    842             \remove@to@nnil
    843         }%
    844     }#2\@nnil
    845 }
    846 \def\adjbox@@page#1#2\@nnil{%
    847     \def\adjbox@collectbox##1{\collectbox@{\adjbox@set\begin{#1}#2\adjbox@reset}{##1}{\end{#1}}}%
    848 }
    849 \def\adjbox@set{%
    850     \let\adjbox@origsetlength\setlength
    851     \def\setlength{\adjsetlength}%
    852 }
    853 \def\adjbox@reset{%
    854     \let\setlength\adjbox@origsetlength
    855 }
    856 \newcommand*\stackbox[1][c]{%
    857     \collectboxcheckenv{stackbox}%
    858     \@ifnextchar[%]
    859         {\@stackbox{#1}}%
    860         {\@@stackbox{#1}{b}[]}%
    861 }
    862 \def\@stackbox#1[#2]{%
    863     \@testopt{\@@stackbox{#1}{#2}}{}%
    864 }
    865 \def\@@stackbox#1#2[#3]{%
    866     \collectbox@
    867         {\begin{varwidth}[#2]{\linewidth}\csname adjbox@halign@#1\endcsname#3}
    868         \BOXCONTENT
    869         {\end{varwidth}}%
    870 }
    871 \def\adjbox@halign@c{\centering}
    872 \def\adjbox@halign@l{\raggedright}
    873 \def\adjbox@halign@r{\raggedleft}
    874 \def\adjbox@halign@j{\let\\\newline}
    875 \define@key{ADJBOX}{stack}[{}{}{}]{%
    876     \adjbox@stack#1{}{}{}\@nnil
    877 }
    878 \def\adjbox@stack#1#2#3#4\@nnil{%
    879     \ifx\@nnil#1\@nnil
    880         \adjbox@@stack{c}{b}{}%
    881     \else
    882     \ifx\@nnil#2\@nnil
    883         \adjbox@@stack{#1}{b}{}%
    884     \else
    885         \adjbox@@stack{#1}{#2}{#3}%
    886     \fi\fi
    887 }
    888 \def\adjbox@@stack#1#2#3{%
    889     \def\adjbox@collectbox##1{%
    890         \collectbox@{%
    891             \begin{varwidth}[#2]{\linewidth}%
    892             \csname adjbox@halign@#1\endcsname#3%
    893         }{##1}{\end{varwidth}}%
    894     }%
    895 }
    896 \IfFileExists{varwidth.sty}
    897     {\RequirePackage{varwidth}}{%
    898     \define@key{ADJBOX}{varwidth}{%
    899         \PackageError{adjustbox}{The 'varwidth' key requires the 'varwidth' package, which is not installed}{}%
    900     }
    901     \define@key{ADJBOX}{stack}{%
    902         \PackageError{adjustbox}{The 'stack' key requires the 'varwidth' package, which is not installed}{}%
    903     }
    904 }%
    905 \define@key{ADJBOX}{tabular}{%
    906     \@ifnextchar[{%
    907         \adjbox@tabular{tabular}%
    908     }{%
    909         \adjbox@tabular{tabular}{{#1}}\@nnil%
    910         \remove@to@nnil
    911     }#1\@nnil
    912 }
    913 \def\adjbox@tabular#1#2\@nnil{%
    914     \ifcollectboxenv
    915         \adjbox@innerenv{#1}{#2}\@nnil
    916     \else
    917         \def\adjbox@collectbox##1{\collectbox@tab{#1}{#2}{}{##1}{}}%
    918     \fi
    919 }
    920 \define@key{ADJBOX}{tabular*}{%
    921     \adjbox@tabular{tabular*}#1\@nnil
    922 }
    923 \define@key{ADJBOX}{array}{%
    924     \@ifnextchar[{%
    925         \adjbox@array%
    926     }{%
    927         \adjbox@array{{#1}}\@nnil%
    928         \remove@to@nnil
    929     }#1\@nnil
    930 }
    931 \def\adjbox@array#1\@nnil{%
    932     \ifcollectboxenv
    933         \adjbox@innercode{\(\begin{array}#1}{\end{array}\)}%
    934     \else
    935         \def\adjbox@collectbox##1{\collectbox@tab{array}{#1}{\(}{##1}{\)}}%
    936     \fi
    937 }
    938 \define@key{ADJBOX}{innerenv}{%
    939     \@ifnextchar\bgroup{%
    940         \adjbox@@innerenv
    941     }{%
    942         \adjbox@innerenv{#1}\@nnil%
    943         \remove@to@nnil
    944     }#1\@nnil
    945 }
    946 \def\adjbox@innerenv#1#2\@nnil{%
    947     \def\adjbox@collectbox##1{\collectbox@{\begin{#1}#2}{##1}{\end{#1}}}%
    948 }%
    949 \def\adjbox@@innerenv#1{%
    950     \adjbox@@@innerenv{#1}{}%
    951 }%
    952 \def\adjbox@@@innerenv#1#2\@nnil{%
    953     \expandafter\adjbox@@@@innerenv\expandafter{\@gobble#2}{#1}%
    954 }%
    955 \def\adjbox@@@@innerenv#1#2{%
    956     \adjbox@innerenv{#2}{#1}\@nnil
    957 }%
    958 \define@key{ADJBOX}{innercode}{%
    959     \adjbox@innercode#1{}{}%
    960 }
    961 \def\adjbox@innercode#1#2{%
    962     \def\adjbox@collectbox##1{\collectbox@{#1}{##1}{#2}}%
    963 }%
    964 \define@key\adjbox@fam{label}{%
    965     \def\adjbox@label{\label{#1}}%
    966 }
    967 \let\adjbox@label\@empty
    968 \chardef\adjbox@caption@pos=11
    969 \define@key\adjbox@fam{captionabove}{%
    970     \chardef\adjbox@caption@pos=1
    971     \csname KV@\adjbox@fam @caption\endcsname{#1}%
    972 }
    973 \define@key\adjbox@fam{captionbelow}{%
    974     \chardef\adjbox@caption@pos=0
    975     \csname KV@\adjbox@fam @caption\endcsname{#1}%
    976 }
    977 \define@key\adjbox@fam{caption}{%
    978     \@ifnextchar{[}{%
    979         \adjbox@def@caption
    980     }{%
    981         \adjbox@def@@caption
    982     }#1\@nnil
    983 }
    984 \def\adjbox@def@@caption#1\@nnil{%
    985     \def\adjbox@caption{\caption{#1}}%
    986 }
    987 \def\adjbox@def@caption[#1]#2\@nnil{%
    988     \def\adjbox@caption{\caption[#1]{#2}}%
    989 }
    990 \let\adjbox@caption\@empty
    991 \define@key\adjbox@fam{figure}[]{%
    992     \let\adjustbox@noindent\relax
    993     \ifx\@nnil#1\@nnil
    994         \adjbox@addfloat{figure}{\begin{figure}}{}{\end{figure}}%
    995     \else
    996         \adjbox@addfloat{figure}{\begin{figure}}{[{#1}]}{\end{figure}}%
    997     \fi
    998 }
    999 \define@key\adjbox@fam{float}{%
   1000     \let\adjustbox@noindent\relax
   1001     \@ifnextchar\bgroup{%
   1002         \adjbox@float
   1003     }{%
   1004         \adjbox@float{#1}{}\@nnil
   1005         \remove@to@nnil
   1006     }#1\@nnil
   1007 }
   1008 \def\adjbox@float#1#2\@nnil{%
   1009     \adjbox@addfloat{#1}{\begin{#1}}{#2}{\end{#1}}%
   1010 }
   1011 \define@key\adjbox@fam{nofloat}[figure]{%
   1012     \adjbox@addfloat{#1}{\adjnofloat}{{#1}}{\endadjnofloat}%
   1013 }
   1014 \def\adjbox@caption@table@pos{1}
   1015 \def\adjbox@addfloat#1#2#3#4{%
   1016     \ifnum\adjbox@caption@pos>10
   1017         \chardef\adjbox@caption@pos=0\csname adjbox@caption@#1@pos\endcsname\relax
   1018     \fi
   1019     \ifcase\adjbox@caption@pos
   1020         \def\@tempa{\adjust@addcode{#2#3}}%
   1021         \expandafter\expandafter\expandafter\@tempa
   1022         \expandafter\expandafter\expandafter{\expandafter\adjbox@caption\adjbox@label#4}%
   1023     \else
   1024         \def\@tempa##1{\adjust@addcode{#2#3\adjbox@captionabove##1}}%
   1025         \expandafter\expandafter\expandafter\@tempa
   1026         \expandafter\expandafter\expandafter
   1027         {\expandafter\adjbox@caption\adjbox@label}{#4}%
   1028     \fi
   1029 }
   1030 \@ifpackageloaded{caption}{%
   1031     \let\adjbox@captionabove\relax
   1032 }{%
   1033     \def\adjbox@captionabove{%
   1034         \begingroup
   1035         \edef\@tempa{\endgroup
   1036             \abovecaptionskip=\the\belowcaptionskip\relax
   1037             \belowcaptionskip=\the\abovecaptionskip\relax
   1038         }%
   1039         \@tempa
   1040     }%
   1041     \AtBeginDocument{%
   1042         \@ifpackageloaded{caption}{%
   1043             \global\let\adjbox@captionabove\relax
   1044         }{}%
   1045     }%
   1046 }
   1047 \newenvironment{adjnofloat}[1]{%
   1048     \trivlist
   1049     \def\@captype{#1}%
   1050     \parindent\z@
   1051     \item\relax
   1052 }{%
   1053     \endtrivlist
   1054 }
   1055 \define@key\adjbox@fam{phantom}[]{%
   1056     \expandafter\ifx\csname #1phantom\endcsname\relax
   1057         \adjust@addcode{\phantom}{}%
   1058     \else
   1059         \expandafter\adjust@addcode\expandafter{\csname #1phantom\endcsname}{}%
   1060     \fi
   1061 }
   1062 \newcommand*\phantombox[3]{%
   1063     \begingroup
   1064     \adjsetlength\@tempdima{#1}%
   1065     \adjsetlength\@tempdimb{#2}%
   1066     \adjsetlength\@tempdimc{#3}%
   1067     \setbox\collectedbox\hbox{}%
   1068     \wd\collectedbox\@tempdima
   1069     \ht\collectedbox\@tempdimb
   1070     \dp\collectedbox\@tempdimc
   1071     \leavevmode
   1072     \box\collectedbox
   1073     \endgroup
   1074 }
   1075 \define@key\adjbox@fam{gobble}[\@nil]{%
   1076     \adjbox@novalue{#1}%
   1077     \let\adjustbox@noindent\relax
   1078     \adjbox@Gin@Add{\@Collectbox{}}%
   1079 }
   1080 \adjbox@let@key\adjbox@fam{discard}{gobble}%
   1081 \define@adjboxkey{content}{\@Collectbox{#1}}%
   1082 \define@adjboxkey{gstore}{\global\@collectboxto{#1}{\BOXCONTENT}}
   1083 \define@key\adjbox@fam{gstore*}{%
   1084     \let\adjustbox@noindent\relax
   1085     \adjbox@Gin@Add{\global\sbox{#1}}%
   1086 }
   1087 \define@key{adjbox}{gstore width}{%
   1088     \adjbox@Gin@Add{\@Collectbox{\global#1=\width\BOXCONTENT}}%
   1089 }
   1090 \define@key{adjbox}{gstore depth}{%
   1091     \adjbox@Gin@Add{\@Collectbox{\global#1=\depth\BOXCONTENT}}%
   1092 }
   1093 \define@key{adjbox}{gstore height}{%
   1094     \adjbox@Gin@Add{\@Collectbox{\global#1=\height\BOXCONTENT}}%
   1095 }
   1096 \define@key{adjbox}{gstore totalheight}{%
   1097     \adjbox@Gin@Add{\@Collectbox{\global#1=\totalheight\BOXCONTENT}}%
   1098 }
   1099 \define@key{adjbox}{gstore sizes}{%
   1100     \adjbox@Gin@Add{\@Collectbox{\adjbox@gstore@sizes#1\relax\relax\relax\relax\@nnil\BOXCONTENT}}%
   1101 }
   1102 \def\adjbox@gstore@sizes#1#2#3#4#5\@nnil{%
   1103     \ifx\relax#1\relax\else
   1104         \global#1=\width
   1105     \fi
   1106     \ifx\relax#2\relax\else
   1107         \global#2=\height
   1108     \fi
   1109     \ifx\relax#3\relax\else
   1110         \global#3=\depth
   1111     \fi
   1112     \ifx\relax#4\relax\else
   1113         \global#4=\totalheight
   1114     \fi
   1115 }
   1116 %%\RequirePackage{storebox}
   1117 \newcommand\splitbox[2]{%
   1118     \collectboxcheckenv{splitbox}%
   1119     \@collectbox{\@splitbox{#1}{#2}}%
   1120 }
   1121 \define@adjboxkey{split}{\@Collectbox{\@splitbox#1}}
   1122 \def\@splitbox#1#2{%
   1123     \ifstorebox
   1124         \storebox\splittedbox{\BOXCONTENT}%
   1125         \setbox\collectedbox\hbox{\usestorebox\splittedbox}%
   1126     \fi
   1127     \xdef\@tempa{#1}%
   1128     \xdef\@tempb{#2}%
   1129     \ifx\@tempa\Gin@exclamation
   1130         \@tempdima\maxdimen
   1131     \else
   1132         \adjsetlength\@tempdima\@tempa
   1133     \fi
   1134     \ifx\@tempb\Gin@exclamation
   1135         \Gin@nat@height\maxdimen
   1136     \else
   1137         \adjsetlength\Gin@nat@height\@tempb
   1138     \fi
   1139     \ifdim\@tempdima>\width
   1140         \@tempdima\width
   1141     \fi
   1142     \ifdim\Gin@nat@height>\totalheight
   1143         \Gin@nat@height\totalheight
   1144     \fi
   1145     \tc@llx\z@
   1146     \tc@lly\totalheight
   1147     \tc@urx\width
   1148     \tc@ury\z@
   1149     \advance\tc@lly-\Gin@nat@height
   1150     \@@splitbox
   1151 }
   1152 \def\@@splitbox{%
   1153     \advance\tc@urx-\@tempdima
   1154     \@@@splitbox
   1155     \ifdim\tc@urx>\z@
   1156         \advance\tc@llx+\@tempdima
   1157         \expandafter\@@splitbox
   1158     \else
   1159         \ifdim\tc@lly<\splitbox@epsilon
   1160             \splitboxlastnewline
   1161         \else
   1162             \splitboxnewline
   1163             \tc@llx\z@
   1164             \tc@urx\width
   1165             \advance\tc@lly-\Gin@nat@height
   1166             \advance\tc@ury+\Gin@nat@height
   1167             \expandafter\expandafter
   1168             \expandafter\@@splitbox
   1169         \fi
   1170     \fi
   1171 }
   1172 \def\@@@splitbox{%
   1173     \begingroup
   1174     \setbox\collectedbox=\copy\collectedbox
   1175     \@clipbox\collectedbox\tc@llx\tc@lly\tc@urx\tc@ury
   1176     \splitboxcmd{\usebox\collectedbox}%
   1177     \endgroup
   1178 }
   1179 \def\@@@splitbox{%
   1180     \begingroup
   1181     \setbox\collectedbox=\copy\collectedbox
   1182     \@clipbox\collectedbox\tc@llx\tc@lly\tc@urx\tc@ury
   1183     \splitboxcmd{\usebox\collectedbox}%
   1184     \endgroup
   1185 }
   1186 \let\splitboxcmd\empty
   1187 \newcommand\splitboxnewline{\\}
   1188 \newcommand\splitboxlastnewline{\splitboxnewline}
   1189 \def\splitbox@epsilon{100sp}
   1190 \newcommand\pagebreakbox{%
   1191     \par\noindent
   1192     \collectboxcheckenv{pagebreakbox}%
   1193     \@collectbox{\@pagebreakbox}%
   1194 }
   1195 \define@key\adjbox@fam{pagebreak}[]{%
   1196     \adjbox@Gin@Add{\@Collectbox{\@pagebreakbox}}%
   1197 }
   1198 \def\@pagebreakbox{%
   1199     \sbox\collectedbox{\raise\dp\collectedbox\hbox{\BOXCONTENT}}%
   1200     \ifstorebox
   1201         \storebox\splittedbox{\BOXCONTENT}%
   1202         \setbox\collectedbox\hbox{\usestorebox\splittedbox}%
   1203     \fi
   1204     \adjsetlength\tc@lly
   1205         {\totalheight-\pagegoal+\pagetotal+\pagebreakboxoffset}%
   1206     \ifdim\tc@lly>\z@
   1207         \begingroup
   1208         \setbox\collectedbox=\copy\collectedbox
   1209         \@clipbox\collectedbox\z@\tc@lly\z@\z@
   1210         \BOXCONTENT
   1211         \endgroup
   1212         \par\noindent
   1213         \adjsetlength\tc@ury{\totalheight-\tc@lly}%
   1214         \ifdim\tc@lly>\textheight
   1215             \loop
   1216                 \advance\tc@lly-\textheight
   1217                 \begingroup
   1218                 \setbox\collectedbox=\copy\collectedbox
   1219                 \@clipbox\collectedbox\z@\tc@lly\z@\tc@ury
   1220                 \BOXCONTENT
   1221                 \endgroup
   1222                 \advance\tc@ury\textheight
   1223                 \par\noindent
   1224                 \ifdim\tc@lly>\textheight
   1225             \repeat
   1226             \@clipbox\collectedbox\z@\z@\z@\tc@ury
   1227             \BOXCONTENT
   1228         \else
   1229             \@clipbox\collectedbox\z@\z@\z@\tc@ury
   1230             \par\noindent
   1231             \BOXCONTENT
   1232         \fi
   1233     \else
   1234         \BOXCONTENT%
   1235     \fi
   1236     \par
   1237 }
   1238 \newcommand*\pagebreakboxoffset{\ht\strutbox}
   1239 \endinput
   1240 %%
   1241 %% End of file `adjustbox.sty'.