8
$\begingroup$

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?

$\endgroup$
1

1 Answer 1

7
$\begingroup$

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 
    ],
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.