Sobre el bloque VERSE
en Org Mode y su exportación a LaTeX
Usar Org Mode para escribir o citar pasajes de poesía en verso conlleva una serie de ventajas respecto a hacerlo en Markdown, tanto en lo que atañe a la propia escritura como a la exportación a otros formatos.
En efecto, un poema (o fragmento de poema) se representa en Org Mode dentro de un bloque
predefinido llamado VERSE
, el cual podemos invocarlo en Emacs tecleando la secuencia <v
seguida del tabulador1. Obtendremos, automáticamente:
#+BEGIN_VERSE <aquí irían nuestros versos> #+END_VERSE
De tal forma que, por ejemplo, las dos primeras estrofas de la Sonatina de Darío quedarían así:
#+BEGIN_VERSE La princesa está triste... ¿Qué tendrá la princesa? Los suspiros se escapan de su boca de fresa, que ha perdido la risa, que ha perdido el color. La princesa está pálida en su silla de oro, está mudo el teclado de su clave sonoro, y en un vaso, olvidada, se desmaya una flor. El jardín puebla el triunfo de los pavos reales. Parlanchina, la dueña dice cosas banales, y vestido de rojo piruetea el bufón. La princesa no ríe, la princesa no siente; la princesa persigue por el cielo de Oriente la libélula vaga de una vaga ilusión. #+END_VERSE
Vemos que dentro de ese bloque el poema puede escribirse de una manera natural y directa, sin
necesidad de emplear marcas explícitas de corte de línea en cada verso, como tendría que hacerse
si estuviésemos escribiendo en Markdown (generalmente, acabando los versos con un doble espacio o,
en el caso del Markdown de Pandoc, iniciándolos con el carácter de la barra vertical |
seguido
de un espacio).
Exportando versos a LaTeX desde Org Mode
Si echamos mano del exportador nativo de Org Mode en Emacs hacia LaTeX, observaremos el siguiente
comportamiento en el proceso para generar el archivo fuente *.tex
:
- Todo bloque
VERSE
se traducirá en un entornoverse
estándar de LaTeX. - Todo verso acabará con la marca habitual que se usa en LaTeX dentro de dicho entorno para cortar
la línea:
\\
- Todo salto de estrofa se representará con un espacio vertical de 1 cuadratín, es decir, 1 em.
Nuestras dos estrofas de Darío quedarían representadas, pues, de esta forma:
\begin{verse} La princesa está triste... ¿Qué tendrá la princesa?\\ Los suspiros se escapan de su boca de fresa,\\ que ha perdido la risa, que ha perdido el color.\\ La princesa está pálida en su silla de oro,\\ está mudo el teclado de su clave sonoro,\\ y en un vaso, olvidada, se desmaya una flor.\\ \vspace*{1em} El jardín puebla el triunfo de los pavos reales.\\ Parlanchina, la dueña dice cosas banales,\\ y vestido de rojo piruetea el bufón.\\ La princesa no ríe, la princesa no siente;\\ la princesa persigue por el cielo de Oriente\\ la libélula vaga de una vaga ilusión.\\ \end{verse}
Como se ve, el resultado por defecto es bastante aceptable, salvo que habría que hacer dos objeciones a la separación
entre estrofas. La primera, el \vspace*
con asterisco, que crearía un espacio espurio si la estrofa comenzase una
página. La segunda, la propia separación vertical de 1 em. El em (o el cuadratín, en la tradición española) es una
medida variable que equivale al cuerpo de la fuente en un texto dado. Su nombre en la tradición anglosajona viene del
nombre de la letra «m» en inglés, aunque casi nunca equivale hoy día al ancho de esta letra, como tantas veces se suele
decir por ahí, debido a una confusión con este concepto que se remonta a los tiempos de la impresión mecánica o
manual. Así que, si estamos componiendo a 11 puntos, la separación estrófica aquí de 1 em equivaldría a 11 puntos. Un
poco estrecho, la verdad, pues lo más normal es separar las estrofas por un valor equivalente al interlineado, como si
introdujésemos una línea blanca. El interlineado habitual es del 120 por ciento del cuerpo de letra, de modo que, para
11 puntos, nos daría 13.2 puntos, que es igual a 1.2 em. Por supuesto, convendría expresar aquí los valores en ems, dado
que es una medida variable que depende del cuerpo de letra, mientras que la longitud en puntos es fija.
Es más, si queremos ahorrarnos la corrección manual en el documento resultante, siempre podremos
redefinir esta longitud en el exportador nativo de Org Mode. Para ello, basta con incluir este
código en nuestro archivo ~/.emacs
2:
;;;; Para modificar la exportación del bloque VERSE a LaTeX (defun org-latex-verse-block (verse-block contents info) "Transcode a VERSE-BLOCK element from Org to LaTeX. CONTENTS is verse block contents. INFO is a plist holding contextual information." (org-latex--wrap-label verse-block (format "\\begin{verse}\n%s\\end{verse}" (replace-regexp-in-string "^[ \t]+" (lambda (m) (format "\\hspace*{%dem}" (length m))) (replace-regexp-in-string "^[ \t]*\\\\\\\\$" "\\vspace{1.2em}" ;; aquí habría que cambiar el espacio entre estrofas, y eliminar el asterisco (replace-regexp-in-string "\\([ \t]*\\\\\\\\\\)?[ \t]*\n" "\\\\\n" contents nil t) nil t) nil t)) info))
Así, cada vez que exportemos un bloque VERSE
de Org a LaTeX, se añadirá automáticamente nuestro
deseado espacio entre estrofas de 1.2 em.
¿Y qué pasa con los espacios horizontales?
Otra cualidad interesante que encontramos en la exportación del bloque VERSE
es que los espacios
horizontales que expresemos a principio de cada verso serán respetados, de alguna forma, en el
proceso de exportación. En el caso de la salida a LaTeX, cada espacio horizontal será traducido
por el valor de 1 em. De tal forma que si tenemos en Org:
#+BEGIN_VERSE verso sin espacio verso con un espacio verso con dos espacios verso con tres espacios #+END_VERSE
Obtendremos en nuestro *.tex
resultante:
\begin{verse} verso sin espacio\\ \hspace*{1em}verso con un espacio\\ \hspace*{2em}verso con dos espacios\\ \hspace*{3em}verso con tres espacios\\ \end{verse}
Tal vez nos parezca excesivo el valor de 1 em que asigna el exportador por defecto para representar el espacio simple. Una forma de corregirlo sería la que sigue.
Primero, declararemos una nueva longitud, que podemos llamar, por ejemplo, \espacioverso
, e
incluiremos estas dos líneas en la cabecera de nuestro documento *.org
, para mandarlas luego al
preámbulo del documento .tex
resultante:
#+LaTeX_HEADER: \newlength{\espacioverso} #+LaTeX_HEADER: \setlength{\espacioverso}{0.5em}
Por último, en nuestro archivo ~/.emacs
acudimos al código que hemos añadido para modificar la
exportación del bloque VERSE
y editamos la línea 9:
"^[ \t]+" (lambda (m) (format "\\hspace*{%dem}" (length m)))
de tal forma que quede:
"^[ \t]+" (lambda (m) (format "\\hspace*{%d\\espacioverso}" (length m)))
es decir, sustituyendo el valor em
tras la expresión regular %d
por \\espacioverso
(ojo con
el carácter de escape para la barra invertida). El resultado, pues, será 1, 2, 3, 4… n (veces)
el valor de \espacioverso
, longitud que en nuestro preámbulo habrá quedado definida con 0.5 em:
\begin{verse} verso sin espacio\\ \hspace*{1\espacioverso}verso con un espacio\\ \hspace*{2\espacioverso}verso con dos espacios\\ \hspace*{3\espacioverso}verso con tres espacios\\ etc\\ \end{verse}
∞
Publicado: 31/08/2018
Última actualización: 31/08/2018
Esta obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional.
Notas al pie de página:
Actualización de a la lista de
novedades. Sin embargo, si se desea mantener el comportamiento antiguo, basta con introducir en neustro archivo de
inicio (require 'org-tempo)
.
En ocasiones puede ser necesario escribir previamente (require 'ox-latex)
.