Re: Trying for better partials notation
- To: mathgroup at smc.vnet.net
- Subject: [mg18204] Re: Trying for better partials notation
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Mon, 21 Jun 1999 22:50:44 -0400
- Organization: Universitaet Leipzig
- References: <7khp2p$qub@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Hi Patrick, try the attached package. Regards Jens Patrick Reany wrote: > > I'm trying to get partials to look better in version 3. I've tried all > kinds of tricks, including using the Notation package to do this, but to > no avail so far. > > I want a form that currently displays as > > h^(0,1) [u,x] to display as \partial_x h[u,x] > > where \partial is the del symbol and "_x" means subscript x. > > One thing I tried was > > h^(a_) [b_] := \partial_a.b h[b] > > Matching this to the previous example was to give > > a.b = {0,1}.{u,x} = x > > Thanks > > Patrick filename="FormatPDiff.m" BeginPackage["FormatPDiff`"] FormatPDiff::usage="FormatPDiff.m defines the format for traditional partial derivatives." Begin["`Private`"] protected=Unprotect[Derivative] MakeBoxes[Derivative[dorder__][f_][args__Symbol] /; Length[{args}]>1, form_:StandardForm]:= Module[{sm,num,den,arglst,lbr,rbr}, Switch[form, TraditionalForm, lbr="(";rbr=")", StandardForm, lbr="[";rbr="]", _,lbr="[";rbr="]" ]; sm=Plus @@ {dorder}; If[sm>1, num=RowBox[{SuperscriptBox["\[PartialD]",sm],MakeBoxes[f,form]}], num=RowBox[{"\[PartialD]",MakeBoxes[f,form]}] ]; den={"\[PartialD]",SuperscriptBox[#[[2]],#[[1]]] }& /@ Transpose[{{dorder},MakeBoxes[#,form] & /@ {args}}]; den=Select[den,MatchQ[#,{_,SuperscriptBox[_,n_ /; n>0]}] &] //. SuperscriptBox[a_,1] :> a; den=RowBox[Flatten[den]]; arglst=Drop[ Flatten[ Transpose[ {#,Table[",",{i,Length[#]}]} ]& [{args}]], -1 ]; RowBox[ {FractionBox[num,den],RowBox[{lbr,Sequence @@ arglst,rbr}]} ] ] Format[Derivative[dorder__][f_][args__Symbol] /; Length[{args}]>1,TeXForm]:= MakeBoxes[Derivative[dorder][f][args],TraditionalForm] Protect[Evaluate[protected]] End[] (* private context *) EndPackage[]