Markdown es un lenguaje de marcado ligero para crear texto formateado utilizando un editor de texto sin formato . John Gruber y Aaron Swartz crearon Markdown en 2004 como un lenguaje de marcado atractivo para los lectores humanos en su forma de código fuente. [9] Markdown se usa ampliamente en blogs , mensajería instantánea , foros en línea , software colaborativo , páginas de documentación y archivos Léame .
Tipo de medio de Internet | text/markdown [1] |
---|---|
Identificador de tipo uniforme (UTI) | net.daringfireball.markdown |
Desarrollado por | John Gruber y Aaron Swartz |
Versión inicial | 19 de marzo de 2004 [2] [3] |
Último lanzamiento | |
Tipo de formato | Lenguaje de marcado |
Extendido a | pandoc , MultiMarkdown , Markdown extra , CommonMark , [5] RMarkdown [6] |
¿ Formato abierto ? | Sí [7] |
Sitio web | daringfireball |
Dado que la descripción inicial de Markdown [10] contenía ambigüedades y preguntas sin respuesta, las implementaciones que aparecieron a lo largo de los años tienen diferencias sutiles y muchas vienen con extensiones de sintaxis.
Historia
En 2002, Aaron Swartz creó atx , "el verdadero formato de texto estructurado". Swartz y John Gruber luego trabajaron juntos para crear el lenguaje Markdown en 2004, [2] [3] con el objetivo de permitir a las personas "escribir usando un formato de texto plano fácil de leer y escribir, opcionalmente convertirlo a XHTML (o HTML ) estructuralmente válido ". [4]
Su objetivo de diseño clave es la legibilidad : que el lenguaje sea legible tal cual, sin que parezca que se ha marcado con etiquetas o instrucciones de formato, [9] a diferencia del texto formateado con un lenguaje de marcado , como el formato de texto enriquecido (RTF) o HTML, que tiene etiquetas obvias e instrucciones de formato. Con este fin, su principal inspiración son las convenciones existentes para marcar texto sin formato en el correo electrónico , aunque también se basa en lenguajes de marcado anteriores, en particular setext , Textile y reStructuredText . [9]
Gruber escribió un script en PerlMarkdown.pl
, que convierte la entrada de texto marcado en XHTML o HTML válido y bien formado y reemplaza los corchetes angulares ' <
' ' >
' y los símbolos ' &
' con sus correspondientes referencias de entidades de caracteres . Puede tomar el papel de un script independiente, un complemento para Blosxom o Movable Type , o de un filtro de texto para BBEdit . [4]
Estandarización
Markdown se ha caracterizado por una especificación informal [11] y una implementación de referencia para la conversión a HTML. Con el tiempo, han aparecido muchas implementaciones de Markdown. La gente los desarrolló principalmente impulsados por la necesidad de características adicionales además de la sintaxis básica, como tablas, notas al pie, listas de definiciones (técnicamente listas de descripciones HTML) y Markdown dentro de bloques HTML. El comportamiento de algunos de estos difiere de la implementación de referencia. Al mismo tiempo, han llamado la atención una serie de ambigüedades en la especificación informal. [12] Estos problemas impulsaron la creación de herramientas como Babelmark [13] [14] para comparar el resultado de varias implementaciones, [15] y un esfuerzo de algunos desarrolladores de analizadores de Markdown para la estandarización. Sin embargo, Gruber ha argumentado que la estandarización completa sería un error: "Los diferentes sitios (y personas) tienen diferentes necesidades. Ninguna sintaxis haría felices a todos". [dieciséis]
En marzo de 2016 se publicaron dos RFC de Internet informativas relevantes :
- RFC 7763 introdujo el tipo MIME
text/markdown
con la variante original. - RFC 7764 discutió y registrado las variantes MultiMarkdown , GitHub de sabores de rebajas (GFM), Pandoc , CommonMark y Markdown extra entre otros. [17]
CommonMark
Extensiones de nombre de archivo | .md , .markdown [1] |
---|---|
Tipo de medio de Internet | text/markdown; variant=CommonMark [5] |
Identificador de tipo uniforme (UTI) | incierto [18] |
Conformación de UTI | public.plain-text |
Desarrollado por | John MacFarlane , código abierto |
Versión inicial | 25 de octubre de 2014 |
Último lanzamiento | 0.29 (6 de abril de 2019 [19] ) |
Tipo de formato | Lenguaje de marcado |
Extendido desde | Reducción |
Extendido a | Rebajas con sabor a GitHub |
¿ Formato abierto ? | sí |
Sitio web | especificación .commonmark .org |
A partir de 2012, un grupo de personas, incluidos Jeff Atwood y John MacFarlane , lanzaron lo que Atwood caracterizó como un esfuerzo de estandarización. [20] Un sitio web comunitario ahora tiene como objetivo "documentar varias herramientas y recursos disponibles para los autores y desarrolladores de documentos, así como para los implementadores de las diversas implementaciones de Markdown". [21] En septiembre de 2014, Gruber se opuso al uso de "Markdown" en el nombre de este esfuerzo y fue rebautizado como un nuevo dialecto llamado CommonMark. [22] [23] CommonMark.org publicó varias versiones de una especificación, implementación de referencia y conjunto de pruebas, y "[planea] anunciar una especificación 1.0 finalizada y un conjunto de pruebas en 2019". [24] Desde entonces, no se ha publicado ninguna especificación 1.0, ya que aún quedan problemas importantes sin resolver. [25] No obstante, los siguientes sitios y proyectos han adoptado CommonMark: Discourse, GitHub, GitLab, Reddit, Qt, Stack Exchange (Stack Overflow) y Swift.
Variantes
Sitios como GitHub , Bitbucket , Reddit , Diaspora , Stack Exchange , OpenStreetMap y SourceForge usan variantes de Markdown para facilitar la discusión entre usuarios. [26] [27] [28] [29]
Dependiendo de la implementación, se pueden admitir etiquetas HTML en línea básicas . [30] El texto en cursiva puede ser implementado por _underscores_
y / o *single-asterisks*
. [31]
Rebajas con sabor a GitHub
GitHub había estado usando su propia variante de Markdown desde 2009, [32] agregando soporte para formato adicional como tablas y contenido de bloques de anidación dentro de elementos de lista, así como características específicas de GitHub como referencias de enlace automático a confirmaciones, problemas, nombres de usuario, etc. En 2017, GitHub lanzó una especificación formal de su GitHub Flavored Markdown (GFM) que se basa en CommonMark. [26] Es un superconjunto estricto de CommonMark, que sigue exactamente su especificación, excepto para tablas, tachado, enlaces automáticos y listas de tareas, que GFM agrega como extensiones. [33] GitHub también cambió el analizador utilizado en sus sitios en consecuencia, lo que requirió que se cambiaran algunos documentos. Por ejemplo, GFM ahora requiere que el símbolo de almohadilla que crea un encabezado esté separado del texto del encabezado por un carácter de espacio.
Markdown extra
Markdown Extra es un lenguaje de marcado ligero basado en Markdown implementado en PHP (originalmente), Python y Ruby . [34] Agrega funciones que no están disponibles con la sintaxis simple de Markdown. Markdown Extra es compatible con algunos sistemas de gestión de contenido como, por ejemplo, Drupal [35] y TYPO3 . [36]
Markdown Extra agrega las siguientes características a Markdown:
- Markdown Markdown dentro de bloques HTML
- Elementos con atributo id / class
- "Bloques de código cercados" que abarcan varias líneas de código
- Tablas [37]
- Listas de definiciones
- Notas al pie
- Abreviaturas
Ejemplo
Texto usando la sintaxis de Markdown | HTML correspondiente producido por un procesador Markdown | Texto visualizado en un navegador |
---|---|---|
Encabezado =======Subtítulo -----------Los párrafos están separadospor una línea en blanco.Dos espacios al final de una línea producir un salto de línea. | < h1 > Encabezado h1 >< h2 > Subtítulo h2 >< p > Los párrafos están separadospor una línea en blanco. p >< P > Dos espacios al final de una línea < br />
producir un salto de línea. p > | Los párrafos están separados por una línea en blanco. Dos espacios al final de una línea |
Atributos de texto _italico_ , ** negrita ** , `monoespacio` . Algunas implementaciones pueden usar * asteriscos únicos * para texto en cursiva.Regla horizontal:---Tachado:~~ tachado ~~ | < p > Atributos de texto < em > cursiva em > , < fuerte > negrita fuerte > , < código > monoespacio código > . Algunas implementaciones pueden usar < i > asteriscos simples i > para texto en cursiva. p >< p > Regla horizontal: p >< h />< p > Tachado: p > < strike > tachado strike > | Los atributos de texto en cursiva , negrita , monospace . Algunas implementaciones pueden usar asteriscos simples para el texto en cursiva. Regla horizontal: Tachado:
|
Lista de viñetas: * manzanas * naranjas * perasLista numerada: 1. hacer espuma 2. enjuagar 3. repetir | < p > Lista de viñetas: p >< ul > < li > manzanas li > < li > naranjas li > < li > peras li > ul >< p > Lista numerada: p >< ol > < li > espuma li > < li > enjuague li > < li > repetir li > ol > | Lista de viñetas:
Lista numerada:
|
Un [ ejemplo ] ( http://example.com ).! [ Imagen ] ( Icon-pictures.png "icono" )> Markdown utiliza caracteres de estilo > correo electrónico para las citas en bloque. > Se deben anteponer varios párrafos de forma individual.Es posible que se admita HTML básico en línea. | < P > Un < un href = "http://example.com" > ejemplo una > . p >< p > < img alt = "Imagen" title = "icon" src = "Icon-pictures.png" /> p >< blockquote > < p > Markdown utiliza caracteres de estilo de correo electrónico para blockquote. Se deben anteponer varios párrafos de forma individual. p > blockquote >< p > Es posible que se admita < abbr title = "Hypertext Markup Language" > HTML abbr > en línea básico . p > | Un ejemplo .
Es posible que se admita HTML en línea básico . |
Implementaciones
Las implementaciones de Markdown están disponibles para más de una docena de lenguajes de programación; Además, muchas plataformas y marcos admiten Markdown. [38] Por ejemplo, existen complementos de Markdown para todas las principales plataformas de blogs. [39]
Si bien Markdown es un lenguaje de marcado mínimo y se lee y edita con un editor de texto normal, existen editores especialmente diseñados que obtienen una vista previa de los archivos con estilos, que están disponibles para todas las plataformas principales. Muchos editores de texto y código de propósito general tienen complementos de resaltado de sintaxis para Markdown integrados o disponibles como descarga opcional. Los editores pueden presentar una ventana de vista previa en paralelo o representar el código directamente en forma WYSIWYG .
- JotterPad : un editor WYSIWYG en línea que admite Markdown y fuente [40]
- Doxygen : un generador de documentación de código fuente que admite Markdown con funciones adicionales [41]
- Rstudio - un IDE para R . Proporciona una función contenedora de C ++ para una variante de rebajas llamada sundown [42]
- GitHub de sabores de rebajas (GFM) hace caso omiso de subrayado en palabras, y añade resaltado de sintaxis , listas de tareas , [43] y las tablas [26]
- Descuento: una implementación C [44] [45]
- MarkAPL: un convertidor escrito en Dyalog APL . Admite bloques vallados, tipografía inteligente, referencias de enlaces y atributos especiales, y puede generar una tabla de contenido [46]
- league / commonmark: una biblioteca PHP altamente extensible que es totalmente compatible con CommonMark, GFM y extensiones personalizadas [47]
- PHP Markdown: un paquete de biblioteca que incluye el analizador PHP Markdown y su hermano PHP Markdown Extra con características adicionales [48]
- Markdig: una biblioteca .NET que sigue las especificaciones de CommonMark e incluye una colección de extensiones y la capacidad para que el usuario cree las suyas propias [49]
- Showdown [50] y Smartdown [51] : renderizadores de Markdown en JavaScript
- hackmd.io: un editor de Markdown en línea que admite Markdown con funciones adicionales [52]
- gomarkdown: analizador de Markdown y renderizador HTML en Go [53]
- Markdeep , compatible con calendarios, ecuaciones y diagramas [54]
Ver también
- Comparación de lenguajes de marcado de documentos
- Comparación de generadores de documentación
- Lenguaje de marcado ligero
- Marcado Wiki
Referencias
- ^ a b c "RFC 7763 - El tipo de medio de texto / rebaja" .
- ^ a b Swartz, Aaron (19 de marzo de 2004). "Markdown" . Aaron Swartz: El Weblog .
- ^ a b Gruber, John . "Markdown" . Bola de fuego atrevida . Archivado desde el original el 2 de abril de 2004 . Consultado el 25 de abril de 2014 .
- ^ a b c Código fuente léame de Markdown 1.0.1 "Bola de fuego atrevida - Markdown" . 2004-12-17. Archivado desde el original el 2 de abril de 2004.
- ^ a b "RFC7764 - Orientación sobre Markdown: Filosofías de diseño, estrategias de estabilidad y registros selectos" .
- ^ "Sitio de referencia de RMarkdown" .
- ^ "Markdown: Licencia" . Bola de fuego atrevida . Consultado el 25 de abril de 2014 .
- ^ Declaración de Daring Fireball del creador John Gruber
- ^ a b c Sintaxis de Markdown "Daring Fireball - Markdown - Sintaxis" . 2013-06-13.
Sin embargo, la legibilidad se enfatiza por encima de todo. Un documento con formato Markdown debe poder publicarse tal cual, como texto sin formato, sin que parezca que se ha marcado con etiquetas o instrucciones de formato. Si bien la sintaxis de Markdown se ha visto influenciada por varios filtros de texto a HTML existentes, incluidos Setext, atx, Textile, reStructuredText, Grutatext y EtText, la mayor fuente de inspiración para la sintaxis de Markdown es el formato de correo electrónico de texto sin formato.
- ^ "Bola de fuego atrevida: Presentación de Markdown" . daringfireball.net . Consultado el 23 de septiembre de 2020 .
- ^ "Documentación de sintaxis de Markdown" . Bola de fuego atrevida.
- ^ "GitHub Flavored Markdown Spec - ¿Por qué se necesita una especificación?" . github.github.com .
- ^ "Babelmark 2 - Comparar implementaciones de rebajas" . Johnmacfarlane.net . Consultado el 25 de abril de 2014 .
- ^ "Babelmark 3 - Comparar implementaciones de Markdown" . github.io . Consultado el 10 de diciembre de 2017 .
- ^ "Babelmark 2 - Preguntas frecuentes" . Johnmacfarlane.net . Consultado el 25 de abril de 2014 .
- ^ Gruber, John [@gruber] (4 de septiembre de 2014). "@tobie @espadrine @comex @wycats Porque diferentes sitios (y personas) tienen diferentes necesidades. Ninguna sintaxis haría felices a todos" (Tweet) - vía Twitter .
- ^ "Variantes de rebajas" . IANA . 2016-03-28 . Consultado el 6 de julio de 2016 .
- ^ "UTI de un documento CommonMark" .
- ^ "Especificación CommonMark" .
- ^ Atwood, Jeff (25 de octubre de 2012). "El futuro de Markdown" . CodingHorror.com . Consultado el 25 de abril de 2014 .
- ^ "Página de la comunidad de Markdown" . GitHub . Consultado el 25 de abril de 2014 .
- ^ "Standard Markdown ahora es Common Markdown" . Jeff Atwood . Consultado el 7 de octubre de 2014 .
- ^ "La rebaja estándar se convierte en rebaja común y luego en CommonMark" . InfoQ . Consultado el 7 de octubre de 2014 .
- ^ "CommonMark" . Consultado el 20 de junio de 2018 .
La versión actual de la especificación CommonMark está completa y es bastante sólida después de un año de comentarios públicos ... pero no del todo definitiva. Con su ayuda, planeamos anunciar una especificación 1.0 finalizada y un conjunto de pruebas en 2019.
- ^ "Problemas que DEBEMOS resolver antes de la versión 1.0 [quedan 6]" . Discusión de CommonMark . 2015-07-26 . Consultado el 2 de octubre de 2020 .
- ^ a b c "Especificación de rebajas con sabor a GitHub" . GitHub . Consultado el 11 de junio de 2020 .
- ^ "Cartilla de rebajas de Reddit. O, ¿cómo haces todo ese formato elegante en tus comentarios, de todos modos?" . Reddit.com . Consultado el 29 de marzo de 2013 .
- ^ "Ayuda de edición de Markdown" . StackOverflow.com . Consultado el 11 de abril de 2014 .
- ^ "SourceForge: Guía de sintaxis de Markdown" . SourceForge.net . Consultado el 10 de mayo de 2013 .
- ^ "Documentación de sintaxis de Markdown" . daringfireball.net .
- ^ "Sintaxis básica | Guía de rebajas" . www.markdownguide.org .
- ^ Tom Preston-Werner . "Ejemplos de rebajas con sabor a GitHub" . GitHub . Consultado el 2 de abril de 2021 . CS1 maint: parámetro desalentado ( enlace )
- ^ "Una especificación formal para GitHub Flavored Markdown" . Ingeniería de GitHub . Consultado el 16 de marzo de 2017 .
- ^ Fortín, Michel (2018). "PHP Markdown Extra" . Sitio web de Michel Fortin . Consultado el 26 de diciembre de 2018 .
- ^ "Editor de rebajas para BUEditor" . 4 de diciembre de 2008.
- ^ "Rebajas para TYPO3 (markdown_content)" . extensions.typo3.org .
- ^ "PHP Markdown Extra" . Michel Fortin .
- ^ "Página de la comunidad W3C de implementaciones de Markdown" . Wiki de Markdown del W3C . Consultado el 24 de marzo de 2016 .
- ^ "Markdown THrowdown - ¿Qué sucede cuando el software FOSS obtiene respaldo corporativo?" . Ars Technica. 2014-10-05.
- ^ "Por qué necesita un editor WYSIWYG al escribir en Markdown y Fountain" . Blog de JotterPad . 2020-11-17 . Consultado el 6 de diciembre de 2020 .
- ^ "Manual de Doxygen: soporte de Markdown" .
- ^ Allaire, JJ ; ea (30 de junio de 2015). "Markdown.cpp" . Proyecto de GitHub RStudio . Consultado el 7 de julio de 2016 .
- ^ "Escribiendo en GitHub" . help.github.com . GitHub, Inc . Consultado el 9 de julio de 2014 .
- ^ "Descuento: una implementación en C del lenguaje de marcado Markdown" . Consultado el 1 de marzo de 2020 .
- ^ Parsons, David (28 de mayo de 2016). "DESCUENTO" . GitHub . Consultado el 7 de julio de 2016 .
descuento en Open Hub
- ^ "Conversor Markdown escrito en Dyalog APL" .
- ^ "CommonMark para PHP - Markdown bien hecho" . Consultado el 28 de abril de 2021 .
- ^ "PHP Markdown" . Consultado el 1 de marzo de 2016 .
- ^ "Un procesador Markdown extensible, rápido, potente, compatible con CommonMark para .NET" . Consultado el 19 de octubre de 2020 .
- ^ "¡Un convertidor bidireccional de Markdown a HTML escrito en Javascript!" . Consultado el 19 de octubre de 2020 .
- ^ "Una biblioteca de Javascript para traducir, renderizar e interactuar con documentos Smartdown" . Consultado el 19 de octubre de 2020 .
- ^ "Libro de tutoriales de HackMD - HackMD" .
- ^ "Analizador de Markdown y renderizador HTML en Go" . Consultado el 19 de octubre de 2020 .
- ^ "Markdeep" . casual-effects.com .
enlaces externos
- Sitio web oficial para el marcado original de John Gruber
- Guía de Markdown: Herramientas : una revisión de fuente independiente de software que admite Markdown