%%
%% This is file `xfrac.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% xfrac.dtx  (with options: `package')
%% 
%% It 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 2003/12/01 or later.
%% 
%% This work has the LPPL maintenance status "maintained".
%% 
%% The Current Maintainer of this work is Morten H\o gholm.
%% 
%% This work consists of the files xfrac.dtx, xfrac.ins and the
%% derived file xfrac.sty.
%% 
\NeedsTeXFormat{LaTeX2e}[2003/12/01]
\ProvidesPackage{xfrac}
    [2004/10/10 v0.11b Slashed Fractions (MH)]
\RequirePackage{textcomp,graphicx,amstext}
\RequirePackage{template}[2001/07/25]
\RequirePackage{xparse}[2000/01/29]
\InternalSyntaxOn
\@ifundefined{else:}{\let\else:=\else}{}
\@ifundefined{fi:}{\let\fi:=\fi}{}
\@ifundefined{if_dim:w}{\let\if_dim:w =\ifdim}{}
\@ifundefined{if_mathmode:}{\let\if_mathmode: =\ifmmode}{}
\def\xfrac_namelet:cN #1#2{%
  \expandafter\let\csname#1\endcsname#2}
\def\xfrac_new_boolean:c #1{
  \expandafter\@ifdefinable\csname if_boolean_#1:\endcsname{
    \@namedef{boolean_#1_true:}
      {\xfrac_namelet:cN{if_boolean_#1:}\iftrue}%
    \@namedef{boolean_#1_false:}
      {\xfrac_namelet:cN{if_boolean_#1:}\iffalse}%
    \@nameuse{boolean_#1_false:}%
  }
}
\def\xfrac_set_boolean:cc #1#2{ \@nameuse{boolean_#1_#2:}}
\def\if_boolean:cTF #1{
  \@nameuse{if_boolean_#1:}
    \expandafter\@firstoftwo
  \else:
    \expandafter\@secondoftwo
  \fi:
}
\def\if_boolean:cT #1#2{ \if_boolean:cTF {#1}{#2}{} }
\def\if_boolean:cF #1#2{ \if_boolean:cTF {#1}{}{#2} }
\xfrac_new_boolean:c {cm_recommended}
\DeclareOption{cm-recommended}
              { \xfrac_set_boolean:cc {cm_recommended}{true} }
\DeclareOption{cm-standard}
              { \xfrac_set_boolean:cc {cm_recommended}{false} }
\ExecuteOptions{cm-recommended}
\ProcessOptions\relax
\newsavebox\l_xfrac_temp_box
\newsavebox\l_xfrac_slash_box
\DeclareTemplateType{xfrac}{3}
\DeclareTemplate{xfrac}{text}{3}{
  numerator-font      = n  [\f@family]  \xfrac_numeratorfont:,
  numerator-format    = f1 [#1]         \xfrac_numeratorformat:n,
  slash-symbol        = n  [\textfractionsolidus]
                                        \xfrac_slashsymbol:,
  slash-symbol-font   = n  [\f@family]  \xfrac_slashsymbolfont:,
  slash-symbol-format = f1 [#1]         \xfrac_slashsymbolformat:n,
  denominator-font    = n  [\f@family]  \xfrac_denominatorfont:,
  denominator-format  = f1 [#1]         \xfrac_denominatorformat:n,
  h-scale             = n  [1]          \xfrac_hscale:,
  v-scale             = n  [1]          \xfrac_vscale:,
  scale-factor        = n  [.83333]     \xfrac_scalefactor:,
  scale-relative      = s  [true]
    { \def \xfrac_relscale: {\ht\l_xfrac_slash_box}}
    { \def \xfrac_relscale: {
      \dimexpr \ht\l_xfrac_temp_box + \dp\l_xfrac_temp_box\relax} },
  scaling             = s  [true]
    {\def\xfrac_fontscale: {
       \fontsize{\xfrac_scalefactor: \xfrac_relscale:}{\z@}\selectfont}}
    { \let\xfrac_fontscale: \relax },
  numerator-top-sep   = L  [\maxdimen]  \l_xfrac_numeratortopsep_fdim,
  numerator-bot-sep   = L  [\maxdimen]  \l_xfrac_numeratorbotsep_fdim,
  denominator-bot-sep = L  [\maxdimen]  \l_xfrac_denominatorbotsep_fdim,
  slash-right-kern    = L  [0pt]        \l_xfrac_slashrightsep_fdim,
  slash-left-kern     = L  [0pt]        \l_xfrac_slashleftsep_fdim,
  slash-right-mkern   = n  [-2mu]       \l_xfrac_slashrightmsep_fmu,
  slash-left-mkern    = n  [-1mu]       \l_xfrac_slashleftmsep_fmu,
  math-mode           = s  [false] { \let\xfrac_math: \ensuremath }
                                   { \let\xfrac_math: \@firstofone },
  phantom             = n  [8]          \xfrac_phantom:,
}{
  \DoParameterAssignments
  \if_mathmode:
    \let\xfrac_textormath: \text
    \edef\xfrac_slashfontchange: {\fam\xfrac_slashsymbolfont: }
    \edef\xfrac_numeratorfontchange: {\fam\xfrac_numeratorfont: }
    \edef\xfrac_denominatorfontchange: {\fam\xfrac_denominatorfont: }
  \else:
    \let\xfrac_textormath: \mbox
    \def\xfrac_slashfontchange: {
      \fontfamily{\xfrac_slashsymbolfont: }\selectfont}
    \def\xfrac_numeratorfontchange: {
      \fontfamily{\xfrac_numeratorfont: }\selectfont}
    \def\xfrac_denominatorfontchange: {
      \fontfamily{\xfrac_denominatorfont: }\selectfont}
  \fi:
  \xfrac_textormath: {
    \m@th
    \sbox\l_xfrac_temp_box {\xfrac_math: {\vphantom{(}}}
    \sbox\l_xfrac_slash_box {
      \xfrac_math: {
        \xfrac_slashsymbolformat:n {
          \xfrac_math: {
            \xfrac_slashfontchange:
              \IfValueTF{#2}{#2}{\xfrac_slashsymbol: }
          }
        }
      }
    }
    \if_dim:w \l_xfrac_numeratortopsep_fdim = \maxdimen
      \if_dim:w \l_xfrac_numeratorbotsep_fdim = \maxdimen
        \def\xfrac_next: {\raisebox{\ht\l_xfrac_slash_box
                                  -\dp\l_xfrac_slash_box-\height}}
      \else:
        \def\xfrac_next: {\raisebox{\l_xfrac_numeratorbotsep_fdim }}
      \fi:
    \else:
      \if_dim:w \l_xfrac_numeratorbotsep_fdim = \maxdimen
        \def\xfrac_next: {
          \raisebox{
            \ht\l_xfrac_slash_box - \l_xfrac_numeratortopsep_fdim
            - \height
          }
        }
      \else:
        \PackageError{xfrac}
          {You~ have~ specified~ both~ numerator-top-sep~ and~
          numerator-bot-sep}
          {I~ will~ pretend~ you~ didn't~ specify~ any~ of ~them}
        \def\xfrac_next: {\raisebox{\ht\l_xfrac_slash_box
                                  -\dp\l_xfrac_slash_box-\height}}
      \fi:
    \fi:
    \xfrac_next: {
      \xfrac_fontscale:
      \xfrac_numeratorformat:n {
        \scalebox{\xfrac_hscale: }[\xfrac_vscale: ]
          { \xfrac_math:{ \xfrac_numeratorfontchange:
                          {\vphantom{\xfrac_phantom: }#1} } }
      }
    }
    \xfrac_math: {
      \if_mathmode:
        \mskip \l_xfrac_slashrightmsep_fmu
      \else:
        \hskip \l_xfrac_slashrightsep_fdim
      \fi: }
    \usebox\l_xfrac_slash_box
    \xfrac_math: {
      \if_mathmode:
        \mskip \l_xfrac_slashleftmsep_fmu
      \else:
        \hskip \l_xfrac_slashleftsep_fdim
      \fi: }
    \if_dim:w \l_xfrac_denominatorbotsep_fdim=\maxdimen\relax
      \def\xfrac_next: {\raisebox{-\dp\l_xfrac_slash_box}}
    \else:
      \def\xfrac_next: {\raisebox{\l_xfrac_denominatorbotsep_fdim}}
    \fi:
    \xfrac_next: {
      \xfrac_fontscale:
      \xfrac_denominatorformat:n {
        \scalebox{\xfrac_hscale:}[\xfrac_vscale:]
          { \xfrac_math: { \xfrac_denominatorfontchange:
                          {\vphantom{\xfrac_phantom: }#3} } }
      }
    }
  }
}
\DeclareRestrictedTemplate{xfrac}{math}{text}{
  numerator-font      = \number\fam,
  slash-symbol        = /,
  slash-symbol-font   = \number\fam,
  denominator-font    = \number\fam,
  scale-factor        = 0.7,
  scale-relative      = false,
  scaling             = true,
  numerator-top-sep   = 0pt,
  denominator-bot-sep = 0pt,
  math-mode           = true,
  phantom             = (,
}
\DeclareInstance{xfrac}{default}{text}{ }
\DeclareInstance{xfrac}{mathdefault}{math}{ }
\DeclareCollectionInstance{plainmath}{xfrac}{mathdefault}{math}{
  denominator-bot-sep=0pt,
  numerator-bot-sep=0pt,
  numerator-top-sep=\maxdimen,
  scale-factor = 1,
  scale-relative = false,
  scaling = true,
  slash-right-mkern=0mu,
  slash-left-mkern=0mu,
}
\DeclareInstance{xfrac}{cmr}{text}{
  denominator-bot-sep=0pt,
  numerator-top-sep=\DelayEvaluation{.2ex},
  slash-left-kern=\DelayEvaluation{-.1em},
  slash-right-kern=\DelayEvaluation{-.1em},
}
\DeclareInstance{xfrac}{cmss}{text}{
  denominator-bot-sep=0pt,
  numerator-top-sep=\DelayEvaluation{.2ex},
  slash-left-kern=\DelayEvaluation{-.1em},
  slash-right-kern=\DelayEvaluation{-.1em},
}
\DeclareInstance{xfrac}{cmtt}{text}{
  denominator-bot-sep=0pt,
  numerator-top-sep=\DelayEvaluation{.2ex},
  slash-left-kern=\DelayEvaluation{-.1em},
  slash-right-kern=\DelayEvaluation{-.1em},
}
\DeclareCollectionInstance{cm-recommended}{xfrac}{cmr}{text}{
  slash-symbol-font   = ptm,
}
\DeclareCollectionInstance{cm-recommended}{xfrac}{cmss}{text}{
  slash-symbol-font   = ptm,
}
\DeclareCollectionInstance{cm-recommended}{xfrac}{cmtt}{text}{
  slash-symbol-font   = ppl,
}
\if_boolean:cT {cm_recommended}
               {\UseCollection{xfrac}{cm-recommended}}
\DeclareDocumentCommand \sfrac {o mom}{
  \if_mathmode:
    \edef\xfrac_next: {mathfam\number\fam}
    \IfExistsInstanceTF{xfrac}{\xfrac_next: }
    {\UseInstance{xfrac}{\xfrac_next: }}
    {\UseInstance{xfrac}{mathdefault}}
    {#2}{#3}{#4}
  \else:
    \IfExistsInstanceTF{xfrac}{#1}
    {\UseInstance{xfrac}{#1}{#2}{#3}{#4}}
    {\IfExistsInstanceTF{xfrac}{\f@family}
      {\UseInstance{xfrac}{\f@family}}
      {\UseInstance{xfrac}{default}}
        {#2}{#3}{#4}
    }
  \fi:
}
\endinput
%%
%% End of file `xfrac.sty'.
