有没有一种方法可以在Mathematica笔记本中选择一些文本,然后将该选择用括号括起来?
例如,如果我在笔记本中键入以下内容:
1, 2, 3, 4
我希望能够选择所有文本,然后键入相应的命令来插入匹配的花括号(在Linux上是
alt-}
),它会将所选内容包装在花括号中。{1, 2, 3, 4}
有没有一种方法可以在Mathematica笔记本中选择一些文本,然后将该选择用括号括起来?
例如,如果我在笔记本中键入以下内容:
1, 2, 3, 4
alt-}
),它会将所选内容包装在花括号中。{1, 2, 3, 4}
FrontEndExecute[
FrontEnd`AddMenuCommands["DuplicatePreviousOutput",
{Delimiter, MenuItem["Make List",
FrontEnd`KernelExecute[
nb = SelectedNotebook[];
sel = NotebookRead[nb];
NotebookWrite[nb, Cell[BoxData[RowBox[{"{", sel, "}"}]]]]],
MenuKey["u", Modifiers -> {"Control"}],
System`MenuEvaluator -> Automatic]}]]
在输入并选择了: 1、2、3、4之后
按下Control+U
{1, 2, 3, 4}
附加说明
这里是一个版本,您可以使用它来替代您的MenuSetup修改。它设置为在“{”键按下时激活,并将包装选择或只匹配括号。将其放入MenuSetup中并不那么直接;我会通过使用KernelExecute
从MenuSetup调用外部程序来完成。将下面的代码放入init文件中同样有效。
FrontEndExecute[
FrontEnd`AddMenuCommands[
"DuplicatePreviousOutput", {Delimiter, MenuItem["Make List",
FrontEnd`KernelExecute[
nb = SelectedNotebook[];
sel = NotebookRead[nb];
If[sel === {},
FrontEndExecute[FrontEndToken["InsertMatchingBraces"]],
NotebookWrite[nb, Cell[BoxData[RowBox[{"{", sel, "}"}]]]]]],
MenuKey["{", Modifiers -> {}],
System`MenuEvaluator -> Automatic]}]]
MenuSetup.tr
文件中有MenuItem["Matching {}", "InsertMatchingBraces", MenuKey["{", Modifiers->{}]]
,这样键入'{'就会自动成对。现在我想采用您的答案,使其在没有选择时只打印匹配的括号,但如果有选择,则将其包装。 - Sean Lynch