diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-12 23:59:08 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-12 23:59:08 +0000 |
commit | d625e47ffd1453f40c42192234fa3ac1c234e835 (patch) | |
tree | 0bf7402a698b8cd9d903a42faec6014447102246 /Master/texmf-dist/tex/latex/mh/empheq.sty | |
parent | d686f7c132a166a69afcf546ef992527fbeca48f (diff) |
mh
git-svn-id: svn://tug.org/texlive/trunk@1090 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/mh/empheq.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/mh/empheq.sty | 985 |
1 files changed, 985 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/mh/empheq.sty b/Master/texmf-dist/tex/latex/mh/empheq.sty new file mode 100644 index 00000000000..94d5f2bf8b9 --- /dev/null +++ b/Master/texmf-dist/tex/latex/mh/empheq.sty @@ -0,0 +1,985 @@ +%% +%% 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'. |