8

The solution to this question on how to get latex code for a text cell (which Mathematica doesn't do correctly) was formulated as a palette but I need it as a keyboard shortcut.

How can I add an item to DefaultKeytranslations.tr that executes this solution's code? And in general, how does one construct a key command that executes arbitrary code, not just front-end packets and tokens?

M.R.
  • 31,425
  • 8
  • 90
  • 281
  • Did you see this http://mathematica.stackexchange.com/a/13992/29 ? Should work similarly for DefaultKeyTranslations.tr – Rolf Mertig Nov 30 '12 at 14:30

1 Answers1

7

Think I figured it out: you can't use special characters like _ or ~~ in DefaultKeyTranslations.tr, everything has to be full-form.

    Item[KeyEvent["y", Modifiers -> {Control}], 
        FrontEndExecute @ Module[{nb, t},
            nb = NotebookCreate[Visible -> False];
            t = ExportString[NotebookRead[SelectedNotebook[]], "LaTeX"];
            t = StringTrim[StringReplace[t, 
                StringExpression[BlankSequence[], "\\begin{document}", 
              Pattern[txt, BlankSequence[]], "\\end{document}", BlankNullSequence[]] :> txt]];
            NotebookWrite[nb, Cell[t, "Text"]];
            SelectionMove[nb, All, Notebook];
            FrontEndTokenExecute[nb, "Copy"];
            NotebookClose[nb];
        ],
        MenuEvaluator -> Automatic 
    ],
M.R.
  • 31,425
  • 8
  • 90
  • 281