Usare Keyboard Maestro per automatizzare la creare PDF avanzati da testi in Markdown usando Pandoc e LaTeX
Tra articoli che ho scritto e puntate del podcast non vi sarà sfuggito il fatto che, nell’ultimo periodo, sto dedicando veramente molto tempo ad automatizzare e semplificare sia su iOS che su macOS il mio modo di lavorare. Nell’articolo di oggi – che, lo premetto, non è farina del mio sacco – vi spiegherò come automatizzare la creazione di un PDF avanzato da un testo scritto in Markdown (con qualche aggiunta di LaTeX) utilizzando Pandoc ma senza “sporcarsi” le mani con la riga di comando, utilizzando un’automazione di Keyboard Maestro.
Qui trovate alcuni piccoli aggiornamenti alla macro che ne migliorano le funzioni e, una volta creato il PDF, lo aprono a video per la lettura.
– Aggiunta di Maggio 2019
1. Alcune (dovute) premesse
Quasi sempre su internet c’è qualcuno che si è posto il nostro stesso problema è, se siamo fortunati, l’ha già risolto. Non ha senso reinventare la ruota ogni volta!
Dopo aver creato l’automazione per creare Atti Telematici Avanzati su iOS, mi è venuto in mente che sicuramente era possibile fare qualcosa di simile su macOS.
Ho, quindi, iniziato a pensare a quale strumento usare e mi subito venuto in mente Keyboard Maestro che, rispetto ad Automator, ha una serie di azioni più avanzate per automatizzare la manipolazione di documenti nel Finder e per lavorare con la riga di comando.
Mi sono messo quindi a fare un po’ di test con le azioni di Keyboard Maestro è mi sono trovato subito in difficoltà. Visto che avevo poco tempo ho deciso di cercare sul forum di Keyboard Maestro (tutto in lingua inglese).
1.1 La mia fonte
Dopo una semplice ricerca, ho trovato subito quel che faceva al caso mio, ovvero questo post del forum.
2. La macro di Keyboard Maestro spiegata
Ho parzialmente modificato la marco originale per i miei specifici scopi; vediamo esattamente cosa fa la macro che potete vedere nell’immagine accanto.
- Triggered by … (attivato da …): la prima cosa è scegliere il modo con cui la macro di Keyboard Maestro viene attivata; nel mio caso ho scelto una complessa combinazione di tasti più che altro per evitare conflitti: ⌃⌥ ⇧⌘P (p per Pandoc);
- comment (commento): questa azione serve solo per lasciare un commento all’interno della macro, nel mio caso la fonte originale della macro;
- For Each Item in a Collection Execute Actions (per ogni oggetto della collezione Esegui queste azioni): questa azione è molto potente ed utile con il Finder; permette infatti di eseguire una sotto-serie di azioni su una serie di documenti selezionati dall’utente nel Finder; di fatto è un loop ma ne lo useremo come tale in questa macro;
- Split path (dividi percorso): quest’azione permette di scomporre il percorso completo di un documento in: “Parent to:” il percorso completo della cartella in cui è contenuto il documento; “File name to:” il nome e l’estensione del documento (che in questo caso non utilizziamo); “Base name to:” il nome del documento senza l’estensione.
- Set Variable: permette di creare una nuova variabile denominata “TheOutPath” (il percorso di destinazione) che poi useremo per indicare a Pandoc dove creare il nostro PDF finale; piccola e necessaria precisazione, per “richiamare” una variabile in Keyboard Maestro occorre scrivere %Variabile%nome_della_variabile%; in questa azione quindi la nuova variabile viene riempita con il percorso completo della cartella in cui è contenuto il documento (%Variabile%Local_Parent%), “/” il nome del documento a qui viene postposto l’estensione del file “.pdf”;
- Break From Loop (interrompi il loop) blocca la ripetizione;
- Execute Shell Script (Esegui lo script della shell) esegue il comando di Pandoc da terminale: in pratica va nella home dell’utente (cd ~) e (&&) invoca Pandoc (/usr/local/bin/pandoc) di dicendogli qual’è il documento in MarkDown da convertire, i parametri da impostare per la conversione, ovvero la sillabazione in italiano (-V lang=it) e la creazione di link colorati (-V colorlinks) nonché il formato in cui convertire il documento (-o) e dove; ci sono due particolarità rilevanti:
- Perché il comando di shell funzioni occorre anche andare nelle Preferenze di Keyboard Maestro alla voce Variabili e creare la variabile ENV_PATH inserendo il seguente testo “/bin:/usr/local/bin:/bin:/usr/bin:/Library/TeX/texbin/”, sul perché è necessario inserire questa stringa di testo vi rinvio alla spiegazione che ho dato al punto 2.4 di questo articolo; alternativamente dovrete aggiungere direttamente nel comando di shell il testo “PATH=~/bin:/usr/local/bin:/bin:/usr/bin:/Library/TeX/texbin/” prima di tutto il resto;
- Per comprare come è stato creato il comando di Pandoc occorre inoltre sapere che, in Keyboard Maestro, per passare una variabile di Keyboard Maestro all’interno dello script della shell occorre scrivere: $KMVAR_nome_della_variabile; perché il percorso sia poi formattato correttamente per la shell occorrerà racchiudere tra virgolette la variabile così richiamata ad esempio usando "$KMVAR_percorso“
- Notification (Invia una notifica): l’ultima azione Invia una notifica all’utente, l’ho usata per controllare che tutto funzioni correttamente.
In conclusione
Questa macro di Keyboard Maestro permette di aprire una cartella del Finder, selezionare un documento in MarkDown e, premendo una combinazione di tasti, di veder comparire “magicamente” il PDF finale creato attraverso Pandoc e LaTeX. Inoltre fa vedere come a volte è possibile risparmiare tempo “non reinventando la ruota” e cercando su internet soluzioni già pronte. Infine vi mostra alcune funzioni molto potenti di Keyboard Maestro, in particolare, quella che vi permette di selezionare più documenti nel Finder ed eseguire ricorsivamente operazioni su questi documenti.