Versión 1.0 - mayo de 2016
Conforme escribimos con una máquina de escribir el carro se desplaza hacia la izquierda hasta que se acaba la línea. Para continuar en la línea siguiente hay que hacer dos cosas: girar el tambor una línea y mover el carro hacia la derecha hasta el principio de la línea. Estos dos movimientos vienen en el código ASCII: LF (línea nueva, código decimal 10) y CR (retorno de carro, número decimal 13). En un archivo de texto se indica la línea nueva de diferente manera según el sistema operativo: en GNU/Linux y Mac OS X solo con el carácter LF, en Windows con los caracteres CRLF y en Mac antes del OS X solo con CR. Si alguna vez abres un fichero en Windows y te encuentras con una desagradable única línea muy larga pues ya sabes que has abierto un archivo de texto hecho en GNU/Linux (aunque los editores modernos suelen hacer la conversión automáticamente). Cuando se transfieren ficheros de texto por FTP el programa añade o quita los LF o CR necesarios para que el fichero se vea correctamente en el sistema operativo de destino. Incluso le modifica también la codificación de caracteres. Generalmente el programa de FTP hace esto automáticamente aunque se puede equivocar al detectar el tipo de fichero y por eso se puede indicar manualmente el tipo de transmisión. Si transmitimos ficheros de texto como binario no se realizarán dichas conversiones y si transmitimos ficheros binarios como texto estropearemos el fichero puesto que se le añadirán bytes y eso puede hacer que ese fichero quede corrupto y ya no sirva. Y los estándares de internet establecen que el fin de línea en un fichero de texto transmitido por la red sea CRLF por lo que un fichero transmitido entre dos sistemas Windows no precisaría conversión pero entre dos GNU/Linux sí, de LF a CRLF para transmitirlo y vuelta a LF en el ordenador de destino.
Si el texto comprendido entre dos saltos de línea no cabe en la ventana del editor de texto hay tres opciones:
Este es un ejemplo de una línea bastante larga, tanto que se me acaban las palabras que escribir de ejemplo y tendré que empezar a escribir palabras sin sentido como coticón, barburillo, tendrencismo, etc. pero sobre todo lo que debes observar es lo incómodo que resulta leer esta línea salvo que por caso de extrema necesidad tenga que ser tan larga como al escribir una URL o un código que no se pueda partir en dos líneas.
En Latex, Groff, Texinfo, etc., los párrafos no se indican con un salto de línea sino con dos seguidos, esto es con una línea en blanco. Por tanto da igual si hacemos soft o hard wrap, a Latex le da igual. Es tan solo la preferencia que tengamos a la hora de leer el fichero fuente de Latex. Por tanto no hay relación entre salto de línea y párrafo.
En el codigo html tampoco hay relación entre salto de
línea y párrafo, de hecho un párrafo es el texto
comprendido entre las etiquetas <p>
, el cual
se puede ajustar dinámicamente al ancho de la ventana del
navegador. Si queremos saltos duros tenemos que usar la etiqueta
<br>
.
En los procesadores de texto, como OpenOffice, el texto fluye
por la ventana hasta que pulsemos la tecla Entrar
o
insertemos un salto de línea manual. Por tanto aquí
sí hay relación directa entre salto de línea y
párrafo.
Si tenemos un fichero de texto simple con ajuste duro y
copiamos el texto a un procesador de texto el texto no se ajusta
a la ventana por culpa de los saltos de línea. En ese caso
es mejor usar el comando pandoc
.
¿Por qué se usa muchas veces el ajuste duro en lo
ficheros fuente de html, latex, etc.? Antiguamente mucho software
no permitía el soft wrap y por tanto era imprescindible para
leer bien las líneas en monitores de 80 caracteres de ancho
pero incluso ahora las líneas cortas son muy útiles
puesto que facilitan hacer cambios automáticos mediante
sed
. Es mucho más fácil trabajar con una
línea de 70 caracteres que con una línea de 2000. Por
otro lado el ajuste dinámico es muy útil para un
trabajo directo por una persona puesto que aunque cambie el
tamaño de la ventana el texto y los párrafos se leen
perfectamente. Por tanto son maneras diferentes de trabajar, pero
la primera es mucho más potente. Por ejemplo si gestionas la
web de una empresa formada por 2000 ficheros html y esta empresa
es absorbida por otra y por tanto se debe cambiar el nombre
corporativo en todos los ficheros, con un guión de
bash
que use sed
el cambio es trivial y
mucho más fácil con líneas cortas que largas.
De igual manera en ficheros de configuración o en código fuente de programas de ordenador el ajuste dinámico no es deseable porque no sabes muy bien cuáles son saltos de línea duros o blandos y esto genera fallos difíciles de encontrar.
Conforme editamos un fichero fuente Latex o html los párrafos quedan bastante
difíciles de leer a no ser que hagamos un pesado trabajo a mano cada vez que
los modificamos. Sin embargo es más práctico no preocuparse por eso y al
acabar formatearlo con fmt
o tidy
en el caso de los
html (que también identa el código facilitando su lectura). El editor
Kile
, si está configurado para recortar las líneas, realiza este
ajuste conforme escribimos o editamos.
En el correo electrónico el salto de línea se indica con CRLF tal como indica la RFC-822 original y sus sucesoras la RFC-2822 y RFC-5322. Además se indica que las líneas nunca pueden superar los 998 caracteres y que es deseable que no superen los 78 caracteres.
Al escribir un mensaje podemos hacer nosotros un ajuste
estático manual o dejar que el editor de nuestro programa de
correo haga automáticamente un ajuste dinámico o
estático. Pero esto es solo lo que vemos al escribir. Cuando
el mensaje se envíe, el programa de correo cortará
todas las líneas por los 78 caracteres para cumplir con el
estándar. Cuando los monitores solo mostraban 80 caracteres
o incluso después con monitores más grandes y de mayor
resolución el recortar las líneas a 78 caracteres no
suponían un problema (sí era un problema si copiabas el
mensaje y lo querías reutilizar en procesador de texto como
hemos vista anteriormente). Pero ahora que hay pantallas
pequeñas que no muestran 78 caracteres (como los
teléfonos móviles) estos saltos duros generan escaleras
muy incómodas de leer y en esos casos es más útil
el ajuste dinámico.
Este es un texto con líneas de 78 caracteres de ancho que se ve perfectamente en una pantalla de ordenador por pequeña que sea pero que si se ve en la pantalla de un móvil se ve más o menos así, como una escalera bastante incómoda de leer e incluso de reutilizar el texto.
Para sacar partido al ajuste dinámico y seguir cumpliendo con el estándar de los 78 caracteres se usa el estándar RFC-3676 . Si el programa de correo cumple este estándar y lo tenemos configurado como formato flowed, los saltos de línea obligados a los 78 caracteres los codifica como un espacio seguido por CRLF (SPCRLF) mientras que los saltos duros incluidos por el usuario son cualquier carácter seguido de CRLF. De este modo el cliente de correo del receptor elimina los SPCRLF y hace un ajuste dinámico para adecuar el mensaje al tamaño de la ventana. Si tenemos configurado el formato como fixed los saltos cada 78 caracteres sí son saltos duros y el cliente receptor no puede reorganizar el texto.
También se puede usar el estándar RFC-2045 . En este caso los saltos suaves se indican con un signo igual justo antes del salto de línea. La función más importante de este estándar es enviar texto no ASCII (caracteres que no sean del inglés) o ficheros binarios usando solo 7 bits. El texto codificado con este estándar se llama codificación Quoted-Printable.
A mi particularmente me gusta leer los mensajes recibidos y mis redacciones con ancho fijo para no tener que ajustar el tamaño de la ventana (me gusta usar las ventanas maximizadas a tope) pero los envío como flowed para que el receptor haga lo que desee configurando su cliente (solo Thunderbird me permite configurar todo esto a mi gusto). Realmente la mayoría de las personas posiblemente lean los mensajes con línea largas en los anchísimos monitores actuales y preferiría mandarlos como fixed pero como mucha gente lee los correos en el móvil por eso prefiero enviarlo como flowed.
Con GPG (pero no con S/MIME) o enviando código fuente en el cuerpo del mensaje es mejor no usar ni flowed ni quoted printable para que los programas de correo no modifiquen absolutamente nada del mensaje (y lógicamente mantener las líneas a mano por debajo de 78 caracteres, porque automáticamente no sabemos lo que nos pondrá el editor del cliente de correo, por ejemplo Thunderbird introduce salto suave con espacio y CRLF).
Relacionado con lo anterior si queremos usar tildes en las
cabeceras usamos encoded-words
que vienen en el
estándar RF2047.
Thunderbird 91.5.0. Están bastante
escondidas y son bastante liosas pues generalmente están
relacionadas. Se configuran en:
Editar > Preferencias > Avanzado > General >
Editor de configuración
En esta versión los saltos suaves los envía como format flowed (espacio y CRLF), no como quoted-printable (igual y CRLF). Por tanto es difícil ver en el código fuente del mensaje si hay saltos suaves o no. Tampoco interpreta los saltos suaves codificados como quoted-printable, pero sí interpreta los caracteres noascii codificados como quoted-printable.
Para enviar los mensajes con diferentes codificaciones:
mail.strictly_mime
false
: codifica con 8 bits. Puede enviar saltos suaves format flowed si mailnews.send_plaintext_flowed es true.
true
: codifica con 7 bit. Si hay caracteres noascii no usa quoted-printable para codificarlos
sino base64. Con esta codificación el texto no es legible por humanos y las líneas del texto codificado se cortan
a 78 caracteres. Además el mensaje ocupa más espacio que con quoted-printable u 8 bit. Al decodificar, si hay saltos
suaves de format flowed (espacio y CRLF) porque mailnews.send_plaintext_flowed es true el cliente puede interpretarlos.
Para enviar como format flowed o fixed:
mailnews.send_plaintext_flowed
true
: format flowed (espacio y CRLF), permite reorganizar el texto al
receptor.
false
: fixed (no permite reorganizar el texto al
receptor)
Para leer como format flowed (espacio y CRLF) o fixed:
mailnews.display.disable_format_flowed_support
true
: fixed (no reorganiza el texto y se lee con
ancho fijo)
false
: flowed (reorganiza el texto a la anchura de
la ventana).
Para redactar y que el ancho sea el de la ventana o que el
editor incluya saltos de línea suaves (espacio y CRLF) a una anchura
determinada:
mail.compose.wrap_to_window_width
true
: la línea se ajusta a la anchura de la
ventana (aunque puede ser necesario ajustar mailnews.wraplength
a 0.
false
: la línea se corta a una anchura
determinada (controlada por mailnews.wraplength
)
En ambos casos las líneas más largas de 78 se cortan.
Si mailnews.send_plaintext_flowed
es cierto la cabecera del mensaje incuirá el texto format=flowe y así, si el cliente
está configurado para interpretar los saltos suaves lo hará. Si ponemos falso no pondrá dicho texto y el cliente no hará nada, aunque realmente
los saltos suaves están ahí, no ha incluido saltos duros.
Ahora lo tengo configurado para no enviar format flowed (pone saltos blandos con espacio y CRLF pero no indica format=flowed en la cabecera,
así que lo que yo veo en mi editor es lo que verá el receptor, o eso espero...)
y no permito que interprete los saltos suaves, para ello:
mail.strictly false
mailnews.send_plaintext_flowed false
mailnews.display.disable_format_flowed_support true
mail.compose.wrap_to_window_width false
mailnews.wraplength 72
Si introduzco una línea si espacios, el editor no pone saltos suaves, y si supero los 998 caracteres Thunderbird
automáticamente codifica el mensaje en base64 y corta las líneas codificadas a los 78 caracteres para cumplir con el estandar.
Para ver el código fuente de los mensajes pulsamos
Ctrl+u
Más información:
http://kb.mozillazine.org/Mail_and_news_settings
http://kb.mozillazine.org/Plain_text_e-mail_-_Thunderbird#Flowed_format
http://kb.mozillazine.org/Mail_content_types#Plain_text
Gmail. Permite enviar como texto o como html.
Envía las tildes como quoted-printable. El editor permite
adaptar las líneas al tamaño de la ventana pero al
enviar pone saltos duros a los 70 caracteres. Debido a las tildes
codificadas mediante quoted-printable las líneas son
más largas y entonces introduce saltos suaves a los 77
caracteres pero el mensaje le llega al receptor con saltos duros
cada 70 caracteres.
Lee bien los mensajes quoted-printable con saltos suaves.
Lee bien los mensajes format flowed con saltos suaves.
Roundcube Webmail/0.5.3. Permite enviar como
texto o como html. Envía las tildes como 8bit. El editor
permite adaptar las líneas al tamaño de la ventana y
envía como format flowed los saltos suaves.
Lee bien los mensajes quoted-printable con saltos suaves.
Lee bien los mensajes format flowed con saltos suaves.
Sylpheed 3.0.2. Para configurar la ventana de
redacción y que no recorte las líneas
automáticamente:
Configuración > Preferencias comunes > Componer
> Editor
Sylpheed no reconoce el formato flowed por lo que los saltos
suaves de un mensaje entrante se ven como duros.
Para redactar con codificación de 8bit o
quoted-printable:
Configuración > Preferencias comunes > Enviar
> Codificación
Con quoted-printable se pueden usar saltos suaves, pero si el
mensaje no tiene tildes como no tiene falta de usar quoted no lo
usa y por tanto no genera saltos suaves, solo líneas largas
(Sylpheed no sigue la recomendación de los 78 caracteres.
Incluso la obligación de que las líneas no sean mayores
de 998 caracteres lo deja a la elección del usuario, aunque
te informa de que si no recorta puedes perder información).
Con 8bit tampoco crea saltos suaves e igual que antes envía
líneas largas.
Para ver el código fuente, una vez seleccionado un
mensaje pulsamos Ctrl+u. Si pulsamos Ctrl+h muestra las
cabeceras. Si abrimos el mensaje estas teclas ya no funcionan y
ahí que ir al menú Ver
de la ventana del
mensaje.
Mutt 1.5.20.
Su comportamiento depende del editor que usemos. En el fichero
~/.muttrc
podemos activar o desactivar estas
opciones:
set allow_8bit=yes # permite enviar como 8 bits o como quoted-printable
set text_flowed=yes # permite ajustar texto como flowed.
Dependiendo de las combinaciones obtenemos diferentes
resultados.
Si:
set allow_8bit=no
#set text_flowed
en mensaje con líneas más largas de 998 caracteres
intoduce saltos suaves mediante quote-printable
. Si el
mensaje tiene líneas más cortas de 998 y tildes crea
saltos suaves pero si no tiene tildes no pone saltos suaves y
envía una línea larga.
Si:
set allow_8bit=no
set text_flowed
el resultado es idéntico al caso anterior aunque en la
cabecera del mensaje indique format=flowed
.
Si:
set allow_8bit=yes
#set text_flowed
en este caso pone saltos suaves en los mensajes con las
líneas mayores de 998 caracteres pero en los mensajes con
líneas menores de 998, como no precisa
quoted-printable
para las tildes porque usa 8 bit, las
deja sin saltos suaves.
Si:
set allow_8bit=yes
set text_flowed
igual que antes a pesar de poner en la cabecera
format=flowed
.
En los mensajes entrantes codificados
quoted-printable
muestra los saltos suaves con un
"+" al comienzo de la siguiente pseuodolínea, lo cual es muy
práctico porque permite diferenciar fácilmente los
saltos duros de los suaves. También lo hace así si la
línea es más larga que la ventana. Lo que no implementa
es el format=flowed
y simplemente muestra los
mensajes recortados por los saltos duros.
Si pulsas la tecla "h" no muestra el codigo fuente sino todas las cabeceras. Para mostrar el código pulsa "|" y redirige el mensaje al comando less y ahí si lo deseas copia el texto, pero si no cabe en la pantalla es difícil seleccionar todo con el ratón. También se puede ver el código fuente pulsando la tecla "e" (de exportar) y se abre el mensaje en el editor por defecto y luego se puede guardar con otro nombre dónde deseemos.