Inicio Qué es Sagittarius Productos Pedidos Descargas El Mundo de Sagittarius Blog Contacto

Guía rápida para crear archivos .epub

Si vamos a publicar un documento que sea fundamentalmente texto, en vez del omnipresente pdf podemos decantarnos por el formato de libro electrónico, epub. Tiene la ventaja de la comodidad de lectura en los dispositivos electrónicos.

En esta guía rápida sobre epub vamos a ver en qué consiste este formato y cómo crearlo manualmente.

Hay programas que convierten de otros formatos a epub, y probablemente lo más eficiente sea usarlos. Pero no viene mal conocer las tripas de un epub; podremos cambiar algún aspecto si después de pasar el documento por el conversor no quedamos del todo contentos con el resultado. También podemos abrir un libro cuya maquetación nos haya gustado y tratar de replicarla.

Al igual que mis entradas sobre LaTeX, nada de lo que cuento a continuación es original, y la misma información se puede encontrar en infinidad de sitios. Al final puedes encontrar unas referencias para ampliar información (en inglés).

ESTRUCTURA DE UN EPUB

EPUB es un formato contenedor; cambia la extensión .epub de cualquier libro por .zip, y podrás abrirlo en el explorador de archivos.

Dentro podemos observar la siguiente estructura de carpetas y documentos (o una muy parecida):

mimetype              		
[META-INF]
	container.xml 		
[OEBPS]
	[IMAGES]
		cover.png
		image01.png
		...
	content.opf
	toc.ncx
	style.css
	cap01.xhtml
	cap02.xhtml
	...

Para crear nuestro libro electrónico deberemos reproducir esta estructura, meterlo todo en un archivo .zip, y cambiar la extensión a .epub. El procedimiento es un poco tedioso, pero una vez que tengamos la estructura, podemos reutilizarla para nuevos proyectos.

Todos los documentos relacionados son texto plano al que damos la extensión apropiada después de editarlos. Debemos guardarlos con la codificación UTF-8 para evitar problemas. A continuación describimos su contenido.

mimetype

Contiene única y exclusivamente la siguiente línea:

application/epub+zip

Hay que asegurarse de que no se incluye un carácter de fin de línea o fin de archivo. mimetype debe ser el primer documento que se añada al .zip, y no debe ir ni comprimido ni encriptado.

META-INF

Es una carpeta que contiene documentos con metadatos sobre el libro. Esta carpeta debe contener el documento container.xml, que no ha de estar encriptado.

container.xml

Es un documento que lista todos los documentos de nuestro epub. Para crearlo, basta con
abrir un archivo de texto plano y escribir lo siguiente:

<?xml version="1.0"?>
<container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
    	<rootfiles>
		<rootfile full-path="OEBPS/content.opf" media-type="application/oebps-package+xml" />
    	</rootfiles>
</container>

Lo guardamos con la codificación UTF-8 y cambiamos la extensión a .xml. De esta manera, container.xml apunta al documento content.opf, que a su vez lista el contenido de nuestro epub.

OEBPS

Dentro de esta carpeta vamos a meter todo lo demás.

content.opf

Creamos un archivo de texto plano y escribimos lo siguiente:

<?xml version="1.0"?>
<package version="2.0" xmlns="http://www.idpf.org/2007/opf" unique-identifier="BookID" >

	<metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:opf="http://www.idpf.org/2007/opf">
		<dc:title>Titulo</dc:title>
		<dc:creator opf:role="aut">Alvaro Prada</dc:creator>
		<dc:language>es</dc:language>
		<dc:rights>Public Domain</dc:rights>
		<dc:publisher>Prada Publicaciones</dc:publisher>
		<dc:identifier id="BookID" opf:scheme="UUID">20180925090042</dc:identifier>						
	</metadata>

	<manifest>
		<item id="ncx" href="toc.ncx" media-type="application/x-dtbncx+xml" />
		<item id="style" href="style.css" media-type="text/css" />
		<item id="c1" href="cap01.xhtml" media-type="application/xhtml+xml" />
		<item id="c2" href="cap02.xhtml" media-type="application/xhtml+xml" />
		<item id="cvr" href="images/cover.png" media-type="image/png" />
		<item id="img01" href="images/image01.png" media-type="image/png" />
	</manifest>

	<spine toc="ncx">
		<itemref idref="c1" />
		<itemref idref="c2" />
	</spine>
</package>

Como vemos, el documento tiene tres partes etiquetadas con <metadata>, <manifest> y <spine>.

En <metadata> incluimos los datos sobre la publicación (título, autor, editorial) entre las etiquetas <dc>. Creo que son obvias, pero <dc identifier> merece especial atención; este identificador debe ser único para cada epub que creemos, y haremos referencia a él en otro documento.

En <manifest> listamos todos los documentos de la carpeta OEBPS. Debemos darle un identificador único id e indicar el tipo de documento que es; para los que contienen texto es “application/xhtml+xml”, y para las imágenes en formato png “image/png”.

En <spine> listamos los documentos que queramos mostrar en el índice de contenido, utilizando el mismo id de su correspondiente elemento en el apartado <manifest>.

Documentos xhtml

Los documentos que he llamado cap01.xhtml, cap02.xhtml etc. contienen el texto del documento. Conviene crear uno por capítulo, de forma que podamos listarlos en el índice de contenido, y además así el lector electrónico solo necesita cargar la información contenida en el capítulo que estamos leyendo.

Estos documentos deben editarse conforme al estándar xml.

Al principio de nuestros documentos xhtml escribimos lo siguiente:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<!--Este es un comentario y no sera tomado en cuenta por el navegador -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head>
<title>CAPITULO 1</title>
<link href="style.css" type="text/css" rel="stylesheet" />
</head>
<body>

Entre las etiquetas <title> escribimos el título del capítulo. La línea debajo de esta tiene un vínculo a un documento css, al que nos referiremos más adelante.

A continuación escribimos el texto del capítulo como texto plano, al que se añaden etiquetas para cambiar el aspecto tipográfico. Por ejemplo, los párrafos van entre las etiquetas <p> y </p>, y si queremos incluir una imagen lo hacemos con <img src="images/image01.png"/>.

Es aquí donde es útil una herramienta de conversión, ya que no tiene sentido ir párrafo por párrafo añadiendo etiquetas.

El documento se cierra con las etiquetas

</body>
</html>

Es importante que no haya errores con las etiquetas xml, o el libro no se cargará adecuadamente. Para comprobarlo, puedes tratar de abrir el documento .xhtml con el navegador Firefox; si hay algún problema no cargará y además nos informará de dónde está el error.

style.css

El formato xml no admite muchas etiquetas para cambiar el aspecto visual del texto. Para hacer eso incluimos en la carpeta OEBPS un documento css, por ejemplo style.css, y al que hemos hecho referencia en la cabecera de cada documento xhtml.

Sería muy largo contar aquí todo lo que puede ir en un documento .css. Sirvan de ejemplo las siguientes líneas que dan formato al cuerpo de texto

body {
text-align: left;
font-family: "verdana";
}

toc.ncx

El documento toc.ncx genera un índice de contenido para que lo muestre el dispositivo lector.

El inicio del documento es el siguiente:

<?xml version="1.0" encoding="UTF-8"?>
<ncx xmlns="http://www.daisy.org/z3986/2005/ncx/" version="2005-1">

A continuación viene una sección con metadatos

<head>
     <meta name="dtb:uid" content="20180925090042"/>		
     <meta name="dtb:depth" content="1"/>			
     <meta name="dtb:totalPageCount" content="0"/>
     <meta name="dtb:maxPageNumber" content="0"/>
 </head>

<docTitle>
     <text>TITULO</text>
</docTitle>

El primer metadato "dtb:uid" debe tener como valor content el mismo identificador que dimos al epub en el documento content.opf

El segundo metadato "dtb:depth" indica, en el valor content, los niveles de profundidad que queramos para el índice de contenido (de 1 a 4).

Los otros dos metadatos deben quedar como están.

Entre las etiquetas <docTitle> escribimos el título de nuestro libro.

A continuación creamos cada una de las entradas del índice, que básicamente son hiperenlaces a nuestros documentos xhtml.

Cada entrada tiene un id, un número que indica el orden playOrder="1" y que debe ser correlativo, el texto a mostrar, y un vínculo al documento content src="cap01.xhtml".

<navMap>
    <navPoint id="cap01" playOrder="1">			
         <navLabel>
            <text>Capítulo 1</text>
         </navLabel>
        <content src="cap01.xhtml"/>
     </navPoint>

   <navPoint id="cap02" playOrder="2">			
         <navLabel>
            <text>Capítulo 2</text>
         </navLabel>
        <content src="cap02.xhtml"/>
     </navPoint>

</navMap>

Entre las etiquetas <text> escribimos el título de cada capítulo.

Cerramos el documento con la etiqueta

</ncx>

ENSAMBLAR EL EPUB

Una vez que tenemos todos los documentos, creamos un archivo zip vacío, metemos en él el documento mimetype, y a continauación todo lo demás. Cambiamos la extensión a .epub y ya tenemos nuestro libro electrónico. Para comprobar que no hay errores validamos el archivo con epubcheck.

REFERENCIAS

http://www.w3.org/AudioVideo/ebook/

http://www.hxa.name/articles/content/epub-guide_hxa7241_2007.html#packageandcontainerfiles

http://jedisaber.com/eBooks/

https://github.com/krisztianmukli/epub-boilerplate/wiki

CONVERSORES DE DOCUMENTOS A EPUB

writer2epub – Extensión para OpenOffice

Sigil

 

Deja un comentario