Como ya he comentado en alguna otra entrada, en general, las herramientas para crear y editar documentos en formato EPUB no son totalmente compatibles con la especificación EPUB 3, a partir de la cual se da soporte a MathML . Por tanto, si se quiere crear un documento EPUB 3 con todas las garantías, será recomendable saber a empaquetarlo manualmente.
Como ya sabemos, un documento EPUB está formado por un conjunto de páginas HTML que constituyen su contenido, junto con ciertos archivos de metadatos, empaquetados en un archivo zip con unas características particulares. La especificación recomendada para empaquetar un EPUB 3 se denomina Open Container Format (OCF) 3.
Vamos a suponer que ya hemos creado todos los archivos que van a formar el documento EPUB, estructurados en la forma correcta (como en la imagen).
El comando zip (de linux) utiliza la la sintaxis:
$ zip [-opciones] [nombre-archivo-zip archivos-para-comprimir]
La siguientes son algunas de las opciones que vamos a usar:
-q
: (quiet mode) no muestra información en pantalla;
-r
: (recursive) añade los subdirectorios recursivamente.
-0
: (store only) almacena sin compresión.
-D
: No añade entradas de directorio.
-X
: Excluye atributos extra de archivo.
Por otro lado, el archivo empaquetado EPUB 3 debe tener unas características especiales. No he conseguido descifrar totalmente la documentación oficial al respecto, pero en uno de los párrafos aparece lo siguiente:
“OCF Processors must treat OCF ZIP Containers with an Archive decryption header or an Archive extra data record as being in error”
Parece, por tanto es necesario excluir la información adicional de los archivos y carpetas con que que el comando zip los almacena (información del S.O. sobre todo). De todos modos, de no hacerlo, aparece un error en la validación. Es por ello que se suelen usar -D
y -X
.
En primer lugar, el archivo mimetype debe ser el primero del paquete, y no debe estar comprimido. Por tanto, suponiendo que nos encontramos dentro de la carpeta que contiene los archivos que formarán el documento, se ejecuta en primer lugar la instrucción:
$ zip -0Xq nombre-documento.epub mimetype
A continuación se añaden el resto de archivos (lo que se simboliza con *), teniendo en cuenta las opciones necesarias descritas arriba:
$ zip -XrDq nombre-documento.epub \*
Una vez creado el documento podemos pasar a validarlo, mediante la herramienta epubcheck, utilizando la instrucción
$ java -jar /ruta/hacia/epubcheck/epubcheck.jar nombre-documento.epub