This looks quite geared towards generating the specific kind of interactive HTML book they show off. I guess that's because it's Sphinx under the hood. Looks useful for a specific kind of task!
Jupyter has a built-in templating system based on Pandoc (nbconvert) which is actually quite powerful. I have used it to generate print-ready documents via LaTeX templates.
For longer documents, one can use Pandoc JSON as an intermediary format, which can be assembled together before being output as LaTeX/PDF. For this one has to add a build tool like Make and not just the nbconvert command.
My biggest issue is that the nbconvert stuff is generally very hard to discover. It has very limited documentation which is further harmed by the considerable churn in the templating system, how they are discovered and how to plug them in to Jupyter lab. I suspect most people try "Export->PDF", see an ugly result with no obvious way to change it and give up. It's unfortunate because it's really a very powerful system under the hood.
Generating a paper or a technical note -- complete with beautiful typeset maths and figures -- from a computational document is really nice. Being able to take some data, generate a plot, calculate some values and put those values into prose such that the prose and the plot and the data are never out of sync is great! To me it's the next step up from having a referencing system so your references and bibliography are never out of sync.
What worked for me is using Python scripts ("filters") that do all required changes on the Pandoc JSON. I even ended up writing a pythonic layer on top of that JSON ("pip install panflute") so I wouldn't have to deal with the JSON itself.
We evaluated Jupyter Book against Read the Docs when building our new docs site (https://arcdocs.leeds.ac.uk/), the main reason we favoured Jupyter Book was that its easier to build and test locally and being able to use GitHub actions to build the html without relying on and being at the mercy of another third party service.
Hi, thanks for the link.
I've had a look earlier today but didn't find any "print quality book output" that I can download as a PDF.
Browsing your site, I can "Print to PDF" but that just gives me the webpage.
Is there a way to get the full "offline" book, properly formatted?
Thank you so much !
We use jupyterbook (geographicdata.science/book), and it has seriously simplified our workflow. The project is building useful features very quickly, and is very responsive to feedback & requests. Big props to their team.
At some point last years I was fascinated with the jupyter ecosystem and was looking into something that could help making data analytic apps quick but not so dirty. Jupyter is the data side of thing, but the app side deviates so much from a standard web stack (react or web component) that it leaves much to be desired.
Or is this a more common pattern that is implemented multiple ways?
Is there a simple worklfow to convert Markdown documents to a Hugo or JupyterBook site. I want to build some simple step-wise guides or workshop in this format -- and want to spend most of my time on content and less on the publishing tools and pipeline. Any advise appreciated -Thanks!
Looking into this for a course I'm putting together, but it executes all the notebooks to build the html which is a bit of a deal-breaker when downloading/training large DL models.
How does Jupyter ecosystem compare to traditional content management systems. Do people find it easier to customize with nbconvert? Does it play nicely with other web frameworks like Gatsby?
Unfortunately it seems to be converting to html and then "printing" to PDF so it will probably always look a bit janky compared to something that goes via LaTeX instead.
Yes, I used Mathematica to author https://quivergeometry.net, but I had to write the markdown converter, katex generator, rasterization caching etc. myself. Took a while to set up but works quite well now.
Some parts of it are quite flexible, like using Mathematica stylesheets to separate style and content for particular mathematical forms and change them globally to find the most ergonomic thing, with Katex that matches the mathematica (though I have to manually maintain that correspondence).
As shameless self promotion, if you’re interested in writing computational lessons for a course, check out Pathbird (pathbird.com), a SaaS product for creating guided computational lessons (targeted mostly towards university faculty right now but feel free to reach out if you’re interested).
We took a lot of inspiration from Jupyter Book (and use Jupyter kernels under the hood), so nothing but respect for all things Jupyter.
Email hn@ycombinator.com if you want us to look over a draft (the same offer goes for anyone) - just please realize that we can't necessarily respond quickly; it depends on how brutal the inbox is that week/month.
It’s currently “invite only” for instructors (mostly just to prevent abuse of the computational resources for, eg, crypto mining). If you shoot me a quick email (travis@pathbird.com) I’d be happy to set you up with a course.
You can demo the student experience with code JULIACON2020 as well.
This is interesting. I’ve been tinkering with using Jupyter Notebooks for our somewhat intensive onboarding of new engineers. Is Pathbird solely focused on the education market? Is there pricing info anywhere?
The original version of it was developed while teaching a data science course for non-CS grad students at the University of Michigan so most of our early efforts has been focused on the education market. My co-founder/advisor/UMich-professor has been using it to teach some courses outside UMich as well (namely https://pathbird.com/compml which is a very high quality math-focused DS course), so there's some precedent for it. If you're so inclined, feel free to shoot me an email (travis at pathbird.com) and I'd be happy to discuss things.
Pathbird looks really interesting. I am trying to understand what the main product is. One can design a curriculum and the lesson content is hosted in a Jupyter Notebook? If you were designing a course to teach a language, that language would have to be supported by Jupyter?
It’s not the Jupyter notebook (or lab) frontend, it’s a custom webapp built for learning and specifically around exercise based, guided learning. So a student will go through exercises (mostly multiple choice and code-based “autograded” exercises) to check their understanding and guide them through a lesson.
This style of learning tends to work best with interactive languages (Julia and Python and R at present). Theoretically we could support other languages with Jupyter kernels (including Go and C++, etc) as well. I wonder how well those languages would work in this context considering it’s a bit hard to be “iterative” with those (but consider than a challenge rather than a limitation!).
Feel free to reach out with any questions/comments/concerns and I can answer in more long form!
Jupyter has a built-in templating system based on Pandoc (nbconvert) which is actually quite powerful. I have used it to generate print-ready documents via LaTeX templates.
For longer documents, one can use Pandoc JSON as an intermediary format, which can be assembled together before being output as LaTeX/PDF. For this one has to add a build tool like Make and not just the nbconvert command.
My biggest issue is that the nbconvert stuff is generally very hard to discover. It has very limited documentation which is further harmed by the considerable churn in the templating system, how they are discovered and how to plug them in to Jupyter lab. I suspect most people try "Export->PDF", see an ugly result with no obvious way to change it and give up. It's unfortunate because it's really a very powerful system under the hood.
Generating a paper or a technical note -- complete with beautiful typeset maths and figures -- from a computational document is really nice. Being able to take some data, generate a plot, calculate some values and put those values into prose such that the prose and the plot and the data are never out of sync is great! To me it's the next step up from having a referencing system so your references and bibliography are never out of sync.