Cómo establecer objetivos de palabras usando Macros y LibreOffice Basic
Seguramente en algún momento tuviste que escribir una determinada cantidad de palabras. Tal vez por un trabajo, por cuestiones de estudio o porque te encontrás escribiendo un proyecto personal.
Por completar este ejemplo, digamos que necesitamos escribir 20.000 palabras.
Una cosa que podemos hacer es revisar de tanto en tanto el contador debajo de Libreoffice Writter para ver si estamos cerca del objetivo. O también podemos crear un macro que nos permita averiguar esa información simplemente apretando un atajo en el teclado.
La idea es tener un código que nos informe del porcentaje total de palabras que completamos al momento de invocar el macro.
El código
El siguiente código es muy sencillo, y hace exactamente lo que estoy buscando:
REM ***** BASIC ***** REM Macro para dar el porcentaje completado en palabras de un OBJETIVO_TOTAL. Sub contador_objetivo() Const OBJETIVO_TOTAL As Long = 20000 Dim doc As Object Dim wordCount As Long Dim porcentaje As Long doc = ThisComponent wordCount = doc.WordCount porcentaje = (wordCount / OBJETIVO_TOTAL) * 100 MsgBox ("Ya hiciste el " & porcentaje & "% (" & wordCount & " palabras) de un total de " & OBJETIVO_TOTAL & " palabras.") End Sub
La explicación:
La mayor parte del código se encarga de establecer las variables.
De todo, creo que lo más importante es esto:
Const OBJETIVO_TOTAL As Long = 20000
Donde se puede reemplazar “20.000” por la cantidad de palabras que se necesitan completar.
Y también esto otro:
MsgBox ("Ya hiciste el " & porcentaje & "% (" & wordCount & " palabras) de un total de " & OBJETIVO_TOTAL & " palabras.")
Ya que es lo que muestra el mensaje con el porciento terminado cuando invocamos el programa.
¿Cómo utilizar el macro?
Para ponerlo en funcionamiento es necesario:
1) Añadir el macro. Esto puede conseguirse en “Herramientas > Macros > Organizar Macros > Basic”
2) Asignarle un nuevo atajo al macro. Para esto voy a “Herramientas > Personalizar” y luego agregar la combinación de teclas en la pestaña “teclado”.
Macro para contar palabras bajo cada cabecera en LibreOffice Writer
Digamos que tenemos que escribir un proyecto con un total de 20.000 palabras. Escribir todas esas palabras es difícil, en especial cuando lo comparamos con escribir solamente 1.000 palabras.
Entonces decidimos dividir el texto en 20 secciones, para que se vuelva más fácil de completar. Creamos diferentes títulos, cabeceras o “headings” (H1, H2…) y podemos navegar entre esos headings. Pero en un principio no podemos saber cuantas palabras agregamos luego en cada uno.
Este macro que comparto a continuación, escrito en LibreOffice Basic, nos va a ayudar exactamente a eso.
La idea es tener un código que revise todo el texto y encuentre las cabeceras. Luego tiene que informarnos del nombre de la cabecera y su cantidad de palabras. Al final tiene que decirnos la cantidad total de palabras, aunque eso ya lo conocemos del contador dentro del documento.
El código:
Sub ContarPalabrasHeadings() Dim doc As Object Dim cursor As Object Dim para As Object Dim wordCount As Long Dim totalWordCount As Long Dim headingFound As Boolean Dim result As String doc = ThisComponent text = doc.getText() cursor = text.createEnumeration() headingFound = False result = "" wordCount = 0 totalWordCount = 0 While cursor.hasMoreElements() para = cursor.nextElement() If Left(para.ParaStyleName, 7) = "Heading" Then If headingFound Then ' Crea un string para reflejar el número de palabras entre cabeceras result = result & headingText & ": " & wordCount & " palabras" & Chr(10) End If headingText = para.getString() headingFound = True wordCount = 0 Else If headingFound Then ' Contar el número de palabras entre cabeceras trimmedText = Trim(para.getString()) wordsArray = Split(trimmedText, " ") wordCount = wordCount + UBound(wordsArray) + 1 totalWordCount = totalWordCount + UBound(wordsArray) End If End If Wend ' Actualiza la variable result con el número de palabras If headingFound Then result = result & headingText & ": " & wordCount & " palabras" & Chr(10) End If If result = "" Then MsgBox "No se encontraron cabeceras en el documento" Else MsgBox result & Chr(10) & "Total de palabras: " & totalWordCount End If End Sub
Posibles mejoras:
Se me ocurren en este momento dos mejoras que se le pueden agregar al programa:
1- Una forma de contar las palabras debajo de cada heading de forma más precisa. En la forma que se encuentra implementado, encontré que a veces el conteo por secciones puede tener algunas palabras de más o de menos con el conteo total. Nada exagerado de todas maneras, el programa sirve para conseguir una buena idea general de cuanto llevamos avanzado.
2- Se puede modificar el programa para que también nos informe que tipo de cabecera es cada una, H1, H2…
Pero el programa cumple con lo que promete sin necesidad de esas mejoras.
Consejos prácticos para usar en LibreOffice
¿Cómo puedo instalar nuevas tipografías en LibreOffice?
No es necesario instalar tipografías para LibreOffice, lo que hacemos es instalar tipografías a nivel del sistema.
Al instalarla en el sistema operativo, otros programas también pueden aprovecharlas. Una tipografía instalada en el sistema puede usarla LibreOffice, GIMP y otros programas.
En cada sistema operativo la instalación de nuevas fuentes puede variar ligeramente. Lo que es seguro es que por un lado vos descargás, creas o recibí la tipografía para agregar.
Luego buscá en el directorio de raíz la carpeta /usr/share/fonts y dejá el archivo ahi, para que no se pierda.
Acto seguido, dale doble click al archivo de la tipografía (puede ser de extensión .otf o .ttf por ejemplo) y luego dale click a instalar.
Con eso tendrías que tener la tipografía instalada y ubicada en el directorio correcto.
¿Cómo puedo usar la tipografía Times New Roman en LibreOffice en Linux?
Si tuviera que apostar, diría que esta es una de las preguntas más comunes cuando instalamos LibreOffice por primera vez.
Respuesta corta: No vas a encontrar la tipografía Times New Roman en LibreOffice, porque esa tipografía tiene un tipo de licencia que no permite su uso libre.
Lo mejor va a ser que uses una tipografía equivalente, por ejemplo Liberation Serif que si viene lista para usar. Puede servirte como un buen reemplazo y vas a evitarte vueltas.
Respuesta larga: Es posible usar la tipografía Times New Roman en GNU/Linux. Así podes hacerlo en algunas distribuciones, por ejemplo Ubuntu y Linux Mint. Los pasos son los siguientes:
Por medio de la linea de comandos: Descargá el siguiente conjunto de paquetes,
sudo apt-get install ttf-mscorefonts-installer
Y ahora dale aceptar a la licencia de acuerdo. Bueno, lee primero la licencia y dale aceptar.
¿Cómo darle aceptar? Si, yo tampoco supe en un primer momento. Presiona la tecla Tab y va a posicionarte sobre Aceptar.
Lo mejor ahora es reiniciar el equipo, aunque idealmente las tipografías fueron instaladas y ya están disponibles.
Cuando abras un nuevo programa y vayas a escribir, ya van a estar instaladas.
Por supuesto podes revertir la instalación con el comando:
sudo apt-get purge ttf-mscorefonts-installer
Instalar por medio de un instalador gráfico: La otra manera de instalar Times New Roman en GNU/Linux es utilizando el Software Manager. O Ubuntu Software, el nombre puede variar.
El objetivo es: buscar el paquete ttf-mscorefonts-intaller e instalarlo.
Listo, eso también tiene que conseguirte Times New Roman y otras tipografías que estas buscando. Por ejemplo Arial Black, Arial, Courier New y otras.
Pero en resumen… darle una oportunidad a las tipografías que ya trae el sistema GNU/Linux (u otras de licencias similares) no es mala idea. A menos que sea por algún tipo de obligación laboral/universitaria, en ese caso, ya sabes como conseguirlas.
¿Cómo quitar las cabeceras en LibreOffice?
El modo de remover las cabeceras personalizadas es muy sencillo, solo hay que encontrar el menu correcto. Dirigite hacia:
Formato > Estilo de página > Cabecera
Y desmarcá la opción “Activar Cabecera”.
Como es de esperar, en el mismo menú también vas a poder modificar sus parámetros.
¿Cómo puedo activar los backups automáticos en LibreOffice?
Para activar la opción de realizar respaldos automáticos del documento en que te encontrás trabajando, podes dirigirte al menú:
Herramientas > Opciones… > Cargar/guardar > General
Allí podes activar y modificar opciones como la de guardar datos de recuperación automática en intervalos de tiempo, y también la opción de Crear Copia de seguridad.
¿Cómo eliminar una página en blanco en Writer?
Digamos que terminaste el texto, pero sobra una página en blanco al final.
Poné el cursor al principio de esa hoja en blanco, y empezá a borrar. Si, borrar, con la tecla backspace del mismo modo que lo harías con el texto.
Eso tendría que eliminar la última página vacía en el documento.
Dicho de otra forma, lo que estamos haciendo es “eliminar” todo el espacio libre bajo el texto que termina el documento.
¿Cómo puedo recuperar un archivo que se borró accidentalmente?
Entre las preguntas de LibreOffice, esta realmente no tiene solución sencilla.
En un caso difícil, donde no hay ningún tipo de respaldo del archivo, la única solución posible sea tal vez usar algún tipo de programa al estilo Testdisk.
Ahora, en el caso de que tengas activadas copias de seguridad o guardados automáticos, busca en los directorios donde puedan haberse guardado.
Podes conocer esos directorios si revisás dentro de LibreOffice en el menú:
Herramientas > Opciones… > LibreOffice > Rutas > Copias de seguridad
O también en:
Herramientas > Opciones… > LibreOffice > Rutas > Archivos temporales
En esos dos lugares vas a averiguar sobre posibles espacios donde pudo guardarse una copia extra de tu documento perdido.
Si hay archivos de respaldo guardados, seguramente tengan la extensión .bak, por backup. Abrilo y guardalo con otro nombre.
Vale aclarar que tus chances de recuperar el documento aumentan cuanto más cerca a la fecha en que fue borrado comiences a buscarlo.
¿Cómo puedo insertar una página en el medio de un documento de Writer?
Para agregar una nueva página en el documento, posicioná el cursor al final o al principio de la página actual según donde sea que necesitas la nueva pagina.
Luego presiona el atajo Ctrl+Enter y con eso vas a agregar la nueva hoja.
También podes hacerlo desde el menú:
Insertar > Salto de página
O también desde:
Insertar > Más saltos > Salto manual