我一直在玩各种用Python编写文字的方法。我喜欢noweb
,但我有两个主要问题:第一,很难在Windows上构建,我花了大约一半的开发时间;第二,它要求我缩进每个代码块,因为它将在最终的程序中 - 我写的时候不一定知道。我不想使用Leo,因为我非常依赖Emacs。
是否有一个好的文字编程工具:
谢谢!
更正:noweb
允许我稍后缩进 - 我误读了我在其上找到的论文。
默认情况下,
notangle
会在扩展块时保留空格并保持缩进。因此,它可以与Miranda和Haskell等语言一起使用,其中缩进很重要
这让我只有“在Windows上运行”的问题。
答案 0 :(得分:12)
我写了Pweave http://mpastell.com/pweave,其目的是生成动态报告并使用noweb语法。它是一个纯python脚本,因此它也可以在Windows上运行。它不能解决你的缩进问题,但也许你可以修改它,代码非常简单。
答案 1 :(得分:8)
社区中的事实标准是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
列出的更多示例答案 2 :(得分:7)
我这样做了:
http://sourceforge.net/projects/pywebtool/
您可以获得任意数量的网络/编织产品,帮助您一举构建文档和代码。
你可以 - 很容易 - 自己编写。将Python代码块从RST源中抽出并组装它并不是火箭科学。实际上,我建议您编写自己的Docutils指令,以便从RST源文档中汇编Python代码。
您通过docutils rst2html(或Sphinx)运行RST以生成最终的HTML报告。
您在同一个RST源上运行自己的实用程序,以提取Python代码块并生成最终模块。
答案 3 :(得分:7)
你可以使用org-mode和babel-tangle。
这很有效,因为你可以给:noweb-ref来源块。
以下是一个最小的示例:Activate 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():
<<c>>
return abc
print(x())
#+end_src
您还可以使用标题属性来提供noweb-ref。然后,它甚至可以自动将多个源块连接成一个noweb引用。
将:results output
添加到第二个块的#+begin_src
行,以便在您点击该块中的C-c C-c
时查看该块下的打印结果。
答案 4 :(得分:3)
您可能会发现noweb 3更容易在Windows上构建。它被设计成比标准的noweb更便携。
答案 5 :(得分:0)
另请参阅我的上一个LP工具:http://code.google.com/p/nano-lp。它不需要特殊的输入格式,支持Markdown / MultiMarkdown,reStructuredText,OpenOffice / LibreOffice,Creole,TeX / LaTeX,并且具有超轻和干净的语法 - 不再是神秘的文字程序。
答案 6 :(得分:0)