summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/adjustbox/adjustbox.sty
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2018-04-09 21:14:28 +0000
committerKarl Berry <karl@freefriends.org>2018-04-09 21:14:28 +0000
commitdb2477c99efe052b36f6f42d0e8666d5de71fcd0 (patch)
tree4e039ff9a57a55301741b7fef335580017874c5b /Master/texmf-dist/tex/latex/adjustbox/adjustbox.sty
parent20e3b619e46b4054c5e50d58557d23611f8eae38 (diff)
adjustbox (9apr18)
git-svn-id: svn://tug.org/texlive/trunk@47405 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/adjustbox/adjustbox.sty')
-rw-r--r--Master/texmf-dist/tex/latex/adjustbox/adjustbox.sty630
1 files changed, 567 insertions, 63 deletions
diff --git a/Master/texmf-dist/tex/latex/adjustbox/adjustbox.sty b/Master/texmf-dist/tex/latex/adjustbox/adjustbox.sty
index b07f7d9c530..999d602fd1a 100644
--- a/Master/texmf-dist/tex/latex/adjustbox/adjustbox.sty
+++ b/Master/texmf-dist/tex/latex/adjustbox/adjustbox.sty
@@ -1,4 +1,4 @@
-%% Copyright (C) 2011-2012 by Martin Scharrer <martin@scharrer-online.de>
+%% Copyright (C) 2011-2018 by Martin Scharrer <martin@scharrer-online.de>
%% ----------------------------------------------------------------------
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -16,8 +16,8 @@
%% and the derived file adjustbox.sty.
%%
\ProvidesPackage{adjustbox}[%
- 2012/05/21
- v1.0
+ 2018/04/08
+ v1.1
Adjusting TeX boxes (trim, clip, ...)]
\RequirePackage{xkeyval}
\RequirePackage{adjcalc}
@@ -85,23 +85,33 @@
\fi
}
\let\adjbox@keysafter\@empty
-\newcommand\adjustbox[1]{%
+\newcommand\adjustbox{%
\begingroup
+ \collectboxcheckenv{adjustbox}%
+ \@adjustbox
+}
+\long\def\@adjustbox#1{%
\edef\adjbox@line{\the\inputlineno}%
\let\collectbox@mode\relax
\let\collectbox@noindent\relax
- \collectboxcheckenv{adjustbox}%
- \ifcollectboxenv\else
+ \let\adjbox@collectbox\@collectbox
+ \let\adjbox@begininnercode\@empty
+ \let\adjbox@endinnercode\@empty
+ \chardef\adjbox@innerlevel\z@
+ \ifcollectboxenv
+ \let\adjustbox@noindent\noindent
+ \let\adjustbox@unskip\unskip
+ \let\adjustbox@ignorespaces\ignorespaces
+ \else
\let\adjustbox@noindent\relax
+ \let\adjustbox@unskip\relax
+ \let\adjustbox@ignorespaces\relax
\fi
- \begingroup
+ \let\XKV@checksanitizea\adjbox@kvsanitize
\adjbox@setkeys{#1}%
- \expandafter\expandafter\expandafter
- \endgroup
\expandafter
\adjbox@collectbox\expandafter{\expandafter\adjustbox@\expandafter{\XKV@rm}}%
}
-\def\adjbox@collectbox{\@collectbox}
\def\adjbox@setkeys@ba{%
\expandafter\expandafter
\expandafter\adjbox@@setkeys@ba
@@ -115,7 +125,6 @@
\def\adjbox@setkeys{%
\setkeys*{ADJBOX}%
}
-\let\adjustbox@noindent\noindent
\def\adjustbox@#1{%
\adjbox@Width\width
\adjbox@Height\height
@@ -136,13 +145,113 @@
\the\toks@
\endgroup
}
+\begingroup
+\catcode`\, 3
+\catcode`\= 3
+\gdef\adjbox@comma@iii{,}%
+\gdef\adjbox@equal@iii{=}%
+\catcode`\, 4
+\catcode`\= 4
+\gdef\adjbox@comma@iv{,}%
+\gdef\adjbox@equal@iv{=}%
+\catcode`\, 7
+\catcode`\= 7
+\gdef\adjbox@comma@vii{,}%
+\gdef\adjbox@equal@vii{=}%
+\catcode`\, 8
+\catcode`\= 8
+\gdef\adjbox@comma@viii{,}%
+\gdef\adjbox@equal@viii{=}%
+\catcode`\, 10
+\catcode`\= 10
+\gdef\adjbox@comma@x{,}%
+\gdef\adjbox@equal@x{=}%
+\catcode`\, 11
+\catcode`\= 11
+\gdef\adjbox@comma@xi{,}%
+\gdef\adjbox@equal@xi{=}%
+\catcode`\, 13
+\catcode`\= 13
+\gdef\adjbox@comma@xiii{,}%
+\gdef\adjbox@equal@xiii{=}%
+\catcode`\, 12
+\catcode`\= 12
+\gdef\adjbox@comma@xii{,}%
+\gdef\adjbox@equal@xii{=}%
+\gdef\adjbox@kvsanitize#1#2{%
+ \def\@tempa{\expandafter\noexpand\adjbox@comma@xiii}%
+ \def\@tempb{}%
+ \ifnum\catcode`\,=12 \else
+ \ifnum\catcode`\,=13 \else
+ \@ifundefined{adjbox@comma@\romannumeral\catcode`\,}{%
+ \PackageError{adjustbox}
+ {Invalid comma catcode \the\catcode`\,}{}%
+ }{}%
+ \edef\@tempb{\csname adjbox@comma@\romannumeral\the\catcode`\,\endcsname}%
+ \fi
+ \fi
+ \edef\@tempa{\@tempa\@tempb}%
+ \XKV@tempa@toks{#1}%
+ \expandafter\adjbox@replacecatcodes\expandafter,\@tempa\@nnil
+ \def\@tempa{\expandafter\noexpand\adjbox@equal@xiii}%
+ \def\@tempb{}%
+ \ifnum\catcode`\==12 \else
+ \ifnum\catcode`\==13 \else
+ \@ifundefined{adjbox@equal@\romannumeral\catcode`\=}{%
+ \PackageError{adjustbox}
+ {Invalid equal sign catcode \the\catcode`\=}{}%
+ }{}%
+ \def\@tempb{\@tempa\csname adjbox@equal@\romannumeral\the\catcode`\,\endcsname}%
+ \fi
+ \fi
+ \edef\@tempa{\@tempa\@tempb}%
+ \expandafter\adjbox@replacecatcodes\expandafter=\@tempa\@nnil
+ \edef#2{\the\XKV@tempa@toks}%
+}
+\gdef\adjbox@replacecatcodes#1#2{%
+ \ifx\@nnil#2\relax\else
+ \def\@tempa##1#2{%
+ \ifx\@nnil##1\relax\else
+ \XKV@tempa@toks{##1}%
+ \expandafter\@tempb
+ \fi
+ }%
+ \def\@tempb##1#2{%
+ \ifx\@nnil##1\relax\else
+ \XKV@tempa@toks\expandafter{\the\XKV@tempa@toks#1##1}%
+ \expandafter\@tempb
+ \fi
+ }%
+ \expandafter\@tempa\the\XKV@tempa@toks#2\@nnil#2\relax
+ \expandafter\adjbox@replacecatcodes\expandafter#1%
+ \fi
+}
+\endgroup
\def\adjustbox@content{%
\usebox\collectedbox
}
+\def\smallestside{\ifdim\width<\totalheight \width\else\totalheight\fi}%
+\def\largestside{\ifdim\width>\totalheight \width\else\totalheight\fi}%
+\def\Smallestside{\ifdim\Width<\Totalheight \Width\else\Totalheight\fi}%
+\def\Largestside{\ifdim\Width>\Totalheight \Width\else\Totalheight\fi}%
\newdimen\adjbox@Width
\newdimen\adjbox@Height
\newdimen\adjbox@Depth
\newdimen\adjbox@Totalheight
+\newdimen\adjbox@pwidth
+\newdimen\adjbox@pheight
+\newdimen\adjbox@pdepth
+\newdimen\adjbox@ptotalheight
+\def\adjbox@parentdims{%
+ \let\pwidth\adjbox@pwidth
+ \let\pheight\adjbox@pheight
+ \let\pdepth\adjbox@pdepth
+ \let\ptotalheight\adjbox@ptotalheight
+ \pwidth\width
+ \pheight\height
+ \pdepth\depth
+ \ptotalheight\totalheight
+}%
\def\adjbox@esetsize{%
\ifcase0%
\ifx\Gin@ewidth\Gin@exclamation\else 1\fi
@@ -164,6 +273,103 @@
\adjustbox{#1}{\Gin@clipfalse\Gin@i{#2}}%
}
{\csname adjustbox@minimal\endcsname}
+\newcommand*\newadjustboxenv{%
+ \begingroup
+ \@ifstar{%
+ \let\@@@newadjustboxenv\@@@newadjustboxenv@
+ \def\new@adjustbox{\newenvironment}%
+ \newadjustboxenv@
+ }{%
+ \def\new@adjustbox{\newcommand}%
+ \newadjustboxenv@
+ }%
+}
+\newcommand*\newadjustboxcmd{%
+ \begingroup
+ \let\@@@newadjustboxenv\@@@newadjustboxcmd
+ \def\new@adjustbox{\newcommand}%
+ \newadjustboxenv@
+}
+\newcommand*\renewadjustboxenv{%
+ \begingroup
+ \@ifstar{%
+ \let\@@@newadjustboxenv\@@@newadjustboxenv@
+ \def\new@adjustbox{\renewenvironment}%
+ \newadjustboxenv@
+ }{%
+ \def\new@adjustbox{\renewcommand}%
+ \newadjustboxenv@
+ }%
+}
+\newcommand*\renewadjustboxcmd{%
+ \begingroup
+ \let\@@@newadjustboxenv\@@@newadjustboxcmd
+ \def\new@adjustbox{\renewcommand}%
+ \newadjustboxenv@
+}
+\newcommand*\provideadjustboxenv{%
+ \begingroup
+ \@ifstar{%
+ \let\@@@newadjustboxenv\@@@newadjustboxenv@
+ \def\new@adjustbox{\@star@or@long\adjustbox@provideenvironment}%
+ \newadjustboxenv@
+ }{%
+ \def\new@adjustbox{\providecommand}%
+ \newadjustboxenv@
+ }%
+}
+\def\adjustbox@provideenvironment#1{%
+ \@ifundefined{#1}%
+ {\new@environment{#1}}%
+ {\adjustbox@gobble@oomm}%
+}
+\newcommand*\adjustbox@gobble@oomm[1][]{%
+ \adjustbox@gobble@@oomm
+}
+\newcommand*\adjustbox@gobble@@oomm[3][]{%
+}
+\def\newadjustboxenv@#1{%
+ \@ifnextchar{[}%
+ {\@newadjustboxenv{#1}}%
+ {\@@@newadjustboxenv{#1}{[0]}}%
+}
+\def\@newadjustboxenv#1[#2]{%
+ \@ifnextchar{[}%
+ {\@@newadjustboxenv{#1}{#2}}%
+ {\@@@newadjustboxenv{#1}{[#2]}}%
+}
+\def\@@newadjustboxenv#1#2[#3]{%
+ \@@@newadjustboxenv{#1}{[#2][#3]}%
+}
+\def\@@@newadjustboxenv@#1#2#3{%
+ \expandafter
+ \endgroup
+ \new@adjustbox{#1}#2{%
+ \begingroup
+ \@collectboxisenv{#1}%
+ \@adjustbox{#3}%
+ }{%
+ \collectboxenvend
+ }%
+}
+\def\@@@newadjustboxenv#1#2#3{%
+ \expandafter
+ \endgroup
+ \expandafter
+ \expandafter\new@adjustbox\csname #1\endcsname#2{%
+ \begingroup
+ \collectboxcheckenv{#1}%
+ \@adjustbox{#3}%
+ }%
+}
+\def\@@@newadjustboxcmd#1#2#3{%
+ \expandafter
+ \endgroup
+ \new@adjustbox{#1}#2{%
+ \begingroup
+ \@adjustbox{#3}%
+ }%
+}
\def\adjbox@Gin@add#1{%
\def\@tempa{#1}%
\toks@\expandafter\expandafter\expandafter{\expandafter\@tempa\expandafter{\the\toks@}}%
@@ -254,6 +460,14 @@
\expandafter\let\csname KV@#1@#2\expandafter\endcsname\csname KV@#1@#3\endcsname
\expandafter\let\csname KV@#1@#2@default\expandafter\endcsname\csname KV@#1@#3@default\endcsname
}
+\def\adjbox@copy@key#1{%
+ \expandafter\let
+ \csname KV@ADJBOX@#1\expandafter\endcsname
+ \csname KV@Gin@#1\endcsname
+ \expandafter\let
+ \csname KV@ADJBOX@#1@default\expandafter\endcsname
+ \csname KV@Gin@#1@default\endcsname
+}
\define@key{adjbox}{viewport}{%
\def\adjustbox@content{%
\@trimclip{%
@@ -279,11 +493,87 @@
}
\define@adjboxkey{Trim}{\trimbox@{#1}}%
\define@adjboxkey{Clip}{\clipbox@{#1}}
+\define@adjboxkey{rndcorners}{\rndcornersbox@{#1}}
+\define@adjboxkey{rndframe}{%
+ \@ifnextchar\bgroup{%
+ \adjbox@rndframe{sep=\z@}%
+ }{%
+ \adjbox@rndframe{sep=\z@}{}%
+ }#1\@nnil
+}
+\define@adjboxkey{rndfbox}{%
+ \@ifnextchar\bgroup{%
+ \adjbox@rndframe{}%
+ }{%
+ \adjbox@rndframe{}{}%
+ }#1\@nnil
+}
+
+\def\adjbox@rndframe#1#2#3\@nnil{%
+ \rndfbox[{#1,#2}]{#3}%
+}
\define@adjboxkey{Clip*}{\clipbox@s{#1}}
\define@adjboxkey{margin}{\marginbox@{#1}}
\define@adjboxkey{margin*}{\marginbox@s{#1}}
\adjbox@let@key\adjbox@fam{padding}{margin}
\adjbox@let@key\adjbox@fam{padding*}{margin*}
+\adjbox@copy@key{bbllx}
+\adjbox@copy@key{bblly}
+\adjbox@copy@key{bburx}
+\adjbox@copy@key{bbury}
+\adjbox@copy@key{decodearray}
+\adjbox@copy@key{intent}
+\adjbox@copy@key{interpolate}
+\adjbox@copy@key{maskarray}
+\adjbox@copy@key{natheight}
+\adjbox@copy@key{natwidth}
+\adjbox@copy@key{ocobjnum}
+\adjbox@copy@key{ocobjref}
+\adjbox@copy@key{page}
+\adjbox@copy@key{pagebox}
+\adjbox@copy@key{print}
+\adjbox@copy@key{quiet}
+\adjbox@copy@key{resetcolor}
+\adjbox@copy@key{resolution}
+\adjbox@copy@key{xmpfile}
+\newcommand\rndcornersbox{%
+ \collectboxcheckenv{rndcornersbox}%
+ \rndcornersbox@
+}
+\def\rndcornersbox@#1{%
+ \collectbox{\@trimclip\@clipcornersofbox{#1}}%
+}
+\newcommand\rndframebox{%
+ \collectboxcheckenv{rndframebox}%
+ \rndframebox@
+}
+\newcommand*\rndframebox@[2][]{%
+ \collectbox{\@trimclip{\rndframearoundbox@{sep=\z@,#1}}{#2}}%
+}
+\newcommand\rndfbox{%
+ \collectboxcheckenv{rndfbox}%
+ \rndfbox@
+}
+\newcommand*\rndfbox@[2][]{%
+ \collectbox{\@trimclip{\rndframearoundbox@{#1}}{#2}}%
+}
+\def\rndframearoundbox@#1{%
+ \setkeys{adjbox@rndframe}{#1}%
+ \@rndframearoundbox
+}
+\define@key{adjbox@rndframe}{width}{%
+ \adjsetlength\fboxrule{#1}%
+}
+\define@key{adjbox@rndframe}{sep}{%
+ \adjsetlength\fboxsep{#1}%
+}
+\define@key{adjbox@rndframe}{color}{%
+ \def\adjbox@rndframe@color{\color{#1}}%
+}
+\define@key{adjbox@rndframe}{color*}{%
+ \def\adjbox@rndframe@color{#1}%
+}
+\let\adjbox@rndframe@color\relax
\define@key\adjbox@fam{scale}{%
\@ifnextchar\bgroup{%
\adjbox@scale@xy
@@ -322,15 +612,18 @@
\define@adjboxkey@defvalue{left}{\linewidth}{\adjbox@halign{#1}\relax\hss}
\define@adjboxkey@defvalue{right}{\linewidth}{\adjbox@halign{#1}\hss\relax}
\newcommand\centerbox[1][\linewidth]{%
- \adjustbox@noindent
+ \collectboxcheckenv{centerbox}%
+ \noindent
\adjbox@halign{#1}\hss\hss
}
\newcommand\leftalignbox[1][\linewidth]{%
- \adjustbox@noindent
+ \collectboxcheckenv{leftalignbox}%
+ \noindent
\adjbox@halign{#1}\relax\hss
}
\newcommand\rightalignbox[1][\linewidth]{%
- \adjustbox@noindent
+ \collectboxcheckenv{rightalignbox}%
+ \noindent
\adjbox@halign{#1}\hss\relax
}
\define@adjboxkey@defvalue{outer}{\linewidth}{%
@@ -341,7 +634,7 @@
}
\newcommand\outersidebox[1][\linewidth]{%
\collectboxcheckenv{outersidebox}%
- \adjustbox@noindent
+ \noindent
\adjbox@halign{#1}{%
\checkoddpage
\ifoddpageoroneside
@@ -359,7 +652,7 @@
}
\newcommand\innersidebox[1][\linewidth]{%
\collectboxcheckenv{innersidebox}%
- \adjustbox@noindent
+ \noindent
\adjbox@halign{#1}{%
\checkoddpage
\ifoddpageoroneside
@@ -532,28 +825,34 @@
\newcommand*\@minmaxsizebox[4]{%
\edef\@tempa{#3}%
\edef\@tempb{#4}%
+ \ifx\@tempa\Gin@exclamation\else
+ \adjsetlength\@tempdima{#3}%
+ \fi
+ \ifx\@tempb\Gin@exclamation\else
+ \adjsetlength\@tempdimb{#4}%
+ \fi
\ifcase0%
\ifx\@tempa\Gin@exclamation
\ifx\@tempb\Gin@exclamation
\else
- \ifdim\@tempb#1#2%
+ \ifdim\@tempdimb#1#2%
1%
\fi
\fi
\else
\ifx\@tempb\Gin@exclamation
- \ifdim\@tempa#1\width
+ \ifdim\@tempdima#1\width
2%
\fi
\else
- \ifdim\@tempa#1\width
- \ifdim\@tempb#1#2%
+ \ifdim\@tempdima#1\width
+ \ifdim\@tempdimb#1#2%
3%
\else
2%
\fi
\else
- \ifdim\@tempb#1#2%
+ \ifdim\@tempdimb#1#2%
1%
\fi
\fi
@@ -562,18 +861,14 @@
\relax% 0
\BOXCONTENT
\or
- \adjsetlength\@tempdima\@tempb
- \Gscale@div\@tempa\@tempdima#2%
+ \Gscale@div\@tempa\@tempdimb#2%
\Gscale@box\@tempa[\@tempa]\BOXCONTENT
\or
- \adjsetlength\@tempdima\@tempa
\Gscale@div\@tempa\@tempdima\width
\Gscale@box\@tempa[\@tempa]\BOXCONTENT
\or
- \adjsetlength\@tempdima\@tempa
\Gscale@div\@tempa\@tempdima\width
- \adjsetlength\@tempdima\@tempb
- \Gscale@div\@tempb\@tempdima#2%
+ \Gscale@div\@tempb\@tempdimb#2%
\ifdim\@tempa\p@#1\@tempb\p@
\let\@tempb\@tempa
\else
@@ -727,6 +1022,43 @@
\def\@tempa{\begin{#1}#2}%
\toks@\expandafter\expandafter\expandafter{\expandafter\@tempa\the\toks@\end{#1}}%
}%
+\define@key{ADJBOX}{color}{%
+ \adjbox@checkcolor
+ \@ifnextchar\bgroup{%
+ \adjbox@color
+ }{%
+ \adjbox@color{}{#1}%
+ }#1\@nnil
+}
+\def\adjbox@color#1#2#3\@nnil{%
+ \ifx\@nnil#1\@nnil
+ \color{#2}%
+ \else
+ \color[{#1}]{#2}%
+ \fi
+}
+\define@key{ADJBOX}{color*}{%
+ #1%
+}
+\define@key{ADJBOX}{fgcolor}{%
+ \adjbox@checkcolor
+ \@ifnextchar\bgroup{%
+ \adjbox@fgcolor
+ }{%
+ \adjbox@fgcolor{}{#1}%
+ }#1\@nnil
+}
+\def\adjbox@fgcolor#1#2#3\@nnil{%
+ \ifx\@nnil#1\@nnil
+ \adjbox@innercode{\color{#2}}{}%
+ \else
+ \adjbox@innercode{\color[{#1}]{#2}}{}%
+ \fi
+}
+\define@key{ADJBOX}{fgcolor*}{%
+ \adjbox@checkcolor
+ \adjbox@innercode{#1}{}%
+}
\define@key\adjbox@fam{bgcolor}{%
\adjbox@checkcolor
\@ifnextchar\bgroup{%
@@ -737,17 +1069,18 @@
}
\def\adjbox@bgcolor#1#2#3\@nnil{%
\ifx\@nnil#1\@nnil
- \adjbox@Gin@add{\@Collectbox{\adjbox@@bgcolor{\color{#2}}}}%
+ \adjbox@Gin@add{\@Collectbox{\@bgcolorbox{\color{#2}}}}%
\else
- \adjbox@Gin@add{\@Collectbox{\adjbox@@bgcolor{\color[#1]{#2}}}}%
+ \adjbox@Gin@add{\@Collectbox{\@bgcolorbox{\color[#1]{#2}}}}%
\fi
}
\define@key\adjbox@fam{bgcolor*}{%
\adjbox@checkcolor
- \adjbox@Gin@add{\@Collectbox{\adjbox@@bgcolor{#1}}}%
+ \adjbox@Gin@add{\@Collectbox{\@bgcolorbox{#1}}}%
}
-\def\adjbox@@bgcolor#1{%
- \mbox{%
+\def\@bgcolorbox#1{%
+ \leavevmode
+ \hbox{%
\hbox{%
#1%
\vrule\@width\width\@height\height\@depth\depth%
@@ -756,32 +1089,175 @@
\BOXCONTENT
}%
}%
-\newcommand*\bgimagebox[2][]{%
+\expandafter\newcommand\expandafter\bgcolorbox\expandafter{%
+ \expandafter
+ \@ifstar
+ \csname bgcolorbox*\endcsname
+ \bgcolorbox@
+}
+\newcommand\bgcolorbox@[2][\@nnil]{%
+ \collectboxcheckenv{bgcolorbox}%
+ \ifx\@nnil#1\relax
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ {\@collectbox{\@bgcolorbox{\color{#2}}}}%
+ {\@collectbox{\@bgcolorbox{\color[#1]{#2}}}}%
+}
+\@namedef{bgcolorbox*}#1{%
+ \collectboxcheckenv{bgcolorbox*}%
+ \@collectbox{\@bgcolorbox{#1}}%
+}
+\expandafter\newcommand\expandafter\fgimagebox\expandafter{%
+ \expandafter
+ \@ifstar
+ \csname fgimagebox*\endcsname
+ \fgimagebox@
+}
+\newcommand\fgimagebox@[2][]{%
+ \collectboxcheckenv{fgimagebox}%
+ \@collectbox{\@foregroundbox\adjustimage{#1,width=\pwidth,totalheight=\ptotalheight,raise=-\pdepth}{#2}}%
+}
+\expandafter\newcommand\csname fgimagebox*\endcsname[2][]{%
+ \collectboxcheckenv{fgimagebox*}%
+ \@collectbox{\@foregroundbox\adjustimage{#1}{#2}}%
+}
+\define@key{adjbox}{fgimage}{%
+ \@ifnextchar\bgroup{%
+ \adjbox@fgimage
+ }{%
+ \adjbox@fgimage{}{#1}%
+ }#1{}\@nnil
+ {,width=\pwidth,totalheight=\ptotalheight,raise=-\pdepth}%
+}
+\define@key{adjbox}{fgimage*}{%
+ \@ifnextchar\bgroup{%
+ \adjbox@fgimage
+ }{%
+ \adjbox@fgimage{}{#1}%
+ }#1{}\@nnil{}%
+}
+\def\adjbox@fgimage#1#2#3\@nnil#4{%
+ \adjbox@Gin@Add{\@Collectbox{\@foregroundbox\adjustimage{#1#4}{#2}}}%
+}
+\expandafter\newcommand\expandafter\bgimagebox\expandafter{%
+ \expandafter
+ \@ifstar
+ \csname bgimagebox*\endcsname
+ \bgimagebox@
+}
+\newcommand\bgimagebox@[2][]{%
\collectboxcheckenv{bgimagebox}%
- \@collectbox{\@bgimagebox{#1}{#2}}%
-}
-\def\@bgimagebox#1#2{%
- \mbox{%
- \lower\depth\hbox{%
- \edef\@tempa{\noexpand\adjustimage
- {#1,width=\the\width,totalheight=\the\totalheight}%
- {#2}%
- }%
- \@tempa
- }%
- \hskip-\width%
- \BOXCONTENT
- }%
+ \@collectbox{\@backgroundbox\adjustimage{#1,width=\pwidth,totalheight=\ptotalheight,raise=-\pdepth}{#2}}%
+}
+\expandafter\newcommand\csname bgimagebox*\endcsname[2][]{%
+ \collectboxcheckenv{bgimagebox*}%
+ \@collectbox{\@backgroundbox\adjustimage{#1}{#2}}%
}
\define@key{adjbox}{bgimage}{%
\@ifnextchar\bgroup{%
\adjbox@bgimage
}{%
\adjbox@bgimage{}{#1}%
- }#1\@nnil
+ }#1{}\@nnil
+ {,width=\pwidth,totalheight=\ptotalheight,raise=-\pdepth}%
+}
+\define@key{adjbox}{bgimage*}{%
+ \@ifnextchar\bgroup{%
+ \adjbox@bgimage
+ }{%
+ \adjbox@bgimage{}{#1}%
+ }#1{}\@nnil{}%
+}
+\def\adjbox@bgimage#1#2#3\@nnil#4{%
+ \adjbox@Gin@Add{\@Collectbox{\@backgroundbox\adjustimage{#1#4}{#2}}}%
+}
+\define@key{adjbox}{foreground}{%
+ \@ifnextchar\bgroup{%
+ \adjbox@foreground
+ }{%
+ \adjbox@foreground{}{#1}%
+ }#1{}{}\@nnil
+ {,width=\pwidth,totalheight=\ptotalheight,raise=\depth-\pdepth}%
+}
+\define@key{adjbox}{foreground*}{%
+ \@ifnextchar\bgroup{%
+ \adjbox@foreground
+ }{%
+ \adjbox@foreground{}{#1}%
+ }#1{}{}\@nnil{}%
}
-\def\adjbox@bgimage#1#2#3\@nnil{%
- \adjbox@Gin@add{\@Collectbox{\@bgimagebox{#1}{#2}}}%
+\def\adjbox@foreground#1#2#3\@nnil#4{%
+ \adjbox@Gin@Add{\@Collectbox{\@foregroundbox\adjustbox{#1#4}{#2}}}%
+}
+\def\@foregroundbox#1#2#3{%
+ \leavevmode
+ \hbox to \width{%
+ \BOXCONTENT
+ \hskip-\width
+ \hss
+ \adjbox@parentdims
+ #1{#2}{#3}%
+ \hss
+ }%
+}
+\expandafter\newcommand\expandafter\foregroundbox\expandafter{%
+ \expandafter
+ \@ifstar
+ \csname foregroundbox*\endcsname
+ \foregroundbox@
+}
+\newcommand\foregroundbox@[2][]{%
+ \collectboxcheckenv{foregroundbox}%
+ \@collectbox{\@foregroundbox\adjustbox{#1,width=\pwidth,totalheight=\ptotalheight,raise=-\pdepth}{#2}}%
+}
+\expandafter\newcommand\csname foregroundbox*\endcsname[2][]{%
+ \collectboxcheckenv{foregroundbox*}%
+ \@collectbox{\@foregroundbox\adjustbox{#1}{#2}}%
+}
+\define@key{adjbox}{background}{%
+ \@ifnextchar\bgroup{%
+ \adjbox@background
+ }{%
+ \adjbox@background{}{#1}%
+ }#1{}{}\@nnil
+ {,width=\pwidth,totalheight=\ptotalheight,raise=\depth-\pdepth}%
+}
+\define@key{adjbox}{background*}{%
+ \@ifnextchar\bgroup{%
+ \adjbox@background
+ }{%
+ \adjbox@background{}{#1}%
+ }#1{}{}\@nnil{}%
+}
+\def\adjbox@background#1#2#3\@nnil#4{%
+ \adjbox@Gin@Add{\@Collectbox{\@backgroundbox\adjustbox{#1#4}{#2}}}%
+}
+\def\@backgroundbox#1#2#3{%
+ \leavevmode
+ \hbox to \width{%
+ \hss
+ \adjbox@parentdims
+ #1{#2}{#3}%
+ \hss
+ \hskip-\width%
+ \BOXCONTENT
+ }%
+}
+\expandafter\newcommand\expandafter\backgroundbox\expandafter{%
+ \expandafter
+ \@ifstar
+ \csname backgroundbox*\endcsname
+ \backgroundbox@
+}
+\newcommand\backgroundbox@[2][]{%
+ \collectboxcheckenv{backgroundbox}%
+ \@collectbox{\@backgroundbox\adjustbox{#1,width=\pwidth,totalheight=\ptotalheight,raise=-\pdepth}{#2}}%
+}
+\expandafter\newcommand\csname backgroundbox*\endcsname[2][]{%
+ \collectboxcheckenv{backgroundbox*}%
+ \@collectbox{\@backgroundbox\adjustbox{#1}{#2}}%
}
\define@key\adjbox@fam{lap}{%
\@ifnextchar\bgroup{%
@@ -844,7 +1320,9 @@
}#2\@nnil
}
\def\adjbox@@page#1#2\@nnil{%
- \def\adjbox@collectbox##1{\collectbox@{\adjbox@set\begin{#1}#2\adjbox@reset}{##1}{\end{#1}}}%
+ \adjbox@innercode
+ {\adjbox@set\begin{#1}#2\adjbox@reset\ignorespaces}%
+ {\end{#1}}%
}
\def\adjbox@set{%
\let\adjbox@origsetlength\setlength
@@ -864,7 +1342,7 @@
}
\def\@@stackbox#1#2[#3]{%
\collectbox@
- {\begin{varwidth}[#2]{\linewidth}\csname adjbox@halign@#1\endcsname#3}
+ {\begin{varwidth}[#2]{\linewidth}\csname adjbox@halign@#1\endcsname#3\ignorespaces}
\BOXCONTENT
{\end{varwidth}}%
}
@@ -886,11 +1364,12 @@
\fi\fi
}
\def\adjbox@@stack#1#2#3{%
- \def\adjbox@collectbox##1{%
- \collectbox@{%
- \begin{varwidth}[#2]{\linewidth}%
- \csname adjbox@halign@#1\endcsname#3%
- }{##1}{\end{varwidth}}%
+ \adjbox@innercode{%
+ \begin{varwidth}[#2]{\linewidth}%
+ \csname adjbox@halign@#1\endcsname#3%
+ \ignorespaces
+ }{%
+ \end{varwidth}%
}%
}
\IfFileExists{varwidth.sty}
@@ -914,8 +1393,9 @@
\ifcollectboxenv
\adjbox@innerenv{#1}{#2}\@nnil
\else
- \def\adjbox@collectbox##1{\collectbox@tab{#1}{#2}{}{##1}{}}%
+ \def\adjbox@collectbox##1{\collectbox@tab{#1}{#2}{\adjbox@begininnercode}{##1}{\adjbox@endinnercode}}%
\fi
+ \chardef\adjbox@innerlevel\tw@
}
\define@key{ADJBOX}{tabular*}{%
\adjbox@tabular{tabular*}#1\@nnil
@@ -932,8 +1412,9 @@
\ifcollectboxenv
\adjbox@innercode{\(\begin{array}#1}{\end{array}\)}%
\else
- \def\adjbox@collectbox##1{\collectbox@tab{array}{#1}{\(}{##1}{\)}}%
+ \def\adjbox@collectbox##1{\collectbox@tab{array}{#1}{\adjbox@begininnercode\(}{##1}{\)\adjbox@endinnercode}}%
\fi
+ \chardef\adjbox@innerlevel\tw@
}
\define@key{ADJBOX}{innerenv}{%
\@ifnextchar\bgroup{%
@@ -943,8 +1424,11 @@
\remove@to@nnil
}#1\@nnil
}
+\adjbox@let@key{ADJBOX}{inner env}{innerenv}
\def\adjbox@innerenv#1#2\@nnil{%
- \def\adjbox@collectbox##1{\collectbox@{\begin{#1}#2}{##1}{\end{#1}}}%
+ \adjbox@innercode
+ {\begin{#1}#2}%
+ {\end{#1}}%
}%
\def\adjbox@@innerenv#1{%
\adjbox@@@innerenv{#1}{}%
@@ -957,10 +1441,28 @@
}%
\define@key{ADJBOX}{innercode}{%
\adjbox@innercode#1{}{}%
-}
-\def\adjbox@innercode#1#2{%
- \def\adjbox@collectbox##1{\collectbox@{#1}{##1}{#2}}%
}%
+\adjbox@let@key{ADJBOX}{inner code}{innercode}
+\def\adjbox@innercode{%
+ \ifcase\adjbox@innerlevel
+ \relax% 0: first inner code
+ \def\adjbox@collectbox##1{\collectbox@{\adjbox@begininnercode\adjustbox@ignorespaces}{##1}{\adjustbox@unskip\adjbox@endinnercode}}%
+ \chardef\adjbox@innerlevel\@ne
+ \expandafter\adjbox@@innercode
+ \or% 1 append inner code, no inner env
+ \expandafter\adjbox@@innercode
+ \else% 2 inner tabular exists, create warning and ignore content.
+ \PackageWarning{adjustbox}{Further inner code or environment ignored\MessageBreak after "tabular"-like key}%
+ \expandafter\@gobbletwo
+ \fi
+}%
+\long\def\adjbox@@innercode#1#2{%
+ \@temptokena\expandafter{\adjbox@begininnercode#1}%
+ \edef\adjbox@begininnercode{\the\@temptokena}%
+ \@temptokena{#2}%
+ \@temptokena\expandafter\expandafter\expandafter{\expandafter\the\expandafter\@temptokena\adjbox@endinnercode}%
+ \edef\adjbox@endinnercode{\the\@temptokena}%
+}
\define@key\adjbox@fam{label}{%
\def\adjbox@label{\label{#1}}%
}
@@ -1013,6 +1515,8 @@
}
\def\adjbox@caption@table@pos{1}
\def\adjbox@addfloat#1#2#3#4{%
+ \Gin@esetsize
+ \@tempswatrue
\ifnum\adjbox@caption@pos>10
\chardef\adjbox@caption@pos=0\csname adjbox@caption@#1@pos\endcsname\relax
\fi