%%
%% This is file `empheq.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% empheq.dtx  (with options: `empheq')
%% 
%% 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 empheq.dtx and empheq.ins and the
%% derived files empheq.sty and ntheorem.fix
%% 
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{empheq}
  [2004/10/10 v2.11a
  Emphasizing equations (MH)
  ]
\RequirePackage{mhsetup}[2004/10/10]
\MHInternalSyntaxOn
\MH_new_boolean:n {overload_ams}
\DeclareOption{overload}{
  \MH_set_boolean_T:n {overload_ams}
}
\MH_new_boolean:n {overload_amsII}
\DeclareOption{overload2}{
  \MH_set_boolean_T:n {overload_ams}
  \MH_set_boolean_T:n {overload_amsII}
}
\MH_new_boolean:n {good_mult}
\DeclareOption{oldmultline}{\MH_set_boolean_F:n {good_mult}}
\DeclareOption{newmultline}{\MH_set_boolean_T:n {good_mult}}
\DeclareOption{ntheorem}{\AtEndOfPackage{\input{ntheorem.fix}}}
\DeclareOption*{
  \PassOptionsToPackage{\CurrentOption}{mathtools}
}
\ExecuteOptions{newmultline}
\ProcessOptions\relax
\MHInternalSyntaxOff
\RequirePackage{mathtools}[2004/10/10]
\MHInternalSyntaxOn
\AtEndOfPackage{\MHInternalSyntaxOff}
\newcount\l_EQ_equationtype_int
\newcount\l_EQ_alignmentmode_int
\if@fleqn
  \iftagsleft@
    \l_EQ_alignmentmode_int=4
  \else:
    \l_EQ_alignmentmode_int=\thr@@
  \fi:
\else:
  \iftagsleft@
    \l_EQ_alignmentmode_int=\tw@
  \else:
    \l_EQ_alignmentmode_int=\@ne
  \fi:
\fi:
\newdimen\l_EQ_totalwidth_dim
\newdimen\l_EQ_displaywidth_dim
\def\EmphEqdisplaywidth{\l_EQ_displaywidth_dim}
\newdimen\l_EQ_temp_linewidth_dim
\newdimen\EmphEqdelimitershortfall
\newcount\EmphEqdelimiterfactor
\EmphEqdelimiterfactor950
\EmphEqdelimitershortfall\p@
\newdimen\g_EQ_toptag_height_dim
\newdimen\g_EQ_bottomtag_depth_dim
\newdimen\g_EQ_toprow_height_dim
\newdimen\g_EQ_bottomrow_depth_dim
\newdimen\g_EQ_widesttag_dim
\def\EmphEqtagwidth{\g_EQ_widesttag_dim}
\def\EQ_outerbox:{}
\def\EQ_innerbox:{}
\def\EQ_left_side:{}
\def\EQ_right_side:{}
\newsavebox\EQ_mathdisplay_box
\def\EmphEqdisplayheight{\ht\EQ_mathdisplay_box}
\def\EmphEqdisplaydepth{\dp\EQ_mathdisplay_box}
\newsavebox\EQ_tag_box
\def\EQ_complete_mathdisplay:{}
\def\EQ_getbody:n #1{%
  \def\EQ_complete_mathdisplay:{}\def\EQ_mathbody:{#1}}
\newenvironment{EmphEqMainEnv}{\collect@body\EQ_getbody:n}{%
  \if_num:w \l_EQ_equationtype_int=\z@ %ZeroCheckpoint
    \EQ_upgrade_error:
  \else:
    \EQ_post_process:
    \ignorespacesafterend
  \fi:}
\def\EQ_post_process:{%
  \EQ_initialize:
  \EQ_begin_equation:
  \MH_if_boolean:nT {outer_mult}{
    \setkeys{\MT_options_name:}{
      firstline-afterskip=0pt,
      lastline-preskip=0pt,
      multlined-width=0pt,
    }
    \ifodd \l_EQ_alignmentmode_int
      \setkeys{\MT_options_name:}{multlined-pos=b}
    \else:
      \setkeys{\MT_options_name:}{multlined-pos=t}
    \fi:
      \g@addto@macro\EQ_complete_mathdisplay:{
        \begin{MTmultlined}\relax}
  }
  \g@addto@macro\EQ_complete_mathdisplay:\EQ_mathbody:
  \MH_if_boolean:nT {outer_mult}{
    \g@addto@macro\EQ_complete_mathdisplay:{\end{MTmultlined}}
  }
  \EQ_end_equation:
  \edef\EQ_hyperref_link_fint{\number\Hy@linkcounter}
  \savecounters@
  \EQ_typeset_tags:
  \edef\l_EQ_equation_fint{\number\c@equation}
  \restorecounters@
  \Hy@linkcounter=\EQ_hyperref_link_fint
  \settowidth\l_EQ_totalwidth_dim{%
    $\EQ_left_side:\EQ_innerbox:{}\EQ_right_side:$}%
  \MH_if_boolean:nTF {outer_mult}
    { \def\EQ_next:{_mult} }
    { \def\EQ_next:{} }
  \@nameuse{EQ_modify_linewidth_
            \romannumeral\l_EQ_equationtype_int\EQ_next: :}%
  \EQ_typeset_display:
  \@nameuse{find_displaywidth_
           \romannumeral\l_EQ_equationtype_int\EQ_next: :}
  \MH_addtolength:dn
    \l_EQ_totalwidth_dim{\l_EQ_displaywidth_dim}
  \savebox\EQ_mathdisplay_box[\l_EQ_totalwidth_dim][c]{%
    $\EQ_left_side:
    \EQ_innerbox:{%
      \if_case:w \l_EQ_alignmentmode_int\or:
        \makebox[\l_EQ_displaywidth_dim][c]
          {\usebox{\EQ_mathdisplay_box}}%
      \or:
        \makebox[\l_EQ_displaywidth_dim][c]
          {\usebox{\EQ_mathdisplay_box}}%
      \or:
        \makebox[\l_EQ_displaywidth_dim][l]{%
          \if_num:w \l_EQ_equationtype_int=5 \else:
            \if_num:w \l_EQ_equationtype_int=6 \else:
              \kern-\@mathmargin
            \fi:
          \fi:
          \usebox{\EQ_mathdisplay_box}}%
      \or:
        \makebox[\l_EQ_displaywidth_dim][l]{%
          \if_num:w \l_EQ_equationtype_int=5 \else:
            \if_num:w \l_EQ_equationtype_int=6 \else:
              \kern-\@mathmargin
            \fi:
          \fi:
          \usebox{\EQ_mathdisplay_box}}%
      \fi:}%
    \EQ_right_side:$}%
  \begin{AmSequation*}
  \@nameuse{EQ_place_display_
           \romannumeral\l_EQ_equationtype_int\EQ_next: :}
  \if_dim:w \g_EQ_widesttag_dim>\z@
  \MH_set_boolean_T:n {show_manual_tags}
    \if_case:w \l_EQ_alignmentmode_int
    \or: \EQ_place_tag:N r %#1
    \or: \EQ_place_tag:N l %#2
    \or: \EQ_place_tag:N r %#3
    \or: \EQ_place_tag:N l %#4
    \fi:
  \fi:
  \end{AmSequation*}
  \global\c@equation=\l_EQ_equation_fint\relax
}
\def\EQ_initialize:{%
  \m@th
  \MH_let:NwN\SetTagPlusEndMark\EQ_tag_plus_endmark:
  \MH_let:NwN\SetOnlyEndMark\EQ_only_endmark:
  \l_EQ_temp_linewidth_dim\linewidth
  \g_EQ_toprow_height_dim\z@
  \g_EQ_bottomrow_depth_dim\z@
  \g_EQ_toptag_height_dim\z@
  \g_EQ_bottomtag_depth_dim\z@
  \g_EQ_widesttag_dim\z@
  \xdef\g_EQ_latest_nonzerodepth_row_fint{\z@}
  \edef\EQ_restore_tex_delimiter:{%
    \delimiterfactor\the\delimiterfactor
    \delimitershortfall\the\delimitershortfall\relax}%
  \g@addto@macro\EQ_complete_mathdisplay:
                \EQ_restore_tex_delimiter:
  \delimitershortfall\EmphEqdelimitershortfall
  \delimiterfactor\EmphEqdelimiterfactor
  \MH_let:NwN\intertext@\EQ_intertext:
  \EQ_displaybreak:}
\def\EQ_intertext:{%
  \def\intertext##1{\PackageError{empheq}{%
    You~cannot~use~\string\intertext\space inside~the~`empheq'
    \MessageBreak
    environment,~as~`empheq'~creates~an~unbreakable~box}\@eha}}
\def\EQ_displaybreak:{%
  \def\dspbrk@[##1]{\PackageWarning{empheq}{%
    You~cannot~use~\string\displaybreak\space inside~the~`empheq'%
    \MessageBreak
    environment,~as~`empheq'~creates~an~unbreakable~box.}}}
\def\EQ_new_equationtype:nnn #1#2#3{%
  \define@key{#1}{#2}[true]{%
    \l_EQ_equationtype_int=#3\relax
    \def\EQ_begin_equation:
      {\g@addto@macro{\EQ_complete_mathdisplay:}{\begin{#2}}}%
    \def\EQ_end_equation:
      {\g@addto@macro{\EQ_complete_mathdisplay:}{\end{#2}}}}}
\def\EQ_new_equationtype_arg:nnn #1#2#3{%
  \define@key{#1}{#2}{%
    \l_EQ_equationtype_int=#3\relax
    \def\EQ_begin_equation:
      {\g@addto@macro{\EQ_complete_mathdisplay:}{\begin{#2}{##1}}}%
    \def\EQ_end_equation:
      {\g@addto@macro{\EQ_complete_mathdisplay:}{\end{#2}}}}}
\def\EQ_typeset_tags:{%
  \sbox\EQ_tag_box{%
    \parbox{.5\maxdimen}{%
      \hbadness\@M
      \EQ_prevent_vertical_space:
      \EQ_typeset_tags_hook:
      \MH_let:NwN\set@gather@field\EQ_set_gather_field:
      \MH_let:NwN\set@field\EQ_set_align_field:
      \MH_set_boolean_T:n {continue_measuring}
      \global\g_EQ_temprow_int\m@ne
      \MH_let:NwN \EQ_saved_maketag:n \maketag@@@
      \def\maketag@@@##1{
        \EQ_maketag:Nn \EQ_saved_maketag:n {##1}}
      \EQ_complete_mathdisplay:}}}
\def\EQ_predisplay_adjustment:{%
  \if_dim:w \g_EQ_toprow_height_dim<\baselineskip
    \vskip\g_EQ_toprow_height_dim
    \vskip-\baselineskip
  \else:
    \vskip-\normallineskip
  \fi:
  \if_dim:w \g_EQ_toptag_height_dim>\g_EQ_toprow_height_dim
    \if_dim:w \g_EQ_toptag_height_dim>\baselineskip
      \vskip-\g_EQ_toptag_height_dim
      \vskip\baselineskip
      \vskip-\normallineskip
    \fi:
  \fi:}
\def\EQ_postdisplay_adjustment:{%
  \if_dim:w \g_EQ_bottomrow_depth_dim<\dp\strutbox
    \vskip\g_EQ_bottomrow_depth_dim
    \vskip-\dp\strutbox
  \fi:
  \if_dim:w \g_EQ_bottomtag_depth_dim>\g_EQ_bottomrow_depth_dim
    \if_dim:w \g_EQ_bottomtag_depth_dim>\dp\strutbox
      \vskip-\g_EQ_bottomtag_depth_dim
      \vskip\dp\strutbox
    \fi:
  \fi:}
\def\EQ_typeset_display:{%
  \sbox\EQ_mathdisplay_box{%
    \parbox{\l_EQ_temp_linewidth_dim}{%
      \EQ_predisplay_adjustment:
      \EQ_prevent_vertical_space:
      \EQ_typeset_display_hook:
      \def\maketag@@@##1{\EQ_maketag:Nn \vphantom{##1}}%
      \EQ_complete_mathdisplay:
      \EQ_postdisplay_adjustment:}}}
\def\EQ_prevent_vertical_space:{%
  \nointerlineskip
  \abovedisplayskip\z@  \belowdisplayskip\z@\relax}
\def\EQ_maketag:Nn #1#2{%
  \setboxz@h{#2}%
  \if_num:w \row@=\@ne
    \global \g_EQ_toptag_height_dim = \ht\z@
  \fi:
  \global \g_EQ_bottomtag_depth_dim=\dp\z@
  \xdef\g_EQ_latest_nonzerodepth_row_fint{\number\row@}
  \@tempdima=\wd\z@
  \if_dim:w \@tempdima > \g_EQ_widesttag_dim
    \global \g_EQ_widesttag_dim = \@tempdima
  \fi:
  #1{#2}%
}
\def\EQ_set_gather_field:{%
  \iftagsleft@
    \global\lineht@\ht\z@
  \else:
    \global\lineht@\dp\z@
  \fi:
  \kern\eqnshift@
  %\boxz@ % Original amsmath version
  \EQ_measure_gather:
  \phantom{\boxz@}%
  \hfil}
\def\EQ_measure_gather:{%
  \if_num:w \row@=\@ne
    \g_EQ_toprow_height_dim=\ht\z@
  \fi:
  \g_EQ_bottomrow_depth_dim=\dp\z@
  \global\g_EQ_toprow_height_dim\g_EQ_toprow_height_dim
  \global\g_EQ_bottomrow_depth_dim\g_EQ_bottomrow_depth_dim}
\def\EQ_set_align_field:{%
  \column@plus
  \iftagsleft@
    \if_dim:w \ht\z@>\lineht@
      \global\lineht@\ht\z@
    \fi:
  \else:
    \if_dim:w \dp\z@>\lineht@
      \global\lineht@\dp\z@
    \fi:
  \fi:
  %\boxz@ % Original amsmath version
  \MH_if_boolean:nT {continue_measuring}{ \EQ_measure_align: }
  \phantom{\boxz@}}
\newcount\g_EQ_temprow_int
\MH_new_boolean:n {still_in_samerow}
\MH_new_boolean:n {continue_measuring}
\def\EQ_measure_align:{%
  \if_num:w \g_EQ_temprow_int=\row@
    \MH_set_boolean_T:n {still_in_samerow}
  \else:
    \if_num:w \g_EQ_temprow_int>\row@
      \global\MH_set_boolean_F:n {continue_measuring}
    \fi:
    \MH_set_boolean_F:n {still_in_samerow}
    \global\@tempdimc=\@tempdimb
    \global\@tempdimb=\g_EQ_bottomrow_depth_dim
  \fi:
  \MH_if_boolean:nTF {continue_measuring}{
    \global\g_EQ_temprow_int=\row@
    \@tempcnta=\row@
    \if_num:w \@tempcnta=\z@
      \@tempdima=\g_EQ_toprow_height_dim
      \g_EQ_toprow_height_dim=\ht\z@\relax
      \if_dim:w \g_EQ_toprow_height_dim<\@tempdima
        \g_EQ_toprow_height_dim\@tempdima
      \fi:
    \fi:
    \MH_if_boolean:nTF {still_in_samerow}{
      \@tempdima=\g_EQ_bottomrow_depth_dim
      \g_EQ_bottomrow_depth_dim=\dp\z@\relax
      \if_dim:w \g_EQ_bottomrow_depth_dim<\@tempdima
        \g_EQ_bottomrow_depth_dim\@tempdima
      \fi:
    }{
      \g_EQ_bottomrow_depth_dim\dp\z@\relax
    }
  }{
    \global\g_EQ_bottomrow_depth_dim=\@tempdimc
  }
  \global\g_EQ_toprow_height_dim\g_EQ_toprow_height_dim
  \global\g_EQ_bottomrow_depth_dim\g_EQ_bottomrow_depth_dim}
\def\EQ_place_tag:N #1{%
  \tag*{\makebox[\g_EQ_widesttag_dim][#1]{%
    \EQ_vertical_tag_adjustment:n {\usebox{\EQ_tag_box}}}}}
\def\EQ_vertical_tag_adjustment:n #1{{%
  \@tempdima\z@\@tempdimb\z@
  \@tempdimc=\dp\strutbox
  \if_dim:w \g_EQ_toprow_height_dim<\baselineskip
    \MH_setlength:dn
      \@tempdima{\g_EQ_toprow_height_dim-\baselineskip}
  \else:
    \MH_setlength:dn \@tempdima{-\normallineskip}
  \fi:
  \if_dim:w \g_EQ_toptag_height_dim>\g_EQ_toprow_height_dim
    \if_dim:w \g_EQ_toptag_height_dim>\baselineskip
      \MH_addtolength:dn \@tempdima
        {-\g_EQ_toptag_height_dim+\baselineskip-\normallineskip}
    \fi:
  \fi:
  \if_dim:w \g_EQ_bottomrow_depth_dim<\@tempdimc
    \MH_setlength:dn \@tempdimb
      {\g_EQ_bottomrow_depth_dim-\@tempdimc}
  \fi:
  \if_dim:w \g_EQ_bottomtag_depth_dim>\g_EQ_bottomrow_depth_dim
    \if_dim:w \g_EQ_bottomtag_depth_dim<\@tempdimc
    \else:
      \MH_addtolength:dn \@tempdimb
        {-\g_EQ_bottomtag_depth_dim+\@tempdimc}
    \fi:
  \fi:
  \raisebox{-0.5\@tempdima+0.5\@tempdimb}{#1}}}%
\def\EQ_use_mathdisplay:{%
  \EQ_outerbox:{\usebox{\EQ_mathdisplay_box}}}
\def\EQ_options_name:{EmphEqOpt}
\MH_keyval_alias_with_addon:nnnn {EmphEqEnv}{equation}{gather}
  {\EQ_disable_linebreak:}
\MH_keyval_alias_with_addon:nnnn {EmphEqEnv}{equation*}{gather*}
  {\EQ_disable_linebreak:}
\def\EQ_disable_linebreak:{%
  \MH_let:NwN \EQ_saved_Let: \Let@
  \def\Let@{\def\\{%
    \PackageError{empheq}{You~ cannot~ use~ \string\\~ in~ equation!}
      {\@eha}}
    \MH_let:NwN \Let@ \EQ_saved_Let:
  }%
}
\EQ_new_equationtype:nnn {EmphEqEnv}{align}{1}
\EQ_new_equationtype:nnn {EmphEqEnv}{align*}{2}
\def\EQ_modify_linewidth_i:{%
  \if_num:w \maxfields@=\tw@
  \else:
    \setlength{\l_EQ_temp_linewidth_dim}{%
      \linewidth-\l_EQ_totalwidth_dim-\widthof{\EQ_outerbox:{}}}%
  \fi:}
\def\EQ_modify_linewidth_ii:{\EQ_modify_linewidth_i:}
\def\find_displaywidth_i:{%
  \MH_setlength:dn \l_EQ_displaywidth_dim
    {\l_EQ_temp_linewidth_dim-\alignsep@}
  \if_case:w \l_EQ_alignmentmode_int
  \or: % #1:
    \MH_addtolength:dn \l_EQ_displaywidth_dim{-\alignsep@}%
  \or: % #2:
    \MH_addtolength:dn \l_EQ_displaywidth_dim{-\alignsep@}%
  \or: % #3:
    \MH_addtolength:dn \l_EQ_displaywidth_dim{-\@mathmargin}%
  \or: % #4:
    \MH_addtolength:dn \l_EQ_displaywidth_dim{-\@mathmargin}%
  \fi:}
\def\find_displaywidth_ii:{\find_displaywidth_i:}
\def\EQ_place_display_i: {\EQ_use_mathdisplay:}
\def\EQ_place_display_ii:{\EQ_place_display_i:}
\EQ_new_equationtype:nnn {EmphEqEnv}{gather}{3}
\EQ_new_equationtype:nnn {EmphEqEnv}{gather*}{4}
\def\EQ_modify_linewidth_iii:{}
\def\EQ_modify_linewidth_iv:{\EQ_modify_linewidth_iii:}
\def\find_displaywidth_iii:{%
  \MH_setlength:dn \l_EQ_displaywidth_dim{\totwidth@}%
  \if_case:w \l_EQ_alignmentmode_int \or: \or: % #1 & #2:
  \or: % #3:
    \MH_addtolength:dn \l_EQ_displaywidth_dim{-\@mathmargin}%
  \or: % #4:
    \MH_addtolength:dn \l_EQ_displaywidth_dim{-\@mathmargin}%
  \fi:}
\def\find_displaywidth_iv:{\find_displaywidth_iii:}
\def\EQ_place_display_iii:{\EQ_use_mathdisplay:}
\def\EQ_place_display_iv: {\EQ_place_display_iii:}
\MH_keyval_alias_with_addon:nnnn {EmphEqEnv}{multline}
  {flalign}{\MH_set_boolean_T:n {multline}}
\MH_keyval_alias_with_addon:nnnn {EmphEqEnv}{multline*}
  {flalign*}{\MH_set_boolean_T:n {multline}}
\MH_new_boolean:n {multline}
\def\EQ_multline_modify_linewidth_tag:{%
  \if_case:w \l_EQ_alignmentmode_int
  \or: % #1:
    \MH_addtolength:dn \l_EQ_temp_linewidth_dim{%
      -\g_EQ_widesttag_dim-\multlinetaggap-\multlinegap}%
  \or:
    \MH_addtolength:dn \l_EQ_temp_linewidth_dim{%
      -\g_EQ_widesttag_dim-\multlinetaggap-\multlinegap}%
  \or:
    \MH_addtolength:dn \l_EQ_temp_linewidth_dim{%
      -\@mathmargin-\g_EQ_widesttag_dim-\multlinetaggap}%
  \or:
    \MH_addtolength:dn
      \l_EQ_temp_linewidth_dim{-\@mathmargin-\multlinegap}%
  \fi:
}
\def\EQ_multline_modify_linewidth_notag:{%
  \if_case:w \l_EQ_alignmentmode_int\or:
    \MH_addtolength:dn \l_EQ_temp_linewidth_dim{-2\multlinegap}
  \or:
    \MH_addtolength:dn \l_EQ_temp_linewidth_dim{-2\multlinegap}
  \or:
    \MH_addtolength:dn
      \l_EQ_temp_linewidth_dim{-\@mathmargin-\multlinegap}%
  \or:
    \MH_addtolength:dn
      \l_EQ_temp_linewidth_dim{-\@mathmargin-\multlinegap}%
  \fi:
}
\MH_let:NwN \MTmultlined \multlined
\MH_let:NwN \endMTmultlined \endmultlined
\MH_if_boolean:nTF {good_mult}{
\MH_keyval_alias_with_addon:nnnn {EmphEqEnv}{multline}{gather}
  {\MH_set_boolean_T:n {outer_mult}}
\MH_keyval_alias_with_addon:nnnn {EmphEqEnv}{multline*}{gather*}
  {\MH_set_boolean_T:n {outer_mult}}
\def\EQ_modify_linewidth_iii_mult:{
  \setlength{\l_EQ_temp_linewidth_dim}{%
    \linewidth-\widthof{\EQ_outerbox:{}}}%
  \if_dim:w \g_EQ_widesttag_dim>\z@
    \EQ_multline_modify_linewidth_tag:
  \else:
    \EQ_multline_modify_linewidth_notag:
  \fi:
  \MH_setlength:dn \l_MT_multwidth_dim{\l_EQ_temp_linewidth_dim}
}
\def\EQ_modify_linewidth_iv_mult:{\EQ_modify_linewidth_iii_mult:}
\def\find_displaywidth_iii_mult:{%
  \MH_setlength:dn \l_EQ_displaywidth_dim{\totwidth@}%
  \if_case:w \l_EQ_alignmentmode_int \or: \or: % #1 & #2:
  \or: % #3:
    \MH_addtolength:dn \l_EQ_displaywidth_dim{-\@mathmargin}%
  \or: % #4:
    \MH_addtolength:dn \l_EQ_displaywidth_dim{-\@mathmargin}%
  \fi:}
\def\find_displaywidth_iv_mult:{\find_displaywidth_iii_mult:}
\def\EQ_place_display_iii_mult:{
  \if_case:w \l_EQ_alignmentmode_int
  \or: % #1:
    \if_dim:w \g_EQ_widesttag_dim>\z@
      \abovedisplayshortskip=\abovedisplayskip
      \rlap{
        \kern-.5\linewidth
        \kern\multlinegap
        \EQ_use_mathdisplay:
      }
    \else:
      \EQ_use_mathdisplay:
    \fi:
  \or: % #2:
    \if_dim:w \g_EQ_widesttag_dim>\z@
      \llap{
        \EQ_use_mathdisplay:
        \kern-.5\linewidth
        \kern\multlinegap
      }%
    \else:
      \EQ_use_mathdisplay:
    \fi:
  \or: % #3:
    \EQ_use_mathdisplay:
  \or: % #4:
    \EQ_use_mathdisplay:
  \fi:
}
\def\EQ_place_display_iv_mult: {\EQ_place_display_iii_mult:}
}{
\def\EQ_generic_multline:nnnnn #1#2#3#4#5{%
  \hskip1sp#2#3{{}#5}#4%
  \if:w *#1\relax\else:\notag\fi:}
\def\multleft{\@ifstar{%
  \MH_if_boolean:nTF {multlined}{
    \def\EQ_next:{\EQ_multlined_left:n}
  }{
    \def\EQ_next:{
      \EQ_generic_multline:nnnnn {*}{}{\mathrlap}{&&&&&}}
  }
  \EQ_next:}{%
  \MH_if_boolean:nTF {multlined}{
    \def\EQ_next:{\EQ_multlined_left:n}%
  }{
    \def\EQ_next:{
      \EQ_generic_multline:nnnnn {}{}{\mathrlap}{&&&&&}}
  }
  \EQ_next:}}%
\def\multcenter{\@ifstar{%
  \MH_if_boolean:nTF {multlined}{
    \def\EQ_next:{\EQ_multlined_center:n}%
  }{
    \def\EQ_next:{
      \EQ_generic_multline:nnnnn {*}{&&}{\mathclap}{&&&}}
  }
  \EQ_next:}{%
  \MH_if_boolean:nTF {multlined}{
    \def\EQ_next:{\EQ_multlined_center:n }%
  }{
    \def\EQ_next:{
      \EQ_generic_multline:nnnnn {}{&&}{\mathclap}{&&&}}
  }
  \EQ_next:}}%
\def\multright{\@ifstar{%
  \MH_if_boolean:nTF {multlined}{
    \def\EQ_next:{\EQ_multlined_right:n }%
  }{
    \def\EQ_next:{
      \EQ_generic_multline:nnnnn {*}{&&&&&}{\mathllap}{}}
  }
  \EQ_next:}{%
  \MH_if_boolean:nTF {multlined}{
    \def\EQ_next:{\EQ_multlined_right:n }%
  }{
    \def\EQ_next:{
      \EQ_generic_multline:nnnnn {}{&&&&&}{\mathllap}{}}
  }
  \EQ_next:}}
\def\multfirst{%
  \MH_if_boolean:nTF {multlined}{
     \def\EQ_next:{\EQ_multlined_left:n }%
  }{
    \if_case:w \l_EQ_alignmentmode_int
    \or: % #1:
      \def\EQ_next:{\multleft}%
    \or: % #2:
      \def\EQ_next:{\multleft*}%
    \or: % #3:
      \def\EQ_next:{\multleft}%
    \or: % #4:
      \def\EQ_next:{\multleft*}%
    \fi:
  }
  \EQ_next:}
\def\multmiddle{%
  \def\EQ_next:{%
    \MH_if_boolean:nTF {multlined}{
      \expandafter\EQ_multlined_center:n
    }{
      \expandafter\multcenter
    }
  }%
  \@ifstar{\EQ_next:}{\EQ_next:}}
\def\multlast{%
  \MH_if_boolean:nTF {multlined}{
     \def\EQ_next:{\EQ_multlined_right:n }%
  }{
    \if_case:w \l_EQ_alignmentmode_int
    \or: % #1:
      \def\EQ_next:{\multright*}%
    \or: % #2:
      \def\EQ_next:{\multright}%
    \or: % #3:
      \def\EQ_next:{\multright*}%
    \or: % #4:
      \def\EQ_next:{\multright}%
    \fi:
  }
  \EQ_next:}
\MH_new_boolean:n {multlined}
\newdimen\multlinedwidth
\MH_setlength:dn \multlinedwidth{.7\linewidth}
\renewenvironment{multlined}%
  {\MH_nospace_ifnextchar:Nnn [  {\EQ_multlined_I:w}
                                 {\EQ_multlined_I:w[c]}
  }
  { \endaligned }
\def\EQ_multlined_I:w[#1]{%
  \MH_nospace_ifnextchar:Nnn[  {\EQ_multlined_II:w[#1]}
                               {\EQ_multlined_II:w[#1][\multlinedwidth]}}
\def\EQ_multlined_II:w[#1][#2]{%
  \MH_set_boolean_T:n {multlined}
  \MH_let:NwN \Let@\MT_saved_Let:
  \if:w t#1\relax \EQ_multlined_III:nn {#1}{#2}%
  \else:
    \if:w b#1\relax \EQ_multlined_III:nn {#1}{#2}%
    \else:
      \if:w c#1\relax \EQ_multlined_III:nn {#1}{#2}%
      \else:
        \EQ_multlined_III:nn {#2}{#1}%
      \fi:
    \fi:
  \fi:
  \mkern-\thinmuskip
  \EQ_next:}
\def\EQ_multlined_III:nn #1#2{%
  \def\EQ_next:{\setlength\multlinedwidth{#2}%
                          \start@aligned{#1}{\thr@@}}}
\def\EQ_multlined_left:n #1{%
  \mathrlap{#1}&\hskip.5\multlinedwidth&&\hskip.5\multlinedwidth&&}
\def\EQ_multlined_center:n #1{%
  &\hskip.5\multlinedwidth&&\mathclap{#1}\hskip.5\multlinedwidth&&}
\def\EQ_multlined_right:n #1{%
  &\hskip.5\multlinedwidth&&\hskip.5\multlinedwidth&&\mathllap{#1}}
}
\EQ_new_equationtype:nnn {EmphEqEnv}{flalign}{5}
\EQ_new_equationtype:nnn {EmphEqEnv}{flalign*}{6}
\def\EQ_modify_linewidth_v:{%
  \setlength{\l_EQ_temp_linewidth_dim}{%
    \linewidth-\l_EQ_totalwidth_dim-\widthof{\EQ_outerbox:{}}}%
  \if_dim:w \g_EQ_widesttag_dim>\z@
    \MH_if_boolean:nTF {multline}{
      \EQ_multline_modify_linewidth_tag:
    }{
      \if_case:w \l_EQ_alignmentmode_int
      \or: % #1:
        \MH_addtolength:dn  \l_EQ_temp_linewidth_dim
          {-\g_EQ_widesttag_dim-\mintagsep}
      \or: % #2:
        \MH_addtolength:dn \l_EQ_temp_linewidth_dim
          {-\g_EQ_widesttag_dim-\mintagsep}%
      \or: % #3:
        \MH_addtolength:dn \l_EQ_temp_linewidth_dim
          {-\g_EQ_widesttag_dim-\mintagsep}
      \or: % #4:
        \MH_addtolength:dn \l_EQ_temp_linewidth_dim
          {-\@mathmargin}
      \fi:
    }
  \else:
    \MH_if_boolean:nT {multline}{
      \EQ_multline_modify_linewidth_notag:
    }
  \fi:}
\def\EQ_modify_linewidth_vi:{\EQ_modify_linewidth_v:}
\def\find_displaywidth_v:{%
  \MH_setlength:dn
    \l_EQ_displaywidth_dim{\l_EQ_temp_linewidth_dim}}
\def\find_displaywidth_vi:{\find_displaywidth_v:}
\def\EQ_place_display_v:{%
  \if_case:w \l_EQ_alignmentmode_int
  \or: % #1:
    \if_dim:w \g_EQ_widesttag_dim>\z@
      \MH_if_boolean:nTF {multline}{
        \rlap{\kern\multlinegap  \kern-.5\linewidth
          \EQ_use_mathdisplay:
          \kern-\mintagsep  \kern\multlinetaggap}%
      }{
        \rlap{\kern-.5\linewidth\EQ_use_mathdisplay:}%
      }
    \else:
      \EQ_use_mathdisplay:
    \fi:
  \or: % #2:
    \if_dim:w \g_EQ_widesttag_dim>\z@
      \MH_if_boolean:nTF {multline}{
        \llap{\kern-\mintagsep \kern\multlinetaggap
          \EQ_use_mathdisplay:
          \kern\multlinegap  \kern-.5\linewidth}%
      }{
        \llap{\EQ_use_mathdisplay:\kern-.5\linewidth}%
      }
    \else:
      \EQ_use_mathdisplay:
    \fi:
  \or: % #3:
    \MH_if_boolean:nF {multline}{ \kern-\multlinetaggap }
    \EQ_use_mathdisplay:
  \or: % #4:
    \if_dim:w \g_EQ_widesttag_dim>\z@
    \else:
      \MH_if_boolean:nF {multline}{ \kern-\@mathmargin }
    \fi:
    \EQ_use_mathdisplay:
  \fi:
  \MH_set_boolean_F:n {multline}}
\def\EQ_place_display_vi:{\EQ_place_display_v:}
\EQ_new_equationtype_arg:nnn {EmphEqEnv}{alignat}{7}
\EQ_new_equationtype_arg:nnn {EmphEqEnv}{alignat*}{8}
\def\EQ_modify_linewidth_vii:{}
\def\EQ_modify_linewidth_viii:{\EQ_modify_linewidth_vii:}
\def\find_displaywidth_vii:{%
  \MH_setlength:dn \l_EQ_displaywidth_dim{\totwidth@}%
  \if_case:w \l_EQ_alignmentmode_int
  \or: % #1:
  \or: % #2:
  \or: % #3:
    \MH_addtolength:dn \l_EQ_displaywidth_dim{-\eqnshift@}%
  \or: % #4:
    \MH_addtolength:dn \l_EQ_displaywidth_dim{-\@mathmargin}%
  \fi:}
\def\find_displaywidth_viii:{\find_displaywidth_vii:}
\def\EQ_place_display_vii:{\EQ_use_mathdisplay:}
\def\EQ_place_display_viii:{\EQ_place_display_vii:}
\define@key{\EQ_options_name:}{box}{\def\EQ_outerbox:{#1}}
\MH_keyval_alias:nnn {\EQ_options_name:}{outerbox}{box}
\def\EQ_marginbox:nn #1#2{%
  \settowidth{\@tempdima}{#2}%
  \makebox[\z@]{\hspace{\@tempdima}#1{#2}}}
\define@key{\EQ_options_name:}{marginbox}{%
  \def\EQ_outerbox:{\EQ_marginbox:nn {#1}}}
\define@key{\EQ_options_name:}{innerbox}{\def\EQ_innerbox:{#1}}
\define@key{\EQ_options_name:}{left}{\def\EQ_left_side:{#1}}
\define@key{\EQ_options_name:}{right}{\def\EQ_right_side:{#1}}
\newcommand*\empheqset[1]{\setkeys{\EQ_options_name:}{#1}}
\def\EQ_upgrade_error:{%
  \PackageError{empheq}
    {You~ are~ using~ the~ old~ syntax!\MessageBreak
    The~ `empheq'~ environment~ takes~ a~ mandatory~
    argument~ now.\MessageBreak
    You~ need~ to~ exit~ and~ change~ your~ source~ file.}
    {It~ won't~ work,~ trust me.~ Press~ `X'~ now.}}
\define@key{\EQ_options_name:}{boxtype}{\EQ_upgrade_error:}
\define@key{\EQ_options_name:}{Left}{\EQ_upgrade_error:}
\define@key{\EQ_options_name:}{Right}{\EQ_upgrade_error:}
\newenvironment{empheq}[2][]{%
  \setkeys{EmphEqEnv}{#2}\setkeys{\EQ_options_name:}{#1}%
  \EmphEqMainEnv}{\endEmphEqMainEnv}
\newcommand*\DeclareLeftDelimiter[2][]{%
  \EQ_declare_left_delimiter:nnnn {#1}{#2}{}{}%
  \EQ_declare_left_delimiter:nnnn {#1}{#2}{big}{\EQ_innerbox:}}
\def\EQ_declare_left_delimiter:nnnn #1#2#3#4{%
  \@namedef{empheq#3\expandafter\@gobble\string#2}{%
    \left#2%
    \mkern-\thinmuskip
    \vphantom{#4{\parbox{.5\maxdimen}{%
      \EQ_predisplay_adjustment:
      \EQ_prevent_vertical_space:
      \usebox{\EQ_tag_box}%
      \EQ_postdisplay_adjustment:}}}%
    \right.%
    \kern-\nulldelimiterspace #1}}
\newcommand*\DeclareRightDelimiter[2][]{%
  \EQ_declare_right_delimiter:nnnn {#1}{#2}{}{}%
  \EQ_declare_right_delimiter:nnnn {#1}{#2}{big}{\EQ_innerbox:}}
\def\EQ_declare_right_delimiter:nnnn #1#2#3#4{%
  \@namedef{empheq#3\expandafter\@gobble\string#2}{%
    \kern-\nulldelimiterspace
    #1%
    \left.%
    \vphantom{#4{\parbox{.5\maxdimen}{%
      \EQ_predisplay_adjustment:
      \EQ_prevent_vertical_space:
      \usebox{\EQ_tag_box}%
      \EQ_postdisplay_adjustment:}}}%
    \mkern-\thinmuskip
    \right#2}}
\DeclareLeftDelimiter{\lbrace}
\DeclareRightDelimiter{\rbrace}
\DeclareLeftDelimiter{\lbrack}
\DeclareRightDelimiter{\rbrack}
\DeclareLeftDelimiter{\langle}
\DeclareRightDelimiter{\rangle}
\DeclareLeftDelimiter{\lvert}
\DeclareRightDelimiter{\rvert}
\DeclareLeftDelimiter{\lVert}
\DeclareRightDelimiter{\rVert}
\DeclareLeftDelimiter{\lfloor}
\DeclareRightDelimiter{\rfloor}
\DeclareLeftDelimiter{\lceil}
\DeclareRightDelimiter{\rceil}
\DeclareLeftDelimiter{\lparen}
\DeclareRightDelimiter{\rparen}
\def\EQ_typeset_tags_hook:{}
\def\EQ_typeset_display_hook:{}
\g@addto@macro\EQ_typeset_display_hook:{
  \def\SK@@label#1>#2\SK@{}
}
\@namedef{SK@AmSequation}  {\SK@equationtrue}
\@namedef{SK@AmSequation*} {\SK@equationtrue}
\@namedef{SK@AmSalign}     {\SK@equationtrue}
\@namedef{SK@AmSalign*}    {\SK@equationtrue}
\@namedef{SK@AmSalignat}   {\SK@equationtrue}
\@namedef{SK@AmSalignat*}  {\SK@equationtrue}
\@namedef{SK@AmSgather}    {\SK@equationtrue}
\@namedef{SK@AmSgather*}   {\SK@equationtrue}
\@namedef{SK@AmSmultline}  {\SK@equationtrue}
\@namedef{SK@AmSmultline*} {\SK@equationtrue}
\@namedef{SK@AmSflalign}   {\SK@equationtrue}
\@namedef{SK@AmSflalign*}  {\SK@equationtrue}
\AtBeginDocument{
  \@ifundefined{Hy@linkcounter}{\newcount\Hy@linkcounter}{}
}
\g@addto@macro\EQ_typeset_display_hook:{
  \MH_let:NwN \hyper@refstepcounter\@gobble
}
\g@addto@macro\EQ_typeset_tags_hook:{
  \MH_let:NwN\TagsPlusEndmarks\relax
  \MH_let:NwN\RestoreTags\relax
}
\g@addto@macro\EQ_typeset_display_hook:{
  \MH_let:NwN\TagsPlusEndmarks\relax
  \MH_let:NwN\RestoreTags\relax
}
\g@addto@macro\EQ_typeset_display_hook:{
  \MH_let:NwN\ltx@label\MT_gobblelabel:w
  \MH_let:NwN \GenericError \@gobblefour
}
\AtBeginDocument{%
  \@ifpackageloaded{fancybox}{%
    \@ifpackageloaded{color}{\definecolor{shadowcolor}{rgb}{0,0,0}}%
    {\newcommand*\textcolor[2]{\normalcolor{#2}}}%
    \MH_new_boolean:n {shadowbox_star}
    \renewcommand*\shadowbox{%
      \@ifstar{\MH_set_boolean_T:n {shadowbox_star}
               \VerbBox\EQ_shadowbox:n}
              {\MH_set_boolean_F:n {shadowbox_star}
               \VerbBox\EQ_shadowbox:n}}
    \def\EQ_shadowbox:n #1{%
      \sbox{\z@}{\fbox{#1}}%
      \MH_if_boolean:nTF {shadowbox_star}{
        \MH_setlength:dn \@tempdima{\z@}%
      }{
        \MH_setlength:dn \@tempdima{\dp\z@+\shadowsize}%
      }
      \raisebox{\@tempdima}{%
        \makebox[\z@][l]{%
          \kern\shadowsize \textcolor{shadowcolor}{%
            \rule[-\dp\z@-\shadowsize]{\wd\z@}{\shadowsize}}%
        }%
        \usebox\z@\textcolor{shadowcolor}{%
          \rule[-\dp\z@-\shadowsize]{\shadowsize}{\ht\z@+\dp\z@}}}}%
  }{}%
}
\def\EQ_overload_ams_begin:n #1{%
  \MH_let:cc {AmS#1}{#1}%
  \MH_let:cc {AmS#1*}{#1*}
}
\def\EQ_overload_ams_end:n #1{%
  \MH_let:cc {endAmS#1}{endAmSalign}
}
\AtBeginDocument{
  \EQ_overload_ams_begin:n {equation}
  \MH_let:cc {endAmSequation}{endequation}
  \MH_let:cc {endAmSequation*}{endequation*}
  \MH_if_boolean:nT {overload_ams}{
    \def\EQ_renew_ams_environment:n #1{%
      \MaybeMHPrecedingSpacesOff
      \renewenvironment{#1}[1][]{%
        \setkeys{\EQ_options_name:}{##1}%
        \setkeys{EmphEqEnv}{AmS#1}%
        \EmphEqMainEnv
      }{\endEmphEqMainEnv}
      \MHPrecedingSpacesOn
    }
    \EQ_new_equationtype:nnn     {EmphEqEnv}{AmSalign}   {1}
    \EQ_new_equationtype:nnn     {EmphEqEnv}{AmSalign*}  {2}
    \EQ_new_equationtype:nnn     {EmphEqEnv}{AmSgather}  {3}
    \EQ_new_equationtype:nnn     {EmphEqEnv}{AmSgather*} {4}
    \EQ_new_equationtype:nnn     {EmphEqEnv}{AmSflalign} {5}
    \EQ_new_equationtype:nnn     {EmphEqEnv}{AmSflalign*}{6}
    \EQ_new_equationtype_arg:nnn {EmphEqEnv}{AmSalignat} {7}
    \EQ_new_equationtype_arg:nnn {EmphEqEnv}{AmSalignat*}{8}
    \EQ_overload_ams_begin:n {gather}
    \MH_let:cc {endAmSgather}{endgather}
    \MH_let:cc {endAmSgather*}{endAmSgather}
    \EQ_renew_ams_environment:n {gather}
    \EQ_renew_ams_environment:n {gather*}
    \EQ_overload_ams_begin:n {equation}
    \MH_keyval_alias_with_addon:nnnn {EmphEqEnv} {AmSequation}
      {AmSgather}{\EQ_disable_linebreak:}
    \MH_keyval_alias_with_addon:nnnn {EmphEqEnv}{AmSequation*}
      {AmSgather*}{\EQ_disable_linebreak:}
    \EQ_renew_ams_environment:n {equation}
    \EQ_renew_ams_environment:n {equation*}
    \EQ_overload_ams_begin:n {align}
    \MH_let:cc {endAmSalign}{endalign}
    \EQ_overload_ams_end:n {align*}
    \EQ_renew_ams_environment:n {align}
    \EQ_renew_ams_environment:n {align*}
    \EQ_overload_ams_begin:n {flalign}
    \EQ_overload_ams_end:n {flalign}
    \EQ_overload_ams_end:n {flalign*}
    \EQ_renew_ams_environment:n {flalign}
    \EQ_renew_ams_environment:n {flalign*}
    \EQ_overload_ams_begin:n {alignat}
    \EQ_overload_ams_end:n {alignat}
    \EQ_overload_ams_end:n {alignat*}
    \MaybeMHPrecedingSpacesOff
    \newcommand*\EQ_alignat_optional:w [1][]{
      \setkeys{\EQ_options_name:}{#1}
      \EmphEqMainEnv}
    \MHPrecedingSpacesOn
    \renewenvironment{alignat}[1]{
      \setkeys{EmphEqEnv}{AmSalignat=#1}
      \EQ_alignat_optional:w}
      {\endEmphEqMainEnv}
    \renewenvironment{alignat*}[1]{%
      \setkeys{EmphEqEnv}{AmSalignat*=#1}%
      \EQ_alignat_optional:w}%
      {\endEmphEqMainEnv}
    \DeclareRobustCommand{\[}{\begin{AmSequation*}}
    \DeclareRobustCommand{\]}{\end{AmSequation*}}
    \MH_keyval_alias:nnn {EmphEqEnv}{gather}  {AmSgather}
    \MH_keyval_alias:nnn {EmphEqEnv}{gather*} {AmSgather*}
    \MH_keyval_alias:nnn {EmphEqEnv}{align}   {AmSalign}
    \MH_keyval_alias:nnn {EmphEqEnv}{align*}  {AmSalign*}
    \MH_keyval_alias:nnn {EmphEqEnv}{flalign} {AmSflalign}
    \MH_keyval_alias:nnn {EmphEqEnv}{flalign*}{AmSflalign*}
    \MH_keyval_alias:nnn {EmphEqEnv}{alignat} {AmSalignat}
    \MH_keyval_alias:nnn {EmphEqEnv}{alignat*}{AmSalignat*}
    \MH_if_boolean:nT {good_mult}{
      \EQ_overload_ams_begin:n {multline}
      \MH_let:cc {endAmSmultline}{endmultline}
      \MH_let:cc {endAmSmultline*}{endAmSmultline}
      \MH_keyval_alias_with_addon:nnnn {EmphEqEnv}{AmSmultline}
        {AmSgather}{\MH_set_boolean_T:n {outer_mult}}
      \MH_keyval_alias_with_addon:nnnn {EmphEqEnv}{AmSmultline*}
        {AmSgather*}{\MH_set_boolean_T:n {outer_mult}}
      \EQ_renew_ams_environment:n {multline}
      \EQ_renew_ams_environment:n {multline*}
    }
    \MH_if_boolean:nT {overload_amsII}{
      \MH_protected:\def\[#1\]{\begin{equation*} #1\end{equation*}}
      \MH_if_boolean:nF {good_mult}{
        \EQ_overload_ams_begin:n {multline}
        \MH_keyval_alias_with_addon:nnnn {EmphEqEnv}{AmSmultline}
          {AmSflalign}{\MH_set_boolean_T:n {multline}}
        \MH_keyval_alias_with_addon:nnnn {EmphEqEnv}{AmSmultline*}
          {AmSflalign*}{\MH_set_boolean_T:n {multline}}
        \EQ_renew_ams_environment:n {multline}
        \EQ_renew_ams_environment:n {multline*}
      }
    }
  }
}
\endinput
%%
%% End of file `empheq.sty'.
