Hola: Aprovechando que recientemente he asumido la composición de la revista de estudios "neogriegos" y bizantinos Erytheia, pensé que podría resultarle curioso a alguien ver mi sistema de trabajo en pleno proceso de montaje del número 44, cuando están las cosas "work in progress". Como muchos sabéis, mi sistema, de un tiempo a esta parte, implica Org-Mode y LaTeX maridados, como un intento de crear mediante el primero una interfaz de alto nivel para el segundo. Una vez que la máquina está engrasada y funcionando, y todos los componentes en su sitio, me resulta un flujo bastante cómodo y eficiente. Así que paso a describiros lo que he ido haciendo hasta ahora con este número de Erytheia. Será una especie de tour ilustrado con capturas de pantalla (o sea, que habrá muchos enlaces a imgur: urldefense se va a inflar. Siento que los enlaces queden horribles, pero como no tenemos defensa contra urldefense...). En primer lugar, defino un nuevo proyecto para Org-Publish, que será también un repositorio Git. Org-Publish me permite tener un control total sobre cada subdocumento y sabe colocarme todo en su sitio: https://urldefense.com/v3/__https://i.imgur.com/bRF4UuK.png__;!!D9dNQwwGXtA!V4gNuQaaLkUQxPYFNki7AoqYZqg77uc0oZP-4-QFfu_B7MBlrcSZfDFS0ALRx64_og2vMk9qUaIkwcuqY1jB5qFCTry2$ Org-Publish se encarga de exportar a *.tex cada subdocumento *.org, usando esta configuración de filtros en Elisp que he escrito y que residen en el archivo 'lisp': https://urldefense.com/v3/__https://i.imgur.com/9bdtWmV.png__;!!D9dNQwwGXtA!V4gNuQaaLkUQxPYFNki7AoqYZqg77uc0oZP-4-QFfu_B7MBlrcSZfDFS0ALRx64_og2vMk9qUaIkwcuqY1jB5lL8E9yC$ https://urldefense.com/v3/__https://i.imgur.com/py7lzsM.png__;!!D9dNQwwGXtA!V4gNuQaaLkUQxPYFNki7AoqYZqg77uc0oZP-4-QFfu_B7MBlrcSZfDFS0ALRx64_og2vMk9qUaIkwcuqY1jB5okQJA2x$ También tiene en cuenta un archivo erytheia.setup, dentro del proyecto, donde añado directivas y macros de Org: https://urldefense.com/v3/__https://i.imgur.com/m0ySAek.png__;!!D9dNQwwGXtA!V4gNuQaaLkUQxPYFNki7AoqYZqg77uc0oZP-4-QFfu_B7MBlrcSZfDFS0ALRx64_og2vMk9qUaIkwcuqY1jB5qFxntTL$ Ahora bien, el archivo "maestro" que contiene toda la revista se excluye del flujo de Org-Publish. Se compila de forma asíncrona mediante latexmk. Esto me permite trabajar en algún subdocumento concreto, mientras latexmk está corriendo en segundo plano. La función que he escrito para compilar el archivo maestro de este y otros proyectos es la siguiente: https://urldefense.com/v3/__https://i.imgur.com/XgYESHO.png__;!!D9dNQwwGXtA!V4gNuQaaLkUQxPYFNki7AoqYZqg77uc0oZP-4-QFfu_B7MBlrcSZfDFS0ALRx64_og2vMk9qUaIkwcuqY1jB5oYMLx0X$ Y vamos a ver algunos aspectos del archivo maestro. Es un típico documento de Org con directivas, nodos y subnodos. Algunos nodos no se exportan y sirvan sólo para configuración (los que llevan la etiqueta "noexportar"). Otros no añaden ni título ni sección (los que llevan la etiqueta "ignoratitb"), pero me son cómodos para tener distintas partes del libro ordenadas como sub-árboles, como por ejemplo el nodo "artículos principales". No existe la sección "Artículos principales", pero me resulta práctico tener todos los artículos agrupados como subnodos de un nodo principal. Puedo, además, añadir configuración local a cualquiera de esos nodos o al principal (lo que en LaTeX sería un \begingroup...\endgroup, mediante simples cajones de propiedades. Y esa configuración queda asociada al nodo de turno, por si lo cambio de sitio. Aquí podéis ver el archivo maestro con los nodos de primer nivel plegados: https://urldefense.com/v3/__https://i.imgur.com/UqU2VH5.png__;!!D9dNQwwGXtA!V4gNuQaaLkUQxPYFNki7AoqYZqg77uc0oZP-4-QFfu_B7MBlrcSZfDFS0ALRx64_og2vMk9qUaIkwcuqY1jB5voqu5cu$ Si desplegamos el nodo "artículos principales" veis que, de momento, tengo 4 artículos, uno ya listo (el autor le ha dado el visto bueno): https://urldefense.com/v3/__https://i.imgur.com/j9WsHQk.png__;!!D9dNQwwGXtA!V4gNuQaaLkUQxPYFNki7AoqYZqg77uc0oZP-4-QFfu_B7MBlrcSZfDFS0ALRx64_og2vMk9qUaIkwcuqY1jB5iTYVSgb$ Y si despegamos uno de los artículos, veis que contiene un cajón de propiedades (property drawer, en la jerga de Org) muy nutrido, donde se incluyen una serie de parámetros, como el autor del artículo, su dir. de correo, la institución o universidad a que pertenece, el título en inglés (o en español, si el artículo está en inglés), el ORCID, la fecha recibido/aceptado, el texto que debe ir en la cabecera de las páginas impares, etc.: https://urldefense.com/v3/__https://i.imgur.com/EcwIY5W.png__;!!D9dNQwwGXtA!V4gNuQaaLkUQxPYFNki7AoqYZqg77uc0oZP-4-QFfu_B7MBlrcSZfDFS0ALRx64_og2vMk9qUaIkwcuqY1jB5r2N-Zwe$ Naturalmente, todos esos datos no los pongo a mano. Uso un sistema de marcas propio en el documento de Word original, lo exporto a Org con Pandoc (usando una plantilla ad hoc) y luego extraigo todos los datos mediante esta función, que usa Org-capture para poblar las propiedades y añadir el nodo correspondiente: https://urldefense.com/v3/__https://i.imgur.com/BMZgPgv.png__;!!D9dNQwwGXtA!V4gNuQaaLkUQxPYFNki7AoqYZqg77uc0oZP-4-QFfu_B7MBlrcSZfDFS0ALRx64_og2vMk9qUaIkwcuqY1jB5mimQxpP$ Para que esas propiedades se exporten como las macros de LaTeX correspondientes (y que tengo ya definidas en otra parte), escribí este filtro de pre-proceso, que añade todo antes de la exportación: https://urldefense.com/v3/__https://i.imgur.com/ySs2CSt.png__;!!D9dNQwwGXtA!V4gNuQaaLkUQxPYFNki7AoqYZqg77uc0oZP-4-QFfu_B7MBlrcSZfDFS0ALRx64_og2vMk9qUaIkwcuqY1jB5oXqfJ-X$ Dejamos el archivo maestro y pasamos a más cosas. Una serie de variables locales a todo el directorio del proyecto están almacenadas en el archivo '.dir-locals.el': https://urldefense.com/v3/__https://i.imgur.com/yZiqC2i.png__;!!D9dNQwwGXtA!V4gNuQaaLkUQxPYFNki7AoqYZqg77uc0oZP-4-QFfu_B7MBlrcSZfDFS0ALRx64_og2vMk9qUaIkwcuqY1jB5u5k5DzG$ ¿Y la parte "dura" de LaTeX? Bueno, pues todo el preámbulo está en otro archivo Org, concretamente el llamado 'conf.org'. Está todo convenientemente ordenado y escrito mediante programación literaria gracias a org-babel y org-babel-tangle. Eso es comodísimo, porque si quiero, por ejemplo, usar código y funciones en Lua, puedo usar bloques de Lua, y luego injertar ese código en bloques de LaTeX mediante el argumento de cabecera ":noweb": https://urldefense.com/v3/__https://i.imgur.com/jQmqOUp.png__;!!D9dNQwwGXtA!V4gNuQaaLkUQxPYFNki7AoqYZqg77uc0oZP-4-QFfu_B7MBlrcSZfDFS0ALRx64_og2vMk9qUaIkwcuqY1jB5rRMcys0$ El argumento ":noweb" también me permite jugar con ciertas variables locales a todo el directorio, como el número actual en proceso de la revista o el estado de las pruebas. Por ejemplo, en este código que uso para generar automáticamente las separatas de cada artículo con la compilación del documento (para luego enviárselas a los autores): https://urldefense.com/v3/__https://i.imgur.com/Jb2c5Bk.png__;!!D9dNQwwGXtA!V4gNuQaaLkUQxPYFNki7AoqYZqg77uc0oZP-4-QFfu_B7MBlrcSZfDFS0ALRx64_og2vMk9qUaIkwcuqY1jB5hDH5t88$ extraigo el estado de las pruebas con: \def\estadopruebas{% pruebas% <<estado-pruebas()>>% } '<<estado-pruebas()>>' simplemente imprime el resultado de evaluar un sencillo bloque Elisp llamado "estado-pruebas". En su evaluación devuelve el valor de la variable local del mismo nombre: #+NAME:estado-pruebas #+begin_src emacs-lisp :tangle no :exports none estado-pruebas #+end_src Bueno, y eso es todo de momento. Como este número de la revista no está todavía en el aire no creo oportuno (por respeto a autores y editores) mostrar nada de la versión tipográfica final. Pero cuando se publique ya subiré aquí algunas muestras. Saludos, Juan Manuel ---------------------------------------------------- Para darse de baja ES-TEX pincha y envia el siguiente url mailto:[log in para visualizar] ----------------------------------------------------