Markdown

Markdown es un lenguaje de marcado ligero creado por John Gruber y Aaron Swartz que trata de conseguir la máxima legibilidad y facilidad de publicación tanto en su forma de entrada como de salida, inspirándose en muchas convenciones existentes para marcar mensajes de correo electrónico usando texto plano. Se distribuye bajo licencia BSD y se distribuye como plugin (o al menos está disponible) en diferentes sistemas de gestión de contenidos (CMS). Markdown convierte el texto marcado en documentos XHTML utilizando html2text creado por Aaron Swartz. Markdown fue implementado originariamente en Perl por Gruber, pero desde entonces ha sido traducido a multitud de lenguajes de programación, incluyendo PHP, Python, Ruby, Java y Common Lisp.

Historia 

John Gruber creó el lenguaje Markdown en 2004, con una ayuda importante de Aaron Swartz en la sintaxis. Gruber tenía la meta de hacer que la gente «pudiera escribir usando un formato de texto llano fácil de leer, fácil de escribir y con la posibilidad de convertir su documento en HTML válido».

La clave del diseño de Markdown es la facilidad de su lectura, que hace que el lenguaje sea fácilmente interpretado, sin lucir como si hubiera sido marcado con etiquetas o instrucciones de estilo, como RTF o HTML, los cuales tienen etiquetas que hacen más difícil su lectura e interpretación. Por ello, su inspiración más importante son las convenciones existentes para formatear texto llano en los mensajes electrónicos, aunque también toma características de lenguajes anteriores, como setext, atx (por Aaron Swartz), Textile, reStructuredText, Grutatext, y EtText).

Gruber escribió un script en Perl, Markdown.pl, que convierte texto Markdown válido en un documento XHTML bien-formado o HTML, y reemplazan las comillas angulares de apertura ('<') y el símbolo «&» con sus correspondientes entidades. 

Markdown desde entonces ha sido implementado como un módulo de Perl disponible en la CPAN (Text::Markdown), y también ha sido portado en una variedad de lenguajes de programación. Está distribuido bajo la licencia BSD, y está incluido, o disponible como un plugin para muchos sistemas de gestión de contenidos.

Una cantidad de sitios como GitHub, Reddit, Diaspora, Stack Exchange, OpenStreetMap, y SourceForge usa algunas variantes de Markdown para facilitar la discusión entre usuarios. Un dialecto de Markdown es también usado por el sistema de mensajería instantánea Slack.

Estandarización 

No hay un estándar definido para Markdown, aparte de la implementación original de John Gruber, que algunos consideran obsoleta. Esto está ocasionado por la fragmentación, porque las diferentes personas escriben sus propias variantes de Markdown para corregir detalles o añadir características no incluidas.

Existen iniciativas para crear un estándar moderno de Markdown como CommonMark, en la que participan personas de Github, Discourse o reddit.

Ejemplos de sintaxis 

Lo que sigue no es un listado exhaustivo de la sintaxis de Markdown. En muchos casos, se puede conseguir un efecto particular usando diferentes estilos de sintaxis.

Los caracteres que serían interpretados por Markdown como comandos de formateado se interpretan literalmente si se precede por una barra invertida; por ejemplo la secuencia '\*' mostraría un asterisco en lugar de empezar una sección de texto enfatizado. Un bloque de HTML crudo no se verá alterado por Markdown, pero los comandos de Markdown insertados dentro de un elemento de bloque de HTML crudo no serán procesados.

Saltos de línea:  Los saltos de línea se generan cuando se encuentran dos espacios juntos
 "Quien fue a Santiago,  
 perdió su clase de redes"

Títulos: Los títulos de sección se generan cuando se encuentra una almohadilla antes de texto
 # Título h1 
 ## Título h2
 ### Título h3
 #### Título h4
 ##### Título h5
 ###### Título h6

Citas: Para citar solo es necesario escribir una cuña antes del texto
 > La vida es muy corta para aprender alemán. -Tad Marburg

Texto con énfasis: Agregar un asterisco para cursiva y dos para negrita
 *énfasis* (cursiva)
 
 **énfasis fuerte** (negrita)

Código: Se utiliza el acento grave para identificar código, y corchetes para identificar el lenguaje de programación
 `Código`

 ``` [language]
 Código en 
 varias líneas
 ```

Listas:
 * Un elemento en una lista no ordenada
 * Otro elemento en una lista

 1. Elemento en una lista enumerada u ordenada.
 2. Otro elemento

Enlaces:
 [Texto del enlace aquí](URL "Título del enlace")

Imágenes:
 ![Texto alternativo](URL "Título de la imagen")

Implementaciones 

Las implementaciones de Markdown están disponibles para un alto número de lenguajes de programación; también algunas plataformas y frameworks soportan el uso de Markdown. Por ejemplo, hay plugins de Markdown para la mayoría de las plataformas de microblogging.

Aunque Markdown es muy sencillo y fácil de leer y escribir con un editor de texto llano (como el Bloc de notas, o gedit), hay editores especializados en Markdown, que están disponibles para muchos sistemas operativos como Linux, Mac OS, Windows, Android e iOS. Los principales editores de texto traen un plugin para el resaltado de sintaxis de Markdown, ya sea incluido dentro del programa o con una descarga adicional. Estos editores también tienen una ventana para previsualizar nuestro documento como si se tratase de un documento WYSIWYG.

Véase también 

 Lenguajes de marcas ligeros

Enlaces externos 

 Sintaxis de Markdown.
 Cheat Sheet En warpedvisions (en inglés).
 Guía Rápida de Sintaxis de Markdown (en inglés).

Lenguajes de marcado ligero
Formatos abiertos
Introducciones relacionadas a la ciencia de la computación de 2004
Toma de notas