Sort entries by a related entry (lastName) and then paginate
If I understand correctly, then it may be better to loop through the books rather than the authors, then group by author. I'm not 100% on this syntax but may send you down a good path...

Set the query

{% set query = craft.entries.section('books').order('author.lastName').all()|group('author.lastName') %}


Loop and divide 

{% paginate query as pageInfo, pageEntries %}

{% for author, books in pageEntries %}
    &lt;h2&gt;{{ author.lastName }}&lt;/h2&gt;
    &lt;ul&gt;
        {% for book in books %}
            &lt;li&gt;{{ book.title }}&lt;/li&gt;
        {% endfor %}
    &lt;/ul&gt;
{% endfor %}

{% if pageInfo.prevUrl %}&lt;a href="{{ pageInfo.prevUrl }}"&gt;Previous Page&lt;/a&gt;{% endif %}
{% if pageInfo.nextUrl %}&lt;a href="{{ pageInfo.nextUrl }}"&gt;Next Page&lt;/a&gt;{% endif %}