Contenidos

¿Cómo puedo compartir la presentación?

Compartir la presentación suele ser uno de los pasos más importantes y sencillos. Existen muchas opciones: compartir el código en un repositorio, mediante mybinder de manera completamente interactiva, como html estático o como pdf.

Repositorio

No trabajes en local. Siempre es más conveniente ir versionando los archivos mediante git en un repositorio. Ese repositorio puede respaldarse en línea, en un proveedor como github, bitbucket, gitlab o tu u otro de tu preferencia. El proveedor github es una buena opción gratuita que tiene muchas integraciones y complementos.

Asegúrate de tener un archivo requirements.txt que contenga las librerías que se requieren para poder ejecutar las distintas celdas de código de tu presentación. No olvides incluir todo el código, datos e imágenes.

Resulta útil tener un archivo README.md con la descripción del repositorio, y enlaces a las distintas opciones de visulización para el archivo.

En github, para un usuario nombre_usuario en un repo nombre_repo, puedes además crear una página index.html , y de esa manera al activar "Gitub Pages" la página estará accesible en https://nombre_usuario.github.io/nombre_repo/. De manera más general, un archivo en la ruta /ruta_carpetas/nombre_archivo.html se visualizará en https://nombre_usuario.github.io/nombre_repo/ruta_carpetas/nombre_archivo.html.

Yo he diseñado un template con un formato fijo que reutilizo para las distintas presentaciones, y que así se ve para una de mis charlas (Pycon Colombia 2020):

Creé el formato para para emular a linktree, de manera de reutilizarlo con mínimo esfuerzo. Escribí al respecto en este post.

mybinder

Binder es un servicio que permite lanzar un jupyter notebook en el navegador y en la nube, sin consumir recursos de tu computador y de manera completamente gratuita. Resulta práctico para que otras personas pueden ver la presentación de manera interactiva sin tener que instalar nada en su computador, ¡incluso desde un smartphone o tablet!

Para usar mybinder, debes tener tu repositorio en github.

En Binder puedes introducir los distintos parámetros:

  • Usuario github: nombre_usuario
  • Nombre repositorio: nombre_repositorio
  • Nombre de la rama del repositorio: nombre_rama
  • Ruta al archivo: ruta_carpetas
  • Nombre del archivo: nombre_archivo.ipynb
  • En la rama, en el directorio principal, debe existir el archivo requirements.txt

Al acceder a la siguiente página se ejecutará el jupyter notebook, incluyendo la extensión RISE si la colocaste en los requirements.txt:

https://mybinder.org/v2/gh/nombre_usuario/nombre_repositorio/nombre_rama?filepath=ruta_carpetas/nombre_archivo.ipynb

Exporta a html

Para generar un html funcional de las diapositivas, tienes que hacer en el terminal:

jupyter nbconvert --to slides ruta_carpeta/nombre_archivo.ipynb

donde ruta_carpeta/nombre_archivo es, por supuesto, la ruta a tu notebook-presentación.

Se generará un archivo html estático de tu presentación, con el nombre ruta_carpeta/nombre_archivo.slides.html. Esta página web en html puedes visualizarse en el navegador sin mayores dependencias, pero donde no podrás editar o ejecutar las celdas. Si ya realisaste tu presentación, puedes guardarla en el repositorio como un respaldo adicional.

Exporta a pdf

Para generar la presentación en pdf se requieren 3 pasos:

  1. Genera las diapositivas en html, usando nbconvert, para que queden "activas":

    jupyter nbconvert --to slides ruta_carpeta/nombre_archivo.ipynb --post serve

    Se abrirá una página web en el navegador, en la dirección http://127.0.0.1:8000/nombre_archivo.slides.html#/

  2. Edita la ruta, para que sea http://127.0.0.1:8000/nombre_archivo.slides.html?print-pdf. Nota que hay que reemplazar #/ por ?print-pdf. La página mostrará ahora las diapositivas de manera vertical.

  3. Finalmente, guarda la página web como pdf. Puedes jugar con distintas opciones según necesites (sin márgenes, activar imágenes de fondo, etc.)

La documentación oficial para exportar a pdf está acá.

¿Cómo configuro el diseño de RISE?

General

Todas las configuraciones de RISE se realizan editando la metadata del notebook. Para ello, tienes que ir a Edit/Edit notebook metadata y agregar la(s) opcion(es) deseadas.

Metadata

La metadata es un diccionario json con las distintas opciones de todo el notebook. Por defecto, no trae ninguna opción cargada de RISE. Por eso, tenemos que agregar las opciones que se quieren configurar:

"rise": {
             "opcion_1": valor_opcion_1,
                      ...
             "opcion_n": valor_opcion_n,
         }
`

Observación importante:

Cada vez que editas la metadata, es necesario cerrar (apagar) el notebook y volver a abrirlo para que se recarguen las opciones.

Lanzar RISE de manera automática

Permite que al activar un jupyter notebook, este se ejecute en modo presentación de manera automática. ¡Opción ampliamente recomendada!

En la metadata del notebook se agrega la opción de "autolaunch" con valor true (todo en minúsculas, ¡es verdadero de javascript, no de Python!):

"rise": {"autolaunch": true}
`

De esta manera, si publicas tu jupyter notebook con mybinder.org, se mostrará en modo presentación automáticamente (audiencia no necesitará saber donde está el botón de “iniciar presentación", por ejemplo si lo compartes en mybinder).

Metadata

Eligiendo un tema

El tema de la presentación controla el aspecto general de la presentación.

En la metadata del notebook se agrega la opción de "theme" con el nombre del tema deseado:

"rise": {"theme": "sky"}
`

Existen 11 opciones, que se heredan de la librería revealjs:

  • black: Fondo negro, letras blancas, links azules.
  • white: Fondo blanco, letras negras, links celestes.
  • league: Fondo gris, letras blancas, links celestes.
  • sky: Fondo celeste, letras oscuras, links azules.
  • beige: Fondo beige, letras oscuras, links cafés.
  • simple: Fondo blanco, letras negras, links azules.
  • serif: Fondo café, letras grises, links cafés.
  • night: Fondo negro, letras blancas, links naranjos.
  • blood: Fondo oscuro, letras blancas, links rojos.
  • moon: Fondo azul oscuro, letras grises, links azules.
  • solarized: Fondo blanco crema, letras verde oscuro, links azules.

Se pueden comparar los temas en la siguente imagen:

Themes

La imagen fue compilada por el siguiente blog.

Eligiendo una transición

El tipo de transición entre slides se define de manera similar. En la metadata del notebook se agrega la opción de "transition" con el nombre de la transición deseada:

"rise": {"transition": "zoom"}

Las opciones, heredadas de las transiciones existentes en la librería revealjs, son:

  • none: Sin animación.
  • fade: Animar con Cross fade — default for background transitions
  • slide: Slide between backgrounds — default for slide transitions
  • convex: Animar con ángulo convexo.
  • concave: Animar con ángulo convexo.
  • zoom: Animar para que la diapositiva siguiente crezca desde el centro de la pantalla.

El siguiente gif muestra cada transición:

Transitions

Definiendo una imagen de fondos

Simplemente, usar:

"rise": {
     "backimage": "mybackimage.png",
 }
}

Esta opción es útil si quieres un fondo personalizado, como a veces se exige en algunos congresos. Como es habitual al manejar imágenes, conviene usar archivos png con fondo transparente para que se integre bien con el theme elegido.

Definiendo header y footer:

Simplemente, usar:

"rise": {
     "header": "<h1>Hola</h1>",
     "footer": "<h3>Mundo</h3>"
 }
}

Puedes usar <br> y &nbsp; para introducir saltos de línea y espacios en blanco, respectivamente.

¿Cómo activo la pizarra?

Es posible activar una pizarra (chalkboard) para realizar anotaciones durante la presentación.

Para eso, en Edit/Edit Notebook Metadata, es necesario agregar el siguiente texto a la metadata del jupyter notebook:

{
 ...
 "rise": {"enable_chalkboard": true}
}

Durante la presentación se puede utilizar la pizarra haciendo click en los íconos, que permiten dibujar en una pizarra o sobre las diapositivas.

Es posible cambiar de color de lapiz presionando s y q. Se puede borrar la pizarra con -.

Las anotaciones se preservan incluso al cerrar el modo presentación. Sin embargo, no se guardan al cerrar el notebook.

Importante consejo final

Tantas opciones pueden ser sobrecogedoras y difíciles de recordar. Como no se puede tener comentarios en un json, resulta práctico tener guardadas todas las opciones y simplemente agregar un _ antes de las opciones que no se desean usar.

En mi caso, tengo el siguiente json en todos mis notebooks con lo cual no tengo que memorizar nada, y sólo adapto según necesito.

"rise": {
        "autolaunch": true,
        "enable_chalkboard": true
        "theme": "black",
        "transition": "zoom",
        "_header": "<h1>PRESENTATION NAME // EVENTs</h1>",
        "_footer": "<h3>NAME, DATE</h3>",
        "_backimage": "path/to/mybackimage.png",
        "_theme_options": [ "black", "white", "league", "beige", 
                           "sky", "night", "serif"], 
        "_transition_options": ["none", "fade", "slide", "convex", "concave", "zoom"],
        }