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