Wolfram mathematica 粘贴一个代码,以便';是它';s被分成不同的输入单元
我经常将Mathematica代码从网站(如SO)复制到笔记本上。代码通常粘贴为单个输入单元格。我正在寻找一种简单的方法,将其粘贴为多个输入单元格,以便于逐步评估 比如说,Wolfram mathematica 粘贴一个代码,以便';是它';s被分成不同的输入单元,wolfram-mathematica,cells,mathematica-frontend,Wolfram Mathematica,Cells,Mathematica Frontend,我经常将Mathematica代码从网站(如SO)复制到笔记本上。代码通常粘贴为单个输入单元格。我正在寻找一种简单的方法,将其粘贴为多个输入单元格,以便于逐步评估 比如说, a = 2; f[x_] := x^a Plot[f[x], {x,0,2}] 理想情况下将粘贴为两个输入单元格。手动格式(即原始换行符)最好也应保留(默认粘贴时不是这种情况) 通常,如果选择所有输入单元格(ALT单击),将其复制到文本编辑器中,然后将生成的文本复制回笔记本,则应获得与复制的原始单元格近似的等效值。这是一
a = 2;
f[x_] := x^a
Plot[f[x], {x,0,2}]
理想情况下将粘贴为两个输入单元格。手动格式(即原始换行符)最好也应保留(默认粘贴时不是这种情况)
通常,如果选择所有输入单元格(ALT单击),将其复制到文本编辑器中,然后将生成的文本复制回笔记本,则应获得与复制的原始单元格近似的等效值。这是一个简单的实现(我也希望进行代码审查,我不擅长前端编程): 它在空行处打断单元格。为此,我们需要首先解析表达式(如果一个空行出现在长<代码>模块中的中间位置)。但是单是解析就会引起一些问题 此实施中的问题:
- 它删除注释
- 它不能处理错误的输入
- 它不保留格式(换行)
- 我肯定还有其他一些事情会出错
- 或。。。。您只需按Ctrl+Shift+D键,即可将单个单元格拆分为两个单独的单元格。有时,将多个操作分组到一个单元(或者不首先拆分它们)是有利的。要撤消这样的拆分,请选择两个单元格(如果您愿意,可以选择两个以上),然后单击Ctrl+Shift+M将它们合并为一个单元格。现在我们需要一个可以提取笔记本并生成SO post的工具,交错输入和输出单元格,包括图形和注释输出单元格…@belisarius一个好的开始应该是imgur上传程序。imgur[g]应该以适当的宽度将参数(到PNG)光栅化为SO,将其上载到imgur,并返回准备粘贴的标记:
[mma](http://i.imgur.com/ZENa4.jpg)
这应该是一个很好的起点,但我在改编上失败了:编辑:我想我会把它变成一部电影question@Szabolcs在这种情况下,难怪你问这个问题。那太烦人了+我也不知道那条捷径。我只是和它生活在一起,并认为没有什么可以做的。@Szabolcs是的,这是分割和合并的标准快捷方式。现在我想要的是创建/取消创建初始化单元格的快捷方式。没有标准,阿福。有什么建议吗?@magma Alt+C P I切换初始化的速度非常快。@Gr3gK1+1。谢谢你的建议。我不知道Ctrl+Shift+M。至于单元格->分割单元格
(Ctrl+Shift+D),插入点将单元格一分为二,而文本选择将单元格一分为三:之前的所有内容、文本选择和之后的所有内容。看(我也不知道这件事,直到我读了你的答案后才知道)。
(* This converts a sequence of expressions into boxes *)
Clear[makeManyBoxes]
SetAttributes[makeManyBoxes, HoldAllComplete];
makeManyBoxes[e__] := List@ReleaseHold[MakeBoxes /@ HoldComplete[e]]
(* Split a list at separator *)
split[list_, sep_] :=
DeleteCases[Split[list, #1 =!= sep && #2 =!= sep &], {sep}]
wr[e_] := NotebookWrite[InputNotebook[], Cell[BoxData[e], "Input"]]
CreatePalette@Button["Paste!",
Module[{clipboard},
clipboard = NotebookGet[ClipboardNotebook[]][[1, 1, 1]];
If[StringQ[clipboard],
wr /@
split[ToExpression[clipboard, InputForm, makeManyBoxes], "Null"]
]
]
]