Scrivere testo formattato con Markdown: semplicitá e potenza.

Di - 19 March 2014 - in
Post image for Scrivere testo formattato con Markdown: semplicitá e potenza.

Markdown è una sintassi per la formattazione di testo puro, progettata in modo che possa essere convertito in HTML utilizzando un semplice script. Attualmente è comunemente usato come formato per file readme, per la formattazione di messaggi nei forum o in editor di testo per la creazione rapida di documenti di testo formattati e in molti CSM di uso comune.

Le semplicità estrema della sintassi fa si che chiunque, anche senza esperienza di programmazione, possa in pochissimo tempo cominciare a scrivere documenti senza l’ausilio di guide o software particolare, ma semplicemente di un editor di testo.

Ambienti molto minimali permettono la creazioni di documenti relativamente complessi senza l’ausilio di nessuna interfaccia grafica, ma semplicemente tramite emacs, gedit o vim, per i quali esistono plugin per la syntax highlighting di Markdown, o in un futuro prossimo con Atom, il text editor modulare presentato da GitHub.

I punti essenziali dei Markdown sono :

  • Filosofia alla LaTeX : separare la composizione dalla formattazione del testo per focalizzare l’attenzione sulla scrittura.
  • Indipendenza dal motore di rendering : la struttura del file markdown può essere convertita in diversi formati. In particolare con l’HTML si può agevolmente sfruttare la separazione HTML-CSS per avere un numero notevole di diverse renderizzazioni dello stesso steso in tempo quasi reale
  • Essendo testo puro, può essere archiviato utilizzando pochissimo spazio con sistemi moderni, come DCSV (Mercurial, Git etc) o su Dropbox.
  • Molto semplice da editare anche su dispositivi mobili
  • Permette di creare strutture abbastanza complesse (tabelle, liste) con pochissimi comandi.

Un altro punto é la dimensione dei documenti : questo articolo occupa meno di 10 KB, più 51 KB di immagini. Lo stesso articolo salvato in formato Word (2011 per Mac) doc occupa 101 KB mentre 187 in formato docx. Un pdf occupa circa 112 KB e un odt circa 69 KB, tutti includendo le immagini.

La domanda essenziale da farsi in questo caso é, dal mio punto di vista : il documento che sto scrivendo oggi potrò leggero tra 10/20/30 anni?

Se pensate ai documenti più vecchi che avete mai incontrato e che siete riusciti a leggere, dubito che si tratti si documenti realizzati da oscuri wordprocessor del secolo scorso, ma molto probabilmente saranno stati file testo.

Per cominciare a scrivere in Markdown quindi si ha bisogno semplcimente di un editor di testo, ma per poter visualizzare il risultato correttamente abbiamo bisogno di trasformare il testo con un interprete. Ecco una piccola lista di editor-interpreti free per varie piattaforme:

  • WebHashify: Hashify é molto semplice, basta scrivere markdown nel riquadro sulla destra e l’output viene automaticamente generato.
  • WindowsWritemonkey: Writemonkey é un programma di scrittura minimalista che supporta completamente Markdown. ResophNotes, applicazione per prendere note su Windows, supporta Markdown.
  • MacnvALT: nvALT é un fork della fantasica applicazione per le note Notational Velocity. Tra le varie migliorie, c’e’ il supporto completo a Markdown.
  • iOSDrafts: Anche Draft supporta Markdown, oltre a funzioni per esportare il testo formattato. Ci sono molte opzioni su iOS, tra cui Simplenote. Una lista completa di editor di testi per iOS é stata compilata dal creatore di nvALT e si trova qui iTextEditors.
  • AndroidMarkdrop : Markdrop é relavitvamente semplice, ma oltre al supporto per Markdown, permette di salvare i nostri file su Dropbox.

Un Po’ di storia

La prima implementazione di John Gruber risale al 2004 che, grazie al sostanziale contributo di Aaron Swartz, creò un interprete per documenti markdown con l’obiettivo di permettere alle persone di ” scrivere usando un formato testo facile da scrivere, facile da leggere e opzionalmente convertibile in un file XHTML o HTML strutturalmente valido (post originale di Gruber).

L’implementazione di Gruber consiste in uno script Perl, Markdown.pl di 18 KB.
Può essere usato come uno script a parte o in workflow più complessi come plugin per Blosxom , Movable Type, or come filtro per BBEdit.
In particolare io lo utilizzo massicciamente all’interno di [TextMate 2][link] e di NValt, fork di Notational Velocity. É molto semplice anche cambiare lo script di rendering utilizzato da questi programmi, se si vuole utilizzare uno script che implementi dialetti particolari di Markdown.

Non essendo mai stato stadardizzato, Markdown ha generato una serie di implementazioni o dialetti con lievi modifiche per risolvere particolari problemi, come ad esempio GitHub, reddit, Diaspora, Stack Overflow, OpenStreetMap, e SourceForge.

Questa situazione ha portato a una frammentazione del linguaggio, dovuto anche al fatto che l’implementazione originale di Gruber é considerata ormai considerata abandonware (qui e qui).
Verso la fine del 2012 la comunità iniziò un tentativo di standardizzazione, dopo la pubblicazione di in post di Jeff Atwood

L’interprete Markdown é stato implementato da allora da altri come modulo Perl disponibile su CPAN e in una varietà di altri linguaggi.
É distribuito sotto licenza BSD4 ed distribuito come plugin o direttamente disponibile in diversi CMS, come WordPress

Esempi

Qui voglio dare solo una semplice introduzione alla sintassi, tutorial più estesi sono disponibili in rete su markdowntutorial.com.
Per chi é già pratico di HTML la sintassi Markdown é quasi banale e ricorda un pó i primordi dei Word Processor.

Heading

I vari livelli di Heading possono essere specificati con dei cancelletti

# Capitolo
[testo]
## Paragrafo
[testo]
### Sotto pargrafo
[testo]

Il risultato é

É anche supportata una versione visivamente più semplice

Capitolo
========
Capitolo
--------

ma in questo modo non abbiamo una gerarchia, ma solo il livello più alto.

I livelli di heading sono automaticamente etichettati e ci si può riferire a loro come link interni al documento. Riferendoci all’esempio precedente:

clickando questo [link][Capitolo] si é indirizzati al Capitolo

Questo meccanismo può adattarsi facilmente alla scrittura di documenti complessi.

Link e immagini

I link possono essere inseriti marcando il testo da linkare con parentesi quadre e inserendo in parentesi tonde il link a cui riferirsi. É possibile utilizzare come link un identificativo e raggruppare tutti i link in un altro punto del documento, per esempio ala fine documento, in stile Wikipedia. Questo permette di aggiornare con una sola modifica tutti i link relativi a uno specifico identificativo, molto comodo se si compila un documento molto lungo o con diversi richiami a uno specifico link.

[testo da linkare](http://indirizzo)

o alternativamente

[testo da linkare][id]
[testo]

[id] : http://indirizzo

Per inserire immagini la sintassi é semplicemente

![Caption Figura](figura.png)

dove il testo viene inserito come caption e testo alternativo della figura, buona prassi quando si realizza un sito web. Questi tag sono molto importanti per chi utilizza programmi specifici per diversamente abili, come sintetizzatori vocali.

Liste

Liste numerate e non possono essere semplicemente create utilizzando un simbolo – o * per ogni oggetto della lista.

Lista ordinata senza paragrafi :

  1. Elemento
  2. Elemento

Lista non ordinata senza paragrafi :

  • ElementoCon paragrafi multipli.
  • Elemento

Si possono nidificare i due tipi a diversi livelli:

* Domanda
  * Risposta
 * Altra Domanda
 1. Risposta
 2. Risposta
   * Sotto Risposta
 3. Risposta
 * Ancora una Domanda

 

  • Domanda
    • Risposta
  • Altra Domanda
    1. Risposta
    2. Risposta
      • Sotto Risposta
    3. Risposta
  • Ancora una Domanda

Codice e testo quotato

Frammenti di codice e di Markdown stesso possono essere visualizzati inserendo quattro spazi all’inizio della linea corrispondente. Esistono versioni specifiche per la formattazione di testi in cui le poesie vengono visualizzate differentemente grazie a questo meccanismo. Modificando il CSS legato all’HTML in uscita si può visualizzare il codice con syntax highlighting.
Io ho scritto una piccolo hack (sorgente su github) per l’editor e organizzatore di note nvALT, che inietta del codice javascript (highlightjs e jquery) nella pagina per l’highligh e per modificare facilmente il CSS e la formattazione finale del documento. Eccone un esempio per un frammento di HTML:

<html xmlns="http://www.w3.org/1999/xhtml" lang="it-IT">
 <head>
 <meta charset="UTF-8">
 <title>Engeene | Notizie e approfondimenti su web e informatica</title>

Gli esempi di codice sono i frammenti di Markdown riportati sopra.

Tabelle

Esiste una sintassi per creare tabelle

| Colonna 1 | Colonna 2 |
|    :--    |    --:    |
|  testo 1  |  testo 2  |
[Caption tabella][identificativo]

Il risultato é quello riportato in figura

 

La sintassi Markdown é più estesa, ma non in maniera eccessiva. Qui ho voluto solo dare un assaggio delle potenzialità e dalla semplicità insita nello scrivere un documento di testo.

Se quanto esposto vi sta un pó stretto, scorrete la documentazione dell’estensione allargata chiamata multimarkdown.

 

Leave a Reply

Articolo scritto da

Appassionato di fumetti, anime, scienza & fantascienza, elettronica e tecnologia, vivo e lavoro in Germania, curo i miei canali sui social media e mi dedico alle mie passioni.

Contatta l'autore

Previous post:

Next post: