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:

La sustitución de términos se realiza en una etapa muy tempranera del proceso de exportación; y 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}}}