То что Вы ищите это 2 разных решения: пагинация + ленивая загрузка.
Поиск знает кучу готовых скриптов:
js plugin paginationjs plugin lazyloadИ ещё момент. Каждый том содержит много html-тегов (жирный текст, курсив и т.д.). Как правильнее реализовать механизм "закрывания" тегов? Ведь тег может быть в теге. Нужно учесть глубину вложения тегов. И для каждого прописать закрывающий тег...
Не надо закрывать, надо просто не резать теги. Отсчитали 1000 символов, проверили, сколько не закрыто, дождались закрытия, отсекли. На деле механизм не простой, куча нюансов, так что проще взять готовое.