Markdown
Da Wikipedia, l'enciclopedia libera.
Markdown | |
---|---|
Estensione |
|
Tipo MIME | text/markdown (proposto)
|
Sviluppato da | John Gruber |
Proprietario | John Gruber |
1ª pubblicazione | 25 marzo 2004[2] |
Ultima versione | 1.0.1 (2004 dicembre 17 | )
Tipo | linguaggio di markup |
Formato aperto? | sì[3] |
Sito web | daringfireball.net/projects/markdown/ |
Markdown è un linguaggio di markup con una sintassi del testo semplice progettata in modo che possa essere convertita in HTML e in molti altri formati usando un tool omonimo.[4][5] Markdown è spesso usato per formattare file README, per scrivere messaggi in forum di discussioni e per creare testo formattato utilizzando un editor di testo semplice.
Storia
John Gruber, con il contributo sostanziale di Aaron Swartz,[6] ha creato il linguaggio Markdown nel 2004 con l'obiettivo di permettere alle persone "di scrivere usando un formato testo semplice da scrivere e leggere e, opzionalmente, di convertirlo in XHTML (o HTML) strutturalmente valido”.[7]
Prendendo spunti dalle convenzioni esistenti per scrivere testo semplice nelle email, come setext, il linguaggio è stato progettato per essere leggibile così com'è, senza che sembri marcato con tags o istruzioni di formattazione[8], diversamente dal testo formattato con un linguaggio di markup come Rich Text Format (RTF) o HTML, che mostrano chiaramente istruzioni di formattazione.
Gruber ha scritto uno script in Perl chiamato Markdown.pl che converte un testo marcato in un XHTML o HTML ben formattato e sostituisce i segni di minore ('<') e la e commerciale con le relative entità. Può essere usato da solo oppure come plugin di Blosxom o Movable Type, oppure come un filtro di testo per BBEdit.[7] È distribuito con una licenza BSD.[3][9][10]
Da allora, Markdown è stato re-implementato da altri come un modulo di Perl disponibile su CPAN (Text::Markdown), e in vari altri linguaggi di programmazione.
Siti come GitHub, reddit, Diaspora, Stack Exchange, OpenStreetMap, e SourceForge usano varianti di Markdown per facilitare le discussioni fra gli utenti.[11][12][13][14]
Standardizzazione e CommonMark
Non esiste uno standard univocamente definito per Markdown, a eccezione dell'articolo originale di John Gruber e della sua implementazione che alcuni considerano una forma del cosiddetto abandonware.[15][16] Questo ha portato a una frammentazione del linguaggio dato che differenti produttori ne scrivono la propria variante per correggere errori o per aggiungere funzionalità non previste originariamente.
Dal 2012 fino al 2014, un gruppo di persone capeggiate da Jeff Atwood hanno portato avanti quella che Atwood ha descritto come uno "sforzo di standardizzazione".[17] Un sito web di comunità ora si prefigge l'obiettivo di "documentare vari strumenti e risorse disponibili, di documentare autori e sviluppatori così come implementatori delle varie implementazioni di markdown".[18] Nel settembre del 2014 Gruber ha obiettato sull'uso di "Markdown" nel nome di questo gruppo e del suo prodotto che per questa ragione è stato rinominato in "CommonMark".[19][20]
È anche disponibile uno strumento (chiamato Babelmark2[21]) che "confronta l'output delle varie implementazioni" per "promuovere la discussione su come e se alcuni aspetti poco chiari delle specifiche di Markdown debbano essere chiarite".[22] Gruber ha fatto notare che una completa standardizzazione sarebbe un errore: "Siti (e persone) diverse hanno necessità differenti. Nessuna sintassi farebbe tutti felici."[23]
Presso la IETF è in corso la procedura per standardizzare lo Internet media type text/markdown
, indipendente dalla sintassi. Si pianifica di sottoporre al IESG la Internet-Draft, draft-ietf-appsawg-text-markdown, nell'aprile 2015. La comunità che ruota intorno a Markdown è invitata a sottoporre proposte per guidare il processo di standardizzazione.
Estensioni
Una quantità di linguaggi di markup leggeri estendono Markdown implementando caratteristiche aggiuntive (come tabelle, note a piè pagina, liste di definizioni e Markdown all'interno di blocchi HTML) originariamente non disponibili con la sintassi di Markdown: esempi di questi linguaggi sono Markdown Extra, MultiMarkdown, Maruku,[24] Kramdown e l'estensione Pandoc.[25] In alcuni casi, questo ha lo scopo di permettere la conversione in formati alternativi al HTML come LaTeX, RTF e DocBook.
Molte implementazioni omettono intenzionalmente il supporto all'enfasi all'interno di parole. Nella implementazione originale di Markdown, un costrutto come my_long_variable
è interpretato come una richiesta di aggiungere enfasi alle lettere "long" a metà della parola. Molti utenti trovano questo comportamento confusionale, per questa ragione molte implementazioni successive come PHP Markdown e Python Markdown non implementano questa caratteristica per impostazione di default.[26]
Lo scritto "Thoughts on Markdown" riporta che John Gruber, originale sviluppatore, non ha risposto alle discussioni a proposito delle estensioni a Markdown e dichiara "Markdown sta cambiando, con o senza di lui".
Esempi
Testo con sintassi Markdown | Il codice HTML corrispondente generato da un processore Markdown | Il testo visualizzato nel browser |
---|---|---|
Heading
=======
Sub-heading
-----------
### Another deeper heading
|
<h1>Heading</h1>
<h2>Sub-heading</h2>
<h3>Another deeper heading</h3>
|
|
Paragraphs are separated
by a blank line.
Leave 2 spaces at the end of a line to do a
line break |
<p>Paragraphs are separated
by a blank line.</p>
<p>Leave 2 spaces at the end of a line to do a<br />
line break</p>
|
Paragraphs are separated
by a blank line. Leave 2 spaces at the end of a line to do a |
Text attributes *italic*, **bold**,
`monospace`, ~~strikethrough~~ . |
<p>Text attributes <em>italic</em>, <strong>bold</strong>,
<code>monospace</code>, <s>strikethrough</s>.</p>
|
Text attributes italic, bold,
|
A [link](http://example.com).
<<< No space between ] and ( >>> |
<p>A <a href="http://example.com">link</a>.</p>
|
A link. |
Shopping list:
* apples
* oranges
* pears
Numbered list:
1. apples
2. oranges
3. pears |
<p>Shopping list:</p>
<ul>
<li>apples</li>
<li>oranges</li>
<li>pears</li>
</ul>
<p>Numbered list:</p>
<ol>
<li>apples</li>
<li>oranges</li>
<li>pears</li>
</ol>
|
Shopping list:
Numbered list:
|
The rain---not the reign---in
Spain. |
<p>The rain—not the
reign—in Spain.</p>
|
The rain—not the reign—in Spain. |

|
<p><img alt="Image" title="icon" src="Icon-pictures.png" /></p>
|
|
Here's a simple footnote,[^1] and here's a longer one.[^bignote]
[^1]: This is the first footnote.
[^bignote]: Here's one with multiple paragraphs and code.
Indent paragraphs to include them in the footnote.
`{ my code }`
Add as many paragraphs as you like.
|
Here’s a simple footnote,1 and here’s a longer one.2
|
Integrazioni
Per quanto Markdown sia un linguaggio a markup minimale, semplice da leggere e modificabile con un normale editor di testi, per tutte le maggiori piattaforme esistono editor specificamente progettati per visualizzare le anteprime con gli stili applicati. Inoltre esistono plugin per la syntax highlighting incorporati in emacs, gedit, e vim.
Implementazioni
Implementazioni di Markdown sono disponibili per molti diversi framework, piattaforme e linguaggi.
- Il generatore di codice sorgente Doxygen supporta Markdown con caratteristiche addizionali.[27]
- RStudio, un IDE per R, dispone di una funzione wrapper C++ per l'implementazione Markdown sundown.[28]
- IntelliJ IDEA, un IDE per Java, mette a disposizione un plugin Markdown[29][30]
- MultiMarkdown, un formato con caratteristiche di sintassi e opzioni di esportazione migliori rispetto al Markdown tradizionale
- PageDown, un parser per la sintassi Markdown di StackExchange
- 'GitHub Flavored Markdown' (GFM) aggiunge la syntax highlighting[31] e le tabelle; ha diverse implementazioni:
- "Grip - Github Readme Instant Preview" (Joe Esposito) - Python
- "Vim-Flavored-Markdown" (Jeff Tratner) - Vim scripting
- "GitHub-Flavored Markdown Comments" (Evan Solomon) - PHP WordPress plugin
- "Markdown on Save" (Mark Jaquith) - PHP WordPress plugin
- "Node-GFM" (Gabriel Llamas) - JavaScript
- "Parsedown" (Emanuil Rusev) - PHP
- Pandoc aggiunge tabelle, definizione di liste, apici e pedici, può generare automaticamente gli indici.[32]
- Discount - una implementazione in C.[33]
- Md2doc - una implementazione in XSLT 2.0.[34]
Test suites
- Markdown Text Editor, su github.com.
- Markdown Test Suite, su github.com.
Text is available under the CC BY-SA 4.0 license; additional terms may apply.
Images, videos and audio are available under their respective licenses.