Articulo de referencia

Lenguaje de marcado ligero

Un lenguaje de marcado ligero ( LML ), también conocido como lenguaje de marcado simple o humanizado , es un lenguaje de marcado con una sintaxis sencilla y discreta. Está diseñ...

Un lenguaje de marcado ligero ( LML ), también conocido como lenguaje de marcado simple o humanizado , es un lenguaje de marcado con una sintaxis sencilla y discreta. Está diseñado para ser fácil de escribir con cualquier editor de texto genérico y fácil de leer en su formato original. Se utiliza en aplicaciones donde puede ser necesario leer el documento original y el resultado final.

Por ejemplo, una persona que descarga una biblioteca de software podría preferir leer la documentación en un editor de texto en lugar de un navegador web. Otro uso de estos lenguajes es la introducción de datos en publicaciones web, como blogs y wikis , donde la interfaz de entrada es un simple cuadro de texto . El software del servidor convierte entonces la entrada a un lenguaje de marcado de documentos común como HTML .

Historia

Los lenguajes de marcado ligeros se utilizaban originalmente en pantallas de solo texto que no podían mostrar caracteres en cursiva o negrita , por lo que fue necesario desarrollar métodos informales para transmitir esta información. Esta elección de formato se extendió naturalmente a las comunicaciones por correo electrónico en texto plano. Los navegadores de consola también pueden recurrir a convenciones de visualización similares.

En 1986, el estándar internacional SGML proporcionó herramientas para definir y analizar lenguajes de marcado ligeros mediante gramáticas e implicación de etiquetas. El estándar XML del W3C de 1998 es un perfil de SGML que omite estas herramientas. Sin embargo, no se conoce ninguna definición de tipo de documento (DTD) de SGML para ninguno de los lenguajes que se enumeran a continuación.

Tipos

Los lenguajes de marcado ligeros se pueden clasificar según sus tipos de etiquetas. Al igual que HTML ( ), algunos lenguajes utilizan elementos con nombre que comparten un formato común para las etiquetas de inicio y fin (por ejemplo, BBCode ), mientras que los lenguajes de marcado ligeros propiamente dichos se limitan a signos de puntuación ASCII solamente y otros símbolos que no son letras para las etiquetas, pero algunos también mezclan ambos estilos (por ejemplo, Textile ) o permiten HTML incrustado (por ejemplo, Markdown ), posiblemente extendido con elementos personalizados (por ejemplo, MediaWiki ).<b>bold</b>[b]bold[/b]bq.<ref>'''source'''</ref>

La mayoría de los lenguajes distinguen entre el marcado para líneas o bloques y para fragmentos de texto más cortos, pero algunos solo admiten el marcado en línea.

Algunos lenguajes de marcado están diseñados para un propósito específico, como documentar código informático (por ejemplo, POD , reST , RD ) o convertirse a un formato de salida determinado (normalmente HTML o LaTeX ), y nada más; otros son de aplicación más general. Esto incluye si están orientados a la presentación de texto o a la serialización de datos.

Los lenguajes orientados a la presentación incluyen AsciiDoc , atx , BBCode , Creole , Crossmark, Djot, Epytext, Haml , JsonML , MakeDoc , Markdown , Org-mode , POD (Perl) , reST (Python) , RD (Ruby) , Setext , SiSU , SPIP , Xupl, Texy!, Textile, txt2tags , UDO y Wikitext .

Los lenguajes orientados a la serialización de datos incluyen Curl ( homoicónico , pero también lee JSON; cada objeto se serializa), JSON y YAML .

Comparación de características del lenguaje

La sintaxis de Markdown no admite atributos de clase ni atributos de ID; sin embargo, dado que Markdown permite la inclusión de código HTML nativo, estas características pueden implementarse mediante HTML directo. (Algunas extensiones pueden admitir estas características).

La sintaxis propia de txt2tags no admite atributos de clase ni atributos de ID; sin embargo, dado que txt2tags admite la inclusión de código HTML nativo en áreas etiquetadas, estas características se pueden implementar utilizando HTML directo al guardar en un destino HTML. [ 27 ]

DokuWiki no admite la importación de HTML de forma nativa, pero existen convertidores e importadores de HTML a DokuWiki que se mencionan en la documentación oficial. [ 28 ] DokuWiki no admite atributos de clase ni de ID, pero se puede configurar para admitir código HTML, que sí admite ambas características. La compatibilidad con código HTML se integró antes del lanzamiento del 4 de abril de 2023. [ 29 ] En versiones posteriores, la compatibilidad con código HTML se puede lograr mediante complementos , aunque no se recomienda. [ 29 ]

Comparación de las características de implementación

Comparación de la sintaxis de lenguajes de marcado ligeros

Sintaxis de span en línea

Aunque generalmente se documenta que produce texto en cursiva y negrita, la mayoría de los procesadores de marcado ligeros generan elementos HTML semánticos . El texto monoespaciado puede generar elementos semánticos emo de presentación . Pocos lenguajes hacen esta distinción, por ejemplo, Textile, o permiten al usuario configurar la salida fácilmente, por ejemplo, Texy.strongcodett

En ocasiones, los lenguajes de marcado de idiomas difieren en cuanto al marcado de varias palabras, ya que algunos requieren que los caracteres de marcado reemplacen los espacios entre palabras ( infijos ). Algunos idiomas requieren un carácter como prefijo y sufijo, otros necesitan dos o incluso tres, o admiten ambos con un significado ligeramente diferente, por ejemplo, distintos niveles de énfasis.

Gemtext no admite formato en línea; el texto monoespaciado (denominado texto preformateado en el contexto de Gemtext) debe tener las líneas de apertura y cierre ```en líneas separadas.

Sintaxis de énfasis

En HTML, el texto se enfatiza con los tipos de elementos y , mientras que y tradicionalmente marcan el texto para que se muestre en cursiva o negrita, respectivamente.<em><strong><i><b>

Microsoft Word y Outlook, y por consiguiente otros procesadores de texto y clientes de correo electrónico que buscan una experiencia de usuario similar, admiten la convención básica de usar asteriscos para negrita y guiones bajos para cursiva. Si bien Word elimina estos caracteres, Outlook los conserva.

Sintaxis editorial

En HTML, el texto eliminado o borrado e insertado se marca con los tipos de elementos y , respectivamente. Sin embargo, los tipos de elementos heredados o y también están disponibles para los fragmentos de texto tachados y subrayados.<del><ins><s><strike><u>

AsciiDoc, ATX, Creole, MediaWiki, PmWiki, reST, Slack, Textile y WhatsApp no ​​admiten un marcado específico para subrayar texto. Sin embargo, Textile sí admite la inserción mediante la +inserted+sintaxis.

ATX, Creole, MediaWiki, PmWiki, reST y Setext no admiten un marcado específico para tachar texto.

DokuWiki admite una sintaxis similar a HTML <del>stricken</del>, incluso con el HTML incrustado deshabilitado.

AsciiDoc admite texto tachado mediante un prefijo de texto [ c ] incorporado : [.line-through]#stricken#.

Sintaxis de programación

El código informático citado se presenta tradicionalmente con fuentes tipo máquina de escribir, donde cada carácter ocupa el mismo ancho fijo. HTML ofrece los tipos de elementos semánticos y de presentación (obsoletos) para esta tarea.<code><tt>

Mediawiki y Gemtext no proporcionan un marcado ligero para los fragmentos de código en línea.

Sintaxis de encabezado

Los encabezados suelen estar disponibles en hasta seis niveles, pero el nivel superior a menudo se reserva para contener el mismo título del documento, que puede definirse externamente. Algunos documentos asocian los niveles con tipos de división, por ejemplo, parte, capítulo, sección, artículo o párrafo. Este artículo utiliza el nivel 1 como nivel superior, pero el índice de niveles de encabezado puede comenzar en 1 o 0 en la documentación oficial.

La mayoría de los LML siguen uno de dos estilos para los encabezados, ya sean subrayados tipo Setext o marcadores de línea tipo atx [ 51 ] , o admiten ambos.

Encabezados subrayados

Encabezado de nivel 1 =============== Encabezado de nivel 2 --------------- Encabezado de nivel 3 ~~~~~~~~~~~~~~~

El primer estilo utiliza subrayados, es decir, caracteres repetidos (por ejemplo, el signo de igual =, el guion -o la tilde ~, normalmente al menos dos o cuatro veces) en la línea que aparece debajo del texto del encabezado.

En reStructuredText , los encabezados pueden, opcionalmente, ir tachados , además de subrayados.

Encabezados con prefijo

# Nivel 1 Encabezado ## Encabezado de nivel 2 ## ### Encabezado de nivel 3 ###

El segundo estilo se basa en marcadores repetidos (por ejemplo, almohadilla #, igual =o asterisco *) al inicio del encabezado, donde el número de repeticiones indica el nivel del encabezado (a veces inverso). La mayoría de los idiomas también admiten la duplicación de los marcadores al final de la línea, pero mientras que algunos los hacen obligatorios, otros ni siquiera esperan que su número coincida.

Org-mode admite la indentación como medio para indicar el nivel.

BBCode no admite encabezados de sección en absoluto.

En su lugar, POD y Textile optan por la convención HTML de niveles de encabezado numerados.

Microsoft Word admite el formato automático de párrafos como encabezados si no contienen más de unas pocas palabras, no terminan con punto y el usuario pulsa la tecla Intro dos veces. Para niveles inferiores, el usuario puede pulsar la tecla Tabulador el número de veces correspondiente antes de introducir el texto; es decir, de una a ocho tabulaciones para los niveles de encabezado del dos al nueve.

Los hipervínculos pueden insertarse directamente en el código, lo que puede resultar en URL largas, o bien mediante referencias aliasnumeradas o con nombre ida líneas que contengan únicamente la dirección y sus atributos correspondientes, y que a menudo pueden ubicarse en cualquier parte del documento. La mayoría de los lenguajes permiten al autor especificar un texto Textque se mostrará en lugar de la dirección, http://example.comy algunos también ofrecen métodos para establecer un título de enlace diferente Titleque puede contener más información sobre el destino.

Las bibliotecas de lenguaje (LML) diseñadas para configuraciones especiales, como wikis o documentación de código, pueden generar automáticamente anclas con nombre (para encabezados, funciones, etc.) dentro del documento, enlazar a páginas relacionadas (posiblemente en un espacio de nombres diferente) o proporcionar una búsqueda de texto para palabras clave vinculadas.

La mayoría de los idiomas utilizan corchetes (dobles) o angulares para delimitar los enlaces, pero prácticamente ningún par de idiomas es totalmente compatible. Muchos pueden reconocer y analizar automáticamente las URL absolutas dentro del texto sin necesidad de marcado adicional.

Los enlaces Gemtext y setext deben estar en una línea aparte; no se pueden usar en línea.

La sintaxis de enlace normal de Org-mode realiza una búsqueda de texto en el archivo. También puede agregar objetivos dedicados con <<id>>.

Sintaxis de medios y recursos externos

Sintaxis de lista

HTML requiere un elemento explícito para la lista, especificando su tipo, y uno para cada elemento de la lista, pero la mayoría de los lenguajes de marcado ligeros solo necesitan prefijos de línea diferentes para los puntos o elementos enumerados. Algunos lenguajes se basan en la indentación para las listas anidadas, otros usan marcadores de lista padre repetidos.

Microsoft Word convierte automáticamente los párrafos que comienzan con un asterisco *, un guion -o un corchete de mayor >que seguido de un espacio o una tabulación horizontal en elementos de lista con viñetas. También iniciará una lista numerada con el dígito 1 y las letras a (para listas alfabéticas) o i (para números romanos), sin distinción entre mayúsculas y minúsculas , si van seguidas de un punto ., un paréntesis de cierre ), un signo de mayor que >o un guion -y un espacio o tabulación; en el caso del paréntesis, (también se admite un paréntesis de apertura opcional antes del marcador de lista.

Los lenguajes difieren en cuanto a si admiten dígitos opcionales u obligatorios en los elementos de las listas numeradas, qué tipos de enumeradores entienden (por ejemplo, el dígito decimal 1 , los números romanos i o I , las letras alfabéticas a o A ) y si admiten mantener valores explícitos en el formato de salida. Algunos dialectos de Markdown, por ejemplo, respetan un valor inicial distinto de 1, pero ignoran cualquier otro valor explícito.

Slack ayuda al usuario a introducir listas numeradas y con viñetas, pero en realidad no las formatea como tales; es decir, simplemente incluye un dígito inicial seguido de un punto y un espacio o un carácter de viñeta delante de la línea.

Sintaxis de citas

Sintaxis de tabla

Formatos históricos

Los siguientes lenguajes de marcado ligeros, si bien son similares a algunos de los ya mencionados, aún no se han añadido a las tablas comparativas de este artículo:

Véase también

Notas

  1. JTexy tiene compatibilidad total con la sintaxis de Texy 1.0 y cierta compatibilidad con la versión 2.0+.
  2. 1 2 3 4 5 6 7 Obsoleto en Asciidoctor 2.0; las versiones posteriores a esta representan la versión actual del lenguaje y están alineadas con el estándar que todavía se está produciendo a partir de abril de 2025. Esta sintaxis sigue estando disponible a través de un modo de compatibilidad .
  3. En las implementaciones antiguas, los fragmentos de texto en AsciiDoc se denominan atributos de texto entre comillas .
  4. Ancho del título ± 2 caracteres
  5. 1 2 La sangría de un solo espacio en blanco en AsciiDoc preformateará el texto de esa línea.
  6. La especificación del lenguaje moderno solo admite un punto como delimitador para cualquier lista ordenada. En la sintaxis anterior de AsciiDoc.py, solo se aceptaba un paréntesis derecho para letras minúsculas o números romanos.

Referencias

  1. "Registro de cambios de AsciiDoc" . Consultado el 24 de febrero de 2017 .
  2. "WikiCreole Versions" . Consultado el 24 de febrero de 2017 .
  3. 1 2 "djot" . Consultado el 26 de agosto de 2023 .
  4. "djot 0.1.0" . GitHub . Consultado el 26 de agosto de 2023 .
  5. "DokuWiki old_changes" . Consultado el 26 de noviembre de 2024 .
  6. https://github.com/LukeEmmet/html2gemini
  7. 1 2 Jira. "Ayuda sobre notación de formato de texto" . Atlassian . Consultado el 22 de diciembre de 2020 .
  8. "Markdown" . Aaron Swartz: El blog . 19 de marzo de 2004.
  9. "Daring Fireball: Markdown" . Archivado del original el 2 de abril de 2004. Consultado el 25 de abril de 2014 .
  10. "PHP Markdown Extra" . Michel Fortin . Consultado el 8 de octubre de 2013 .
  11. "PHP Markdown: Historia" . Michel Fortin . Consultado el 23 de diciembre de 2020 .
  12. "Historial de MediaWiki" . Consultado el 24 de febrero de 2017 .
  13. 1 2 3 Pandoc Archivado el 15/11/2013 en Wayback Machine , que está escrito en Haskell , analiza Markdown (en dos formas), ReStructuredText , HTML y LaTeX; escribe desde cualquiera de estos formatos a HTML , RTF , LaTeX , ConTeXt , OpenDocument , EPUB , PDF (a través de LaTeX) y varios otros formatos.
  14. "Org mode para Emacs: tu vida en texto plano" . orgmode.org . Equipo de OrgMode . Consultado el 9 de diciembre de 2016 .
  15. "PmWiki Cookbook - Export addons" . Consultado el 7 de enero de 2018 .
  16. "Una introducción a reStructuredText" . Consultado el 24 de febrero de 2017 .
  17. "TidBITS en nuevo formato" . TidBITS . 6 de enero de 1992. Consultado el 1 de julio de 2022 .
  18. "Centro de ayuda de Slack > Usar Slack > Enviar mensajes > Dar formato a tus mensajes" . Consultado el 7 de agosto de 2018 .
  19. "Documentación de la API de Slack: Formato básico de mensajes" . Consultado el 7 de agosto de 2018 .
  20. "Textismo › Herramientas › Textil" . textism.com . Archivado del original el 26 de diciembre de 2002.  
  21. "¿Qué es Texy?" . Consultado el 24 de febrero de 2017 .
  22. "Historia de TiddlyWiki" . tiddlywiki.com .
  23. "Módulo Html2wiki txt2tags" . MetaCPAN . cpan.org . Consultado el 30 de enero de 2014 .
  24. "Guía del usuario de Txt2tags" . Txt2tags.org . Consultado el 24 de febrero de 2017 .
  25. "Registro de cambios de txt2tags" . Consultado el 24 de febrero de 2017 .
  26. "Preguntas frecuentes de WhatsApp: Cómo formatear tus mensajes" . Consultado el 21 de noviembre de 2017 .
  27. "Guía del usuario de Txt2tags" . Txt2tags.org . Consultado el 24 de febrero de 2017 .
  28. "Consejos de DokuWiki htmltowiki" . Consultado el 26 de noviembre de 2024 .
  29. 1 2 "Preguntas frecuentes de DokuWiki html" . Consultado el 26 de noviembre de 2024 .
  30. "Convertidores" . WikiCreole . Consultado el 8 de octubre de 2013 .
  31. pegdown : Una biblioteca Java para el procesamiento de Markdown
  32. 1 2 gfms : Servidor Markdown con formato de GitHub
  33. 1 2 marcado : Un analizador y compilador de Markdown con todas las funciones, escrito en JavaScript. Diseñado para la velocidad.
  34. 1 2 node-gfm : convertidor de Markdown a HTML con estilo de GitHub
  35. Parsedown : Analizador de Markdown escrito en PHP
  36. 1 2 Ciconia : Analizador de Markdown escrito en PHP
  37. 1 2 Grip : GitHub Readme Vista previa instantánea
  38. github-markdown : Analizador Markdown autónomo para GitHub
  39. peg-markdown esuna implementación de markdown en C.
  40. Discount tambiénes una implementación de Markdown en C.
  41. "Python-Markdown" . Github.com . Consultado el 8 de octubre de 2013 .
  42. Bruce Williams. "kramdown: Información del proyecto" . RubyForge. Archivado del original el 7 de agosto de 2013. Consultado el 8 de octubre de 2013 .
  43. ^ " A través de ox-pandoc y el propio pandoc" . GitHub .
  44. Atlassian. "Editor de Confluence 4.0: ¿Qué ha cambiado para los usuarios de marcado Wiki? (El marcado Wiki de Confluence ha muerto)" . Consultado el 28 de marzo de 2018 .
  45. Docutils es una implementación de ReStructuredText en Python.
  46. Sphinx es una implementación de ReStructuredText en Python y Docutils con varios constructores de formatos de salida.
  47. Aurelio Jargas www.aurelio.net (2012-01-11). "txt2tags" . txt2tags . Consultado el 2013-10-08 .
  48. "txt2tags.class.php - convertidor en línea [ sic ] " . Txt2tags.org . Consultado el 08-10-2013 .
  49. "Sintaxis de Markdown" . Daringfireball.net . Consultado el 8 de octubre de 2013 .
  50. 1 2 Sintaxis textil Archivado el 12/08/2010 en Wayback Machine
  51. "atx, el verdadero formato de texto estructurado" por Aaron Swartz (2002)
  52. "El manual de la organización: sección "Una visión general más clara"" . Consultado el 14 de junio de 2020 .
  53. "usando org-adapt-indentation" .
  54. "usando org-indent-mode u org-indent" .
  55. Nota al pie en el manual oficial : «Cuando se utiliza el asterisco (*) como viñeta, las líneas deben estar indentadas para que no se interpreten como títulos. Además, al ocultar los asteriscos iniciales para obtener una vista de esquema limpia, los elementos de lista simples que comienzan con un asterisco pueden ser difíciles de distinguir de los títulos reales. En resumen: aunque se admite el uso del asterisco (*), es preferible no utilizarlo para elementos de lista simples.»
  56. "EtText: Documentación: Uso de EtText" . ettext.taint.org . Consultado el 30 de junio de 2022 .Originalmente de WebMakeproyecto.
  57. "Un naufragio personal: The Grutatxt markup" . triptico.com . Archivado del original el 30-06-2022 . Recuperado el 30-06-2022 .Formato de dominio público (desde la versión 2.20); utilizado originalmente en el sistema CMS Gruta .