Guía del formato ePub
Recursos
Haz clic en las pestañas para ver los capítulos.
Texto original de Harrison Ainsworth, http://www.hxa7241.org/articles/
Versión en español por Felipe Soler – www.etext.es
Copyright (c) 2007, Harrison Ainsworth / HXA7241.
Copyright (c) 2010, Felipe Soler / www.etext.es

Esta obra está bajo una licencia de Creative Commons.
Indice
INTRODUCCION
Esta es una guía para crear libros electrónicos o publicaciones en formato ePub. Básicamente es un ejemplo anotado. No se mencionan todos los detalles o variaciones, pero se incluyen las especificaciones de uso normal. Está pensado para crear publicaciones ajustadas a la norma. Se incluye también una descripción de estilos opcionales para un lector Adobe Digital Editions (también ajustados a la norma).
Esta guía es un primer paso para enterder como funciona el formato ePub. Para la creación de libros en este formato, también es necesaria la compresión y habilidades para crear documentos XHTML/CSS y XML.
IDPF
‘Epub’ es un estándar del International Digital Publishing Forum. Es una adaptación de otros estándares (principalmente: XHTML, CSS, XML, NCX, DCMI). Está dividido en tres partes: contenido, metadatos, y archivo. Respectivamente, Open Publication Structure, Open Packaging Format y OEBPS Container Format, (OPS, OPF, y OCF). Es potente, directo y no propietario.
Adobe Digital Editions
‘ADE’ es uno de los principales lectores de archivos ePub. Es fiel al estándar. También utiliza un componente opcional propietario: una hoja de estilo extra para el ajuste de la apariencia del texto en columna (lo que está permitido por el estándar).
Esta guía se escribió usando ADE versión 1.0.467.
Documentos XHTML
El contenido se crea a partir de diferentes documentos de tipo XHTML, CSS, e imágenes.
XHTML
El formato ePub emplea XHTML 1.1, sin los siguientes módulos:
- Forms (Módulo de Formularios)
- Server-side Image Map (Módulo de Mapa de Imagen del lado Servidor)
- Intrinsic Events (Módulo de Eventos Intrínsecos)
- Scripting (Módulo de Scripting)
Diferencias entre XHTML 1.1 y XHTML 1.0 estricto:
- Atributo
langno permitido (en su lugar usarxml:lang) - Atributo
nameen elementosaymapno permitido (en su lugar usarid) - Se permiten anotaciones ruby
Se incluye una declaración XML y XHTML doctype , al principio del documento:
<?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">y un atributo xmlns en html :
<html xmlns="http://www.w3.org/1999/xhtml">Cualquier caracter unicode, en codificación UTF-8 o UTF-16, está permitido. Pero algunos lectores pueden tener capacidades de representación limitadas. ADE 1.0 no soporta:
­       ‌ ‍ ‎ ‏ ‾ ⌈ ⌉ ⌊ ⌋)CSS
Soporta un subconjunto de CSS 2.1. Ver detalles en la parte CSS de la especificación OPS.
Es recomendable ser simple, por lo que una opción válida es usar CSS 1 sin las siguientes propiedades:
- Imagen de fondo:
background-imagebackground-repeatbackground-attachmentbackground-positionbackground
word-spacingletter-spacingtext-transformlist-style-image
Otros detalles menores no están soportados por la norma. No debe usarse posicionamiento absoluto.
Las CSS pueden ligarse a la cabecera XHTML head , o clocarse en style en head .
Adobe Digital Editions, ADE 1.0, no soporta:
- pseudo-clases, pseudo-elementos
text-align: justify;font-variant: small-caps;- Extras OPS:
display: oeb-page-head;display: oeb-page-foot;oeb-column-number: [integer];)
Imágenes
El formato XHTML puede contener imágenes de los siguientes tipos:
- image/jpeg
- image/png
- image/gif
- image/svg+xml
Fuentes
ePub usa fuentes OpenType. Referenciarlas en la CSS con @font-face , p. ej.:
@font-face { font-family: "Minion Pro"; src: url(MinionPro.otf); }@font-face { font-family: "Minion Pro"; font-style: italic; src: url(MinionPro-It.otf); }Otros descriptores admitidos son:
font-variant, font-weight, font-size.Vea las principales especificaciones: OPS, XHTML, CSS en la pestaña “Especificaciones”.
Paquete y archivos contenedores
Un documento ePub debe contener estos 4 archivos, de acuerdo con las siguientes descripciones:
mimetype
application/epub+zip
Se trata de ASCII, sin un final de linea.
Ver Especificación: OCF
container.xml
<?xml version="1.0"?>
<container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
<rootfiles>
<rootfile full-path="content.opf" media-type="application/oebps-package+xml"/>
</rootfiles>
</container>
Si se renombra o se coloca el archivo content.opf en otro lugar, debe cambiarse el atributo full-path para que haya correpondencia.
Ver Especificación: OCF
content.opf
<?xml version="1.0"?> <package xmlns="http://www.idpf.org/2007/opf" unique-identifier="dcidid" version="2.0"> <metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:opf="http://www.idpf.org/2007/opf"> <dc:title>Epub Format Construction Guide</dc:title> <dc:language xsi:type="dcterms:RFC3066">en</dc:language> <dc:identifier id="dcidid" opf:scheme="URI"> http://www.hxa7241.org/articles/content/epup-guide_hxa7241_2007_2.epub </dc:identifier> <dc:subject>Non-fiction, technical article, tutorial, Epub, IDPF, ebook </dc:subject> <dc:description>A guide for making Epub ebooks/publications, sufficient for most purposes. It requires understanding of XHTML, CSS, XML. </dc:description> <dc:relation>http://www.hxa.name/</dc:relation> <dc:creator>Harrison Ainsworth / HXA7241</dc:creator> <dc:publisher>Harrison Ainsworth / HXA7241</dc:publisher> <dc:date xsi:type="dcterms:W3CDTF">2007-12-28</dc:date> <dc:date xsi:type="dcterms:W3CDTF">2010-08-27</dc:date> <dc:rights>Creative Commons BY-SA 3.0 License.</dc:rights> </metadata> <manifest> <item id="ncx" href="toc.ncx" media-type="application/x-dtbncx+xml" /> <item id="css" href="EpubGuide.css" media-type="text/css" /> <item id="logo" href="hxa7241-logo.svg" media-type="image/svg+xml" /> <item id="title" href="EpubGuide-title.html" media-type="application/xhtml+xml" /> <item id="contents" href="EpubGuide-contents.html" media-type="application/xhtml+xml" /> <item id="intro" href="EpubGuide-intro.html" media-type="application/xhtml+xml" /> <item id="part1" href="EpubGuide-1.html" media-type="application/xhtml+xml" /> <item id="part2" href="EpubGuide-2.html" media-type="application/xhtml+xml" /> <item id="part3" href="EpubGuide-3.html" media-type="application/xhtml+xml" /> <item id="part4" href="EpubGuide-4.html" media-type="application/xhtml+xml" /> <item id="specs" href="EpubGuide-specs.html" media-type="application/xhtml+xml" /> </manifest> <spine toc="ncx"> <itemref idref="title" /> <itemref idref="contents" /> <itemref idref="intro" /> <itemref idref="part1" /> <itemref idref="part2" /> <itemref idref="part3" /> <itemref idref="part4" /> <itemref idref="specs" /> </spine> <guide> <reference type="title-page" title="Title Page" href="EpubGuide-title.html" /> <reference type="toc" title="Table of Contents" href="EpubGuide-contents.html" /> <reference type="text" title="Text" href="EpubGuide-intro.html" /> </guide> </package>
Metadata (información de la publicación)
Proporciona información de la publicación de acuerdo a los teminos DCMI. El orden no es significativo, y están permitidos los duplicados.
Términos requeridos:
titlelanguage— usa un código de idioma RFC3066identifier— usa una cadena única: URI o ISBN son adecuados
Términos opcionales:
creatorcontributorpublishersubjectdescriptiondatetypeformatsourcerelationcoveragerights
Algunos términos tienen atributos opcionales:
creator, contributoropf:role— ver los valores en http://www.loc.gov/marc/relators/
dateopf:event— no estandarizado: usar un formato razonable
identifieropf:scheme—no estandarizado: usar un formato razonable
date, format, identifier, language, typexsi:type— usar un término estándar apropiado (comoW3CDTFparadate)
contributor, coverage, creator, description, publisher, relation, rights, source, subject, titlexml:lang— usa el formato RFC-3066
manifest (lista de archivos del documento)
Es una lista de todos los archivos que componen el documento. Excepto: mimetype, container.xml, content.opf . El orden no es significativo.
Debe asignarse el correcto mime-type en el atributo media-type. Las ids son obligatorias y deben ser únicas en el archivo content.opf.
spine (definición del orden de lectura)
Lista de todos los los documentosl XHTML en el manifest (que usan idref), y nada más, sin dupicados. El orden es significativo. Los documetos XHTML que sean omitidos, no podrán ser viculados, referenciados o localizables desde ninguna parte de la publicación.
guide (partes principales del documento)
Esta sección es opcional. Cada elemento hace referencia a un archivo del documento, y pueden tener una id. Los tipo types permitidos son:
- cover
- title-page
- toc (table of contents)
- index
- glossary
- acknowledgements
- bibliography
- colophon
- copyright-page
- dedication
- epigraph
- foreword
- loi (list of illustrations)
- lot (list of tables)
- notes
- preface
- text
- other.[...]
toc.ncx
<?xml version="1.0"?> <!DOCTYPE ncx PUBLIC "-//NISO//DTD ncx 2005-1//EN" "http://www.daisy.org/z3986/2005/ncx-2005-1.dtd"> <ncx xmlns="http://www.daisy.org/z3986/2005/ncx/" version="2005-1"> <head> <meta name="dtb:uid" content="http://www.hxa7241.org/articles/content/epup-guide_hxa7241_2007_2.epub"/> <meta name="dtb:depth" content="2"/> <meta name="dtb:totalPageCount" content="0"/> <meta name="dtb:maxPageNumber" content="0"/> </head> <docTitle> <text>Epub Format Construction Guide</text> </docTitle> <navMap> <navPoint id="navPoint-1" playOrder="1"> <navLabel> <text>Title Page</text> </navLabel> <content src="EpubGuide-title.html"/> </navPoint> <navPoint id="navPoint-2" playOrder="2"> <navLabel> <text>Table of Contents</text> </navLabel> <content src="EpubGuide-contents.html"/> </navPoint> <navPoint id="navPoint-3" playOrder="3"> <navLabel> <text>Introduction</text> </navLabel> <content src="EpubGuide-intro.html"/> </navPoint> <navPoint id="navPoint-4" playOrder="4"> <navLabel> <text>1: XHTML Documents</text> </navLabel> <content src="EpubGuide-1.html"/> </navPoint> <navPoint id="navPoint-5" playOrder="5"> <navLabel> <text>2: Package And Container Files</text> </navLabel> <content src="EpubGuide-2.html"/> <navPoint id="navPoint-6" playOrder="6"> <navLabel> <text>mimetype</text> </navLabel> <content src="EpubGuide-2.html#mimetype"/> </navPoint> <navPoint id="navPoint-7" playOrder="7"> <navLabel> <text>container.xml</text> </navLabel> <content src="EpubGuide-2.html#containerxml"/> </navPoint> <navPoint id="navPoint-8" playOrder="8"> <navLabel> <text>content.opf</text> </navLabel> <content src="EpubGuide-2.html#contentopf"/> </navPoint> <navPoint id="navPoint-9" playOrder="9"> <navLabel> <text>toc.ncx</text> </navLabel> <content src="EpubGuide-2.html#tocncx"/> </navPoint> </navPoint> <navPoint id="navPoint-10" playOrder="10"> <navLabel> <text>3: ADE stylesheet</text> </navLabel> <content src="EpubGuide-3.html"/> </navPoint> <navPoint id="navPoint-11" playOrder="11"> <navLabel> <text>4: Container Structure</text> </navLabel> <content src="EpubGuide-4.html"/> </navPoint> <navPoint id="navPoint-12" playOrder="12"> <navLabel> <text>Specifications List</text> </navLabel> <content src="EpubGuide-specs.html"/> </navPoint> </navMap> </ncx>
head
Los siguientes atributos meta content deben estar establecidos:
uid— el mismo identificador único que encontent.opfdepth— según los niveles del arbol de contenidos (ennavMap), entero, >= 1totalPageCount— a 0maxPageNumber— a 0
navMap
Es una tabla de contenidos para la navegación, opcionalmente jerarquica. (navMap no necesita incluir todos los archivos XHTML, como hace spineen content.opf).
navPoint
Posee dos atributos:
id— debe ser único en el archivoplayOrder— un entero, erdenado ennavMap, comienza por 1
Subpartes:
textel contenido textual ennavLabelsrcel atributo es el origen listado encontent— hace refernecia a un URI de uno de los archivos XHTML (fragment id allowed)
Están permitidos navPoints anidados en navPoints.
Hoja de estilo ADE
Este archivo es opcional, y proporciona con ADE 1.0 un control adicional de la apariencia con columnas:
page-template.xpgt
Se añade un vínculo en la cabecera de los archivos XHTML:
<link rel="stylesheet" type="application/vnd.adobe-page-template+xml"
href="page-template.xpgt"/>
¿Será una publicación no conforme? En un documento ePub pueden incluirse archivos no estándar (como fuentes), pero debe recurrirse a un manejo adecuado. El estándar implica que todos los recursos manejados están explicitamente estandarizados (por la IDPF o usando componentes estándar). En las hojas de estilo, las reglas HTML dicen que los lectores deberían ignorar los tipos no reconocidos. Sin embargo, la hoja de estilo ADE parece conforme y segura. Además, ADE es uno de los principales lectores ePub tanto en ordenadores como en la implementación para lectores portátiles, que además se encarga de la gestión de los DRM de las obras distribuidas bajo plataforma DRM Adobe.
page-template.xpgt
<ade:template xmlns="http://www.w3.org/1999/xhtml" xmlns:ade="http://ns.adobe.com/2006/ade" xmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layout-master-set> <fo:simple-page-master master-name="single_column" margin-bottom="2em" margin-top="2em" margin-left="2em" margin-right="2em"> <fo:region-body/> </fo:simple-page-master> <fo:simple-page-master master-name="single_column_head" margin-bottom="2em" margin-top="2em" margin-left="2em" margin-right="2em"> <fo:region-before extent="8em"/> <fo:region-body margin-top="8em"/> </fo:simple-page-master> <fo:simple-page-master master-name="two_column" margin-bottom="2em" margin-top="2em" margin-left="2em" margin-right="2em"> <fo:region-body column-count="2" column-gap="3em"/> </fo:simple-page-master> <fo:simple-page-master master-name="two_column_head" margin-bottom="2em" margin-top="2em" margin-left="2em" margin-right="2em"> <fo:region-before extent="8em"/> <fo:region-body column-count="2" margin-top="8em" column-gap="3em"/> </fo:simple-page-master> <fo:simple-page-master master-name="three_column" margin-bottom="2em" margin-top="2em" margin-left="2em" margin-right="2em"> <fo:region-body column-count="3" column-gap="3em"/> </fo:simple-page-master> <fo:simple-page-master master-name="three_column_head" margin-bottom="2em" margin-top="2em" margin-left="2em" margin-right="2em"> <fo:region-before extent="8em"/> <fo:region-body column-count="3" margin-top="8em" column-gap="3em"/> </fo:simple-page-master> <fo:page-sequence-master> <fo:repeatable-page-master-alternatives> <fo:conditional-page-master-reference master-reference="three_column_head" page-position="first" ade:min-page-width="80em"/> <fo:conditional-page-master-reference master-reference="three_column" ade:min-page-width="80em"/> <fo:conditional-page-master-reference master-reference="two_column_head" page-position="first" ade:min-page-width="50em"/> <fo:conditional-page-master-reference master-reference="two_column" ade:min-page-width="50em"/> <fo:conditional-page-master-reference master-reference="single_column_head" page-position="first"/> <fo:conditional-page-master-reference master-reference="single_column"/> </fo:repeatable-page-master-alternatives> </fo:page-sequence-master> </fo:layout-master-set> <ade:style> <ade:styling-rule selector="#header" display="adobe-other-region" adobe-region="xsl-region-before"/> </ade:style> </ade:template>
El atributo selector en ade:style/ade:styling-rule se refiere a un selector CSS. Para más detalles: http://blogs.adobe.com/digitaleditions/template.html (puede que este enlace no exista). No tiene una especificación conocida.
Estructura del contenedor
Los archivos se organizan con la siguiente estructura de directorios:
EpubGuide
META-INF
container.xml
mimetype
content.opf
toc.ncx
page-template.xpgt
EpubGuide.css
hxa7241logo.png
EpubGuide-title.html
EpubGuide-contents.html
EpubGuide-intro.html
EpubGuide-1.html
EpubGuide-2.html
EpubGuide-3.html
EpubGuide-4.html
EpubGuide-specs.html
El directorio META-INF y su contenido son especiales, al igual que el archivo mimetype, pero todos los demás archivos pueden organizarse en una estructura de subdirectorios. De esta manera, también deberán ajustarse las referencias a estos archivos.
Una vez organizado, se deben comprimir los documentos en un archivo ZIP. La extensión del archivo deberá ser ‘epub’. Muy importante, el archivo mimetype debe ser el primero y no debe comprimirse. SE puede utilizar cualquier aplicación que sea capaz de crear contenedores ZIP y que permita incluir en ellos archivos sin comprimir (WinZip o 7zip son dos de ellas).
Lista de especificaciones
- Open Publication Structure (OPS) 2.0 v1.0
- http://www.idpf.org/2007/ops/OPS_2.0_final_spec.html
- Open Packaging Format (OPF) 2.0 v1.0
- http://www.idpf.org/2007/opf/OPF_2.0_final_spec.html
- OEBPS Container Format (OCF) v1.0
- http://www.idpf.org/ocf/ocf1.0/download/ocf10.htm