# Make fraction with selection in denominator

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"],
}],
],


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"],
NotebookFind[InputNotebook[], "\[Placeholder]", Previous, AutoScroll -> False]
}],
],


Previous method:

Item[KeyEvent["?", Modifiers -> {Control}],
If[den=={},
SelectionMove[InputNotebook[], All, Expression];
If[den=={},den="\[Placeholder]"];
NotebookWrite[InputNotebook[],FractionBox["\[Placeholder]",den]];
SelectionMove[InputNotebook[], Previous, Word];
SelectionMove[InputNotebook[], Next, Character];
SelectionMove[InputNotebook[], All, Character]
],
],


MenuEvaluator -> Automatic is important because without it an unevaluated expression is written.

-
Seems you were a few seconds quicker :P –  ssch Oct 4 '13 at 11:23
Nice! You could replace the SelectionMove stuff with Placeholder as third argument of NotebookWrite –  ssch Oct 4 '13 at 15:46
If it works perfectly except one thing: When nothing is selected the cursor should be in the denominator. –  Tyilo Oct 7 '13 at 12:40
@Tyilo I added the version with the cursor in the denominator. –  ybeltukov Oct 7 '13 at 13:04
@ybeltukov Thanks! –  Tyilo Oct 7 '13 at 15:53

Using same approach as Rolf did here

Putting this in KeyEventTranslations.tr does the job:

Item[KeyEvent["?", Modifiers -> {Control}],
FrontEndExecute@With[
{nb = InputNotebook[]},
SelectionMove[nb, All, Expression];
];
NotebookApply[
nb,
FractionBox["\[Placeholder]", "\[SelectionPlaceholder]"],
Placeholder]

I enjoy your approach with NotebookApply (+1). Do you know how to modify it for cases 2 and 3 in my answer? –  ybeltukov Oct 4 '13 at 12:24
@ybeltukov No, having trouble with SelectionMove. I think I'll add a check and only use SelectionMove if den == {} –  ssch Oct 4 '13 at 12:28
@ybeltukov Now it works as it should, where did you find out about MenuEvaluator? Without it I couldn't use If –  ssch Oct 4 '13 at 12:49
@ybeltukov Any ideas how to make things like f[x] work? Currently only ] is selected –  ssch Oct 4 '13 at 13:03