crear un epub con pandoc y sigil

Pasos previos.

Parto de archivos formateados en markdown. Si aún no lo usas para escribir empieza ya, es un lenguaje de marcado en un archivo de texto plano que podrás abrir con cualquier programa, no serás dependiente de uno solo. Lo básico es aburridamente sencillo:

# título principal (nombre del libro)
## título secundario (nombre del capítulo)
### título terciario (partes dentro de un capítulo)

*cursiva*
**negrita**

Más tarde pandoc traducirá a xhtml en el epub toda esa información y el índice de tu documento será resultón. Tú sólo escribes unas almohadillas y un par de asteriscos, y la magia la hace quien la tiene que hacer: el pc, dejándote a ti centrado simplemente en escribir.

Hay más, por supuesto, notas, definiciones… si quieres saber más pulsa en el enlace de la primera línea de la entrada.

Si te empeñas en utilizar un editor de texto tipo Word o Libreoffice, Pandoc convierte sin problema de .doc o .odf a .epub, así que no te rindas todavía.

Aunque el uso que tendremos que hacer del terminal con Pandoc tiene una complicación mínima, si vas a utilizarlo directamente tendrás que saberte mover por los archivos de tu pc con él. Si no, te recomiendo que utilices Ghostwriter para escribir en markdown y exportar tu archivo a .epub, aunque tendrás que instalar igualmente Pandoc (de eso no te libras, pero una vez instalado no volverás a tocarlo).

Exportando a epub.

Pandoc es un conversor sin interfaz gráfica, así tendremos que utilizarlo en un terminal, pero que nadie pierda fuelle porque para lo que necesitamos con un par de comandos nos bastará.

Si queremos usar pandoc directamente vamos en el terminal al directorio donde tenemos el archivo y escribimos

pandoc -s nombredemiarchivo.md -o nombredemiarchivo.epub

Si tu archivo es un .docx, pues eso

pandoc -s nombredemiarchivo.docx -o nombredemiarchivo.epub

Y si lo has escrito en Libreoffice, pues lo mismo

pandoc -s nombredemiarchivo.odf -o nombredemiarchivo.epub

-s sirve para generar un archivo autónomo, no una parte de otro (y creo que en el caso del epub no es necesario) y -o marca el destino, ya que podemos mezclar varios archivos de origen para generar el final. Si lo tenemos también podemos añadir una hoja de estilo para darle formato al epub, añadiéndolo en el comando (si quieres olvídate de esto, pandoc genera un .css por defecto que podremos modificar en sigil)

pandoc --css miestilo.css -s nombredemiarchivo1.md nombredemiarchivo2.md -o nombredemiarchivo.epub

Y con eso ya tendremos nuestro libro en formato epub. Pandoc tiene muchas más opciones y se puede mezclar con YAML para los metatags y un montón de cosas más, pero creo que será más sencillo hacerlo con Sigil.

Si queremos convertirlo desde Atom tendremos que instalar pandoc-convert

pandoc-convert

y una vez hecho abrir la paleta (ctrol mayus p) y escribir pandoc convert: epub

pconvert

Desde Ghostwriter simplemente pulsaremos ctrol E para exportar y seleccionaremos como formato de destino .epub. Ghostwriter mola, sobre todo si no quieres complicarte. Escribes utilizando las almohadillas y los asteriscos y cuando terminas directamente exportas, y te olvidas del terminal.

Completando con Sigil.

Instalamos Sigil, lo abrimos y archivo / abrir y seleccionamos el archivo que acabamos de crear del modo que sea.

En herramientas / índice de contenido creamos un índice automático (esas almohadillas salvadoras que pusimos para marcar el título del libro y los capítulos, aunque ya estará hecho por defecto gracias a esas mismas almohadillas, soy un neurótico).
En herramientas / portada subimos la imagen de portada desde el pc.
En herramientas / editor de metadatos introducimos los que queramos (autor, título, colección, idioma, etc).

Si vamos a usar un archivo css, antes del paso siguiente nos aseguramos que está bien enlazado. En vista / vista de código buscamos una linea parecida a:

<link rel="stylesheet" type="text/css" href="../Styles/stylesheet.css"/>

entre las etiquetas del encabezado. Si no está, la incluimos (estará, vuelve el neurótico).

Tampoco hace falta tener mucha idea de css para un libro de texto sencillo, yo suelo usar

h1, h2, h3 {
color: #333;
padding-top: 25%;
}

#copyleft {
font-size: x-small;
text-align: center;
padding-top: 25%;
}

El primer párrafo para que el título de la novela, del capítulo y de los subcapítulos no aparezcan arriba del todo de la página y para diferenciarlos en un gris oscuro, y el segundo para que el texto del copyleft aparezca más pequeño, centrado y tampoco arriba del todo.

Las etiquetas que hemos generado en markdown con #, ## y ### se convierten en h1, h2 y h3 al convertir el documento.

Entramos en las carpetas de la izquierda, Styles, stylesheet.css y lo modificamos como queramos (o lo dejamos como pandoc lo crea por defecto, al gusto).

s-css

Toda tu novela, antes de cortar, está en ese archivo ch001.xhtml

Terminamos con la herramienta edición / dividir en el cursor, para que nos cree un archivo nuevo para cada capítulo. Ponemos el cursor en el final del primer capítulo y cortamos, y nos genera un archivo nuevo con el resto. Nos vamos al nuevo y repetimos, y así hasta tenerlo todo dividido por capítulos. Las páginas introducen (claro) un salto de página automático, así que será útil sólo para cuando queramos que el texto termine en un punto y empiece en la página siguiente de nuestro lector.

Archivo / guardar y hemos terminado.

Notas finales.

He intentado hacer una especie de manual para alguien que no tenga ni idea de dónde se está metiendo, y siguiendo estos pasos se crea un .epub más que decente. Por supuesto, se está infrautilizando tanto markdown como pandoc y sigil, pero con esto basta y más adelante cada uno aprenderá lo que necesite de cada uno de ellos.

Aún así, releyendo me sigue pareciendo complicado. Os aseguro que al hacerlo el proceso para crear un .epub dura cinco minutos como mucho. Lo más sencillo con diferencia es escribir con ghostwriter, utilizar su herramienta de exportación y completar con Sigil.

editores markdown, SOTA [1]

Ghostwriter, desde mi punto de vista, es el mejor con diferencia

Bueno, pues al final no sé qué más decir de los editores (si sé, pero meh), así que resumo mi uso actual:

  • Markdown Edit. Lo uso para guarrear, abrir un archivo, retocarlo un poco. Me tiene loco porque a veces los saltos de linea funcionan y otras ve veces no.
  • Ghostwriter. El que mejor se adapta y suelo usar, personalizable, te genera un archivo de backup cada vez que guardas, el corrector funciona, señala el salto de línea en los diálogos, tiene un modo inmersivo, uno que llama Hemingway en el que no puedes borrar, uno foco para ver sólo las últimas lineas, también configurable. No tiene mapa de archivos y es lo único que le falta. Pero…
  • Typora. De vez en cuando vuelvo a typora una tarde, es muy bonito. El corrector no funciona y el programa a veces explota, pero…
  • Atom. Para marrones, realmente. Cuando algo se fastidia tiro de él. ¿Un libro entero de poemas al que colocarle el salto de linea? Pues listo.

Lo bonito del texto plano supongo que es esto, que puedes utilizar el editor que mejor se ajuste a tu estado de ánimo según el día, o a la tarea que vayas a realizar. Hay muchos otros, Haroopad es como Markdown Edit pero en molón, Dillinger como editor de navegador me parece genial, CuteMarkEd lo tiene todo pero es feuno, StackEdit sólo lo he probado por encima… Es una locura.

Lo importante es tener algo que contar. Hace un montón de años adquirí y utilicé Scrivener, y el hecho de poder ordenar más eficazmente la mierda no me hizo escribir mejor. Veo que un montón de gente lo recomienda, y que o ya es o va a ser compatible con markdown. A mí no me gustó demasiado, pero es otra opción.

[1] SOTA o State of the alliance, ecos de cuando jugaba a EVE.

atom

Todos parecen iguales, pero no lo son.

Atom es uno de los editores de texto más completos con los que te puedes topar, hagas lo que hagas. Paquetes de ampliación, temas, Open Source. Lo tengo siempre instalado y lo uso cuando edito html, en los cursos de python, cuando inspecciono css, y funciona tremendamente bien. No utilizo nada más que lo que viene en la instalación limpia, y aún así a veces tengo la sensación de que es demasiado grande, demasiado potente, demasiado todo por todas partes.

¿Te molesta tener que activar el panel de vista previa para revisar uno a uno cuándo has recordado insertar el doble espacio en un diálogo? Sin problema. Buscas en google y llegas aquí, por ejemplo, abres la hoja de estilos del editor (file/stylesheet), lo pegas y lo guardas y listo. Para otras cosas, como intentar crear nuevos atajos de teclado o instalar el módulo para tener un mapa del documento he tenido más problema, aunque realmente no le he dedicado demasiado tiempo. Tiene buena integración con Pandoc, no he conseguido desactivar la predicción de palabras —que es un rollo para escribir—, se puede usar un tema oscuro para no cansar la vista, y hay mucha gente colaborando por lo que hay multitud de soluciones para multitud de cosas.

Un día, aún así, toqué dos o tres opciones del menú y lo convertí en vacío.

Atom es el hobby a largo plazo, uno lo va abriendo para diferentes proyectos y utilidades, va aprendiendo cosas y se lo va poniendo a su gusto. El editor es simplemente un medio para escribir, y tiene que molestar y ocupar en tu cabeza lo menos posible. Ghostwriter es alucinante para sumergirse en escribir, pero para tratar varios documentos a la vez y hacerse una idea general de algo es bastante limitado. Markdown Edit tiene el problema del doble espacio. Cada uno tiene sus cositas.

Así que al final estoy viendo que es complicado no tener distintos editores de texto instalados. Uno para cuando voy a hacer una inmersión en un capítulo y prefiero no ver nada más, otro ligero para hacer líneas generales y resúmenes, y Atom como ese proyecto de futuro que, pese a serlo, siempre viene a sacarme las castañas del fuego cuando no encuentro lo que busco en lo que tengo. Hoy por hoy no me imagino tener un pc sin Atom, pero no lo uso para editar markdown excepto en ocasiones puntuales.

Iré hablando de CuteMarkED, Haroopad, Dillinger, por ejemplo, pero ya tengo la sensación de que no hay ninguno que incluya todo lo que busco, así que habrá que hacerse uno, y el camino más rapido es dominar la potencia salvaje de Atom. Domarlo. Pero vamos, con calma.

Web | Github

Actualización 26/11/2017:

El código para incluir en el stylesheet es

atom-text-editor.editor .syntax--gfm .syntax--linebreak:after {
  font-family: 'Octicons Regular';
  font-weight: normal;
  font-style: normal;
  display: inline-block;
  line-height: 1;
  -webkit-font-smoothing: antialiased;
  text-decoration: none;
  font-size: 1rem;
  width: 1rem;
  height: 1rem;
  content: "\21E9"; //cambiar aquí el icono
  color: @syntax-invisible-character-color;
}

Cambiando el código del icono por el que más te guste.

Y después de instalar document-outline (mapa de encabezados del documento), pandoc-convert (integración con pandoc), wordcount y Zen la verdad es que el resultado es más que correcto.