My book, Problem Solving with Python was constructed using Jupyter Notebooks. The text was written in markdown cells and the code was written in code cells. Sometimes I used the Classic Notebook interface as my editor and other times I used the Jupyter Lab interface.
The GitHub repo for the book can be found at:
https://github.com/ProfessorKazarinoff/Problem-Solving-with-Python
The GitHub repo contains all the Jupyter notebooks used the write the book. The repo also contains a set of custom conversion scripts and templates which convert the Jupyuter notebooks into .html and .tex files.
The directory structure of the GitHub repo for the book is below:
Problem-Solving-with-Python/
|-- conversion_tools/
|-- notebooks/
|-- LICENSE
|-- notebooks/
|-- pdf/
|-- README.md
|-- website/
The notebooks
directory contains a subdirectory for each chapter of the book:
notebooks/
|-- 00-Preface/
|-- 01-Orientation/
|-- 02-The-Python-REPL/
|-- 03-Data-Types-and-Variables/
|-- 04-Jupyter-Notebooks/
|-- 05-Functions-and-Modules/
|-- 06-Plotting-with-Matplotlib/
|-- 07-If-Else-Try-Except/
|-- 08-Loops/
|-- 09-Matrices-and-Arrays/
|-- 10-Symbolic-Math/
|-- 11-Python-and-External-Hardware/
|-- 12-MicroPython/
|-- 99-Appendix/
|-- figures/
`-- TOC.ipynb
There is a Jupyter notebook for each section of the book within each chapter directory. Each chapter directory contains an images
directory for any images used in the markdown cells of the notebooks.
01-Orientation/
|-- 01.00-Welcome.ipynb
|-- 01.01-Why-Python.ipynb
|-- 01.02-The-Anaconda-Distribution-of-Python.ipynb
|-- 01.03-Installing-Anaconda-on-Windows.ipynb
|-- 01.04-Installing-Anaconda-on-MacOS.ipynb
|-- 01.05-Installing-Anaconda-on-Linux.ipynb
|-- 01.06-Installing-Python-from-Python-dot-org.ipynb
|-- 01.07-Summary.ipynb
|-- 01.08-Review-Questions.ipynb
`-- images/
The hard copy of the book was constructed using LaTeX, nbconvert
and a set of custom scripts and templates. One conversion script combined all of the notebooks into one BIG notebook. The BIG notebook was then converted into LaTeX using nbconvert
and a custom template. Outside of the Python ecosystem, a separate installation of TeXworks compiled the LaTeX .tex file to a .pdf document.