Я недавно заинтересовался программой noweb Нормана Рэмси для создания грамотных программ на любом языке программирования.До сих пор я был в состоянии установить noweb, вплести в Latex и запутать программу hello world, представленную на странице википедии , и поиграть в небольшие компиляции глупых программ hello world для настройки вывода и форматирования кода.
Вот вывод в формате pdf простого файла noweb, который я создал на основе кода на странице википедии.Текстовый файл был получен с помощью команды терминала 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}
Однако,Латексный файл не создает никакого индекса, содержащего список фрагментов кода и номера страниц, где они определены.В книге Кнута по грамотному программированию каждая грамотная программа имеет своего рода индекс, содержащий индекс идентификаторов вместе с фрагментами кода.Скриншот ниже из моей личной копии Literate Programming от Knuth.
Я читаю страницу руководства noweb на моем компьютере (справочные страницы online кажутся неработающими), скриншот которых я прилагаюздесь, но, кажется, ничего не было упомянуто о том, как создать такой индекс.
Как его создать?Поддерживает ли noweb эту функцию?