- Author:
- overleaf <overleaf@localhost>
- Date:
- 2017-11-02 00:40:31+00:00
- Desc:
- Update on Overleaf.
- Permanent Source URI:
- https://models.cellml.org/workspace/579/rawfile/68f5ee7c82edff0c18c7427850c68721c848779c/empheq.sty
%%
%% This is file `empheq.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% empheq.dtx (with options: `package')
%%
%% This is a generated file.
%%
%% Copyright (C) 2002-2007 by Morten Hoegholm
%% Copyright (C) 2012- by Lars Madsen
%%
%%
%% 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.
%%
%% This work has the LPPL maintenance status "maintained".
%%
%% This Current Maintainer of this work is
%% Lars Madsen
%%
%% This work consists of the main source file empheq.dtx
%% and the derived files
%% empheq.sty, empheq.pdf, empheq.ins, empheq.drv.
%%
\ProvidesPackage{empheq}%
[2014/07/16 v2.14 Emphasizing equations]
\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}}
\gdef\g@EQ@ntheorem@support@bool{01}
\DeclareOption{ntheorem}{\gdef\g@EQ@ntheorem@support@bool{00}}
\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:}
\let\empheqeqrefbase\textup
\newenvironment{empheq}[2][]{%
\MH_let:NwN\EQ_saved_maketag: \maketag@@@%
\renewcommand\eqref[1]{\empheqeqrefbase{%
\let\maketag@@@\EQ_saved_maketag:%
\tagform@{\ref{##1}}}}
\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_display_hook:{
\let\NCC@ignorepar\relax
}
\g@addto@macro\EQ_typeset_tags_hook:{
\let\NCC@ignorepar\relax
}
\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][]{%
\MH_let:NwN\EQ_saved_maketag: \maketag@@@%
\renewcommand\eqref[1]{\empheqeqrefbase{%
\let\maketag@@@\EQ_saved_maketag:%
\tagform@{\ref{####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]{
\MH_let:NwN\EQ_saved_maketag: \maketag@@@%
\renewcommand\eqref[1]{\empheqeqrefbase{%
\let\maketag@@@\EQ_saved_maketag:%
\tagform@{\ref{##1}}}}
\setkeys{EmphEqEnv}{AmSalignat=#1}
\EQ_alignat_optional:w}
{\endEmphEqMainEnv}
\renewenvironment{alignat*}[1]{%
\MH_let:NwN\EQ_saved_maketag: \maketag@@@%
\renewcommand\eqref[1]{\empheqeqrefbase{%
\let\maketag@@@\EQ_saved_maketag:%
\tagform@{\ref{##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*}
}
}
}
}
\if\g@EQ@ntheorem@support@bool
\else
\expandafter\endinput
\fi
\def\default_raisetag:{\nobreak}
\def\raisetag#1{
\skip@#1\relax
\xdef\raise@tag{\default_raisetag:
\vskip\iftagsleft@\else:-\fi:\the\skip@\relax}}
\MH_let:NwN\raise@tag\default_raisetag:
\def\displ@y@{\@display@init{%
\global\column@\z@ \global\dspbrk@lvl\m@ne
\global\tag@false \global\MH_let:NwN\raise@tag\default_raisetag:
}}
\def\MT_gobblelabel:w #1{\@ifnextchar[{\EQ_gobbleoptional:w}{}}
\def\EQ_gobbleoptional:w [#1]{}
\def\gmeasure@#1{%
\begingroup
\measuring@true
\totwidth@\z@
\global\MH_let:NwN\tag@lengths\@empty
\savecounters@
\setbox\@ne\vbox{%
\everycr{\noalign{\global\tag@false
\global\MH_let:NwN\raise@tag\default_raisetag:
\global\column@\z@}}%
\MH_let:NwN\label\MT_gobblelabel:w
\halign{%
\setboxz@h{$\m@th\displaystyle{##}$}%
\if_dim:w \wdz@>\totwidth@
\global\totwidth@\wdz@
\fi:
&\setboxz@h{\strut@{##}}%
\savetaglength@
\crcr
#1%
\math@cr@@@
}%
}%
\restorecounters@
\if@fleqn
\global\advance\totwidth@\@mathmargin
\fi:
\iftagsleft@
\if_dim:w \totwidth@>\displaywidth
\global\MH_let:NwN\gdisplaywidth@\totwidth@
\else:
\global\MH_let:NwN\gdisplaywidth@\displaywidth
\fi:
\fi:
\endgroup
}
\def\measure@#1{%
\begingroup
\measuring@true
\global\eqnshift@\z@
\global\alignsep@\z@
\global\MH_let:NwN\tag@lengths\@empty
\global\MH_let:NwN\field@lengths\@empty
\savecounters@
\global\setbox0\vbox{%
\MH_let:NwN\math@cr@@@\math@cr@@@align@measure
\everycr{\noalign{\global\tag@false
\global\MH_let:NwN\raise@tag\default_raisetag:
\global\column@\z@}}%
\MH_let:NwN\label\MT_gobblelabel:w
\global\row@\z@
\tabskip\z@
\halign{\span\align@preamble\crcr
#1%
\math@cr@@@
\global\column@\z@
\add@amps\maxfields@\cr
}%
}%
\restorecounters@
\ifodd\maxfields@
\global\advance\maxfields@\@ne
\fi:
\if_num:w \xatlevel@=\tw@
\if_num:w \maxfields@<\thr@@
\MH_let:NwN\xatlevel@\z@
\fi:
\fi:
\setbox\z@\vbox{%
\unvbox\z@ \unpenalty \global\setbox\@ne\lastbox
}%
\global\totwidth@\wd\@ne
\if@fleqn \global\advance\totwidth@\@mathmargin \fi:
\global\MH_let:NwN\maxcolumn@widths\@empty
\begingroup
\MH_let:NwN\or:\relax
\loop
\global\setbox\@ne\hbox{%
\unhbox\@ne \unskip \global\setbox\thr@@\lastbox
}%
\ifhbox\thr@@
\xdef\maxcolumn@widths{ \or: \the\wd\thr@@ \maxcolumn@widths}%
\repeat
\endgroup
\dimen@\displaywidth
\advance\dimen@-\totwidth@
\if_case:w \xatlevel@
\global\alignsep@\z@
\MH_let:NwN\minalignsep\z@
\@tempcntb\z@
\if@fleqn
\@tempcnta\@ne
\global\eqnshift@\@mathmargin
\else:
\@tempcnta\tw@
\global\eqnshift@\dimen@
\global\divide\eqnshift@\@tempcnta
\fi:
\or:
\@tempcntb\maxfields@
\divide\@tempcntb\tw@
\@tempcnta\@tempcntb
\advance\@tempcntb\m@ne
\if@fleqn
\global\eqnshift@\@mathmargin
\global\alignsep@\dimen@
\global\divide\alignsep@\@tempcnta
\else:
\global\advance\@tempcnta\@ne
\global\eqnshift@\dimen@
\global\divide\eqnshift@\@tempcnta
\global\alignsep@\eqnshift@
\fi:
\or:
\@tempcntb\maxfields@
\divide\@tempcntb\tw@
\global\advance\@tempcntb\m@ne
\global\@tempcnta\@tempcntb
\global\eqnshift@\z@
\global\alignsep@\dimen@
\if@fleqn
\global\advance\alignsep@\@mathmargin\relax
\fi:
\global\divide\alignsep@\@tempcntb
\fi:
\if_dim:w \alignsep@<\minalignsep\relax
\global\alignsep@\minalignsep\relax
\if_dim:w \eqnshift@>\z@
\if@fleqn\else:
\global\eqnshift@\displaywidth
\global\advance\eqnshift@-\totwidth@
\global\advance\eqnshift@-\@tempcntb\alignsep@
\global\divide\eqnshift@\tw@
\fi:
\fi:
\fi:
\if_dim:w \eqnshift@<\z@
\global\eqnshift@\z@
\fi:
\calc@shift@align
\global\tagshift@\totwidth@
\global\advance\tagshift@\@tempcntb\alignsep@
\if@fleqn
\if_num:w \xatlevel@=\tw@
\global\advance\tagshift@-\@mathmargin\relax
\fi:
\else:
\global\advance\tagshift@\eqnshift@
\fi:
\iftagsleft@ \else:
\global\advance\tagshift@-\displaywidth
\fi:
\dimen@\minalignsep\relax
\global\advance\totwidth@\@tempcntb\dimen@
\if_dim:w \totwidth@>\displaywidth
\global\MH_let:NwN\displaywidth@\totwidth@
\else:
\global\MH_let:NwN\displaywidth@\displaywidth
\fi:
\endgroup
}
\def\EQ_multline_labelhack:n #1{%
\begingroup\measuring@false\label@in@display{#1}\endgroup}
\def\EQ_multline_labelhack_opt:nw #1[#2]{%
\begingroup\measuring@false\label@in@display{#1}[#2]\endgroup}
\def\multline@#1{%
\Let@
\@display@init{\global\advance\row@\@ne \global\dspbrk@lvl\m@ne}%
\chardef\dspbrk@context\z@
\restore@math@cr
\MH_let:NwN\tag\tag@in@align
\global\tag@false \global\MH_let:NwN\raise@tag\default_raisetag:
\mmeasure@{#1}%
\MH_let:NwN\tag\gobble@tag
\MH_let:NwN\label\MT_gobblelabel:w
\tabskip \if@fleqn \@mathmargin \else: \z@skip \fi:
\totwidth@\displaywidth
\if@fleqn
\advance\totwidth@-\@mathmargin
\fi:
\halign\bgroup
\hbox to\totwidth@{%
\if@fleqn
\hskip \@centering \relax
\else:
\hfil
\fi:
\strut@
$\m@th\displaystyle{}##\endmultline@math%$
\hfil
}%
\crcr
\if@fleqn
\hskip-\@mathmargin
\def\multline@indent{\hskip\@mathmargin}% put it back
\else:
\hfilneg
\def\multline@indent{\hskip\multlinegap}%
\fi:
\iftagsleft@
\iftag@
\begingroup
\ifshifttag@
\rlap{\vbox{%
\normalbaselines
\hbox{%
\strut@
\make@display@tag
}%
\vbox to\lineht@{}%
\raise@tag
}}%
\multline@indent
\else:
\setbox\z@\hbox{\make@display@tag}%
\dimen@\@mathmargin \advance\dimen@-\wd\z@
\if_dim:w \dimen@<\multlinetaggap
\dimen@\multlinetaggap
\fi:
\box\z@ \hskip\dimen@\relax
\fi:
\endgroup
\else:
\multline@indent
\fi:
\else:
\multline@indent
\fi:
#1%
}
\def\mmeasure@#1{%
\begingroup
\measuring@true
\def\label##1{%
\@ifnextchar[
{\EQ_multline_labelhack_opt:nw {##1}}
{\EQ_multline_labelhack:n {##1}}
}
\def\math@cr@@@{\cr}%
\MH_let:NwN\shoveleft\@iden \MH_let:NwN\shoveright\@iden
\savecounters@
\global\row@\z@
\setbox\@ne\vbox{%
\global\MH_let:NwN\df@tag\@empty
\halign{%
\setboxz@h{\@lign$\m@th\displaystyle{}##$}%
\iftagsleft@
\if_num:w \row@=\@ne
\global\totwidth@\wdz@
\global\lineht@\ht\z@
\fi:
\else:
\global\totwidth@\wdz@
\global\lineht@\dp\z@
\fi:
\crcr
#1%
\crcr
}%
}%
\if_meaning:NN
\df@tag\@empty
\else:
\global\tag@true
\fi:
\if@eqnsw\global\tag@true\fi:
\iftag@
\setboxz@h{%
\if@eqnsw
\stepcounter{equation}%
\tagform@\theequation
\else:
\df@tag
\fi:
}%
\global\tagwidth@\wdz@
\dimen@\totwidth@
\advance\dimen@\tagwidth@
\advance\dimen@\multlinetaggap
\iftagsleft@\else:
\if@fleqn
\advance\dimen@\@mathmargin
\fi:
\fi:
\if_dim:w \dimen@>\displaywidth
\global\shifttag@true
\else:
\global\shifttag@false
\fi:
\fi:
\restorecounters@
\endgroup
}
\newlength\mintagvsep
\mintagvsep5pt
\def\EQ_only_endmark:{%
\MH_set_boolean_T:n {show_manual_tags}
\global\tag@true
\iftagsleft@
\gdef\df@tag{%
\hbox to \displaywidth{%
\hss
\raisebox{-\normallineskip
-\depthof{\EQ_outerbox:{}}
-\heightof{\EQ_outerbox:{}}
-\dp\EQ_mathdisplay_box
-\ht\EQ_mathdisplay_box}
[0pt][0pt]{\PotEndMark{\maketag@@@}}}}
\else:
\gdef\df@tag{%
\raisebox{-\dp\EQ_mathdisplay_box
-\depthof{\EQ_outerbox:{}}}
{\PotEndMark{\maketag@@@}}}%
\fi:}
\def\EQ_tag_plus_endmark:{%
\iftagsleft@
\gdef\maketag@@@##1{%
\hfuzz\displaywidth
\makebox[\widthof{##1}][l]{%
\hbox to \displaywidth{\m@th\normalfont##1\hss
\raisebox{-\dp\EQ_mathdisplay_box
-\depthof{\EQ_outerbox:{}}}
{\PotEndMark{\hss}}}}}%
\else:
\gdef\maketag@@@##1{%
\hbox{\m@th\normalfont##1\llap{\hss\PotEndMark{%
\settoheight{\@tempdima}{\@nameuse{\InTheoType Symbol}}%
\MH_addtolength:dn \@tempdima
{\g_EQ_bottomtag_depth_dim+\mintagvsep}
\setlength{\@tempdimb}
{\g_EQ_bottomrow_depth_dim+\depthof{\EQ_outerbox:{}}
+\depthof{\EQ_innerbox:{}}}
\if_dim:w \@tempdima>\@tempdimb
\MH_setlength:dn \@tempdima{-\dp\EQ_mathdisplay_box
-\@tempdima+\g_EQ_bottomrow_depth_dim}
\addtolength{\@tempdima}{\depthof{\EQ_innerbox:{}}}%
\def\EQ_next:{\raisebox{\@tempdima}}%
\else:
\def\EQ_next:{
\raisebox{-\dp\EQ_mathdisplay_box
-\depthof{\EQ_outerbox:{}}}}%
\fi:\EQ_next:}}}}%
\fi:}
\MH_let:NwN \MT_nonumber: \nonumber
\def\g_EQ_latest_nonzerodepth_row_fint{\z@}
\renewcommand*\nonumber{
\@tempcnta=\row@
\if_num:w \l_EQ_equationtype_int=\thr@@
\advance\@tempcnta\m@ne
\else:
\if_num:w \l_EQ_equationtype_int=4\relax
\advance\@tempcnta\m@ne
\fi:
\fi:
\if_num:w \g_EQ_latest_nonzerodepth_row_fint=\@tempcnta
\else:
\global\g_EQ_bottomtag_depth_dim=-\baselineskip
\fi:
\MT_nonumber:
}
\endinput
%%
%% End of file `empheq.sty'.