NOWEB:如何在Latex PDF文件中创建所有代码块的索引

时间:2018-11-24 00:28:42

标签: literate-programming noweb

我最近对Norman Ramsey的noweb程序感兴趣,该程序可以用任何编程语言创建literate programs。到目前为止,我已经能够安装noweb,编织到Latex中并缠结wikipedia page上的hello world程序,并玩一些编译傻的hello world程序来调整输出和代码格式。

这是我根据维基百科页面上的代码创建的简单noweb文件的pdf输出。 tex文件是通过终端命令获得的 noweave -index -delay -latex hello.nw > hello.tex

enter image description here

我使用的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 私人副本的屏幕截图。

enter image description here

我在计算机上阅读了noweb的手册页(online手册页似乎已损坏),我在此处附上了其屏幕截图,但是似乎没有提及如何创建这样的索引。

如何创建它? noweb是否支持此功能?

enter image description here

0 个答案:

没有答案