# Simpler way to type Derivative[1, 0][u][0, x]

Though not unbearable, I always feel a little nervous when typing partial derivatives at a specified place e.g. $u^{(1,0)}(0,x)$, which happens a lot when setting initial/boundary conditions for PDEs. As far as I know, people usually turn to the following 2 ways to obtain the partial derivative:

(* 1 *)
Derivative[1, 0][u][0, x]
(* 2 *)
D[u[t, x], t] /. t -> 0


Both are tedious in my view. Is there a better way to input it? Create an auxiliary function? Shortcut? Template?

I've thought out 2 auxiliary functions.

A possible improvement for the Derivative approach:

d /: u_^d[a__][b__] := Derivative[a][u][b]


Then $u^{(1,0)}(0,x)$ can be obtained by

u^d[1, 0][0, x]


But I'm not sure if typing Shift+6 is simpler than typing [+]

A possible improvement for the D approach:

d2[u_, y__] :=
Module[{pos = Position[{y}, _Equal]},
D[u, Sequence @@ MapAt[First, {y}, pos]] /. Rule @@@ Extract[{y}, pos]]


Then $u^{(1,0)}(0,x)$ can be obtained by

d2[u[t, x], t == 0]


Notice the syntax of d2 is quite similar to D so you can do something like the following:

d2[u[t, y, x], t == 0, x, {t, 2}, x == 1, x]

Derivative[3, 0, 3][u][0, y, 1]


If you do this often why not create a shortcut or template as you mentioned in the question? This has the advantage of formatting directly without having to use Evaluate in Place etc, or introducing a custom notation. Example:

Derivative[Placeholder[], Placeholder[]][Placeholder[]] //
PasteButton // CreatePalette


Makes:

If preferred a keyboard shortcut can be added to KeyEventsTranslation.tr or a menu item to MenuSetup.tr.

• Note: you can enter additional arguments within the parentheses, e.g.:

(* Derivative[1,4,3,2][foo][bar,baz] *)

• Thanks for showing the usage of CreatePalette etc. (I'm really unfamiliar with these stuff!) One disadvantage of template in my view, is that I can't move out of it in a easy way. (If I use Tab, the cursor just… loops! ) – xzczd May 9 '16 at 9:33
• @xzczd Would Derivative[Placeholder[], Placeholder[]][Placeholder[]][Placeholder[], Placeholder[]] // PasteButton // CreatePalette suit you better? Or use right cursor key or End? – Mr.Wizard May 9 '16 at 9:35
• Personally I feel right cursor key and End aren't quite convenient since they're a little... far away from my finger. Anyway, your new added example is better, now I just need to type right cursor key only once :) – xzczd May 9 '16 at 9:44
• @xzczd Please try Ctrl + Space – Mr.Wizard May 9 '16 at 10:19
• Ctrl+Space is even more troublesome… see this. But just noticed Rojo has mentioned the Ctrl+Tab shortcut in a comment under that post, and it seems to be a good choice. – xzczd May 9 '16 at 11:01