Escribiendo ficheros docx de Word con Python. Capítulo VII – Estilos

Hemos visto ya unas cuantas cosas: cómo es el documento y algunas de sus características, cómo incluir cabeceros y pies de página, cómo trabajar con texto, reaprovechar una serie de nombres y funcionalidad para hacer cosas un tanto más específicas,… Hoy vamos a meternos de forma superficial en los estilos y cómo podemos usarlos para ahorrarnos trabajo y dar formato dónde y cómo queremos.

Microsoft Word dispone de muchos estilos que podemos ver en la interfaz gráfica del procesador de textos. Es importante conocerlos puesto que cualquier cosa que escribamos en un documento tiene un estilo asociado. Es conveniente que sea así puesto que podemos reaprovechar una serie de características para aplicarlas en las partes del documento que necesitemos. Por ejemplo, imaginad que trabajáis en una empresa que utiliza una serie de colores en toda su documentación que son parte de su imagen corporativa. Podría ser que todas las tablas tienen un cabecero que es verde y una primera columna que es verde, que todas las celdas están centradas y la fuente es tamaño 10 Pt,… Simplemente seleccionando ese estilo predefinido podríamos aplicarlo a las tablas que necesitemos. Los estilos nos ayudan a identificar también partes del contenido. Un estilo se aplica a un cabecero, a un párrafo, a una tabla o a una lista.

Os voy a dejar esta metáfora escrita por Allen Wyatt:

“Styles are nothing more than a named definition of how text should appear. You can best understand this by comparing your text to water (this is your content). The appearance of the water depends on the attributes of the container in which it is placed. If you place it in a glass it will look one way; if you place it in a pitcher, it looks a different way. The relationship between text and styles is no different; if you change the style that has been applied to text, then the appearance of the text automatically changes.”

Que traducido libremente sería:

“Los estilos no son más que una definición de cómo debería aparecer el texto. Lo podemos entender mejor comparando nuestro texto con agua (nuestro contenido). La apariencia del agua depende de los atributos del contenedor que la contiene. Si colocas el agua en un vaso de cristal se verá de una forma, si la colocas en una jarra se verá de forma diferente. La relación entre el texto y los estilos no es diferente, si cambias el estilo que has aplicado a un texto el texto cambia de forma automática.”

Bueno, nos metemos en harina. Ya vimos en el anterior capítulo los enums que teníamos de estilos:

Voy a sacar información sobre los estilos:

Lo anterior mostrará algo como lo siguiente:

Hago una comprobación que comento más abajo:

Como veis, hay un montón de estilos. También podéis ver que lo que está en la enum WD_BUILTIN_STYLE está también en la enum WD_STYLE. A lo largo del tutorial voy a usar el primero porque explícito es mejor que implícito. Por último, también veis que los estilos tienen tipos que pueden ser caracter, lista, párrafo o tabla.

Inspeccionando los estilos

Cuando creamos un documento este documento tiene una serie de estilos:

Lo anterior mostrará algo como:

Si inspecciono lo que hay en el objeto Styles:

Veo lo siguiente:

Vemos que el objeto Styles, que contiene los estilos disponibles en la plantilla base, proporciona un método default. Este método nos indica qué tipo de estilo se usoó para cada tipo de contenido:

Lo anterior mostrará en pantalla:

Vemos que el estilo de párrafo por defecto es 'Normal' y que el estilo de tabla por defecto es 'Normal Table'. El carácter, por ejemplo, no tiene un estilo explícito y hereda lo que necesita del párrafo o de la tabla en la que se encuentre a no ser que definamos un estilo para el carácter que estemos añadiendo.

Como hemos comentado, la plantilla que tenemos por defecto dispone de una serie de estilos. Vamos a ver cuáles son:

El anterior código mostrará:

Algunos están contenidos en WD_BUILTIN_STYLE (para estos la columna Is Builtin vale 1) y otros no (en la columna Is Builtin vale 0). Algunos tienen tipo TABLE' o 'CHARACTER,… Ok, vamos a intentar entender esto un poco mejor.

¿Qué es un estilo built-in, un estilo latente,…?

El procesador de textos Microsoft Word, dependiendo de la versión, dispone de cientos de estilos predefinidos. Podéis ver una lista aquí. Como cada estilo predefinido ocupa espacio no todos los estilos se incluyen en el documento docx. Los estilos que son built-in pero que no se incluyen por defecto en el documento se conocen como estilos latentes (latent styles). Si usamos uno de estos estilos latentes en nuestro documento entonces se incluye una referencia al mismo en styles.xml dentro del fichero docx (ver imagen más abajo para ver la jerarquía de ficheros dentro de un fichero docx) pero no se añade el estilo latente completo. Esto se hace así para ahorrar espacio en el fichero docx. Los estilos latentes están en el propio procesador de textos (MS Word, LibreOffice, OpenOffice,…) y cuando el procesador de textos encuentra una referencia a uno de estos estilos latentes dentro del fichero docx con el que estemos trabajando sabrá cómo aplicar ese estilo latente al documento cuando lo muestra en pantalla.

Para entender todo esto un poco mejor es mejor que visitéis esta sección de la documentación: https://python-docx.readthedocs.io/en/latest/user/styles-understanding.html

Aplicando estilos

Más de uno pensará, –Todo este rollo que nos has contado está muy bien pero, ¿cómo aplicamos los estilos a nuestro documento?-. Muy bien, ahora llegamos a eso.

Como habéis visto hay estilos que se aplican a diferentes partes del texto, estilos a nivel de párrafo, a nivel de tabla, a nivel de run o carácter,… Si una parte no tiene un estilo definido hereda el estilo de lo que lo contiene. Por ejemplo, si definimos un run dentro de un párrafo pero no le indicamos estilo al run entonces este tomará las propiedades del tamaño de fuente, tipo de fuente,…, del estilo del párrafo. Como vimos más arriba los párrafos tienen un estilo predefinido, 'Normal'.

Vamos a dejar de hablar y vamos a empezar a aplicar estilos. Voy a crear un documento con todos los estilos disponibles en la plantilla para que podamos visualizar cómo son:

En el anterior código lo único que hacemos es crear texto y tablas a las cuales les aplicamos un estilo u otro dependiendo de lo que son y creamos un documento que contiene todos los estilos (menos el de listas) para que tengáis un documento que podáis visualizar. Por ejemplo, en la parte de tablas podréis ver páginas parecidas a lo siguiente:

No vamos a entrar en los detalles de todos los estilos. Podéis abrir el documento que acabamos que crear y echarle un ojo a cada uno de los que os interesen para vuestros documentos.

Usando nuestros propios estilos

Obviamente, podemos crear nuestros propios estilos con nuestra imagen corporativa. Vamos a trabajar un poco con esto para ver cómo podemos tener un documento hecho a la imagen y semejanza de nuestra empresa, marca o lo que sea.

Vamos a crear un estilo para párrafos y lo vamos a aplicar a nuestro documento. Los estilos para otras cosas seguirán una mecánica similar.

Como habitualmente, empezamos creando una nueva instancia de Document y “extrayendo” los estilos:

Vamos a crear un estilo para el párrafo. Todos los párrafos de texto normal (sin contar títulos, encabezados,…) tendrán este estilo:

Vamos a añadir unos cuantos párrafos al documento usando este estilo y guardamos el documento:

Vuestro documento se debería parecer en algo al siguiente:

Vemos que la primera línea tiene una indentación de 2 cm, la separación entre párrafos por arriba y por abajo es generosa, el color es gris, usamos “Comic Sans MS” como fuente con un tamaño de 11 puntos.

Resumiendo

Los estilos son algo un tanto complejo. Aquí hemos visto un poco sobre ello para intentar entender todo un poco mejor pero lo mejor es leer la documentación de los enlaces que he ido dejando en este capítulo para entenderlo todo un poco mejor.

En general, la gente no usa estilos y va formateando el texto a medida que lo va necesitando. Mal hecho. Los estilos son muy potentes y nos permiten dar un formato coherente y homogéneo a nuestros documentos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

91 − = eighty one