Navigation
Cosas Interesantes
Más arreglos con RegEx (Expresiones Regulares) después de la conversión desde PDF a un ePUB para Mi PAPYRE 6.1 reader
Arreglando la conversión de un PDF en libro ePUB para Mi PAPYRE 6.1 reader ¡con muchas notas a pie de libro!
Para hacer la conversión del título “Corsarios de Levante” partimos de un PDF que
está protegido por lo que no ha sido posible realizar las tareas de pre-proceso (recortar pies y cabeceras, revisar el reflow, etc…) típicas para conseguir una conversión sin muchos problemas. Ha sido necesario por tanto depurar pies y cabeceras que aparecían mezclados en mitad del texto y otros errores típicos en estos casos de los que ya hemos hablado en este BLOG. Pero este libro se caracteriza además por incluir casi 100 notas a pie de libro (añadidas por el editor digital de la versión PDF, no por el autor original) que aclaran muchos de los términos marineros y militares del relato. Como mejoran bastante la experiencia de lectura me parecía necesario incluirlas en la versión ePUB.
Gestionando un montón de notas
En el archivo PDF, las notas aparecen originalmente como se muestra en la foto, pero después de la conversión, como podéis comprobar aparecen simplemente como un número “pegado” a la palabra en cuestión. Un auténtico desastre multiplicado por cien.
Así que se impone utilizar RegEx para arreglar este entuerto.
Empezamos a buscar una expresión de búsqueda que nos encuentre todas las ocurrencias y nada más que las ocurrencias relacionadas con este error.
Necesitamos una expresión que encuentre palabras terminadas en un número y con un espacio o signo de puntuación a continuación. Desgraciadamente si no delimitamos cuantos números estamos buscando, la expresión nos encontrará también, cosas como nombres de estilo CSS (“calibre9”, por ejemplo). Así que lo partimos en 2 tandas, primero buscaremos 1 a 1 las palabras terminadas en un digito (las notas del 1 al 9), y reemplazaremos 1 a 1 excluyendo las otras cosas que podamos encontrar; y luego ya podremos de un sólo golpe reemplazar las notas del 10 al 95 ya que no se confunden con ninguna otra cosa.
La expresión de sustitución tendrá que incluir el código para convertir ese número en una nota dentro del texto. Así pues:
Como siempre, si pulsáis en la imagen accederéis al código.
¡Ale-hop! y …
es decir, donde antes ponía:
bajando la entena1.ahora queda:
bajando la entena. <a title="[1]" href="#_ftn1" id="_ftnref1" name="_ftnref1"><span class="MsoPie">[1]</span></a>
Pero no hemos terminado ni mucho menos. Al final del libro nos quedan varias
![]()
páginas con el texto aclaratorio de las notas (son 95) que tendremos que vincular a las notas situadas dentro del texto. El problema es que para cada nota, después de copiar-pegar el código tendríamos que realizar al menos 5 modificaciones (1 para cada vez que aparece el número de la nota); por lo que estamos hablando de casi ¡500 ediciones! No puede ser.
Nuestro amigo Coco, nos sugiere que hagamos algún invento que nos ahorre este trabajo tan tedioso.
Lo primero va a ser copiar el texto de las notas a pie de libro en un archivo de texto plano TXT, de forma que cada nota ocupe una línea con su número de nota al inicio de la línea. Con un copiar-pegar y unos cuantos retornos de carro lo hacemos muy rápidamente:
Y ahora vamos a crear un programita que mediante un bucle para los valores 1 a 95, lea la frase correspondiente con el texto de la nota, le añada el código necesario para convertirlo en una nota a pie de libro y escriba el resultado en otro archivo de texto.
Como siempre, si pulsáis en la imagen accederéis al código.
Como soy un tío muy rarito el programa esta hecho en KIXTART, un dialecto BASIC interprete de MICROSOFT orientado al scripting para la gestión de sistemas pero convertirlo a algo más universal, como por ejemplo VISUAL BASIC es muy sencillo porque la sintaxis es muy similar.
Resumiendo:
Para n=1 a 95, leo el archivo con el texto de las notas frase a frase hasta que encuentro la línea con la nota número n; le quito el comienzo de la línea dónde está el número de la nota para dejar sólo el texto. A ese texto le añado delante el código necesario para que sea una nota a pie de libro, cuya parte variable es el número n de la nota. Escribo la frase resultante en otro archivo de texto, donde me quedaran al final 95 líneas, una para cada nota a pie de libro.
Este es el archivo DESTINO resultante:
Por último, solo queda hacer un copiar-pegar desde este archivo a nuestro e-book en ePUB y ¡Voilá!
![]()
Resolviendo dudas RegEx sencillas para mejorar los ePUB de Mi PAPYRE 6.1 reader
Coco va a explicarnos como hacerlo paso a paso.
Queremos encontrar, un rango de números. Pues bien:
0-9y lo encerramos entre corchetes para indicar que es un rango de números. Pero ¿cuántos números puede haber juntos? Al menos habrá 1, pues eso lo indicamos con el metacarácter "+". Cuando queramos encontrar desde 1 a n ocurrencias de lo que estemos buscando, usaremos “+”; para encontrar de 0 a n ocurrencias lo indicaríamos con “*”
[0-9+]De momento, esto nos encontrará cualquier grupo de números de 1 o más cifras. Como es la expresión a mantener, la agrupamos encerrándola entre paréntesis. Así la expresión de búsqueda será:
<p class="title-p"><strong>([0-9+])</strong></p> Y en la expresión de sustitución sólo tendremos que indicarle que queremos mantener sin reemplazar el PRIMER GRUPO (sólo hemos agrupado 1) de lo que encontramos en la expresión de búsqueda, y eso lo hacemos con "\1". Si tuviéramos 3 grupos y quisiéramos el tercer grupo, lo indicaríamos con "\3"
<h2>\1</h2>Esperamos que nuestro amigo Kiermel lo haya entendido.
Y recordad, niños, ahora estoy CERCA
y ahora LEJOS
Arreglando con RegEx los guiones largos perdidos(EM DASH) en un ebook ePUB para Mi reader PAPYRE 6.1 (Cap. 02)
![]()
Coco nos comenta que el otro día encontró algo extraño en un ebook ePUB con relación a los guiones largos. Resulta que al abrir el libro en ADE de Adobe los guiones largos aparecían como “?” (cierre interrogación). Evidentemente lo mismo pasaba en el lector ADE de mi PAPYRE. ¿Qué misterio es este?
La cosa es aun más misteriosa porque, como podéis comprobar en las imágenes, el texto ePUB se ve perfectamente tanto en el browser incorporado de CALIBRE como el editor SIGIL.
Pues es una cuestión de “buenas prácticas” a la hora de editar el libro. El asunto
está en que ADE es más
estrict
o
en el manejo del conjunto de caracteres permitidos
, y resulta que aunque parezca un guión largo (EM DASH), lo que tenemos en este libro es el carácter “barra” que no es admitido por ADE, PORQUE NO ES UNA ENTIDAD HTML 4.0.
Cómo Arreglarlo
Pues sustituyéndolo por un carácter que estemos seguros que ADE va a aceptar. La
buena práctica
será utilizar siempre ENTIDADES HTML 4.0 cuyo listado podéis ver en la Wikipedia.
Así, sustituimos por el GUIÓN LARGO (EM DASH) y para estar seguros de no equivocarnos lo escribiremos en su notación HTML, es decir:
—
Y recordad, niños, ahora estoy CERCA
y ahora LEJOS
Cómo conseguir con RegEx un ebook ePUB con guiones largos (EM DASH) para Mi reader PAPYRE 6.1 (Cap. 01)
Siguiendo con las posibilidades que RegEx nos ofrece para mejorar nuestras libros electrónicos, hoy Coco va a ayudarnos a conseguir un texto con los guiones tipográficos cómo Dios manda. La verdad es que uno no se da cuenta de lo molesto que resulta para el ojo tener un texto con el “signo menos” (MINUS “-“) usado en lugar de los guiones propiamente dichos.
Podemos elegir entre el guión corto (“–“ “EN DASH” - combinación de teclas ALT+0150 bajo Windows) y el guión largo (“—“ “EM DASH” - combinación de teclas ALT+0151 bajo Windows).
La norma tipográfica consiste en
que el guion largo (“EM DASH”) sirve para indicar el cambio de interlocutor en un dialogo, detallar una observación dentro de una frase (es más estético que los paréntesis) o para presentar una enumeración. En relación a esto, a menudo es confundido con el guión corto o peor aún, con el signo “menos” (MINUS). Por lo tanto para las enumeraciones debemos utilizar el guion largo (“EM DASH”). Como r
egla
general: debe dejarse un espacio antes y después del guion largo, pero no entre el guion largo y el texto a su interior.
Utilizando SIGIL vamos a depurar nuestro libro. Empezamos contabilizando las ocurrencias. En Buscar-Reemplazar” pulsamos “Count” y resulta que :
signos menos” y la mayoría de ellos deberían ser guiones largos.
Comienzos de párrafo con cambio de interlocutor en el DIALOGO:
Es la convención habitual indicar los diálogos de los personajes (a diferencia de los párrafos de narración) iniciándolos con un guión. Sustituiremos el “MINUS” seguido de espacio por un guión largo (“EM DASH”).
Como siempre podéis acceder al código para COPIAR y PEGAR pulsando encima de la imagen correspondiente.
Expresión de búsqueda y sustitución:
La gracia está en que utilizamos >- para asegurar que sólo encontramos los comienzos de párrafo. Y luego el espacio seguido de una expresión que cubra cualquier posible carácter que venga después en el párrafo completo; aunque bastaría para nuestro objetivo simplemente con el primer carácter del párrafo. Efectivamente:
Pulsamos ENTER y ¡Voilá!…
Guiones para detallar una observación dentro de una frase:
El guión de inicio podremos encontrarlo con la siguiente expresión de búsqueda:
\s-(?!(\s))Es decir, un espacio seguido de un “minus” QUE VAYA SEGUIDO DE UN CARACTER PERTENECIENTE A UNA PALABRA. Esto lo conseguimos con una negación: NO (?!(…)) CARATER ESPACIO \s
La expresión de sustitución es sencilla: un espacio y el guión largo (EM DASH)
Pulsamos ENTER y ¡TA-CHÁN!…
![]()
El guión de cierre podremos encontrarlo con la siguiente expresión de búsqueda:
([\w])-(?!([\w]))Es decir, un final de palabra seguido de un “minus” NO QUE VAYA SEGUIDO DE UN CARACTER PERTENECIENTE A UNA PALABRA. Esto lo conseguimos con una negación: NO (?!(…)) CARATER PERTENECIENTE A UNA PALABRA \w
La expresión de sustitución es sencilla: el final de palabra encontrado \1– y el guión largo (EM DASH)
Únicamente nos quedarían los casos en que el guión de cierre viene después de un carácter de puntuación.
La expresión de búsqueda
([.;¿?’¡!…>])-(?!([\w]))Por último, sólo nos quedarían algunos casos (generalmente errores) en los que el guión de cierre tiene delante un espacio. (5 ocurrencias en nuestro texto) que podemos buscar con la expresión de búsqueda: ([\s])-(?!([\w])) y procederemos a corregir eliminando el espacio con la expresión de sustitución – guión largo (EM DASH)
De esta forma hemos podido sustituir todos los MINUS por guiones largos propiamente dichos.
Y recordad, niños, ahora estoy CERCA
y ahora LEJOS
Cómo retocar con RegEx la conversión CALIBRE desde el formato PDF y conseguir mejores ebooks en ePUB para Mi reader PAPYRE 6.1 (Cap.02)
En el capítulo anterior habíamos pedido ayuda a Coco para que nos enseñara cómo arreglar los errores que se producen en la conversión de un archivo PDF hacia ePUB en CALIBRE.
Vamos a continuar utilizando RegEx para retocar el texto para
conseguir un archivo ePUB sin errores.
ARREGLANDO LOS ERRORES MÁS HABITUALES
Los errores más habituales tienen que ver con la interrupción del flujo de texto, partiendose frases y párrafos en donde no procede.
Párrafo interrumpido por un RETORNO DE CARRO:
Vemos como la frase se corta y empieza un nuevo párrafo.
La expresión de búsqueda será:
He incluido las vocales acentuadas con la expresión “\()”
La expresión de sustitución es: \1 \3 Es decir, la última letra del primer párrafo, un espacio y la primera letra del segundo párrafo.
Además de seleccionar el check de “Match Case” para asegurar la diferenciación entre MAYUSCULAS y MINUSCULAS, conviene seleccionar “Minimal Matching” que asegura que se seleccionan los “segmentos” de texto más pequeños de todos aquellos que cumplen la condición de búsqueda.
Pulsamos ENTER y ¡Voilá!…
Carácteres espúreos al final de una frase:
Son números, correspondientes a la paginación del archivo PDF. En este caso, la expresión de búsqueda es sencilla:
Buscamos un bloque de entre 1 y 3
números (el libro no tiene más de 999 páginas) situado entre un punto “.” con un espacio detrás y una etiqueta de cierre de párrafo.
Lo sustituimos simplemente por un punto “.” seguido de la etiqueta de cierre de párrafo.
Pulsamos ENTER y “Abra-ca-dabra”…
MÁS párrafos interrumpidos por un RETORNO DE CARRO
¿Pero NO HABIAMOS RESUELTO ESTE TIPO DE ERROR antes? preguntareis. Pues sí, pero NO. Porque en la expresión de búsqueda anterior no incluimos caracteres especiales cómo la coma “,” y la interrogación “¿”. Así pues nos queda cubrir los casos en los que intervienen estos caracteres que son escasos pero que en un libro de 300 y pico páginas pueden darse cerca de 50 veces. Lo resolvemos sin necesidad de RegEx, simplemente copiando la cadena a sustituir:
Le damos al ENTER y ¡Zas!…
Parrafos interrumpidos por un RETORNO DE CARRO después de un guión largo
Al incluir otro tipo de carácter especial, el guión largo “—” (EM Dash) también se escapó de la primera expresión de sustitución. A veces no queda más remedio que realizar este tipo de depuración “por capas de cebolla”, desde lo más general hasta los casos particulares. Aquí la expresión de búsqueda es más compleja:
Como siempre en este caso, debemos marcar el check de “Match Case” para asegurarnos de discriminar entre MAYUSCULAS y MINUSCULAS. Pulsamos ENTER para ver la magia de RegEx en acción:
Parrafos interrumpidos por un RETORNO DE CARRO después de un guión largo cuando es un COMIENZO de FRASE
Ya sólo nos queda por resolver el caso más enrevesado y dificil de diferenciar del texto correcto. Es cuando después de guión largo “—” (EM Dash) se rompe el párrafo; y el primer carácter del párrafo siguiente es una MAYÚSCULA, lo cual hace que sea muy dificil de distinguir de un principio de frase legítimo.
Tendremos como expresión de busqueda:
OJO! con el “Match Case” y “Minimal Matching”; Pero aquí el truco para comprobar que efectivamente se ha roto la frase de forma incorrecta es que existe un punto “.” justo antes del guión largo “—” (EM Dash); lo que indica que el mismo es el primer caracter de una nueva frase y no el último de la corriente.
Como siempre despúés de pulsar ENTER:
Los casos que hemos resuelto con estos retoques han eliminado cerca de 800 errores del texto, lo que supone la diferencia entre un ebook decente y una chapuza.
Suscríbete


HONRADEZ Y FIRMEZA
He recibido la visita de...
Preface
Explora tus temas
- 6S ALEX 28
- A6 8
- A9 6
- Activación 4
- Actualización 28
- ADAM Notion Ink 2
- Adobe ACROBAT 7
- Adobe DIGITAL EDITIONS (ADE) 13
- Adobe Mobile Reader 4
- ANDROID 1
- Android Market 2
- ASTAK EZREADER 3
- ASUS Transformer 2
- AZARDI 1
- Bateria 1
- BBPP_LARdT 29
- BIBLIOTECA 19
- Biv_SUMY 4
- BOOKSHELF 4
- Booq AVANT 6
- BOOTLOGOS 1
- BUGGINS 5
- buscador 2
- CALIBRE 20
- Chrome 1
- Colofón 1
- Compras 7
- CONVERSOR GRAMMATA v1.48 1
- COOLREADER 12
- cr3SIM 1
- CSS 6
- CTA 2
- CUBA 1
- DESCARGAS 5
- Desmontaje 1
- Diccionarios 3
- DICT.DZ 1
- DJVU 3
- DOCUMENTOS 7
- Doña Angelita 1
- DRM 4
- e-book 11
- EarLamp 1
- eGriver Touch ES600 2
- EL MUNDO 1
- El Ultimo Libro 1
- EM DASH 2
- Entrevista 3
- ePUB 28
- EPUBReader 1
- Especificaciones 1
- Facsimil LIBRO BBPP LARdT 1.0 7
- FB2 4
- FBREADER 1
- Ficheros .INI 2
- FIREFOX 1
- Firmware 39
- FlightCrew 1
- Florencia 2
- Formato de Párrafos 1
- FRANZROGAR 1
- Fuentes 4
- Funda 3
- FUTBOL 2
- Género literario 1
- GMAIL 3
- GRAMMATA 8
- Guía FIRMWARE TIRWAL / TIRWAL 4 DUMMIES 5
- Headings 2
- Hotel DAVANZATI 1
- iBooks 1
- interupload 1
- iPad 5
- iPad-iPhone 2
- iRiver Story 2
- Jakob Nielsen 1
- JINKE 3
- JOOMLA 1
- JOTAS 1
- Juan Gonzalez de la Cámara 4
- Kiermel 2
- Kindle 1
- KIXTART 1
- Lampara 1
- Lampara ENERGIZER 1
- LBOOK 6
- Libros 11
- libros electrónicos 20
- Libros libres 9
- LINUX 1
- LIVE Writer 1
- LOGOMAKER 1
- LUARNA 2
- Lucifox 6
- MAC OSX 1
- MacCentre 1
- MegaUpload 1
- Mejoras y Personalizaciones 18
- Memoria interna (HD) 1
- Metadatos 5
- MOBILE 1
- MOBIREADER 2
- Modo TEST 1
- Mr. BOOK 1
- Mr. WILLIAMS 2
- MVLL 2
- NewSDK 2
- Notas al pie 3
- Nuevo KERNEL 1
- OEM 39
- OFFICE WORD 3
- ONEXT 1
- ONYX WOLDER BOOX 3
- OPENINKPOT 2
- Orden de Autor 3
- PAPYRE 5.1 2
- PAPYRE 6.1 24
- PAPYRE 613 6
- PAPYRE 6S ALEX 20
- PAPYRE INFANTIL 2
- PAPYRE STREET 15
- PAPYRE.CO.CC 2
- PAPYREFB2.NET 1
- PDF 14
- POCKETBOOK 4
- Portadas 2
- Positivo ALFA 1
- post in ENGLISH 1
- PPT 1
- Primer Contacto 21
- Primos del AVANT 4
- Primos del PAPYRE 3
- RapidShare 2
- RECENTLYREADEditor 1
- RegEx 11
- Reseña 1
- SAMSUNG Galaxy Tab 1
- SDK Leo 1
- Seguridad 1
- SIGIL 13
- SINDE 1
- SKINS 1
- SkipScreen 1
- SmartPhone 1
- Software para LEER 4
- Solución de Problemas 3
- SONY 2
- SSH 1
- Steve Jobs 1
- Subject 1
- Tarjeta microSD 2
- Tarjeta SD 5
- Telefonica 1
- tiGOR BOOK 2010 1
- TIRWAL 18
- Tirwal4NotSoDummies 6
- TOC 2
- TODOEBOOKS 2
- Tonos de Grises 1
- TRIPLEBOOT 2
- USB 3
- V3CHANGELOGO 1
- vacaciones 2
- velocidad de lectura 1
- VIVOLI Gelateria 1
- WINK 1
- WinSCP 1
- Wolder BOOX 4
- WOLDER miBuk GAMMA 6.2 1
- XMAS 1
- XML 4
- xPDF 2
Popular Posts
-
Hemos mejorado las instalaciones de la Biblioteca de forma que podamos tener mejor ordenados los libros y más interactividad. Como está sit...
-
Aquí están todas las DESCARGAS referidas en los POSTs del FORO para vuestra mayor comodidad. Intentamos que estén disponibles en todo moment...
-
Desde PAPYRE STREET , Coco va a ayudarnos hoy a manejar RegEx , lo que seguramente nos será muy útil para mejorar nuestros ebooks. Vamos a ...
Blog Archive
-
►
2017
(8)
- ► noviembre 2017 (1)
- ► agosto 2017 (2)
- ► julio 2017 (5)
-
►
2011
(17)
- ► octubre 2011 (8)
- ► septiembre 2011 (9)
-
►
2010
(147)
- ► diciembre 2010 (13)
- ► noviembre 2010 (5)
- ► octubre 2010 (5)
- ► septiembre 2010 (19)
- ► agosto 2010 (11)
- ► julio 2010 (38)
- ► junio 2010 (12)
- ► febrero 2010 (10)
- ► enero 2010 (33)
-
►
2009
(87)
- ► diciembre 2009 (52)
- ► noviembre 2009 (20)
- ► octubre 2009 (14)
- ► enero 2009 (1)
-
►
2002
(1)
- ► diciembre 2002 (1)
-
►
2000
(3)
- ► diciembre 2000 (1)
- ► enero 2000 (2)
-
►
1999
(4)
- ► diciembre 1999 (4)



