Sam, thank you for your comments. I'm glad you like the book. Eric Schulz did an inspiring job, both with his book and presentation. I worked somewhat differently to Eric, largely because my audience is different. In particular, I expect my audience to be familiar with Wolfram Language code (at least to some degree), and the code itself is a major part of the book. As such, I did not need to hide input cells etc. as Eric did. Eric was also much smarter than me when it came to creating writers tools! I confess that I just worked in Mathematica to develop the text, with no special tools. My workflow was as follows:
0) Create rough idea and outline for book.
1) Decide on a topic for a chapter.
2) Assemble references.
3) Write some text.
4) Develop algorithms/code/demonstrations (Manipulate).
5) Consolidate algorithms/code/demonstrations into text (cut and paste).
6) Loop to 2) until satisfied.
7) Top and tail book (add Introduction, TOC and Bibliography).
Obviously, in reality this is a very iterative process, and I would be working on several chapters at once, and reorganising the book as I went along based on logical dependences between the computational geometry algorithms.
Despite the fact that I didn't create any authors tools, it was still a very good experience writing a book using Mathematica as an authoring environment, and I would recommend it to any author. It is easier in many ways than creating iBooks or ePubs. ePub is just a non-starter for interactive books, and even iBooks requires you to "kick-down" into HTML5 for many things. Everything in my book was done directly in Mathematica and the Wolfram Language.
In terms of my own tips for authors:
1) Develop the code/algorithms/demonstrations in separate notebooks, and make sure you have them tested and working before you paste them into the main text.
2) Export to CDF often to check it all works. There are some things (such as importing packages) that work in notebooks, but that don't work in CDFs. It is good to find out about these things sooner rather than later!
3) Use a Literate Modelling style for describing algorithms/code. You can find out more about Literate Modelling here. It is a technique that makes it very easy to describe models/code in a precise way.
4) Be very careful about defining symbols and tidying up the namespace (using Clear) when developing code/algorithms and tests. I know this is just Mathematica best practice, but when your text gets quite large, it becomes very important in order to avoid mysterious errors.
5) Save a new version of the text every time you make a significant change. Mathematica can crash, and it is pain to loose work. Also, you sometimes need to roll back to a previous version in order to fix an error or help with debugging. Obvious - but worth repeating.
6) Don't trust Mathematica CDF Preview! In Mathematica you might expect "File/CDF Preview/CDF Player" to preview the CDF in the current CDF Player. I have just found that it doesn't. For example, a CDF that works fine in Mathematica 10 "File/CDF Preview/CDF Player" doesn't work in the downloaded version of Player, because that is still version 9. So the version of Player in Mathematica and the downloadable version of Player may be out of step.