新功能说明

想法来源

之前有大佬开发了mma的vscode的notebook插件,当时我就感觉我这个在vscode中使用mma的方法被替代了,不过在群友的启发下,我发现我的思路还是与新插件有所不同的,还是有价值的.

新插件介绍

直接搜索wolfram就能找到那个新插件,具体来讲,其将mma与vscode的notebook API结合起来了,实现了从代码输入到结果数据的整个流程,具体的,有自动补全,函数提示,内核管理(从这些点上讲,其比官方开发的插件要好,官方的插件多了语法分析,少了内核管理)

不同之处

我整个思路与新插件相比,还是比较简陋的,但是结构简单,因此可以整活.

具体整的活概括出来就是"缝合",讲markdown,latex,mma(或者python)结合起来,实现可计算的(指方便的运行代码),内容高复用(指一份文档当成markdown,latex,mma格式使用),并赋予使用者极大自由

新功能简单介绍

在linux系统下,新建一个空文件,软连接生成多个新的不同后缀的链接,.md结尾可激活markdown插件,.tex激活latex插件,.wl激活mma插件.通过这些插件完成文档内容后,在利用自定义的脚本转化成严格的latex格式或者markdown格式,实现导出

优势

用markdown语法写latex的内容,实现实时预览的latex(图片预览,公式预览),如果markdown插件无法实现,或者不方便,则使用latex插件,如果中间需要计算或者执行代码,则利用mma插件.

如何实现可计算

显然,想要利用mma插件计算,新的mma-notebook插件是无法实现的,因为其有专有文本格式.wlnb,其内容组织方式是面向程序的,不是面向人类的,而我原先的方法则是面向人类的,利用的是非常简单的标记.

举个例子

>```mathematica
mma code...
>```

通过上面的格式在markdown插入code,将```作为codeblock插件的分割符,shift+enter执行代码,当然,在markdown中写mma代码是很难受的,所以可以软连接到.wl文件上写mma代码,这样可以实现自动补全,语法高亮(这两个功能可以利用新的mma-notebook插件实现,比其他插件好)

上面的本质是灵活运用插件功能,插件本身没什么变化,接下来介绍mdmma插件的新功能:

即将计算结果直接输出到计算文档中,而不是搞一个新的文件,展示计算结果

大概可以实现:

wolfram
<<"mdmma/mdmma.wl"
mdnew["tmp"]
mdclear[]
mdi["1","tmpdoc.wl"]
Plot[Sin[x],{x,-10,10}]

mdo[1,"begin"]

Out[16]=

mdo[1,"end"]

mdi["2","tmpdoc.wl"]
Range[10]

mdo[2,"begin"]

Out[38]={1,2,3,4,5,6,7,8,9,10}

mdo[2,"end"]

mdi[]
!cp tmp/tmpdoc.wl.md tmpdoc.wl

目前新功能还在开发,有什么想法可以交流

gif录制示例

以后有空再说