Adding pre_get_posts
is too late if subscribed in a page template and your template is empty so that’s the reason nothing it showing.
Move your pre_get_posts
out to your functions.php
so it has a chance to run. Also consider using template_include
and specifying using book template another way that you can check for in that function.