Creare Slides in Markdown Usando Pandoc, Reveal.js e Docker

In questo articolo, ti mostreremo come creare presentazioni in Markdown utilizzando Pandoc e reveal.js all'interno di un container Docker. Questo approccio ha il vantaggio di fornire un ambiente isolato e replicabile, ideale per lavorare su diverse piattaforme senza preoccuparti delle specifiche del sistema operativo.

Markdown è un linguaggio di markup leggero, conosciuto per la sua semplicità e leggibilità. È molto popolare per scrivere documentazione e contenuti web, e lo useremo come base per le nostre slide.

Pandoc è uno strumento versatile per la conversione di documenti. Può trasformare i file Markdown in vari formati, inclusi HTML e PDF. Utilizzeremo Pandoc per convertire i nostri file Markdown in presentazioni HTML.

reveal.js è un potente framework per creare presentazioni HTML interattive e moderne. Offre molte funzionalità avanzate, tra cui transizioni eleganti, layout responsive e supporto per il codice evidenziato. Combinandolo con Pandoc, possiamo generare facilmente presentazioni professionali da semplici file Markdown.

Docker è una piattaforma che consente di creare, distribuire e eseguire applicazioni in container. Utilizzando Docker, possiamo configurare un ambiente di sviluppo standardizzato che funziona su qualsiasi piattaforma supportata da Docker, garantendo che le nostre slide possano essere generate e visualizzate correttamente ovunque.

Seguendo questa guida, imparerai come configurare un container Docker con Pandoc e reveal.js e come usarlo per creare presentazioni Markdown su qualsiasi sistema operativo.

Configurazione Ambiente Docker

Dockerfile

Dopo aver installato Docker sul tuo pc, avvia la creazione dell'ambiente creando un Dockerfile, come segue:

# Usa l'immagine base di Debian
FROM debian:latest

# Installa gli strumenti necessari
RUN apt-get update && \
    apt-get install -y pandoc git && \
    git clone https://github.com/hakimel/reveal.js.git /opt/reveal.js && \
    apt-get clean

# Imposta la directory di lavoro
WORKDIR /slides

# Esporta la directory di reveal.js come variabile d'ambiente
ENV REVEALJS_URL=/opt/reveal.js

il Dockerfile consente l'installazione della distribuzione Debian e l'installazione dei pacchetti necessari alla generazione delle slide. Successivamente imposta la WORKDIR e la variabile d'ambiente REVEALJS_URL che indica il path della cartella che contiene il framework.

Configurazione di Docker Compose

Per avere una configurazione più semplice e moderna, conviene creare il docker-compose.yml, come segue:

version: '3.8'

services:
  pandoc-revealjs:
    build: .
    volumes:
      - ./slides:/slides
    working_dir: /slides
    stdin_open: true
    tty: true

Il file crea un container, denominato pandoc-revealjs, che installa tutto quanto descritto nel Dockerfile. Il file monta un volume per poter condividere la cartella slides, presente all'interno della cartella di progetto sul tuo pc, sulla cartella del container nel quale devono essere memorizzate le slide. Montare questo volume ti consente di modificare il contenuto delle slide in locale senza dover lavorare direttamente sul container.

Creazione delle Slide in Markdown

Nella cartella slides puoi cominciare a creare le tue slide.

Le slide in Markdown prevedono dei metadati all'inizio e successivamente seguono la sintassi del markdown. Una slide dalla seguente è suddivisa dai caratteri ---. Vediamo un esempio che chiarirà meglio tutto.

---
title: "Titolo della Presentazione"
author: "Il Tuo Nome"
date: "2024-06-19"
---

# Titolo della Presentazione

## Slide 1
Contenuto della prima slide.

---

## Slide 2
Contenuto della seconda slide.

---

## Slide 3
Contenuto della terza slide.

Il precedente esempio crea una presentazione con 3 slide ognuna con il proprio titolo che segue il simbolo ##. Puoi salvare il precedente esempio all'interno di un file slides.md.

Generazione delle Slide con Docker

Supponiamo che la struttura del nostro progetto sia la seguente:

ROOT_PROJECT
|-- Dockerfile
|-- docker-compose.yml
|-- slides/

Per creare ed avviare il container docker, eseguiamo i seguenti passi.

1. Spostati sulla root di progetto

cd ROOT_PROJECT

2. Crea l'immagine Docker

docker-compose build

3. Avvia il container

docker-compose up -d

4. Accedi al container

docker-compose exec pandoc-revealjs /bin/bash

5. Genera le slide con Pandoc

pandoc -t revealjs -s -o slides.html slides.md -V revealjs-url=$REVEALJS_URL --self-contained

Questo comando genera il file slides.html all'interno della cartella dove sono presenti i file markdown. Dato che la cartella slides è montata come volume Docker, troverai questo file anche sul tuo pc. Aprilo con il tuo browser preferito e vedrai le slide create.

Opzione self-contained

Il comando Pandoc richiamato al punto 5 prevede come ultima opzione self-contained. La presenza di questa opzione è facoltativa ma nel nostro esempio è fondamentale. Se provi a rimuovere tale opzione, e a ricaricare sul browser le slide generate, ti accorgerai che le slide sono prive di stile. Questo è dovuto al fatto che il file .html generato, non riesce a trovare il framework reveal.js, poiché esso è presente sul container Docker, ma non sul pc locale. L'opzione consente di copiare il contenuto di reveal.js all'interno del file html e quindi di rendere la presentazione portabile senza dover avere reveal.js scaricato sul sistema.

In alternativa all'opzione self-contained, avrestoi dovuto copiare la cartella reveal.js all'interno della cartella slides del filesystem.

Conclusioni

In questo articolo hai imparato come creare presentazioni professionali utilizzando markdown, Pandoc, reveal.js e Docker. Utilizzando Docker, quanto descritto può essere eseguito su qualsiasi piattaforma: Windows, OSX, Linux.