23 marzo 2011

Unir párrafos con LibreOffice

Un problema al que nos enfrentamos en ocasiones es el de contar con un texto en el que las líneas están partidas donde no deben y tenemos saltos de línea por todo el documento. Esto sucede con frecuencia con textos copiados desde un archivo PDF, por ejemplo.

Utilizando OpenOffice o su escisión más moderna, LibreOffice, más recomendable en la actualidad es sencillo resolver este problema. Se puede descargar desde aquí:

LibreOffice 3

Una vez abierto el archivo utilizaremos la ventana de Buscar y reemplazar, que se despliega pulsando Control-B (o mediante el menú Editar). Aparecerá la imagen siguiente:

El truco para conseguir llevar a buen puerto esta tarea está en el empleo de expresiones regulares. Un método que nos permite realizar búsquedas muy completas. Por tanto, haciendo clic en Más opciones activaremos la casilla Expresiones regulares.

La solución
El reemplazo no se puede hacer directamente por algunas limitaciones existentes al reemplazar saltos de línea, pero sí que podemos hacer una serie de reemplazos que funcionan con bastante precisión.
La ventaja de este método es que en tres sencillos pasos obtenemos el resultado deseado y sin necesidad de instalar ninguna extensión o macro adicional.

Reemplazo número 1. Inserción de separadores.
En el primer paso indicaremos que busque aquellas líneas que no terminan en letras, números y comas.

En Buscar escribimos: ([^a-z|^0-9|^,])$

Y esto en Reemplazar por: $1 ####

Entre el 1 y los #### hay un espacio.
Básicamente conseguimos insertar cuatro # al final de cualquier línea que finalice en un punto o algún otro caracter similar, excluyendo letras, números y coma. Los cuatro # pueden ser reemplazados por cualquier otra secuencia que no aparezca en el texto.

Reemplazo número 2. Borrado de saltos de línea.
A continuación eliminaremos todos los saltos de línea del documento. Lo podemos hacer sin riesgo puesto que los que nos interesa conservar están ya identificados con la secuencia ####.

En Buscar escribimos: $

En Reemplazar por introducimos un simple espacio.

Reemplazo número 3. Insertar saltos de línea en los sitios correctos.
Por último, reemplazaremos las secuencia #### por los saltos de línea.

En Buscar escribimos: ####

En Reemplazar por escribimos la representación de un saltos de línea: \n

Revisión final
Ahora nos quedaría por hacer una breve revisión final del texto para asegurarnos de que ninguna línea está mal partida, pero los casos serán muy pocos.

Más sobre expresiones regulares
Las expresiones regulares nos ayudan a resolver muchos problemas de este tipo. Hay una documentación muy completa en las páginas de Openoffice y de LibreOffice.

Lista de expresiones regulares de LibreOffice
Regular Expressions in Writer

Feliz lectura.

6 comentarios:

Anónimo dijo...

De hecho es muy interesante y me resuelve un problema que he tenido desde hace mucho, pero me crea saltos de párrafo donde solo es punto de oración (punto y seguido).

Para mejorarlo, después del Reemplazo 2

Reemplazo 3
reemplazamos #### por #### sin espacio.

Paso 3 reemplazamos ####$ por \n

quedarán los #### de punto y seguido, los reemplazamos por un espacio y queda bién

Muchas gracias por la idea, me ha ayudado mucho. Excelente Blog

-Inercina

Anónimo dijo...

De hecho es muy interesante y me resuelve un problema que he tenido desde hace mucho, pero me crea saltos de párrafo donde solo es punto de oración (punto y seguido).

Para mejorarlo, después del Reemplazo 2

Reemplazo 3
reemplazamos #### por #### sin espacio.

Paso 3 reemplazamos ####$ por \n

quedarán los #### de punto y seguido, los reemplazamos por un espacio y queda bién

Muchas gracias por la idea, me ha ayudado mucho. Excelente Blog

-Inercina

Anónimo dijo...

EN http://help.libreoffice.org/3.3/Writer/Removing_Line_Breaks/es

YO CAMBIE EL PORCENTAJE QUE SE MENCIONA A 30% Y FUNCIONO

Marta, de Mis Cositas en Fieltro dijo...

Cuando edito textos a partir de un epub suele contener este tipo de errores. Muchas veces además los párrafos terminan en un espacio. Mis pasos para corregirlos con estos espacios serían estos:

([^a-z|^0-9|^,]) $
$1####

$
espacio


espacio espacio
espacio

####espacio
\n



Si el texto no contiene el espacio final en cada linea, quitar el especio antes del símbolo $


Gracias por tu código. Estoy empezando con este programa. Antes me manejaba genial en word pero ahora uso open office y ya no es lo mismo, ni en cantidad de posibilidades ni en código. Poco a poco aprenderé.

Pavierjaz dijo...

¿Lo hagamos mas compleja?
Estuve convirtiendo pdf en odt asi que necesite varias buscar y reemplazar para que reconozcamos cada objeto como punto aparte, guiones de division de silabas, etc.

Me guie de lo que hicieron aqui. Por ello muchas gracias.

Yo hago esto:

1) marcar guiones
Buscar:-
Reemplazar:#

2) marcar punto final
Buscar:\.$
Reemplazar:.###

3) marcar fin de parrafo
Buscar:$
Reemplazar:#####

4) separar parrafo de punto aparte
Buscar:########
Reemplazar:\n

5) unir silabas ex guiones
Buscar:######
Reemplazar:(nada)

6) poner espacio entre palabras
Buscar:#####
Reemplazar:(espacio)

Espero les sirva. Saludos varios

Antonio dijo...

Muchas gracias, es muy útil.