Using ctrl/ you can make a fraction. If you have selected something it will appear in the numerator.
Does there exist a shortcut to make the selected text appear in the denominator instead? If not, is it possible to create a shortcut that does this?
Using ctrl/ you can make a fraction. If you have selected something it will appear in the numerator.
Does there exist a shortcut to make the selected text appear in the denominator instead? If not, is it possible to create a shortcut that does this?
Update: Just reverse the output of usual Ctrl+/!
Add the following lines to KeyEventTranslations.tr:
Item[KeyEvent["?", Modifiers -> {Control}],
FrontEndExecute[{
FrontEndTokenExecute["Fraction"],
FrontEndTokenExecute["ExpandSelection"],
NotebookWrite[InputNotebook[], Reverse@NotebookRead@InputNotebook[], Placeholder]
}],
MenuEvaluator -> Automatic
],
and press Ctrl+Shift+/ (? is Shift+/ on my keyboard).
This method is fully compatible with brackets, functions, etc. When nothing is selected the cursor is in the numerator. If you prefer the denominator than use the following
Item[KeyEvent["?", Modifiers -> {Control}],
FrontEndExecute[{
FrontEndTokenExecute["Fraction"],
FrontEndTokenExecute["ExpandSelection"],
NotebookWrite[InputNotebook[], Reverse@NotebookRead@InputNotebook[]],
NotebookFind[InputNotebook[], "\[Placeholder]", Previous, AutoScroll -> False]
}],
MenuEvaluator -> Automatic
],
Previous method:
Item[KeyEvent["?", Modifiers -> {Control}],
FrontEndExecute@Module[{den=NotebookRead@InputNotebook[]},
If[den=={},
SelectionMove[InputNotebook[], All, Expression];
den=NotebookRead@InputNotebook[]];
If[den=={},den="\[Placeholder]"];
NotebookWrite[InputNotebook[],FractionBox["\[Placeholder]",den]];
SelectionMove[InputNotebook[], Previous, Word];
SelectionMove[InputNotebook[], Next, Character];
SelectionMove[InputNotebook[], All, Character]
],
MenuEvaluator -> Automatic
],
MenuEvaluator -> Automatic is important because without it an unevaluated expression is written.
See also: Customizing Mathematica shortcuts
Using same approach as Rolf did here
Putting this in KeyEventTranslations.tr does the job:
Item[KeyEvent["?", Modifiers -> {Control}],
FrontEndExecute@With[
{nb = InputNotebook[]},
If[NotebookRead@nb === {},
SelectionMove[nb, All, Expression];
If[NotebookRead@nb =!= {}, FrontEndTokenExecute["ExpandSelection"]]
];
NotebookApply[
nb,
FractionBox["\[Placeholder]", "\[SelectionPlaceholder]"],
Placeholder]
], MenuEvaluator->Automatic],
Here I used Ctrl+Shift+/ as it for some reason didn't work with Ctrl+\ (I tried with "\\" and "Backslash" perhaps it has another name)
Edit: Took keyboard shortcut from ybeltukov
Edit2: Also "ExpandSelection"
NotebookApply (+1). Do you know how to modify it for cases 2 and 3 in my answer?
– ybeltukov
Oct 04 '13 at 12:24
SelectionMove. I think I'll add a check and only use SelectionMove if den == {}
– ssch
Oct 04 '13 at 12:28
If
– ssch
Oct 04 '13 at 12:49
f[x] work? Currently only ] is selected
– ssch
Oct 04 '13 at 13:03
Placeholderas third argument ofNotebookWrite– ssch Oct 04 '13 at 15:46