Cómo crear un ePub a mano

Kiermel nos dice: «Ya hay un software con el que puedes crear un EPUB de forma visual WYSIWYG. Se llama Sigil y tiene licencia de Fuente Abierta GPLv3: http://code.google.com/p/sigil/». Podéis leer un minitutorial ilustrado sobre cómo usar Sigil aquí.

Lo que sigue son instrucciones técnicas sobre el formato EPUB. La mayor parte de la información procede de aquí y de aquí.

Los documentos EPUB no son más que HTML, CSS, metadatos e imágenes empaquetados en un zip. Si uno abre el archivo con un gestor de archivadores puede extraer los contenidos sin más (si no llevan DRM). Sin embargo, los documentos que generan algunos conversores automáticos no validan con epubcheck y están llenos de marcas de estilo inútiles. En ocasiones nos puede interesar saber cómo manipular directamente un archivo EPUB sin utilizar asistentes.

1. Requisitos

  • Conocer HTML.
  • Conocer CSS.

2. Herramientas

  • Un editor de textos sencillo, mejor si resalta las palabras clave de CSS y HTML.
  • Usuarios de Windows: un compresor avanzado de archivos zip.
  • Una plantilla. Cualquier EPUB sin DRM que sepamos que funciona puede servir.
  • Opcional: GIMP, Photoshop, etc. para editar imágenes.
  • Opcional: epubcheck (requiere Java). También se pueden validar los EPUBs en línea aquí.
  • Un libro electrónico o software para comprobar el resultado.

3. Preparación

Para acceder a los contenidos de un documento en formato EPUB que vayamos a editar o a usar como plantilla para crear uno nuevo sólo tenemos que descomprimirlo.

La carpeta de trabajo debería contener:

  • mimetype: es un archivo de texto sin extensión que debe contener «application/epub+zip», sin comillas.
  • META-INF: carpeta.
  • OEBPS: carpeta.

 

Dentro de META-INF:

  • container.xml: es el archivo que indica dónde está el contenido en sí. Es la línea en la que pone «full-path=”OEBPS/content.opf”». Normalmente no necesitaremos cambiarlo.

 

Dentro de OEBPS:

  • content.opf: contiene los metadatos, el manifiesto (la declaración de lo que contiene) de nuestro documento y el orden de presentación. Si no vamos a cambiar nada en la plantilla no tendremos que hacer mucho aparte de editar los datos y el número de capítulos.

    La línea «dc:identifier» es el identificador único. Detrás de “urn:uuid:” podemos poner el ISBN o cualquier otro número que nos convenga.

    En «dc:language» figura el indicador de idioma. Para el español es «es». Para el español de España es «es-es», para el de Argentina «es-ar», etc.

    En la sección «manifest» se listan los archivos que forman parte del libro en sí:
    <item id="imgl" href="images/cover.jpg" media-type="image/jpeg"/>
    <item id="chapter01" href="Section0001.xhtml" media-type="application/xhtml+xml">
    ...

    El orden no importa. Cada capítulo debería ir en un archivo separado, por ejemplo “Section0001.xhtml” “Section0002.xhtml”, etc., y los tenemos que listar aquí, junto con cualquier otra sección que queramos añadir.

    El atributo «id» que de cada archivo se usa para ordenar los contenidos en la sección «spine»:
    <spine toc="ncx">
      <itemref idref="cover"/>
      <itemref idref="titlepage"/>
    ...

    En el tag que abre la sección se indica el id de la tabla de contenidos (TOC).

  • toc.ncx: este es el índice. El encoding debería ser «utf-8». En el metadato «dtb:uid» se indica la id que habíamos elegido. «dtb:depth» indica el número de niveles del índice. En teoría «dtb:totalPageCount» y «dtb:maxPageNumber» son requeridos pero no hace falta ponerles un valor para que valide el EPUB.

    A continuación viene la estructura del índice. En los tags «navpoint» se indican los mismos id que aparecen en content.opf para cada archivo. Los valores para «playorder» tienen que estar en orden y sin saltos de numeración.

  • stylesheet.css: La hoja de estilos. En un libro ordinario no serán necesario ser muy específicos con los formatos. Es mejor que los controle la aplicación del usuario.
  • cover.xhtml, titlepage.xhtml, copyright.xhtml, Section0001.xhtml, legal.xhtml…: Esto son las secciones del libro en formato XHTML. Se pueden crear tantas como se desee para poder acceder a cada sección desde el índice.
  • images: carpeta. Contiene las imágenes que acompañan al texto, incluida la cubierta. Probablemente los lectores de ebooks esperen que el archivo se llame “cover.jpg” o “cover.png”. No hay normas sobre el tamaño adecuado. Cuanto mayor sea la imagen mejor calidad tendrá en lectores de cierto tamaño, pero también aumentará de forma desproporcionada el tamaño del archivo.

4. Empaquetado

Para empaquetar de nuevo el libro, el archivo «mimetype» tiene que ir primero y sin compresión. En Linux o en Mac sólo tenemos que ir a la carpeta de trabajo en una terminal y escribir:

zip -v0X miebook mimetype
zip -vr miebook * -x miebook.zip mimetype
mv miebook.zip miebook.epub

Por último, deberíamos validar el archivo. Si hemos bajado epubcheck, vamos a la terminal y escribimos:

java -jar epubcheck.jar "miebook.epub"

El programa nos indicará si ha encontrado algún error y qué tipo de error es.