Pàgines

divendres, 2 d’agost de 2013

Creació d’epub des de LaTeX amb pandoc

Pandoc és un programa que permet passar d’un llenguatge de marques a un altre. Al meu blog personal Bitàcola hi vaig fer una entrada fa un temps on resumia les possibilitats d’aquest programa. Doncs bé, com que es tracta d’un projecte actiu, ara han afegit la possibilitat d’obtenir epub com a format de sortida. És a dir, es pot passar d’algun dels diferents formats d’entrada (markdown, reStructuredText, textile, HTML o LaTeX) a epub. En aquest article veurem, naturalment, el pas de LaTeX a epub que, entre altres coses, ens permetrà llegir els nostres documents LaTeX en un lector de llibres electrònics, per exemple.

Partim d’un document tex (que trobareu adjunt a aquest article) estructurat en una pàgina de títol, dos capítols i diferents seccions i subseccions. El pas directe tex -> epub és possible amb pandoc, però té el problema que no interpreta les fórmules.

El format epub és un fitxer comprimit (zip) que conté 3 fitxers en format XML:

  1. un amb el format, 
  2. l’altre amb l’estructura i 
  3. el tercer amb el contingut. 

Per això no hi ha problema en el canvi de marques de LaTeX a XML, però ara per ara Pandoc no construeix les fórmules. Vam fer diferents provatures passant de LaTeX a HTML primer i després d’HTML a epub però tampoc no van funcionar.

De manera que finalment vam fer el pas LaTeX -> HTML amb el programa tex4ht i el comandament:
htlatex elmeuepub.tex 
tal com vam explicar en l’article De LaTeX a HTML. Amb això generem un fitxer html que visualitza les fórmules com a imatges en format .png.

Ara, manualment, hem de substituir al fitxer tex font les expressions de les fórmules per les imatges generades per tex4ht. Un cop feta la substitució ja podem crear l’epub.

Tanmateix pandoc ens permet afegir a l’epub les metadades del llibre electrònic (títol, autor, data de publicació, etc) així com donar-li format. Per això hem de preparar dos fitxers:

  • Un fitxer XML amb les metadades, l’hem anomenat metadades.xml i el trobareu adjunt a aquest post. 
  • Un fitxer CSS amb el full d’estils de l’epub. També trobareu el fitxer epub.css adjunt a aquest post. No és més que un full d’estils en cascada com els que s’utilitzen en les pàgines web. Si en voleu trobar més i molt ben presentats visiteu la pàgina Epub Zen Garden on n’hi ha de realment espectaculars.

Ara ja estem en condicions de generar l’epub amb aquesta ordre de pandoc:
pandoc -S --epub-metadata=metadades.xml --epub-stylesheet=epub.css -o resultat.epub elmeuepub.tex 
que fa que pandoc

  • utilitzi l’opció -S o —smart, és a dir que produeixi una sortida tipogràfica correcta (per exemple: converteix les cometes rectes en cometes tipogràfiques). 
  • inclogui a l’epub (—epub-metadata=metadades.xml) les metadades que hem inclòs al fitxer metadades.xml utilitzi el full d’estils epub.css (—epub-stylesheet=epub.css) 
  • que creï el fitxer de sortida resultat.epub (-o resultat.epub) 
  • que utilitzi el fitxer d’entrada elmeuepub.tex 

Si voleu veure el resultat només cal que descarregueu el fitxer resultat.epub que trobareu adjunt a aquest fitxer i el llegiu des del vostre lector de llibres electrònics o al vostre ordinador des d’un bon programa, com ara Calibre.
Publicat per primer cop el diumenge 8 de maig de 2011.

Cap comentari:

Publica un comentari a l'entrada