Una plantilla para exportar documentos desde Emacs
Hace un tiempo, a raíz de presentar unos documentos, me preguntaron cómo me las apaño para que queden tan bien hechos. El secreto se llama LaTeX, como muchos sabéis, pero ayer mismo un amigo me preguntó por detalles más técnicos y la respuesta en ese momento se me quedó realmente corta. Aquí traigo una explicación más detallada de las cosas que tengo ya pre-paradas a la espera de la generación de documentos.
Los formatos que suelo trabajar para los documentos largos son PDF y
epub. Utilizo PDF cuando necesito imprimir el documento en papel y
utilizo epub cuando sólo requiere la lectura por pantalla. A veces,
ni siquiera monto el epub y lo dejo en HTML, como por ejemplo,
para las entradas de este blog.
Exportar a PDF
Como sabéis, y también lo dije antes, la exportación a PDF se hace a
través de LaTeX. En mi caso venía ya de antes trabajando con esta
herramienta para generar documentos y no necesité aprenderla aparte.
Para abreviar, como esto va de plantillas, pongo la cabecera que tengo
en un fichero en el directorio ~/Plantillas para iniciar los textos
largos:
#+TITLE: Título
#+SUBTITLE: Subtítulo
#+DATE: \today
#+AUTHOR: Notxor
#+EMAIL: notxor@nueva-actitud.org
#+LANGUAGE: es
#+OPTIONS: d:(not "LOGBOOK") date:t e:t email:nil f:t inline:t num:t
#+OPTIONS: p:nil pri:nil prop:nil stat:t tags:t tasks:t tex:t
#+OPTIONS: timestamp:t title:t toc:t todo:t |:t
#+LATEX_CLASS: book
#+LATEX_CLASS_OPTIONS: [a4paper, 10pt, doubleside]
#+LATEX_HEADER: \usepackage[left=2.5cm,top=2.5cm,right=2.5cm,bottom=2.5cm]{geometry}
#+LATEX_HEADER: \usepackage[spanish]{babel}
#+LATEX_HEADER: \usepackage{bbding} %fuentes con iconos
# +LATEX_HEADER: \usepackage{enumitem}
# Personalizar las cabeceras
#+LATEX_HEADER: \usepackage[Bjornstrup]{fncychap}
# Las siguientes lineas para cambiar de fuente el pdf
# +LATEX_HEADER: \usepackage{mathpazo} %fuente palatino
#+LATEX_HEADER: \usepackage{charter} %fuente charter
#+LATEX_HEADER: \linespread{1.05} %separa un poco las líneas para que no quede apelotonado
# Numerar las líneas de la página en los márgenes para referencias de corrección
#+LATEX_HEADER: \usepackage[switch,pagewise]{lineno}
#+LATEX: \linenumbers
En ese código hay algunos paquetes preparados pero no activados, por
el simple hecho de añadir un espacio después del #. Quizá necesite
explicar algunos paquetes menos habituales:
\usepackage{bbding}
Permite utilizar iconos mediante una fuente. En ocasiones le añado el paquete
\usepackage{enumitem}
Ese paquete hace que podamos modificar a nuestro gusto las etiquetas de nuestras listas, para conseguir un poco más de personalidad en nuestros listados:
\begin{itemize}[label=\HandRight]
\item Prueba
\item Prueba
\end{itemize}
o incluso
\begin{itemize}[label=\HandRight]
\item abc
\item[\PencilRight] def
\end{itemize}
Y con esos dos bloques de código se consigue la siguiente salida:
o también, ya que he importado la fuente en cuestión, se pueden hacer
algunos separadores gráficos entre partes del documento y si tenemos
que hacerlos tanto para epub como para PDF se puede utilizar algo
como:
#+BEGIN_CENTER
#+HTML: <p style="text-align:center">❆ ❄ ❆</p>
#+LATEX: \SnowflakeChevron { } \SnowflakeChevronBold { } \SnowflakeChevron
#+END_CENTER
En muchas ocasiones lo que necesito impreso debe ser corregido antes de ser entregado. Para eso utilizo el siguiente código:
# Numerar las líneas de la página en los márgenes para referencias de corrección
#+LATEX_HEADER: \usepackage[switch,pagewise]{lineno}
#+LATEX: \linenumbers
Lo que hace el paquete lineno de LaTeX es escribir en los márgenes
un número de referencia de cada línea. Las opciones switch y
pasewise hace que se impriman en márgenes alternos para las páginas
pares e impares y que reinicie el contador en cada página. Así
encontrar los errores es más fácil, sobre todo si el corrector es otra
persona. Con hacer referencia al número de página y de línea es
suficiente.
Exportar a epub directamente
Un fichero epub no es más que un zip que contiene dentro ficheros
html o xhtml, imágenes, css, etc. Básicamente es un sitio web
encapsulado con la estructura de un libro. La forma más de andar por
casa para realizar un epub es exportar a html desde emacs y
luego importarlo a alguna de las herramientas como Sigil para hacer
la edición electrónica.
Desde org-mode de emacs podemos generar directamente una
exportación de contenido a un fichero epub. Para eso necesitamos dos
sencillos pasos. El primero es instalar el paquete ox-epub por el
procedimiento habitual.
M-x package-install RET ox-epub
Una vez instalado, cuando queremos generar un epub activamos la
exportación con el comando org-epub-export-to-epub. Esto hace que en
nuestro menú C-c C-e aparezca el correspondiente apartado, por lo
que completando C-c C-e E e se genera un fichero epub.
Igual que podemos añadir opciones para LaTeX cuando queremos
exportar a PDF, también podemos añadir opciones al html a lo largo
de nuestro código. Incluso, si utilizamos un css personalizado,
podemos cargarlo y el exportador lo meterá en el epub.
Conclusión
Generar documentos complejos con org-mode es sencillo. Por defecto,
emacs realiza una exportación sencillo a PDF a través de LaTeX y
a html. Sin embargo, el uso de lectores ebook y otras herramientas
similares, hacen que el formato PDF sea incómodo y el html para
ajustarse a pantalla necesita algo más de estructura. El formato
epub vino a cubrir esas deficiencias y podemos hacer que emacs nos
genere los contenidos de forma sencilla.
Cada uno tiene sus manías y es posible que los paquetes que utilizo para LaTeX no los utilices y prefieras tener otros, pero siempre es una buena idea tener nuestras cabeceras básicas guardadas en una plantilla para iniciar los documentos nuevos sin pensar demasiado, luego personalizar el resultado será más sencillo.
Comentarios