Texinfo, как бороться с невозможным следующим / предыдущим?
Я пытаюсь написать документацию в формате Texinfo (я думаю, она должна быть традиционной для Emacs). И это кошмар... Во всяком случае, я мог бы добраться до точки, где источник дает мне меньше ошибок, чем когда я начинал, но ошибки невозможно понять и, следовательно, исправить.
Все ошибки сводятся к "плохим" следующим / предыдущим / верхним узлам. И все они происходят в местах, где не может быть ни "следующего", ни "предыдущего", ни "восходящего" узла. Т.е. последний узел в списке не имеет следующего узла, аналогично, у первого не может быть предыдущего, а у верхнего уровня не может быть "вверх". Узел. Вот точные сообщения, которые я получаю:
./i-iterate/info/i-iterate.texi:385: Следующее поле узла `точка-продукт | соединение | отличное 'не указано (возможно, неправильное разбиение?).
./i-iterate/info/i-iterate.texi:392: этот узел (возврат) имеет плохой пред.
./i-iterate/info/i-iterate.texi:199: Следующее поле узла "изначально" не указано (возможно, неправильное разбиение?).
./i-iterate/info/i-iterate.texi:120: этот узел (для) имеет плохой пред.
./i-iterate/info/i-iterate.texi:29: Следующее поле узла `Top'не указано (возможно, неправильное разбиение?).
./i-iterate/info/i-iterate.texi:120: этот узел (для) имеет плохой пред.
Моя структура текстовых файлов выглядит следующим образом:
- Top
|- menu-0
| |- menu-2
|- menu-1
<list of nodes>
Т.е. узлы упоминаются в menu-2
должен иметь свой верхний узел в menu-0
, а также Top
является верхним узлом для узлов в menu-0
а также menu-1
,
for
узел является первым узлом в menu-0
, return
узел является первым узлом в menu-1
, dot-product|join|distinct
последний узел в menu-2
, initially
последний узел menu-0
,
Верхний узел не может иметь предыдущих / следующих / верхних узлов... по понятным причинам.
По запросу нарушающие узлы:
@node for, with, , Top
@node return, collect, , Top
@node dot-product|join|distinct, , permutations, for
@node initially, , finally, Top
Еще немного информации. Я мог бы на самом деле "исправить", указав return
узел в качестве следующего узла initially
а также initially
как предыдущий узел return
, Но это нежелательный эффект, поскольку они принадлежат разным наборам узлов.
Кроме того, вот так выглядит все меню:
@menu
* for:: A multi-purpose driver for doing variety of things.
* with:: A driver for variable declaration.
* generate:: A general purpose generator driver.
* repeat:: A simple driver for performing iteration N number of itmes.
* finally:: A driver that runs when the iteration finishes normally.
* initially:: A driver that runs before any code in the iteration.
@end menu
@strong{Keywords}
@menu
* return:: Returns the control flow to the form outside the loop.
* collect:: Generates a list with the cells being the experssion given.
* hash:: Generates a hash-table with the provided keys and values.
* skip:: Skips the execution of the rest of the loop body.
* previous:: Gives the value of the variable from the previous iteration.
* next:: Gives the value of the variable from the next iteration.
* output:: Prints the variable to the dedicated stream.
* insert:: Generates a vector and inserts elements into it.
* minimize:: Finds the minimum value of the variable.
* maximize:: Finds the maximum value of the variable.
* count:: Counts the number ot times this expression was executed.
* sum:: Sums the values of this variable.
* multiply:: Multiplies the values of this variable.
* reduce:: General purpose accumulation handler.
@end menu
@node for, with, , Top
@chapter Multi-purpose driver
... description of what for node is ...
@strong{For continuations}
@menu
* in|on:: Iterates over lists.
* upfrom|from|downfrom:: Iterates numberically.
* across|reverse|binary:: Iterates over arrays.
* depth-first|breadth-first:: Iterates over trees.
* keys|values|pairs:: Iterates over hash-tables.
* random:: Produces unique random each iteration.
* chars|words|lines:: Iterates over entities in buffer.
* permutations:: Generates permutation of an array.
* dot-product|join|distinct:: Iterates over sets.
@end menu
1 ответ
Просто используйте @node for
а также @node return
без лишних аргументов. Затем Texinfo автоматически определит ссылки назад / вперед / вверх на основе @chapter
и другие команды секционирования.