%% %% 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'.