Lenguaje de marcado
Los lenguajes de marcado se utilizan para describir propiedades, afiliaciones y formas de representación de secciones de un texto (caracteres, palabras, párrafos, etc. - " elementos ") o un conjunto de datos. Por lo general, esto se hace marcando las etiquetas .
El artículo trata en particular de la “separación de estructura y representación” recomendada por el Lenguaje de marcado estándar generalizado (SGML).
Principales características
.
Resultado y código en ejemplos
Ejemplo para ... | Ejemplo de representaciónHTML | Látex | MediaWiki - Wikitexto | |
---|---|---|---|---|
titular | sección
|
|
|
|
contar |
|
|
|
|
Hipervínculo | W3C |
|
|
|
texto en negrita | grasa |
|
|
|
texto en cursiva | itálico |
|
|
|
El hipervínculo con LaTeX no funciona en general, pero al menos con el paquete adicional hyperref
y cuando se genera un resultado en formato PDF .
Ejemplos de distinción "representativa" versus "descriptiva"
“ Negrita ” y “ cursiva ” en la tabla anterior significan una determinada representación ( formato , aquí específicamente elegir un estilo de fuente ), mientras que “ Encabezado ” es una característica semántica y generalmente no define ninguna representación como negrita. En las obras impresas, los títulos se formatean con versalitas o cursiva en lugar de negrita.
de lo que significa expresar "importancia", por ejemplo:HTML | Resultado con la configuración predeterminada |
---|---|
|
¡importante! |
El elemento HTML strong
suele estar representado por texto en negrita (en la configuración del navegador ).
La relación entre el elemento HTML y b
el elemento HTML strong
es análoga a la relación entre el elemento HTML i
y em
: Este elemento significa " énfasis ", su visualización predeterminada está en cursiva. En LaTeX también hay una "variante semántica" del
marcado de pantalla
:
HTML | Látex | Resultado con la configuración predeterminada | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
un énfasis en un entorno normal | , LaTeX tiene esto en cuenta:
HTML | Resultado con la configuración predeterminada |
---|---|
|
un énfasis en cursiva |
|
un énfasis en cursiva |
Látex | Resultado |
Wikitext se comporta aquí de una manera como LaTeX; En HTML, el comportamiento de LaTeX se puede lograr ( rudimentariamente ) a través de la declaración de "énfasis" en HTML solo se conocen para los casos más simples y en LaTeX solo para los casos más simples y los segundos más simples.
"Representativo" frente a "descriptivo": descripción general
- a "actuar" / "presentacional"
- visual, físico, específico;
- demasiado "descriptivo"
Al principio de su artículo explica Goldfarb, el marcado separa los elementos lógicos entre sí y da ("típicamente" - probablemente en relación con el marcado de procedimiento previamente conocido ), las funciones de procesamiento ("funciones de procesamiento") que se van a aplicar a estos elementos.
Premio descriptivo de popularidad (ventajas, desarrollo histórico)
).
William W. Tunnicliffe abogó por la separación de contenido y forma en el procesamiento de textos ya en 1967 en una conferencia, pero esto inicialmente tuvo poco efecto (después de todo, Goldfarb afirma haber sido influenciado por ello). En 1981 Brian Reid presentó su sistema de composición tipográfica Scribe en la misma sesión de la “Conferencia de Lausana” en la que Goldfarb presentó sus ideas. La separación de Scribe de contenido y forma (ating) fue particularmente impresionante. Durante los siguientes años, Leslie Lamport desarrolló el paquete de macros LaTeX para el programa TeX , particularmente con la motivación de ofrecer también a los autores un lenguaje de marcado descriptivo. Fue lanzado en 1985. LaTeX ya era muy popular en 1992, inicialmente entre los matemáticos norteamericanos, y en los próximos años en el campo científico-académico y en la industria. En los años siguientes, un equipo de desarrollo casi puramente europeo se hizo cargo del desarrollo posterior de LaTeX de Lamport y mejoró su flexibilidad con respecto al uso de diferentes "hojas de estilo" (archivos de definición de macro con terminaciones .sty
para "estilo" como en Lamport y .cls
para la declaración de la “clase de documento” con \documentclass
) y con respecto al Uso con idiomas distintos al inglés, lo que hizo que LaTeX fuera aún más importante.
Tunnicliffe y Goldfarb, por otro lado, citaron el desarrollo posterior de IBM Generalized Markup Language a SGML como base para la definición de lenguajes de marcado puramente descriptivos, de los cuales surgió XML más tarde , que también juega un papel importante en el conjunto de trabajo .
Definición como "idioma"
Un lenguaje de marcado debe ser un lenguaje que también sea legible por máquina . Para ello, se debe especificar la sintaxis y semántica , que se aplica en los siguientes casos:
Es un poco más difícil en el caso de TeX y LaTeX , donde las definiciones de macro (principalmente antes de leer en el código que representa el contenido de un documento) crean un lenguaje “procedimental” muy extenso (nos adelantamos a algo). La elección de nombres macro "hablados" crea una "ilusión" de una distinción puramente "descriptiva". Al ocultar (en el manual) o prohibir las posibilidades totalmente disponibles de marcado "procedimental" o "de presentación", se puede lograr un lenguaje de marcado "puramente descriptivo". Del mismo modo, HTML 4.01 estricto fue un lenguaje de marcas puramente descriptiva por “prohíben” presentación elementos y atributos que siguen fueron interpretados por los navegadores.
"Procesal" y "presentacional"
En un importante artículo de 1987, además de "procedimental" y "descriptivo", se describieron otros tipos de marcado, de los cuales el coautor de XML Tim Bray adoptó "presentacional" en su blog. Con este último se quería decir que el marcado de WYSIWYG - procesadores de texto - el documento de origen se insertó cuando los usuarios escribieron teclas específicas (llamado WordStar ). En lugar del código fuente, el usuario solo obtiene una vista previa de la salida impresa. "Presentacional" obviamente tiene un significado diferente, más especial que en las especificaciones HTML, que no mencionan los editores WYSIWYG. Sin embargo, una cosa que tienen en común es que el código de marcado es más conciso que el del "marcado de procedimiento visible" en el siguiente sentido:
En el ejemplo dado por Goldfarb, una lista como la introducida en HTML está precedida por el siguiente código:
tb 4
of 4
sk 1
Las dos primeras líneas representan asignaciones de valores para los parámetros que controlan la sangría francesa del siguiente párrafo, la tercera línea crea su espacio vertical del párrafo anterior. El lenguaje de marcas utilizado es el ( troff- similares) GUIÓN . Obviamente, es parte de un programa de computadora en un lenguaje de programación imperativo . en HTML es más corto y elimina los detalles de formato. Sin embargo, el ejemplo solo es adecuado para insinuar la idea de Goldfarbs de "distinción de procedimiento", y solo ilustra la diferencia con la "distinción descriptiva".
Bray ilustra el "marcado de procedimiento" con los comandos PostScript
y
. Estos dos comandos se relacionan entre sí como
y
en TeX . La instrucción tiene el
efecto de que con cada cambio de valor de parámetro subsiguiente, el valor de parámetro anterior se almacena en una pila . El comando correspondiente
restaura los valores de los parámetros antes que el correspondiente
. Ambos comandos no tienen un efecto directo sobre el formato; el efecto depende de los valores de los parámetros que se cambian entre ellos.
%!
/Courier
72 500 moveto
(Hallo Welt!) show
showpage
En general, las observaciones anteriores sugieren el siguiente ejemplo:
representación | HTML | LaTeX de alto nivel | LaTeX con \begingroup
|
LaTeX con en su { lugar\begingroup
|
---|---|---|---|---|
conjunto de |
|
|
|
|
Los dos ejemplos de bajo nivel a la derecha se acercan mucho a cómo LaTeX
realmente implementa el comando de alto nivel .
daría como resultado "en cursiva ", por lo que se
usa. La necesidad de este truco se evita en el ejemplo de la derecha, donde las llaves representan los comandos
y
, mientras que después
solo indican su alcance. El comando
evita que la distancia entre “cursiva” y “set” sea demasiado estrecha debido a la inclinación derecha de la “v” (la llamada corrección de cursiva ).
En los cuatro ejemplos hay una distinción descriptiva que varía el estilo de fuente. Una de las desventajas del marcado procedimental, que menciona Goldfarb, es que requiere el dominio de una gran cantidad de comandos de programación, como ejemplo menciona específicamente el TeX de Knuth . La corrección de la cursiva también es una sutileza tipográfica, cuya necesidad no es una cuestión de rutina para los autores cuando utilizan TeX. El comando LaTeX
evita que el usuario tenga que conocer algunos comandos de bajo nivel y corregir las cursivas. El i
elemento en HTML es tan fácil de dominar. El punto de crítica de Goldfarb que se aborda aquí (a diferencia de otros) aparentemente no está dirigido contra ninguna decoración descriptiva , sino solo contra el etiquetado similar al lenguaje de programación como en los dos ejemplos de la derecha y contra los comandos PostScript anteriores.
(con el LaTeX 2.09 válido en 1992). Quizás un lenguaje de marcado genérico (o descriptivo) es un lenguaje que ofrece una "cierta cantidad" de marcado genérico además del marcado de presentación.
Niveles de representación
Refiriéndose a un trabajo de 1988 en el que estuvo involucrado, Furuta habla de tres " representaciones " de un documento:
- un resumen de uno que se cambia mediante la edición con un editor ( representación abstracta ),
- un uno física que surge de un abstracto a través de formateo ( representación física ), y
- una apariencia de página requerida para un dispositivo de salida específico ( representación de página ).
El artículo de Furuta está estructurado en consecuencia.
o marcado tradicional como se describe al principio del artículo). se determina normalmente de forma automática (debería ser uniforme, pero a menudo mayor para fórmulas matemáticas con saltos). TeX también surgió con la especialidad de poner los caracteres en fórmulas matemáticas en diferentes tamaños y ordenarlos entre sí de tal manera que las proporciones cumplan con altos requisitos tipográficos. . Por lo general, esto también se deja al programa de composición tipográfica y, en ocasiones, el resultado automático se corrige manualmente. A la hora de diseñar la portada de un libro, en cambio, “no se deja nada al azar”. ). ") .Sin embargo, la “apariencia de la página” o la “presentación de la página” de un documento no tiene que estar disponible como un archivo de descripción de página separado. Con algunos "editores" puede / podría verlos "directamente" en la pantalla o imprimirlos. troff se ha ampliado a ditroff , que puede generar su propio archivo de descripción de página, otros programas de procesamiento de texto se han equipado con la capacidad de generar PDF.
Con los navegadores web (más precisamente: renderizadores HTML ) y lectores de libros electrónicos (que muestran HTML o EPUB, por ejemplo), la visualización de la página (la ruptura de los párrafos de texto en ejecución) se adapta rápidamente a los cambios de ancho de ventana o tamaño de fuente.
Implementación de la variación de estilo para etiquetado genérico
Implementación de una representación
Para el formateo de texto marcado genéricamente, las reglas generales para manejar las etiquetas individuales (posiblemente dependiendo de los " atributos " en lenguajes de marcado tipo SGML) se especifican en un lenguaje formal (en una especie de programa). Los "archivos de reglas" correspondientes se denominan "hojas de estilo" en el entorno SGML (no con LaTeX). En parte o como primer paso, el formateo consiste en “traducir” el lenguaje genérico a uno de presentación.
En el caso de HTML, el formato de los elementos individuales se determina mediante las instrucciones correspondientes en código CSS . Por ejemplo, la línea CSS dice que un archivo HTML debe mostrarse con texto azul sobre un fondo amarillo y con el texto en elementos debe ser rojo. En el siguiente documento de muestra
<head>
<title>Hallo Welt!</title>
<style type="text/css">
body { color: blue; background-color: yellow; }
em { color: red; }
</style>
</head>
<body>
<em>Hallo,</em> Welt!
<em>Hörst</em> du?
</body>
este código CSS aparece en un style
elemento dentro del head
elemento. El resultado debería ser algo como
Hola mundo
Hace que se oye
ser y lo mismo que con
<head>
<title>Hallo Welt!</title>
</head>
<body style="color: blue; background-color: yellow; ">
<em style="color: red; ">Hallo,</em> Welt!
<em style="color: red; ">Hörst</em> du?
</body>
El segundo archivo ha sido reemplazado por, y cada etiqueta (marcado genérico) en el primer archivo ha sido reemplazada por la de presentación . Entonces, la declaración CSS funciona como si se insertara en todas las etiquetas iniciales. sí mismo y primero debe convertirse a un archivo PDF, por ejemplo. como el código fuente, las cadenas de tokens y otras listas internas en secciones lo más cortas posible. y se descarta después de que una página de impresión ha emitido en gran parte el contenido de memoria requerido para esto (por lo que era posible escribir volúmenes gruesos hace décadas). .
Los ejemplos también deben mostrar dos ventajas del marcado genérico en comparación con el marcado de procedimiento: El código fuente marcado genéricamente requiere menos espacio de almacenamiento que el marcado de presentación (tan pronto como el número de elementos de texto correspondientes excede un número que depende de la complejidad de la regla de reemplazo, que aún no es el caso en el ejemplo ), y con el marcado genérico el texto real que se mostrará es más fácil de encontrar de nuevo en un editor de texto que con el marcado de procedimiento, es más intuitivo de leer. (Consulte también No se repita y la abstracción (informática)) .
Hoy en día, los archivos con la extensión que se leen también determinan el método de visualización:HTML | Látex |
---|---|
|
|
Las dos líneas CSS de antes ahora podrían estar en el archivo style.css
que se vería así:
body { color: blue; background-color: yellow; }
em { color: red; }
Cambio de pantalla
En el par de ejemplos anterior, ahora puede cambiar la visualización del código fuente de texto seleccionado cambiando el "encabezado":
HTML | Látex | |||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
elemento tiene el mismo efecto. Aparte de la fuente, el resultado con HTML como LaTeX debería verse así:
Textil | Traducción en XHTML | Representación de ejemplo |
---|---|---|
h3. Unterabschnitt |
<h3>Unterabschnitt</h3> |
Subsección |
(similar a Haml ). Como resultado, el marcado interrumpe mínimamente el flujo de lectura al escribir el artículo en la ventana del formulario. Para la presentación de documentos de este marcado se encuentra en el lado del servidor en el requerido para este complejo lenguaje de marcado como HTML o XHTML convertido , por ejemplo por Pandoc o, como en el caso de Wikipedia, por el software MediaWiki .
MediaWiki- Wikitexto | Markdown como este ... | … más o menos: | resultados en XHTML | Ejemplo de representación|
---|---|---|---|---|
|
|
|
||
|
|
|
|
|
|
|
|
W3C | |
|
|
|
|
grasa |
|
|
|
|
itálico |
Además, los lenguajes de marcado simplificados normalmente prescinden del uso de saltos de línea de código simples y la sangría del código únicamente para estructurarlo (en el sentido de legibilidad y comprensibilidad); más bien, en el caso de MediaWiki, por ejemplo, un salto de línea finaliza un párrafo sangrado ( "sangría francesa" ) en una lista o una cita en bloque . Un asterisco ( *
) inmediatamente después inicia un elemento de lista (nuevo) y se muestra como una viñeta tipográfica . Las desventajas de este método son posibles colisiones con otra función de los caracteres correspondientes, lo que puede provocar errores. En Markdown, p. Ej. B. El texto en cursiva comienza con un asterisco ( ich rufe *laut* um Hilfe
), que al principio de la línea ( *laut* rufe ich um Hilfe
) puede entrar en conflicto con el uso de una entrada de lista. El código sangrado (es decir, el salto de línea del código va seguido de al menos un espacio ) se representa en Wikitext "literalmente" como "código" (sin resaltar la sintaxis). Los artículos Wikitext y Markdown , así como los demás artículos de la categoría: Lenguaje de marcado simplificado, ofrecen ejemplos más precisos .
- Etiquetas para etiquetado adicional de una base de datos con información adicional y para categorización;
- Transclusiones para incluir partes de otros documentos por referencia. ) se pueden convertir.
- El BBCode se ha establecido en foros .
- Para incrustar documentación estructurada en programas de computadora ( Plain Old Documentation (POD) para Perl o Javadoc para Java).
- Markdown , Textile , AsciiDoc y reStructuredText se enfocan en diferentes enfoques.
Desarrollo historico
- se basa estrechamente en esta práctica histórica.
La mayoría de los lenguajes de marcado se han desarrollado mediante el uso de software diferente; apenas existen soluciones estandarizadas o uniformes, aunque las funciones suelen ser similares.
Probablemente el primer lenguaje de marcado simplificado con conversión fue desarrollado por Ward Cunninghams en 1994 y publicado en 1995 como WikiWikiWeb junto con Portland Pattern Repository , ver también Chronology of Hypertext Technologies .
datos
YAML y su subconjunto JavaScript Object Notation (JSON) son lenguajes de marcado simplificados para la serialización de datos .
Lenguaje de marcado | extensión de archivo | Tipo de Mimica |
---|---|---|
HTML |
.htm , .html
|
text/html
|
Posdata | .ps |
application/postscript
|
Formato de texto enriquecido | .rtf |
text/rtf
|
TeX / LaTeX | .tex |
text/x-tex
|
XML | .xml |
text/xml
|
lenguajes de marcado.