Cuaderno de GNUtas

Macros de sustitución en Org Mode (dos ejemplos prácticos)

Las macros de sustitución son una de esas pequeñas gemas escondidas en el maravilloso Org Mode de Emacs. La forma más sencilla de usarlas es añadiendo a la cabecera de nuestro documento #+MACRO: palabra-a-asustituir sustitución, de tal forma que si vamos a repetir en nuestro texto muchas veces algo así como «la parte contratante de la primera parte», podemos escribir en la cabecera:

#+MACRO: parte1 la parte contratante de la primera parte

y en nuestro texto, entonces, nos bastará con escribir la «palabra-comodín», las veces que nos haga falta, encerrada entre dos {{{...}}}: {{{parte1}}}.

Para mi traducción de la Odisea (work in progress) estas macros de Org me son de mucha utilidad, gracias a dos características esenciales que tienen:

  1. La sustitución de términos se realiza en una etapa muy tempranera del proceso de exportación; y
  2. La posibilidad de evaluar alguna expresión de Elisp en la parte que reemplaza.

De mi escenario particular he extraído un par de ejemplos generales, por si pudiesen ser de utilidad a alguien. Vayamos a ellos en un periquete.

Varios formatos de fecha

Imaginemos que cuando exportemos nuestro documento a LaTeX queremos que en la fecha salga un texto determinado y a continuación la fecha completa, introducida por el comando típico de LaTeX \today, pero si exportamos a HTML queremos el mismo texto, pero la fecha en formato mínimo. Por supuesto, hay muchas maneras de hacerlo, y una de ellas es definiendo una macro en la cabecera de nuestro documento así (ojo, la expresión Elisp a evaluar ha de estar toda en una línea, con el resto del conjunto):

#+MACRO: fecha (eval (if (org-export-derived-backend-p org-export-current-backend 'latex) "\\today" (format-time-string "%c")))

A continuación, sólo tendremos que añadir en el lugar oportuno:

#+DATE: En algún lugar de vuelta a Ítaca: {{{fecha}}}

El nombre del autor debajo del título en la exportación a HTML

Cuando exportamos nuestro documento Org a HTML, el nombre del autor aparecerá, por defecto, en el postamble del fichero resultante; es decir, abajo de todo y en pequeñito. Pero habrá ocasiones en que nos queramos ver más arriba, justo debajo del título. Como en el caso anterior, hallaremos muchas formas de hacerlo, pero tirar de una macro de reemplazo es un apaño muy cómodo y rápido. Así pues, definimos esta macro (recordemos que podemos introducir una cadena que sólo sea leíble e inteligible para un determinado formato de exportación si la encerramos entre, por ejemplo, @@html:...@@):

#+MACRO: yomismo (eval (if (org-export-derived-backend-p org-export-current-backend 'html) "@@html:<br><font style=\"font-size:small;\">Fulano Mengánez de Tal</font>@@" ""))

Y ya nos quedaría añadir:

#+TITLE: Mi gran obra {{{yomismo}}}

Publicado: 20/07/2019

Última actualización: 20/07/2019


Índice general

Acerca de...

Esta obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional.

© Juan Manuel Macías
Creado con esmero en
GNU Emacs