41

我一直在尝试用 Python 进行文学编程的各种方法。我喜欢noweb,但我有两个主要问题:首先,很难在 Windows 上构建,我花了大约一半的开发时间;其次,它要求我缩进每一块代码,就像它在最终程序中一样——我不一定知道我什么时候写的。我不想用 Leo,因为我对 Emacs 很执着。

有没有一个好的读写编程工具:

  1. 在 Windows 上运行
  2. 允许我在使用时设置块的缩进,而不是在写入时
  3. 仍然让我在 Emacs 中工作

谢谢!


更正:noweb 确实允许我稍后缩进 --- 我误读了我在上面找到的论文。

默认情况下,notangle在扩展块时保留空格并保持缩进。因此,它可以与 Miranda 和 Haskell 等语言一起使用,其中缩进很重要

这让我只剩下“在 Windows 上运行”的问题。

4

7 回答 7

14

我已经编写了 Pweave http://mpastell.com/pweave,它旨在生成动态报告并使用 noweb 语法。它是一个纯 Python 脚本,因此它也可以在 Windows 上运行。它不能解决你的缩进问题,但也许你可以修改它,代码真的很简单。

于 2010-05-22T06:01:40.837 回答
9

社区中事实上的标准是 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

于 2014-03-02T18:38:13.153 回答
7

我这样做了:

http://sourceforge.net/projects/pywebtool/

您可以获得任意数量的网络/编织产品,这些产品将帮助您一举构建文档和代码。

您可以 - 很容易地 - 编写自己的。从 RST 源代码中提取 Python 代码块并进行组装并不是什么火箭科学。实际上,我建议您编写自己的 Docutils 指令来从 RST 源文档中组装 Python 代码。

您通过 docutils rst2html(或 Sphinx)运行 RST 以生成最终的 HTML 报告。

您在同一 RST 源上运行自己的实用程序来提取 Python 代码块并生成最终模块。

于 2009-08-12T20:39:55.273 回答
7

你可以使用 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():
  <<c>>
  return abc

print(x())
#+end_src

您还可以使用标题的属性来提供 noweb-ref。然后它甚至可以自动将多个源块连接到一个 noweb 引用中。

添加:results output#+begin_src第二个块的行以查看当您点击该块时该块下的打印结果C-c C-c

于 2012-06-22T11:27:27.813 回答
3

您可能会发现noweb 3更容易在 Windows 上构建。它被设计为比标准 noweb 更便携。

于 2010-04-25T20:02:16.497 回答
0

另请参阅我的最后一个 LP 工具:http ://code.google.com/p/nano-lp 。它不需要特殊的输入格式,支持 Markdown/MultiMarkdown、reStructuredText、OpenOffice/LibreOffice、Creole、TeX/LaTeX 并具有超轻量级和简洁的语法 - 不再有神秘的识字程序。

于 2013-01-15T15:46:49.663 回答
0

发现这个工具很有用:https ://github.com/bslatkin/pyliterate

于 2017-04-24T22:40:17.950 回答