martes, 16 de octubre de 2012

Haciendo ebooks

Metiéndome en una conversación en twitter sobre libros me han preguntado (@f_cientifica concretamente) qué programa uso para hacer los míos.

Es una respuesta un poco más extensa que lo que permite twitter, así que he decidido ponerla aquí. Al fin y al cabo tengo un blog (semiabandonado) para algo.

Mi método para crear libros electrónicos es bastante personal. Probablemente será más enrevesado de lo deseable, pero es el resultado de varios años de uso en un mundo sin un editor adecuado a mis gustos.

También he de avisar que me he vuelto muy maniático con el tiempo y que retoco todo lo que voy a leer para que el código xml esté a mi gusto.

Todo lo que se lo he aprendido a fuerza de ensayo y error, en foros con gente tan maniatica como yo del fb2 y copiando los mejores ficheros fb2 que he encontrado.

Terminada la introducción vayamos a las consideraciones iniciales.

Yo hago todas la conversiones pensando en el formato fb2 tal y como lo muestra un programa llamado Coolreader.

El fb2 es un formato xml que puede ser editado con cualquier editor de texto, aunque lo mejor es utilizar un programa como Notepad++, XML Copy Editor o cualquier otro editor avanzado. La ventaja que tiene para mi ese formato con respecto a todos los demás es que no viene cifrado, comprimido y que no necesito ninguna herramienta para modificar lo que quiero. Podría incluso usar el Bloc de Notas de Windows (aunque sería más farragoso).

Coolreader es un programa maravilloso que es capaz de visualizar multitud de formatos, pero donde realmente muestra su potencia es con el fb2. Está disponible para linux (la mayoría de los lectores usan una de estas versiones), para Windows (yo lo uso para revisar que los libros que estoy editando queden como yo quiero) y desde hace un año o dos también está para Android (y se puede conseguir en el Google Play de forma gratuita).

Por lo tanto mis fb2 están ajustados de una forma muy concreta. Hay otros visores (FBReader, el que viene con calibre, etc...) que son capaces de mostrar las etiquetas básicas, pero no el trabajo extra que me tomo para dar formato al texto.

¿Cómo empieza todo?

Los orígenes pueden ser varios, ya sea un libro escaneado por mi, como por otra persona o incluso textos originales que suelo convertir. Le echo una mano a El Tamiz y he hecho las versiones en libro electrónico de juegos de rol como Cacería de Bichos o Trasgos y Mazmorras. Actualmente estoy haciendo una versión en libro electrónico de La Puerta de Ishtar (y estaría más avanzado si no fuera por ir a los Amazings/Naukas2012 o la Hispacón XXX).

De todos éstos supuestos el más complicado es escanear de cero un libro. Con los demás opciones lo único que hay que hacer son comprobaciones menores, así que voy a describir el proceso desde libro de papel a flamante libro electrónico. Todo ésto es para una novela, que es el tipo de libro más sencillo que hay.

Durante cualquier parte del proceso corrijo los errores de ocr que encuentro, aunque la corrección definitiva solo puede darse leyendo el libro.

Los programas que uso son:
Escáner: Fujitsu SnapScan S1500
Abby Fine Reader (que me venía con el escáner).
Word 2000. Es una versión antigua de Word que domino bastante bien. Como todavía no he encontrado un procesador de texto que haga más cosas y como usa muy pocos recursos comparado con otros programas es el que prefiero usar para hacer la edición.
OpenOffice.Org + OOOFBTools: Una vez tengo el doc lo convierto a fb2 con el plugin OOOFBTools.
Notepad++: Para hacer el trabajo de edición en el fb2.
MeterImagenFB2.exe: Un programa que inserta ficheros jpg en un fb2 (en realidad cualquier fichero de imágen pero hay que cambiar la extensión a jpg, luego dentro reemplazo las etiquetas para que vuelva a poner el formato adecuado)
FictionBook Editor: Un programa para editar y crear fb2, por desgracia, las funciones avanzadas solo están en ruso, pero tiene un comprobador del xml del fb2 inmejorable.
Calibre: Para generar los subproductos (ePub y Mobi).

Paso 1:
Cuando durante un tiempo siento como una anatema que un libro no esté disponible en formato electrónico termino pensando en liberar su esencia al mundo electrónico. Entonces me armo de un cutter y hago una pequeña escabechina.




Después utilizo mi escáner que tiene alimentador de papel y escanea por las dos caras. Una vez escaneado junto todos los fragmentos (el escáner solo admite grupos de 50 hojas) usando el gestor de pdfs que tiene y lo convierto a un fichero doc.
Además de eso, hago que el pdf que he creado al escanear (un monstruo de varias decenas de megas) tenga el texto seleccionable, es decir, el programa pasa el OCR de forma interna y crea un pdf donde puedo buscar palabras y frases, eso ayuda mucho en los siguientes procesos de revisión y formateo.

Ahora tengo un fichero de word que es un galimatías interno para trabajar. Es muy útil seleccionar la opción "Mostrar u ocultar" (botón con el símbolo ¶) para ver lo que hay de verdad en el texto (saltos de página, de párrafo, de línea, de sección, tabulaciones, espacios de más, etc.) que quedan ocultas.

Cada página son varios párrafos, pero el OCR no lo sabe, así que hay que unir los párrafos que continúan de una página a otra. Lo fácil sería unir automáticamente el final del párrafo de una página con el principio del párrafo de la otra, pero como a veces en las páginas nuevas hay párrafos nuevos no se puede confiar en la función de Buscar y Reemplazar.
Además están los números de página. Estos se pueden quitar de forma automática sin mayor percance, pero he descubierto que viene bien dejarlo y quitar los números de página según uno los párrafos, así tengo un marco de referencia fácil de donde estoy.

Por otra parte, viene bien revisar los espacios entre "escenas" en un mismo capítulo.
En muchos libros, la acción cambia de un personaje a otro o de un lugar a otro. Los maquetadores hacen notar eso poniendo una o dos líneas en blanco entre párrafos. El ocr lo que hace es poner un margen inferior de párrafo de dos líneas para hacer eso mismo, así que lo que hay que hacer es ir a donde se produzca esa separación y darle al return para forzar un salto de párrafo.

Una vez hecho todo ésto, hay que reemplazar los saltos de línea (en word ^l) por saltos de párrafo (^p) ya que cuando se haga la conversión los saltos de línea serán ignorados.

También se pueden quitar los silabeos que había en el libro borrando el, a falta de nombre mejor "guión de silabeo". Éste en la vista normal parece un guión corriente, sin embargo si pincharmos en la opción de mostrar texto oculto el símbolo se transforma en "¬", para quitarlo en Buscar y Reemplazar hay que sustituir "^-" por nada, con lo que desaparece.

En cualquier momento del proceso se pueden quitar los espacios extra (el ocr inserta muchos espacios extra para imitar la alineación justificada) sólo hay que sustituir los "  " por " ".

Una vez unido el libro me enfrento a tener que poner estilos de párrafo. Ójala fuera tan sencillo. Resulta que todo lo que ha captado el ocr está representado con un estilo de párrafo diferente. Si al ocr le ha parecido que un párrafo es ligeramente más ancho que el siguiente tiene un estílo de párrafo distinto que otro, etc. Trabajar con ese montón de estilos de párrafo es un coñazo, porque no puedes poner los estilos que necesitas con facilidad.
Al principio probé con la opción de "Eliminar estilos", pero me encontré con que quitaba las cursivas de algunos párrafos o en otros intercambiaba las cursivas y no cursivas. Cuando ví esto aprendí que el word en algunos párrafos en cursiva utiliza etiquetas de cursiva, mientras que en otros la cursiva está definida como una propiedad del párrafo.

Para evitar cosas raras uso mi primer "truco".

Paso 2: Uniformizando el texto.
Abro el doc que tengo hasta este momento con el OpenOffice, lo guardo como odt y lo exporto a fb2. En éste momento tengo un fichero fb2 que no solo tiene los atributos más básicos (negrita, cursiva, subíndice, superindice, enlaces e imágenes). Por suerte, las OOOFBTools, evitan el problema que he mencionado antes con las cursivas.

Quito las imágenes que pueda haber para aligerar el fichero ya que en este punto solo molestan.

Convierto las etiquetas de fb2 a html

<strong> </strong> --> <b> </b>
<emphasis> </emphasis> --> <i> </i>

Quito la cabecera y las etiquetas <section> </section> y <body> </body> que encuentre.

Me aseguro que la codificación del fichero sea ANSI y una vez guardado el fichero cambio la extensión a html. Entonces abro con el word otra vez. Ahora tengo un fichero en el que todo el texto tiene el formato "Normal (web)". Lo dejo así y guardo como doc en un fichero nuevo.

Paso 3: Capítulos, citas y otros estilos de párrafo.

Primero hay que marcar los capítulos. Saco el Mapa del documento (Ver-->Mapa del documento), aparecerá un recuadro gris en el lateral izquierdo. Debería estar vacío (aunque a veces hay líneas ahí, pero como no van a molestar no hace falta que las toquemos). Voy buscando el título de cada capítulo y lo marco con el estilo de párrafo "Título 1". Debería aparecer una entrada en el recuadro, si pinchamos con el ratón nos trasladará a la línea de cada capítulo.

Algunos libros tienen una estructura de "libros" y "capítulos", algo como:

Libro 1:
- Capítulo 1
- Capítulo 2
- Capítulo 3
- Capítulo 4
Libro 2:
- Capítulo 5
- Capítulo 6
- Capítulo 7
- Capítulo 8

etc.

En éste caso los Libros 1 y 2 tendrían el estilo "Título 1", mientras que los Capítulos del 1 al 8 usarían el estilo "Título 2". Ésto puede seguir con en teoría cualquier cantidad de anidamiento (al menos no he encontrado todavía un límite en el formato fb2), aunque en la práctica las OOOFBTools solo pueden manejar 10 niveles de capítulos.

Una vez hecho ésto, hay que dedicarse a recorrer el texto, teniendo a mano el libro original o el pdf para detectar todos los párrafos con estilos diferentes, como citas, poemas y canciones. El fb2 distingue entre citas y poemas (y cuando veo una canción le pongo el formato poema), así que las citas las marco con el estilo "Cita" y los poemas y canciones con "Poema" no importa si no cambia el aspecto, mientras apareca el nombre es suficiente. Fb2 también tiene una etiqueta para el autor de la cita o del poema, así que esos llevan el estilo "Cita autor" y "Poema Autor" respectivamente.

Si encuentro una tabla en el texto original la hago en este momento (OOOFBTools exporta las tablas)

También suelo aprovechar este momento para marcar cosas como fragmentos de texto que se supone que son "cartas" o "informes" u otros estilos especiales. Por desgracia las OOOFBtools no son capaces de poner otras etiquetas que no sean las básicas así que suelo poner "ññ" que normalmente no usa nadie. Por supuesto si quisiera "liberar" el documento en forma de word, pondría a estos fragmentos un estilo de párrafo adecuado y modificaría los otros (citas y poemas) en consecuencia (y una vez generado el fb2 en el siguiente paso borrar las "ññ").

Paso 4: Otra vez al fb2.

Ahora que tengo un fichero word formateado, lo abro con OpenOffice. Guardo como odt y reemplazo los estilos:
Título 1 --> Level 1
Título 2 --> Level 2
Cita --> Cite
Cita autor --> Cite author
Poema --> Poem
Poema autor --> Poem author
etc.

Una vez hecho eso exporto a fb2. Se puede aprovechar este momento para rellenar los metadatos en el cuadro de diálogo (autor, título, etc.) o más adelante a mano cuando lo editemos con el Notepad++

Paso 5: Dejar el fichero bien.

Lo primero de todo es que hay que depurar las secciones.
Muchas veces nos encontraremos cosas como:

-
Libro 1:
-
- Capítulo 1
- Capítulo 2
- Capítulo 3
- Capítulo 4
Libro 2:
-
- Capítulo 5
- Capítulo 6
- Capítulo 7
- Capítulo 8

En el índice habra huecos porque al convertir a transformado trozos en secciones que no deberían estar.

Por ejemplo:

<section>
<title>
<p>Libro 1</p>
</title>
<section>
<p>Un texto cualquiera</p>
</section>
<section>
<title>
<p>Capítulo 1</p>
</title>
<p>Texto del capítulo 1</p>
</section>
</section>

Debería ser así:


<section>
<title>
<p>Libro 1</p>
</title>

<p>Un texto cualquiera</p>

<section>
<title>
<p>Capítulo 1</p>
</title>
<p>Texto del capítulo 1</p>
</section>
</section>

Cuando el índice esté correcto podemos pasar a los detallitos. En este punto tenemos un fichero más que adecuado para leer, pero me he acostumbrado a ciertas cosas y eso implica usar css.

El css se puede usar de múltiples formas y coolreader es realmente permisivo en su utilización. Sin embargo, ya que quiero que calibre lo convierta adecuadamente, uso la forma definida por el estándar de forma estricta.

Definir nuevas etiquetas.

En la cabecera del fichero se pueden incluir y redefinir etiquetas xml.

Calibre convertirá correctamente las nuevas etiquetas, sin embargo mi experiencia con la redefinición de las normales no es tan satisfactoria, así que aquí solo pondré ejemplos de etiquetas nuevas. Debe ir en la cabecera, justo antes de <description/>.

Ejemplo:

<?xml version="1.0" encoding="utf-8"?>
<FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.0" xmlns:l="http://www.w3.org/1999/xlink">
<stylesheet type="text/css">
style [name = "capital"] {
font-size:250%
}
style [name = "falsaversal"] {
font-size: 80%;
}
</stylesheet>
<description>
....


Aquí he definido una etiqueta de nombre "capital" que cambia el tamaño de la letra para imitar el efecto de letra capital y otra "falsaversal" para hacer lo mismo con las versales.

Y cuando las usemos haremos lo siguiente.

<p><style name="capital">L</style>a letra capital aparece al principio del capítulo. S<style name="falsaversal">IN EMBARGO LAS VERSALES PUEDEN APARECER EN CUALQUIER LUGAR OPORTUNO</style></p>

Las versales se usan bastante en algunos libros, y sí es una lata hacerlas así pero no hay más remedio. Como curiosidad os diré que aunque el estándar ePub admite las versales (como un atributo css) la realidad es que el Adobe Digital Editions no es capaz de mostrarlas, así que hay que recurrir a el mismo truco que uso yo o incrustar una fuente truetype versalizada...

A parte de las etiquetas nuevas podemos querer modicar las ya existentes. Podría hacerlo en el stylesheet, y funcionarían perfectamente, pero calibre no las convierte, así que he optado por sobrecargar directamente la etiqueta que necesite.

Por ejemplo, un párrafo sin sangría sería:

<p style="text-indent:0em">

Uno centrado
<p style="text-align:center">

O alineado a la izquierda

<p style="text-align:left">

Las opciones son casi las mismas que las del css convencional.

Ejemplos prácticos:

Título de la novela centrado en negrita y versales. Las dos primeras líneas hacen que aparezca bastante centrado verticalmente.

<p style="page-break-before:always; line-height:0%"> </p>
<p style="margin-top:35%"/>
<p style="font-size:170%; text-align:center; font-weight:bold; text-indent:0em; hyphenate:none; margin-top:0.4em; margin-bottom:0.4em; margin-left:5%; margin-right:5%">T<style name="falsaversal">ITULO DEL LIBRO</style></p>
<empty-line/>
<p style="font-size:140%; text-align:center; font-weight:bold; text-indent:0em; hyphenate:none; margin-top:0.4em; margin-bottom:0.4em; margin-left:5%; margin-right:5%">A<style name="falsaversal">UTOR</style></p>
<p style="margin-top:5%"/>
<p style="font-size:140%; text-align:center; font-weight:bold; text-indent:0em; hyphenate:none; margin-top:0.4em; margin-bottom:0.4em; margin-left:5%; margin-right:5%">Otra línea más (traductor, subtitulo de la novela, etc.)</p>
<empty-line/>

Título de capítulo alineado a la izquierda y sin sangrado
<title>
<p style="text-indent:0em;text-align:left;">Título alineado ala izquierda y sin sangrado</p>
</title>

<title style="page-break-before:avoid;">
<p>Título normal pero sin salto de página</p>
</title>


Clásica dedicatoria:
<p style="height:100px"> </p>
<p style="text-align:right">Una clásica dedicatoria alineada a la derecha</p>

Imitación de una carta:
<p style="margin-left:5%"><emphasis>Aquí hay una prolija carta </emphasis></p>
<empty-line/>
<p style="text-align:right; margin-right: 1em">L<style name="falsaversal">A</style> F<style name="falsaversal">IRMA</style></p>

Y hay mil ejemplos posibles más, lo importante es saber que quieres hacer y que css necesitas.

En este momento es cuando buscaría las "ññ" para adecuar la presentación a como viniera en el libro e insertaría las imágenes y la portada.

Tras ésto comprobaría que el xml esté bien y no se me haya traspapelado alguna etiqueta y ya debería estar el libro.

Después pasaría a incluirlo en calibre y a convertir a epub. Como la conversión del calibre no es perfecta suelo revisar el epub usando la función "Retocar libro" y editándolo con el Notepad++. Una vez que tengo el libro como quiero lo recomprimo y genero el fichero mobi del epub (calibre convierte muy bien de epub a mobipocket).

Y ésto es a grandes rasgos lo que hago. Parece farragoso, pero realmente no me cuesta demasiado hacer todo ésto, relativamente hablando. Si parto de un word o un fb2 bien hecho y que solo tengo que revisar los títulos y si hay alguna cita tardo realmente poco. Si es un libro completo con varios tipos de citas, versos, etc. puedo tardar más.

Cuando compro un libro tengo que convertirlo de epub (o si tengo mala suerte de mobipocket) y depende de lo complicado que sea el formato puedo convertirlo a fb2 con calibre u optar por descomprimirlo y convertirlo a mano con el Notepad++. Si es muy complejo prefiero lo segundo ya que calibre no convierte demasiado bien a fb2.

Y básicamente ésto es todo. Por supuesto se me habrán quedado cosas en el tintero, pero para eso están los comentarios.