NOWEB: Как создать индекс всех фрагментов кода в латексном PDF-файле - PullRequest
0 голосов
/ 24 ноября 2018

Я недавно заинтересовался программой noweb Нормана Рэмси для создания грамотных программ на любом языке программирования.До сих пор я был в состоянии установить noweb, вплести в Latex и запутать программу hello world, представленную на странице википедии , и поиграть в небольшие компиляции глупых программ hello world для настройки вывода и форматирования кода.

Вот вывод в формате pdf простого файла noweb, который я создал на основе кода на странице википедии.Текстовый файл был получен с помощью команды терминала 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}

Однако,Латексный файл не создает никакого индекса, содержащего список фрагментов кода и номера страниц, где они определены.В книге Кнута по грамотному программированию каждая грамотная программа имеет своего рода индекс, содержащий индекс идентификаторов вместе с фрагментами кода.Скриншот ниже из моей личной копии Literate Programming от Knuth.

enter image description here

Я читаю страницу руководства noweb на моем компьютере (справочные страницы online кажутся неработающими), скриншот которых я прилагаюздесь, но, кажется, ничего не было упомянуто о том, как создать такой индекс.

Как его создать?Поддерживает ли noweb эту функцию?

enter image description here

...