3

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?

Tyilo
  • 1,545
  • 13
  • 25

2 Answers2

2

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

ybeltukov
  • 43,673
  • 5
  • 108
  • 212
2

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"

ssch
  • 16,590
  • 2
  • 53
  • 88