Минимальный пример noweb с перекрестными ссылками

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

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

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

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


person Will Robertson    schedule 27.10.2009    source источник


Ответы (2)


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

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

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

\noweboptions{longxref}
person Norman Ramsey    schedule 25.04.2010
comment
Спасибо за помощь, Норман. Правильно ли я понимаю, что рабочий процесс здесь заключается в запуске noweave -x -n -latex hello.nw > hello.tex исходного кода, а затем \input результирующего файла в документе драйвера, содержащем соответствующие \noweboptions и вызовы? - person Will Robertson; 29.04.2010
comment
Ага, или используйте опцию -delay. Ладно, теперь все идет очень хорошо. Спасибо за отличный инструмент! - person Will Robertson; 29.04.2010
comment
@Will: У тебя есть идея. Ваш рабочий процесс зависит от того, используете ли вы один документ как один исходный файл или один документ состоит из множества исходных файлов. - person Norman Ramsey; 30.04.2010

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

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

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

person Charles Stewart    schedule 11.12.2009