\begingroup \def\@tempa{adjcalc} \expandafter \endgroup \ifx\@tempa\@currname \ProvidesPackage{adjcalc}[2011/08/07 v1.0 Provides advanced setlength with multiple back-ends (calc, etex, pgfmath)] \RequirePackage{xkeyval} \fi \AtEndOfPackage{\adjcalc@atend} \def\adjcalc@atend{% \begingroup \expandafter\ifx\csname eTeXversion\endcsname\relax \endgroup \RequirePackage{calc}% \adjcalc@calc \def\adjcalc@etex{\PackageError{adjcalc}{e-TeX not available for current compiler!}}% \else \endgroup \adjcalc@etex \fi } \def\adjcalc@pgfmath{\AtEndOfPackage{\RequirePackage{pgf}}\def\adjcalc@atend{\adjcalc@pgfmath}} \def\adjcalc@etex{\def\adjcalc@atend{\adjcalc@etex}} \def\adjcalc@calc{\AtEndOfPackage{\RequirePackage{calc}}\def\adjcalc@atend{\adjcalc@calc}} \def\adjcalc@overwrite{\AtEndOfPackage{\adjcalc@overwrite}} \DeclareOptionX{pgfmath}{\adjcalc@pgfmath} \DeclareOptionX{etex}{\adjcalc@etex} \DeclareOptionX{calc}{\adjcalc@calc} \DeclareOptionX{none}{\let\adjcalc@atend\relax\def\adjsetlength{\setlength}\let\adjcalc@overwrite\relax} \DeclareOptionX{overwrite}{\adjcalc@overwrite} \ProcessOptionsX* \disable@keys{adjbox}{none} \def\adjcalc@etex{% \protected\def\adjsetlength##1##2{% ##1=\glueexpr(##2)\relax }% \protected\def\adjaddtolength##1##2{% \advance##1 by \glueexpr(##2)\relax }% \protected\def\adjsetcounter##1##2{% \@ifundefined{c@##1}% {\@nocounterr{##1}}% {\global\csname c@##1\endcsname\numexpr(##2)\relax}% }% \protected\def\adjaddtocounter##1##2{% \@ifundefined{c@##1}% {\@nocounterr{##1}}% {\global\advance\csname c@##1\endcsname\numexpr(##2)\relax}% }% \def\adjbox@default##1##2{% \@defaultunits##1=\glueexpr##2 \adjbox@defaultunit\relax\@nnil }% } \def\adjcalc@calc{% \DeclareRobustCommand\adjsetlength{\calc@assign@skip}% \DeclareRobustCommand\adjaddtolength[1]{\calc@assign@skip{\advance ##1}}% \DeclareRobustCommand\adjsetcounter[2]{\@ifundefined{c@##1}{\@nocounterr{##1}}{\calc@assign@count{\global\csname c@##1\endcsname}{##2}}}% \DeclareRobustCommand\adjaddtocounter[2]{\@ifundefined{c@##1}{\@nocounterr{##1}}{\calc@assign@count{\global\advance\csname c@##1\endcsname}{##2}}}% \def\adjbox@default##1##2{% \begingroup \message{^^J\detokenize{##2}^^J}% \def\calc@post@scan####1!{% \def\@tempa{####1}% \ifx\@tempa\@empty \endgroup% to end calc processing % is number only \global\@adjbox@needsdefaulttrue \else \endgroup% to end calc processing % full expression \global\@adjbox@needsdefaultfalse \fi }% \calc@assign@skip{##1}{##2 \adjbox@defaultunit}% \endgroup \if@adjbox@needsdefault ##1=##2 \adjbox@defaultunit\relax \else \calc@assign@skip{##1}{##2}% \fi }% \def\adjbox@checkdefault##1\@nnil##2##3{% \ifx\relax##1\relax\else \calc@assign@skip{##2}{##3}% \fi }% } \newif\if@adjbox@needsdefault \def\adjcalc@pgfmath{% \DeclareRobustCommand\adjsetlength{\pgfmathsetlength}% \DeclareRobustCommand\adjaddtolength{\pgfmathaddtolength}% \DeclareRobustCommand\adjsetcounter{\pgfmathsetcounter}% \DeclareRobustCommand\adjaddtocounter{\pgfmathaddtocounter}% \def\adjbox@default##1##2{% \edef\pgfmathresultunitscale{1\adjbox@defaultunit}% \let\pgfmathpostparse\pgfmathscaleresult \pgfmathparse{##2}% ##1=\pgfmathresult pt\relax }% } \def\adjcalc@overwrite{% \let\setlength\adjsetlength \let\addtolength\adjaddtolength \let\setcounter\adjsetcounter \let\addtocounter\adjaddtocounter } \endinput %% %% End of file `adjcalc.sty'.