I’m writing a small book. ~160 pages at 6″ x 9″. I want great-looking print editions so PDF output is critical.
I started writing in Markdown, using a few scripts to pre-process for each output format (EPUB ebook, screen PDF, print PDF, HTML) and invoke Pandoc. It worked well at first, but after a year of work my scripts had grown to be complex and annoying. I was running into the edge of what Pandoc is good at. I had issues with table formatting (text mixed up with cell borders), variable handling (had to do my own replacements), special characters (had to strip some of these or the PDF backend would croak), index generation and cross-references (both require confusing extensions). The Pandoc that came with my OS was outdated and I wound up needed several versions. I was starting down a path of customizing outputs with TeX directives and Lua extensions.
I looked around for better typesetting toolchains and came across the source code for the book Pro Git 2. Scott and Ben used Asciidoctor to convert Asciidoc source text to various formatted outputs. Their outputs looked great and there wasn’t much code needed to build them.
To give it a shot, I used Pandoc to convert my Markdown book source to Asciidoc then used the (tiny) Pro Git 2 build system. Asciidoctor created more and better-looking outputs for my book. I switched to Asciidoc/Asciidoctor. I no longer needed my pre-processing scripts, Asciidoctor did well at everything I mentioned above with mostly default settings. Customization was easy, even in the case where I had to add custom Ruby code. The Asciidoctor community seems healthy and strong.
Pandoc remains awesome for many reasons. I still love it for converting between common formats. I’ve be using it for a long time for Markdown and HTML and I hope that continues. Perhaps it is not the best at generating print-ready PDFs (nor ebooks), though.