marketing

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

adjcalc.sty (5413B)


      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 adjcalc.dtx, adjustbox.ins
     16 %% and the derived file adjcalc.sty.
     17 %% It is part of the larger adjustbox bundle.
     18 %%
     19 \ProvidesPackage{adjcalc}[%
     20     2012/05/16
     21     v1.1
     22     Provides advanced setlength with multiple back-ends (calc, etex, pgfmath)]
     23 \RequirePackage{xkeyval}
     24 \def\adjcalc@atend{%
     25 \begingroup
     26 \expandafter\ifx\csname glueexpr\endcsname\relax
     27     \endgroup
     28     \RequirePackage{calc}%
     29     \adjcalc@calc
     30     \def\adjcalc@etex{\PackageError{adjcalc}{e-TeX not available for current compiler!}}%
     31 \else
     32     \endgroup
     33     \adjcalc@etex
     34 \fi
     35 }
     36 \def\adjcalc@pgfmath{\AtEndOfPackage{\RequirePackage{pgf}}\def\adjcalc@atend{\adjcalc@pgfmath}}
     37 \def\adjcalc@etex{\def\adjcalc@atend{\adjcalc@etex}}
     38 \def\adjcalc@calc{\AtEndOfPackage{\RequirePackage{calc}}\def\adjcalc@atend{\adjcalc@calc}}
     39 \def\adjcalc@overwrite{\AtEndOfPackage{\adjcalc@overwrite}}
     40 \def\adjcalc@defaultunit{bp}%
     41 \DeclareOptionX<adjcalc>{pgfmath}{\adjcalc@pgfmath}
     42 \DeclareOptionX<adjcalc>{etex}{\adjcalc@etex}
     43 \DeclareOptionX<adjcalc>{calc}{\adjcalc@calc}
     44 \DeclareOptionX<adjcalc>{none}{%
     45     \let\adjcalc@atend\relax
     46     \let\adjcalc@overwrite\relax
     47     \def\adjsetlength{\setlength}%
     48     \def\adjaddtolength{\addtolength}%
     49     \def\adjsetcounter{\setcounter}%
     50     \def\adjaddtocounter{\addtocounter}%
     51 }
     52 \DeclareOptionX<adjcalc>{overwrite}{\adjcalc@overwrite}
     53 \DeclareOptionX<adjcalc>{defaultunit}[bp]{%
     54     \begingroup
     55     \def\@tempa{#1}%
     56     \def\@tempb{none}%
     57     \ifx\@tempa\@tempb% 'none':
     58         \endgroup
     59         \def\adjsetlengthdefault{\adjsetlength}%
     60     \else
     61         \ifx\@tempb\adjcalc@defaultunit
     62             \endgroup
     63             % was 'none' before
     64             \let\adjsetlengthdefault\adjsetlengthdefault@
     65         \else
     66             \endgroup
     67         \fi
     68     \fi
     69     \def\adjcalc@defaultunit{#1}%
     70 }
     71 \ProcessOptionsX*<adjcalc>
     72 \disable@keys{adjcalc}{none}
     73 \def\adjcalcset{%
     74     \setkeys{adjcalc}%
     75 }
     76 \def\adjcalc@etex{%
     77     \protected\def\adjsetlength##1##2{%
     78         ##1=\glueexpr(##2)\relax
     79     }%
     80     \protected\def\adjaddtolength##1##2{%
     81         \advance##1 by \glueexpr(##2)\relax
     82     }%
     83     \protected\def\adjsetcounter##1##2{%
     84         \@ifundefined{c@##1}%
     85             {\@nocounterr{##1}}%
     86             {\global\csname c@##1\endcsname\numexpr(##2)\relax}%
     87     }%
     88     \protected\def\adjaddtocounter##1##2{%
     89         \@ifundefined{c@##1}%
     90             {\@nocounterr{##1}}%
     91             {\global\advance\csname c@##1\endcsname\numexpr(##2)\relax}%
     92     }%
     93     \def\adjsetlengthdefault@##1##2{%
     94         \@defaultunits##1=\glueexpr##2 \adjcalc@defaultunit\relax\@nnil
     95     }%
     96     \let\adjsetlengthdefault\adjsetlengthdefault@
     97 }
     98 \newif\if@adjcalc@needsdefault
     99 \def\adjcalc@calc{%
    100     \DeclareRobustCommand\adjsetlength{\calc@assign@skip}%
    101     \DeclareRobustCommand\adjaddtolength[1]{\calc@assign@skip{\advance ##1}}%
    102     \DeclareRobustCommand\adjsetcounter[2]{\@ifundefined{c@##1}{\@nocounterr{##1}}{\calc@assign@count{\global\csname c@##1\endcsname}{##2}}}%
    103     \DeclareRobustCommand\adjaddtocounter[2]{\@ifundefined{c@##1}{\@nocounterr{##1}}{\calc@assign@count{\global\advance\csname c@##1\endcsname}{##2}}}%
    104     \def\adjsetlengthdefault@##1##2{%
    105         \begingroup
    106         \def\calc@post@scan####1!{%
    107             \def\@tempa{####1}%
    108             \ifx\@tempa\@empty
    109               \endgroup% to end calc processing
    110               % is number only
    111               \global\@adjcalc@needsdefaulttrue
    112             \else
    113               \endgroup% to end calc processing
    114               % full expression
    115               \global\@adjcalc@needsdefaultfalse
    116             \fi
    117         }%
    118         \calc@assign@skip{##1}{##2 \adjcalc@defaultunit}%
    119         \endgroup
    120         \if@adjcalc@needsdefault
    121             ##1=##2 \adjcalc@defaultunit\relax
    122         \else
    123             \calc@assign@skip{##1}{##2}%
    124         \fi
    125     }%
    126     \def\adjcalc@checkdefault##1\@nnil##2##3{%
    127         \ifx\relax##1\relax\else
    128             \calc@assign@skip{##2}{##3}%
    129         \fi
    130     }%
    131     \let\adjsetlengthdefault\adjsetlengthdefault@
    132 }
    133 \def\adjcalc@pgfmath{%
    134     \DeclareRobustCommand\adjsetlength{\pgfmathsetlength}%
    135     \DeclareRobustCommand\adjaddtolength{\pgfmathaddtolength}%
    136     \DeclareRobustCommand\adjsetcounter{\pgfmathsetcounter}%
    137     \DeclareRobustCommand\adjaddtocounter{\pgfmathaddtocounter}%
    138     \def\adjsetlengthdefault@##1##2{%
    139         \edef\pgfmathresultunitscale{1\adjcalc@defaultunit}%
    140         \let\pgfmathpostparse\pgfmathscaleresult
    141         \pgfmathparse{##2}%
    142         ##1=\pgfmathresult pt\relax
    143     }%
    144     \let\adjsetlengthdefault\adjsetlengthdefault@
    145 }
    146 \def\adjcalc@overwrite{%
    147     \let\setlength\adjsetlength
    148     \let\addtolength\adjaddtolength
    149     \let\setcounter\adjsetcounter
    150     \let\addtocounter\adjaddtocounter
    151 }
    152 \adjcalc@atend
    153 \endinput
    154 %%
    155 %% End of file `adjcalc.sty'.