Received: |
by LISTSERV.REDIRIS.ES (LISTSERV-TCP/IP release 17.0) with spool id
8916665 for [log in para visualizar]; Mon, 20 Mar 2023 23:02:02
+0100
from mx07-006a4e02.pphosted.com (mx07-006a4e02.pphosted.com
[143.55.146.78]) by listserv.backend.rediris.es (Postfix) with ESMTP
id 2C7DE291A74 for < [log in para visualizar]>; Mon, 20 Mar 2023
23:02:02 +0100 (CET)
from pps.filterd (m0316689.ppops.net [127.0.0.1]) by
m0316689.ppops.net (8.17.1.19/8.17.1.19) with ESMTP id 32KLmNS6000871
for < [log in para visualizar]>; Mon, 20 Mar 2023 23:02:02 +0100
from mout01.posteo.de (mout01.posteo.de [185.67.36.65]) by
m0316689.ppops.net (PPS) with ESMTPS id 3pdwtrn5bm-1 (version=TLSv1.2
cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for
< [log in para visualizar]>; Mon, 20 Mar 2023 23:02:01 +0100
from submission (posteo.de [185.67.36.169]) by mout01.posteo.de
(Postfix) with ESMTPS id A4212240362 for
< [log in para visualizar]>; Mon, 20 Mar 2023 23:02:00 +0100 (CET)
from customer (localhost [127.0.0.1]) by submission (posteo.de) with
ESMTPSA id 4PgTGw1Cfvz9rxP for < [log in para visualizar]>; Mon, 20
Mar 2023 23:02:00 +0100 (CET) |
X-CLX-Response: |
1TFkXGxkfEQpMehcSHxEKWUQXaBMZEkhNWG8TRHoRClhYF2tgXnxdTF9PbRx
MEQp4ThduTktcGAVcUk1EQxEKeUwXbGxEXH9PZ08aZVgRCkNIFwcZEhwRCkNZFwcTGREKQ0kXGg
QaGhoRCllNF2dmchEKWUkXGnEaEBp3BhsbH3EbGRAadwYYGgYaEQpZXhdsbHkRCklGF1hPTkNYQ
1l1GHVCRVleT04RCklHF3hPTREKQ04XGkJbREBIfX9+Yl1uaE1ZXUwYX3xZTHobYkdjTBxaaHMR
ClhcFx8EGgQYExoFGxoEHRoEHQQYHhAbHhofGhEKXlkXSH5EUhoRCk1cFx4dHhEKTFoXaGlra2s
RCkVZF2hrEQpMRhdva2tra2sRCkJPF2ldZnpDZW5nekkZEQpDWhcbEh8EHB0EGRwEHB8RCkJeFx
sRCkJcFxsRCl5OFxsRCkJLF25OS1wYBVxSTURDEQpCSRduTktcGAVcUk1EQxEKQkUXa05OfU9aa
XNfXm0RCkJOF25OS1wYBVxSTURDEQpCTBdrYF58XUxfT20cTBEKQmwXYkEeGnp9S0tzQWURCkJA
F2dkYXNiEx5TYX56EQpCWBdtQ3wBTHNaeUxsSBEKWlgXGREKeUMXen9Hc0hPQ0FGRnsRCnBoF2F
nX09haWAYUGtAEBkaEQpwaBdlaXwSXFBweR1DaRAZGhEKcGgXenNuaGRAb2RnGlIQGRoRCnBoF3
ptZhpQTXh7cHpdEBkaEQpwaBdjUF4dZmx9GmBmbBAZGhEKcGgXYGVfbVpIXGN8c20QGRoRCnBoF
21kZktkRGZYe3JsEBkaEQpwaBdsYkNJSGYBGHBkUxAZGhEKcH0XelBCZ2VwBX9oWk0QGRoRCnB9
F2geWRJjY2Zue1gdEBkaEQpwfRdkEmljEl1gZmV/aBAZGhEKcH0XelhFeB4YXXxHaHAQGRoRCnB
9F2tpZ01vRl4cUEh6EBkaEQpwfRdsE2FyY2BATHpjSRAZGhEKcH0XaGIdUmETaRJgTWYQGRoRCn
B9F2NsH3McaG95XF5oEBkaEQpwfRdsWk9nc0RhY2dMWhAZGhEKcH0XbGMcZ0BCGExibxoQGRoRC
nB9F2FaExlfHXNsfx9jEBkaEQpwfRdhARhza29ORVBEXxAZGhEKcH0Xa0NHEh5rHmlEBW8QGRoR
CnB/F2hLEklIawEcTHh8EBkTEQpwXxdlc0dnc2kYYU0BUxAZGhEKcF8XZUgSU2hJSV5/Z3MQGRo
RCnBfF2Nra0gaXmheWmx8EBkaEQpwXxdmZ21aSX1paUhyWBAZGhEKcF8XZU9aGUF9Z3oSe0MQGR
oRCnBfF2hpZlJseGNCfFNMEBkaEQpwXxdpcGkYG2AaHHJIcxAZGhEKcF8XaWR7E0NBGG4BeFgQG
RoRCnBfF2d7UBlsQ2UbWk4FEBkaEQpwXxduGmESb1BzT3MTYhAZGhEKcF8Xen95WkEeTmR7fVMQ
GRoRCnBfF2UZbE9hZh9ZGGFYEBkaEQpwXxdkb0FIc1J/cGhfTRAZGhEKcGwXYHhrZmNZaVMaGVw
QGRoRCnBMF3ppHn9JaFtaQWtvEBkaEQptfhcaEQpYTRdLESA= |
Date: |
Mon, 20 Mar 2023 22:01:57 +0000 |
Reply-To: |
|
Message-ID: |
|
Content-Transfer-Encoding: |
quoted-printable |
Subject: |
|
X-CLX-Shades: |
MLX |
Content-Type: |
text/plain; charset="utf-8" |
Emisor: |
|
Sender: |
|
Delivered-To: |
|
X-Proofpoint-ORIG-GUID: |
0hqnjbWUTHwDBgswf2uVsfP1HmIf6pBY |
X-Proofpoint-Spam-Details: |
rule=defaultmarcado_descarta_bulk_notspam
policy=defaultmarcado_descarta_bulk score=0
lowpriorityscore=0 suspectscore=0 clxscore=135
impostorscore=0 phishscore=0 adultscore=0
malwarescore=0 mlxscore=0 spamscore=0 bulkscore=0
priorityscore=85 mlxlogscore=717 classifier=spam
adjust=0 reason=mlx scancount=1
engine=8.12.0-2303150002 definitions=main-2303200187 |
MIME-Version: |
1.0 |
X-Proofpoint-Virus-Version: |
vendor=baseguard
engine=ICAP:2.0.254,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22
definitions=2023-03-20_16,2023-03-20_02,2023-02-09_01 |
X-Proofpoint-GUID: |
0hqnjbWUTHwDBgswf2uVsfP1HmIf6pBY |
Parts/Attachments: |
|
|
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]
----------------------------------------------------
|