%%
%% This is file `interfaces-tikz.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% interfaces.dtx  (with options: `tikz')
%% 
%% This is a generated file.
%% 
%% interfaces : 2011/01/26 v3.0 - interfaces : interfaces with keys for other packages (FC)
%% 
%% 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
%% 
%% This work consists of the main source file interfaces.dtx
%% and the derived files
%%     interfaces.sty, interfaces.pdf, interfaces.ins,
%%     interfaces-base.sty,
%%     interfaces-LaTeX.sty,
%%     interfaces-tikz.sty,
%%     interfaces-titlesec.sty,
%%     interfaces-hyperref.sty,
%%     interfaces-bookmark.sty,
%%     interfaces-hypbmsec.sty,
%%     interfaces-fancyhdr.sty,
%%     interfaces-marks.sty,
%%     interfaces-tocloft.sty,
%%     interfaces-makecell.sty,
%%     interfaces-enumitem.sty,
%%     interfaces-truncate.sty,
%%     interfaces-appendix.sty,
%%     interfaces-embedfile.sty,
%%     interfaces-environ.sty,
%%     interfaces-umrand.sty,
%%     interfaces-scrlfile.sty,
%%     interfaces-pgfkeys.sty,
%%     interfaces-etoolbox.sty
%% 
%% interfaces: interfaces with keys for other packages (FC)
%% Copyright (C) 2010 by Florent Chervet <florent.chervet@free.fr>
%% 
\ProvidesPackage{interfaces-tikz}
   [2011/02/12 v3.0 load tikz libraries easily (FC)]
\RequirePackage{interfaces-base}
\itf@pgfkeys
%% Some catcode checking
\AfterPackage*{tikz}{%
   \AtEndPreamble{%
      \tikzset{every picture/.add style={%
            /utils/exec={\@makeother\!\@makeother\:}}{}}%
   }%
}%
\newcommand*\alltikzpackages{%
   tikz,pgf,pgfcore,pgfcalendar,pgffor,pgfkeys,pgfpages,pgfrcs,xxcolor,%
   pgfplots,pgfsys,
   pgfpict2e,fp%%,%           + fp required for fixedpointarithmetic
%%   tikzexternal,%% needs special setup
%%   pgfmath,% pgfmath should not be loaded twice (\pgfmathdeclarefunction)
}% \alltikzpackages
\newcommand*\allpgfmodules{datavisualization,%
decorations,%
matrix,%
oo,%
parser,%
plot,%
shapes,%
snakes%
%%sorting% bug in pgfmodulesorting.code.tex
}% \allpgfmodules
\newcommand*\alltikzlibraries{3d,%
arrows,%
automata,%
backgrounds,%
calc,%
calendar,%
chains,%
circuits,%
circuits.ee,%
circuits.ee.IEC,%
circuits.logic,%
circuits.logic.CDH,%
circuits.logic.IEC,%
circuits.logic.US,%
datavisualization,%
datavisualization.3d,%
datavisualization.barcharts,%
datavisualization.formats.functions,%
datavisualization.polar,%
datavisualization.sparklines,%
decorations,%
decorations.footprints,%
decorations.fractals,%
decorations.markings,%
decorations.pathmorphing,%
decorations.pathreplacing,%
decorations.shapes,%
decorations.text,%
er,%
%%external,% needs special setup
fadings,%
fit,%
fixedpointarithmetic,%
folding,%
fpu,%
graphs,%
graphs.basic,%
intersections,%
lindenmayersystems,%
matrix,%
mindmap,%
patterns,%
petri,%
plothandlers,%
plotmarks,%
positioning,%
scopes,%
shadings,%
shadows,%
shapes,%
shapes.arrows,%
shapes.callouts,%
shapes.gates.logic.IEC,%
shapes.gates.logic.US,%
shapes.geometric,%
shapes.misc,%
shapes.multipart,%
shapes.symbols,%
snakes,%
spy,%
svg.path,%
through,%
topaths,%
trees,%
turtle%
}% \alltikzlibraries
\pgfqkeys{/itf/tikz}{%
   basic/.code={%
      \usetikzlibrary{calc,%           for coordinate calculations
                      arrows,%         for arrows
                      backgrounds,%    for framed
                      scopes,%         for scopes and shortcut : { [scope] ... }
                      shapes,%         for ellipse shapes of nodes
      }%
   },%
   basic/.value forbidden,%   \alltikzpackages
   base/.alias=basic,%
   all/.code={%
      \expandafter\RequirePackage\expandafter{\alltikzpackages}%
      \expandafter\usepgfmodule\expandafter{\allpgfmodules}% see pgfcorescopes.code.tex
      \expandafter\usetikzlibrary\expandafter{\alltikzlibraries}% from:  tikz.code.tex
   },%
   .unknown/.code=\itf@usetikzcode\pgfkeyscurrentname
}% \pgfkeys for \usetikz
\newrobustcmd*\usetikz[1]{%
   \RequirePackage{tikz}%
   \ifblank{#1}
      {\pgfqkeys{/itf/tikz}{all}}
      {\pgfqkeys{/itf/tikz}{#1}}%
   \itf@usetikzsetup
}% \usetikz
\def\itf@usetikzsetup{\itf@pgfkeys
   \pgfkeysifdefined{/tikz/shorten>}{}{%
      \pgfkeys{/tikz/shorten>/.alias=tikz/shorten >}}%
   \pgfkeysifdefined{/tikz/shorten<}{}{%
      \pgfkeys{/tikz/shorten</.alias=tikz/shorten <}}%
   \pgfkeysifdefined{/tikz/shorten <>}{}{%
      \pgfkeys{/tikz/shorten <>/.style={/tikz/shorten >={##1},/tikz/shorten<={##1}}}}%
   \pgfkeysifdefined{/tikz/shorten<>}{}{%
      \pgfkeys{/tikz/shorten<>/.alias=tikz/shorten <>}}%
}%
\newrobustcmd*\itf@usetikzcode[1]{\begingroup
   \edef\x{%
      \noexpand\in@{,#1,}{,\alltikzpackages,}%
      \noexpand\ifin@  \noexpand\usepackage{#1}%
      \noexpand\else
         \noexpand\in@{,#1,}{,\allpgfmodules,}%
         \noexpand\ifin@ \noexpand\usepgfmodule{#1}%
         \noexpand\else  \noexpand\usetikzlibrary{#1}% \usetikzlibrary by default
         \noexpand\fi
      \noexpand\fi
   }\expandafter\endgroup\x
}% \itf@usetikzcode
\newrobustcmd*\papergraduate[1][x=1cm,y=1cm]{%
   \ifpgfpicture  \expandafter \itf@papergraduate
   \else          \expandafter \itf@wallpapergraduate
   \fi{#1}%
}% \papergraduate
\pgfqkeys{/itf/tikz/papergraduate}{%
   xcolor/.store as color,%
      xcolor/.default=magenta,%
   ycolor/.store as color,%
      ycolor/.default=cyan,%
   color/.style={xcolor={#1},ycolor={#1}},%
   opacity/.initial=.25,opacity/.default=.25,opacity/.blank=.25,%
   x/.initial=1cm,x/.default=1cm,%
   y/.initial=1cm,y/.default=1cm,%
   unit/.style={x={#1},y={#1}},%
      units/.alias=unit,xy/.alias=unit,%
   xrule/.true=\pgfkeyslet{/itf/tikz/papergraduate/hasHrule}\@firstofone,%
   xrule/.false=\pgfkeyslet{/itf/tikz/papergraduate/hasHrule}\@gobble,%
   xrule/on/.alias=xrule/true,xrule/off/.alias=xrule/false,%
      Hrule/.alias=xrule,%
   xrule/font/.store as code,%
      xrule/font/.default=\tiny,%
      Hrule/font/.alias=xrule/font,%
   yrule/.true=\pgfkeyslet{/itf/tikz/papergraduate/hasVrule}\@firstofone,%
   yrule/.false=\pgfkeyslet{/itf/tikz/papergraduate/hasVrule}\@gobble,%
   yrule/on/.alias=yrule/true,yrule/off/.alias=yrule/false,%
      Vrule/.alias=yrule,%
   yrule/font/.store as code,%
      yrule/font/.default=\tiny,%
      Vrule/font/.alias=yrule/font,%
   font/.style={xrule/font={#1},yrule/font={#1}},%
      rule/font/.alias=font,%
   text opacity/.initial=.8,%
      text opacity/.default=.8,text opacity/.blank=.8,%
   norule/.style={xrule=false,yrule=false},%
      norules/.alias=norule,%
   @reset/.style={font,xrule,yrule,color,unit,opacity},%
}% keys for \papergraduate options
\def\itf@graduation@vert[#1]#2#3#4#5{%
   \node at (0,0) [{inner sep=0pt,outer sep=0pt,anchor=south west,
                    color=\pgfkeysvalueof{/itf/tikz/papergraduate/ycolor},#1}] {%
      \hbox to#2{\leaders
            \hbox to\dimexpr\pgf@yy/#4{\hss\vrule height#3 depth\z@ width#5}\hss}}}
\def\itf@graduation@horiz[#1]#2#3#4#5{
   \node at (0,0) [{inner sep=0pt,outer sep=0pt,anchor=north west,yscale=-1,
                    color=\pgfkeysvalueof{/itf/tikz/papergraduate/xcolor},#1}] {%
      \rlap{\vbox to#3{\leaders \vbox to\dimexpr\pgf@xx/#4{%
                  \kern-\dimexpr#5/2\hrule width#2 depth0pt height#5}\vss}}}}
\def\itf@wallpapergraduate #1{%
   \tikz[{remember picture,overlay}]{%
      \pgfqkeys{/itf/tikz/papergraduate}{@reset,#1}%
      \begin{scope}[{shift=(current page.south west),
                    x=\pgfkeysvalueof{/itf/tikz/papergraduate/x},%
                    y=\pgfkeysvalueof{/itf/tikz/papergraduate/y},%
                    text opacity=\pgfkeysvalueof{/itf/tikz/papergraduate/opacity}}]%
      \itf@paper@graduate \paperwidth \paperheight
      \end{scope}}%
}% \itf@wallpapergraduate
\def\itf@papergraduate #1#2;{%
   \begin{scope}[every node/.style={}]%
      \pgfqkeys{/itf/tikz/papergraduate}{@reset,#1}%
      \coordinate (itf@papergraduate) at #2;
      \@tempdima \pgf@x             \@tempdimb \pgf@y
      \pgfpointanchor {itf@papergraduate}{center}
      \advance\@tempdima -\pgf@x
            \ifdim\@tempdima<\z@ \@tempdima \m@ne\@tempdima \fi
      \advance\@tempdimb -\pgf@y
            \ifdim\@tempdimb<\z@ \@tempdimb \m@ne\@tempdimb \fi
      \edef\itf@tp{%
         \noexpand\begin{scope}[{shift={(\the\pgf@x,\the\pgf@y)},%
                                 x=\pgfkeysvalueof{/itf/tikz/papergraduate/x},%
                                 y=\pgfkeysvalueof{/itf/tikz/papergraduate/y},%
                                 text opacity=\pgfkeysvalueof{/itf/tikz/papergraduate/opacity}}]%
            \noexpand\itf@paper@graduate {\the \@tempdima}{\the \@tempdimb}%
         \noexpand\end{scope}%
      }\itf@tp
   \end{scope}%
}% \paper@graduate
\def\itf@paper@graduate #1#2{\hfuzz\maxdimen\vfuzz\hfuzz\hbadness\@M\vbadness\hbadness
   \itf@graduation@horiz [text opacity/.expanded={\tikz@textopacity/2}] {#1}{#2}{10}{.1pt};%
   \itf@graduation@horiz []{#1}{#2}{2}{.1pt};% opacity=.25
   \itf@graduation@horiz []{#1}{#2}{1}{.2pt};
   \pgfkeysvalueof{/itf/tikz/papergraduate/hasVrule}{%
      \itf@graduation@horiz [black,nearly opaque] {1mm}{#2}{10}{.1pt};% opacity=.75
      \itf@graduation@horiz [black,nearly opaque] {1.5mm}{#2}{2}{.1pt};
      \itf@graduation@horiz [black,opaque] {2mm}{#2}{1}{.1pt};
      \begin{scope}[inner sep=0pt,outer sep=0pt,%
                    text opacity=\pgfkeysvalueof{/itf/tikz/papergraduate/text opacity},%
                    font=\pgfkeysvalueof{/itf/tikz/papergraduate/yrule/font}]%
        \begingroup
        \let\itf@tp \@empty \dimen@\z@  \count@\z@
        \@whiledim \dimen@<#2\do{%
            \edef\itf@tp{\itf@tp (3mm,\the\dimen@) node {\the\count@}}%
            \advance\count@ \@ne \dimen@ \count@\pgf@xx
        }\expandafter\endgroup\expandafter \path \itf@tp;
      \end{scope}}%
   \itf@graduation@vert [text opacity/.expanded={\tikz@textopacity/2}] {#1}{#2}{10}{.1pt};
   \itf@graduation@vert [] {#1}{#2}{2}{.1pt};
   \itf@graduation@vert [] {#1}{#2}{1}{.2pt};
   \pgfkeysvalueof{/itf/tikz/papergraduate/hasHrule}{%
      \itf@graduation@vert [black,nearly opaque] {#1}{1mm}{10}{.1pt};
      \itf@graduation@vert [black,nearly opaque] {#1}{1.5mm}{2}{.1pt};
      \itf@graduation@vert [black,opaque] {#1}{2mm}{1}{.1pt};
      \begin{scope}[inner sep=0pt,outer sep=0pt,%
                    text opacity=\pgfkeysvalueof{/itf/tikz/papergraduate/text opacity},%
                    font=\pgfkeysvalueof{/itf/tikz/papergraduate/xrule/font}]%
        \begingroup
        \let\itf@tp \@empty \dimen@\z@  \count@\z@
        \@whiledim \dimen@<#1\do{%
            \edef\itf@tp{\itf@tp (\the\dimen@,3mm) node {\the\count@}}%
            \advance\count@ \@ne \dimen@ \count@\pgf@xx
        }\expandafter\endgroup\expandafter \path \itf@tp;
      \end{scope}}%
}% \itf@paper@graduate
\endinput
%%
%% End of file `interfaces-tikz.sty'.
