Минимальный пример noweb с перекрестными ссылками - PullRequest
5 голосов
/ 27 октября 2009

Я пытаюсь найти хороший инструмент для грамотного программирования. Скажем так, это нелегкое решение. (Общие являются слишком общими, а конкретные являются слишком конкретными :))

Среди прочего, у меня есть noweb, но у меня проблемы с получением результата, как я и ожидал. Страница noweb в википедии содержит минимальный пример, который правильно собирается с

noweave -index -latex hello.noweb > hello.tex && pdflatex hello && pdflatex hello

но в конце каждого фрагмента нет перекрестных ссылок. Например, CWEB имеет указатели, такие как «Этот код используется в разделе 12». и «Смотрите также разделы 5 и 7». Эта функция просто отсутствует в noweb или мне не хватает шага в компиляции?

Ответы [ 2 ]

4 голосов
/ 25 апреля 2010

Эта функция просто отсутствует в noweb или мне не хватает шага в компиляции?

Ни то, ни другое: noweb использует гораздо более тонкие маркеры, чем вы привыкли видеть в CWEB. В случае примера из Википедии 3-й фрагмент (1c) появляется в фрагментах 1a и 1b. Эта информация сведена в единый «1», который появляется в скобках справа от определения.

Чтобы получить длинные перекрестные ссылки в стиле CWEB, используйте

\noweboptions{longxref}
1 голос
/ 11 декабря 2009

Вы должны получить, для этого примера WP, ссылку на лицензионный раздел от каждого из двух блоков в разделе Hello World. Вы не получите никаких списков фрагментов или идентификаторов в конце, если не расскажете о них латексу.

Чтобы получить список веб-чанков, попробуйте поместить \nowebchunks ближе к концу документа (т.е. после появления последнего чанка) и добавьте переключатель -x к вызову noweb.

Чтобы получить список идентификаторов, попробуйте поместить \nowebindex в аналогичное место.

...