# EPUB

EPUB es un formato de archivo de libro electrónico que utiliza la extensión de archivo ".epub". El término es un acrónimo de la expresión inglesa electronic publication (publicación electrónica) y a menudo se le denomina ePub. EPUB es compatible con muchos lectores de libros electrónicos y hay software compatible para la mayoría de los teléfonos inteligentes, tabletas y computadoras. EPUB es un estándar técnico publicado por el International Digital Publishing Forum (IDPF). Se convirtió en un estándar oficial del IDPF en septiembre de 2007, sustituyendo al antiguo estándar Open eBook.
El Book Industry Study Group respalda al EPUB 3 como el formato preferido para el contenido empaquetado y ha declarado que la industria mundial de la publicación de libros debería unirse en torno a un único estándar. El formato EPUB es implementado como un archivo que contiene archivos XHTML, junto con imágenes y otros archivos de apoyo. EPUB es el formato de libro electrónico basado en XML (a diferencia del PDF) más ampliamente compatible con los proveedores, es decir, es compatible con casi todos los lectores electrónicos, con la notable excepción de Kindle hasta el año 2022.

## Historia

Como sucesor de Open eBook Publication Structure, EPUB 2.0 fue aprobado en octubre de 2007, con una actualización de mantenimiento (2.0.1) aprobada en septiembre de 2010.
La especificación EPUB 3.0 entró en vigor en octubre de 2011, sustituida por una actualización de mantenimiento menor (3.0.1) en junio de 2014. Entre las nuevas características principales figuran la compatibilidad para un diseño preciso o un formato especializado (Fixed Layout Documents), como en el caso de los libros de historietas y la compatibilidad con MathML. En mayo de 2016, los miembros del IDPF aprobaron la incorporación al World Wide Web Consortium (W3C), "para alinear completamente la industria editorial y la tecnología básica de la Web".
La versión actual de EPUB es la 3.2, vigente a partir del 8 de mayo de 2019. Se le ha dado soporte oficial a las versiones actuales de HTML, CSS y SVG, según lo definido por el W3C.

### Versión 2.0.1

El EPUB 2.0 fue aprobado en octubre de 2007, con una actualización de mantenimiento (2.0.1) destinada a aclarar y corregir las erratas en las especificaciones que se aprobaron en septiembre de 2010. La versión 2.0.1 de EPUB consta de tres especificaciones:
* Open Publication Structure (OPS) 2.0.1, comprende el formato de su contenido.
* Open Packaging Format (OPF) 2.0.1, describe la estructura del archivo .epub en XML.
* Open Container Format (OCF) 2.0.1,agrupa todos los archivos como un archivo ZIP.
EPUB utiliza internamente XHTML o DTBook (un estándar XML proporcionado por el Consorcio DAISY) para representar el texto y la estructura del documento de contenido, y un subconjunto de CSS para proporcionar el diseño y el formato. El XML se utiliza para crear el manifiesto del documento, la tabla de contenidos y los metadatos del EPUB. Por último, los archivos se agrupan en un archivo ZIP como formato de empaquetado.

#### Open Publication Structure 2.0.1

Un archivo EPUB utiliza XHTML 1.1 (o DTBook) para construir el contenido de un libro a partir de la versión 2.0.1. Esto es diferente de las versiones anteriores (OEBPS 1.2 y anteriores), que usaban un subconjunto de XHTML. Sin embargo, hay algunas restricciones en ciertos elementos. El tipo MIME para los documentos XHTML en el EPUB es application/xhtml+xml.
El estilo y el diseño se realizan utilizando un subconjunto de CSS 2.0, conocido como OPS Style Sheets. Esta sintaxis especializada requiere que los sistemas de lectura soporten solo una parte de las propiedades CSS y añadan algunas propiedades personalizadas. Las propiedades personalizadas incluyen oeb-page-head, oeb-page-foot y oeb-column-number. La incrustación de la fuente se puede realizar utilizando la propiedad @font-face, así como incluyendo el archivo de la fuente en el manifiesto de OPF. El tipo MIME para los documentos CSS en EPUB es text/css.
EPUB también requiere que las imágenes PNG, JPEG, GIF y SVG sean soportadas usando los tipo MIME image/png, image/jpeg, image/gif, image/svg+xml. Se permiten otros tipos de medios, pero los creadores deben incluir variantes alternativas que utilicen tipos compatibles.
Se requiere Unicode, y los productores de contenido deben usar codificación UTF-8 o UTF-16. Esto es para apoyar los libros internacionales y multilingües. Sin embargo, los sistemas de lectura no están obligados a proporcionar las fuentes necesarias para mostrar cada carácter unicode, aunque sí deben mostrar al menos un marcador de posición para los caracteres que no se pueden mostrar completamente.
Un ejemplo de la estructura de un archivo XHTML para un EPUB es como esto:

#### Open Packaging Format 2.0.1

El propósito de la especificación del OPF es: "...[definir] el mecanismo por el cual se vinculan los diversos componentes de una publicación OPS y proporciona una estructura y una semántica adicionales a la publicación electrónica". Esto se logra mediante dos archivos XML con las extensiones .opf y .ncx.

##### Archivo .opf

El archivo OPF, tradicionalmente llamado content.opf, contiene los metadatos del libro EPUB, el manifiesto del archivo y el orden de lectura lineal. Este archivo tiene un paquete de elementos raíz y cuatro elementos hijo: metadata, manifest, spine y guide. Además, el nodo package debe tener el atributo unique-identifier. El tipo MIME del archivo .opf es application/oebps-package+xml.
El elemento metadata contiene toda la información de metadatos para un archivo EPUB en particular. Se requieren tres etiquetas de metadatos (aunque hay muchas más disponibles): title, language y identifier. La etiqueta title contiene el título del libro, language contiene el lenguaje del contenido del libro en formato RFC 3066 o sus sucesores, como el más reciente RFC 4646 y identifier contiene un identificador único para el libro, como su ISBN o una URL. El atributo id delidentifier debe ser igual al atributo unique-identifier del elemento package.
El elemento manifest enumera todos los archivos contenidos en el paquete. Cada archivo está representado por un elemento item y tiene los atributos: id, href, media-type. Todos los XHTML (documentos de contenido), hojas de estilo, imágenes u otros medios, fuentes incrustadas, y el archivo NCX deben ser listados aquí. Solo el propio archivo .opf, el container.xml y los archivos mimetype no deben ser incluidos. Obsérvese que en el ejemplo que figura a continuación se da un media-type arbitrario al archivo de fuentes incluido, aunque no existe un tipo MIME para las fuentes.
El elemento spine enumera todos los documentos de contenido XHTML en su orden de lectura lineal. También se debe enumerar cualquier documento de contenido al que se pueda acceder a través de los enlaces o el índice. El atributo toc del spine debe contener el id del archivo NCX que figura en el manifiesto. El idref de cada elemento itemref se establece con el id de su respectivo documento de contenido.
El elemento guide es un elemento opcional con el propósito de identificar los componentes estructurales fundamentales del libro. Cada elemento reference tiene los atributos type, title, href. Los archivos referenciados en href deben ser listados en el manifiesto y se les permite tener un identificador de elemento (#figures en el ejemplo).
Un ejemplo de archivo OPF:

##### Archivo .ncx

El archivo NCX (Navigation Control file for XML), tradicionalmente llamado toc.ncx, contiene el índice jerárquico del archivo EPUB. La especificación para el NCX fue desarrollada para el Digital Talking Book (DTB), es mantenida por el Consorcio DAISY, y no es parte de la especificación EPUB. El archivo NCX tiene un tipo MIME de application/x-dtbncx+xml.
Cabe destacar que los valores de los elementos docTitle, docAuthor y meta name="dtb:uid" deben coincidir con sus análogos en el archivo OPF. Además, el elemento meta name="dtb:depth" se establece igual a la profundidad del elemento navMap. Los elementos navPoint pueden anidarse para crear una tabla de contenidos jerárquica. El contenido de navLabel es el texto que aparece en el índice generado por los sistemas de lectura que utilizan el .ncx. El elemento content de navPoint apunta a un documento de contenido que figura en el manifiesto y también puede incluir un identificador de elemento (por ejemplo, #section1).
En la sección 2.4.1 de la especificación del NCX, tal como se utiliza en EPUB, se describe una serie de excepciones a la especificación del NCX. La especificación completa para el NCX se puede encontrar en la sección 8 de Specifications for the Digital Talking Book.
Un ejemplo de archivo .ncx:

#### Open Container Format 2.0.1

Un archivo EPUB es un grupo de archivos que se ajustan a los estándares OPS/OPF y están empaquetados en un archivo ZIP. El OCF especifica cómo organizar estos archivos en el ZIP y define dos archivos adicionales que deben ser incluidos.
El archivo mimetype debe ser un documento de texto en ASCII que contenga la cadena application/epub+zip. También debe estar descomprimido, sin cifrar y ser el primer archivo en el ZIP. Este archivo proporciona una forma más fiable para que las aplicaciones identifiquen el tipo MIME del archivo que solo la extensión .epub.
Además, debe haber una carpeta llamada META-INF, que contiene el archivo requerido container.xml. Este archivo XML apunta al archivo que define el contenido del libro. Este es el archivo OPF, aunque se permiten elementos rootfile adicionales alternativos.
Aparte de mimetype y META-INF/container.xml, los otros archivos (OPF, NCX, XHTML, CSS y archivos de imágenes) se colocan tradicionalmente en un directorio llamado OEBPS.
Un ejemplo de estructura de archivos:
Un ejemplo de container.xml, dada la estructura de archivos anterior:

### Versión 3.0.1

La especificación recomendada EPUB 3.0 fue aprobada el 11 de octubre de 2011. El 26 de junio de 2014 se aprobó el EPUB 3.0.1 como una actualización de mantenimiento menor de la EPUB 3.0. El EPUB 3.0 sustituye a la anterior versión 2.0.1.
EPUB 3 consiste en un conjunto de cuatro especificaciones:
* EPUB Publications 3.0, que define la semántica del nivel de publicación y los requisitos generales de conformidad para EPUB Publications.
* EPUB Content Documents 3.0, que define perfiles de XHTML, SVG y CSS para su uso en el contexto de EPUB Publications.
* EPUB Open Container Format (OCF) 3.0, que define un formato de archivo y un modelo de procesamiento para encapsular un conjunto de recursos relacionados en un contenedor EPUB de un solo archivo (ZIP).
* EPUB Media Overlays 3.0, que define un formato y un modelo de procesamiento para la sincronización de texto y audio.
El formato EPUB 3.0 tenía por objeto responder a las siguientes críticas:
* Aunque es bueno para los libros basados en texto, el EPUB era bastante inadecuado para las publicaciones que requieren un diseño preciso o un formato especializado, como los libros de historietas.
* Un problema importante que dificultaba el uso del EPUB en la mayoría de las publicaciones técnicas era la falta de soporte para ecuaciones formateadas como MathML. Se incluyeron como imágenes de mapa de bits o SVG, lo que impidió el manejo adecuado por parte de los lectores de pantalla y la interacción con los sistemas de álgebra computacional. El soporte para MathML está incluido en la especificación EPUB 3.0.
* Otras críticas a EPUB fueron la falta de detalles en la especificación de la vinculación dentro o entre los libros EPUB, y la falta de una especificación para las anotaciones. Tal vinculación se ve obstaculizada por el uso de un archivo ZIP como contenedor para el EPUB. Además, no estaba claro si sería mejor enlazar usando el marcado estructural interno del EPUB (la especificación OPF mencionada anteriormente) o directamente a los archivos a través de la estructura de archivos del ZIP. La falta de una forma estandarizada de anotar los libros EPUB provocó dificultades para compartir y transferir las anotaciones y, por lo tanto, limitó los escenarios de uso del EPUB, en particular en entornos educativos, porque no puede proporcionar un nivel de interactividad comparable al de la web.
El 26 de junio de 2014, el IDPF publicó el EPUB 3.0.1 como especificación final recomendada.
En noviembre de 2014, EPUB 3.0 fue publicado por la Organización Internacional de Normalización como ISO/IEC TS 30135 (parts 1-7).
En enero de 2020, la Organización Internacional de Normalización publicó el EPUB 3.0.1 como ISO/IEC 23736 (parts 1-6).

### Versión 3.2

El EPUB 3.2 fue anunciado en 2018 y la especificación final fue publicada en 2019.

### Versión 3.3

El EPUB 3.3 se ha convertido en una recomendación de la W3C a partir del 25 de mayo del 2023. Esta versión es compatible con la versión previa (EPUB 3.2). Así mismo un documento EPUB 3.2 es también un EPUB 3.3 válido. Es decir, que migrarse a la versión EPUB 3.3 no requiere ningún cambio o acción.

## Características

El formato y muchos lectores soportan lo siguiente:
* Documento ajustable: permite optimizar el texto para una visualización determinada.
* Contenido de disposición fija: el contenido prepaginado puede ser útil para ciertos tipos de contenido de disposición compleja, como los libros ilustrados destinados solo a pantallas más grandes, como las tabletas.
* Como una página web HTML, el formato soporta imágenes de mapa de bits y vectoriales en línea, metadatos y estilo CSS.
* Marcador de página.
* Resaltado de pasajes y anotaciones.
* Una biblioteca que almacena libros y puede ser buscada.
* Fuentes redimensionables, y colores de texto y fondo variables.
* Soporte para un subconjunto de MathML.
* Gestión de derechos digitales: puede contener la gestión de derechos digitales (DRM) como una capa opcional.

### Gestión de derechos digitales

Un archivo EPUB puede contener opcionalmente DRM como capa adicional, pero no es requerido por las especificaciones. Además, la especificación no nombra ningún sistema DRM en particular para usar, así que los editores pueden elegir un esquema DRM a su conveniencia. Sin embargo, las futuras versiones de EPUB (específicamente OCF) pueden especificar un formato para DRM.
La especificación de EPUB no impone ni sugiere un esquema particular de DRM. Esto podría afectar el nivel de soporte de varios sistemas DRM en los dispositivos y la portabilidad de los libros electrónicos comprados. En consecuencia, dicha incompatibilidad de DRM puede segmentar el formato de EPUB a lo largo de las líneas de los sistemas DRM, socavando las ventajas de un único formato estándar y confundiendo al consumidor.

## Adopción

EPUB se utiliza ampliamente en lectores de software como Google Play Books en Android y Apple Books en iOS y macOS, pero no en los lectores electrónicos Amazon Kindle o en aplicaciones relacionadas con otras plataformas. Kindle utiliza principalmente el formato Mobipocket (MOBI), o sus formatos propietarios AZW, AZW3 o KFX. No obstante, permite el envío de archivos a través de su sistema "Send To Kindle", que lo convierte a un formato compatible. iBooks también soporta el formato propietario iBook, que se basa en el formato EPUB pero depende del código de la aplicación iBooks para funcionar.

## Implementación

Un archivo EPUB es un archivo que contiene, en efecto, un sitio web. Incluye archivos HTML, imágenes, hojas de estilo CSS y otros activos. También contiene metadatos. EPUB 3 es la última versión. Usando HTML5, las publicaciones pueden contener video, audio e interactividad, como los sitios web en los navegadores.

### Contenedor

Una publicación ePub se entrega en un solo archivo. Este archivo es un archivo comprimido sin cifrar que contiene un conjunto de recursos interrelacionados.
Un Contenedor Abstracto OCF (Open Container Format) define un modelo de sistema de archivos para el contenido del contenedor. El modelo de sistema de archivos utiliza un único directorio raíz común para todo el contenido del contenedor. Todos los recursos (no remotos) para publicaciones están en el árbol de directorios encabezado por el directorio raíz del contenedor, aunque EPUB no exige una estructura de sistema de archivos específica para ello. El modelo de sistema de archivos incluye un directorio obligatorio llamado META-INF que es hijo directo del directorio raíz del contenedor. META-INF almacena container.xml.
El primer archivo debe ser el de tipo MIME. Debe estar sin cifrar y sin comprimir para que los utilitarios que no son ZIP puedan leer el mimetipo. El archivo de tipo MIME debe ser un archivo ASCII que contenga la cadena "application/epub+zip". Este archivo proporciona una forma más fiable para que las aplicaciones identifiquen el tipo MIME del archivo que solo la extensión .epub.
Un ejemplo de estructura de archivos:
Debe haber una carpeta llamada META-INF, que contiene el archivo requerido container.xml. Este archivo XML apunta al archivo que define el contenido del libro. Este es el archivo OPF, aunque se permiten elementos rootfile adicionales alternativos.
Aparte de mimetype y META-INF/container.xml, los otros archivos (OPF, NCX, XHTML, CSS y archivos de imágenes) se colocan tradicionalmente en un directorio llamado OEBPS.
Un ejemplo de estructura de archivos:

### Publicación

El contenedor del ePUB debe contener:
* Al menos un documento de contenido.
* Un documento de navegación.
* Un documento de paquete que enumera todos los recursos de la publicación. Este archivo debe utilizar la extensión de archivo .opf. Contiene metadatos, un manifiesto, cadenas de recuperación, enlaces y una columna. Es una secuencia ordenada de referencias de identificación que define el orden de lectura por defecto.
El contenedor del ePUB puede contener:
* Hojas de estilo.
* Documentos PLS.
* Documento de superposición de medios.

### Contenido

Los documentos de contenido incluyen: Contenido HTML5, documentos de navegación, documentos SVG, documentos de contenido en scripts y documentos de disposición fija. El contenido también incluye documentos CSS y PLS. Los documentos de navegación sustituyen a la gramática NCX utilizada en EPUB 2.

### Superposición de medios

Los libros con narración de audio sincronizada se crean en el EPUB 3 mediante el uso de documentos de superposición de medios para describir el tiempo de la narración de audio pregrabada y cómo se relaciona con el marcado del documento de contenido del EPUB. El formato de archivo de las superposiciones de medios se define como un subconjunto de SMIL.

## Uso

Tanto los usuarios particulares, a nivel individual o colectivo, como las empresas pueden realizar sus propios archivos en formato EPUB gratuitamente y de forma libre. Si el contenido no está sujeto a derechos de autor, pueden compartir los archivos por internet o por otros medios. Muchas páginas web tienen enlaces a archivos epub o los alojan para descargar gratuitamente. Existen foros de creadores de archivos en Epub y grupos que los comparten o los crean de forma colaborativa.
En mayo de 2008, en una carta de la AAP firmada por el director de políticas digitales de la asociación, Ed McCoy, los editores estadounidenses apoyan de forma oficial el formato EPUB como estándar de la industria digital, y esperan el apoyo del IDPF (guías y consejos) para facilitar la transición a este formato por parte de las editoriales. El EPUB recibía así el apoyo directo de editoriales tales como Penguin, HarperCollins, Cambridge University Press, Pelican Publishing Company, Inc., John Wiley & Sons Inc., National Science Teachers Association, Hachette Book Group USA, Oxford University Press, Random House, Seattle Book Company/Rosetta Solutions, Simon & Schuster, Macmillan, Harlequin Enterprises Ltd., Workman Publishing, CQ Press, y Cengage Learning.
En julio de 2008 varios de los editores de habla inglesa como Simon & Schuster, Penguin Group, HarperMedia, Hachette Book Group y Harlequin Enterprises ya ofertaban este formato cuando se produjo un movimiento significativo por parte de Sony, que adoptó este formato en sus lectores.
A finales de 2008, Adobe incluía un proceso para generar EPUB desde su programa de maquetación Indesign, uno de los más utilizados para dar formato a los libros que se publican a partir de maquetas preexistentes, lo que abarató de forma importante la generación de libros en este formato.
El impulso definitivo a este formato de lectura de textos lo dio Google, al incluir este estándar en su inmensa base de libros digitalizados, de modo que añadió la opción de descargarlos en EPUB. En agosto de 2009 más de un millón de libros del dominio público estaban disponibles en Google Books.
La adopción del estándar sin embargo no es totalmente generalizada ya que el Kindle, el lector de Amazon, que es el que tiene más unidades en el mercado y es la mayor librería en línea del mundo, no incluye este formato. A pesar de que en 2011 se rumoreó que en Amazon indicaban que la empresa daría soporte también a este formato, todavía esto no ha sucedido. En cambio, con el lanzamiento del Kindle Fire Amazon introduce el "Kindle Format 8" (KF8), más conocido como AZW3.. AZW3 soporta un subconjunto de las características de HTML5 y CSS3,. con la misma estructura que un EPUB, lo que permite a los editores mediante KindleGen generar desde sus EPUBs (o descomprimiendo y leyendo el fichero opf) generar los ficheros en el nuevo formato que en realidad imbuye dos ficheros, uno en AZW3 (V8) y otro en el viejo MOBI (V7). En función del equipo para el que se envía, Amazon entrega la parte MOBI (viejos lectores), la AZW3 (desde el Kindle 4) o un formato derivado al vuelo del AZW3 para los lectores sobre equipos con IOS. El script en Python KindleUnpack permite dividir el fichero generado sin encriptar en los dos formatos Amazon + el EPUB imbuido.
En internet se encuentran numerosas páginas web, de las cuales algunas emplean la filosofía de edición participativa de Wikipedia para poner gratuitamente a disposición del público varios miles de libros en diversos formatos, con una preponderancia del formato EPUB, manifestando así su popularidad.

## Software

Existen muchos editores, incluyendo Calibre y Sigil, ambos de código abierto. Otra herramienta de código abierto, llamada epubcheck, puede utilizarse para validar y detectar errores en el marcado estructural (OCF, OPF, OPS), imágenes y archivos XHTML.
Existen lectores para todas las principales plataformas de hardware (excepto para Amazon Kindle) como Adobe Digital Editions y Calibre en las plataformas de escritorio, Google Play Books y Aldiko en Android e iOS, y Apple Books en macOS e iOS.