{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Turn your notebooks into slideshows" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "" } }, "source": [ "Press `Space` to proceed." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "You can write a regular Jupyter notebook, with the usual mix of markdown and code cells (keep on pressing `Space`)." ] }, { "cell_type": "markdown", "metadata": { "cell_style": "center", "slideshow": { "slide_type": "fragment" } }, "source": [ "In code cells you press `Shift-Enter` as usual to evaluate your code (but for now press `Space` again)." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "cell_style": "center", "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "# this is where you press Shift-Enter\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "plt.ion()\n", "\n", "\"Hello world\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But apart from that, `Space` is your friend!" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "You're in a browser, so remember that you can always use smaller / larger fonts with keyboard shortcuts like `Alt +` and `Alt -` or similar (it could be `Ctrl` instead of `Alt` depending on the platform you are on)." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "cell_style": "split", "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "# of course you can show figures\n", "\n", "def polynom(x):\n", " return 2 * x**2 - 20 * x + 2\n", "\n", "X = np.linspace(-10, 10)\n", "Y = polynom(X)\n", "plt.plot(X, Y);" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "cell_style": "split", "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "# and everything works as usual\n", "\n", "# an animation to illustrate \n", "# translation by variable change\n", "from ipywidgets import interact, FloatSlider\n", "\n", "def parabolic(offset):\n", " X = np.linspace(-10, 10)\n", " Y = polynom(X-offset)\n", " # use same y scale for all offsets\n", " plt.gca().set_ylim([-100, 500])\n", " plt.plot(X, Y);\n", " \n", "interact(parabolic, \n", " offset=FloatSlider(min=-10., max=10.,\n", " step=0.25));" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# The RISE notebook extension" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "All this is achieved through the RISE notebook extension.\n", "\n", "See full documentation at http://rise.readthedocs.io/." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Thanks to reveal.js" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The underlying tool is [reveal.js](https://revealjs.com/), and it supports a lot of cool features." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For example you can organize your show into:\n", "\n", "* slides (left to right)\n", "* subslides (top to bottom)\n", "* fragments (stops inside a slide)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You do not need to worry, just press `Space` to proceed along the main line." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "For example this is a subslide; observe the cursor in the bottom right corner." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you press `Shift-Space` - here or anywhere else - you will go backwards, so here it would be up." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Speaker notes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you now press `t` you should see a second window open, with a presenter view, that shows *Notes* cells - that won't show up in the main slides." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "notes" } }, "source": [ "This is an example of a *Notes* cell." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "" } }, "source": [ "Next, we'll cover how to tag cells as *Slide*, *SubSlide*, *Fragment* or *Notes*." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# How to create slideshows" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Step 1: enable slideshow cell toolbar" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![](slide-toolbar.png)" ] }, { "cell_type": "markdown", "metadata": { "cell_style": "center", "slideshow": { "slide_type": "slide" } }, "source": [ "### Step 2: add appropriate tag to each cell" ] }, { "cell_type": "markdown", "metadata": { "cell_style": "split" }, "source": [ "From the cell toolbar...\n", "\n", "![](toolbar-options.png)" ] }, { "cell_type": "markdown", "metadata": { "cell_style": "split", "slideshow": { "slide_type": "-" } }, "source": [ "or, in command mode, use keyboard shortcuts\n", "\n", "* `shift-i` : toggle slide\n", "* `shift-b` : toggle subslide\n", "* `shift-g` : toggle fragment" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# CSS" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "notes" } }, "source": [ "2 files are loaded without the need for configuring\n", "\n", "* `rise.css` in the current directory\n", "* `README.css` for this notebook because it is called `README.ipynb`\n", "\n", "If that works then the cell below has a large border width and a big south-east border-radius" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "slideshow": { "slide_type": "-" } }, "outputs": [], "source": [ "# sample code cell\n", "message = \"my look is changed by both rise.css and README.css\"" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Publishing on binder" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In order for a binder-hosted notebook to start in slideshow mode, you need to have the following tag set in the notebook metadata:\n", "\n", "```javascript \n", " ...\n", " \"rise\": {\n", " \"autolaunch\": true\n", " }\n", " ...\n", "```" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "You can edit the notebook metadata from the `edit` menu, submenu `edit notebook metadata`.\n", "\n", "Note finally that the `rise` key in this json file used to be named `livereveal`. The latter is still honored, but the former takes precedence, and it is recommended to use only `rise` from now on." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Chalkboard" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As an option, you can turn on the *chalkboard* reveal plugin, that manifests itself with 2 extra buttons in the lower left area, that let you add free drawings on your slides." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This option is turned on, in the notebook metadata again, with:\n", "\n", "```javascript\n", " ...\n", " \"rise\": {\n", " \"enable_chalkboard\": true\n", " }\n", " ...\n", "```" ] } ], "metadata": { "celltoolbar": "Slideshow", "jupytext": { "formats": "ipynb" }, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" }, "rise": { "autolaunch": true, "enable_chalkboard": true } }, "nbformat": 4, "nbformat_minor": 2 }