summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/adjustbox/adjcalc.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/adjustbox/adjcalc.sty')
-rw-r--r--Master/texmf-dist/tex/latex/adjustbox/adjcalc.sty106
1 files changed, 76 insertions, 30 deletions
diff --git a/Master/texmf-dist/tex/latex/adjustbox/adjcalc.sty b/Master/texmf-dist/tex/latex/adjustbox/adjcalc.sty
index 0fc7a627de3..98c05a8e6ed 100644
--- a/Master/texmf-dist/tex/latex/adjustbox/adjcalc.sty
+++ b/Master/texmf-dist/tex/latex/adjustbox/adjcalc.sty
@@ -1,15 +1,29 @@
-\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}
+%% Copyright (C) 2011-2012 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
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Martin Scharrer.
+%%
+%% This work consists of the files adjcalc.dtx, adjustbox.ins
+%% and the derived file adjcalc.sty.
+%% It is part of the larger adjustbox bundle.
+%%
+\ProvidesPackage{adjcalc}[%
+ 2012/05/16
+ v1.1
+ Provides advanced setlength with multiple back-ends (calc, etex, pgfmath)]
+\RequirePackage{xkeyval}
\def\adjcalc@atend{%
\begingroup
-\expandafter\ifx\csname eTeXversion\endcsname\relax
+\expandafter\ifx\csname glueexpr\endcsname\relax
\endgroup
\RequirePackage{calc}%
\adjcalc@calc
@@ -23,13 +37,42 @@
\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<adjbox>{pgfmath}{\adjcalc@pgfmath}
-\DeclareOptionX<adjbox>{etex}{\adjcalc@etex}
-\DeclareOptionX<adjbox>{calc}{\adjcalc@calc}
-\DeclareOptionX<adjbox>{none}{\let\adjcalc@atend\relax\def\adjsetlength{\setlength}\let\adjcalc@overwrite\relax}
-\DeclareOptionX<adjbox>{overwrite}{\adjcalc@overwrite}
-\ProcessOptionsX*<adjbox>
-\disable@keys{adjbox}{none}
+\def\adjcalc@defaultunit{bp}%
+\DeclareOptionX<adjcalc>{pgfmath}{\adjcalc@pgfmath}
+\DeclareOptionX<adjcalc>{etex}{\adjcalc@etex}
+\DeclareOptionX<adjcalc>{calc}{\adjcalc@calc}
+\DeclareOptionX<adjcalc>{none}{%
+ \let\adjcalc@atend\relax
+ \let\adjcalc@overwrite\relax
+ \def\adjsetlength{\setlength}%
+ \def\adjaddtolength{\addtolength}%
+ \def\adjsetcounter{\setcounter}%
+ \def\adjaddtocounter{\addtocounter}%
+}
+\DeclareOptionX<adjcalc>{overwrite}{\adjcalc@overwrite}
+\DeclareOptionX<adjcalc>{defaultunit}[bp]{%
+ \begingroup
+ \def\@tempa{#1}%
+ \def\@tempb{none}%
+ \ifx\@tempa\@tempb% 'none':
+ \endgroup
+ \def\adjsetlengthdefault{\adjsetlength}%
+ \else
+ \ifx\@tempb\adjcalc@defaultunit
+ \endgroup
+ % was 'none' before
+ \let\adjsetlengthdefault\adjsetlengthdefault@
+ \else
+ \endgroup
+ \fi
+ \fi
+ \def\adjcalc@defaultunit{#1}%
+}
+\ProcessOptionsX*<adjcalc>
+\disable@keys{adjcalc}{none}
+\def\adjcalcset{%
+ \setkeys{adjcalc}%
+}
\def\adjcalc@etex{%
\protected\def\adjsetlength##1##2{%
##1=\glueexpr(##2)\relax
@@ -47,56 +90,58 @@
{\@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\adjsetlengthdefault@##1##2{%
+ \@defaultunits##1=\glueexpr##2 \adjcalc@defaultunit\relax\@nnil
}%
+ \let\adjsetlengthdefault\adjsetlengthdefault@
}
+\newif\if@adjcalc@needsdefault
\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{%
+ \def\adjsetlengthdefault@##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
+ \global\@adjcalc@needsdefaulttrue
\else
\endgroup% to end calc processing
% full expression
- \global\@adjbox@needsdefaultfalse
+ \global\@adjcalc@needsdefaultfalse
\fi
}%
- \calc@assign@skip{##1}{##2 \adjbox@defaultunit}%
+ \calc@assign@skip{##1}{##2 \adjcalc@defaultunit}%
\endgroup
- \if@adjbox@needsdefault
- ##1=##2 \adjbox@defaultunit\relax
+ \if@adjcalc@needsdefault
+ ##1=##2 \adjcalc@defaultunit\relax
\else
\calc@assign@skip{##1}{##2}%
\fi
}%
- \def\adjbox@checkdefault##1\@nnil##2##3{%
+ \def\adjcalc@checkdefault##1\@nnil##2##3{%
\ifx\relax##1\relax\else
\calc@assign@skip{##2}{##3}%
\fi
}%
+ \let\adjsetlengthdefault\adjsetlengthdefault@
}
-\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}%
+ \def\adjsetlengthdefault@##1##2{%
+ \edef\pgfmathresultunitscale{1\adjcalc@defaultunit}%
\let\pgfmathpostparse\pgfmathscaleresult
\pgfmathparse{##2}%
##1=\pgfmathresult pt\relax
}%
+ \let\adjsetlengthdefault\adjsetlengthdefault@
}
\def\adjcalc@overwrite{%
\let\setlength\adjsetlength
@@ -104,6 +149,7 @@
\let\setcounter\adjsetcounter
\let\addtocounter\adjaddtocounter
}
+\adjcalc@atend
\endinput
%%
%% End of file `adjcalc.sty'.