%%
%% This is file `expl3.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% expl3.dtx  (with options: `package')
%% 
%% EXPERIMENTAL CODE
%% 
%% Do not distribute this file without also distributing the
%% source files specified above.
%% 
%% Do not distribute a modified version of this file.
%% 
%% File: expl3.dtx Copyright (C) 1990-2011 The LaTeX3 Project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
%% license or (at your option) any later version.  The latest version
%% of this license is in the file
%%
%%    http://www.latex-project.org/lppl.txt
%%
%% This file is part of the "l3kernel bundle" (The Work in LPPL)
%% and all files in that bundle must be distributed together.
%%
%% The released version of this bundle is available from CTAN.
%%
%% -----------------------------------------------------------------------
%%
%% The development version of the bundle can be found at
%%
%%    http://www.latex-project.org/svnroot/experimental/trunk/
%%
%% for those people who are interested.
%%
%%%%%%%%%%%
%% NOTE: %%
%%%%%%%%%%%
%%
%%   Snapshots taken from the repository represent work in progress and may
%%   not work or may contain conflicting material!  We therefore ask
%%   people _not_ to put them into distributions, archives, etc. without
%%   prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3names}
\def\ExplFileName{expl3}
\def\ExplFileDescription{L3 Experimental code bundle wrapper}
\def\ExplFileDate{2011/12/29}
\def\ExplFileVersion{3109}
\RequirePackage{etex}
\reserveinserts{32}
\RequirePackage{calc}
\ProvidesExplPackage
  {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
\newcommand* \l@expl@check@declarations@bool { 0 }
\newcommand* \l@expl@log@functions@bool { 0 }
\newcommand* \l@expl@native@drivers@bool { 0 }
\DeclareOption { check-declarations }
  { \def \l@expl@check@declarations@bool { 1 } }
\DeclareOption { log-functions }
   { \def \l@expl@log@functions@bool { 1 } }
\DeclareOption { native-drivers }
   { \def \l@expl@native@drivers@bool { 1 } }
\ProcessOptions \relax
\ifodd \l@expl@native@drivers@bool \relax
\else
  \RequirePackage { color , graphics }
\fi
\RequirePackage{ l3basics, l3expan, l3tl }
\ifodd \l@expl@check@declarations@bool \relax
  \cs_new_protected:Npn \tl_check_exists:N #1
    {
      \cs_if_exist:NF #1
        {
          \msg_kernel_error:nnx { check } { non-declared-variable }
            { \token_to_str:N #1 }
        }
    }
  \cs_set_protected:Npn \tl_set:Nn #1#2
    {
      \tl_check_exists:N #1
      \cs_set_nopar:Npx #1 { \exp_not:n {#2} }
    }
  \cs_set_protected:Npn \tl_set:Nx #1#2
    {
      \tl_check_exists:N #1
      \cs_set_nopar:Npx #1 {#2}
    }
  \cs_set_protected:Npn \tl_gset:Nn #1#2
    {
      \tl_check_exists:N #1
      \cs_gset_nopar:Npx #1 { \exp_not:n {#2} }
    }
  \cs_set_protected:Npn \tl_gset:Nx #1#2
    {
      \tl_check_exists:N #1
      \cs_gset_nopar:Npx #1 {#2}
    }
  \cs_set_protected:Npn \tl_set_eq:NN #1#2
    {
      \tl_check_exists:N #1
      \tl_check_exists:N #2
      \cs_set_eq:NN #1 #2
    }
  \cs_set_protected:Npn \tl_gset_eq:NN #1#2
    {
      \tl_check_exists:N #1
      \tl_check_exists:N #2
      \cs_gset_eq:NN #1 #2
    }
\fi
\RequirePackage{
  l3seq,
  l3int,
  l3quark,
  l3prg,
  l3clist,
  l3token,
  l3prop,
  l3msg,
  l3io,
  l3file,
  l3skip,
  l3keys,
  l3fp,
  l3box,
  l3coffins,
  l3color,
  l3luatex
}
\bool_if:nT { \l@expl@check@declarations@bool }
  {
    \msg_kernel_new:nnnn { check } { non-declared-variable }
      { The~variable~#1~has~not~been~declared~\msg_line_context:. }
      {
        Checking~is~active,~and~you~have~tried~do~so~something~like: \\
        \ \ \tl_set:Nn ~ #1 ~ \iow_char:N \{ ~ ... ~ \iow_char:N \} \\
        without~first~having: \\
        \ \ \tl_new:N ~ #1  \\
        \\
        LaTeX~will~create~the~variable~and~continue.
      }
  }
\bool_if:nTF { \l@expl@native@drivers@bool }
  {
    \xetex_if_engine:TF
      { \file_input:n { l3xdvipdfmx.def } }
      {
        \RequirePackage { ifpdf }
        \ifpdf
          \file_input:n { l3pdfmode.def }
        \else
          \file_input:n { l3dvips.def }
        \fi
      }
    \AtBeginDocument
      {
        \cs_if_free:NT \color
          { \DeclareRobustCommand \color [2] [ ] { } }
      }
  }
  {
    \cs_set_protected:Npn \box_rotate:Nn #1#2
      { \hbox_set:Nn #1 { \rotatebox {#2} { \box_use:N #1 } } }
    \cs_set_protected:Npn \box_resize:Nnn #1#2#3
      {
        \hbox_set:Nn #1
          {
            \resizebox *
              { \etex_dimexpr:D #2 \scan_stop: }
              { \etex_dimexpr:D #3 \scan_stop: }
              { \box_use:N #1 }
          }
      }
    \cs_set_protected:Npn \box_resize_to_ht_plus_dp:Nn #1#2
      {
        \hbox_set:Nn #1
          {
            \resizebox * { ! } { \etex_dimexpr:D #2 \scan_stop: }
              { \box_use:N #1 }
          }
      }
    \cs_set_protected:Npn \box_resize_to_wd:Nn #1#2
      {
        \hbox_set:Nn #1
          {
            \resizebox * { \etex_dimexpr:D #2 \scan_stop: } { ! }
              { \box_use:N #1 }
          }
      }
    \cs_set_protected:Npn \box_scale:Nnn #1#2#3
      { \hbox_set:Nn #1 { \scalebox {#2} [#3] { \box_use:N #1 } } }
  }
\cs_set_protected_nopar:Npn \ExplSyntaxOn
  {
    \bool_if:NF \l_expl_status_bool
      {
        \cs_set_protected_nopar:Npx \ExplSyntaxOff
          {
            \char_set_catcode:nn { 9 }   { \char_value_catcode:n { 9 } }
            \char_set_catcode:nn { 32 }  { \char_value_catcode:n { 32 } }
            \char_set_catcode:nn { 34 }  { \char_value_catcode:n { 34 } }
            \char_set_catcode:nn { 38 }  { \char_value_catcode:n { 38 } }
            \char_set_catcode:nn { 58 }  { \char_value_catcode:n { 58 } }
            \char_set_catcode:nn { 94 }  { \char_value_catcode:n { 94 } }
            \char_set_catcode:nn { 95 }  { \char_value_catcode:n { 95 } }
            \char_set_catcode:nn { 124 } { \char_value_catcode:n { 124 } }
            \char_set_catcode:nn { 126 } { \char_value_catcode:n { 126 } }
            \tex_endlinechar:D = \tex_the:D \tex_endlinechar:D \scan_stop:
            \bool_set_false:N \l_expl_status_bool
            \cs_set_protected_nopar:Npn \ExplSyntaxOff { }
          }
      }
    \char_set_catcode_ignore:n           { 9 }   % tab
    \char_set_catcode_ignore:n           { 32 }  % space
    \char_set_catcode_other:n            { 34 }  % double quote
    \char_set_catcode_alignment:n        { 38 }  % ampersand
    \char_set_catcode_letter:n           { 58 }  % colon
    \char_set_catcode_math_superscript:n { 94 }  % circumflex
    \char_set_catcode_letter:n           { 95 }  % underscore
    \char_set_catcode_other:n            { 124 } % pipe
    \char_set_catcode_space:n            { 126 } % tilde
    \tex_endlinechar:D = 32 \scan_stop:
    \bool_set_true:N \l_expl_status_bool
  }
\cs_set_protected_nopar:Npx \ExplSyntaxOff
  {
    \exp_not:o \ExplSyntaxOff
    \cs_set_protected_nopar:Npn \ExplSyntaxOff { }
  }
%% 
%%
%% End of file `expl3.sty'.
