diff options
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/xfrac/xfrac.sty | 437 |
1 files changed, 437 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/xfrac/xfrac.sty b/Master/texmf-dist/tex/latex/xfrac/xfrac.sty new file mode 100644 index 00000000000..1ead74f8be6 --- /dev/null +++ b/Master/texmf-dist/tex/latex/xfrac/xfrac.sty @@ -0,0 +1,437 @@ +%% +%% This is file `xfrac.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% xfrac.dtx (with options: `package') +%% +%% Copyright (C) 2004,2008-2010 Morten Hoegholm +%% (C) 2011-2024 The LaTeX 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 "l3packages bundle" (The Work in LPPL) +%% and all files in that bundle must be distributed together. +%% +%% File: xfrac.dtx +\RequirePackage{amstext,graphicx} +\@ifundefined{ExplLoaderFileDate} + {\RequirePackage{expl3}} + {} +\@ifl@t@r\ExplLoaderFileDate{2018-02-21} + {} + {% + \PackageError{xfrac}{Support package expl3 too old} + {% + You need to update your installation of 'l3kernel'.\MessageBreak + Loading~xfrac~will~abort!% + }% + \endinput + }% +\ProvidesExplPackage{xfrac}{2024-02-13}{} + {Split-level fractions} +\providecommand \IfFormatAtLeastTF { \@ifl@t@r \fmtversion } +\IfFormatAtLeastTF { 2020-02-02 } + { } + { \RequirePackage { textcomp } } +\IfFormatAtLeastTF { 2020-10-01 } + { } + { \RequirePackage { xparse } } +\keys_define:nn { xfrac } + { + cm-recommended .choice:, + cm-recommended / + false .code:n = + { \bool_set_true:N \l__xfrac_cm_std_bool }, + cm-recommended / + true .code:n = + { \bool_set_false:N \l__xfrac_cm_std_bool }, + cm-recommended .default:n = { true }, + cm-standard .bool_set:N = \l__xfrac_cm_std_bool + } +\IfFormatAtLeastTF { 2022-06-01 } + { \ProcessKeyOptions } + { + \RequirePackage { l3keys2e } + \ProcessKeysOptions { xfrac } + } +\IfFormatAtLeastTF { 2024-06-01 } + { } + { \RequirePackage { xtemplate } } +\box_new:N \l__xfrac_slash_box +\box_new:N \l__xfrac_tmp_box +\cs_new:Npn \__xfrac_tmp:w { } +\dim_new:N \l__xfrac_denominator_bot_sep_dim +\dim_new:N \l__xfrac_numerator_bot_sep_dim +\dim_new:N \l__xfrac_numerator_top_sep_dim +\dim_new:N \l__xfrac_slash_left_sep_dim +\dim_new:N \l__xfrac_slash_right_sep_dim +\muskip_new:N \l__xfrac_slash_left_muskip +\muskip_new:N \l__xfrac_slash_right_muskip +\fp_new:N \l__xfrac_hscale_fp +\fp_new:N \l__xfrac_scale_factor_fp +\fp_new:N \l__xfrac_vscale_fp +\tl_new:N \l__xfrac_denominator_font_tl +\tl_new:N \l__xfrac_numerator_font_tl +\tl_new:N \l__xfrac_phantom_tl +\tl_new:N \l__xfrac_slash_symbol_tl +\tl_new:N \l__xfrac_slash_symbol_font_tl +\cs_new:Npn \__xfrac_fontscale: { } +\cs_new:Npn \__xfrac_math:n #1 { } +\cs_new:Npn \__xfrac_denominator_font_change: { } +\cs_new:Npn \__xfrac_denominator_format:n #1 { } +\cs_new:Npn \__xfrac_numerator_font_change: { } +\cs_new:Npn \__xfrac_numerator_format:n #1 { } +\cs_new:Npn \__xfrac_relscale: { } +\cs_new:Npn \__xfrac_slash_symbol_font_change: { } +\cs_new:Npn \__xfrac_slash_symbol_format:n #1 { } +\cs_new:Npn \__xfrac_text_or_math:n #1 { } +\IfFormatAtLeastTF { 2024-06-01 } + { \NewTemplateType } + { \DeclareObjectType } + { xfrac } { 3 } +\DeclareTemplateInterface { xfrac } { text } { 3 } + { + denominator-bot-sep : length = \c_max_dim , + denominator-font : tokenlist = \f@family , + denominator-format : function 1 = #1 , + h-scale : real = 1 , + math-mode : choice { false , true } + = false , + numerator-font : tokenlist = \f@family , + numerator-format : function 1 = #1 , + numerator-bot-sep : length = \c_max_dim , + numerator-top-sep : length = \c_max_dim , + phantom : tokenlist = 8 , + scale-factor : real = 0.83333 , + scale-relative : choice { false , true } + = true , + scaling : choice { false , true } + = true , + slash-left-kern : length = 0 pt , + slash-left-mkern : muskip = -2 mu , + slash-right-kern : length = 0 pt , + slash-right-mkern : muskip = -1 mu , + slash-symbol : tokenlist = \textfractionsolidus , + slash-symbol-font : tokenlist = \f@family , + slash-symbol-format : function 1 = #1 , + v-scale : real = 1 , + } +\DeclareTemplateCode { xfrac } { text } { 3 } + { + denominator-bot-sep = \l__xfrac_denominator_bot_sep_dim , + denominator-font = \l__xfrac_denominator_font_tl , + denominator-format = \__xfrac_denominator_format:n , + h-scale = \l__xfrac_hscale_fp , + math-mode = + { + false = \cs_set_eq:NN \__xfrac_math:n \use:n, + true = \cs_set_eq:NN \__xfrac_math:n \ensuremath + }, + numerator-font = \l__xfrac_numerator_font_tl , + numerator-format = \__xfrac_numerator_format:n , + numerator-bot-sep = \l__xfrac_numerator_bot_sep_dim , + numerator-top-sep = \l__xfrac_numerator_top_sep_dim , + phantom = \l__xfrac_phantom_tl , + scale-factor = \l__xfrac_scale_factor_fp , + scale-relative = + { + false = + \cs_set:Npn \__xfrac_relscale: + { + \dim_eval:n + { \box_ht:N \l__xfrac_tmp_box + \box_dp:N \l__xfrac_tmp_box } + }, + true = + \cs_set:Npn \__xfrac_relscale: + { \dim_eval:n { \box_ht:N \l__xfrac_slash_box } } + }, + scaling = + { + false = \cs_set_eq:NN \__xfrac_fontscale: \prg_do_nothing:, + true = + \cs_set:Npn \__xfrac_fontscale: + { + \fontsize + { \fp_to_dim:n { \l__xfrac_scale_factor_fp * \__xfrac_relscale: } } + { \c_zero_dim } + \selectfont + } + }, + slash-left-kern = \l__xfrac_slash_left_sep_dim , + slash-left-mkern = \l__xfrac_slash_left_muskip , + slash-right-kern = \l__xfrac_slash_right_sep_dim , + slash-right-mkern = \l__xfrac_slash_right_muskip , + slash-symbol = \l__xfrac_slash_symbol_tl , + slash-symbol-font = \l__xfrac_slash_symbol_font_tl , + slash-symbol-format = \__xfrac_slash_symbol_format:n , + v-scale = \l__xfrac_vscale_fp + } + { + \mode_if_math:TF + { + \cs_set_eq:NN \__xfrac_text_or_math:n \text + \cs_set:Npe \__xfrac_denominator_font_change: + { \tex_fam:D \l__xfrac_denominator_font_tl } + \cs_set:Npe \__xfrac_numerator_font_change: + { \tex_fam:D \l__xfrac_numerator_font_tl } + \cs_set:Npe \__xfrac_slash_symbol_font_change: + { \tex_fam:D \l__xfrac_slash_symbol_font_tl } + } + { + \cs_set_eq:NN \__xfrac_text_or_math:n \mbox + \cs_set:Npn \__xfrac_denominator_font_change: + { + \fontfamily { \l__xfrac_denominator_font_tl } + \selectfont + } + \cs_set:Npn \__xfrac_numerator_font_change: + { + \fontfamily { \l__xfrac_numerator_font_tl } + \selectfont + } + \cs_set:Npn \__xfrac_slash_symbol_font_change: + { + \fontfamily { \l__xfrac_slash_symbol_font_tl } + \selectfont + } + } + \__xfrac_text_or_math:n + { + \m@th + \hbox_set:Nn \l__xfrac_tmp_box + { \__xfrac_math:n { \vphantom { ( ) } } } + \hbox_set:Nn \l__xfrac_slash_box + { + \__xfrac_math:n + { + \__xfrac_slash_symbol_format:n + { + \__xfrac_math:n + { + \__xfrac_slash_symbol_font_change: + \IfNoValueTF {#2} + { \l__xfrac_slash_symbol_tl } {#2} + } + } + } + } + \cs_set:Npn \__xfrac_tmp:w + { + \raisebox + { + \dim_eval:n + { + \box_ht:N \l__xfrac_slash_box + - \box_dp:N \l__xfrac_slash_box + - \height + } + } + } + \dim_compare:nNnTF + { \l__xfrac_numerator_top_sep_dim } = { \c_max_dim } + { + \dim_compare:nNnF + { \l__xfrac_numerator_bot_sep_dim } = { \c_max_dim } + { + \cs_set:Npn \__xfrac_tmp:w + { + \raisebox + { \dim_use:N \l__xfrac_numerator_bot_sep_dim } + } + } + } + { + \dim_compare:nNnTF + { \l__xfrac_numerator_bot_sep_dim } = { \c_max_dim } + { + \cs_set:Npn \__xfrac_tmp:w + { + \raisebox + { + \dim_eval:n + { + \box_ht:N \l__xfrac_slash_box + - \dim_use:N \l__xfrac_numerator_top_sep_dim + - \height + } + } + } + } + { + \msg_error:nn { xfrac } + { over-specified-numerator-sep } + } + } + \__xfrac_tmp:w + { + \__xfrac_fontscale: + \__xfrac_numerator_format:n + { + \scalebox + { \fp_use:N \l__xfrac_hscale_fp } + [ \fp_use:N \l__xfrac_vscale_fp ] + { + \__xfrac_math:n + { + \__xfrac_numerator_font_change: + { + \vphantom { \l__xfrac_phantom_tl } + #1 + } + } + } + } + } + \__xfrac_math:n + { % THIS IS JUST WRONG! + \mode_if_math:TF + { \tex_mskip:D \l__xfrac_slash_right_muskip } + { \tex_hskip:D \l__xfrac_slash_right_sep_dim } + } + \box_use:N \l__xfrac_slash_box + \__xfrac_math:n + { + \mode_if_math:TF + { \tex_mskip:D \l__xfrac_slash_left_muskip } + { \tex_hskip:D \l__xfrac_slash_left_sep_dim } + } + \dim_compare:nNnTF + { \l__xfrac_denominator_bot_sep_dim } = { \c_max_dim } + { + \cs_set:Npn \__xfrac_tmp:w + { \raisebox { - \box_dp:N \l__xfrac_slash_box } } + } + { + \cs_set:Npn \__xfrac_tmp:w + { + \raisebox + { \dim_use:N \l__xfrac_denominator_bot_sep_dim } + } + } + \__xfrac_tmp:w + { + \__xfrac_fontscale: + \__xfrac_denominator_format:n + { + \scalebox + { \fp_use:N \l__xfrac_hscale_fp } + [ \fp_use:N \l__xfrac_vscale_fp ] + { + \__xfrac_math:n + { + \__xfrac_denominator_font_change: + { + \vphantom { \l__xfrac_phantom_tl } + #3 + } + } + } + } + } + } + } +\IfFormatAtLeastTF { 2024-06-01 } + { + \DeclareTemplateCopy { xfrac } { math } { text } + \EditTemplateDefaults { xfrac } { math } + } + { \DeclareRestrictedTemplate { xfrac } { text } { math } } + { + numerator-font = \number \fam , + slash-symbol = / , + slash-symbol-font = \number \fam , + denominator-font = \number \fam , + scale-factor = 0.7 , + scale-relative = false , + scaling = true , + denominator-bot-sep = 0 pt , + math-mode = true , + phantom = ( % ) + } +\DeclareInstance { xfrac } { default } { text } { } +\DeclareInstance { xfrac } { mathdefault } { math } + { numerator-top-sep = 0pt } +\DeclareInstance { xfrac } { cmr } { text } + { + denominator-bot-sep = 0 pt , + numerator-top-sep = 0.2 ex , + slash-left-kern = -0.1 em , + slash-right-kern = -0.1 em + } +\DeclareInstance { xfrac } { cmss } { text } + { + denominator-bot-sep = 0 pt , + numerator-top-sep = 0.2 ex , + slash-left-kern = -0.1 em , + slash-right-kern = -0.1 em + } +\DeclareInstance { xfrac } { cmtt } { text } + { + denominator-bot-sep = 0 pt , + numerator-top-sep = 0.2 ex , + slash-left-kern = -0.1 em , + slash-right-kern = -0.1 em + } +\bool_if:NF \l__xfrac_cm_std_bool + { + \DeclareInstance { xfrac } { cmr } { text } + { slash-symbol-font = ptm } + \DeclareInstance { xfrac } { cmss } { text } + { slash-symbol-font = ptm } + \DeclareInstance { xfrac } { cmtt } { text } + { slash-symbol-font = ppl } + } +\DeclareInstance { xfrac } { lmr } { text } + { + denominator-bot-sep = 0 pt , + numerator-top-sep = 0.1 ex , + slash-left-kern = -0.15 em , + slash-right-kern = -0.15 em + } +\DeclareInstance { xfrac } { lmss } { text } + { + denominator-bot-sep = 0 pt , + numerator-top-sep = 0 pt , + slash-left-kern = -0.15 em , + slash-right-kern = -0.15 em + } +\DeclareInstance { xfrac } { lmtt } { text } + { + denominator-bot-sep = 0 pt , + numerator-top-sep = 0 pt , + slash-left-kern = -0.15 em , + slash-right-kern = -0.15 em + } +\NewDocumentCommand \sfrac { o m o m } + { + \mode_if_math:TF + { + \IfInstanceExistTF { xfrac } { mathfam \number \fam } + { \UseInstance { xfrac } { mathfam \number \fam } } + { \UseInstance { xfrac } { mathdefault } } + {#2} {#3} {#4} + } + { + \IfInstanceExistTF { xfrac } {#1} + { \UseInstance { xfrac } {#1} } + { + \IfInstanceExistTF { xfrac } { \f@family } + { \UseInstance { xfrac } { \f@family } } + { \UseInstance { xfrac } { default } } + } + {#2} {#3} {#4} + } + } +\msg_new:nnnn { xfrac } { over-specified-numerator-sep } + { You~have~specified~both~"numerator-top-sep"~and~"numerator-bot-sep". } + { I~will~pretend~that~you~didn't~specify~either~of~them. } +%% +%% +%% End of file `xfrac.sty'. |