@@ -29,12 +29,12 @@ Cell metadata specifies if a Notebook cell should be treated specially. *Special
* A cell should end up in the solution Notebook
* … and combinations of these
Since Notebooks are just JSON, I wrote a small parser in Python which suits my needs: `notebook-task-filter.py`.
Since Notebooks are just JSON, I wrote a small parser in Python which suits my needs and added it to PyPI to be installed as a CLI tool: [https://pypi.org/project/notebook-splitter/](https://pypi.org/project/notebook-splitter/)
The script can be launched and is reasonably well documentation. It works by providing *tags* of cells to `keep` and *tags* of cells to `remove`. For instance,
It works by providing *tags* of cells to `keep` and *tags* of cells to `remove`. For instance,
would look into Notebook cells and keep those which are *tagged*`task` or `solution` and remove those which are tagged `nopresentation`. One special tag for removal exists, `all`, which removes everything except what's marked to keep. A tag in the sense used here is a value to a JSON key in the cell's metadata, which is per default `"exercise"` (but can be selected via `--basekey`. Example:
...
...
@@ -60,13 +60,15 @@ If you think this script is useful and want to collaborate on it, let me know an
Via `jupyter nbconvert --to slides`, Jupyter Notebooks can be converted to HTML-based slideshows using [reveal.js](https://revealjs.com/). For each cell, one can select in the *Cell Inspector* if the cell should be a `Slide`, `Sub-Slide`, or a `Fragment`.
This works reasonably well, but to add the Jülich design to the reveal.js HTML some more steps are needed. While they are used here (see `Makefile`), please refer to Jan's repository regarding the [reveal.js Jülich Theme](https://gitlab.version.fz-juelich.de/JanMeinke/revealjstheme-juelich).
This works reasonably well, but to add the Jülich design to the reveal.js HTML some more steps are needed. Those steps are partly implemented in Jan's repository regarding the [reveal.js Jülich Theme](https://gitlab.version.fz-juelich.de/JanMeinke/revealjstheme-juelich), which is loaded as a sub-module, and an additional step to make it work as sub-module here. All is done in the `Makefile`.
A PDF version of the slides is generated with [`decktape`](https://github.com/astefanutti/decktape), a NPM package which uses a headless Chromium instance to generate the PDF pages. It's slow and doesn't look 100 % like the presented slides, but it's the best I could find.
### Gitlab Pages
A Gitlab Shared Runner is used to serve material to the public web page of the tutorial. The static `index.html` is to be found its own (orphan) branch at `pages`. The files are copied from the repository to the public web page as indicated in the CI configuration file `.gitlab-ci.yml`.
A Gitlab Shared Runner is used to serve material to the public web page of the tutorial. The static `index.html` is to be found in its own (orphan) branch at `pages`. The files are copied from the repository to the public web page as indicated in the CI configuration file `.gitlab-ci.yml`.
Ideally, I'd only check in the `--master.ipynb` Notebook and let the CI create all other material. But there's so many wild dependencies (NPM!!1), I'd rather do it myself.
Because of the sub-module dependencies, the slides are also provided here as a _static_ slide bundle, copied over to the Pages index in the runner.