Está en la página 1de 4

Mini-gua para crear ficheros RTF

Generar un documento RTF simple (sin tablas ni imgenes, por ejemplo) pero con
cosas interesantes (fuentes, colores, prrafos, incluso estilos!) es muy fcil.

En ingls hay una pequea gua en http://search.cpan.org/~sburke/RTF-


Writer/lib/RTF/Cookbook.pod, pero no llega a meterse en estilos. Tambin est la
especificacin completa del formato RTF en la web de Microsoft. Yo necesitaba
algo intermednio, y no parece haber guas en castellano, as que aqu est lo que
he aprendido y estoy usando.

Detalles interesantes:

RTF es una especie de lenguaje de markup. Hay quien lo compara con TeX. As
que si el RTF se construye con algo cuidado, ser bastante legible al abrirlo como
texto plano.

Mi RTF necesitaba estilos porque contiene cosas de diferentes fuentes, que quiero
poder mantener con formatos diferentes. (Si usas Word o similares con alguna
regularidad y no sabes lo que son los estilos, deja esto y dedica un par de
minutos a enterarte, porque te simplificar la vida enoooormemente.)

Dentro del RTF, los saltos de linea (chars 0Ah y 0Dh) son ignorados. Ayuda para
mantener el texto legible en plano, e implica que tienes que usar otros
mecanismos para meter saltos de lnea interpretables en RTF. Yo uso prrafos,
que junto a los estilos van perfectos para mi propsito.

Queda raro que haya que repetir los comandos de formato tras especificar el
estilo de un prrafo (\s1\b\f1\sb200), pero la especificacin avisa de que "puede
ser necesario", y Word, Wordpad y SimpleText (Mac) lo necesitan. Curiosamente,
para OpenOffice, basta con el estilo (\s1). Los dems, si no pones los comandos
de formato, muestran el texto con estilo aplicado pero sin formato.

{\rtf1\ansi

La cabecera. Word 2007 an usa RTF 1.9, que usa sintaxis RTF 1.

{\fonttbl {\f1 \froman\fprq2 Times New Roman;}{\f2 \fmodern\fprq1 Courier


New;}}

La tabla de fuentes. f1 ser una fuente serif, de ancho variable, a ser posible
Times New Roman. f2 ser una fuente modern (ancho fijo), re-especifico ancho
fijo, a ser posible Courier New.
{\colortbl;\red255\green0\blue0;}

Tabla de colores. El color 0 queda sin especificar, gracias al primer ";" (o sea,
color auto). El color 1 es rojo.

{\stylesheet {\s1 \sqformat\sautoupd\spriority1 \b\f1\sb200 Estilo 1;}{\s3


\sqformat\sautoupd\spriority1 \f2\cf1 Estilo 3;}}

Tabla de estilos. s1 usar la fuente 1 en bold, con un tamao de 200 twips (=10
puntos), y se llamar "Estilo 1". s3 usar la fuente 2, en (front) color 1, y se
llamar "Estilo 3". He saltado s2 porque s: no es necesario usarlos en orden.

sqformat har que el nombre del estilo aparezca en la Ribbon de Quick Styles de
Word 2007. sautoupd activa el autoupdate de estilos, para que incluso la gente
que no sabe lo que son los estilos tenga la oportunidad de beneficiarse de ellos.
spriority1 hace que los estilos aparezcan entre los primeros de la lista.

{\pard \s1\b\f1\sb200

Una linea en estilo 1

\par}

{\pard y \par} delimitan los prrafos y sus estilos. En realidad, la cosa es ms


complicada, pero si ests leyendo esta gua es que no quieres los.

Tras abrir el prrafo, especifico el estilo con \s1, y despus repito la especificacin
del formato. Despus ya viene el texto, que podra llevar ms comandos de
formato. Por ejemplo, \b y \b0 activan y desactivan la negrita.

{\pard \s3\f1\sb200\cf1

Una linea en estilo 3

\par}{\pard \s1\b\f1\sb200

Otra linea en estilo 1

\par}

Esto ya debera ser inteligible sin ms.

y cerramos la primera llave, la de la cabecera. Ya tenemos un documento


completo.
En las especificaciones completas hay muchsima ms informacin,
naturalmente. De hecho puede ser mejor no usar la ltima especificacin, porque
cada revisin ha aadido montones de cosas nuevas, y de todas formas es muy
posible que lo que interesa sean cosas relativamente bsicas (y no tablas
anidadas, por poner un ejemplo). Las primeras versiones de la especificacin son
rpidas de asimilar (http://www.snake.net/software/RTF/). Pero por ejemplo Word
2007 y su dichosa Ribbon y sus dichosos Quick Styles cambian un poco el juego y
hacen necesario llegar a la ltima especificacin.

Tengo escrito esto desde hace meses, y quera haberlo arreglado o aadido algo
ms; pero dej de usar RTF hace mucho, as que las probabilidades de que esto
avance son pocas. As que mejor lo publico antes de que el bitrot haga presa.

Share

1 comment

Dayro Longas21 August, 2012 23:38

Le agradezco mucho su post, me aclaro totalmente las dudas de los estilos de


parrafo.

Al final el ejemplo completo queda asi

{\rtf1\ansi

{\fonttbl {\f1 \froman\fprq2 Times New Roman;}{\f2 \fmodern\fprq1 Courier


New;}}

{\colortbl;\red255\green0\blue0;}

{\stylesheet {\s1 \sqformat\sautoupd\spriority1 \b\f1\sb200 Estilo 1;}{\s3


\sqformat\sautoupd\spriority1 \f2\cf1 Estilo 3;}}

{\pard \s3\f1\sb200\cf1

Una linea en estilo 3

\par}{\pard \s1\b\f1\sb200

Otra linea en estilo 1

\par}
}