Markdown
Markdown | |
---|---|
Estensione | .md, .markdown[1]
|
Tipo MIME | text/markdown
|
Uniform Type Identifier (UTI) | net.daringfireball.markdown
|
Sviluppatore | John Gruber |
Proprietario | John Gruber |
Licenza | Licenza BSD |
1ª pubblicazione | 9 marzo 2004[2][3] |
Ultima versione | 1.0.1[4] (17 dicembre 2004 ) |
Tipo | linguaggio di markup |
Estensione di | File di testo |
Formato aperto? | Sì |
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] 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
[modifica | modifica wikitesto]John Gruber, con il contributo sostanziale di Aaron Swartz[2], 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”.[4]
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[5], 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.[4] È distribuito con una licenza BSD.[6][7][8]
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.[9][10][11][12]
Standardizzazione e CommonMark
[modifica | modifica wikitesto]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.[13][14] 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".[15] 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".[16] 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".[17][18]
È anche disponibile uno strumento (chiamato Babelmark2[19]) 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".[20] Gruber ha fatto notare che una completa standardizzazione sarebbe un errore: "Siti (e persone) diverse hanno necessità differenti. Nessuna sintassi farebbe tutti felici."[21]
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
[modifica | modifica wikitesto]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,[22] Kramdown e l'estensione Pandoc.[23] 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.[24]
Lo scritto "Thoughts on Markdown" riporta che John Gruber, sviluppatore originario, non ha risposto alle discussioni a proposito delle estensioni a Markdown e dichiara "Markdown sta cambiando, con o senza di lui".
Esempi
[modifica | modifica wikitesto]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. |
![Image](Icon-pictures.png "icon")
|
<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
[modifica | modifica wikitesto]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
[modifica | modifica wikitesto]Implementazioni di Markdown sono disponibili per molti diversi framework, piattaforme e linguaggi.
- Il generatore di documentazione da codice sorgente Doxygen supporta Markdown con caratteristiche addizionali.[25]
- RStudio, un IDE per R, dispone di una funzione wrapper C++ per l'implementazione Markdown sundown.[26]
- IntelliJ IDEA, un IDE per Java, mette a disposizione un plugin Markdown[27][28]
- 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[29] 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.[30]
- Discount - una implementazione in C.[31]
- Md2doc - una implementazione in XSLT 2.0.[32]
Test suites
[modifica | modifica wikitesto]- Markdown Text Editor, su github.com.
- Markdown Test Suite, su github.com.
Note
[modifica | modifica wikitesto]- ^ (EN) RFC 7763 — The text/markdown Media Type, su datatracker.ietf.org, Internet Engineering Task Force.
- ^ a b (EN) Aaron Swartz, Markdown, su Aaron Swartz: The Weblog, 19 marzo 2004.
- ^ (EN) Markdown 1.0b1, su Daring Fireball (archiviato dall'url originale l'11 marzo 2004).
- ^ a b c d (EN) Markdown, su Daring Fireball (archiviato il 3 gennaio 2005).
- ^ (EN) Philosophy, su Markdown: Syntax, Daring Fireball.
- ^ Markdown: License, su Daring Fireball. URL consultato il 25 aprile 2014.
- ^ (EN) MarsEdit 2.3 ties the knot with Tumblr support, su Ars Technica. URL consultato l'11 agosto 2009.
- ^ (EN) Review: Practical Django Projects, su Ars Technica. URL consultato l'11 agosto 2009.
- ^ GitHub Flavored Markdown, su help.github.com, github.com. URL consultato il 29 marzo 2013.
- ^ Reddit markdown primer. Or, how do you do all that fancy formatting in your comments, anyway?, su reddit.com. URL consultato il 29 marzo 2013.
- ^ Markdown Editing Help, su stackoverflow.com, https://stackoverflow.com/. URL consultato l'11 aprile 2014.
- ^ SourceForge: Markdown Syntax Guide, su sourceforge.net. URL consultato il 10 maggio 2013.
- ^ Jeff Atwood, Responsible Open Source Code Parenting, su codinghorror.com. URL consultato il 25 aprile 2014 (archiviato dall'url originale il 21 febbraio 2014).
- ^ Trouble with parentheses in Markdown hyperlinks, su six.pairlist.net, 17 ottobre 2012. URL consultato il 25 aprile 2014.
- ^ Jeff Atwood, The Future of Markdown, su codinghorror.com, 25 ottobre 2012. URL consultato il 25 aprile 2014 (archiviato dall'url originale l'11 febbraio 2014).
- ^ Markdown Community Page, su markdown.github.io. URL consultato il 25 aprile 2014.
- ^ Standard Markdown is now Common Markdown, su blog.codinghorror.com, Jeff Atwood. URL consultato il 7 ottobre 2014.
- ^ Standard Markdown Becomes Common Markdown then CommonMark, su InfoQ. URL consultato il 7 ottobre 2014.
- ^ Babelmark 2 - Compare markdown implementations, su johnmacfarlane.net. URL consultato il 25 aprile 2014.
- ^ Babelmark 2 - FAQ, su johnmacfarlane.net. URL consultato il 25 aprile 2014.
- ^ John Gruber, Twitter post, su twitter.com. URL consultato il 6 settembre 2014.
- ^ Maruku, su maruku.rubyforge.org. URL consultato il 3 maggio 2015 (archiviato dall'url originale il 24 aprile 2015).
- ^ Pandoc Markdown, su johnmacfarlane.net, Pandoc. URL consultato il 7 ottobre 2014.
- ^ Markdown Discuss, su six.pairlist.net, Markdown-Discuss. URL consultato il 7 ottobre 2014.
- ^ Doxygen Manual: Markdown support, su stack.nl, 21 aprile 2014. URL consultato il 25 aprile 2014.
- ^ file 462 lines (396 sloc) 12.572 kb, rstudio/src/cpp/core/markdown/Markdown.cpp at master · rstudio/rstudio · GitHub, su github.com. URL consultato il 25 aprile 2014.
- ^ JetBrains Plugin Repository :: Markdown, su plugins.jetbrains.com. URL consultato il 25 aprile 2014 (archiviato dall'url originale il 27 aprile 2014).
- ^ nicoulaj/idea-markdown ¡ GitHub, su github.com, 1º dicembre 2013. URL consultato il 25 aprile 2014.
- ^ Writing on GitHub, su help.github.com, Github, Inc.. URL consultato il 9 luglio 2014.
- ^ Pandoc's markdown, su johnmacfarlane.net. URL consultato il 5 agosto 2014.
- ^ Discount - a C implementation of the Markdown markup language, su pell.portland.or.us. URL consultato il 1º novembre 2014.
- ^ Md2doc - Markdown2Html2Docbook XSLT 2.0 conversion tool, su github.com. URL consultato il 25 novembre 2014.
Voci correlate
[modifica | modifica wikitesto]Linguaggi a marcatori leggeri simili:
- AsciiDoc
- Creole
- Deplate
- Org-mode
- Plain Old Documentation, utilizzato per la documentazione di Perl
- reStructuredText, utilizzato per la documentazione di Python
- Setext
- Textile
- txt2tags
- Wikitesto
Altri progetti
[modifica | modifica wikitesto]- Wikibooks contiene testi o manuali sul Markdown
- Wikimedia Commons contiene immagini o altri file sul Markdown
Collegamenti esterni
[modifica | modifica wikitesto]- (EN) Sito ufficiale, su daringfireball.net.
- (EN) Markdown Community Page, su GitHub.
- (EN) Markdown Community Group, su W3C (archiviato il 25 dicembre 2019).
- (EN) CommonMark, su commonmark.org.
- (EN) Nathan Willis, A common Markdown, su LWN.net, 10 settembre 2014.
- (EN) Marked Documentation, su marked.js.org.
Controllo di autorità | LCCN (EN) sh2015002740 · J9U (EN, HE) 987007415877105171 |
---|