Ajuste de línea y ajuste de palabra - Line wrap and word wrap

El salto de línea , también conocido como ajuste de palabras , consiste en dividir una sección de texto en líneas para que se ajuste al ancho disponible de una página, ventana u otra área de visualización. En la pantalla de texto, ajuste de línea continúa en una nueva línea cuando una línea está llena, por lo que cada uno encaja línea en la ventana visible, permitiendo de texto para ser leído de arriba a abajo sin ningún horizontal de desplazamiento . El ajuste de palabras es la característica adicional de la mayoría de los editores de texto , procesadores de texto y navegadores web , que consiste en dividir líneas entre palabras en lugar de entre palabras, cuando sea posible. El ajuste de palabras hace que sea innecesario codificar los delimitadores de nueva línea dentro de los párrafos y permite que la visualización del texto se adapte de forma flexible y dinámica a pantallas de distintos tamaños.

Retornos suaves y duros

Un retorno suave o un ajuste suave es el salto resultante de un ajuste de línea o un ajuste de palabras (ya sea automático o manual), mientras que un retorno duro o un ajuste duro es un salto intencional que crea un nuevo párrafo. Con un retorno duro, el formato de salto de párrafo puede (y debe) aplicarse (ya sea con sangría o espacios en blanco verticales). La envoltura suave permite que la longitud de las líneas se ajuste automáticamente con ajustes al ancho de la ventana del usuario o la configuración de los márgenes, y es una característica estándar de todos los editores de texto, procesadores de texto y clientes de correo electrónico modernos . Los descansos suaves manuales son innecesarios cuando el ajuste de palabras se realiza automáticamente, por lo que presionar la tecla "Enter" generalmente produce un retorno duro.

Alternativamente, "retorno suave" puede significar un salto de línea almacenado intencional que no es un salto de párrafo. Por ejemplo, es común imprimir direcciones postales en un formato de varias líneas, pero se entiende que las varias líneas son un solo párrafo. Se necesitan saltos de línea para dividir las palabras de la dirección en líneas de la longitud adecuada.

En los procesadores de texto gráficos contemporáneos Microsoft Word y OpenOffice.org , se espera que los usuarios escriban un retorno de carro ( ) entre cada párrafo. La configuración de formato, como la sangría de la primera línea o el espaciado entre párrafos, se aplica cuando el retorno de carro marca el salto. Un salto de línea sin párrafo, que es un retorno suave, se inserta usando + o mediante los menús, y se proporciona para los casos en que el texto debe comenzar en una nueva línea pero no se desea ninguno de los otros efectos secundarios de comenzar un nuevo párrafo . EnterShiftEnter

En los lenguajes de marcado orientados al texto, normalmente se ofrece un retorno suave como una etiqueta de marcado. Por ejemplo, en HTML hay una etiqueta <br> que tiene el mismo propósito que el retorno suave en los procesadores de texto descritos anteriormente.

Unicode

El algoritmo de ruptura de línea Unicode determina un conjunto de posiciones, conocidas como oportunidades de ruptura , que son lugares apropiados para comenzar una nueva línea. Las posiciones de salto de línea reales se seleccionan de entre las oportunidades de salto por el software de nivel superior que llama al algoritmo, no por el algoritmo en sí, porque solo el software de nivel superior conoce el ancho de la pantalla en la que se muestra el texto y el ancho de los glifos que componen el texto mostrado.

El juego de caracteres Unicode proporciona un carácter separador de línea así como un separador de párrafo para representar la semántica del retorno suave y el retorno completo.

SEPARADOR DE LÍNEA 0x2028
* puede usarse para representar esta semántica sin ambigüedades
0x2029 SEPARADOR DE PÁRRAFOS
* puede usarse para representar esta semántica sin ambigüedades

Límites de palabras, separación de palabras y espacios duros

Los retornos suaves generalmente se colocan después del final de las palabras completas o después de la puntuación que sigue a las palabras completas. Sin embargo, el ajuste de palabras también puede ocurrir después de un guión dentro de una palabra. A veces, esto no se desea y se puede bloquear mediante un guión que no se rompa o un guión duro , en lugar de un guión normal.

Una palabra sin guiones se puede ajustar al incluir guiones suaves . Cuando la palabra no se ajusta (es decir, no se divide entre líneas), el guión suave no es visible. Pero si la palabra está delimitada por líneas, esto se hace en el guión suave, momento en el que se muestra como un guión visible en la línea superior donde se divide la palabra. (En el raro caso de que una palabra se pueda envolver dividiéndola entre líneas pero sin que aparezca un guión, se coloca un espacio de ancho cero en los puntos de ruptura permitidos en la palabra).

A veces, el ajuste de palabras no es deseable entre palabras adyacentes. En tales casos, el ajuste de palabras generalmente se puede bloquear usando un espacio duro o un espacio que no se separe entre las palabras, en lugar de espacios regulares.

Ajuste de palabras en texto que contenga chino, japonés y coreano

En chino , japonés y coreano , el ajuste de palabras suele ocurrir antes y después de cualquier carácter Han , pero no se permite que ciertos caracteres de puntuación comiencen una nueva línea. Los kana japoneses , letras del alfabeto japonés, se tratan de la misma manera que los caracteres Han ( Kanji ) por extensión, lo que significa que las palabras pueden y tienden a romperse sin ningún guión u otra indicación de que esto haya sucedido.

Sin embargo, en determinadas circunstancias, no se desea el ajuste de palabras. Por ejemplo,

  • Es posible que no se desee el envoltorio de palabras dentro de los nombres personales, y
  • Es posible que no se desee el ajuste de palabras dentro de las palabras compuestas (cuando el texto está alineado a la izquierda, pero solo en algunos estilos).

La mayoría de los procesadores de texto y software de composición tipográfica existentes no pueden manejar ninguno de los escenarios anteriores.

La puntuación CJK puede seguir o no reglas similares a las circunstancias especiales mencionadas anteriormente. Corresponde a las reglas línea de rotura en CJK .

Sin embargo, siempre se aplica un caso especial de reglas de salto de línea en CJK: el ajuste de línea nunca debe ocurrir dentro del guión y puntos suspensivos de CJK. Aunque cada uno de estos signos de puntuación debe estar representado por dos caracteres debido a una limitación de todas las codificaciones de caracteres existentes , cada uno de ellos es intrínsecamente un único signo de puntuación de dos ems de ancho, no dos de un em de ancho.

Algoritmo

El ajuste de palabras es un problema de optimización . Dependiendo de para qué necesita optimizarse, se utilizan diferentes algoritmos.

Número mínimo de líneas

Una forma sencilla de ajustar palabras es usar un algoritmo codicioso que ponga tantas palabras en una línea como sea posible, luego pasar a la siguiente línea para hacer lo mismo hasta que no queden más palabras para colocar. Este método lo utilizan muchos procesadores de texto modernos, como OpenOffice.org Writer y Microsoft Word. Este algoritmo siempre utiliza el número mínimo posible de líneas, pero puede dar lugar a líneas de longitudes muy variables. El siguiente pseudocódigo implementa este algoritmo:

SpaceLeft := LineWidth
for each Word in Text
    if (Width(Word) + SpaceWidth) > SpaceLeft
        insert line break before Word in Text
        SpaceLeft := LineWidth - Width(Word)
    else
        SpaceLeft := SpaceLeft - (Width(Word) + SpaceWidth)

Donde LineWidthes el ancho de una línea, SpaceLeftes el ancho restante del espacio en la línea para llenar, SpaceWidthes el ancho de un carácter de espacio simple, Textes el texto de entrada para iterar y Wordes una palabra en este texto.

Mínima irregularidad

Un algoritmo diferente, utilizado en TeX , minimiza la suma de los cuadrados de las longitudes de los espacios al final de las líneas para producir un resultado estéticamente más agradable. El siguiente ejemplo compara este método con el algoritmo codicioso, que no siempre minimiza el espacio al cuadrado.

Para el texto de entrada

AAA BB CC DDDDD

con un ancho de línea 6, el algoritmo codicioso produciría:

------    Line width: 6
AAA BB    Remaining space: 0
CC        Remaining space: 4
DDDDD     Remaining space: 1

La suma del espacio al cuadrado que queda con este método es . Sin embargo, la solución óptima logra la suma más pequeña :

------    Line width: 6
AAA       Remaining space: 3
BB CC     Remaining space: 1
DDDDD     Remaining space: 1

La diferencia aquí es que la primera línea se rompe antes en BBlugar de después, lo que genera un mejor margen derecho y un costo menor 11.

Mediante el uso de un algoritmo de programación dinámica para elegir las posiciones en las que romper la línea, en lugar de elegir los cortes con avidez, la solución con un mínimo de irregularidad se puede encontrar en el tiempo , donde está el número de palabras en el texto de entrada. Por lo general, la función de costo de esta técnica debe modificarse para que no cuente el espacio que queda en la última línea de un párrafo; esta modificación permite que un párrafo termine en medio de una línea sin penalización. También es posible aplicar la misma técnica de programación dinámica para minimizar funciones de costo más complejas que combinan otros factores como el número de líneas o los costos de dividir palabras largas con guiones. Los algoritmos de tiempo lineal más rápidos pero más complicados basados ​​en el algoritmo SMAWK también son conocidos por el problema de irregularidad mínima y por algunas otras funciones de costo que tienen propiedades similares.

Historia

En 1955 se utilizó una característica primitiva de salto de línea en una "unidad de control de impresora de páginas" desarrollada por Western Union . Este sistema usaba relés en lugar de computadoras digitales programables y, por lo tanto, necesitaba un algoritmo simple que pudiera implementarse sin búferes de datos . En el sistema de Western Union, cada línea se interrumpe en el primer carácter de espacio que aparece después del carácter 58, o en el carácter 70 si no se encuentra ningún carácter de espacio.

El codicioso algoritmo para el salto de línea es anterior al método de programación dinámica esbozado por Donald Knuth en un memorando inédito de 1977 que describe su sistema de composición tipográfica TeX y publicado posteriormente con más detalle por Knuth y Plass (1981) .

Ver también

Referencias

enlaces externos

Algoritmo de Knuth

Otros enlaces de ajuste de palabras