Trucchi e barbatrucchi per ox-hugo

Trucchi e barbatrucchi per ox-hugo

Visto che in questo periodo sto studiando come usare al meglio (ox)Hugo ed Emacs per la gestione del blog, ecco un articolo che in realtà è più un promemoria personale su come gestire i contenuti. Di seguito ho raccolto una carrellata di casistiche, dalle più comuni alle più particolari che mi sono trovato ad affrontare fino ad ora.

Introduzione (summary) degli articoli

Normalmente l’introduzione degli articoli, detta anche “summary”, viene generata automaticamente a partire dal testo ma io preferisco definirla sempre manualmente in modo che sia più precisa e personalizzata.

Pertanto si può usare il parametro summary.

N.B: Da notare come sia possibile inserire anche codice markdown all’interno del summary, tale codice verrà convertito in HTML da Hugo.

File .org unico per il blog (default)

Nella sezione :PROPERTIES: del post si inserisce il testo dell’introduzione nel seguente modo:

:EXPORT_HUGO_CUSTOM_FRONT_MATTER+: :summary "Test da usare come introduzione"

File .org separato per ogni post

In alternativa, se si usa un file .org separato per ciascun articolo si inserisce il seguente codice nella intestazione del file:

#+HUGO_CUSTOM_FRONT_MATTER: :summary "Esempio di testo per introduzione"

Definire la prima parte del testo per l’introduzione

Se invece si vuole usare la prima parte del testo come “summary”, allora si puòinserire il seguente codice per indicare che il testo precedente fa parte del summary.

#+hugo: more

Attenzione: in questo modo il markup verrà mostrato, quindi a livello di impaginazione sarà necessario tenere in considerazione tale comportamento.

Inserire le citazioni

Per inserire una citazione si usa il codice #+begin_quote. Al suo interno si può mettere il nome della persona citata usando il tag <cite>. Infine per mandare a capo con un “line break” si usa \\.

Ecco un esempio di codice:

#+begin_quote
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. \\
<cite>Lorem Ipsum</cite>
#+end_quote

Ed ecco il risultato finale:

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
Lorem Ipsum

Collegamenti di testo con attributo title

Normalmente i link si possono inserire con la sintassi standard Org, se però vogliamo aggiungere l’attributo title allora questo va scritto nella riga che precede il link usando il codice: #+attr_html: :title Valore. Ecco qui di seguito un esempio:

#+attr_html: :title Title
[[https://www.example.com][Link con attributo title]]

Ed ecco il risultato:

Link con attributo title

Attenzione: questo sistema funziona con link su singole righe

Inserimento shortcode con Hugo 0.60+

A partire da Hugo 0.60 non si possono più mettere gli shortcode usando la vecchia sintassi con {{ seguito da %, ma va messo il < (e di conseguenza > al posto del % finale).

Ok, ho riletto la frase ed effettivamente non è il massimo della chiarezza, ma se ti trovi con il problema davanti agli occhi questa spiegazione diventa chiarissima. Spero.

Frammenti o blocchi di codice

Se si scrive del testo all’interno di una coppia di caratteri ~ oppure =, questo testo verrà renderizzato con il un tag HTML <code>. È molto utile quando si vuole inserire qualche frammento di codice.

Se invece si vuole inserire un blocco di codice sorgente in un articolo basta indicare il linguaggio da usare e poi eventuali altri parametri, ad esempio se mostrare il numero di linea o quali righe evidenziare.

In questo esempio è stato attivato il syntax highlight per php5 e sono evidenziate le righe 1, 3 e 4:

#+begin_src php5 :hl_lines 1,3-4

Ecco il risultato finale:

<?php
// Il codice viene evidenziato:
echo 'Stringa';
/* Inoltre possiamo mettere anche
   dei commenti su più righe. */
if ( $variable == true ){
  echo 'Altro test per istruzione if';
}
echo 'Test finale'; # Commenti anche così

Attenzione, se si vuole mostrare il codice di uno shortcode, compreso tra {{< e >}}, bisogna ricordarsi di aggiungere /* e */ appena dopo l’apertura dello shortcode e appena prima della chiusura. Quindi il codice, all’interno di un blocco #BEGIN_SRC sarà una cosa del tipo: {{</* e */>}}.

Inserire elenchi di termini e definizioni

Per inserire una lista di termini e definizioni usando la sintassi HTML5 che sfrutta i tag dl, dt e dd, basta creare una lista normalissima con due “due punti” (::) per separare ogni termine dalla propria definizione.

Ecco un esempio:

- termine uno :: definizione uno
- termine due :: definizione due
- termine tre :: definizione tre

Ed ecco il risultato:

termine uno
definizione uno
termine due
definizione due
termine tre
definizione tre

Gestione tag mark (evidenziatore)

Visto che org-mode non prevede la gestione di un tag equivalente al tag <mark> di HTML5, allora quest’ultimo lo possiamo inserire direttamente nel codice org a patto che sia attiva l’opzione per gestire il markup HTML incluso nel contenuto, ovvero aggiungendo la seguente configurazione nel file config.toml di Hugo:

[markup.goldmark.renderer]
  unsafe = true

Il testo evidenziato lo si inserisce usando la seguente sintassi:

<mark>testo</mark>

Shortcut per Emacs per esportare il post corrente

Con il cursore in qualunque punto di un post, la scorciatoia C-c C-e H H permette di esportare il post corrente sotto forma di file Markdown senza dover esportare anche tutti gli altri file.

Leonardo Finetti

Leonardo Finetti
Si occupa di informatica dalla metà degli anni novanta principalmente in ambito web con tecnologie Open Source. Esperto di Drupal e di SEO offre consulenze in tali ambiti e nel tempo libero si diletta scrivendo articoli di informatica ed anche di design, ergonomia, usabilità e sicurezza.