search
Find needle across the book, lazily page by page (a UI can show incremental results). Same matching rules as KiteStructuredText.search: case-insensitive by default, line breaks read as one space, a hyphenated line break joins directly, matches never cross blocks. Each hit carries its chapter/page location in this layout and its global page index. Iterating the sequence prepares the whole book, as pages does.