%%
%% This is file `lwarp-siunitx.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% lwarp.dtx  (with options: `siunitx')
%% This is a generated file.
%% Copyright 2016-2022 Brian Dunn
%% 
%% 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
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.

\providecommand\DeclareRelease[3]{}
\providecommand\DeclareCurrentRelease[2]{}

\DeclareRelease{2}{2010-05-23}{lwarp-siunitx-v2.sty}
\DeclareRelease{v2}{2010-05-23}{lwarp-siunitx-v2.sty}
\DeclareCurrentRelease{}{2021-05-17}

\RequirePackage{xcolor}% for \convertcolorspec

\LWR@ProvidesPackagePass{siunitx}[2023-11-14]

\ExplSyntaxOn


\VerifyCommand[lwarp][siunitx]{\siunitx_number_format:nN}{33A1ECC8D70AC60AEB82D78E598155E6}

\cs_set_protected:Npn \siunitx_number_format:nN #1#2
  {
    \group_begin:
      \bool_if:NTF \l_siunitx_number_parse_bool
        {
          \siunitx_number_parse:nN {#1} \l__siunitx_number_parsed_tl
          \siunitx_number_process:NN \l__siunitx_number_parsed_tl \l__siunitx_number_parsed_tl
          \tl_set:Nx \l__siunitx_number_outputted_tl
            { \siunitx_number_output:N \l__siunitx_number_parsed_tl }
        }
        {
            \tl_set:Nn \l__siunitx_number_outputted_tl
            {
                \boolfalse{mathjax}%                    lwarp
                \LWR@subsingledollar{%                  lwarp
                    \textbackslash( % space             lwarp ALT text
                    \LWR@HTMLsanitizedetokenized{%
                        \detokenize{#1}%
                    } \textbackslash)%                  lwarp
                }%
                {siunitx unparsed}%                     lwarp add'l hashing
                {\ensuremath{#1}}%                      lwarp
            }
        }
    \exp_args:NNNV \group_end:
    \tl_set:Nn #2 \l__siunitx_number_outputted_tl
  }
\VerifyCommand[lwarp][siunitx]{\__siunitx_compound_unparsed:n}{C6CACB29BD6BD43225E174AD2FBD750C}

\cs_set_protected:Npn \__siunitx_compound_unparsed:n #1
  {
    \tl_if_blank:nF {#1}
      { \seq_put_right:Nn \l__siunitx_compound_tmp_seq
        {
            \boolfalse{mathjax}%                    lwarp
            \LWR@subsingledollar{%                  lwarp
                \textbackslash( % space             lwarp ALT tag
                \LWR@HTMLsanitizedetokenized{%
                    \detokenize{#1}%
                } \textbackslash)%                  lwarp
            }%
            {siunitx unparsed}%                     lwarp add'l hashing
            {\ensuremath{#1}}%                      lwarp
        }
      }
  }
\LetLtxMacro\LWR@siunitx@orig@mathrm\mathrm

\newcommand*{\LWR@siunitx@mathrm}[1]{%
    \ifmmode{\LWR@siunitx@orig@mathrm{#1}}\else{#1}\fi%
}
\VerifyCommand[lwarp][siunitx]{\__siunitx_print_aux:nn}{FD2679699363E8095304C0665CAC4072}

\cs_set_protected:Npn \__siunitx_print_aux:nn #1#2
  {
    \LetLtxMacro\mathrm\LWR@siunitx@mathrm%                 lwarp
    \tl_if_empty:oF {#2}
      {
        \tl_if_empty:cTF { l__siunitx_print_ #1 _color_tl }
          { \use:n }
          { \ExpandArgs { v } \textcolor { l__siunitx_print_ #1 _color_tl } }
            {
                \ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}%      lwarp
                {
                    \use:c
                        {
                        siunitx_print_
                        \tl_use:c { l__siunitx_print_ #1 _mode_tl } :n
                        }
                        {#2}
                }
                {
                    \bool_lazy_all:nTF%     lwarp
                        {
                            {\l__siunitx_print_text_family_bool}
                            {\l__siunitx_print_text_series_bool}
                            {\l__siunitx_print_text_shape_bool}
                        }
                        {% No font control if reset-text-family/series/shape
                            \use:c
                                {
                                siunitx_print_%                         lwarp
                                    text%                               lwarp
                                    :n%                                 lwarp
                                }%                                      lwarp
                                {#2}%                                   lwarp
                        }
                        {
                            \LWR@textcurrentfont{%                      lwarp
                                \use:c
                                    {
                                    siunitx_print_%                     lwarp
                                        text%                           lwarp
                                        :n%                             lwarp
                                    }%                                  lwarp
                                    {#2}%                               lwarp
                            }
                        }
                }
            }
    }
}
\newcommand*{\LWR@siunitx@complexrootstyle}{textrm}

\newcommand*{\LWR@siunitx@complexrmi}{\mathrm{i}}
\newcommand*{\LWR@siunitx@complexrmj}{\mathrm{j}}

\newcommand*{\LWR@siunitx@setcomplexroot}{%
    \renewcommand*{\LWR@siunitx@complexrootstyle}{ijit}%
    \ifdefequal{\l__siunitx_complex_output_root_tl}{\LWR@siunitx@complexrmi}%
        {\renewcommand*{\LWR@siunitx@complexrootstyle}{ijup}}%
        {}%
    \ifdefequal{\l__siunitx_complex_output_root_tl}{\LWR@siunitx@complexrmj}%
        {\renewcommand*{\LWR@siunitx@complexrootstyle}{ijup}}%
        {}%
}
\VerifyCommand[lwarp][siunitx]{\__siunitx_complex_format_cartesian_auxii:n}
    {DC0897DBE172C13B6F7282D266BE1156}

\cs_set_protected:Npn \__siunitx_complex_format_cartesian_auxii:n #1
  {
    \LWR@siunitx@setcomplexroot%                        lwarp
    \__siunitx_complex_format_cartesian_units:n {#1}
    \tl_if_empty:NF \l__siunitx_complex_real_tl
      { \exp_after:wN \__siunitx_complex_drop_exponent:nnnnnnn \l__siunitx_complex_real_tl }
    \exp_after:wN \__siunitx_complex_format_sign:nnnnnnn \l__siunitx_complex_img_tl
    \tl_set:Nx \l__siunitx_complex_tmp_tl
      { \siunitx_number_output:NN \l__siunitx_complex_img_tl \q_nil }
    \exp_after:wN \__siunitx_complex_extract_exponent:w \l__siunitx_complex_tmp_tl \q_stop
    \tl_set:Nx \l__siunitx_complex_tmp_tl
      {
        \bool_lazy_or:nnTF
          {
            \bool_lazy_and_p:nn
              { \l_siunitx_number_bracket_ambiguous_bool }
              { ! \tl_if_empty_p:N \l__siunitx_complex_exp_tl }
          }
          {
            ! \bool_lazy_any_p:n
              {
                { \tl_if_blank_p:n {#1} }
                { \tl_if_empty_p:N \l__siunitx_complex_real_tl }
                { \tl_if_empty_p:N \l__siunitx_complex_img_tl }
              }
          }
          { \__siunitx_complex_format_bracket:n }
          { \use:n }
          {
            \siunitx_number_output:N \l__siunitx_complex_real_tl
            \exp_not:V \l__siunitx_complex_sign_tl
            \bool_if:NF \l__siunitx_complex_root_after_bool
              {
                \InlineClass{\LWR@siunitx@complexrootstyle}%    lwarp
                    {
                        \exp_not:V \l__siunitx_complex_output_root_tl
                    }
              }
             \exp_not:V \l__siunitx_complex_tmp_tl
            \bool_if:NT \l__siunitx_complex_root_after_bool
              {
                \InlineClass{\LWR@siunitx@complexrootstyle}%    lwarp
                    {
                        \exp_not:V \l__siunitx_complex_output_root_tl
                    }
              }
           }
         \exp_not:V \l__siunitx_complex_exp_tl
      }
  }
\VerifyCommand[lwarp][siunitx]{\__siunitx_angle_arc_print_auxii:nw}
    {7CEE155CD4C7A9CDFEAE3AF8DD154B03}

\cs_set_protected:Npn \__siunitx_angle_arc_print_auxii:nw
  #1#2 \q_nil #3 \q_nil #4 \q_nil #5 \q_nil #6 \q_nil #7 \q_nil #8 \q_stop
  {
    \mode_if_math:TF
      { \bool_set_true:N \l__siunitx_angle_tmp_bool }
      { \bool_set_false:N \l__siunitx_angle_tmp_bool }
    \siunitx_print_number:n {#2#3#4}
    \ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}%      lwarp
    {%                                                  lwarp
        \tl_if_blank:nTF {#6}
        { \__siunitx_angle_arc_print_auxvi:n {#1} }
        {
            \hbox_set:Nn \l__siunitx_angle_marker_box
            {
                \__siunitx_angle_arc_print_auxiii:n
                { \siunitx_print_number:n {#5} }
            }
            \hbox_set:Nn \l__siunitx_angle_unit_box
            {
                \__siunitx_angle_arc_print_auxiii:n
                {
                    \siunitx_unit_format:nN {#1} \l__siunitx_angle_tmp_tl
                    \siunitx_print_unit:V \l__siunitx_angle_tmp_tl
                    \skip_horizontal:n { -\scriptspace }
                }
            }
            \dim_compare:nNnTF { \box_wd:N \l__siunitx_angle_marker_box } >
            { \box_wd:N \l__siunitx_angle_unit_box }
            {
                \__siunitx_angle_arc_print_auxiv:NN
                \l__siunitx_angle_marker_box
                \l__siunitx_angle_unit_box
            }
            {
                \__siunitx_angle_arc_print_auxiv:NN
                \l__siunitx_angle_unit_box
                \l__siunitx_angle_marker_box
            }
            \hbox_set_to_wd:Nnn \l__siunitx_angle_marker_box
            \l__siunitx_angle_tmp_dim
            {
                \hbox_overlap_right:n
                { \box_use_drop:N \l__siunitx_angle_marker_box }
                \hbox_overlap_right:n
                { \box_use_drop:N \l__siunitx_angle_unit_box }
                \tex_hfil:D
            }
            \box_use:N \l__siunitx_angle_marker_box
            \skip_horizontal:N \scriptspace
            \siunitx_print_number:n {#6}
        }
    }%
    {%          lwarp: not in a lateximage, simplify for HTML
        \tl_if_blank:nTF {#6}
        { \__siunitx_angle_arc_print_auxvi:n {#1} }
        {
            \__siunitx_angle_arc_print_auxiii:n
            {
                \siunitx_print_number:n {#5}
            }
            \__siunitx_angle_arc_print_auxiii:n
            {
                \siunitx_unit_format:nN {#1} \l__siunitx_angle_tmp_tl
                \siunitx_print_unit:V \l__siunitx_angle_tmp_tl
            }
            \siunitx_print_number:n {#6}
        }
    }%          lwarp
  }
\VerifyCommand[lwarp][siunitx]{\__siunitx_print_text_fraction:Nnn}
    {F47521F256C661719258012969E7AE04}

\cs_set_protected:Npn \__siunitx_print_text_fraction:Nnn #1#2#3
  {
    \ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}% lwarp
    {%
      \ensuremath
      {
        #1
          { \mbox { \__siunitx_print_text_replace:n {#2} } }
          { \mbox { \__siunitx_print_text_replace:n {#3} } }
      }
    }%
    {%                                                          lwarp
          { \mbox { \__siunitx_print_text_replace:n {#2} } }%   lwarp
            /%                                                  lwarp
          { \mbox { \__siunitx_print_text_replace:n {#3} } }%   lwarp
    }%      lwarp
  }
\VerifyCommand[lwarp][siunitx]{\__siunitx_unit_format_qualifier_subscript:}
    {543B01848C00E4089F0E0C53988F6A28}

\cs_set_protected:Npn \__siunitx_unit_format_qualifier_subscript:
  {
    \ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}%      lwarp
    {%
        \__siunitx_unit_format_font:
        \tl_set:Nx \l__siunitx_unit_part_tl
        {
            \c__siunitx_unit_math_subscript_tl
            {
                \exp_not:V \l_siunitx_unit_font_tl
                { \exp_not:V \l__siunitx_unit_part_tl }
            }
        }
    }
    {%      lwarp simplified for HTML:
        \__siunitx_unit_format_font:
        \tl_set:Nx \l__siunitx_unit_part_tl
        {
            \textsubscript
            {
                \exp_not:V \l_siunitx_unit_font_tl
                { \exp_not:V \l__siunitx_unit_part_tl }
            }
        }
    }
  }
\VerifyCommand[lwarp][siunitx]{\siunitx_quantity:nn}
    {AEF3237DB5107FE46437AF1D3ABD03DE}

\cs_set_protected:Npn \siunitx_quantity:nn #1#2
  {
    \group_begin:
      \siunitx_unit_options_apply:n {#2}
      \tl_if_blank:nTF {#1}
        {
          \siunitx_unit_format:nN {#2} \l__siunitx_quantity_unit_tl
          \siunitx_print_unit:V \l__siunitx_quantity_unit_tl
        }
        {
          \bool_if:NTF \l_siunitx_number_parse_bool
            { \__siunitx_quantity_parsed:nn {#1} {#2} }
            {
              \tl_set:Nn \l__siunitx_quantity_number_tl {
                \boolfalse{mathjax}%                    lwarp
                \LWR@subsingledollar{%                  lwarp
                    \textbackslash( % space             lwaro ALT tag
                    \LWR@HTMLsanitizedetokenized{%
                        \detokenize{#1}%
                    } \textbackslash)%                  lwarp
                }%
                {siunitx unparsed}%                     lwarp add'l hashing
                {\ensuremath{#1}}%                      lwarp
              }
              \siunitx_unit_format:nN {#2} \l__siunitx_quantity_unit_tl
              \siunitx_quantity_print:VV
                \l__siunitx_quantity_number_tl \l__siunitx_quantity_unit_tl
            }
        }
    \group_end:
  }

\newcommand*{\LWR@siunitx@nocancel}[1]{%
    \ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}%
        {\cancel{#1}}%  SVG
        {#1}%           HTML
}

\AtBeginDocument{
\__siunitx_unit_set_symbolic:Npnn \cancel
  { }
  { \__siunitx_unit_parse_special:n { \LWR@siunitx@nocancel } }%    lwarp
}
\newcommand{\LWR@HTML@tablenum}[2][]{\num[#1]{#2}}
\LWR@formatted{tablenum}
\AtBeginDocument{
\HTMLnewcolumntype{S}[1][]{>{\begingroup\sisetup{#1}}c<{\endgroup}}
}
\NewDocumentCommand{\HTMLDeclareSIUnit}{o +m m}
{
    \ifcsdef{ __siunitx_unit_ \token_to_str:N #2 :w }
        {}
        {
            \PackageError{lwarp}
                {%
                    First~use\MessageBreak
                        \space\space\protect\DeclareSIUnit{
                          \token_to_str:N#2}{...}\MessageBreak
                    before~using\MessageBreak
                        \space\space\protect\HTMLDeclareSIUnit{
                          \token_to_str:N#2}{...}%
                }
                {%
                    See~the~Lwarp~manual~section~about~special~cases,~
                    regarding~siunitx.%
                }
        }
    \csNewCommandCopycs
        { __orig_siunitx_unit_ \token_to_str:N #2 :w }
        { __siunitx_unit_ \token_to_str:N #2 :w }
    \DeclareSIUnit[#1]{#2}
        {
            \ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}
                {\csuse{ __orig_siunitx_unit_ \token_to_str:N #2 :w }}
                {#3}
        }
}

\ExplSyntaxOff

\AtBeginDocument{
\HTMLDeclareSIUnit\celsius{\LWR@siunitx@textcelsius}
\HTMLDeclareSIUnit\arcminute{\LWR@siunitx@textprime}
\HTMLDeclareSIUnit\arcsecond{\LWR@siunitx@textdblprime}
\HTMLDeclareSIUnit\elementarycharge{\textit{e}}
\HTMLDeclareSIUnit\clight{\text{\textit{c}\textsubscript{0}}}
\HTMLDeclareSIUnit\bohr{\text{\textit{a}\textsubscript{0}}}
\HTMLDeclareSIUnit\electronmass{\text{\textit{m}\textsubscript{e}}}
\HTMLDeclareSIUnit\hartree{\text{\textit{E}\textsubscript{h}}}
\HTMLDeclareSIUnit\planckbar{\LWR@siunitx@textplanckbar}
}% \AtBeginDocument

\AtBeginDocument{
\sisetup{
    per-mode=symbol,    % fraction is not seen by pdftotext
    angle-symbol-degree = {\LWR@siunitx@textdegree},
    angle-symbol-minute = {\LWR@siunitx@textprime} ,
    angle-symbol-second = {\LWR@siunitx@textdblprime} ,
}
}
\AtBeginDocument{
\ifdef{\ltj@allalchar}
    {\LWR@origRequirePackage{lwarp-lltjp-siunitx}}
    {}
}
\LWR@origRequirePackage{lwarp-common-mathjax-siunitx}

\begin{warpMathJax}
\CustomizeMathJax{\let\unit\si}
\CustomizeMathJax{\let\qty\SI}
\CustomizeMathJax{\let\qtylist\SIlist}
\CustomizeMathJax{\let\qtyrange\SIrange}
\CustomizeMathJax{\let\numproduct\num}
\CustomizeMathJax{\let\qtyproduct\SI}
\CustomizeMathJax{\let\complexnum\num}
\CustomizeMathJax{\newcommand{\complexqty}[3][]{(\complexnum{#2})\si{#3}}}
\end{warpMathJax}
\ExplSyntaxOn
\AtBeginDocument{
\edef\LWR@siunitx@rangephrase{\l_siunitx_range_phrase_tl}
\expandafter\CustomizeMathJax\expandafter{%
    \expandafter\def\expandafter\LWRsiunitxrangephrase%
    \expandafter{\LWR@siunitx@rangephrase}%
}
}
\ExplSyntaxOff


\endinput
%%
%% End of file `lwarp-siunitx.sty'.
