我最近对Norman Ramsey的noweb程序感兴趣,该程序可以用任何编程语言创建literate programs。到目前为止,我已经能够安装noweb,编织到Latex中并缠结wikipedia page上的hello world程序,并玩一些编译傻的hello world程序来调整输出和代码格式。
这是我根据维基百科页面上的代码创建的简单noweb文件的pdf输出。 tex文件是通过终端命令获得的
noweave -index -delay -latex hello.nw > hello.tex
我使用的noweb代码是
\documentclass{article}
\usepackage{noweb}
\usepackage{blindtext}
\input{standard_settings.tex} % contains some of my own latex settings
\title{Hello World}
\author{A.U.Thor}
\begin{document}
\maketitle
\section{Hello world}
@
Today I awoke and decided to write
some code, so I started to write Hello World in \textsf C++.
<<hello.c>>=
/*<<license>>*/
#include <stdio.h>
int main(int argc, char *argv[]) {
<<body>>
return 0;
}
@
\section{License}
Later the same day some lawyer reminded me about licenses.
So, here it is:
<<license>>=
This work is placed in the public domain.
@
\section{Body}
The body of the code. First say hello
<<body>>=
printf("Hello world!\n");
@
Ask how things are.
<<body>>=
printf("How are you\n");
@
Wish them goodbye.
<<body>>=
printf("Goodbye world!\n");
@
\end{document}
但是,乳胶文件不会创建任何索引,包含代码块列表和定义它们的页码的列表。在Knuth的有关文学编程的书中,每个文学程序都有某种索引,其中包含标识符索引和代码块。以下是我的Knuth的 Literate Programming 私人副本的屏幕截图。
我在计算机上阅读了noweb的手册页(online手册页似乎已损坏),我在此处附上了其屏幕截图,但是似乎没有提及如何创建这样的索引。
如何创建它? noweb是否支持此功能?