我一直在玩各种用Python编写文字的方法.我喜欢noweb
,但我有两个主要问题:首先,很难在Windows上构建,我花费了大约一半的开发时间; 第二,它要求我缩进每个代码块,因为它将在最终的程序中 - 我写的时候不一定知道.我不想使用Leo,因为我非常依赖Emacs.
是否有一个很好的文字编程工具:
在Windows上运行
允许我在使用时设置块的缩进,而不是在写入时
还是让我在Emacs工作
谢谢!
更正:noweb
不会让我以后缩进---我误读了我就可以找到的文件.
默认情况下,
notangle
在扩展块时保留空格并保持缩进.因此,它可以与Miranda和Haskell等语言一起使用,其中缩进很重要
这让我只有"Windows上的运行"问题.
我写过Pweave http://mpastell.com/pweave,它旨在生成动态报告并使用noweb语法.它是一个纯python脚本,因此它也可以在Windows上运行.它不能解决你的缩进问题,但也许你可以修改它,代码非常简单.
社区中事实上的标准是IPython笔记本.
Peter Norvig演示解决旅行商问题的算法的优秀示例:http://nbviewer.ipython.org/url/norvig.com/ipython/TSPv3.ipynb
更多示例列于https://github.com/ipython/ipython/wiki/A-gallery-of-interesting-IPython-Notebooks
我这样做了:
http://sourceforge.net/projects/pywebtool/
您可以获得任意数量的网络/编织产品,这些产品将帮助您一举构建文档和代码.
你可以 - 很容易 - 自己编写.将Python代码块从RST源中抽出并组装它并不是火箭科学.实际上,我建议你编写自己的Docutils指令来汇编来自RST源文档的Python代码.
您通过docutils rst2html(或Sphinx)运行RST以生成最终的HTML报告.
您在相同的RST源上运行自己的实用程序以提取Python代码块并生成最终模块.
你可以使用org-mode和babel-tangle.
这很有效,因为你可以给:noweb-ref来源块.
这是一个最小的例子:激活org-babel-tangle,然后将其放入文件中noweb-test.org
:
#+begin_src python :exports none :noweb-ref c abc = "abc" #+end_src #+begin_src python :noweb yes :tangle noweb-test.py def x(): <> return abc print(x()) #+end_src
您还可以使用标题属性来提供noweb-ref.然后,它甚至可以自动将多个源块连接成一个noweb引用.
添加:results output
到#+begin_src
第二个块的行,以便在按下块时查看该块下的打印结果C-c C-c
.