Macros de sustitución en Org Mode para Babel (LaTeX)
Cuando se trabaja en un documento de LaTeX desde el Org Mode de Emacs, desearemos en ocasiones que ciertos pasajes
cortos en lenguas extranjeras pasen a LaTeX formados con el comando típico de Babel
\foreignlanguage{<lengua>}{<pasaje>}
. Podemos introducir este comando directamente en Org, pero si exportásemos a
otros formatos perderíamos el pasaje (o nos aparecería explícitamente el \foreignlanguage{}{}
) y tendríamos que andar
retocando el documento, lo cual es una lata. Para salir del paso, he descubierto que aquí son muy útiles las macros de
sustitución de Org, que permiten sustituir una cadena por «comodines» y evaluar, además, algo de código elisp en la
parte que sustituye. Ya tratamos aquí algún que otro ejemplo de estas macros en una pasada gnuta. Veamos ahora un par de
ejemplos más para la salida a LaTeX con Babel.
Podemos definir, en principio, una macro de sustitución que incluye un simple condicional: si el pasaje extranjero se exporta a LaTeX, entonces se forma con Babel. Si es a cualquier otro formato (HTML, ODT, EPUB, etc.), se exporta tal cual. Esta primera macro admitiría dos argumentos: el nombre de la lengua, según Babel, y el pasaje en esa lengua.
#+TITLE:Prueba con macros de sustitución para idiomas Esto es una prueba de texto griego con la primera macro: {{{lg(greek,ἄνθρωπος)}}}
Si exportamos a LaTeX obtendremos, entonces, \foreignlanguage{greek}{ἄνθρωπος}
. Así nos aseguramos de que TeX cortará
por guiones (si se presentase el contexto) correctamente esta palabra, según los patrones de guionado y silabación para
griego antiguo, tal y como hemos definido en las opciones de Babel al cargar greek
con el atributo ancient
1.
Otra posible macro a definir tendría sólo un argumento (la palabra o pasaje en lengua extranjera). Eso sí, tendríamos que definir tantas macros como lenguas quisiésemos cargar en nuestro documento.
{{{gr(ἄνθρωπος)}}}... Y esto es otro ejemplo con la segunda macro:
Así, si hubiesemos cargado (pongo por caso) también latín y alemán, definiríamos estas dos más:
#+TITLE:Prueba con macros de sustitución para idiomas ... Y otro ejemplo más con un pasaje en latín: {{{lat(Delenda est Cartago)}}} o en alemán: {{{ger(Goldner Schlaf, nur dessen Herz zufrieden)}}}
∞
Publicado: 27/08/2019
Última actualización: 27/08/2019
Esta obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional.
Notas al pie de página:
Recordemos que Babel ofrece tres posibles atributos para la opción greek: monotónico, politónico y griego antiguo