Cosas Interesantes

martes, 3 de agosto de 2010

Más arreglos con RegEx (Expresiones Regulares) después de la conversión desde PDF a un ePUB para Mi PAPYRE 6.1 reader

Coco profesorPAPYRE STREETComo ya sabéis, los PDFs dan para mucho cuando de convertirlos a ePUB se trata, sobre todo por el tipo de “zurraspas” que nos quedan antes de lograr un ebook decente. Ya hemos comentado varios ejemplos en este BLOG (aquí y también aquí)  pero viendo estos ejemplos no he podido resistirme a preguntarle a Coco y compartir sus soluciones.

Por que visto lo visto, vamos a necesitar mucha ayuda de Coco. Lo primero que nos encontramos es esto:
image Es decir, el texto de los encabezados de los capítulos completamente mezclados e integrados como si fueran parte del cuerpo del texto.
En lenguaje natural humano, la expresión de búsqueda tendrá que ser: “justo después del principio de párrafo, un grupo de números romanos delimitado por un punto (.) y seguido por todo lo que haya hasta el siguiente (.)”
Efectivamente:

<p class="calibre1">([IVX]*)(.\s*)([\sÁÉÍÓÚA-Z]+)(\.\s*)([\(\ÑñÓ/ÃÁÉÍÚáéíóúÜü¡!?¿*:«»"'-%…=–º©—“”#{(¼)\).,;a-zA-Z0-9\-_\s\c]*)</p>



Y en la expresión de sustitución aprovecharemos para aplicarle el formato deseado de encabezado de capítulo, incluyendo un cambio de pagina justo delante:







<div>
<hr class="sigilChapterBreak" />
</div>


<h3><span class="chapterHeader"><span class="blanco"></span> <span class="count serif">\1.</span></span> <span class="chapterText serif">\3</span></h3>

<p class="MsoNormal">\5</p>



Como en la búsqueda utilizamos el (.) para “apoyarnos” en la operación, cómo divisoria de las dos partes del texto a encontrar, resulta más sencillo simplemente escribirlo en la operación de sustitución. De ahí el \1.





Y después de aplicar la expresión nos queda esto:


image










En nuestro segundo ejemplo tenemos:



imageEs decir, un párrafo partido varias veces; primero por un resto de un número de página; y luego por un salto de párrafo espurio. Un desastre.

En lenguaje natural humano, a expresión de búsqueda tendrá que ser: “Todo lo que exista hasta el primer salto de párrafo que incluya dentro de sí un grupo numérico; más todo lo que exista hasta el primer cambio de párrafo después del cambio de párrafo incorrecto.”







<p class="calibre1">([\(\ÑñÓ/ÃÁÉÍÚáéíóúÜü¡!?¿*:«»"'-%…=–º©—“”#{(¼)\).,;a-zA-Z0-9\-_\s\c]*)</p>

<p class="calibre1"></p>

<p class="calibre1">([0-9]+)</p>

<p class="calibre1">([\(\ÑñÓ/ÃÁÉÍÚáéíóúÜü¡!?¿*:«»"'-%…=–º©—“”#{(¼)\).,;a-zA-Z0-9\-_\s\c]*)</p>

<p class="calibre1">([\(\ÑñÓ/ÃÁÉÍÚáéíóúÜü¡!?¿*:«»"'-%…=–º©—“”#{(¼)\).,;a-zA-Z0-9\-_\s\c]*)</p>







La expresión de sustitución será sencilla puesto que se trata de “empalmarlo” todo junto dentro de un único párrafo:




<p class="calibre1">\1 \3 \4</p>



El resultado final es este:


image


 


 



Sin duda, Coco nos ha ayudado mucho a mejorar el aspecto de nuestro libro electrónico ePUB.


Y recordad, niños, esto es CERCA image1 y esto es LEJOS image31

4 comentarios

  1. Ya son unos cuantos los post que ayudan a formatear automáticamente los pdf, pero ¿Que programa utilizar para linux? ¿Se puede hacer todo automáticamente? ¿Las tienes recopiladas en algún sitio?

    Gracias

    ResponderEliminar
  2. Puedes utilizar el programa que aparece en el POST, SIGIL que es el editor WYSIWYG para ePUB de referencia, que tiene versiones LINUZ para 32 y 64bits en http://code.google.com/p/sigil/downloads/list.
    Automaticamente no. Y generar un ePUB decente (ver http://mipapyreebookreader.blogspot.com/search/label/BBPP%20LARdT%201.0) requiere cierta revision manual.
    Pero tengo un POST en borrador comentando un par de trucos para facilitar el proceso, donde efectivamente queremos empezar una recopilacion de expresiones de uso frecuente, una CheatSheet.
    Lo intentaremos terminar lo antes posible aunque estamos de vacaciones, un poco (bastante) desconectados.

    ResponderEliminar
  3. Perdon pongo otra vez los tags de estilo cuyo codigo me interesaria y que se ha comido el mensaje:

    "chapterHeader"

    "blanco"

    ResponderEliminar
  4. Dame un poquito de tiempo y te voy a ir preparando una serie de POSTs detallando el código de las "Buenas prácticas de LARdT para un ebook decente" (BBPP LARdT 1.0) porque un comentario no es espacio apropiado para la explicación. Asimismo, te agradeceria que incluyeras una referencia a que estas utilizando las BBPP LARdT 1.0 en el libro.

    ResponderEliminar

© Cosas Interesantes