<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>La lunotipia</title>
<description>Tipografía digital, TeX y cafeína</description>
<generator>Emacs webfeeder.el</generator>
<link>https://lunotipia.juanmanuelmacias.com</link>
<atom:link href="https://lunotipia.juanmanuelmacias.com/rss.xml" rel="self" type="application/rss+xml"/>
<lastBuildDate>mié, 16 ago 2023 23:47:00 +0200</lastBuildDate>
<item>
  <title>LuaTeX y Cavafis</title>
  <description><![CDATA[<div id="content" class="content">

 <form>
 <p style="text-align: center;"> <button formaction="https://maciaschain.gitlab.io/lunotipia/pdf/cavafis_sarpedon.pdf "> <font size="2">Descargar esta entrada en formato PDF</font></button></p>
</form>

 <div id="outline-container-/El funeral de Sarpedón/ en /Nea Zoí/" class="outline-2">
 <h2 id="/El funeral de Sarpedón/ en /Nea Zoí/"> <i>El funeral de Sarpedón</i> en  <i>Nea Zoí</i></h2>
 <div class="outline-text-2" id="text-/El funeral de Sarpedón/ en /Nea Zoí/">
 <p>
Hace unos meses Javier Sánchez Quirós, profesor de griego, inquieto divulgador de la cultura clásica y mantenedor de un
muy  <a href="https://paulatinygriego.wordpress.com/">recomendable blog</a>, me hizo llegar un PDF con un par de páginas reproducidas de la revista griega  <i>Nea Zoí</i> donde
aparecía por primera vez publicado (1908) el poema de Cavafis  <i>El funeral de Sarpedón</i>. Las muestro aquí (véase figs.
 <a href="#org99e21ae">1</a> y  <a href="#org4aa463a">2</a>), pero también se pueden ver en  <a href="https://cavafy.onassis.org/object/dgfw-2hx4-cr4b/">el  <i>Archivo Cavafis</i></a> de la Fundación Onassis. Le comenté
en su momento a Javier que aquel envío cavafiano no sólo era muy goloso (cómo no) por lo que hace a la poesía del
alejandrino, sino que también me suscitaba un enorme interés tipográfico; así que planeé un pequeño apunte por estos
lares, postergado hasta hoy por unas cuantas circunstancias y trajines de la vida.
</p>


 <div id="org99e21ae" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/Funeral_original1.jpg" alt="Funeral_original1.jpg" style="width:80%"></img></p>
 <p> <span class="figure-number">Figura 1: </span> <i>El funeral de Sarpedón</i> de Cavafis, publicado en  <i>Nea Zoí</i> (primera página)</p>
</div>


 <div id="org4aa463a" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/Funeral_original2.jpg" alt="Funeral_original2.jpg" style="width:80%"></img></p>
 <p> <span class="figure-number">Figura 2: </span> <i>El funeral de Sarpedón</i> de Cavafis, publicado en  <i>Nea Zoí</i> (segunda página)</p>
</div>

 <p>
Como decía (y nos metemos ya en harina), estas páginas son un perfecto ejemplo de dos rasgos muy distintivos de lo que
ha venido siendo la tradición tipográfica de Grecia hasta la llegada del «diseño gráfico», la «maquetación» y la
decadencia que padecemos ahora, no sólo en Grecia sino por doquier. Por un lado, tenemos el empleo de unos tipos de estilo
 <i>lipsiakó</i>, una cursiva muy reconocible que en Grecia se convirtió en la acompañante prácticamente habitual de
los tipos Didot (el estilo  <i>aplá</i>: simple, sencillo, es decir: estándar). La versión más refinada de esta familia
de itálicas la fabricaba la empresa Monotype para sus monotipias, con el nombre de  <i>Greek 91</i>, ya que el  <i>90</i>
correspondía al estilo recto de su Didot.
</p>


 <div id="orgfe81154" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/funeral_original_detalle_rho.png" alt="funeral_original_detalle_rho.png"></img></p>
 <p> <span class="figure-number">Figura 3: </span>Detalle de la  <i>rho</i> con descendente curvo en la cursiva  <i>lipsiakó</i></p>
</div>

 <p>
Pero, más allá de Grecia, la fama de este estilo de cursiva (al menos dentro de los gabinetes filológicos) se la
debemos, como su propio y griego nombre indica, a la ciudad de Leipzig y especialmente a las ediciones críticas de
Teubner. El círculo germano-heleno, pues, se va cerrando y ya tenemos a nuestra letra perfectamente ubicada.
</p>


 <div id="org1512b72" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/detalle_Teubner.png" alt="detalle_Teubner.png"></img></p>
 <p> <span class="figure-number">Figura 4: </span>Un detalle de la edición del Dionisio de Halicarnaso de Teubner</p>
</div>

 <p>
El segundo rasgo distintivo es mucho más curioso y excéntrico, pues se circunscribe únicamente a la composición
tipográfica de la poesía en verso. Me temo que no tenemos en español un nombre técnico para el procedimiento que vamos a
comentar, pero podríamos ensayar algo como «colgado de diacríticos», si seguimos el término inglés de «hanging
diacritics» que emplea Yannis Haralambous en su opúsculo sobre ortotipografía griega y Unicode <sup> <a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink">1</a></sup>. Vendría a ser como
una variante extrema del  <a href="https://revistacuadernoatico.com/apuntestipograficos/2019/03/04/mas-margenes-opticos-un-aperitivo/">alineamiento óptico de márgenes</a> y, a diferencia de éste, que consiste en un artificio sutil y
no debe ser percibido por el lector, el «colgado de diacríticos» es bastante notorio a ojos vistas. Consiste en
desplazar fuera del margen izquierdo los diacríticos de las mayúsculas, de tal forma que la letra quede alineada con el
resto de letras del margen. Es una técnica, insistimos, que ha de emplearse únicamente en la poesía versal y sólo
tendría sentido hacerlo con el sistema politónico, dada la variedad y combinatoria de los acentos y espíritus que
producen un importante desplazamiento de la vocal afectada(fig.  <a href="#org8ef2dc2">5</a>).
</p>


 <div id="org8ef2dc2" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/funeral_original_detalle_protrusion.png" alt="funeral_original_detalle_protrusion.png"></img></p>
 <p> <span class="figure-number">Figura 5: </span>Detalle del colgado de diacríticos en el texto original</p>
</div>
</div>
</div>

 <div id="outline-container-Una recreación en LuaTeX" class="outline-2">
 <h2 id="Una recreación en LuaTeX">Una recreación en LuaTeX</h2>
 <div class="outline-text-2" id="text-Una recreación en LuaTeX">
 <p>
¿Podemos recrear estas páginas históricas con la potencia del más avanzado sistema de composición tipográfica digital?
Yo me pasé un rato muy agradable trasteando en ello, y damos a continuación cuenta del proceso, mientras desgranamos
paso a paso nuestro preámbulo.
</p>
</div>

 <div id="outline-container-La fuente escogida" class="outline-3">
 <h3 id="La fuente escogida">La fuente escogida</h3>
 <div class="outline-text-3" id="text-La fuente escogida">
 <p>
Sin lugar a dudas, optamos por la excelsa Old Standard, diseño de Alexej Krykov y probablemente la mejor recreación
digital del estilo Didot- <i>aplá</i> y de su itálica  <i>Lipsiakó</i>. Así pues, definimos un documento a 11 puntos y cargamos el
paquete  <code>fontspec</code>:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate"> <span class="org-keyword">\documentclass</span></span>[ <span class="org-variable-name">11pt</span>]{ <span class="org-function-name">article</span>}
 <span class="org-font-latex-sedate"> <span class="org-keyword">\usepackage</span></span>{ <span class="org-function-name">fontspec</span>}
</pre>
</div>

 <p>
Cargo también un paquete de factura propia,  <code>caluacode.sty</code>, donde incluyo el código Lua necesario para ejecutar una
serie de sustituciones contextuales, especialmente las de la  <i>beta</i> curvada sin descendente y la  <i>theta</i> cerrada en mitad de
palabra. Estas filigranas no están presentes en las páginas originales de  <i>Nea Zoí</i>, pues son más típicas de la
tradición impresora francesa. Pero nos gustan mucho y nos permitimos la licencia. Cabe señalar que la propia fuente Old
Standard ya incluye las propiedades OpenType de sustitución contextual para esos dos glifos, pero su cadena condicional
de caracteres no está completa, así que definí hace tiempo unas cuantas funciones en Lua del tipo
 <code>fonts.handlers.otf.addfeature</code> que incluyen todos los contextos de sustitución y pueden aplicarse a cualquier fuente
que disponga de los glifos a sustituir, aunque no lleven la correspondiente propiedad OpenType <sup> <a id="fnr.2" class="footref" href="#fn.2" role="doc-backlink">2</a></sup>. Así pues, cargo
el paquete con las funciones Lua y añado cuatro propiedades OpenType que definí para estos menesteres:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate"> <span class="org-keyword">\usepackage</span></span>{ <span class="org-function-name">caluacode</span>}
 <span class="org-font-latex-sedate">\defaultfontfeatures</span>{ <span class="org-comment">%</span>
RawFeature={+contextual,
+contextual2,
+contextual3,
+contextual4}}
</pre>
</div>



 <div id="org89e9241" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/old_standard_contextual.png" alt="old_standard_contextual.png"></img></p>
 <p> <span class="figure-number">Figura 6: </span>variantes estilísticas-contextuales de la  <i>beta</i> y la  <i>theta</i> en la fuente Old Standard</p>
</div>

 <p>
La interlínea del original de  <i>Nea Zoí</i> tal vez sea algo excesiva. Pero nos mantenemos fieles y añadimos un valor algo
mayor del normal (que suele ser de 1.2em, es decir, un 120% del cuerpo de letra), redefiniendo el valor del texto normal
de la clase  <code>article</code> de LaTeX:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate"> <span class="org-keyword">\renewcommand</span></span>{ <span class="org-font-latex-sedate"> <span class="org-keyword"> <span class="org-function-name">\normalsize</span></span></span>}{ <span class="org-font-latex-sedate"> <span class="org-function-name">\fontsize</span></span> <span class="org-function-name">{11pt}{14pt}</span> <span class="org-font-latex-sedate"> <span class="org-function-name">\selectfont</span></span>}
</pre>
</div>

 <p>
Por último, cargamos  <code>Babel</code> con griego politónico y la fuente:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate"> <span class="org-keyword">\usepackage</span></span>[ <span class="org-variable-name">greek.polytonic</span>]{ <span class="org-function-name">babel</span>}
 <span class="org-font-latex-sedate">\babelfont</span>{rm}{Old Standard}
</pre>
</div>
</div>
</div>

 <div id="outline-container-El formato de los versos" class="outline-3">
 <h3 id="El formato de los versos">El formato de los versos</h3>
 <div class="outline-text-3" id="text-El formato de los versos">
 <p>
Cargamos el macro paquete  <code>verse.sty</code> y hacemos las definiciones pertinentes de formato. La separación estrófica del
original es un tanto excesiva, pero seguimos manteniendo una cierta fidelidad. Así que:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate"> <span class="org-keyword">\usepackage</span></span>{ <span class="org-function-name">verse</span>}
 <span class="org-font-latex-sedate"> <span class="org-keyword">\setlength</span></span>{ <span class="org-font-latex-sedate"> <span class="org-variable-name">\stanzaskip</span></span>}{ <span class="org-variable-name">24pt</span>}
</pre>
</div>

 <p>
La fuente del título es una  <i>paloseco</i> geométrica. Valdría una Helvetica o una Arial, pero aquí yo prefiero desviarme
algo y emplear una de estilo  <i>attiká</i>, como la excelente GFS Neohellenic de la Sociedad de Fuentes Griega:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate"> <span class="org-keyword">\renewcommand</span></span>{ <span class="org-font-latex-sedate"> <span class="org-function-name">\poemtitlefont</span></span>}{ <span class="org-function-name"> <span class="org-comment">%</span></span>
 <span class="org-font-latex-sedate"> <span class="org-font-latex-bold"> <span class="org-function-name">\bfseries</span></span></span> <span class="org-font-latex-sedate"> <span class="org-function-name">\fontsize</span></span> <span class="org-function-name">{15pt}{14pt}</span> <span class="org-font-latex-sedate"> <span class="org-function-name">\selectfont</span></span>
 <span class="org-font-latex-sedate"> <span class="org-function-name">\centering</span></span>
 <span class="org-font-latex-sedate"> <span class="org-function-name">\fontspec</span></span> <span class="org-function-name">{GFS Neohellenic}</span>}
 <span class="org-font-latex-sedate"> <span class="org-keyword">\setlength</span></span>{ <span class="org-font-latex-sedate"> <span class="org-variable-name">\afterpoemtitleskip</span></span>}{ <span class="org-variable-name">28pt</span>}
 <span class="org-font-latex-sedate"> <span class="org-keyword">\setlength</span></span>{ <span class="org-font-latex-sedate"> <span class="org-variable-name">\beforepoemtitleskip</span></span>}{ <span class="org-variable-name">0pt</span>}
</pre>
</div>
</div>
</div>

 <div id="outline-container-El colgado de los diacríticos" class="outline-3">
 <h3 id="El colgado de los diacríticos">El colgado de los diacríticos</h3>
 <div class="outline-text-3" id="text-El colgado de los diacríticos">
 <p>
Aquí llegamos a la parte más divertida. Nos basta con cargar el paquete  <code>microtype.sty</code>, que es el encargado de
gestionar todas las propiedades microtipográficas de LuaTeX, especialmente la conocida como «protrusion» para los
márgenes ópticos. Yo tengo definido un largo archivo de configuración con valores de márgenes ópticos y colgado de
diacríticos específicos para la fuente Old Standard, de modo que si hemos declarado previamente esa fuente,  <code>microtype</code>
extraerá los valores de dicho archivo. Concretamente para el colgado de diacríticos definí también un contexto, llamado
«versogriego», y  <code>microtype</code> sólo aplicará esos valores dentro del entorno  <code>versogriego</code>. Conviene insistir que todas
esas cifras están optimizadas para la fuente Old Standard, y si se aplican a otras tipografías podríamos encontrarnos con resultados
inesperados. Así comienza mi definición para los valores de colgado de diacríticos (aún en proceso de pruebas y, por
tanto, experimentales):
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-comment-delimiter">%% </span> <span class="org-comment">Para los diacríticos al margen</span>

 <span class="org-font-latex-sedate">\SetProtrusion</span>
[ name = versogriego,
  load = oldstandard-default,
  context = versogriego,
  unit = 1em ]
{ encoding = {EU1,EU2,TU},
  family   = {OldStandard} }
{ Ἐ  = {212, },
  Ἑ  = {212, },
  Ἒ  = {258, },
  Ἓ  = {258, },
  Ἔ  = {286, },
  Ἕ  = {286, },
  Ἠ  = {212, },  <span class="org-comment">%</span>
  Ἡ  = {212, },
  Ἢ  = {258, },
  Ἣ  = {258, },

 <span class="org-comment-delimiter">% </span> <span class="org-comment">(etc.)</span>

}
</pre>
</div>


 <div id="org55472b5" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/funeral_TeX_detalle_protrusion.png" alt="funeral_TeX_detalle_protrusion.png"></img></p>
 <p> <span class="figure-number">Figura 7: </span>Detalle de colgado de diacríticos en nuestra recreación con LuaTeX</p>
</div>
</div>
</div>

 <div id="outline-container-Conflictos de ~microtype~ y ~verse~" class="outline-3">
 <h3 id="Conflictos de ~microtype~ y ~verse~">Conflictos de  <code>microtype</code> y  <code>verse</code></h3>
 <div class="outline-text-3" id="text-Conflictos de ~microtype~ y ~verse~">
 <p>
Los valores de  <code>microtype</code> funcionarían sólo en los márgenes «reales» y no en los márgenes de los versos que componemos
a través del paquete  <code>verse</code> y que no dejan de ser una variante muy modificada de un entorno  <code>list</code>. Pero podemos
aplicar antes un  <i>hacking</i> que sugiere el autor de  <code>microtype</code>. Por tanto, defino un comando  <code>protverso</code> (de
«protrusion en el verso»):
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate"> <span class="org-font-latex-warning">\makeatletter</span></span>
  <span class="org-font-latex-sedate"> <span class="org-keyword">\newcommand</span></span> <span class="org-keyword">*</span> <span class="org-font-latex-sedate"> <span class="org-function-name">\protverso</span></span>[ <span class="org-variable-name">1</span>]{ <span class="org-function-name"> <span class="org-comment">%</span></span>
 <span class="org-function-name">         {</span> <span class="org-font-latex-sedate"> <span class="org-function-name">\everypar</span></span> <span class="org-function-name">{}</span> <span class="org-function-name"> <span class="org-comment">%</span></span>
 <span class="org-function-name">                 </span> <span class="org-font-latex-sedate"> <span class="org-function-name">\setbox\z@\vbox</span></span> <span class="org-function-name">{</span> <span class="org-font-latex-sedate"> <span class="org-function-name">\noindent</span></span> <span class="org-function-name">#1}</span> <span class="org-function-name"> <span class="org-comment">%</span></span>
 <span class="org-function-name">                 </span> <span class="org-font-latex-sedate"> <span class="org-function-name">\vbadness</span></span> <span class="org-function-name">=</span> <span class="org-font-latex-sedate"> <span class="org-function-name">\@M</span></span>
 <span class="org-function-name">                 </span> <span class="org-font-latex-sedate"> <span class="org-function-name">\splittopskip</span></span> <span class="org-function-name">=</span> <span class="org-font-latex-sedate"> <span class="org-function-name">\z@</span></span>
 <span class="org-function-name">                 </span> <span class="org-font-latex-sedate"> <span class="org-function-name">\global\setbox\z@</span></span> <span class="org-function-name">=</span> <span class="org-font-latex-sedate"> <span class="org-function-name">\vsplit\z@</span></span> <span class="org-function-name"> to </span> <span class="org-font-latex-sedate"> <span class="org-function-name">\baselineskip</span></span>
 <span class="org-function-name">                 </span> <span class="org-font-latex-sedate"> <span class="org-function-name">\unvbox\z@</span></span> <span class="org-function-name"> </span> <span class="org-font-latex-sedate"> <span class="org-function-name">\global\setbox\z@</span></span> <span class="org-function-name">=</span> <span class="org-font-latex-sedate"> <span class="org-function-name">\lastbox</span></span>
 <span class="org-function-name">         }</span> <span class="org-function-name"> <span class="org-comment">%</span></span>
 <span class="org-function-name">         </span> <span class="org-font-latex-sedate"> <span class="org-function-name">\ifhbox\z@</span></span>
 <span class="org-function-name">         </span> <span class="org-font-latex-sedate"> <span class="org-function-name">\leavevmode</span></span>
 <span class="org-function-name">         </span> <span class="org-font-latex-sedate"> <span class="org-function-name">\kern\leftmarginkern\z@</span></span>
 <span class="org-function-name">         </span> <span class="org-font-latex-sedate"> <span class="org-function-name">\fi</span></span>
 <span class="org-function-name">         #1</span>}
  <span class="org-font-latex-sedate"> <span class="org-font-latex-warning">\makeatother</span></span>
</pre>
</div>
</div>
</div>

 <div id="outline-container-Montando los versos y compilando todo" class="outline-3">
 <h3 id="Montando los versos y compilando todo">Montando los versos y compilando todo</h3>
 <div class="outline-text-3" id="text-Montando los versos y compilando todo">
 <p>
Así comenzaría nuestro documento con  <i>El funeral de Sarpedón</i>:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate"> <span class="org-keyword">\begin</span></span>{ <span class="org-function-name">document</span>}

 <span class="org-font-latex-sedate">\poemtitle</span>{Η ΚΗΔΕΙΑ ΤΟΥ ΣΑΡΠΗΔΟΝΟΣ}

 <span class="org-font-latex-sedate"> <span class="org-keyword">\begin</span></span>{ <span class="org-function-name">microtypecontext</span>}{protrusion=versogriego}

 <span class="org-font-latex-sedate"> <span class="org-keyword">\settowidth</span></span>{ <span class="org-font-latex-sedate"> <span class="org-variable-name">\versewidth</span></span>}{ <span class="org-variable-name">και γύρισαν στες άλλες τους φροντίδες και δουλειές.</span>}
  <span class="org-font-latex-sedate"> <span class="org-font-latex-italic">\itshape</span></span>
 <span class="org-font-latex-sedate"> <span class="org-keyword">\begin</span></span>{ <span class="org-function-name">verse</span>}[ <span class="org-font-latex-sedate">\versewidth</span>] <span class="org-font-latex-sedate">\protverso</span>
Βαρυὰν ὀδύνην ἔχει ὁ Ζεύς. Τὸν Σαρπηδόνα <span class="org-font-latex-warning">\\</span> <span class="org-font-latex-sedate">\protverso</span>
ἐσκότωσεν ὁ Πάτροκλος· καὶ τώρα ὁρμοῦν <span class="org-font-latex-warning">\\</span> <span class="org-font-latex-sedate">\protverso</span>
ὁ Μενοιτιάδης κ’ οἱ Ἀχαιοὶ τὸ σῶμα <span class="org-font-latex-warning">\\</span> <span class="org-font-latex-sedate">\protverso</span>
ν’ ἁρπάξουνε καὶ νὰ τὸ ἐξευτελίσουν.

 <span class="org-font-latex-sedate">\protverso</span>
Ἀλλὰ ὁ Ζεὺς διόλου δὲν στέργει αὐτά. <span class="org-font-latex-warning">\\</span> <span class="org-font-latex-sedate">\protverso</span>
Τὸ ἀγαπημένο του παιδὶ ― ποὺ τὸ ἄφισε <span class="org-font-latex-warning">\\</span> <span class="org-font-latex-sedate">\protverso</span>
καὶ χάθηκεν· ὁ Νόμος ἦταν ἔτσι ― <span class="org-font-latex-warning">\\</span> <span class="org-font-latex-sedate">\protverso</span>
τουλάχιστον θὰ τὸ τιμήσει πεθαμένο. <span class="org-font-latex-warning">\\</span> <span class="org-font-latex-sedate">\protverso</span>
Καὶ στέλνει, ἰδού, τὸν Φοῖβο κάτω στὴν πεδιάδα <span class="org-font-latex-warning">\\</span> <span class="org-font-latex-sedate">\protverso</span>
ἑρμηνευμένο πῶς τὸ σῶμα νὰ νοιασθεῖ.

 <span class="org-comment-delimiter">% </span> <span class="org-comment">(... ... ... ... ...)</span>

 <span class="org-comment-delimiter">% </span> <span class="org-comment">(etc.)</span>

 <span class="org-font-latex-sedate"> <span class="org-keyword">\end</span></span>{ <span class="org-function-name">verse</span>}
 <span class="org-font-latex-sedate"> <span class="org-keyword">\end</span></span>{ <span class="org-function-name">microtypecontext</span>}
 <span class="org-font-latex-sedate"> <span class="org-keyword">\end</span></span>{ <span class="org-function-name">document</span>}
</pre>
</div>



 <p>
Y  <a href="https://maciaschain.gitlab.io/lunotipia/pdf/funeral.pdf">aquí</a> se puede descargar el PDF resultante.
</p>
</div>
</div>
</div>


 <div id="outline-container-org974b934" class="outline-2">
 <h2 id="org974b934">∞</h2>
 <div class="outline-text-2" id="text-org974b934">
 <div>
 <p>Publicado: 01/09/19 - 18:51</p>

 <p>Última actualización: 01/09/19 - 18:51</p>
</div>
 <div>
 <hr></hr> <p>
 <a href="index.html">Índice general</a>
</p>
 <p>
 <a href="acerca-de.html">Acerca de...</a>
</p>
 <p>
Esta obra está bajo una  <a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/">licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional</a>.
</p>
</div>
</div>
</div>
 <div id="footnotes">
 <h2 class="footnotes">Notas al pie de página: </h2>
 <div id="text-footnotes">

 <div class="footdef"> <sup> <a id="fn.1" class="footnum" href="#fnr.1" role="doc-backlink">1</a></sup> <div class="footpara" role="doc-footnote"> <p class="footpara">
Véase  <a href="http://web.archive.org/web/20120229131933/http://omega.enstb.org/yannis/pdf/boston99.pdf">From Unicode to Typography, a Case Study the Greek Script</a>, de Yannis Haralambous
</p></div></div>

 <div class="footdef"> <sup> <a id="fn.2" class="footnum" href="#fnr.2" role="doc-backlink">2</a></sup> <div class="footpara" role="doc-footnote"> <p class="footpara">
Véase  <a href="https://maciaschain.gitlab.io/lunotipia/sustitucion_contextual.html">esta entrada</a> en  <i>La lunotipia</i>.
</p></div></div>


</div>
</div></div>]]></description>
  <link>https://lunotipia.juanmanuelmacias.com/cavafis_sarpedon.html</link>
  <guid isPermaLink="false">https://lunotipia.juanmanuelmacias.com/cavafis_sarpedon.html</guid>
  <pubDate>mié, 16 ago 2023 23:46:00 +0200</pubDate>
</item>
<item>
  <title>Definir un comando con opciones fijas en LaTeX</title>
  <description><![CDATA[<div id="content" class="content">

 <p>
El caso es el siguiente. Queremos definir en  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> un comando que ejecute una acción
por defecto, pero que pueda realizar otras si le aplicamos una serie de opciones
predefinidas. De tal suerte que:
</p>

 <ol class="org-ol"> <li> <code>\micomando</code>: la acción por defecto;</li>
 <li> <code>\micomando[valor1]</code>: la acción asociada al valor 1</li>
 <li> <code>\micomando[valor2]</code>: la acción asociada al valor 2</li>
 <li>Etc.</li>
</ol> <p>
Hay muchas formas de hacer esto en  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span>, pero aquí daremos cuenta de tres,
empezando la que resulta más idiomática a  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span>2ε.
</p>

 <div id="outline-container-Mediante =\nameuse= y =\namedef=" class="outline-2">
 <h2 id="Mediante =\nameuse= y =\namedef=">Mediante  <code>\nameuse</code> y  <code>\namedef</code></h2>
 <div class="outline-text-2" id="text-Mediante =\nameuse= y =\namedef=">
 <p>
Partamos de que definimos nuestro comando (por el uso de la arroba debemos encerrarlo
todo entre sendas  <code>\makeatletter</code> y  <code>\makeatother</code>), con la opción por defecto:
</p>

 <div class="org-src-container">
 <pre class="src src-latex" id="orga65285b"> <span class="org-comment-delimiter">% </span> <span class="org-comment">empezamos </span> <span class="org-font-latex-sedate"> <span class="org-comment">\makeatletter</span></span>
 <span class="org-font-latex-sedate"> <span class="org-font-latex-warning">\makeatletter</span></span>

 <span class="org-font-latex-sedate"> <span class="org-keyword">\newcommand</span></span> <span class="org-font-latex-sedate"> <span class="org-function-name">\micomando</span></span>[ <span class="org-variable-name">1</span>][ <span class="org-variable-name">defecto</span>]{ <span class="org-function-name"> <span class="org-comment">%</span></span>
 <span class="org-function-name">  </span> <span class="org-font-latex-sedate"> <span class="org-function-name">\@nameuse</span></span> <span class="org-function-name">{#1}</span>}
</pre>
</div>

 <p>
Sólo nos quedaría ir definiendo las distintas opciones mediante  <code>\namedef</code>, empezando por
la opción por defecto:
</p>

 <div class="org-src-container">
 <pre class="src src-latex" id="org6bf46c4"> <span class="org-font-latex-sedate">\@namedef</span>{defecto}{ <span class="org-comment">%</span>
  Esta es la opción por defecto}
</pre>
</div>

 <p>
Y siguiendo por las otras opciones definidas:
</p>

 <div class="org-src-container">
 <pre class="src src-latex" id="org309bfba"> <span class="org-font-latex-sedate">\@namedef</span>{valor1}{ <span class="org-comment">%</span>
  Esta es la opción asociada al valor 1}

 <span class="org-font-latex-sedate">\@namedef</span>{valor2}{ <span class="org-comment">%</span>
  Esta es la opción asociada al valor 2}

 <span class="org-comment-delimiter">% </span> <span class="org-comment">cerramos el grupo </span> <span class="org-font-latex-sedate"> <span class="org-comment">\makeatletter</span></span> <span class="org-comment">...</span> <span class="org-font-latex-sedate"> <span class="org-comment">\makeatother</span></span>
 <span class="org-font-latex-sedate"> <span class="org-font-latex-warning">\makeatother</span></span>
</pre>
</div>

 <p>
Podemos compilar ya nuestro comando con las tres opciones:
</p>

 <div class="org-src-container">
 <pre class="src src-latex" id="orgade4bf2"> <span class="org-font-latex-sedate"> <span class="org-keyword">\begin</span></span>{ <span class="org-function-name">document</span>}

 <span class="org-font-latex-sedate">\micomando</span>

 <span class="org-font-latex-sedate">\micomando</span>[valor1]

 <span class="org-font-latex-sedate">\micomando</span>[valor2]

 <span class="org-font-latex-sedate"> <span class="org-keyword">\end</span></span>{ <span class="org-function-name">document</span>}
</pre>
</div>

 <p>
Y obtendremos el resultado esperado:
</p>


 <div id="orgc073802" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/opciones1.png" alt="opciones1.png"></img></p>
</div>
</div>
</div>

 <div id="outline-container-Mediante los paquetes =xparse= y =etoolbox=" class="outline-2">
 <h2 id="Mediante los paquetes =xparse= y =etoolbox=">Mediante los paquetes  <code>xparse</code> y  <code>etoolbox</code></h2>
 <div class="outline-text-2" id="text-Mediante los paquetes =xparse= y =etoolbox=">
 <p>
El paquete  <code>xparse</code>, perteneciente al proyecto  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> 3, pero usable perfectamente
en  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span>2ε, nos proporciona una interfaz novedosa y clara para poder definir
comandos a muy alto nivel en nuestros documentos de  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span>. Por su parte, del
paquete  <code>etoolbox</code> nos viene como anillo al dedo el comando  <code>\ifstrequal</code> para comparar
dos cadenas de texto (primero y segundo argumento), que serán las opciones del comando
que queremos definir. El tercer argumento, que sería lo que devolviese si las dos
cadenas no fuesen iguales, lo dejaremos vacío. Es decir, que no ejecutará nada en ese
caso.
</p>

 <p>
Comenzamos, pues, definiendo el documento y cargando los paquetes:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate"> <span class="org-keyword">\documentclass</span></span>{ <span class="org-function-name">article</span>}
 <span class="org-font-latex-sedate"> <span class="org-keyword">\usepackage</span></span>{ <span class="org-function-name">xparse</span>}
 <span class="org-font-latex-sedate"> <span class="org-keyword">\usepackage</span></span>{ <span class="org-function-name">etoolbox</span>}
</pre>
</div>

 <p>
Y declaramos nuestro nuevo comando, esta vez mediante la sintaxis de  <code>xparse</code> (véase el
 <a href="http://mirrors.ctan.org/macros/latex/contrib/l3packages/xparse.pdf">manual</a>, para más información). Definimos un único argumento opcional; si el valor del
argumento opcional es falso (no tiene valor verdadero) se aplica el valor defecto, pero si
es verdadero (no tiene valor falso) se aplican los tres condicionales que comparan la
cadena del argumento opcional con los valores prefijados:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate">\DeclareDocumentCommand\micomando</span>{ o }{ <span class="org-comment">%</span>
   <span class="org-font-latex-sedate">\IfNoValueTF</span>{#1}
  {Este sigue siendo, amigos, el valor por defecto}
  { <span class="org-font-latex-sedate">\ifstrequal</span>{#1}{valor1}{Nada cambia: vuelve a ser el valor 1}{}
     <span class="org-font-latex-sedate">\ifstrequal</span>{#1}{valor2}{Ídem para el valor 2}{}
     <span class="org-font-latex-sedate">\ifstrequal</span>{#1}{valor3}{Y el valor 3 no se aparta de lo esperable}{}
  }
}
</pre>
</div>

 <p>
Ya sólo nos queda compilarlo:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate"> <span class="org-keyword">\begin</span></span>{ <span class="org-function-name">document</span>}

 <span class="org-font-latex-sedate">\micomando</span>

 <span class="org-font-latex-sedate">\micomando</span>[valor1]

 <span class="org-font-latex-sedate">\micomando</span>[valor2]

 <span class="org-font-latex-sedate">\micomando</span>[valor3]

 <span class="org-font-latex-sedate"> <span class="org-keyword">\end</span></span>{ <span class="org-function-name">document</span>}
</pre>
</div>

 <p>
Y aquí nuestro resultado:
</p>


 <div id="org60045b3" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/opciones2.png" alt="opciones2.png"></img></p>
</div>
</div>
</div>

 <div id="outline-container-De nuevo mediante =xparse= pero usando ahora la sintaxis de LaTeX 3 para comparar cadenas" class="outline-2">
 <h2 id="De nuevo mediante =xparse= pero usando ahora la sintaxis de LaTeX 3 para comparar cadenas">De nuevo mediante  <code>xparse</code>, pero usando ahora la sintaxis de LaTeX 3 para comparar cadenas</h2>
 <div class="outline-text-2" id="text-De nuevo mediante =xparse= pero usando ahora la sintaxis de LaTeX 3 para comparar cadenas">
 <p>
Es decir, en lugar de  <code>etoolbox</code> usaremos aquí el comando  <code>\str_if_eq:nnTF</code>. Iniciamos
nuestro documento:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate"> <span class="org-keyword">\documentclass</span></span>{ <span class="org-function-name">article</span>}
 <span class="org-font-latex-sedate"> <span class="org-keyword">\usepackage</span></span>{ <span class="org-function-name">xparse</span>}
</pre>
</div>

 <p>
Primero, definimos una macro, para simplificar (ojo, hay que encerrarla
entre  <code>\ExplSyntaxOn</code> Y  <code>\ExplSyntaxOff</code> para que se tenga en cuenta la sintaxis de las
funciones de  <code>expl3</code>)
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate">\ExplSyntaxOn</span>
 <span class="org-font-latex-sedate">\cs</span>_new_eq:NN  <span class="org-font-latex-sedate">\compara</span>  <span class="org-font-latex-sedate">\str</span>_if_eq:nnTF
 <span class="org-font-latex-sedate">\ExplSyntaxOff</span>
</pre>
</div>

 <p>
Y volvemos a definir nuestro comando con  <code>xparse</code>:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate">\DeclareDocumentCommand\micomando</span>{ o }{ <span class="org-comment">%</span>
   <span class="org-font-latex-sedate">\IfNoValueTF</span>{#1}
  {Sin novedad: el valor por defecto}
  { <span class="org-font-latex-sedate">\compara</span>{#1}{valor1}{Y otra vez y por tercera, el valor 1}{}
     <span class="org-font-latex-sedate">\compara</span>{#1}{valor2}{Y el valor 2}{}
     <span class="org-font-latex-sedate">\compara</span>{#1}{valor3}{¡Y el valor 3!}{}
  }
}
</pre>
</div>

 <p>
Y volvemos a compilar:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate"> <span class="org-keyword">\begin</span></span>{ <span class="org-function-name">document</span>}

 <span class="org-font-latex-sedate">\micomando</span>

 <span class="org-font-latex-sedate">\micomando</span>[valor1]

 <span class="org-font-latex-sedate">\micomando</span>[valor2]

 <span class="org-font-latex-sedate">\micomando</span>[valor3]

 <span class="org-font-latex-sedate"> <span class="org-keyword">\end</span></span>{ <span class="org-function-name">document</span>}
</pre>
</div>

 <p>
Con nuestro resultado esperable:
</p>


 <div id="orge218045" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/opciones3.png" alt="opciones3.png"></img></p>
</div>
</div>
</div>

 <div id="outline-container-org4e296c9" class="outline-2">
 <h2 id="org4e296c9">∞</h2>
 <div class="outline-text-2" id="text-org4e296c9">
 <div>
 <p>Publicado: 05/11/20</p>

 <p>Última actualización: 16/08/23</p>
</div>
 <div>
 <hr></hr> <p>
 <a href="index.html">Índice general</a>
</p>
 <p>
 <a href="acerca-de.html">Acerca de...</a>
</p>
 <p>
Esta obra está bajo una  <a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/">licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional</a>.
</p>
</div>
</div>
</div>
</div>]]></description>
  <link>https://lunotipia.juanmanuelmacias.com/comandos_opciones.html</link>
  <guid isPermaLink="false">https://lunotipia.juanmanuelmacias.com/comandos_opciones.html</guid>
  <pubDate>mié, 16 ago 2023 23:46:00 +0200</pubDate>
</item>
<item>
  <title>Tipografía griega y comillas</title>
  <description><![CDATA[<div id="content" class="content">

 <form>
 <p style="text-align: center;"> <button formaction="https://maciaschain.gitlab.io/lunotipia/pdf/comillasgriegas.pdf"> <font size="2">Descargar esta entrada en formato PDF</font></button></p>
</form>

 <p>
 <style> .figure-number {display: none;}</style></p>


 <div id="org5eb73eb" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/comillas-oxford.jpg" alt="comillas-oxford.jpg"></img></p>
</div>


 <div id="orgff873d6" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/comillas_bude.jpg" alt="comillas_bude.jpg"></img></p>
</div>


 <div id="org5ede59d" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/comillas_teubner.jpg" alt="comillas_teubner.jpg"></img></p>
</div>

 <p>
Tres muestras de ediciones críticas: de Oxford, de la colección Budé (Les Belles Lettres) y de Teubner. Gran Bretaña,
Francia y Alemania. Con sus estilos tan reconocibles, estas tres editoriales representan el canon para la confección de
una edición crítica, no sólo en el ámbito académico sino también en el tipográfico. Y sobre este último, precisamente,
me apetece dejar aquí un pequeño comentario.
</p>

 <p>
De la composición que asoma en los tres ejemplos, qué decir que no sean alabanzas hacia esos buenos tiempos cuando el
mundo tenía tipógrafos sabios y el humanismo de la producción editorial no había claudicado bajo la ameba amorfa del
«diseño gráfico». Pero también en las tres es bien visible una anomalía. Entiéndase: no es que los cajistas cometieran
un despiste, pues su trabajo es impoluto. La alarma vendría más bien del lado de lo que podríamos llamar tipografía
perversa. O un ejemplo de cómo en un mundo tan aparentemente neutro como el de la imprenta pueden colarse ciertos vicios
culturales.
</p>

 <p>
Si se fijan, la edición oxoniense emplea las comillas altas, que son las correctas para el inglés. La francesa, las
comillas latinas con el espaciado (para comillas e incluso signos de puntuación) que es preceptivo del francés impreso.
Y la alemana, las habituales comillas teutonas bajas/altas. En los tres casos son las comillas correctas para el país
donde se publica cada edición. Salvo que el texto editado está en griego. Da la sensación de que para el editor inglés,
francés o germano el griego no tiene tradición tipográfica que respetar y ha de asimilarse sin más miramientos a la
lengua anfitriona. O fagocitadora. Podemos pensar que la obra no es del autor griego de la antigüedad en el fondo, sino
del estudioso filólogo que la anota y que, además, orquesta todos los comentarios eruditos que el tiempo ha ido depositando
sobre ella. Y no deja de ser cierto, lo cual también es inquietante. Pero habría que ver cómo se tomarían británicos,
franceses o alemanes el ver a Shakespeare, a Molière o a Rilke editados por esos anchos y variados mundos de Dios con
comillas foráneas e intrusas a su tradición tipográfica. En cualquier caso, lo que no deja de estar patente aquí, a mi
juicio, es una versión portátil del habitual paternalismo colonizador que el (digamos) occidente culto ha venido
adoptando hacia Grecia. El lema sería algo así como  <i>lo griego sin Grecia</i> o, mejor aún,  <i>sin griegos</i>.
</p>

 <p>
Es innegable lo mucho y bueno que los impresores y tipógrafos de ese culto occidente han hecho por el sistema de
escritura griego, ya desde el Renacimiento y los Grecs du Roi del gran Claude Garamond, quien se inspiró, por otra
parte, en la cursiva de volutas bizantinas que traían los peritos escribas migrados de Grecia. A la vuelta de los
siglos, la influencia fue recíproca, y es así que en Grecia se acabaron adoptando los tipos fundidos por otro francés,
Firmin Didot, como una tipografía casi autóctona y nacional. Y los libros compuestos en estilo  <i>aplá</i> (= «simple»), como
se conoce en la tradición impresora griega la composición en Didot, llegaron a ser un rasgo distintivo que, aún hoy y
por fortuna, sigue vigente allí, a pesar de la cada vez más omnipresente Times, para lo bueno y lo malo, todo hay que
decirlo.
</p>

 <p>
La tipografía griega, en suma, está viva al igual que los griegos; y con ella, sus propias normas ortotipográficas para
la escritura griega, que deben respetarse no sólo en los libros impresos en Grecia sino en cualquier otra parte donde se
imprima un texto griego. Y eso también es extensible a lugares como Oxford, París o Leipzig. De modo que si queremos
practicar una correcta observancia de tales normas, en lo que a las comillas respecta tendremos que hacer uso de las
comillas latinas «», como en español o francés, pero sin el espaciado de éste.
</p>

 <p>

</p>

 <p>
 <b>(Estrambote)</b> Por cierto, las comillas latinas en la tipografía Didot no tienen esas esquinas agudas y cortantes que
se ven en otras fuentes. Sus trazos son de una rara sensualidad, como una caricia tímida a lo que encierran y acaso no
quieren encerrar: corteses y elegantes para algo tan «impertinente» como son las comillas.
</p>


 <div id="orgbe83c7e" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/comillas_didot.png" alt="comillas_didot.png"></img></p>
</div>


 <div id="outline-container-orga311fc4" class="outline-2">
 <h2 id="orga311fc4">∞</h2>
 <div class="outline-text-2" id="text-orga311fc4">
 <div>
 <p>Publicado: 02/11/19</p>

 <p>Última actualización: 16/04/22</p>
</div>
 <div>
 <hr></hr> <p>
 <a href="index.html">Índice general</a>
</p>
 <p>
 <a href="acerca-de.html">Acerca de...</a>
</p>
 <p>
Esta obra está bajo una  <a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/">licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional</a>.
</p>
</div>
</div>
</div>
</div>]]></description>
  <link>https://lunotipia.juanmanuelmacias.com/comillasgriegas.html</link>
  <guid isPermaLink="false">https://lunotipia.juanmanuelmacias.com/comillasgriegas.html</guid>
  <pubDate>sáb, 16 abr 2022 15:39:00 +0200</pubDate>
</item>
<item>
  <title>Caligrafía, tipografía, quimeras</title>
  <description><![CDATA[<div id="content" class="content">

 <p>
Es sabido que la tipografía surgió para encerrar a la escritura humana en un delirio de
simetría, rutina y orden. Y con ello nació también ese asombroso objeto industrial que
llamamos «libro», y el texto que puede clonarse hasta el infinito —siempre que contemos
con tinta infinita y un impresor de infinitos recursos— frente al raro e irrepetible
códice. El arte de la letra impresa, al cabo, no es otra cosa que el intento de capturar
un simple lapso en el continuo de la mano que escribe: el molde de cada letra, como la
mosca encerrada en su gota de ámbar. Pero aun dentro de ese nuevo y limpio orbe
matemático, lo tipográfico no ha dejado de volver la mirada en ocasiones a su origen
humano y perfectible, generalmente en la forma de tipos de inspiración caligráfica,
diseñados a lo largo de la historia con mayor o menor fortuna. Con la tecnología OpenType
—y otras parecidas— para las fuentes digitales se ha aportado, además, la variedad de
las ligaduras y otros glifos mudables por posición o contexto.
</p>

 <p>
Hay fuentes caligráficas ahí fuera, en fin, muy logradas y bellas, y muchas de licencia
libre. El problema casi siempre es encontrarles un escenario adecuado para que actúen.
Pero todo tiene su momento. Precisamente estos días, para un trabajo en que ando,
necesitaba crear una suerte de entorno caligráfico para  <span style="font-family:serif;">LuaT <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span>, de suerte que entre
el inicio y el cierre se imprima un bloque que intente emular en la página el aspecto de
uno de esos cuadernillos de caligrafía de toda la vida. La idea es echar mano de los
recursos que tenemos más a mano, sin necesidad de inventar nada nuevo, como en esos
programas de televisión sobre bricolaje doméstico. Un poco de código Lua también vendrá en
nuestra ayuda para pautar los renglones de nuestro cuaderno ficticio. En los párrafos que
siguen intentaremos dar cuenta en detalle de todo el código empleado.
</p>

 <div id="outline-container-org0300d9b" class="outline-2">
 <h2 id="org0300d9b">El preámbulo</h2>
 <div class="outline-text-2" id="text-org0300d9b">
 <p>
Para nuestro experimento necesitaremos unos cuantos paquetes:  <code>xparse</code> y  <code>xkeyval</code>, para
definir el entorno y las opciones, respectivamente;  <code>xcolor</code> para manipular colores;
 <code>lipsum</code>, para el texto falso;  <code>fontspec</code> para todo lo relacionado con las fuentes y su
gestión y  <code>babel</code> para las lenguas (para lo que queremos, necesitamos español como lengua
principal y griego antiguo);  <code>tikz</code> para los gráficos,  <code>calc</code> para definir dimensiones
cómodamente; y, por último,  <code>mdframed</code> nos servirá para el bloque contenedor. Es decir,
nuestro preámbulo se puede parecer a esto:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate"> <span class="org-keyword">\documentclass</span></span>[ <span class="org-variable-name">11pt</span>]{ <span class="org-function-name">article</span>}
 <span class="org-font-latex-sedate"> <span class="org-keyword">\usepackage</span></span>{ <span class="org-function-name">fontspec</span>}
 <span class="org-font-latex-sedate"> <span class="org-keyword">\usepackage</span></span>[ <span class="org-variable-name">greek.ancient,spanish</span>]{ <span class="org-function-name">babel</span>}
 <span class="org-font-latex-sedate"> <span class="org-keyword">\usepackage</span></span>{ <span class="org-function-name">tikz,calc,lipsum,xcolor,mdframed</span>}
 <span class="org-font-latex-sedate"> <span class="org-keyword">\usepackage</span></span>{ <span class="org-function-name">xparse,xkeyval</span>}
</pre>
</div>

 <p>
Definimos ahora una caja que contendrá cada renglón pautado del cuaderno (realmente, son
dos renglones, uno para la línea base y otro para la altura de las minúsculas), un color
que intente aproximarse al azul de un bolígrafo y una dimensión que nos será útil para
delimitar los márgenes a izquierda y derecha de nuestro bloque:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate">\newbox\rejilla</span>
 <span class="org-font-latex-sedate"> <span class="org-keyword">\newlength</span></span>{ <span class="org-font-latex-sedate"> <span class="org-function-name">\cuadernomarg</span></span>}
 <span class="org-font-latex-sedate"> <span class="org-keyword">\setlength</span></span>{ <span class="org-font-latex-sedate"> <span class="org-variable-name">\cuadernomarg</span></span>}{ <span class="org-variable-name">.062</span> <span class="org-font-latex-sedate"> <span class="org-variable-name">\textwidth</span></span>}
 <span class="org-font-latex-sedate">\definecolor</span>{bolibic}{HTML}{194E92}
</pre>
</div>
</div>
</div>

 <div id="outline-container-orga330fcb" class="outline-2">
 <h2 id="orga330fcb">La función en Lua</h2>
 <div class="outline-text-2" id="text-orga330fcb">
 <p>
Nuestra función en Lua deberá asociarse al  <i>callback</i>  <code>post_linebreak_filter</code>, y manipula
el nodo principal de la línea de tal forma que justo antes de cada línea recién cortada se
inserte nuestra caja, que hemos llamado  <code>rejilla</code>. Podemos encerrar la función dentro de
la primitiva  <code>\directlua{...}</code>. De momento, quedaría así:
</p>

 <div class="org-src-container">
 <pre class="src src-lua"> <span class="org-keyword">function</span>  <span class="org-function-name">rejilla</span> ( <span class="org-variable-name">h</span>, <span class="org-variable-name">c</span>)
    <span class="org-keyword">for</span>  <span class="org-variable-name">linea</span>  <span class="org-keyword">in</span> node.traverse(h)  <span class="org-keyword">do</span>
       <span class="org-keyword">if</span> linea.id==0  <span class="org-keyword">then</span>
         linea.head=node.insert_before(linea.head,linea.head,node.copy(tex.box.rejilla))
       <span class="org-keyword">end</span>
    <span class="org-keyword">end</span>
    <span class="org-keyword">return</span> h
 <span class="org-keyword">end</span>
</pre>
</div>
</div>
</div>

 <div id="outline-container-orgd8899b4" class="outline-2">
 <h2 id="orgd8899b4">El entorno para  <code>mdframed</code></h2>
 <div class="outline-text-2" id="text-orgd8899b4">
 <p>
Nuestro entorno para el paquete  <code>mdframed</code> deberá tener una serie de propiedades. Nótese
que este entorno también dibujará la línea roja típica del margen izquierdo en este tipo
de cuadernillos:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate">\mdfdefinestyle</span>{cuaderno}{ <span class="org-comment">%</span>
  linewidth=.5pt,
  linecolor= red,
  topline = false,
  rightline = false,
  bottomline = false,
  skipabove= <span class="org-font-latex-sedate">\bigskipamount</span>,
  skipbelow= <span class="org-font-latex-sedate">\bigskipamount</span>,
  leftmargin=2em,
  innerleftmargin=1em,
  rightmargin=3em,
  innerrightmargin=0pt,
  innertopmargin=0pt,
  innerbottommargin=0pt,
}

 <span class="org-font-latex-sedate">\newmdenv</span>[style=cuaderno]{mdcuaderno}
</pre>
</div>
</div>
</div>

 <div id="outline-container-org134a075" class="outline-2">
 <h2 id="org134a075">El entorno «cuadernillo» y sus opciones</h2>
 <div class="outline-text-2" id="text-org134a075">
 <p>
Las opciones serán del estilo «propiedad/valor». En concreto estas:
</p>

 <ul class="org-ul"> <li> <code>color</code>: el color de los renglones del cuaderno. Por defecto será gris con un valor de
opacidad de 0.4.</li>
 <li> <code>font</code>: la fuente del entorno. Por defecto es la familia QtMerryScript, que no es una
gran fuente, pero la elijo porque está incluida en TeX Live. Por supuesto, la gracia
está en que escojamos siempre una fuente caligráfica.</li>
 <li> <code>fontfeature</code>: para indicar las propiedades opentype que queramos cargar, siempre con la
sintaxis de  <code>fontspec</code>. Por defecto, ninguna en especial que no incluya la fuente de
salida en el documento.</li>
 <li> <code>fontsize</code>: el tamaño de la fuente. Podemos indicarlo con los típicos comandos del
estilo  <code>\large</code> o mediante un comando  <code>\fontsize</code>. Por defecto, el tamaño normal.</li>
</ul> <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate">\makeatletter</span>
 <span class="org-font-latex-sedate">\define@key</span>{cuaderno}{color}[]{
   <span class="org-font-latex-sedate">\def\cuadernocolor</span>{#1}}
 <span class="org-font-latex-sedate">\define@key</span>{cuaderno}{font}[]{
   <span class="org-font-latex-sedate">\def\cuadernofont</span>{ <span class="org-font-latex-sedate">\fontspec</span>{#1}}}
 <span class="org-font-latex-sedate">\define@key</span>{cuaderno}{fontfeature}[]{
   <span class="org-font-latex-sedate">\def\cuadernofontsp</span>{ <span class="org-font-latex-sedate">\addfontfeatures</span>{#1}}}
 <span class="org-font-latex-sedate">\define@key</span>{cuaderno}{fontsize}[]{
   <span class="org-font-latex-sedate">\def\cuadernofontsize</span>{#1}}
 <span class="org-font-latex-sedate">\makeatother</span>
</pre>
</div>

 <p>
Y nuestro entorno cuadernillo activa y desactiva el  <i>callback</i> que llama a la función en
Lua, y de paso dota a la caja  <code>rejilla</code> de los renglones del cuaderno, dibujados mediante
 <code>tikz</code>:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate">\NewDocumentEnvironment</span>{cuadernillo}{o}{ <span class="org-comment">%</span>
   <span class="org-font-latex-sedate">\def\cuadernofontsize</span>{}
   <span class="org-font-latex-sedate">\def\cuadernocolor</span>{gray}
   <span class="org-font-latex-sedate">\def\cuadernofont</span>{ <span class="org-font-latex-sedate">\fontspec</span>{qtmerryscript}}
   <span class="org-font-latex-sedate">\def\cuadernofontsp</span>{}
   <span class="org-font-latex-sedate">\IfNoValueF</span>{#1}{ <span class="org-font-latex-sedate">\setkeys</span>{cuaderno}{#1}}
   <span class="org-font-latex-sedate">\cuadernofont\cuadernofontsp</span>
   <span class="org-font-latex-sedate"> <span class="org-keyword">\begin</span></span>{ <span class="org-function-name">mdcuaderno</span>}
     <span class="org-font-latex-sedate">\cuadernofontsize</span>
     <span class="org-font-latex-sedate">\setbox\rejilla</span>= <span class="org-font-latex-sedate">\hbox</span>{ <span class="org-comment">%</span>
       <span class="org-font-latex-sedate"> <span class="org-keyword">\begin</span></span>{ <span class="org-function-name">tikzpicture</span>}[overlay]
         <span class="org-font-latex-sedate">\draw</span>[ <span class="org-font-latex-sedate">\cuadernocolor</span>,opacity=.4] ((- <span class="org-font-latex-sedate">\cuadernomarg</span>,1ex) -- ++( <span class="org-font-latex-sedate">\textwidth</span>+1.4 <span class="org-font-latex-sedate">\cuadernomarg</span>,0);
         <span class="org-font-latex-sedate">\draw</span>[ <span class="org-font-latex-sedate">\cuadernocolor</span>,opacity=.4] ((- <span class="org-font-latex-sedate">\cuadernomarg</span>,0) -- ++( <span class="org-font-latex-sedate">\textwidth</span>+1.4 <span class="org-font-latex-sedate">\cuadernomarg</span>,0);
       <span class="org-font-latex-sedate"> <span class="org-keyword">\end</span></span>{ <span class="org-function-name">tikzpicture</span>}
    }
     <span class="org-font-latex-sedate">\directlua</span>{luatexbase.add_to_callback("post_linebreak_filter", rejilla, "cuaderno")}
}
{ <span class="org-comment">%</span>
     <span class="org-font-latex-sedate">\par</span> <span class="org-font-latex-sedate"> <span class="org-keyword">\end</span></span>{ <span class="org-function-name">mdcuaderno</span>} <span class="org-comment">%</span>
   <span class="org-font-latex-sedate">\directlua</span>{luatexbase.remove_from_callback("post_linebreak_filter", "cuaderno")}
}
</pre>
</div>
</div>
</div>

 <div id="outline-container-org32aeb79" class="outline-2">
 <h2 id="org32aeb79">Una prueba</h2>
 <div class="outline-text-2" id="text-org32aeb79">
 <p>
Podemos hacer una prueba, por ejemplo con la fuente Vladimir Script (el resultado, en la
fig.  <a href="#org368c9a3">1</a>):
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate"> <span class="org-keyword">\begin</span></span>{ <span class="org-function-name">cuadernillo</span>}[font=Vladimir Script,fontfeature={Color=bolibic}]
   <span class="org-font-latex-sedate">\parindent</span>=0pt

 <span class="org-font-latex-sedate">\lipsum</span>[1-2]

 <span class="org-font-latex-sedate"> <span class="org-keyword">\end</span></span>{ <span class="org-function-name">cuadernillo</span>}
</pre>
</div>


 <div id="org368c9a3" class="figure">
 <p> <a href="https://lunotipia.juanmanuelmacias.com/images/cuadernillo-vladimir.png"> <img src="https://lunotipia.juanmanuelmacias.com/images/cuadernillo-vladimir.png" alt="cuadernillo-vladimir.png"></img></a>
</p>
 <p> <span class="figure-number">Figura 1: </span>Primera prueba de nuestro entorno caligráfico con la fuente Vladimir Script</p>
</div>
</div>
</div>

 <div id="outline-container-org9702c6e" class="outline-2">
 <h2 id="org9702c6e">Una quimera</h2>
 <div class="outline-text-2" id="text-org9702c6e">
 <p>
¿Y qué tal una prueba con la escritura griega? Pero hablar de tipografía griega y
caligrafía nos llevará, antes de empezar, a repasar la  <a href="griegos_del_rey.html#ID-64014477-dbc9-4ea1-9aa4-79102bc443fd">historia</a> de la letra impresa en
griego. En efecto, desde el Renacimiento hasta el s.   <font style="font-size:smaller;">XIX</font>, la práctica totalidad
del griego impreso en Europa era de inspiración caligráfica. Lo gracioso es que aquellos
primeros impresores se pensaban que el griego escrito era así, pues tuvieron como
referencia a los escribas griegos migrados a occidente, y para los impresores esos
escribas eran la autoridad competente en la materia. En el fondo no dejaban de ser bellas
florituras bizantinas. No fue hasta el  <font style="font-size:smaller;">XIX</font> cuando Bodoni y, sobre todo, Didot,
pusieron un poco de orden tipográfico. Pero antes, la estrella indiscutible entre todo
aquel bello desvarío de ligaduras y volutas eran los tipos Grecs du Roi que Claude
Garamond fundió en el  <font style="font-size:smaller;">XVI</font> para la Imprenta Real de Francia y las ediciones de Robert
Estienne. En los años 90 del pasado siglo Minaugas Strokis hizo una recreación digital
para la antigua codificación  <code>wingreek</code>, excelente si tenemos en cuenta las limitaciones
técnicas de la época. Gracias a Yannis Haralambous, contamos con una versión de esa fuente
recodificada a Unicode. Por supuesto, carece de ligaduras, pero está tan bien dibujada que
apenas las echamos en falta. En fin, no pudimos resistir la tentación de crear una quimera
histórica con nuestro entorno de estilo cuadernillo: usar como caligrafía una fuente que
se usó siempre en un escenario puramente tipográfico. Con el color del bolígrafo y los
guiones pautados, queda patente la lejana mano del escriba. Cómo quedaría en nuestro
entorno el primer párrafo de la  <i>Anábasis</i> de Jenofonte, lo podemos apreciar en la fig.
 <a href="#org592516a">2</a>.
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate"> <span class="org-keyword">\begin</span></span>{ <span class="org-function-name">cuadernillo</span>}[font=grecsduroiwg,fontfeature={Color=bolibic},fontsize= <span class="org-font-latex-sedate"> <span class="org-type">\large</span></span>]
   <span class="org-font-latex-sedate">\parindent</span>=0pt

Δαρείου καὶ Παρυσάτιδος γίγνονται παῖδες δύο, πρεσβύτερος μὲν Ἀρταξέρξης, νεώτερος δὲ
Κῦρος· ἐπεὶ δὲ ἠσθένει Δαρεῖος καὶ ὑπώπτευε τελευτὴν τοῦ βίου, ἐβούλετο τὼ παῖδε ἀμφοτέρω
παρεῖναι. ὁ μὲν οὖν πρεσβύτερος παρὼν ἐτύγχανε· Κῦρον δὲ μεταπέμπεται ἀπὸ τῆς ἀρχῆς ἧς
αὐτὸν σατράπην ἐποίησε, καὶ στρατηγὸν δὲ αὐτὸν ἀπέδειξε πάντων ὅσοι ἐς Καστωλοῦ πεδίον
ἁθροίζονται. ἀναβαίνει οὖν ὁ Κῦρος λαβὼν Τισσαφέρνην ὡς φίλον, καὶ τῶν Ἑλλήνων ἔχων
ὁπλίτας ἀνέβη τριακοσίους, ἄρχοντα δὲ αὐτῶν Ξενίαν Παρράσιον. ἐπεὶ δὲ ἐτελεύτησε Δαρεῖος
καὶ κατέστη εἰς τὴν βασιλείαν Ἀρταξέρξης, Τισσαφέρνης διαβάλλει τὸν Κῦρον πρὸς τὸν ἀδελφὸν
ὡς ἐπιβουλεύοι αὐτῶι. ὁ δὲ πείθεται καὶ συλλαμβάνει Κῦρον ὡς ἀποκτενῶν· ἡ δὲ μήτηρ
ἐξαιτησαμένη αὐτὸν ἀποπέμπει πάλιν ἐπὶ τὴν ἀρχήν.

 <span class="org-font-latex-sedate"> <span class="org-keyword">\end</span></span>{ <span class="org-function-name">cuadernillo</span>}
</pre>
</div>


 <div id="org592516a" class="figure">
 <p> <a href="https://lunotipia.juanmanuelmacias.com/images/cuadernillo-anabasis1.png"> <img src="https://lunotipia.juanmanuelmacias.com/images/cuadernillo-anabasis1.png" alt="cuadernillo-anabasis1.png"></img></a>
</p>
 <p> <span class="figure-number">Figura 2: </span>Una prueba con la fuente Grecs du Roi</p>
</div>
</div>
</div>

 <div id="outline-container-orgef33783" class="outline-2">
 <h2 id="orgef33783">Esos márgenes, no tan «perfectos»</h2>
 <div class="outline-text-2" id="text-orgef33783">
 <p>
Hay un problema evidente en nuestro entorno cuadernillo de pega, y es que la refinada
justificación de  <span style="font-family:serif;">T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> no casa demasiado bien con la emulación de la letra manuscrita.
Lo primero que se le puede ocurrir a un ojo poco entrenado es optar por la justificación a
la izquierda ( <code>raggedright</code> /  <code>flushleft</code>, en la jerga de  <span style="font-family:serif;">T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> y  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span>); pero,
en contra de lo que puede pensarse, este tipo de justificación nos aleja más que nos
acerca del renglón caligráfico, pues tiende a ser demasiado mecanizado y a producir unas
líneas de ancho muy irregular, sobre todo con palabras largas: si una palabra no cabe en
la línea, simplemente  <span style="font-family:serif;">T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> la manda a la línea siguiente. Cuando escribimos a mano
(algunos, incluso, no hemos olvidado cómo se hacía) tendemos a mantener la uniformidad de
unos márgenes a izquierda y derecha, con mejor o peor éxito. Pero la tendencia a la
uniformidad, haberla, hayla. Basta con echar un ojo a algún manuscrito medieval, como el
que se aprecia en la fig.  <a href="#orgecf5a2d">3</a>. Es decir, lo que podemos hacer es intentar añadir cierta
irregularidad a los márgenes, pero manteniendo un aspecto general de justificación a
izquierda y derecha.
</p>

 <p>
Para los márgenes de la izquierda (y, en parte de la derecha) podríamos aplicar ciertos
valores exagerados de protrusión a algunas letras, mediante el paquete  <code>microtype</code>:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate"> <span class="org-keyword">\usepackage</span></span>{ <span class="org-function-name">microtype</span>}

 <span class="org-font-latex-sedate">\SetProtrusion</span>
   { encoding = {EU1,EU2,TU},
     family   = {grecsduroiwg} }
   {
     - = {500,-100},
     · = { ,700},
     τ = {390, },
     ν = {-90, -650},
     π = {300, },
     ὁ = {-80, -430},
     ο = {10, 30},
     θ = {280, },
     ς = {, -430},
     ρ = {, -530},
     α = {200, -730},
     ε = {, -630},
     μ = {260, -130},
 }
</pre>
</div>


 <div id="orgecf5a2d" class="figure">
 <p> <a href="https://lunotipia.juanmanuelmacias.com/images/cuadernillo-codice.png"> <img src="https://lunotipia.juanmanuelmacias.com/images/cuadernillo-codice.png" alt="cuadernillo-codice.png"></img></a>
</p>
 <p> <span class="figure-number">Figura 3: </span> <i>Heidelbergensis Palatinus gr.</i> 281 (s.  <font style="font-size:smaller;">XI</font>), Biblioteca de la Universidad de Heildelberg (fuente:  <a href="https://www.historyofinformation.com/detail.php?id=2266">https://www.historyofinformation.com/detail.php?id=2266</a>)</p>
</div>

 <p>
En cuanto a la irregularidad de los márgenes derechos, creemos que la opción más realista
sería una justificación total, pero imperfecta. Es decir, un tipo de justificación donde
algunas líneas estuviesen justificadas a ambos márgenes pero otras «casi» justificadas.
Podemos mantener el guionado, pues no nos parece incompatible con el estilo manuscrito. En
la wiki de  <span style="font-family:serif;">LuaT <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> se aporta una sencilla función (igualmente para manipular el nodo
de la línea y asociada al  <i>callback</i>  <code>post_linebreak_filter</code>) para lograr este efecto. La
he modificado un poco, sólo para que se resalten en azul aquellas líneas que están casi
justificadas, pero no llegan por un pequeño margen a la justificación completa (en la fig.
 <a href="#orgcc58244">4</a> se muestra a la izquierda un texto justificado a la izquierda, y a la derecha el
mismo texto con justificación «mixta». Apréciese el contraste):
</p>

 <div class="org-src-container">
 <pre class="src src-lua">w = node.new( <span class="org-string">"whatsit"</span>, <span class="org-string">"pdf_literal"</span>)
w.data =  <span class="org-string">"0 0 1 rg"</span>
z = node.new( <span class="org-string">"whatsit"</span>, <span class="org-string">"pdf_literal"</span>)
z.data =  <span class="org-string">"0 g"</span>
 <span class="org-keyword">function</span>  <span class="org-function-name">marg</span> ( <span class="org-variable-name">head</span>)
    <span class="org-keyword">for</span>  <span class="org-variable-name">linea</span>  <span class="org-keyword">in</span> node.traverse_id(node.id( <span class="org-string">"hlist"</span>), head)  <span class="org-keyword">do</span>
    <span class="org-keyword">if</span> linea.glue_order == 0  <span class="org-keyword">and</span> linea.glue_sign == 1  <span class="org-keyword">and</span> linea.glue_set > .4  <span class="org-keyword">then</span>
         %% para colorear las líneas no justificadas
          <span class="org-keyword">local</span>  <span class="org-variable-name">antes</span>,  <span class="org-variable-name">despues</span> = node.copy(w), node.copy(z)
          linea.head = node.insert_before(linea.head,linea.head,antes)
          linea.head = node.insert_after(linea.head,linea,despues)
          linea.head = node.hpack(linea.head)
           <span class="org-keyword">end</span>
     <span class="org-keyword">end</span>
    <span class="org-keyword">return</span> head
 <span class="org-keyword">end</span>
</pre>
</div>


 <div id="orgcc58244" class="figure">
 <p> <a href="https://lunotipia.juanmanuelmacias.com/images/cuadernillo-mixta.png"> <img src="https://lunotipia.juanmanuelmacias.com/images/cuadernillo-mixta.png" alt="cuadernillo-mixta.png"></img></a>
</p>
 <p> <span class="figure-number">Figura 4: </span>Justificación a la izquierda (izquierda) y justificación «mixta» (derecha)</p>
</div>

 <p>
Así pues, para obtener este efecto en nuestro experimento, podemos hacer una leve
modificación en nuestra función anterior (véase  <a href="#orga330fcb">La función en Lua</a>):
</p>

 <div class="org-src-container">
 <pre class="src src-lua"> <span class="org-keyword">function</span>  <span class="org-function-name">rejilla</span> ( <span class="org-variable-name">h</span>, <span class="org-variable-name">c</span>)
    <span class="org-keyword">for</span>  <span class="org-variable-name">linea</span>  <span class="org-keyword">in</span> node.traverse(h)  <span class="org-keyword">do</span>
    <span class="org-keyword">if</span> linea.id==0  <span class="org-keyword">then</span>
     <span class="org-keyword">if</span> linea.glue_order == 0  <span class="org-keyword">and</span> linea.glue_sign == 1  <span class="org-keyword">and</span> linea.glue_set > .4  <span class="org-keyword">then</span>
    linea.head = node.hpack(linea.head)
     <span class="org-keyword">end</span>
    linea.head=node.insert_before(linea.head,linea.head,node.copy(tex.box.rejilla))
       <span class="org-keyword">end</span>
    <span class="org-keyword">end</span>
    <span class="org-keyword">return</span> h
 <span class="org-keyword">end</span>
</pre>
</div>

 <p>
En la fig.  <a href="#orgfb444fc">5</a> podemos ver la nueva versión obtenida. Y, ya venidos arriba, otro ejemplo con
el primer párrafo de la tercera  <i>Filípica</i>, en la fig.  <a href="#orgc29445a">6</a>.
</p>


 <div id="orgfb444fc" class="figure">
 <p> <a href="https://lunotipia.juanmanuelmacias.com/images/cuadernillo-anabasis-mixta.png"> <img src="https://lunotipia.juanmanuelmacias.com/images/cuadernillo-anabasis-mixta.png" alt="cuadernillo-anabasis-mixta.png"></img></a>
</p>
 <p> <span class="figure-number">Figura 5: </span>Ejemplo con justificación «imperfecta» para el primer párrafo de la  <i>Anábasis</i></p>
</div>


 <div id="orgc29445a" class="figure">
 <p> <a href="https://lunotipia.juanmanuelmacias.com/images/cuadernillo-filipica-mixta.png"> <img src="https://lunotipia.juanmanuelmacias.com/images/cuadernillo-filipica-mixta.png" alt="cuadernillo-filipica-mixta.png"></img></a>
</p>
 <p> <span class="figure-number">Figura 6: </span>Ejemplo con justificación «imperfecta» para el primer párrafo de la tercera  <i>Filípica</i></p>
</div>
</div>
</div>

 <div id="outline-container-org90413f7" class="outline-2">
 <h2 id="org90413f7">∞</h2>
 <div class="outline-text-2" id="text-org90413f7">
 <div>
 <p>Publicado: 10/02/22</p>

 <p>Última actualización: 10/02/22</p>
</div>
 <div>
 <hr></hr> <p>
 <a href="index.html">Índice general</a>
</p>
 <p>
 <a href="acerca-de.html">Acerca de...</a>
</p>
 <p>
Esta obra está bajo una  <a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/">licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional</a>.
</p>
</div>
</div>
</div>
</div>]]></description>
  <link>https://lunotipia.juanmanuelmacias.com/caligrafia_quimeras.html</link>
  <guid isPermaLink="false">https://lunotipia.juanmanuelmacias.com/caligrafia_quimeras.html</guid>
  <pubDate>jue, 10 feb 2022 15:40:00 +0100</pubDate>
</item>
<item>
  <title>Los Griegos del Rey y la mano del escriba</title>
  <description><![CDATA[<div id="content" class="content">

 <form>
 <p style="text-align: center;"> <button formaction="https://maciaschain.gitlab.io/lunotipia/pdf/griegos_del_rey.pdf"> <font size="2">Descargar esta entrada en formato PDF</font></button></p>
</form>

 <div id="outline-container-org33fd742" class="outline-2">
 <h2 id="org33fd742">Una historia para impacientes</h2>
 <div class="outline-text-2" id="text-org33fd742">
 <p>
El paso del siglo  <font style="font-size:smaller;">XVIII</font> al  <font style="font-size:smaller;">XIX</font> representó un período de una especial trascendencia para la historia de la tipografía
griega —tan laberíntica, tan difícil casi siempre— en el llamado Occidente culto.  En diferentes
puntos de la impresora Europa, en efecto, comenzaban a soplar aires nuevos, inusitadas y audaces tentativas de diseño
aquí y allá, proceso este que culminó con los tipos griegos ideados por el gran Firmin Didot: inspiradísima propuesta
para definir unos rotundos antes y después. A la par que nacían los estudios indoeuropeos, y en las ventanas de los gabinetes
filológicos de Alemania, Francia o Inglaterra llovía generosamente para subrayar el acontecimiento, la venerable letra
griega entraba en una tardía adolescencia gracias a los moldes de Didot, de cuerpo racional y pies alados.
</p>

 <p>
La magia del impresor francés operaba en esta nueva tipografía a varios niveles. Por un lado, los glifos griegos
parecían encontrar por fin su lugar y su acomodo junto a los latinos, con los que nunca había sido fácil la convivencia
cuando ambos tenían que cohabitar en el blanco de la página. Y esto lo consiguió Didot no a costa de una asimilación de
la letra griega a la latina, como se hace tantas veces ahora, por desgracia, sino mediante un delicado juego de
cromatismos donde las dos escrituras podían mantener su personalidad sin que el lector tuviese la sensación de estar
ante distintas familias de letras. Pero lo importante es que tampoco se le ocultaba el (a nuestro juicio) necesario
contraste que ha de darse en la combinación del griego con una lengua escrita en alfabeto latino. Y todo esto sin
cambios bruscos de temperatura o paisaje: el trazo de Didot, con su punto de irreal, o incluso antinatural para las
rutinas caligráficas, subyacía por debajo aportando su coherencia al conjunto.
</p>

 <p>
La novedad tipográfica fue un éxito rotundo y por ella habría de transitar, como llevados en volandas, toda una legión de
ojos lectores o estudiosos. Se convirtió también en la indiscutible emperatriz de las monotipias, con la llegada de
estas máquinas, a la hora de imprimir en griego. Es más: la tradición impresora de Grecia, que tenía el buen criterio de
beber a menudo de la tradición gala, convirtió a la Didot griega en su fuente «nacional», hasta tal punto que a
cualquier texto escrito en Didot se le ha venido conociendo en Grecia como  <i>aplá</i> («sencillo», «simple»), una manera de
afirmar su carácter estándar. Y no es para menos, pues con esta nueva letra la escritura griega recibiría por fin
(nunca es tarde cuando la dicha es buena) su bautizo tipográfico. Y es que hasta entonces cualquier representación del
griego en un libro había sido eminentemente caligráfica. Hagamos un breve repaso a esta historia, a la manera de un parpadeo.
</p>

 <p>
Una historia, por supuesto, que se remonta a la mano del escriba, cuya sombra nunca dejó de estar presente con el paso
de los siglos, como una especie de directriz de fondo. Bien es cierto que, en los tiempos incipientes de la impresión de
textos griegos, se ensayó una tradición heterodoxa a dicha directriz, una suerte de amago tipográfico que buscaba a toda
costa la individualización del glifo y procuraba evitar la floritura bizantina. La muerte de esta primera vía no fue en
vano, ya que en sus postrimerías nos legó un espécimen tan ilustre como fue la  <i>Biblia Políglota Complutense</i> (1512),
editada por Demetrios Doukas con los tipos griegos cortados por Arnaldo Guillén de Brocar. De ellos podemos encontrar
una excelente recreación digital en la fuente  <a href="http://greekfontsociety-gfs.gr/typefaces/16th_century">GFS Complutum</a>, a cargo de Giorgos D. Matthiopoulos y auspiciada por la
siempre benemérita Sociedad de Fuentes Griega (fig.  <a href="#org6be7167">1</a>).
</p>


 <div id="org6be7167" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/seferis_complutum.png" alt="seferis_complutum.png"></img></p>
 <p> <span class="figure-number">Figura 1: </span>Un poema de Seferis compuesto en LuaTeX con GFS Complutum</p>
</div>

 <p>
Al margen de esta tentativa, tal vez extinguida demasiado pronto, los más de los impresores europeos acabaron
sucumbiendo ante la cursiva bizantina. Aldo Manuzio no tardó en tomar como autoridad tipográfica la inquieta mano de los
escribas griegos migrados a occidente. La imprenta Aldina sentó, por tanto, las ilustres bases. Pero no fue hasta 1540
cuando Claude Garamond dio en abrir de par en par todas las ventanas de la locura (bellísima y seductora locura, por
otra parte) con sus tipos Les Grecs du Roi, fundidos para las ediciones de Robert Estienne en la Imprenta Real de
Francia. Los griegos del rey: no podía llevar nombre más caprichoso aquel asombroso delirio bizantino de Garamond, con
sus innumerables, alambicadas, casi siempre desquiciadas ligaduras, ideadas para poner a prueba la paciencia o la salud
mental de los cajistas. Por increíble que nos pueda parecer hoy día (imaginemos simplemente una edición crítica
compuesta con Grecs du Roi) esa letra fue el estilo rector de toda la tradición libresca del griego en Europa hasta bien
entrado el siglo  <font style="font-size:smaller;">XVIII</font>. Y probablemente Garamond hubiese recibido con gran complacencia la actual tecnología
OpenType de las fuentes digitales, una de cuyas características (la más vistosa pero también la que con menos tino se
usa, casi hasta el empalago) es la que otorga a los glifos o a grupos de glifos determinados la propiedad de mudar de
forma según el contexto. A la espera de que llegue algún día la definitiva versión OpenType de Grecs du Roi, la que haga
de verdad justicia a todos sus desvaríos y rarezas, tenemos que conformarnos con la versión que hizo en los años 90
(época pre Unicode) el lituano Mindaugas Strokis, para la vieja codificación Win Greek. La limitación del formato, no
obstante, y gracias a la pericia diseñadora de Strokis, que jugaba sutil y acertadamente con los  <i>kerning</i>, no fue
obstáculo para que este pequeño vástago digital ofreciese un aceptable resultado, capaz de evocar en el lector un poco
(siquiera un poco) del efecto que nos producen los griegos del rey originales. En años recientes, Yannis Haralambous  <a href="http://www.polytoniko.org/GrecsDuRoiUnicode.ttf">se
tomó el tiempo de recodificar esta fuente a Unicode</a>.
</p>


 <div id="orgc49516d" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/grecs-878x1024.png" alt="grecs-878x1024.png"></img></p>
 <p> <span class="figure-number">Figura 2: </span>El mismo poema de Seferis, esta vez con la fuente Grecs du Roi de M. Strockis, en la recodificación de Y. Haralambous</p>
</div>

 <p>
El siglo  <font style="font-size:smaller;">XVIII</font> marcó, sin embargo, el comienzo de la decadencia para el estilo propiciado por Garamond. Seguía, por
supuesto, el tono caligráfico de las letras, pero quizás el ojo europeo empezaba a acusar ya cierto cansancio ante las
volutas que aventara el ilustre tipógrafo francés. En Inglaterra, por ejemplo, cuna de tantos escepticismos y
descreimientos, se ensayaron con mayor o menor fortuna propuestas en esta nueva vía, que buscaba liberar a la escritura
griega del ovillo de ligaduras en que se había enredado, y conservar sólo las más básicas, como las ligaduras de ciertos
diptongos (ου, ει) o dígrafos (λλ). Podemos citar ejemplos como los de los tipos griegos cortados por John Baskerville
(1706-1775), que no tuvieron el merecido éxito, tal vez por la estrechez de su caja; y, sobre todo, los que creó
Alexander Wilson (1714-1786) para las ediciones homéricas que editaron los hermanos Andrew y Robert Foulis (1756-8), con
el auspicio de la Universidad de Glasgow. De los tipos de Baskerville, por cierto, tenemos otra gran recreación digital
en la GFS Baskerville de la Sociedad de Fuentes Griega (fig.  <a href="#orgc66ae9b">4</a>).
</p>


 <div id="org3a29174" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/iliada_foulis_detalle.png" alt="iliada_foulis_detalle.png"></img></p>
 <p> <span class="figure-number">Figura 3: </span>Un detalle de la  <i>Ilíada</i> de los hermanos Foulis con los tipos cortados por A. Wilson</p>
</div>


 <div id="orgc66ae9b" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/aretor.png" alt="aretor.png"></img></p>
 <p> <span class="figure-number">Figura 4: </span>GFS Baskerville con ligaduras OpenType (de mi composición tipográfica de la edición crítica de un un tratado del rétor Alejandro)</p>
</div>
</div>
</div>

 <div id="outline-container-orgd994987" class="outline-2">
 <h2 id="orgd994987">Estrambote</h2>
 <div class="outline-text-2" id="text-orgd994987">
 <p>
Tras este fugaz recorrido histórico de lo caligráfico a lo tipográfico para impacientes, confesaré algo. Aunque fiel
amante y esposo del estilo Didot -  <i>Aplá</i>, siempre he querido componer un libro en Grecs du Roi. No sé cuál:
probablemente su título esté aguardando todavía la oportunidad, en la sombra. O no se haya siquiera escrito
aún. Quizás volver a esos griegos del rey como un íntimo aserto de contradicción, o porque la mano bizantina del escriba
sigue siendo larga y poderosa. Y es que es muy grato comprobar cómo hasta la tipografía, que es mesura, orden,
proporción y matemática, encuentra sus particulares contradicciones cuando quiere regresar a esa mano. Por contra, el
plomo del fundidor (o las curvas Bézier del fundidor digital) ha de individualizar cada letra y colocarla en línea una
junto a otra, a la manera de los edificios de la república perfecta. Pero la mano del escriba, como tantas cosas
mundanas, como la poesía, está hecha de tiempo. Por eso es incomprensible. Por eso nos atrae.
</p>


 <div id="org457512e" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/agraecum.png" alt="agraecum.png"></img></p>
 <p> <span class="figure-number">Figura 5: </span> <i>Alphabetum Graecum</i>, publicado por Robert Estienne en 1540, con Les Grecs du Roi (fuente:  <code>archive.org</code>)</p>
</div>
</div>
</div>

 <div id="outline-container-orge86cffa" class="outline-2">
 <h2 id="orge86cffa">∞</h2>
 <div class="outline-text-2" id="text-orge86cffa">
 <div>
 <p>Publicado: 31/08/19 - 19:12</p>

 <p>Última actualización: 31/08/19 - 19:12</p>
</div>
 <div>
 <hr></hr> <p>
 <a href="index.html">Índice general</a>
</p>
 <p>
 <a href="acerca-de.html">Acerca de...</a>
</p>
 <p>
Esta obra está bajo una  <a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/">licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional</a>.
</p>
</div>
</div>
</div>
</div>]]></description>
  <link>https://lunotipia.juanmanuelmacias.com/griegos_del_rey.html</link>
  <guid isPermaLink="false">https://lunotipia.juanmanuelmacias.com/griegos_del_rey.html</guid>
  <pubDate>jue, 10 feb 2022 14:59:00 +0100</pubDate>
</item>
<item>
  <title>Composición tipográfica del Diccionario Hispánico de la Tradición Clásica: cómo se hizo</title>
  <description><![CDATA[<div id="content" class="content">

 <p>
En este vídeo os muestro, de manera general, cómo llevé a cabo la composición tipográfica
y maquetación del Diccionario Hispánico de la Tradición Clásica, obra de referencia
dirigida por Francisco García Jurado y publicada por la editorial Guillermo Escolar. Os
invito a un recorrido por todos los elementos implicados en el proceso de producción:
Emacs/Org Mode, LaTeX, Org Publish, BibLaTeX, etc.
</p>

 <p>
( <i>click</i> en la captura del vídeo para verlo en la instancia de Invidious  <a href="https://inv.cthd.icu/">https://inv.cthd.icu/</a>)
</p>


 <div id="org24ddb12" class="figure">
 <p> <a href="https://inv.cthd.icu/watch?v=JLDiU6n2GCU" target="_blank"> <img src="https://lunotipia.juanmanuelmacias.com/images/video-dhtc-captura.png" alt="video-dhtc-captura.png" target="_blank"></img></a>
</p>
</div>


 <div id="outline-container-org337a6f5" class="outline-2">
 <h2 id="org337a6f5">∞</h2>
 <div class="outline-text-2" id="text-org337a6f5">
 <div>
 <p>Publicado: 15/11/21</p>

 <p>Última actualización: 10/02/22</p>
</div>
 <div>
 <hr></hr> <p>
 <a href="index.html">Índice general</a>
</p>
 <p>
 <a href="acerca-de.html">Acerca de...</a>
</p>
 <p>
Esta obra está bajo una  <a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/">licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional</a>.
</p>
</div>
</div>
</div>
</div>]]></description>
  <link>https://lunotipia.juanmanuelmacias.com/video_dhtc.html</link>
  <guid isPermaLink="false">https://lunotipia.juanmanuelmacias.com/video_dhtc.html</guid>
  <pubDate>jue, 10 feb 2022 14:59:00 +0100</pubDate>
</item>
<item>
  <title>Representar gráficamente la línea base, la altura &quot;x&quot; y la altura de las mayúsculas con LuaTeX</title>
  <description><![CDATA[<div id="content" class="content">

 <p>
Puede haber ocasiones en que necesitemos representar gráficamente ciertas rejillas de
escritura en nuestro texto, como por ejemplo el trazo de las líneas base. En el ecosistema
 <span style="font-family:serif;">T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> hay muchas y variadas formas de lograr esto, si bien he encontrado una
especialmente sencilla para  <span style="font-family:serif;">LuaT <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> mediante una simple función en Lua anclada al
 <i>callback</i> que recoge los procesos destinados a actuar justo después del corte de líneas
( <code>post_line_break_filter</code>). En el ejemplo que vamos a ver no sólo dibujaremos la línea
base sino también la línea de la altura «x» de la fuente actual y la línea de la altura de
las mayúsculas, cada una en un color. Y, posteriormente, definiremos un entorno que tenga
como argumentos obligatorios el cuerpo de letra e interlineado y como argumento opcional
la familia de la fuente a representar. Vamos a necesitar  <code>tikz</code> y  <code>xcolor</code>, así como
 <code>fontspec</code> para la definición de fuentes y  <code>xparse</code> para facilitar nustra definición del
entorno, de modo que procedemos a cargarlos sin demora:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate"> <span class="org-keyword">\usepackage</span></span>{ <span class="org-function-name">tikz,xcolor</span>}
 <span class="org-font-latex-sedate"> <span class="org-keyword">\usepackage</span></span>{ <span class="org-function-name">xparse</span>}
 <span class="org-font-latex-sedate"> <span class="org-keyword">\usepackage</span></span>{ <span class="org-function-name">fontspec</span>}
</pre>
</div>

 <p>
A continuación definiremos un par de comandos, por comodidad, para la altura «x» y para la
altura de la mayúsculas. Este último, tal vez y dependiendo de la fuente, haya que
redefinirlo al vuelo. La altura «x», naturalmente, siempre será el valor de 1ex:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate"> <span class="org-keyword">\newcommand</span></span>{ <span class="org-font-latex-sedate"> <span class="org-function-name">\alturax</span></span>}{ <span class="org-function-name">1ex</span>}
 <span class="org-font-latex-sedate"> <span class="org-keyword">\newcommand</span></span>{ <span class="org-font-latex-sedate"> <span class="org-function-name">\alturamay</span></span>}{ <span class="org-function-name">1.6ex</span>}
</pre>
</div>

 <p>
Y nos queda por definir una caja, donde encerrar el contenido gráfico:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate">\newbox\rejillas</span>
</pre>
</div>

 <p>
Le toca el turno a nuestra función en Lua para  <code>post_line_break_filter</code>. La podemos
incluir simplemente dentro de la primitiva  <code>directlua</code>:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate">\directlua</span>{
rejilla = function(head)
      for linea in node.traverse_id(node.id("hlist"), head) do
      node.insert_after(linea.list, node.tail(linea.list),node.copy(tex.box.rejillas))
      end
         return head
end
}
</pre>
</div>

 <p>
Y, finalmente, nuestro entorno, definido con la siempre cómoda sintaxis de  <code>xparse</code>
(recordemos que nuestro argumento opcional será la familia de la fuente):
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate">\NewDocumentEnvironment</span>{rejilla}{o m m}{ <span class="org-comment">%</span>
 <span class="org-font-latex-sedate">\IfNoValueF</span>{#1}{ <span class="org-font-latex-sedate">\fontspec</span>{#1}}
 <span class="org-font-latex-sedate">\fontsize</span>{#2}{#3} <span class="org-font-latex-sedate">\selectfont</span>
 <span class="org-font-latex-sedate">\setbox\rejillas</span>= <span class="org-font-latex-sedate">\hbox</span>{ <span class="org-comment">%</span>
 <span class="org-font-latex-sedate">\fontsize</span>{#2}{#3} <span class="org-font-latex-sedate">\selectfont</span>
   <span class="org-font-latex-sedate"> <span class="org-keyword">\begin</span></span>{ <span class="org-function-name">tikzpicture</span>}[overlay]
   <span class="org-font-latex-sedate">\draw</span>[teal!60] ((- <span class="org-font-latex-sedate">\textwidth</span>, <span class="org-font-latex-sedate">\alturamay</span>) -- ++( <span class="org-font-latex-sedate">\textwidth</span>,0);
   <span class="org-font-latex-sedate">\draw</span>[red!60] ((- <span class="org-font-latex-sedate">\textwidth</span>, <span class="org-font-latex-sedate">\alturax</span>) -- ++( <span class="org-font-latex-sedate">\textwidth</span>,0);
   <span class="org-font-latex-sedate">\draw</span>[black!35] ((- <span class="org-font-latex-sedate">\textwidth</span>,0) -- ++( <span class="org-font-latex-sedate">\textwidth</span>,0);
 <span class="org-font-latex-sedate"> <span class="org-keyword">\end</span></span>{ <span class="org-function-name">tikzpicture</span>}}
 <span class="org-font-latex-sedate">\directlua</span>{luatexbase.add_to_callback("post_linebreak_filter", rejilla, "rejilla")}
}
{ <span class="org-comment">%</span>
 <span class="org-font-latex-sedate"> <span class="org-keyword">\normalfont</span></span> <span class="org-font-latex-sedate">\par</span> <span class="org-comment">%</span>
 <span class="org-font-latex-sedate">\directlua</span>{luatexbase.remove_from_callback("post_linebreak_filter", "rejilla")}
}
</pre>
</div>

 <p>
Unos ejemplos de uso (el resultado de la compilación en fig.  <a href="#org63f7857">1</a>):
</p>

 <div class="org-src-container">
 <pre class="src src-latex">Adobe Garamond + Minio Pro + Sabon

 <span class="org-font-latex-sedate"> <span class="org-keyword">\begin</span></span>{ <span class="org-function-name">rejilla</span>}{20pt}{24pt}
  { <span class="org-font-latex-sedate">\fontspec</span>{Adobe Garamond}Lorem ipsum}
  { <span class="org-font-latex-sedate">\fontspec</span>{Minion Pro}Lorem ipsum}
  { <span class="org-font-latex-sedate">\fontspec</span>{Sabon LT Std}Lorem ipsum}
 <span class="org-font-latex-sedate"> <span class="org-keyword">\end</span></span>{ <span class="org-function-name">rejilla</span>}

 <span class="org-font-latex-sedate">\bigskip</span>

 <span class="org-font-latex-sedate"> <span class="org-keyword">\renewcommand</span></span>{ <span class="org-font-latex-sedate"> <span class="org-function-name">\alturamay</span></span>}{ <span class="org-function-name">1.5ex</span>}

TeX Gyre Pagella

 <span class="org-font-latex-sedate"> <span class="org-keyword">\begin</span></span>{ <span class="org-function-name">rejilla</span>}[TeX Gyre Pagella]{20pt}{24pt}
  Lorem ipsum dolor sit amet

  LOREM IPSUM DOLOR SIT AMET
 <span class="org-font-latex-sedate"> <span class="org-keyword">\end</span></span>{ <span class="org-function-name">rejilla</span>}

 <span class="org-font-latex-sedate">\bigskip</span>

Optima

 <span class="org-font-latex-sedate"> <span class="org-keyword">\begin</span></span>{ <span class="org-function-name">rejilla</span>}[Optima LT Std]{20pt}{24pt}
  Lorem ipsum dolor sit amet

  LOREM IPSUM DOLOR SIT AMET
 <span class="org-font-latex-sedate"> <span class="org-keyword">\end</span></span>{ <span class="org-function-name">rejilla</span>}
</pre>
</div>



 <div id="org63f7857" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/rejilla.png" alt="rejilla.png"></img></p>
 <p> <span class="figure-number">Figura 1: </span>Varios ejemplos con la representación gráfica de la línea base, la altura «x» y la altura de mayúsculas</p>
</div>


 <div id="outline-container-org0794e65" class="outline-2">
 <h2 id="org0794e65">∞</h2>
 <div class="outline-text-2" id="text-org0794e65">
 <div>
 <p>Publicado: 22/01/22</p>

 <p>Última actualización: 22/01/22</p>
</div>
 <div>
 <hr></hr> <p>
 <a href="index.html">Índice general</a>
</p>
 <p>
 <a href="acerca-de.html">Acerca de...</a>
</p>
 <p>
Esta obra está bajo una  <a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/">licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional</a>.
</p>
</div>
</div>
</div>
</div>]]></description>
  <link>https://lunotipia.juanmanuelmacias.com/rejillas_lua.html</link>
  <guid isPermaLink="false">https://lunotipia.juanmanuelmacias.com/rejillas_lua.html</guid>
  <pubDate>sáb, 22 ene 2022 14:09:00 +0100</pubDate>
</item>
<item>
  <title>De calles tipográficas y ojos humanos</title>
  <description><![CDATA[<div id="content" class="content">

 <form>
 <p style="text-align: center;"> <button formaction="https://maciaschain.gitlab.io/lunotipia/pdf/calles.pdf"> <font size="2">Descargar esta entrada en formato PDF</font></button></p>
</form>


 <p>
Leía hace poco sobre los canales marcianos, que tantas ilusiones ópticas suscitaban antaño, y no pude resistirme a
pensar en otros discurrires bastante menos esperanzadores e ilusionantes, pero que juegan en la misma liga de la
percepción visual humana. Me acordé sin remedio de las calles (en ocasiones avenidas) que de vez en cuando saltan entre
los párrafos de una página impresa y agreden sin compasión al lector. Sobre esos especímenes, y su curiosa naturaleza
díscola, diré unos cuantos comentarios apresurados.
</p>

 <p>
Para empezar, algunos correctores de estilo parecen acusar un celo desmedido en la búsqueda y captura de las calles
tipográficas. Persiguen su trofeo, lápiz rector en mano, como quien se entretiene en resolver una sopa de letras.
Realmente, las calles que deben descubrirse no son el problema, ni casi nunca vale la pena penalizarlas. Las peligrosas
son las que ofenden de una manera palmaria, y que parecen estar construídas adrede al mostrar una cierta constante en su
trazo y disposición. Se ven bien a simple vista, sobre todo si alejamos la página o miramos con el rabillo del ojo.
Obtenemos la sensación de que el párrafo (que debe ser siempre un gris plano) está quebrado en dos o más pedazos de
caprichosa geometría.
</p>

 <p>
Segundo. Un sistema de composición digital avanzado como  <span style="font-family:serif;">T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> , gracias a su algoritmo de corte de líneas y
justificación (que, por otra parte, tomó prestado e implementó Adobe en InDesign), e incluso gracias
también a las últimas propiedades de expansión y contracción horizontal añadidas por  <span style="font-family:serif;">pdfT <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> y  <span style="font-family:serif;">LuaT <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span>, no
tiende a producir demasiadas calles de este estilo. Pero —¡ay!— haberlas, haylas. Y es que aquí llegamos al meollo
del asunto. La calle tipográfica agresiva no tiene tanto que ver con un espaciado poco homogéneo entre palabras cuanto
con la confluencia azarosa, pero fatal, de una serie de factores: el tipo de letra, la intensidad del trazo y, sobre
todo, que tales o cuales palabras hayan acabado a tal o cual altura y posición del párrafo. Es imprevisible, como
imprevisibles son las formas que en ocasiones vemos en las nubes. La diferencia es que las nubes pasan, cambian, se
desvanecen. La letra impresa queda allí para siempre, o mientras el papel de la página perdure.
</p>

 <p>
Visto lo cual, podemos preguntarnos: ¿es posible un nuevo algoritmo que busque, identifique y elimine las calles? En la
teoría, sí. Y dentro del ecosistema  <span style="font-family:serif;">T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> ya se ha experimentado un poco con ello. Pero las conclusiones son
desalentadoras. Si bien los nuevos algoritmos parecen realizar razonablemente bien su cometido, necesitamos una nueva
estirpe de computadoras más potentes y más rápidas, pues en el estado de cosas actual la tarea puede llevar horas de
proceso. Y habrá que ver si los resultados son mínimamente satisfactorios.
</p>

 <p>
En cuanto a la detección de calles, la situación no es tampoco muy halagüeña que se diga. El paquete  <code>impnattypo</code>, por
ejemplo, entre las variadas y utilísimas funcionalidades que aporta para la microedición, incluye una en concreto que
considero tan meritoria como ineficaz. La opción  <code>rivers</code>, en efecto (y sólo si compilamos en  <span style="font-family:serif;">LuaL <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> y en modo
«borrador»), nos marcará en un color determinado las calles a erradicar en nuestro libro. El problema es que el algoritmo
de este paquete resulta un tanto paranoico, y para él todo son calles. Para empeorarlo, la manera en que lo resalta hace
bastante difícil cribar los hallazgos penalizables de los falsos positivos.
</p>

 <p>
Y volvemos a Marte y a sus canales. Si Bradbury escribió que los marcianos que buscamos en Marte, al cabo, somos
nosotros, el problema de las calles tipográficas también está en nosotros, los lectores. Y en nuestra percepción visual
y nuestra perspectiva. La tipografía digital es maravillosa y un gran logro científico. Pero ni es mágica ni hace
milagros. Ni tampoco tiene por qué ni es su cometido. La tipografía digital es una parte del humanismo. Una mente humana
programa el objeto que llamamos libro, y que no está destinado a otros ojos sino a los humanos. Todo lo que no se mueva
en esos parámetros implica caer en la superchería y en emplear el adjetivo «digital» de manera supersticiosa y vacua.
</p>

 <p>
Por último. Bien, nuestro ojo humano, demasiado humano, ha encontrado la insidiosa calle (o viceversa). ¿Cómo nos
deshacemos de ella? En TeX casi siempre basta con introducir un espacio de no corte tras la palabra correcta, para que
el párrafo se reconstruya y se esfume la ilusión óptica. Si eso no funciona, cualquier otra solución que implique una
alteración en la morfología de la fuente (espacio entre letras, espacio entre palabras, variar los valores máximos
permitidos de escalado horizontal tanto en la expansión como en la contracción) ha de llevarse a cabo con sumo cuidado y
tino, si no queremos que el remedio sea peor que la enfermedad. Por más que nos pueda parecer que no hay nada más feo
que esas malas calles.
</p>


 <div id="outline-container-org0323f98" class="outline-2">
 <h2 id="org0323f98">∞</h2>
 <div class="outline-text-2" id="text-org0323f98">
 <div>
 <p>Publicado: 11/11/19</p>

 <p>Última actualización: 21/01/22</p>
</div>
 <div>
 <hr></hr> <p>
 <a href="index.html">Índice general</a>
</p>
 <p>
 <a href="acerca-de.html">Acerca de...</a>
</p>
 <p>
Esta obra está bajo una  <a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/">licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional</a>.
</p>
</div>
</div>
</div>
</div>]]></description>
  <link>https://lunotipia.juanmanuelmacias.com/calles.html</link>
  <guid isPermaLink="false">https://lunotipia.juanmanuelmacias.com/calles.html</guid>
  <pubDate>vie, 21 ene 2022 22:04:00 +0100</pubDate>
</item>
<item>
  <title>Modificando un campo de BibLaTeX con Lua en LuaTeX</title>
  <description><![CDATA[<div id="content" class="content">

 <p>
Un nuevo vídeo con un pequeño caso práctico, donde veremos cómo modificar el contenido de
ciertos campos de un archivo  <code>*.bib</code> de bibLaTeX (por ejemplo, para que los numerales
romanos se impriman siempre en versalitas) mediante una muy sencilla función de Lua en
LuaTeX.
</p>

 <div class="org-center">
 <iframe width="560" height="315" src="https://www.youtube.com/embed/h7gsqTQq8VU" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"></iframe>
</div>

 <div id="outline-container-orgf10d7a2" class="outline-2">
 <h2 id="orgf10d7a2">∞</h2>
 <div class="outline-text-2" id="text-orgf10d7a2">
 <div>
 <p>Publicado: 12/12/20</p>

 <p>Última actualización: 21/01/22</p>
</div>
 <div>
 <hr></hr> <p>
 <a href="index.html">Índice general</a>
</p>
 <p>
 <a href="acerca-de.html">Acerca de...</a>
</p>
 <p>
Esta obra está bajo una  <a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/">licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional</a>.
</p>
</div>
</div>
</div>
</div>]]></description>
  <link>https://lunotipia.juanmanuelmacias.com/campo_biblatex_lua.html</link>
  <guid isPermaLink="false">https://lunotipia.juanmanuelmacias.com/campo_biblatex_lua.html</guid>
  <pubDate>vie, 21 ene 2022 22:04:00 +0100</pubDate>
</item>
<item>
  <title>Corrección cursiva en TeX</title>
  <description><![CDATA[<div id="content" class="content">

 <p>
Cuando en un texto se combina cursiva con redonda, conviene tener ciertos cuidados. Sobre todo si la palabra cursiva
  termina con una letra de ascendentes pronunciados (como la f) y le sigue un punto y coma, un apóstrofe o un paréntesis
  de cierre. En cualquier caso, es el viejo escenario del elemento que se inclina hacia otro elemento recto, y el
  segundo necesita que corra el aire entre ambos. Además de en la vida real, se ven no pocas atrocidades tipográficas en
  este sentido (un ejemplo, en la fig.  <a href="#org065bae3">1</a>). Pero, claro, como hoy lo que prima es el «diseño gráfico» sobre
  la tipografía, pues pasa lo que pasa.
</p>


 <div id="org065bae3" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/corrcursiva1.png" alt="corrcursiva1.png"></img></p>
 <p> <span class="figure-number">Figura 1: </span>Dos ejemplos de deficiente composición con cursiva y redonda en las revistas  <i>Cuadernos de filología clásica</i> (arriba) y  <i>Estudios clásicos</i> (abajo)</p>
</div>

 <p>
En este tipo de contextos, TeX aplica automáticamente (y por defecto) la llamada «corrección cursiva» («italic
correction»), que no es más que un  <i>kerning</i> extra entre el útimo carácter en cursiva dependiendo del carácter en
redonda que le sigue. En las versiones de última generación, XeTeX y LuaTeX, la corrección se puede gestionar, activar o
desactivar a voluntad con el paquete fontspec y la etiqueta +/- itlc. Aquí unos ejemplos ilustrativos con la fuente
Minion Pro, donde he definido dos familias de Minion, una con corrección cursiva y la otra sin ella. Lo preferible, por
supuesto, es tenerla siempre activada para que actúe de oficio:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate">\newfontfamily\corrit</span>{Minion Pro}
   <span class="org-font-latex-sedate">\newfontfamily\nocorrit</span>[RawFeature=-itlc]{Minion Pro}
</pre>
</div>

 <p>
Y aplicamos, entonces, los valores en el siguiente ejemplo (resultado de la compilación en la fig.  <a href="#org770713a">2</a>):
</p>

 <div class="org-src-container">
 <pre class="src src-latex">{ <span class="org-font-latex-sedate">\nocorrit</span>
         <span class="org-font-latex-sedate"> <span class="org-keyword">\textit</span></span>{ <span class="org-font-latex-italic">new deal</span>};  <span class="org-font-latex-sedate"> <span class="org-keyword">\textit</span></span>{ <span class="org-font-latex-italic">new deal</span>}!}

{ <span class="org-font-latex-sedate">\corrit</span>
         <span class="org-font-latex-sedate"> <span class="org-keyword">\textit</span></span>{ <span class="org-font-latex-italic">new deal</span>};  <span class="org-font-latex-sedate"> <span class="org-keyword">\textit</span></span>{ <span class="org-font-latex-italic">new deal</span>}!}


{ <span class="org-font-latex-sedate">\nocorrit</span>
         <span class="org-font-latex-sedate"> <span class="org-keyword">\textit</span></span>{ <span class="org-font-latex-italic">Strogoff</span>} puede}

{ <span class="org-font-latex-sedate">\corrit</span>
         <span class="org-font-latex-sedate"> <span class="org-keyword">\textit</span></span>{ <span class="org-font-latex-italic">Strogoff</span>} puede}


{ <span class="org-font-latex-sedate">\nocorrit</span>
        ( <span class="org-font-latex-sedate"> <span class="org-keyword">\textit</span></span>{ <span class="org-font-latex-italic">Strogoff</span>})}

{ <span class="org-font-latex-sedate">\corrit</span>
        ( <span class="org-font-latex-sedate"> <span class="org-keyword">\textit</span></span>{ <span class="org-font-latex-italic">Strogoff</span>})}
</pre>
</div>


 <div id="org770713a" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/corrcursiva2.png" alt="corrcursiva2.png"></img></p>
 <p> <span class="figure-number">Figura 2: </span>Resultado de la compilación</p>
</div>


 <div id="outline-container-org121a3cc" class="outline-2">
 <h2 id="org121a3cc">∞</h2>
 <div class="outline-text-2" id="text-org121a3cc">
 <div>
 <p>Publicado: 04/10/19</p>

 <p>Última actualización: 21/01/22</p>
</div>
 <div>
 <hr></hr> <p>
 <a href="index.html">Índice general</a>
</p>
 <p>
 <a href="acerca-de.html">Acerca de...</a>
</p>
 <p>
Esta obra está bajo una  <a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/">licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional</a>.
</p>
</div>
</div>
</div>
</div>]]></description>
  <link>https://lunotipia.juanmanuelmacias.com/corrcursiva.html</link>
  <guid isPermaLink="false">https://lunotipia.juanmanuelmacias.com/corrcursiva.html</guid>
  <pubDate>vie, 21 ene 2022 22:04:00 +0100</pubDate>
</item>
<item>
  <title>Definiendo y modificando estilos de sección y títulos en LaTeX (vídeo tutorial)</title>
  <description><![CDATA[<div id="content" class="content">

 <p>
En este breve vídeo tutorial damos algunos consejos sobre cómo definir o redefinir el
formato de los títulos, secciones, etc. el  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> mediante el excelente paquete
 <code>titlesec</code> de Javier Bezos.
</p>

 <div class="org-center">
 <iframe src="https://player.vimeo.com/video/471743182" width="640" height="360" frameborder="0" allow="autoplay; fullscreen"></iframe>
 <p> <a href="https://vimeo.com/471743182">Definiendo y modificando estilos de sección y títulos en LaTeX</a> from  <a href="https://vimeo.com/user70979426">Juan Manuel Macías Chaín</a> on  <a href="https://vimeo.com">Vimeo</a>.</p>
</div>


 <div id="outline-container-org65588b6" class="outline-2">
 <h2 id="org65588b6">∞</h2>
 <div class="outline-text-2" id="text-org65588b6">
 <div>
 <p>Publicado: 14/11/20</p>

 <p>Última actualización: 21/01/22</p>
</div>
 <div>
 <hr></hr> <p>
 <a href="index.html">Índice general</a>
</p>
 <p>
 <a href="acerca-de.html">Acerca de...</a>
</p>
 <p>
Esta obra está bajo una  <a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/">licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional</a>.
</p>
</div>
</div>
</div>
</div>]]></description>
  <link>https://lunotipia.juanmanuelmacias.com/definir_secciones.html</link>
  <guid isPermaLink="false">https://lunotipia.juanmanuelmacias.com/definir_secciones.html</guid>
  <pubDate>vie, 21 ene 2022 22:04:00 +0100</pubDate>
</item>
<item>
  <title>Evitar que las funciones en Lua «choquen» con las macros de LaTeX en LuaTeX</title>
  <description><![CDATA[<div id="content" class="content">

 <form>
 <p style="text-align: center;"> <button formaction="https://maciaschain.gitlab.io/lunotipia/pdf/evitar_funcion_lua.pdf"> <font size="2">Descargar esta entrada en formato PDF</font></button></p>
</form>

 <p>
 <span style="font-family:serif;">LuaT <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> ofrece muchas y variadas maneras de manipular el contenido textual en distintos estadios del proceso de
compilación, en lo que va del código fuente al objeto tipográfico resultante. Hay vías más triviales y otras de mayor
complejidad, pero todas parten de esa característica esencial de que goza la avanzada versión de  <span style="font-family:serif;">T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> de puentear
las primitivas del cajista binario mediante  <i>scrips</i> en Lua, ya que incluye un intérprete para este lenguaje liviano y
multiusos.
</p>

 <p>
Una forma limpia y rápida de manipulación, pero con un poderoso alcance en cuanto a resultados, es mediante el añadido
(un injerto, más bien) de funciones en Lua que incluyan sustituciones de cadenas de texto. Este tipo de funciones deben
anclarse o registrarse en el  <i>callback</i> de  <span style="font-family:serif;">LuaT <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span>  <code>process_input_buffer</code> que, como su nombre anuncia, actúa sobre
el  <code>input</code> en el momento que éste es analizado para su compilación. Ya dimos algunos ejemplos  <a href="https://maciaschain.gitlab.io/lunotipia/fuentesfrankenstein.html">aquí</a>, pero ahora nos
detendremos en algunas particularidades más y cierto problema colateral.
</p>

 <p>
El  <i>callback</i>  <code>process_input_buffer</code>, en efecto, remite a un momento muy tempranero del proceso. Tan tempranero que las
macros de  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> que tengamos dispersas por el código fuente todavía no se han expandido, y por tanto pueden verse
fácilmente afectadas por nuestras funciones de sustitución de caracteres. Por ejemplo: imaginemos que queremos sustituir
todas las apariciones de la letra «b» minúscula por la secuencia  <code>\textbf{b}</code> (o sea, que toda ocurrencia de la «b»
quede en negrita en el  <i>output</i>). En cuanto el análisis llegue a alguna macro de  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> que contenga esta letra
(como un simple  <code>\bigskip</code>), la compilación se detendrá por un error insalvable. Y no es para menos, porque antes ya se
habría operado allí la sustitución, y lo que tendría que compilar sería entonces un ininteligible  <code>\\textbf{b}igskip</code>.
Así que, de entrada, y antes de echar mano de este recurso tan útil, conviene valorar antes los pros y los contras que
acarreará el hacerlo. En ocasiones, nada hay que temer, como en este ejemplo que puse al final de  <a href="https://maciaschain.gitlab.io/lunotipia/punto_alto.html">mi entrada</a> sobre el
problema del punto alto griego, donde se ajustaba la altura del glifo mediante un  <code>string.gsub</code> de Lua. Es improbable
que una macro de  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> incluya un punto alto griego. En otros contextos, cuando lo que esperamos es una
sustitución lineal de un carácter por otro, será mejor considerar crear al vuelo una propiedad OpenType de reemplazo,
mediante la función nativa de  <span style="font-family:serif;">LuaT <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span>  <code>font.handlers.otf.add.feature</code> <sup> <a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink">1</a></sup>.
</p>

 <p>
Habrá casos, sin embargo, donde nos toparemos sin remedio con el problema de frente. ¿Cómo solucionarlo? Bien, en  <a href="https://tex.stackexchange.com/questions/262630/lualatex-how-to-use-a-char-directive-inside-a-string-gsub-function">un
hilo</a> de  <code>tex.stackexchange.com</code> un usuario aportó una función que intentaba evitar el desaguisado mediante un
condicional. Aunque me parece muy ingeniosa la idea del condicional, la función (en parte porque era poco menos que un
esbozo) tenía un par de problemas de peso:
</p>

 <ol class="org-ol"> <li>Impide que se «toquen» las macros simples de LaTeX, pero no las que tienen argumentos obligatorios u opcionales, de
modo que puede seguir habiendo obstáculos en la compilación.</li>
 <li>Tampoco permite cribar aquellos argumentos donde sí quisiésemos que se operase una sustitución (por ejemplo, en un
 <code>\textit{...}</code>.</li>
</ol> <p>
Por tanto, he probado a intentar «mejorar» esa función, añadiendo más condicionales, afinando un poco más y ampliando
las variables. De todo eso, extraigo aquí un mínimo ejemplo operativo.
</p>

 <p>
Supongamos que en nuestro documento de  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> queremos que se sustituyan al compilar todos los casos de «p» y «m»
por las cadenas «Pili» y «Mili», respectivamente. Por supuesto, no queremos que se sustituyan dentro de las macros ni de
sus argumentos, pero sí en el interior de algunos argumentos, en este caso sólo dos:  <code>\textit{...}</code> y  <code>\section{...}</code>.
</p>

 <p>
Para empezar, tenemos que separar la estructura de una macro de  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> en seis variables, y a cada una de ellas le
asignaremos luego una captura de expresiones regulares, o patrones <sup> <a id="fnr.2" class="footref" href="#fn.2" role="doc-backlink">2</a></sup> en la jerga de Lua, opcionales u obligatorios en su
aparición:
</p>

 <dl class="org-dl"> <dt>a</dt> <dd>la barra invertida</dd>
 <dt>b</dt> <dd>una secuencia de caracteres</dd>
 <dt>c</dt> <dd>la llave izquierda</dd>
 <dt>d</dt> <dd>secuencia de caracteres que puede contener espacios</dd>
 <dt>e</dt> <dd>la llave derecha</dd>
 <dt>f</dt> <dd>secuencia de caracteres que puede incluir un corchete izquierdo y otro derecho</dd>
</dl> <p>
Definimos ahora una función simple para la sustitución de los caracteres «p» y «m» <sup> <a id="fnr.3" class="footref" href="#fn.3" role="doc-backlink">3</a></sup>:
</p>

 <p>

</p>

 <div class="org-src-container">
 <pre class="src src-lua"> <span class="org-keyword">function</span>  <span class="org-function-name">sustitucion</span> ( <span class="org-variable-name">texto</span>)
   texto =  <span class="org-builtin">string</span>. <span class="org-builtin">gsub</span> (texto,  <span class="org-string">"p"</span>,  <span class="org-string">"Pili"</span>)
   texto =  <span class="org-builtin">string</span>. <span class="org-builtin">gsub</span> (texto,  <span class="org-string">"m"</span>,  <span class="org-string">"Mili"</span>)
    <span class="org-keyword">return</span> texto
 <span class="org-keyword">end</span>
</pre>
</div>

 <p>
Como dije, con esta función sola no vamos a ningún lado, porque en cuanto una macro de LaTeX tenga una «p» o una «m»
estaremos acabados.
</p>

 <p>
Así que, a continuación, la función que hace el resto, y que voy comentando entre medias del código:
</p>

 <div class="org-src-container">
 <pre class="src src-lua"> <span class="org-keyword">function</span>  <span class="org-function-name">sustitucion_buena</span> (  <span class="org-variable-name">texto</span> )
    <span class="org-comment-delimiter">-- </span> <span class="org-comment">Aquí definimos antes una variable local con las 6 capturas a</span>
    <span class="org-comment-delimiter">-- </span> <span class="org-comment">buscar; la parte que sustituye es una función anónima</span>
    <span class="org-keyword">local</span>  <span class="org-variable-name">x</span> = texto:gsub( <span class="org-string">'(\\?)([%a%@%s]+)([{]?)([%s%a%@]*)([}]?)([%[%]%s%a%@%w]?)'</span>,  <span class="org-keyword">function</span> ( <span class="org-variable-name">a</span>, <span class="org-variable-name">b</span>, <span class="org-variable-name">c</span>, <span class="org-variable-name">d</span>, <span class="org-variable-name">e</span>, <span class="org-variable-name">f</span>)
                            <span class="org-comment-delimiter">-- </span> <span class="org-comment">Este primer condicional nos permite tocar el interior de textit y section</span>
                            <span class="org-keyword">if</span> (a~= <span class="org-string">""</span>  <span class="org-keyword">and</span> b== <span class="org-string">"textit"</span>  <span class="org-keyword">or</span> b== <span class="org-string">"section"</span>)   <span class="org-keyword">then</span>
                               <span class="org-comment-delimiter">-- </span> <span class="org-comment">Defino esta variable, para sustituir dentro de textit y section:</span>
                              y =  <span class="org-builtin">string</span>. <span class="org-builtin">gsub</span> (d,  <span class="org-string">"[%s%a%@]"</span>,   sustitucion)
                               <span class="org-comment-delimiter">-- </span> <span class="org-comment">y lo concatenamos todo:</span>
                <span class="org-keyword">return</span> a .. b .. c .. y .. e .. f
                            <span class="org-keyword">end</span>
                            <span class="org-comment-delimiter">-- </span> <span class="org-comment">El segundo condicional es para no tocar</span>
                            <span class="org-comment-delimiter">-- </span> <span class="org-comment">el resto de macros de LaTeX y que no nos</span>
                            <span class="org-comment-delimiter">-- </span> <span class="org-comment">dé error en la compilación</span>
                            <span class="org-keyword">if</span> (a~= <span class="org-string">""</span>  <span class="org-keyword">or</span> c~= <span class="org-string">""</span>  <span class="org-keyword">or</span> d~= <span class="org-string">""</span>  <span class="org-keyword">or</span> e~= <span class="org-string">""</span>  <span class="org-keyword">or</span> f~= <span class="org-string">""</span>)   <span class="org-keyword">then</span>
                            <span class="org-keyword">return</span> a .. b .. c .. d .. e .. f
                            <span class="org-keyword">end</span>
                <span class="org-comment-delimiter">-- </span> <span class="org-comment">Si no se dan las dos condiciones previas, entonces</span>
                <span class="org-comment-delimiter">-- </span> <span class="org-comment">ya lo que tenemos es la cadena simple a sustituir</span>
            b =  <span class="org-builtin">string</span>. <span class="org-builtin">gsub</span> (b,  <span class="org-string">"[%a%@%s]"</span>,   sustitucion)
             <span class="org-keyword">return</span> b
          <span class="org-keyword">end</span>)
        <span class="org-keyword">return</span> x
 <span class="org-keyword">end</span>
</pre>
</div>

 <p>
No nos queda más que definir el comando de LaTeX que cargue la función:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate"> <span class="org-keyword">\newcommand</span></span> <span class="org-font-latex-sedate"> <span class="org-function-name">\sust</span></span>{ <span class="org-font-latex-sedate"> <span class="org-function-name">\directlua</span></span> <span class="org-function-name">{luatexbase.add_to_callback</span>
 <span class="org-function-name">     ( "process_input_buffer" , sustitucion_buena , "sustitucion_buena" )}</span>}
</pre>
</div>

 <p>
Y probarla. Para ver bien los resultados, nada mejor que un entorno  <code>verbatim</code> (y el resultado de la compilación en fig.  <a href="#org24d84af">1</a>):
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate"> <span class="org-keyword">\begin</span></span>{ <span class="org-function-name">document</span>}
   <span class="org-font-latex-sedate">\sust</span>
      <span class="org-font-latex-sedate"> <span class="org-keyword">\begin</span></span>{ <span class="org-function-name">verbatim</span>}
 <span class="org-font-latex-verbatim">        p y m</span>
 <span class="org-font-latex-verbatim">       </span> <span class="org-font-latex-sedate"> <span class="org-font-latex-verbatim">\textit</span></span> <span class="org-font-latex-verbatim">{p y m}</span>
 <span class="org-font-latex-verbatim">       </span> <span class="org-font-latex-sedate"> <span class="org-font-latex-verbatim">\section</span></span> <span class="org-font-latex-verbatim">{p y m}</span>
 <span class="org-font-latex-verbatim">       Pero esto no lo sustituye:</span>
 <span class="org-font-latex-verbatim">       </span> <span class="org-font-latex-sedate"> <span class="org-font-latex-verbatim">\textbf</span></span> <span class="org-font-latex-verbatim">{p y m}</span>
 <span class="org-font-latex-verbatim">       </span> <span class="org-font-latex-sedate"> <span class="org-font-latex-verbatim">\cualquiermacro</span></span> <span class="org-font-latex-verbatim">{p y m}[p y m]</span>
 <span class="org-font-latex-verbatim">     </span> <span class="org-font-latex-sedate"> <span class="org-keyword">\end</span></span>{ <span class="org-function-name">verbatim</span>}
 <span class="org-font-latex-sedate"> <span class="org-keyword">\end</span></span>{ <span class="org-function-name">document</span>}
</pre>
</div>



 <div id="org24d84af" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/pilimili.png" alt="pilimili.png"></img></p>
 <p> <span class="figure-number">Figura 1: </span>Compilando nuestra sustitución de cadenas</p>
</div>


 <div id="outline-container-org32b0430" class="outline-2">
 <h2 id="org32b0430">∞</h2>
 <div class="outline-text-2" id="text-org32b0430">
 <div>
 <p>Publicado: 02/12/19</p>

 <p>Última actualización: 21/01/22</p>
</div>
 <div>
 <hr></hr> <p>
 <a href="index.html">Índice general</a>
</p>
 <p>
 <a href="acerca-de.html">Acerca de...</a>
</p>
 <p>
Esta obra está bajo una  <a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/">licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional</a>.
</p>
</div>
</div>
</div>
 <div id="footnotes">
 <h2 class="footnotes">Notas al pie de página: </h2>
 <div id="text-footnotes">

 <div class="footdef"> <sup> <a id="fn.1" class="footnum" href="#fnr.1" role="doc-backlink">1</a></sup> <div class="footpara" role="doc-footnote"> <p class="footpara">
Esto puede ser muy productivo, por ejemplo, para transliteraciones directas entre alfabetos, como el latino y el gótico.
</p></div></div>

 <div class="footdef"> <sup> <a id="fn.2" class="footnum" href="#fnr.2" role="doc-backlink">2</a></sup> <div class="footpara" role="doc-footnote"> <p class="footpara">
No son las expresiones regulares, dicho sea de paso, el punto fuerte de Lua, pues no sigue aquí el estándar
POSIX. Con un sistema de expresiones regulares más completo, probablemente no serían necesarias tantas vueltas y el
asunto se resolvería de una manera más quirúrgica.
</p></div></div>

 <div class="footdef"> <sup> <a id="fn.3" class="footnum" href="#fnr.3" role="doc-backlink">3</a></sup> <div class="footpara" role="doc-footnote"> <p class="footpara">
Téngase en cuenta que todo código Lua que insertemos en nuestro preámbulo debe encerrarse en un entorno  <code>luacode</code>,
del paquete del mismo nombre.
</p></div></div>


</div>
</div></div>]]></description>
  <link>https://lunotipia.juanmanuelmacias.com/evitar_funcion_lua.html</link>
  <guid isPermaLink="false">https://lunotipia.juanmanuelmacias.com/evitar_funcion_lua.html</guid>
  <pubDate>vie, 21 ene 2022 22:04:00 +0100</pubDate>
</item>
<item>
  <title>Las falacias de la edición de escritorio</title>
  <description><![CDATA[<div id="content" class="content">

 <form>
 <p style="text-align: center;"> <button formaction="https://maciaschain.gitlab.io/lunotipia/pdf/falacias_autoedicion.pdf"> <font size="2">Descargar esta entrada en formato PDF</font></button></p>
</form>

 <p>
Hacia principios de los años ’90, en un articulito sobre las cualidades microtipográficas
del  <i>software</i> experimental  <code>HZ-Program</code> <sup> <a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink">1</a></sup>, aprovechaba el gran tipógrafo alemán
Hermann Zapf para saludar a la ya por entonces inexorable autoedición digital. Y lo hacía
de una manera mixta. Con optimismo, sin duda, subrayando las previsibles mudanzas de los
usos y costumbres a que el nuevo modelo nos habría de conducir:
</p>

 <blockquote>
 <p>
Desktop publishing has changed the production of books in recent years. For the first time
the author has the possibility of preparing and influencing the design of his text. A
publisher will not always be happy about this, especially if the author does not want to
follow the strict rules of the publishing house which it may have followed for years. But
everybody should welcome this new method of collaboration between author and publisher.
</p>
</blockquote>

 <p>
Pero un optimismo este que no le apartaba de exponer ciertas prevenciones, muy sensatas:
</p>

 <blockquote>
 <p>
 […] In the past, typography was in the hands of professionals,
compositors, and specially trained people. Today we are facing a completely different
situation: alphabets are in the hands of non-professionals, of all kind of users, of
office people, of young people working with the capabilities of their Macintosh or PC.
</p>
</blockquote>

 <p>
A la vuelta ya de unos cuantos decenios, y tras asistir a todo orden de estragos y
despropósitos bajo el paraguas de los nuevos paradigmas, bien nos tememos que no podemos
—ya no— compartir ese optimismo noventero del autor de los tipos Palatino. Las
prevenciones, por contra, se nos antojan a estas alturas más justificadas que nunca.
</p>

 <p>
Pero antes de insistir en nuestros duelos y quebrantos, conviene esclarecer
suficientemente los términos. ¿Qué entendemos por «autoedición digital», o «edición de
escritorio», traducción más o menos apresurada del inglés  <i>Desktop Publishing</i>? Bien, lo
pernicioso de estos conceptos no provienen tanto de su acepción básica, es decir, la
producción del libro mediante una computadora (hecho que no podemos dejar de aplaudir),
sino de una presunta consecuencia que, con mayor o menor pudor, se ha venido defendiendo
una vez asumido lo primero. Esto es, que el  <i>software</i> es capaz por sí propio de
reemplazar, de principio a fin, todo el quehacer de los operarios técnicos, de tal forma
que cualquiera, con pocos o nulos conocimientos de tipografía y composición, puede
emprender la producción del libro cómodamente desde el ordenador de su casa, con sólo
llamar a unos cuantos resortes. Esta interpretación corrupta de la edición de escritorio,
desvariada y, en cierto sentido, «mágica», surge de un inmenso malentendido ante la
llegada de los nuevos medios digitales. Digamos que llegaron, sí, con toda razón y
justicia a la tipografía. Pero el comité de bienvenida no tenía muy claro hacia dónde
dirigir los vítores.
</p>

 <p>
No fue, desde luego, una catástrofe espontánea. La anomalía ya se venía fraguando desde
los procesadores de texto, con su «lo que ves es lo que obtienes» y su imposición de una
forma antinatural de escribir, que obligaba a los autores a confundir la estructura con el
formato, y a tomar intempestivas decisiones de orden tipográfico en mitad de una frase. De
ahí a que los pobres usuarios del Word se vieran con las ínfulas necesarias para refundar
toda la tipografía desde cero no mediaba más que un paso. La llamada «industria» del libro
asumió, casi en masa, un flujo de trabajo basado en estos vicios, y tomó por falsos y
desafortunados estándares a los nuevos programas de maquetación y diagramado, que con
razón habían revolucionado la producción de revistas ilustradas y periódicos al mismo
tiempo que rebajaron la calidad de los libros impresos a niveles nunca vistos desde
Gutenberg, pues no están pensados para producir libros. Pero no sólo estaban los
«maquetadores» y los «diseñadores gráficos» dispuestos a envilecer con denuedo la
tipografía. Muchos editores —especialmente pequeños o medianos editores— se unieron a
la bacanal y se instalaron en su propio ordenador el  <code>QuarkXpress</code> o el  <code>InDesign</code> para
ensayar sus propias florituras. Tal es así que no pocos de estos editores llegaron a la
conclusión de que ya no era necesario un diseñador gráfico para arruinar un libro. Ya ven:
todo es tan fácil. Sólo se necesita una computadora y una copia, legal o no, del programa
que usan todos.
</p>

 <p>
Con una premisa parecida, curiosamente, se subrayó el nacimiento a finales de los ’70 de
otro tipo de  <i>software</i>, en las antípodas de esos programas de diagramado que vendrían
poco después. Nos referimos al sistema de composición tipográfica digital  <span style="font-family:serif;">T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span>, que
sin duda es la revolución más importante en la tipografía desde la propia invención de la
imprenta: los ordenadores podían hacer ya hermosos libros, con las artes y técnicas de los
viejos cajistas. Pero todas esas rutinas, todo ese trabajo manual y repetitivo  <span style="font-family:serif;">T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span>
se encargaría de controlarlo hasta el último detalle y automatizarlo de una forma global y
coherente, añadiendo un refinamiento extremo, aún hoy imbatido, a través de precisos e
ingeniosos algoritmos. Y tal hecho es tan cierto como que el propio  <span style="font-family:serif;">T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> nació de un
deseo de autoedición, cuando su creador, el gran Donald Knuth, quedó oportunamente
horrorizado ante las galeradas recibidas de uno de los tomos de su obra magna  <i>The Art of
Computer Programming</i>. Y, por si hubiese alguna duda, ya se encargaba el propio Knuth de
anunciar en su  <i>TeX book</i> que su sistema estaba concebido para que cualquiera pudiese
componer un libro desde la paz de su ordenador doméstico.  <span style="font-family:serif;">T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span>, naturalmente, estaba
recién nacido y se mostraba complejo y agreste, demasiado críptico incluso para los
usuarios más suicidas. Necesitaba un lenguaje más sencillo, más estilizado para poder
tratarlo.
</p>

 <p>
No tardó en llegar, propicio,  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span>, con su inconmensurable acervo de macro paquetes
semánticos, cada cual especializado en su cometido. Si  <span style="font-family:serif;">T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> era el tipógrafo, el que
se mancha el mono de trabajo,  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> se nos presentó como el director editorial, con
corbata, que no habla de cuadratines, espacios elásticos o demás jerga arcana de la
maquinaria y engranajes que tan bien entiende  <span style="font-family:serif;">T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span>, sino de epígrafes, prosa y verso,
ediciones críticas, ecuaciones, diccionarios, y cualquier término familiar al universo del
editor o del lector. La relación  <span style="font-family:serif;">T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span>/ <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> era ideal, rectilínea, pues cubría
perfectamente los planos físicos y semánticos de la tipografía. De hecho, ya el propio
Knuth había concebido  <span style="font-family:serif;">T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> como la base, el motor tipográfico con una serie limitada
de órdenes y procesos que habría de ser extendido mediante macros de muy alto nivel, casi
hasta el infinito. Sin duda tenemos aquí, y no en los programas de maquetación, la
evolución natural de la tipografía mecánica a la digital. Qué lástima que la propia
comunidad de  <span style="font-family:serif;">T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> y  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> se haya mostrado históricamente tan capaz a un tiempo
de las cosas más sublimes y meritorias como de dispararse en el pie, entre conjuros e
invocaciones a los complacientes duendes de la autoedición. Y así, de paso, todo se
enzarzaba de mala manera.
</p>

 <p>
Por un lado está el autoexilio, por no decir descarado auto-secuestro, de  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span>
dentro de la Academia. O, más bien, de una parte de la Academia (matemáticas, ingenierías
y demás). Pero si esta jibarización del ecosistema  <span style="font-family:serif;">T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> ya de por sí ha sido
suficientemente lamentable, al apartarlo de su ámbito natural, que es el de la producción
editorial de cualquier tipo de libro, para reducirlo a la raquítica logia de unos cuantos
escolares escribiendo fórmulas y ecuaciones, no menos daño ha traído la liberalidad con
que tantas veces se ha recomendado el uso del formato  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> a todo género de
autores, escritores, escribientes y escribanos. Cuánto, cuánto envenenado desoriente ha
traído esa terca cantinela de «no uses Word, usa  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span>», como si el segundo fuese
una feliz alternativa legítima al (malhadado) primero.
</p>

 <p>
Y es que hay que decirlo de una vez:  <span style="font-family:serif;">T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> y  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> son herramientas
esencialmente tipográficas. No sirven, o sirven muy mal, para escribir, a pesar del
marcado semántico de  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span>. Por expresarlo llanamente: recomendar este  <i>software</i> a un
autor sería igual de absurdo como pedirle a Hemingway que arrojase a la basura su máquina
de escribir para instalarse una monotipia en su despacho.
</p>

 <p>
Tal vez en este punto comience a asomar un poco el malentendido a que nos referíamos
líneas arriba. Que el ecosistema  <span style="font-family:serif;">T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> sea algo admirable y maravilloso, un paso
adelante en el ámbito digital desde la impresión mecánica, no con pretensiones de abolir
las excelencias precedentes sino de vindicar la tradición y hacerla brillar uniendo lo
mejor de dos mundos; que ahorre muchísimo esfuerzo y tiempo mediante la automatización
total y consistente, trasladando a complejos algoritmos la rutina manual de los antiguos
impresores; que entienda la concepción global del libro como programación y código, desde
la colación de datos y contenido a su preparación para la imprenta, y todo ello sin salir
de la computadora; que sea algo que cualquiera ( <i>software</i> libre) pueda descargar e
instalar en su propio ordenador…; todo esto y más, en suma, no impide que  <span style="font-family:serif;">T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> y su
formato  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> dejen de ser aquello que siempre han sido y jamás, desde su
nacimiento, han dejado de ser (incluso a despecho del propio Donald Knuth): una simple y
llana herramienta.
</p>

 <p>
Y, como herramientas que son, despojémonos, por tanto, de cualquier pretensión mágica
respecto a éstas o a cualquier otra que esté por venir. El código de programación, por muy
complejo que sea, no hace el libro. Los alambicados y refinados algoritmos no hacen el
libro. Nos quitarán, sí, tiempo y esfuerzo; pero no nos devuelven el libro terminado,
entendido en términos tipográficos, ni existe botón ni resorte bajo el cielo que sirva
para tal prodigio. El libro como objeto lo hace el ingenio y el magín del tipógrafo, que
es el artífice de la herramienta y quien ha de enfrentarse con mayor o menor fortuna a
cada reto, a cada página, párrafo, línea o palabra, pues la primera y última norma de la
tipografía es que nunca hubo ni habrá de esperarse dos libros iguales.
</p>

 <p>
Cambiar de herramientas, incluso de paradigma, no debería llevarnos a abolir la división
de poderes que siempre ha funcionado en el mundo de la producción editorial: el autor
escribe, el editor publica y el tipógrafo compone. Pero hoy día parece que muchos autores
y editores, confiados en el empoderamiento ilusorio de los medios digitales, no quieren
depender de los tipógrafos, y prefieren ensayar el camino por su cuenta, a ciegas, torpes,
ignorantes. Una renuncia tan osada como triste, pues el buen tipógrafo no impone un hilo
umbilical y servil a sus otros dos compañeros necesarios de viaje, sino que extiende en
una y otra dirección las tramas del diálogo y el valor de su consejo. Y tanto más acabado
un libro cuanto más fructífero el coloquio entre esos tres actores. En tales batallas nos
conformaríamos con que el premio final no fuese tanto la gloria para el autor, el
reconocimiento para el editor o los créditos del tipógrafo, sino un trofeo aun más
satisfactorio si cabe: la legibilidad.
</p>

 <div id="outline-container-orga89a34f" class="outline-2">
 <h2 id="orga89a34f">∞</h2>
 <div class="outline-text-2" id="text-orga89a34f">
 <div>
 <p>Publicado: 01/12/21</p>

 <p>Última actualización: 21/01/22</p>
</div>
 <div>
 <hr></hr> <p>
 <a href="index.html">Índice general</a>
</p>
 <p>
 <a href="acerca-de.html">Acerca de...</a>
</p>
 <p>
Esta obra está bajo una  <a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/">licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional</a>.
</p>
</div>
</div>
</div>
 <div id="footnotes">
 <h2 class="footnotes">Notas: </h2>
 <div id="text-footnotes">

 <div class="footdef"> <sup> <a id="fn.1" class="footnum" href="#fnr.1" role="doc-backlink">1</a></sup> <div class="footpara" role="doc-footnote"> <p class="footpara">
H. Zapf, «About Micro-Typography and the HZ-Program»,  <i>Electronic Publishing</i> 6, n.
3 (1993), págs. 283–88.
</p></div></div>


</div>
</div></div>]]></description>
  <link>https://lunotipia.juanmanuelmacias.com/falacias_autoedicion.html</link>
  <guid isPermaLink="false">https://lunotipia.juanmanuelmacias.com/falacias_autoedicion.html</guid>
  <pubDate>vie, 21 ene 2022 22:04:00 +0100</pubDate>
</item>
<item>
  <title>Fuentes Frankenstein (o la manipulación de caracteres en LuaTeX)</title>
  <description><![CDATA[<div id="content" class="content">

 <form>
 <p style="text-align: center;"> <button formaction="https://maciaschain.gitlab.io/lunotipia/pdf/fuentesfrankenstein.pdf"> <font size="2">Descargar esta entrada en formato PDF</font></button></p>
</form>

 <p>
Una de las características esenciales de la versión más avanzada de TeX, LuaTeX, y precisamente la que justifica su
nombre, es la de incluir entre sus engranajes un intérprete de Lua, que nos permite «puentear» las primitivas del motor
tipográfico mediante  <i>scripts</i> en este lenguage de programación liviano. Gracias a ello, podemos intercalar código Lua
entre el habitual código (La)TeX, de forma que se ejecute en el pre y post-proceso. Algo que, naturalmente, nos dará
mucho juego, y que abrirá además un abanico de posibilidades vastísimo a la hora de manipular diversos aspectos de la
composición tipográfica, y hacerlo en estadios puntuales de la misma.
</p>

 <p>
El ejemplo que aportaremos aquí, muy simple, puede parecer de a primeras que se queda sólo entre los márgenes lúdicos.
Más bien es un ejemplo abstracto que puede dar pie a muchas utilidades prácticas. Sin ir más lejos, me fue muy útil en un
libro que compuse recientemente, donde necesitaba que cierto tipo de caracteres a lo largo de las entradas de un índice
analítico asumieran una serie de propiedades concretas.
</p>

 <p>
Partamos, para empezar, de un poco de texto falso, al que le hemos incluido en cualquier lugar la serie de cifras que
van del 1 al 0:
</p>

 <pre class="example" style="background-color:#fdf6e3" id="org7521501">
Lorem Ipsum Dolor Sit Amet, 1234567890 Consectetuer Adipiscing Elit.
Donec Hendrerit Tempor Tellus. Donec Pretium Posuere Tellus. Proin
Quam Nisl, Tincidunt Et, Mattis Eget, Convallis Nec, Purus. Cum Sociis
Natoque Penatibus Et Magnis Dis Parturient Montes, Nascetur Ridiculus
Mus. Nulla Posuere. Donec Vitae Dolor. Nullam Tristique Diam Non
Turpis. Cras Placerat Accumsan Nulla. Nullam Rutrum. Nam Vestibulum
Accumsan Nisl.
</pre>

 <p>
Para cuando compilemos nuestro documento, tenemos el capricho de que todas las cifras del texto (y sólo las cifras)
estén en negrita, mientras que todas las mayúsculas queden representadas la fuente de estilo Fraktur Duc de Berry, y
además en un color rojo que habremos definido antes en el espacio CMYK. La fuente principal será Latin Modern Roman:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-comment-delimiter">% </span> <span class="org-comment">Definimos la familia principal, con el paquete fontspec</span>
 <span class="org-font-latex-sedate"> <span class="org-keyword">\usepackage</span></span>{ <span class="org-function-name">fontspec</span>}
 <span class="org-font-latex-sedate">\setmainfont</span>{Latin Modern Roman}

 <span class="org-comment-delimiter">% </span> <span class="org-comment">Y la familia con Duc de Berry en rojo</span>
 <span class="org-font-latex-sedate"> <span class="org-keyword">\usepackage</span></span>{ <span class="org-function-name">xcolor</span>}
 <span class="org-font-latex-sedate">\definecolor</span>{capitales}{cmyk}{0,0.98,0.98,0}
 <span class="org-font-latex-sedate">\newfontfamily\duc</span>[Color=capitales]{Duc De Berry LT Std}
</pre>
</div>

 <p>
En lo que hace al código Lua, podemos crear aparte un archivo  <code>*.lua</code>, pero para estos menesteres, y siendo tan poco
código, es utilísimo el paquete  <code>luacode</code>. Definimos entonces una función muy simple que sustituya expresiones
regulares (clases de caracteres, en la jerga de Lua):  <code>%d</code> para los dígitos y  <code>%u</code> para las letras mayúsculas <sup> <a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink">1</a></sup>:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate"> <span class="org-keyword">\usepackage</span></span>{ <span class="org-function-name">luacode</span>}

 <span class="org-comment-delimiter">%% </span> <span class="org-comment">Código Lua</span>
 <span class="org-font-latex-sedate"> <span class="org-keyword">\begin</span></span>{ <span class="org-function-name">luacode</span>}
   function cambiar ( texto )
   texto = string.gsub ( texto, " <span class="org-comment">%d",   "\\textbf{%0}" )</span>
   texto = string.gsub ( texto, " <span class="org-comment">%u",   "{\\duc %0}" )</span>
   return texto
   end
 <span class="org-font-latex-sedate"> <span class="org-keyword">\end</span></span>{ <span class="org-function-name">luacode</span>}
</pre>
</div>

 <p>
Y, por último, definimos en el lado LaTeX un par de comandos que activen y desactiven la función Lua:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate"> <span class="org-keyword">\newcommand</span></span> <span class="org-font-latex-sedate"> <span class="org-function-name">\cambia</span></span>{ <span class="org-font-latex-sedate"> <span class="org-function-name">\directlua</span></span> <span class="org-function-name">{luatexbase.add_to_callback</span>
 <span class="org-function-name">   ( "process_input_buffer" , cambiar , "cambiar" )}</span>}
 <span class="org-font-latex-sedate"> <span class="org-keyword">\newcommand</span></span> <span class="org-font-latex-sedate"> <span class="org-function-name">\descambia</span></span>{ <span class="org-font-latex-sedate"> <span class="org-function-name">\directlua</span></span> <span class="org-function-name">{luatexbase.remove_from_callback</span>
 <span class="org-function-name">    ( "process_input_buffer" , "cambiar" )}</span>}
</pre>
</div>

 <p>
Nuestro texto quedará, finalmente, así (resultado de la compilación: fig.  <a href="#org11e00ea">1</a>):
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate">\cambia</span>

Lorem Ipsum Dolor Sit Amet, 1234567890 Consectetuer Adipiscing Elit.
Donec Hendrerit Tempor Tellus. Donec Pretium Posuere Tellus. Proin
Quam Nisl, Tincidunt Et, Mattis Eget, Convallis Nec, Purus. Cum Sociis
Natoque Penatibus Et Magnis Dis Parturient Montes, Nascetur Ridiculus
Mus. Nulla Posuere. Donec Vitae Dolor. Nullam Tristique Diam Non
Turpis. Cras Placerat Accumsan Nulla. Nullam Rutrum. Nam Vestibulum
Accumsan Nisl.

 <span class="org-font-latex-sedate">\descambia</span>

 <span class="org-font-latex-sedate">\bigskip</span>

Lorem Ipsum Dolor Sit Amet, 1234567890 Consectetuer Adipiscing Elit.
Donec Hendrerit Tempor Tellus. Donec Pretium Posuere Tellus. Proin
Quam Nisl, Tincidunt Et, Mattis Eget, Convallis Nec, Purus. Cum Sociis
Natoque Penatibus Et Magnis Dis Parturient Montes, Nascetur Ridiculus
Mus. Nulla Posuere. Donec Vitae Dolor. Nullam Tristique Diam Non
Turpis. Cras Placerat Accumsan Nulla. Nullam Rutrum. Nam Vestibulum
Accumsan Nisl.
</pre>
</div>


 <div id="org11e00ea" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/color-lua1.png" alt="color-lua1.png"></img></p>
 <p> <span class="figure-number">Figura 1: </span>Resultado de la compilación, con las cifras en negrita y las mayúsculas en Fraktur</p>
</div>

 <p>
También podemos —por complicarlo algo más— añadir un valor de escalado (mediante  <code>fontspec</code>) a la familia que
definimos para Duc de Berry. Aquí un valor exagerado a modo de demostración (resultado de la compilación: fig.  <a href="#orgf603a7d">2</a>):
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate">\newfontfamily\duc</span>[Color=capitales,Scale=2.5]{Duc De Berry LT Std}
</pre>
</div>


 <div id="orgf603a7d" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/color-lua2.png" alt="color-lua2.png"></img></p>
 <p> <span class="figure-number">Figura 2: </span>Resultado de la compilación, con las cifras en negrita y las mayúsculas en Fraktur, pero con escala mayor</p>
</div>

 <div id="outline-container-org51ad1cf" class="outline-2">
 <h2 id="org51ad1cf">∞</h2>
 <div class="outline-text-2" id="text-org51ad1cf">
 <div>
 <p>Publicado: 31/09/19 </p>

 <p>Última actualización: 21/01/22</p>
</div>
 <div>
 <hr></hr> <p>
 <a href="index.html">Índice general</a>
</p>
 <p>
 <a href="acerca-de.html">Acerca de...</a>
</p>
 <p>
Esta obra está bajo una  <a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/">licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional</a>.
</p>
</div>
</div>
</div>
 <div id="footnotes">
 <h2 class="footnotes">Notas al pie de página: </h2>
 <div id="text-footnotes">

 <div class="footdef"> <sup> <a id="fn.1" class="footnum" href="#fnr.1" role="doc-backlink">1</a></sup> <div class="footpara" role="doc-footnote"> <p class="footpara">
Para este tipo de sustituciones que se operan en el  <i>input</i>, téngase en cuenta, no obstante, lo que se comenta en
 <a href="https://maciaschain.gitlab.io/lunotipia/evitar_funcion_lua.html">esta otra entrada</a> de  <i>La lunotipia</i>.
</p></div></div>


</div>
</div></div>]]></description>
  <link>https://lunotipia.juanmanuelmacias.com/fuentesfrankenstein.html</link>
  <guid isPermaLink="false">https://lunotipia.juanmanuelmacias.com/fuentesfrankenstein.html</guid>
  <pubDate>vie, 21 ene 2022 22:04:00 +0100</pubDate>
</item>
<item>
  <title>Ejecutar Common-Lisp en LaTeX: el paquete lisp-on-tex</title>
  <description><![CDATA[<div id="content" class="content">

 <form>
 <p style="text-align: center;"> <button formaction="https://maciaschain.gitlab.io/lunotipia/pdf/lispontex.pdf"> <font size="2">Descargar esta entrada en formato PDF</font></button></p>
</form>


 <p>
He estado probando estos primeros días soleados de octubre el paquete experimental  <a href="https://www.ctan.org/pkg/lisp-on-tex"> <code>lisp-on-tex</code></a>, escrito por Hakuta
Shizuya. Como su nombre anuncia (y los característicos guiones también), se trata de una biblioteca destinada a evaluar
código Lisp a través del proceso de compilación de LaTeX. Algo que, a primera vista, me puso los dientes largos, tan
devoto y apasionado como soy por este bello y potente lenguaje de programación, en gran parte en su dialecto Emacs-Lisp.
Con Lisp siempre es bueno recordar estas palabras de Stallman:
</p>

 <blockquote>
 <p>
The most powerful programming language is Lisp. If you don’t know Lisp (or its variant, Scheme), you don’t know what it
 means for a programming language to be powerful and elegant. Once you learn Lisp, you will see what is lacking in most
 other languages.
</p>

 <p>
Unlike most languages today, which are focused on defining specialized data types, Lisp provides a few data types which
are general. Instead of defining specific types, you build structures from these types. Thus, rather than offering a
way to define a list-of-this type and a list-of-that type, Lisp has one type of lists which can hold any sort of data.
</p>

 <p>
Where other languages allow you to define a function to search a list-of-this, and sometimes a way to define a generic
list-search function that you can instantiate for list-of-this, Lisp makes it easy to write a function that will search
any list — and provides a range of such functions.
</p>

 <p>
In addition, functions and expressions in Lisp are represented as data in a way that makes it easy to operate on them.
</p>

 <p>
When you start a Lisp system, it enters a read-eval-print loop. Most other languages have nothing comparable to `read’,
nothing comparable to `eval’, and nothing comparable to `print’. What gaping deficiencies!
</p>

 <p>
— Richard Stallman,  <a href="https://stallman.org/stallman-computing.html"> <i>How I do my computing</i></a>, en su  <a href="https://stallman.org">página personal</a>.
</p>
</blockquote>

 <p>
Con todas esas premisas, cualquier caballo de Troya lispiano, aunque sea un potrillo, no puede sino ser bienvenido entre
el engranaje de nuestro cajista binario TeX y su director editorial binario LaTeX. Porque (y es lo que aquí nos ocupa)
las posibilidades tipográficas que se desprenderían de ello son más que interesantes. Echemos un vistazo a las
primeras impresiones.
</p>

 <div id="outline-container-Primeros juegos" class="outline-2">
 <h2 id="Primeros juegos">Primeros juegos</h2>
 <div class="outline-text-2" id="text-Primeros juegos">
 <p>
Antes de empezar, conviene insistir que este paquete se encuentra aún en desarrollo (más bien lento, al parecer, pues su
última actualización es de 2015), y esto trae como consecuencia cosas como que la documentación es inexistente. Hay que
conformarse con un escueto y espartano  <i>Readme</i>, aunque suficiente para sacar algunas conclusiones de entrada. A saber:
</p>

 <ol class="org-ol"> <li>El código Lisp ha de encerrarse en el comando  <code>\lispinterp{...}</code>,</li>
 <li>Los símbolos de Lisp han de llevar siempre una barra invertida, como los comandos de TeX. Por ejemplo, un  <code>concat</code> se
convierte aquí en  <code>\concat</code>,</li>
 <li>Las cadenas de texto se ponen con comillas simples, no dobles.</li>
</ol> <p>
Añadido a eso, la plena funcionalidad del paquete depende de la infraestructura de LaTeX3, la futura versión de LaTeX,
también en desarrollo. Por suerte, podemos usar gran parte del kernel de LaTeX3 sobre LaTeX2ε si cargamos en nuestro
preámbulo el paquete  <code>expl3</code>. Y es aquí donde vino el primer tropezón leve. Un módulo de  <code>lisp-on-tex</code> que nos hacía
mucha gracia probar,  <code>lisp-mod-l3regex</code>, para trabajar las expresiones regulares sobre Lisp, requería del paquete de
LaTeX3  <code>l3regex.sty</code>. Pero no encontraba el paquete y devolvía error. La causa estaba en que  <code>l3regex.sty</code> se encontraba
plegado dentro del propio  <code>expl3</code>. Se solucionó fácilmente añadiendo la línea  <code>\expandafter\def\csname
ver@l3regex.sty\endcsname{}</code>, y con eso ya teníamos nuestro preámbulo listo para el recreo:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate"> <span class="org-keyword">\documentclass</span></span>{ <span class="org-function-name">article</span>}
 <span class="org-font-latex-sedate"> <span class="org-keyword">\usepackage</span></span>{ <span class="org-function-name">fontspec</span>}
 <span class="org-font-latex-sedate">\setmainfont</span>{Linux Libertine O}
 <span class="org-font-latex-sedate"> <span class="org-keyword">\usepackage</span></span>{ <span class="org-function-name">expl3</span>}
 <span class="org-font-latex-sedate">\expandafter\def\csname</span> ver@l3regex.sty <span class="org-font-latex-sedate">\endcsname</span>{}
 <span class="org-font-latex-sedate"> <span class="org-keyword">\usepackage</span></span>{ <span class="org-function-name">lisp-on-tex</span>}
 <span class="org-font-latex-sedate"> <span class="org-keyword">\usepackage</span></span>{ <span class="org-function-name">lisp-mod-l3regex</span>}
</pre>
</div>

 <p>
Las primeras pruebas que hice, como comenté antes, estaban relacionadas con expresiones regulares. El paquete viene ya con algunas funciones definidas. Por ejemplo,  <code>\regReplaceAll</code> es lo más parecido a lo que en Elisp
sería un  <code>replace-regex-in-string</code>, con los mismos tres argumentos (el regex a reemplazar, el regex que reemplaza y la
cadena donde reemplazar). Con esta función, ya he probado a definir algunos comandos sencillos para LaTeX. Como éste, que convertiría todo carácter «a» en «xxx»:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate">\def\prueba</span>#1{ <span class="org-comment">%</span>
 <span class="org-font-latex-sedate">\lispinterp</span>{
  ( <span class="org-font-latex-sedate">\texprint</span>
  ( <span class="org-font-latex-sedate">\regReplaceAll</span> 'a' 'xxx' '#1'))
}}
</pre>
</div>

 <p>
Podemos probarlo si escribimos algo así como:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate">\prueba</span>{la casa de arriba}
</pre>
</div>

 <p>
Con esa misma estructura, este otro comando nos pondría en negrita todos los números romanos. Ojo, para que no salga el
literal  <code>\textbf{...}</code> sino su resultado, obsérvese la sintaxis. Por otra parte,  <code>\1</code> para el grupo, es lo esperable:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate">\def\pruebabis</span>#1{ <span class="org-comment">%</span>
 <span class="org-font-latex-sedate">\lispinterp</span>{
  ( <span class="org-font-latex-sedate">\texprint</span>
  ( <span class="org-font-latex-sedate">\regReplaceAll</span> '( <span class="org-font-latex-sedate">\b</span>[IVXLCDM]+ <span class="org-font-latex-sedate">\b</span>)' ' <span class="org-font-latex-sedate">\c</span>{textbf} <span class="org-font-latex-sedate">\cB</span>\{ <span class="org-font-latex-sedate">\1\cE</span>\}' '#1'))
}}
</pre>
</div>

 <p>
Lo probamos con:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate">\pruebabis</span>{El siglo XXI y el volumen VI}
</pre>
</div>

 <p>
Y este tercer comando nos pondría en negrita cualquier texto en griego, ya sea poli- o monotónico:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate">\def\pruebatris</span>#1{ <span class="org-comment">%</span>
 <span class="org-font-latex-sedate">\lispinterp</span>{
  ( <span class="org-font-latex-sedate">\texprint</span>
  ( <span class="org-font-latex-sedate">\regReplaceAll</span>
'([ <span class="org-font-latex-sedate">\x</span>{1F00}- <span class="org-font-latex-sedate">\x</span>{1FFE} <span class="org-font-latex-sedate">\x</span>{0370}- <span class="org-font-latex-sedate">\x</span>{03FF}]+)'
' <span class="org-font-latex-sedate">\c</span>{textbf} <span class="org-font-latex-sedate">\cB</span>\{ <span class="org-font-latex-sedate">\1\cE</span>\}'
'#1'))
}}
</pre>
</div>

 <p>
Y podemos probarlo con:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate">\pruebatris</span>{Lorem ipsum dolor sit amet, consectetuer adipiscing
elit. Donec hendrerit tempor tellus. Δαρείου καὶ Παρυσάτιδος
γίγνονται παῖδες δύο. Donec pretium posuere tellus. Proin quam
nisl, tincidunt et, mattis eget, convallis nec, purus.}
</pre>
</div>
</div>
</div>

 <div id="outline-container-Un comando menos trivial. ¡Y hasta un entorno!" class="outline-2">
 <h2 id="Un comando menos trivial. ¡Y hasta un entorno!">Un comando menos trivial. ¡Y hasta un entorno!</h2>
 <div class="outline-text-2" id="text-Un comando menos trivial. ¡Y hasta un entorno!">
 <p>
Hace no mucho, escribí para Emacs una sencilla función para evitar (como casi siempre) un trabajo latoso. El caso es que
andaba trabajando en la composición de un extenso libro, cuyo autor tuvo a bien diseminar a través del texto infinidad
de pasajes en griego: palabras unas veces; otras, frases de una o dos líneas, más o menos. Naturalmente, lo ideal sería
incluir todos esos segmentos en un comando  <code>\foreignlanguage{greek}{...}</code> de Babel, para asegurar el correcto guionado
del griego antiguo, pero se puede morir cualquiera si tiene que ir haciéndolo a mano y uno por uno. Primero, se me
ocurrió intentar escribir algún script en Perl, hasta que caí en la cuenta de que con Elisp sería más sencillo, así que,
tras algunas pruebas ensayo/error di con una regex que funciona y que no devuelve ningún falso positivo. La tuve que
segmentar en una expresión  <code>concat</code> porque es bastante larga y entorpece la depuración del código. Pero traducida viene a
decir: «localiza cadenas de texto dentro de unos parámetros determinados, y que incluyen los caracteres de los rangos
Unicode ’griego básico’ ( <code>\u0370-\u03FF</code>) y ’griego extendido’ ( <code>\u1F00-\u1FFE</code>), signos de puntuación y espacios». Y la
función quedó, finalmente, así:
</p>

 <div class="org-src-container">
 <pre class="src src-emacs-lisp">( <span class="org-keyword">defun</span>  <span class="org-function-name">babel-griego-en-region</span> ()
 ( <span class="org-keyword">interactive</span>)
  ( <span class="org-keyword">save-restriction</span>
   (narrow-to-region (region-beginning) (region-end))
  ( <span class="org-keyword">save-excursion</span>
   (goto-char (point-min))
      (replace-regexp
      (concat
   <span class="org-string">"</span> <span class="org-string"> <span class="org-regexp-grouping-backslash">\\</span></span> <span class="org-string"> <span class="org-regexp-grouping-construct">(</span></span> <span class="org-string">^</span> <span class="org-string"> <span class="org-regexp-grouping-backslash">\\</span></span> <span class="org-string"> <span class="org-regexp-grouping-construct">|</span></span> <span class="org-string">\\w+[[:blank:]]+</span> <span class="org-string"> <span class="org-regexp-grouping-backslash">\\</span></span> <span class="org-string"> <span class="org-regexp-grouping-construct">|</span></span> <span class="org-string">[,.;?¿:«»]+[[:blank:]]+</span> <span class="org-string"> <span class="org-regexp-grouping-backslash">\\</span></span> <span class="org-string"> <span class="org-regexp-grouping-construct">|</span></span> <span class="org-string">{</span> <span class="org-string"> <span class="org-regexp-grouping-backslash">\\</span></span> <span class="org-string"> <span class="org-regexp-grouping-construct">)</span></span> <span class="org-string">"</span>
   <span class="org-string">"</span> <span class="org-string"> <span class="org-regexp-grouping-backslash">\\</span></span> <span class="org-string"> <span class="org-regexp-grouping-construct">(</span></span> <span class="org-string">[,.;?¿:«»··\u1F00-\u1FFE\u0370-\u03FF ]+</span> <span class="org-string"> <span class="org-regexp-grouping-backslash">\\</span></span> <span class="org-string"> <span class="org-regexp-grouping-construct">)</span></span> <span class="org-string">"</span>
   <span class="org-string">"</span> <span class="org-string"> <span class="org-regexp-grouping-backslash">\\</span></span> <span class="org-string"> <span class="org-regexp-grouping-construct">(</span></span> <span class="org-string">[[:blank:]]+</span> <span class="org-string"> <span class="org-regexp-grouping-backslash">\\</span></span> <span class="org-string"> <span class="org-regexp-grouping-construct">|</span></span> <span class="org-string">\n</span> <span class="org-string"> <span class="org-regexp-grouping-backslash">\\</span></span> <span class="org-string"> <span class="org-regexp-grouping-construct">|</span></span> <span class="org-string">\\'</span> <span class="org-string"> <span class="org-regexp-grouping-backslash">\\</span></span> <span class="org-string"> <span class="org-regexp-grouping-construct">|</span></span> <span class="org-string">}</span> <span class="org-string"> <span class="org-regexp-grouping-backslash">\\</span></span> <span class="org-string"> <span class="org-regexp-grouping-construct">)</span></span> <span class="org-string">"</span>)
   <span class="org-string">"\\1\\\\foreignlanguage{greek}{\\2}\\3"</span>
    nil)))
     (deactivate-mark))
</pre>
</div>

 <p>
Y ahora que andaba trasteando con este  <code>lisp-on-tex</code>, lo siguiente que me vino a la cabeza fue intentar adaptar esa
regex para que la sustitución se ejecutase durante la compilación. Que conste que ya se me había ocurrido hacerlo dentro
de Lua (con LuaLaTeX, se entiende), pero las expresiones regulares complejas no son el fuerte de Lua, reconozcámoslo.
Con  <code>lisp-on-tex</code>, por contra, no fue muy difícil adaptar mi regex,  <i>mutatis mutandis</i>. Y a lo siguiente que llegué es a
una macro con la misma estructura de las de los ejemplos anteriores:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate">\def\babelgriego</span>#1{ <span class="org-comment">%</span>
 <span class="org-font-latex-sedate">\lispinterp</span>{
  ( <span class="org-font-latex-sedate">\texprint</span>
  ( <span class="org-font-latex-sedate">\regReplaceAll</span> ( <span class="org-font-latex-sedate">\concat</span>
'(^| <span class="org-font-latex-sedate">\w</span>+ <span class="org-font-latex-sedate">\s</span>+|[,.;?¿: <span class="org-font-latex-string">«»</span>]+ <span class="org-font-latex-sedate">\s</span>+)'
'([,.;?¿: <span class="org-font-latex-string">«»</span>·· <span class="org-font-latex-sedate">\n\s\x</span>{1F00}- <span class="org-font-latex-sedate">\x</span>{1FFE} <span class="org-font-latex-sedate">\x</span>{0370}- <span class="org-font-latex-sedate">\x</span>{03FF}]+)'
'( <span class="org-font-latex-sedate">\s</span>+| <span class="org-font-latex-sedate">\n</span>)')
' <span class="org-font-latex-sedate">\1\c</span>{foreignlanguage} <span class="org-font-latex-sedate">\cB</span>\{greek <span class="org-font-latex-sedate">\cE</span>\} <span class="org-font-latex-sedate">\cB</span>\{ <span class="org-font-latex-sedate">\2\cE</span>\} <span class="org-font-latex-sedate">\3</span>'
'#1'))
}}
</pre>
</div>

 <p>
Pero, claro, cuánto mejor sería que esto se convirtiese en un entorno. El problema es que el comando de este intérprete
de Lisp,  <code>\lispinterp</code>, es una macro «corta» y no puede actuar a través de los párrafos: TeX nos devolvería el típico
error de «runaway argument». Podemos resolverlo echando mano de un  <code>\everypar</code>, pero hay muchos paquetes que lo
redefinen. Por suerte, viene en nuestra ayuda el paquete  <code>everyhook</code> para hacernos el apaño, ya que (en palabras de su
autor) «takes control of the six TEX token parameters  <code>\everypar</code>,  <code>\everymath</code>,  <code>\everydisplay</code>,  <code>\everyhbox</code>,  <code>\everyvbox</code>
and  <code>\everycr</code>.»
</p>

 <p>
Cargamos, entonces, el paquete (y de paso  <code>showhyphens</code>, para comprobar que los puntos de corte de sílaba están
activados para los pasajes en griego, y son los correctos). A continuación definimos la macro que aplicará por párrafo
nuestra función de Elisp. Y, finalmente, el entorno:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate"> <span class="org-keyword">\usepackage</span></span>{ <span class="org-function-name">showhyphens</span>}
 <span class="org-font-latex-sedate"> <span class="org-keyword">\usepackage</span></span>{ <span class="org-function-name">everyhook</span>}
 <span class="org-font-latex-sedate">\def\bgriegopar</span>#1 <span class="org-font-latex-sedate">\par</span>{ <span class="org-font-latex-sedate">\babelgriego</span>{#1} <span class="org-font-latex-sedate">\par</span>}
 <span class="org-font-latex-sedate"> <span class="org-keyword">\newenvironment</span></span>{ <span class="org-function-name">fragsgriego</span>}{ <span class="org-function-name"> <span class="org-comment">%</span></span>
 <span class="org-font-latex-sedate"> <span class="org-function-name">\PushPreHook</span></span> <span class="org-function-name">{par}{</span> <span class="org-font-latex-sedate"> <span class="org-function-name">\bgriegopar\null</span></span> <span class="org-function-name">}</span>}
{ <span class="org-font-latex-sedate"> <span class="org-function-name">\PopPreHook</span></span> <span class="org-function-name">{par}</span>}
</pre>
</div>

 <p>
Sólo nos queda ya probar nuestro entorno ( <a href="#org254f6df">aquí</a>, el resultado de la compilación):
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate"> <span class="org-keyword">\begin</span></span>{ <span class="org-function-name">fragsgriego</span>}
Consectetuer adipiscing elit Παρυσάτιδος γίγνονται. Consectetuer
adipiscing elit Παρυσάτιδος γίγνονται. Consectetuer adipiscing
elit Παρυσάτιδος γίγνονται. Consectetuer adipiscing elit
Παρυσάτιδος γίγνονται. Consectetuer adipiscing elit Παρυσάτιδος
γίγνονται. Consectetuer adipiscing elit Παρυσάτιδος γίγνονται.
Consectetuer adipiscing elit Παρυσάτιδος γίγνονται. Consectetuer
adipiscing elit Παρυσάτιδος γίγνονται. Consectetuer adipiscing
elit Παρυσάτιδος γίγνονται. Consectetuer adipiscing elit
Παρυσάτιδος γίγνονται.

Consectetuer adipiscing elit Παρυσάτιδος γίγνονται. Consectetuer
adipiscing elit Παρυσάτιδος γίγνονται. Consectetuer adipiscing
elit Παρυσάτιδος γίγνονται. Consectetuer adipiscing elit
Παρυσάτιδος γίγνονται. Consectetuer adipiscing elit Παρυσάτιδος
γίγνονται. Consectetuer adipiscing elit Παρυσάτιδος γίγνονται.
Consectetuer adipiscing elit Παρυσάτιδος γίγνονται. Consectetuer
adipiscing elit Παρυσάτιδος γίγνονται. Consectetuer adipiscing
elit Παρυσάτιδος γίγνονται. Consectetuer adipiscing elit
Παρυσάτιδος γίγνονται.

Consectetuer adipiscing elit Παρυσάτιδος γίγνονται. Consectetuer
adipiscing elit Παρυσάτιδος γίγνονται. Consectetuer adipiscing
elit Παρυσάτιδος γίγνονται. Consectetuer adipiscing elit
Παρυσάτιδος γίγνονται. Consectetuer adipiscing elit Παρυσάτιδος
γίγνονται. Consectetuer adipiscing elit Παρυσάτιδος γίγνονται.
Consectetuer adipiscing elit Παρυσάτιδος γίγνονται. Consectetuer
adipiscing elit Παρυσάτιδος γίγνονται. Consectetuer adipiscing
elit Παρυσάτιδος γίγνονται. Consectetuer adipiscing elit
Παρυσάτιδος γίγνονται.
 <span class="org-font-latex-sedate"> <span class="org-keyword">\end</span></span>{ <span class="org-function-name">fragsgriego</span>}
</pre>
</div>


 <div id="org254f6df" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/lipontex.png" alt="lipontex.png"></img></p>
 <p> <span class="figure-number">Figura 1: </span>Nuestro ejemplo compilado con los cortes de sílaba correctos para griego antiguo y español</p>
</div>
</div>
</div>


 <div id="outline-container-org2d55d9e" class="outline-2">
 <h2 id="org2d55d9e">∞</h2>
 <div class="outline-text-2" id="text-org2d55d9e">
 <div>
 <p>Publicado: 07/10/19</p>

 <p>Última actualización: 21/01/22</p>
</div>
 <div>
 <hr></hr> <p>
 <a href="index.html">Índice general</a>
</p>
 <p>
 <a href="acerca-de.html">Acerca de...</a>
</p>
 <p>
Esta obra está bajo una  <a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/">licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional</a>.
</p>
</div>
</div>
</div>
</div>]]></description>
  <link>https://lunotipia.juanmanuelmacias.com/lispontex.html</link>
  <guid isPermaLink="false">https://lunotipia.juanmanuelmacias.com/lispontex.html</guid>
  <pubDate>vie, 21 ene 2022 22:04:00 +0100</pubDate>
</item>
<item>
  <title>De nuevo el punto alto y la etiqueta &apos;locl&apos;</title>
  <description><![CDATA[<div id="content" class="content">

 <form>
 <p style="text-align: center;"> <button formaction="https://maciaschain.gitlab.io/lunotipia/pdf/loclpuntoalto.pdf"> <font size="2">Descargar esta entrada en formato PDF</font></button></p>
</form>

 <div id="outline-container-org2271bc7" class="outline-2">
 <h2 id="org2271bc7">Ese terco punto a la baja</h2>
 <div class="outline-text-2" id="text-org2271bc7">
 <p>
Mis últimas lecturas de textos griegos publicados recientemente (y no tan recientemente) en España vienen a confirmar lo
que, por otra parte, tampoco necesitaba de mucha confirmación: que el problema del punto alto, que aquí tratamos en
 <a href="https://maciaschain.gitlab.io/lunotipia/punto_alto.html">una anterior entrada</a>, ha devenido ya pandemia difícil de
atajar. Son rémoras bastante gruesas, al menos, que comentamos prolijamente en su momento: el gran error de Unicode de
recomendar, e incluso imponer, el carácter del punto medio a costa del punto alto; la ¿dejadez? de los diseñadores de
tipos a la hora de concederle una adecuada altura al punto alto ( <i>ano teleia</i>) real, probablemente influidos por lo
primero; y, cómo no, la habitual ignorancia militante hacia la tipografía griega o la tipografía digital en general por
parte de los responsables de la producción editorial. Que en el fondo no es ignorancia (toda ignorancia es curable a
base de curiosidad y aplicación), sino más bien una terca impermeabilidad sumada a un ya proverbial conformismo.
</p>

 <p>
Un caso típico de punto alto mal ubicado lo encontré hace poco en esta edición de  <i>Ismene</i> de Ritsos (ver  <a href="#org0703532">1</a>),
publicada por Acantilado en 2012, con (por otra parte, notable) traducción de Selma Ancira. Sus páginas son por cierto
bastante pródigas en ejemplos de este error tipográfico, donde ya no sabemos si lo que se está empleando es el carácter
del punto medio (diseñado en esa fuente de estilo Times un poco más alto de lo esperable) o el del punto alto (menos
probable, me temo), situado más bajo de lo que sería correcto, como sucede en la mayoría de las fuentes con soporte para
escritura griega. Ambos inconvenientes, inaceptables en cualquier caso para la tipografía de esta lengua, se hubiesen
solventado si se hubiese utilizado un sistema de tipografía digital real para la confección de estas páginas: es decir,
si se hubiera empleado TeX y lo hubiera hecho alguien con los conocimientos adecuados <sup> <a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink">1</a></sup>. Porque —no lo
olvidemos— TeX es sólo la herramienta.
</p>

 <p>
El tipo de letra empleado también me sugiere el siguiente comentario. Si se hubiese optado por LuaTeX como motor
tipográfico, y si hubiésemos querido mantener ese estilo Times, yo me habría tirado de cabeza sin pensar hacia la fuente
 <b>Tempora LGC Unicode</b> de Alexej Kryukov. No sólo es de mayor calidad y más refinada que la del texto del ejemplo <sup> <a id="fnr.2" class="footref" href="#fn.2" role="doc-backlink">2</a></sup>,
sino que hace una rigurosa distinción entre los caracteres del punto medio y los del punto alto (véase  <a href="#org164f67a">2</a>)
y —es más— aporta una propiedad OpenType de sustitución que reemplazará el punto medio por el correcto  <i>ano teleia</i>
en el contexto adecuado, es decir, en la escritura griega. Esto es de gran utilidad, pues evitaremos así cualquier tipo
de inconsistencia y nos aseguramos de que siempre tendremos el signo del punto alto en nuestro texto.
Expliquemos esa propiedad más extensamente en el siguiente apartado.
</p>


 <div id="org0703532" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/ano-teleia-ritsos-acantilado.jpg" alt="ano-teleia-ritsos-acantilado.jpg" style="width:60%"></img></p>
 <p> <span class="figure-number">Figura 1: </span>Puntos altos no tan altos en el  <i>Ismene</i> de Ritsos (Acantilado)</p>
</div>


 <div id="org164f67a" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/comparaci%C3%B3n-puntoalto-medio-tempora-lualatex.png" alt="comparaci%C3%B3n-puntoalto-medio-tempora-lualatex.png" style="width:60%"></img></p>
 <p> <span class="figure-number">Figura 2: </span>Los caracteres del punto medio y el punto alto en la fuente Tempora LGC Unicode</p>
</div>
</div>
</div>

 <div id="outline-container-Punto alto y etiqueta ~locl~ en Tempora LGC Unicode: ejemplo de uso en LuaTeX con ~fontspec~" class="outline-2">
 <h2 id="Punto alto y etiqueta ~locl~ en Tempora LGC Unicode: ejemplo de uso en LuaTeX con ~fontspec~">Punto alto y etiqueta ’locl’ en Tempora LGC Unicode: ejemplo de uso en LuaTeX con ’fontspec’</h2>
 <div class="outline-text-2" id="text-Punto alto y etiqueta ~locl~ en Tempora LGC Unicode: ejemplo de uso en LuaTeX con ~fontspec~">
 <p>
La etiquete OpenType  <code>locl</code> pertenece al grupo GSUB de sustitución de caracteres y su correspondiente propiedad se
ejecuta únicamente dentro de un  <code>script</code> (es decir, de un sistema de escritura) determinado. Si editamos Tempora LGC Unicode con
el editor de fuentes Fontforge (véase fig.  <a href="#org9c4d062">3</a>), veremos que nuestra fuente tiene varios valores  <code>locl</code> para
el  <code>script</code> griego, entre las cuales se encuentra la sustitución del punto medio por el punto alto  <i>ano teleia</i>
canónico. Comprobamos que es así si abrimos en Fontforge la Ventana de métricas y activamos la etiqueta, como puede
apreciarse en la fig.  <a href="#orgcf1d214">4</a>.
</p>


 <div id="org9c4d062" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/locl-tempora-fontforge.png" alt="locl-tempora-fontforge.png"></img></p>
 <p> <span class="figure-number">Figura 3: </span>Valores de  <code>locl</code> en Tempora LGC Unicode</p>
</div>

 <p>
Así pues, para que la sustitución se lleve a efecto, debemos activar la opción de  <code>fontspec</code>  <code>Script=Greek</code> en la
familia que hayamos definido para griego dentro de nuestro documento LaTeX. Podemos hacerlo directamente desde las
facilidades que ofrece el paquete  <code>babel</code>, de tal forma que definiremos una familia para el idioma principal, donde el
punto medio será punto medio siempre, y otra para griego, donde todo punto medio se sustituirá por el alto. En ésta,
activaremos el  <code>script</code> para griego junto a la etiqueta  <code>locl</code>. Y en ambas (floritura aparte) activaremos también la
propiedad de sustitucón por glifo alternativo  <code>aalt</code>, para que la letra  <i>rho</i> se represente con la variante de
descendente curvo, que es más propia de la cursiva, pero la añadimos aquí para emular el ejemplo de la página de
Acantilado.  <a href="#orgc3ed9c6">Así</a> quedaría nuestro código. El resultado de la compilación se muestra en la fig.  <a href="#org51cf6c0">5</a>.
</p>

 <p>

</p>

 <div class="org-src-container">
 <label class="org-src-name"> <span class="listing-number">Listado de programa 1 </span>Nuestro código para compilar en LuaLaTeX</label> <pre class="src src-latex" id="orgc3ed9c6"> <span class="org-font-latex-sedate"> <span class="org-keyword">\documentclass</span></span>{ <span class="org-function-name">article</span>}
 <span class="org-font-latex-sedate"> <span class="org-keyword">\usepackage</span></span>{ <span class="org-function-name">fontspec</span>}
 <span class="org-font-latex-sedate"> <span class="org-keyword">\usepackage</span></span>[ <span class="org-variable-name">greek.polytonic,spanish</span>]{ <span class="org-function-name">babel</span>}
 <span class="org-comment-delimiter">% </span> <span class="org-comment">Definimos la familia general de rm para Tempora LGC Unicode</span>
 <span class="org-font-latex-sedate">\babelfont</span>{rm}[RawFeature={+aalt}]{Tempora LGC Unicode}
 <span class="org-comment-delimiter">% </span> <span class="org-comment">Y aquí definimos la subfamilia para griego</span>
 <span class="org-font-latex-sedate">\babelfont</span>[greek]{rm}[Script=Greek,RawFeature={+locl,+aalt}]{Tempora LGC Unicode}

 <span class="org-font-latex-sedate"> <span class="org-keyword">\begin</span></span>{ <span class="org-function-name">document</span>}

 <span class="org-font-latex-sedate"> <span class="org-type">\Huge</span></span>

ἀέρα·

 <span class="org-font-latex-sedate">\bigskip</span>

 <span class="org-font-latex-sedate">\selectlanguage</span>{greek}

ἀέρα·

 <span class="org-font-latex-sedate"> <span class="org-keyword">\end</span></span>{ <span class="org-function-name">document</span>}
</pre>
</div>


 <div id="orgcf1d214" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/locl-fontforge-tempora-demo.png" alt="locl-fontforge-tempora-demo.png"></img></p>
 <p> <span class="figure-number">Figura 4: </span>Testeando la etiqueta  <code>locl</code> en la ventana de métricas de  <code>fontforge</code></p>
</div>


 <div id="org51cf6c0" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/compilacion-locl.png" alt="compilacion-locl.png"></img></p>
 <p> <span class="figure-number">Figura 5: </span>Compilando nuestro código desde Emacs</p>
</div>
</div>
</div>

 <div id="outline-container-orgf5794a5" class="outline-2">
 <h2 id="orgf5794a5">∞</h2>
 <div class="outline-text-2" id="text-orgf5794a5">
 <div>
 <p>Publicado: 14/10/19</p>

 <p>Última actualización: 21/01/22</p>
</div>
 <div>
 <hr></hr> <p>
 <a href="index.html">Índice general</a>
</p>
 <p>
 <a href="acerca-de.html">Acerca de...</a>
</p>
 <p>
Esta obra está bajo una  <a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/">licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional</a>.
</p>
</div>
</div>
</div>
 <div id="footnotes">
 <h2 class="footnotes">Notas al pie de página: </h2>
 <div id="text-footnotes">

 <div class="footdef"> <sup> <a id="fn.1" class="footnum" href="#fnr.1" role="doc-backlink">1</a></sup> <div class="footpara" role="doc-footnote"> <p class="footpara">
Aunque el punto alto es aquí lo que nos ocupa, no resulta el único error tipográfico que afea el texto griego.
Podemos citar, entre otros, el  <i>kerning</i> defectuoso de algunos pares de letras (véase, en la imagen, las letras ίπ en
τίποτα, tercera línea por debajo), la ausencia de «colgado» de diacríticos al margen (preceptivo para la
 <a href="https://revistacuadernoatico.com/apuntestipograficos/2019/06/09/luatex-y-cavafis/#el-colgado-de-los-diacr%25C3%25ADticos">poesía
en griego politónico</a>) o la falta de un correcto corte por guiones, probablemente porque los programas de autoedición
típicos (QuarK Xpress, InDesign) carecen de los patrones de silabado para griego politónico y griego antiguo.
</p></div></div>

 <div class="footdef"> <sup> <a id="fn.2" class="footnum" href="#fnr.2" role="doc-backlink">2</a></sup> <div class="footpara" role="doc-footnote"> <p class="footpara">
El prof. Kryukov, helenista y gran conocedor de la tipografía griega es autor, además, de otra excelente fuente
que aquí comentamos a menudo: Old Standard.
</p></div></div>


</div>
</div></div>]]></description>
  <link>https://lunotipia.juanmanuelmacias.com/loclpuntoalto.html</link>
  <guid isPermaLink="false">https://lunotipia.juanmanuelmacias.com/loclpuntoalto.html</guid>
  <pubDate>vie, 21 ene 2022 22:04:00 +0100</pubDate>
</item>
<item>
  <title>Porson</title>
  <description><![CDATA[<div id="content" class="content">


 <div id="org225b310" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/homeriopera.jpg" alt="homeriopera.jpg" style="width:70%"></img></p>
 <p> <span class="figure-number">Figura 1: </span>Una página de la  <i>Odisea</i> de la edición de Thomas W. Allen (Oxford)</p>
</div>

 <p>
La tipografía Porson es el gran rasgo distintivo de las ediciones griegas de Oxford, aunque curiosamente fue la
Universidad de Cambridge la que promovió la fundición de estos innovadores tipos, a finales del siglo  <font style="font-size:smaller;">XVIII</font>,
inspirados en la caligrafía del helenista Richard Porson. Y es que esta cursiva diáfana, limpia, desnuda de cualquier
ornamento ha sido la reina indiscutible del griego impreso en el ámbito anglosajón a ambos lados del mar, pues también
está presente en los libritos de Loeb. Encontró su mayor grado de refinamiento en la versión que vendía la empresa
Monotype para sus máquinas del mismo nombre, las monotipias, que compusieron páginas griegas realmente admirables. La
tradición tipográfica de Grecia también la usó bastante en el siglo pasado, aunque no como fuente principal sino como
una variedad de cursiva del estilo  <i>aplá</i>-Didot, diferente de las cursivas estilo  <i>Lipsiakó</i>, que eran las más
habituales para los tipos Didot.
</p>

 <p>
Aunque la Porson no está entre mis predilectas, reconozco que le guardo un cariño especial. Con el permiso de Berenguer
y su gramática, diría que fue la primera tipografía en que empecé a leer y aprender griego. Y Safo habló por primera
vez a mis ojos en Porson. Me pregunto qué hubiese preferido Safo, caso de haber podido escoger: ¿verse publicada en esa
respirable claridad porsónica, que es como entrar en una habitación recién pintada? ¿O tal vez los trazos delicados,
sensuales, de la Didot? De hecho, está en ambas, por parte de las edición de Lobel y Page y la de Eva Maria Voigt.
</p>

 <p>
La Porson de Monotype tiene hoy día una excelente versión digital, firmada por el tipógrafo griego Yiorgos Matthiopoulos
y distribuida bajo licencia libre por la Sociedad de Fuentes Griega. A diferencia de la versión de Monotype, cuyas
mayúsculas también eran cursivas, la recreación de Matthiopoulos es fiel a la Porson original, de mayúsculas rectas. Me
gusta ese efecto un tanto transgresor. Y uso mucho esta fuente para mis trabajos de composición tipográfica en ediciones
críticas (véase fig.  <a href="#orgea823f5">2</a>). Dado que su licencia permite la modificación y re-distribución de la fuente (siempre y
cuando no tenga idéntico nombre que la fuente base), me tomé el trabajo hace un tiempo de realizarle algunas
modificaciones y añadidos, principalmente para trabajar en textos de epigrafía griega. El añadido principal es el del
punto bajo Unicode, y todo el conjunto de instrucciones necesarias para que se ubique correctamente debajo de cada
glifo. Tomé como referencia el punto bajo de las ediciones de Oxford. Quien lo desee, puede descargarla de  <a href="https://gitlab.com/maciaschain/GFS-PorsonMod">mi
repositorio</a> de GitLab.
</p>


 <div id="orgea823f5" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/filipicas.jpg" alt="filipicas.jpg" style="width:80%"></img></p>
 <p> <span class="figure-number">Figura 2: </span>Una página de mi composición de la edición crítica de las  <i>Filípicas</i> de Demóstenes (a cargo de Felipe Hernández Muñoz). El texto griego está en GFS Porson</p>
</div>

 <div id="outline-container-orgb4a7d60" class="outline-2">
 <h2 id="orgb4a7d60">∞</h2>
 <div class="outline-text-2" id="text-orgb4a7d60">
 <div>
 <p>Publicado: 19/12/19</p>

 <p>Última actualización: 21/01/22</p>
</div>
 <div>
 <hr></hr> <p>
 <a href="index.html">Índice general</a>
</p>
 <p>
 <a href="acerca-de.html">Acerca de...</a>
</p>
 <p>
Esta obra está bajo una  <a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/">licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional</a>.
</p>
</div>
</div>
</div>
</div>]]></description>
  <link>https://lunotipia.juanmanuelmacias.com/porson.html</link>
  <guid isPermaLink="false">https://lunotipia.juanmanuelmacias.com/porson.html</guid>
  <pubDate>vie, 21 ene 2022 22:04:00 +0100</pubDate>
</item>
<item>
  <title>El punto alto griego, Unicode y LuaTeX</title>
  <description><![CDATA[<div id="content" class="content">

 <form>
 <p style="text-align: center;"> <button formaction="https://maciaschain.gitlab.io/lunotipia/pdf/punto_alto.pdf"> <font size="2">Descargar esta entrada en formato PDF</font></button></p>
</form>


 <p>
El punto alto es un signo prosódico específico de la escritura griega, cuyo uso vendría a ser equivalente al del punto y
coma en la puntuación latina. El estándar Unicode lo tiene codificado en la posición  <code>U+0387</code>, y lo nombra (como en el
caso del resto de caracteres de todo el rango Unicode que afecta al griego) con el término empleado en griego actual:
 <i>ano teleía</i>. El signo, pues, estaría bien definido de cara al diseño de fuentes y la correcta representación
tipográfica de la lengua griega. Pero el problema viene, como suele ser demasiado frecuente en Unicode, por la
duplicidad de caracteres. Tal es así, que el carácter que nos ocupa no pocas veces se confunde con el del punto medio
( <i>middle dot</i>:  <code>U+00B7</code>). La contaminación ya se remonta a antes de Unicode, aunque parece que en estos últimos tiempos
digitales el punto medio va ganando la partida. Sin ir más lejos, la distribución de teclado que uso en Linux para
escribir en griego tiene mapeado por defecto este punto a costa del correcto  <i>ano teleía</i>. Vemos, por tanto, que el
problema del punto alto resulta ser al cabo un problema de altura. Se viene a unir al juego, además, otra anomalía
habitual, y es que algunas fuentes, aun disponiendo de los dos caracteres, igualan la altura del  <i>ano teleía</i> con la del
punto medio, con lo cual ambos signos son indistinguibles. Probablemente los diseñadores de tipos se dejan llevar por
esta tendencia a la baja de nuestro punto griego. O, en el fondo, no hay un consenso total y la cuestión ha de quedar
abierta  <i>sine die</i>. En mi opinión, el punto alto debe ser eso: un punto alto. ¿A qué altura? Lo más razonable sería no
muy lejos de la altura  <i>x</i> de la fuente, como se ve en estos dos ejemplos tomados de las  <i>Platonis Opera</i> de Oxford
(fig.  <a href="#org6b8adee">1</a>) y el Dionisio de Halicarnaso de Teubner (fig.  <a href="#orgd90113b">2</a>).
</p>


 <div id="org6b8adee" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/platonis-opera-punto-alto.png" alt="platonis-opera-punto-alto.png"></img></p>
 <p> <span class="figure-number">Figura 1: </span>El punto  <i>correctamente</i> alto en las  <i>Platonis Opera</i> de Oxford</p>
</div>


 <div id="orgd90113b" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/dionisio-de-halicarnaso-punto-alto-teubner.png" alt="dionisio-de-halicarnaso-punto-alto-teubner.png"></img></p>
 <p> <span class="figure-number">Figura 2: </span>Y en Teubner</p>
</div>

 <p>
La excelente y siempre recomendable fuente Old Standard de Alexey Kryukov distingue claramente el punto medio del punto
alto (aunque este último, curiosamente, es de un peso algo mayor, como se aprecia en la fig.  <a href="#org226e1c9">3</a>). Es más,
incluye la etiqueta Open Type  <code>locl</code> (sustitución de formas locales para un sistema de escritura determinado), gracias a
la cual nos aseguraremos de que todo punto medio en nuestro texto griego a procesar sea sustituido por el  <i>ano teleía</i>:
siempre y cuando, claro, tengamos activada dicha marca y el  <code>script</code> para griego.
</p>


 <div id="org226e1c9" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/punto_alto_old_standard.png" alt="punto_alto_old_standard.png"></img></p>
 <p> <span class="figure-number">Figura 3: </span>Contraste de punto alto y punto medio en la fuente Old Standard</p>
</div>

 <p>

</p>

 <p>
En otras fuentes que dispongan de ambos caracteres bien diferenciados, pero que carezcan de esa característica Open
Type, podremos añadirla con un software editor de fuentes (Fontforge es aquí siempre el recomendado). La otra
posibilidad, si usamos Lua(La)TeX, es aplicarla al vuelo, sin necesidad de editar nuestra fuente, gracias a la función
Lua  <code>fonts.handlers.otf.addfeature</code> dentro de una orden  <code>directlua</code>. Añadiríamos esto en el preámbulo:
</p>

 <p>

</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate">\directlua</span>{
fonts.handlers.otf.addfeature{
name = "substest",
type = "substitution",
data = {
periodcentered = "anoteleia",
       },
    }
}
</pre>
</div>

 <p>
La etiqueta, que hemos llamado (por ejemplo)  <code>substest</code>, podemos activarla o desactivarla a discreción mediante un
 <code>RawFeature={+substest}</code> o  <code>RawFeature={-substest}</code>, respectivamente.
</p>

 <p>
Podemos también realizar esta sustitución de forma nativa a TeX, mediante la modificación de los catcodes. Tocar los
catcodes siempre es delicado y puede traer consecuencias inesperadas en nuestra compilación. La forma correcta de
hacerlo sería algo así como esto:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate">\begingroup</span>
 <span class="org-font-latex-sedate">\catcode</span>`\^^^^00b7= <span class="org-font-latex-sedate">\active</span>
 <span class="org-font-latex-sedate">\protected\gdef</span>^^^^00b7{ <span class="org-font-latex-sedate">\string</span> ^^^^0387} <span class="org-comment">%</span>
 <span class="org-font-latex-sedate">\endgroup</span>
 <span class="org-font-latex-sedate">\AtBeginDocument</span>{ <span class="org-comment">%</span>
         <span class="org-font-latex-sedate">\catcode</span>`\^^^^00b7= <span class="org-font-latex-sedate">\active</span>
}
</pre>
</div>

 <p>
En otros contextos, tal vez queramos componer en una fuente griega que, si bien tiene definido el carácter del  <i>ano
teleia</i>, éste se ubica (como es habitual, ya dijimos) o bien más bajo de lo deseable o exactamente a la misma altura que
el punto medio. Vamos, que el diseñador de fuentes ha hecho un simple «copia y pega» de glifos y no se ha complicado la
vida. ¿Cómo lo arreglamos? Podemos, en principio, editar la fuente con Fontforge, y así modificar la altura de nuestro
signo. Pero en LuaTeX nos vuelve a ayudar un poco de código Lua para el preprocesado, de tal modo que nos ahorramos el
andar editando y renombrando fuentes. De nuevo, un método simple, limpio y no destructivo (para con la fuente original).
</p>

 <p>
Supongamos, entonces, que queremos componer con Minion Pro, cuyo punto alto luce así de mal colocado cuando nos viene
«de fábrica» (fig.  <a href="#org3195f90">fig:minion</a>).
</p>


 <div id="org3195f90" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/puntos-altos1.png" alt="puntos-altos1.png"></img></p>
 <p> <span class="figure-number">Figura 4: </span>El remiso punto alto de la Minion Pro</p>
</div>

 <p>
definimos una simple función en Lua que nos reemplace tanto el punto medio como el punto alto (así nos aseguramos de que
la corrección será global) por el propio punto alto, que habremos (eso sí) encerrado en una  <code>\raisebox</code> para elevarlo.
Por ejemplo, declarando este comando:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate">\def\puntoalto</span>{ <span class="org-font-latex-sedate">\raisebox</span>{0.3ex}{ <span class="org-font-latex-sedate">\char</span>"0387}}
</pre>
</div>

 <p>
Conviene usar, por cierto, una magnitud relativa como  <code>ex</code> y no absoluta (puntos, milímetros, etc). Así el punto se
ubicará siempre igual independientemente del cuerpo de letra empleado.
</p>

 <p>
Nuestra función en Lua la podemos encerrar en un entorno  <code>luacode</code>, proporcionado por el paquete del mismo nombre:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate"> <span class="org-keyword">\begin</span></span>{ <span class="org-function-name">luacode</span>}
   function cambiar_puntoalto ( texto )
   texto = string.gsub ( texto, "·",   " <span class="org-font-latex-warning">\\</span>puntoalto" ) -- sustituye punto medio
   texto = string.gsub ( texto, "·",   " <span class="org-font-latex-warning">\\</span>puntoalto" ) -- sustituye punto alto original
    return texto
   end
 <span class="org-font-latex-sedate"> <span class="org-keyword">\end</span></span>{ <span class="org-function-name">luacode</span>}
</pre>
</div>

 <p>
Y en lo que hace a la parte LaTeX, un par de comandos que active o desactive la función:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate"> <span class="org-keyword">\newcommand</span></span> <span class="org-font-latex-sedate"> <span class="org-function-name">\anoteleia</span></span>{ <span class="org-font-latex-sedate"> <span class="org-function-name">\directlua</span></span> <span class="org-function-name">{luatexbase.add_to_callback</span>
 <span class="org-function-name">   ( "process_input_buffer" , cambiar_puntoalto , "cambiar_puntoalto" )}</span>}
 <span class="org-font-latex-sedate"> <span class="org-keyword">\newcommand</span></span> <span class="org-font-latex-sedate"> <span class="org-function-name">\middledot</span></span>{ <span class="org-font-latex-sedate"> <span class="org-function-name">\directlua</span></span> <span class="org-function-name">{luatexbase.remove_from_callback</span>
 <span class="org-function-name">    ( "process_input_buffer" , "cambiar_puntoalto" )}</span>}
</pre>
</div>

 <p>
Y, por último, nuestro mínimo ejemplo funcional (resultado de la compilación en la fig.  <a href="#orgb177dfb">5</a>):
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate"> <span class="org-keyword">\begin</span></span>{ <span class="org-function-name">document</span>}

   πέπονθα· (con punto alto original)

      <span class="org-font-latex-sedate">\anoteleia</span>  <span class="org-comment">% Sustituye los 2 puntos a nuestro punto alto, pero alto de verdad ;-)</span>

  πέπονθα· / πέπονθα· (con punto medio / punto alto original)

      <span class="org-font-latex-sedate">\middledot</span>  <span class="org-comment">% Deja las cosas como estaban</span>

  πέπονθα· (con punto medio)

 <span class="org-font-latex-sedate"> <span class="org-keyword">\end</span></span>{ <span class="org-function-name">document</span>}
</pre>
</div>


 <div id="orgb177dfb" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/puntos-altos2.png" alt="puntos-altos2.png"></img></p>
 <p> <span class="figure-number">Figura 5: </span>Compilación del ejemplo</p>
</div>

 <p>
 <b>Y estrambote</b>: En este vídeo  muestro un ejemplo real (esta vez con la fuente Linux Libertine), dentro de un libro que
compuse recientemente.
</p>

 <iframe src="https://player.vimeo.com/video/341114471" width="640" height="360" frameborder="0" allow="autoplay; fullscreen"></iframe>
 <p> <a href="https://vimeo.com/341114471">Corrección de la altura del punto alto griego en LuaTeX</a> from  <a href="https://vimeo.com/user70979426">Juan Manuel Macías Chaín</a> on  <a href="https://vimeo.com">Vimeo</a>.</p>

 <div id="outline-container-org4e2abb1" class="outline-2">
 <h2 id="org4e2abb1">∞</h2>
 <div class="outline-text-2" id="text-org4e2abb1">
 <div>
 <p>Publicado: 03/09/19 - 20:37</p>

 <p>Última actualización: 03/09/19 - 20:38</p>
</div>
 <div>
 <hr></hr> <p>
 <a href="index.html">Índice general</a>
</p>
 <p>
 <a href="acerca-de.html">Acerca de...</a>
</p>
 <p>
Esta obra está bajo una  <a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/">licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional</a>.
</p>
</div>
</div>
</div>
</div>]]></description>
  <link>https://lunotipia.juanmanuelmacias.com/punto_alto.html</link>
  <guid isPermaLink="false">https://lunotipia.juanmanuelmacias.com/punto_alto.html</guid>
  <pubDate>vie, 21 ene 2022 22:04:00 +0100</pubDate>
</item>
<item>
  <title>Sobre el problema tipográfico del punto bajo</title>
  <description><![CDATA[<div id="content" class="content">

 <p>
Un vídeo (algo largo, me temo) sobre los variados problemas que presentan tanto el punto
bajo (habitual en los textos de epigrafía, sobre todo de epigrafía griega) como otros
caracteres de combinación Unicode.
</p>

 <div class="org-center">
 <iframe src="https://player.vimeo.com/video/457165348" width="640" height="360" frameborder="0" allow="autoplay; fullscreen"></iframe>
 <p> <a href="https://vimeo.com/457165348">Sobre el problema tipográfico del punto bajo en epigrafía griega</a> from  <a href="https://vimeo.com/user70979426">Juan Manuel Macías Chaín</a> on  <a href="https://vimeo.com">Vimeo</a>.</p>
</div>

 <div id="outline-container-orga84ad6c" class="outline-2">
 <h2 id="orga84ad6c">∞</h2>
 <div class="outline-text-2" id="text-orga84ad6c">
 <div>
 <p>Publicado: 06/12/20</p>

 <p>Última actualización: 21/01/22</p>
</div>
 <div>
 <hr></hr> <p>
 <a href="index.html">Índice general</a>
</p>
 <p>
 <a href="acerca-de.html">Acerca de...</a>
</p>
 <p>
Esta obra está bajo una  <a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/">licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional</a>.
</p>
</div>
</div>
</div>
</div>]]></description>
  <link>https://lunotipia.juanmanuelmacias.com/punto_bajo_video.html</link>
  <guid isPermaLink="false">https://lunotipia.juanmanuelmacias.com/punto_bajo_video.html</guid>
  <pubDate>vie, 21 ene 2022 22:04:00 +0100</pubDate>
</item>
<item>
  <title>¿Qué le pido a un libro?</title>
  <description><![CDATA[<div id="content" class="content">

 <p>
¿Qué le pido a un libro? En principio, como tal libro, que su tipografía sea excelente. Y creo, junto a don Stanley Morison, que la excelencia de una tipografía se mide en términos de invisibilidad. Que el tipógrafo no se interponga entre lo que leo y yo como un camarero importuno. Tan sólo que me haga suave y fácil el viaje y no me pierda por sinuosas calles entre párrafos. Ni que me deje llorar con líneas huérfanas. Que funcione, cuando lo necesite, la venerable matemática y que la página tenga un buen color, pero que esa matemática no acabe deviniendo lastre, pues dos más dos, en el mundo, no siempre suman cuatro. Y que sepa usar la tinta más difícil, que es el espacio en blanco. Luego, a lo que leo, simplemente le pido que me guste, y, si es posible, que me enamore en un inagotable idilio. Que el libro viva y duerma conmigo, viaje conmigo, se desgaste conmigo. Que a pesar de nuestros momentos de silencio mutuo, sepamos encontrarnos a la vuelta del tiempo como dos viejos amigos que tienen mucho que decirse, cambiados, fragmentados por los días o las noches, y sin embargo, oh misterio, siempre los mismos. Que nunca se pudra, nuevo, en las estanterías, y que la intemperie dore sus páginas como un erudito otoño, pero que venga agotado de muchas deslumbradas primaveras. Y que algún día, tal vez, nos pida ser regalado: y es que no hay libro más vivo que el que cambia de manos.
</p>


 <div id="outline-container-org2b6a892" class="outline-2">
 <h2 id="org2b6a892">∞</h2>
 <div class="outline-text-2" id="text-org2b6a892">
 <div>
 <p>Publicado: 31/08/19 - 19:07</p>

 <p>Última actualización: 31/08/19 - 19:07</p>
</div>
 <div>
 <hr></hr> <p>
 <a href="index.html">Índice general</a>
</p>
 <p>
 <a href="acerca-de.html">Acerca de...</a>
</p>
 <p>
Esta obra está bajo una  <a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/">licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional</a>.
</p>
</div>
</div>
</div>
</div>]]></description>
  <link>https://lunotipia.juanmanuelmacias.com/quelepido.html</link>
  <guid isPermaLink="false">https://lunotipia.juanmanuelmacias.com/quelepido.html</guid>
  <pubDate>vie, 21 ene 2022 22:04:00 +0100</pubDate>
</item>
<item>
  <title>La sustitución contextual OpenType en LuaTeX</title>
  <description><![CDATA[<div id="content" class="content">

 <form>
 <p style="text-align: center;"> <button formaction="https://maciaschain.gitlab.io/lunotipia/pdf/sustitucion_contextual.pdf "> <font size="2">Descargar esta entrada en formato PDF</font></button></p>
</form>

 <p>
Una de las características más atractivas que ofrece la tecnología OpenType es aquella que consiste en sustituir unas
letras por otras dependiendo de un determinado contexto. Puede usarse para resolver ciertas necesidades de tipografía
pragmática, pero también habrá escenarios para satisfacer otras de índole más bien estilística o histórica, casi siempre
sepultadas en el olvido tras la llegada de los ordenadores al mundo de la producción editorial. A este segundo grupo
pertenecería la sustitución en mitad de palabra de la letra griega beta minúscula β por su variante estilística curvada
(o beta sin descendente) ϐ, procedimiento muy habitual en la tradición impresora francesa del pasado siglo y que,
aplicado en los textos y en las condiciones adecuadas, puede crear un efecto muy grato al lector (o al menos al lector
que soy yo).
</p>

 <p>
Tenemos (si somos consecuentes con la tesis Unicode que distingue caracteres de glifos) un único carácter para la letra
beta, idea platónica que puede concretarse textualmente en dos posibles glifos: el de la beta «normal» con descendente y
el de la beta curvada, que el estándar Unicode sitúa bajo el código  <code>U+03D0</code> y que denomina «Greek beta symbol» (fig.
 <a href="#orgc7ad66f">1</a>)
</p>

 <p>
Lo que viene a aportar OpenType es el añadir a la fuente tipográfica una propiedad —digamos— tridimensional, que
permite que el carácter opte por un glifo u otro según una serie de instrucciones que la fuente pueda incluir. Basta con
activar la etiqueta adecuada (que casi siempre suele ser  <code>calt</code>, de «contextual alternates»), por ejemplo en nuestro
 <span style="font-family:serif;">LuaL <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> con el paquete Fontspec. A los efectos de transmisión textual —y esto es lo esencial, insistimos— ambos
glifos siguen siendo el mismo carácter beta, como podemos comprobar si copiamos cualquier pasaje de un PDF donde se haya
operado la sustitución contextual y lo pegamos en un editor de texto.
</p>


 <div id="orgc7ad66f" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/beta_symbol.png" alt="beta_symbol.png" style="width:70%"></img></p>
 <p> <span class="figure-number">Figura 1: </span>Descripción del carácter Unicode  <code>GREEK BETA SYMBOL</code></p>
</div>

 <p>
Ahora bien, OpenType se limita a ofrecer los protocolos necesarios. Otro cantar es hasta qué punto los implementan los
diseñadores de fuentes. Por supuesto, si nuestra fuente no dispone de esa característica, como sucede en la gran mayoría
de fuentes que incluyen soporte para la escritura griega, siempre podremos añadirla nosotros mismos mediante el editor
de fuentes  <a href="http://fontforge.github.io/en-US/">Fontforge</a>. Pero hoy toca hablar aquí de otra manera mucho más simple, si cabe, de hacerlo, que es dentro de
 <span style="font-family:serif;">LuaT <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> y echando mano de la utilísima función Lua  <code>fonts.handlers.otf.addfeature</code>, que nos permite definir en el
pre-procesado del material textual ciertas características OpenType «al vuelo», gracias a la habilidad que  <span style="font-family:serif;">LuaT <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span>
tiene de «injertar», como su propio nombre anuncia,  <i>scripts</i> y código Lua en el proceso de compilación.  <span style="font-family:serif;">LuaT <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span>
incluye en sus engranajes un intérprete de Lua, lo que supone que podemos puentear las primitivas de  <span style="font-family:serif;">T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> mediante
este versátil y ligero lenguaje. En lo que atañe a nuestra deseada sustitución, la ventaja de hacerlo así es evidente,
pues añadiremos la propiedad OpenType a cualquier fuente que se nos antoje, sin necesidad de editarla y de crear
versiones modificadas de ésta. Siempre y cuándo, claro, la fuente disponga de los glifos necesarios con que jugar, pues
 <code>fonts.handlers.otf.addfeature</code> no crea letras de la nada, sino que opera sobre la posición y el contexto de los glifos
de que ya dispone la fuente.
</p>

 <p>
Veamos una prueba, por ejemplo, con la fuente Linux Libertine, que sí dispone de esos glifos. Añadimos lo siguiente a
nuestro archivo fuente de  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span>, convenientemente encerrado en la primitiva  <code>\directlua</code>, necesaria para poder
insertar código Lua.
</p>

 <p>
Empezamos por definir una variable y asignarle una tabla de todos los caracteres griegos que deben ir antes del glifo a
sustituir:
</p>

 <div class="org-src-container">
 <pre class="src src-lua">letras_griegas = {  <span class="org-string">"α"</span>,  <span class="org-string">"ἀ"</span>,  <span class="org-string">"ἁ"</span>,  <span class="org-string">"ἂ"</span>,  <span class="org-string">"ἃ"</span>,  <span class="org-string">"ἄ"</span>,  <span class="org-string">"ἅ"</span>,  <span class="org-string">"ἆ"</span>,  <span class="org-string">"ἇ"</span>,
 <span class="org-string">"Ἀ"</span>,  <span class="org-string">"Ἁ"</span>,  <span class="org-string">"Ἂ"</span>,  <span class="org-string">"Ἃ"</span>,  <span class="org-string">"Ἄ"</span>,  <span class="org-string">"Ἅ"</span>,  <span class="org-string">"Ἆ"</span>,  <span class="org-string">"Ἇ"</span>,  <span class="org-string">"ε"</span>,  <span class="org-string">"ἐ"</span>,  <span class="org-string">"ἑ"</span>,  <span class="org-string">"ἒ"</span>,  <span class="org-string">"ἓ"</span>,  <span class="org-string">"ἔ"</span>,  <span class="org-string">"ἕ"</span>,
 <span class="org-string">"Ἐ"</span>,  <span class="org-string">"Ἑ"</span>,  <span class="org-string">"Ἒ"</span>,  <span class="org-string">"Ἓ"</span>,  <span class="org-string">"Ἔ"</span>,  <span class="org-string">"Ἕ"</span>,  <span class="org-string">"η"</span>,  <span class="org-string">"ἠ"</span>,  <span class="org-string">"ἡ"</span>,  <span class="org-string">"ἢ"</span>,  <span class="org-string">"ἣ"</span>,  <span class="org-string">"ἤ"</span>,  <span class="org-string">"ἥ"</span>,  <span class="org-string">"ἦ"</span>,  <span class="org-string">"ἧ"</span>,
 <span class="org-string">"Ἠ"</span>,  <span class="org-string">"Ἡ"</span>,  <span class="org-string">"Ἢ"</span>,  <span class="org-string">"Ἣ"</span>,  <span class="org-string">"Ἤ"</span>,  <span class="org-string">"Ἥ"</span>,  <span class="org-string">"Ἦ"</span>,  <span class="org-string">"Ἧ"</span>,  <span class="org-string">"ι"</span>,  <span class="org-string">"ἰ"</span>,  <span class="org-string">"ἱ"</span>,  <span class="org-string">"ἲ"</span>,  <span class="org-string">"ἳ"</span>,  <span class="org-string">"ἴ"</span>,  <span class="org-string">"ἵ"</span>,  <span class="org-string">"ἶ"</span>,  <span class="org-string">"ἷ"</span>,
 <span class="org-string">"Ἰ"</span>,  <span class="org-string">"Ἱ"</span>,  <span class="org-string">"Ἲ"</span>,  <span class="org-string">"Ἳ"</span>,  <span class="org-string">"Ἴ"</span>,  <span class="org-string">"Ἵ"</span>,  <span class="org-string">"Ἶ"</span>,  <span class="org-string">"Ἷ"</span>,  <span class="org-string">"ο"</span>,  <span class="org-string">"ὀ"</span>,  <span class="org-string">"ὁ"</span>,  <span class="org-string">"ὂ"</span>,  <span class="org-string">"ὃ"</span>,  <span class="org-string">"ὄ"</span>,  <span class="org-string">"ὅ"</span>,
 <span class="org-string">"Ὀ"</span>,  <span class="org-string">"Ὁ"</span>,  <span class="org-string">"Ὂ"</span>,  <span class="org-string">"Ὃ"</span>,  <span class="org-string">"Ὄ"</span>,  <span class="org-string">"Ὅ"</span>,  <span class="org-string">"υ"</span>,  <span class="org-string">"ὐ"</span>,  <span class="org-string">"ὑ"</span>,  <span class="org-string">"ὒ"</span>,  <span class="org-string">"ὓ"</span>,  <span class="org-string">"ὔ"</span>,  <span class="org-string">"ὕ"</span>,  <span class="org-string">"ὖ"</span>,  <span class="org-string">"ὗ"</span>,
 <span class="org-string">"Ὑ"</span>,  <span class="org-string">"Ὓ"</span>,  <span class="org-string">"Ὕ"</span>,  <span class="org-string">"Ὗ"</span>,  <span class="org-string">"ω"</span>,  <span class="org-string">"ὠ"</span>,  <span class="org-string">"ὡ"</span>,  <span class="org-string">"ὢ"</span>,  <span class="org-string">"ὣ"</span>,  <span class="org-string">"ὤ"</span>,  <span class="org-string">"ὥ"</span>,  <span class="org-string">"ὦ"</span>,  <span class="org-string">"ὧ"</span>,
 <span class="org-string">"Ὠ"</span>,  <span class="org-string">"Ὡ"</span>,  <span class="org-string">"Ὢ"</span>,  <span class="org-string">"Ὣ"</span>,  <span class="org-string">"Ὤ"</span>,  <span class="org-string">"Ὥ"</span>,  <span class="org-string">"Ὦ"</span>,  <span class="org-string">"Ὧ"</span>,
 <span class="org-string">"ὰ"</span>, <span class="org-string">"ά"</span>, <span class="org-string">"ὲ"</span>, <span class="org-string">"έ"</span>, <span class="org-string">"ὴ"</span>, <span class="org-string">"ή"</span>, <span class="org-string">"ὶ"</span>, <span class="org-string">"ί"</span>, <span class="org-string">"ὸ"</span>, <span class="org-string">"ό"</span>, <span class="org-string">"</span>
 <span class="org-string">ὺ"</span>, <span class="org-string">"ύ"</span>, <span class="org-string">"ὼ"</span>, <span class="org-string">"ώ"</span>, <span class="org-string">"ᾀ"</span>, <span class="org-string">"ᾁ"</span>, <span class="org-string">"ᾂ"</span>, <span class="org-string">"ᾃ"</span>, <span class="org-string">"ᾄ"</span>, <span class="org-string">"ᾅ"</span>, <span class="org-string">"ᾆ"</span>, <span class="org-string">"ᾇ"</span>,
 <span class="org-string">"ἈΙ"</span>, <span class="org-string">"ᾉ"</span>,  <span class="org-string">"ἊΙ"</span>, <span class="org-string">"ᾋ"</span>,  <span class="org-string">"ἌΙ"</span>, <span class="org-string">"ᾍ"</span>,  <span class="org-string">"ἎΙ"</span>, <span class="org-string">"ᾏ"</span>,
 <span class="org-string">"ᾐ"</span>, <span class="org-string">"ᾑ"</span>, <span class="org-string">"ᾒ"</span>, <span class="org-string">"ᾓ"</span>,  <span class="org-string">"ᾔ"</span>, <span class="org-string">"ᾕ"</span>, <span class="org-string">"ᾖ"</span>, <span class="org-string">"ᾗ"</span>, <span class="org-string">"ἨΙ"</span>, <span class="org-string">"ᾙ"</span>,
 <span class="org-string">"ἪΙ"</span>, <span class="org-string">"ᾛ"</span>,  <span class="org-string">"ἬΙ"</span>, <span class="org-string">"ᾝ"</span>,  <span class="org-string">"ἮΙ"</span>, <span class="org-string">"ᾟ"</span>,  <span class="org-string">"ᾠ"</span>, <span class="org-string">"ᾡ"</span>, <span class="org-string">"ᾢ"</span>, <span class="org-string">"ᾣ"</span>, <span class="org-string">"ᾤ"</span>, <span class="org-string">"ᾥ"</span>, <span class="org-string">"ᾦ"</span>, <span class="org-string">"ᾧ"</span>,
 <span class="org-string">"ὨΙ"</span>, <span class="org-string">"ᾩ"</span>,  <span class="org-string">"ὪΙ"</span>,  <span class="org-string">"ᾫ"</span>,  <span class="org-string">"ὬΙ"</span>, <span class="org-string">"ᾭ"</span>,  <span class="org-string">"ὮΙ"</span>, <span class="org-string">"ᾯ"</span>,
 <span class="org-string">"ᾰ"</span>, <span class="org-string">"ᾱ"</span>, <span class="org-string">"ᾲ"</span>, <span class="org-string">"ᾳ"</span>, <span class="org-string">"ᾴ"</span>, <span class="org-string">"ᾶ"</span>, <span class="org-string">"ᾷ"</span>, <span class="org-string">"Ᾰ"</span>, <span class="org-string">"Ᾱ"</span>, <span class="org-string">"ῆ"</span>, <span class="org-string">"ῇ"</span>,
 <span class="org-string">"ῖ"</span>, <span class="org-string">"ῗ"</span>, <span class="org-string">"Ῐ"</span>, <span class="org-string">"Ῑ"</span>, <span class="org-string">"ῠ"</span>, <span class="org-string">"ῡ"</span>, <span class="org-string">"ῢ"</span>, <span class="org-string">"ΰ"</span>, <span class="org-string">"ῤ"</span>, <span class="org-string">"ῥ"</span>, <span class="org-string">"ῦ"</span>, <span class="org-string">"ῧ"</span>, <span class="org-string">"Ῠ"</span>, <span class="org-string">"Ῡ"</span>, <span class="org-string">"Ῥ"</span>,
 <span class="org-string">"ῲ"</span>, <span class="org-string">"ῳ"</span>, <span class="org-string">"ῴ"</span>, <span class="org-string">"ῶ"</span>, <span class="org-string">"ῷ"</span>,  <span class="org-string">"Ά"</span>, <span class="org-string">"Έ"</span>, <span class="org-string">"Ή"</span>, <span class="org-string">"Ί"</span>, <span class="org-string">"Ό"</span>, <span class="org-string">"Ύ"</span>, <span class="org-string">"Ώ"</span>, <span class="org-string">"ΐ"</span>,
 <span class="org-string">"Α"</span>, <span class="org-string">"Β"</span>, <span class="org-string">"Γ"</span>, <span class="org-string">"Δ"</span>, <span class="org-string">"Ε"</span>, <span class="org-string">"Ζ"</span>, <span class="org-string">"Η"</span>, <span class="org-string">"Θ"</span>, <span class="org-string">"Ι"</span>, <span class="org-string">"Κ"</span>,
 <span class="org-string">"Λ"</span>, <span class="org-string">"Μ"</span>, <span class="org-string">"Ν"</span>, <span class="org-string">"Ξ"</span>, <span class="org-string">"Ο"</span>, <span class="org-string">"Π"</span>, <span class="org-string">"Ρ"</span>, <span class="org-string">"Σ"</span>, <span class="org-string">"Τ"</span>, <span class="org-string">"Υ"</span>, <span class="org-string">"Φ"</span>, <span class="org-string">"Χ"</span>, <span class="org-string">"Ψ"</span>, <span class="org-string">"Ω"</span>, <span class="org-string">"Ϊ"</span>, <span class="org-string">"Ϋ"</span>,
 <span class="org-string">"ά"</span>,  <span class="org-string">"έ"</span>, <span class="org-string">"ή"</span>, <span class="org-string">"ί"</span>, <span class="org-string">"ΰ"</span>, <span class="org-string">"α"</span>, <span class="org-string">"β"</span>, <span class="org-string">"γ"</span>, <span class="org-string">"δ"</span>, <span class="org-string">"ε"</span>, <span class="org-string">"ζ"</span>, <span class="org-string">"η"</span>, <span class="org-string">"θ"</span>,
 <span class="org-string">"ι"</span>, <span class="org-string">"κ"</span>, <span class="org-string">"λ"</span>, <span class="org-string">"μ"</span>, <span class="org-string">"ν"</span>, <span class="org-string">"ξ"</span>, <span class="org-string">"ο"</span>, <span class="org-string">"π"</span>, <span class="org-string">"ρ"</span>, <span class="org-string">"ς"</span>, <span class="org-string">"σ"</span>, <span class="org-string">"τ"</span>, <span class="org-string">"υ"</span>,
 <span class="org-string">"φ"</span>, <span class="org-string">"χ"</span>, <span class="org-string">"ψ"</span>, <span class="org-string">"ω"</span>, <span class="org-string">"ϓ"</span>, <span class="org-string">"ϔ"</span>, <span class="org-string">"ϕ"</span>, <span class="org-string">"ϖ"</span>, <span class="org-string">"ϗ"</span>,  <span class="org-string">"Ϙ"</span>,  <span class="org-string">"ϙ"</span>, <span class="org-string">"Ϛ"</span>, <span class="org-string">"ϛ"</span>, <span class="org-string">"Ϝ"</span>, <span class="org-string">"ϝ"</span>,  <span class="org-string">"ϐ"</span> }
</pre>
</div>

 <p>
Y a continuación, la nueva propiedad OpenType:
</p>

 <div class="org-src-container">
 <pre class="src src-lua">fonts.handlers.otf.addfeature{
   name =  <span class="org-string">"contextualtest"</span>,
    <span class="org-builtin">type</span> =  <span class="org-string">"chainsustitution"</span>,
   lookups = {
      {
          <span class="org-builtin">type</span> =  <span class="org-string">"sustitution"</span>,
         data = {
            [ <span class="org-string">"β"</span>] =  <span class="org-string">"ϐ"</span>,
         },

      },
   },
   data = {
      rules = {
         {
            before  = { letras_griegas  },
            current = { {  <span class="org-string">"β"</span> } },
            lookups = { 1 },
         },
      },
   },
}
</pre>
</div>

 <p>
Explicándolo un poco a trazo grueso. Hemos creado una propiedad OpenType que llamamos  <code>contextualtest</code>, y declaramos que
es de tipo  <code>chainsustitution</code>, es decir, queremos definir una cadena de sustitución contextual. Le incluimos un
 <i>lookup</i> que indica en qué consiste la sustitución («β» a «ϐ»), y más abajo añadimos las reglas. Las cuales consisten en
que todos los caracteres encerrados bajo la variable  <code>before</code> propiciarán la sustitución de beta simple a curvada
 <i>sólo</i> si ellos se sitúan inmediatamente antes de la letra.
</p>

 <p>
Bien, ya casi lo tenemos. Esto nos soluciona el 99 % de los contextos para sustituir la beta en mitad de
palabra. Pero la queremos, precisamente, así, en mitad de palabra y no al final, lo que no evitaría el código
anterior. Naturalmente, son muy raros los casos en que aparezca una beta en esa posición, si pensamos en la escritura
griega real. Pero algún que otro contexto puede surgir, así que sumamos al anterior este otro código, que evitará que
nuestra beta se sustituya por la variante curvada al final de una palabra:
</p>

 <div class="org-src-container">
 <pre class="src src-lua">fonts.handlers.otf.addfeature{
   name =  <span class="org-string">"contextualtest2"</span>,
    <span class="org-builtin">type</span> =  <span class="org-string">"chainsustitution"</span>,
   lookups = {
      {
          <span class="org-builtin">type</span> =  <span class="org-string">"sustitution"</span>,
         data = {
            [ <span class="org-string">"ϐ"</span>] =  <span class="org-string">"β"</span>,
         },
      },
   },
   data = {
      rules = {
         {
            after  = { {  <span class="org-string">" "</span>, 0xFFFC,  <span class="org-string">","</span>,  <span class="org-string">"."</span>,  <span class="org-string">"´"</span>,  <span class="org-string">"·"</span>} },
            current = { {  <span class="org-string">"ϐ"</span> } },
            lookups = { 1 },
         },
      },
   },
}
</pre>
</div>

 <p>
Y pasamos a probar nuestro código, cargando las dos nuevas propiedades OpenType con  <code>fontspec</code>. Definimos entonces, para
la Linux Libertine, dos familias, con y sin sustitución (resultado de la compilación en la fig.  <a href="#org2ff3eb3">2</a>):
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate"> <span class="org-keyword">\documentclass</span></span>{ <span class="org-function-name">article</span>}
 <span class="org-font-latex-sedate"> <span class="org-keyword">\usepackage</span></span>{ <span class="org-function-name">fontspec</span>}
 <span class="org-comment-delimiter">% </span> <span class="org-comment">Aquí iría todo el código Lua...</span>
 <span class="org-font-latex-sedate">\setmainfont</span>{Linux Libertine}
 <span class="org-font-latex-sedate"> <span class="org-keyword">\usepackage</span></span>[ <span class="org-variable-name">greek.ancient</span>]{ <span class="org-function-name">babel</span>}
 <span class="org-font-latex-sedate">\newfontfamily\nobetasub</span>{Linux Libertine}
 <span class="org-font-latex-sedate">\newfontfamily\sibetasub</span>[RawFeature={+contextualtest,+contextualtest2}]{Linux Libertine}
 <span class="org-font-latex-sedate"> <span class="org-keyword">\begin</span></span>{ <span class="org-function-name">document</span>}
 <span class="org-font-latex-sedate">\nobetasub</span>
βαρβάρων - ἐβούλετο - ιβ´
 <span class="org-font-latex-sedate">\sibetasub</span>
βαρβάρων - ἐβούλετο - ιβ´
 <span class="org-font-latex-sedate"> <span class="org-keyword">\end</span></span>{ <span class="org-function-name">document</span>}
</pre>
</div>



 <div id="org2ff3eb3" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/contextual2.png" alt="contextual2.png"></img></p>
 <p> <span class="figure-number">Figura 2: </span>Resultado de la compilación</p>
</div>

 <div id="outline-container-orgb496130" class="outline-2">
 <h2 id="orgb496130">∞</h2>
 <div class="outline-text-2" id="text-orgb496130">
 <div>
 <p>Publicado: 31/08/19</p>

 <p>Última actualización: 21/01/22</p>
</div>
 <div>
 <hr></hr> <p>
 <a href="index.html">Índice general</a>
</p>
 <p>
 <a href="acerca-de.html">Acerca de...</a>
</p>
 <p>
Esta obra está bajo una  <a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/">licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional</a>.
</p>
</div>
</div>
</div>
</div>]]></description>
  <link>https://lunotipia.juanmanuelmacias.com/sustitucion_contextual.html</link>
  <guid isPermaLink="false">https://lunotipia.juanmanuelmacias.com/sustitucion_contextual.html</guid>
  <pubDate>vie, 21 ene 2022 22:04:00 +0100</pubDate>
</item>
<item>
  <title>Tipografía digital: la (eterna) asignatura pendiente</title>
  <description><![CDATA[<div id="content" class="content">

 <form>
 <p style="text-align: center;"> <button formaction="https://maciaschain.gitlab.io/lunotipia/pdf/tipografiadigital.pdf"> <font size="2">Descargar esta entrada en formato PDF</font></button></p>
</form>


 <div id="org7264861" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/ZapfKnuth.jpg" alt="ZapfKnuth.jpg"></img></p>
 <p> <span class="figure-number">Figura 1: </span>El prof. Donald Knuth (izquierda) junto a Hermann Zapf (derecha)</p>
</div>

 <p>
La tipografía digital no es sino la continuación de la tipografía mecánica o «tradicional» mediante medios digitales.
Aspira a sintetizar, reproducir y automatizar aquellos procesos y rutinas de los viejos impresores mediante la
programación y la potencia de cálculo de una computadora. Se trata, por tanto, de una evolución natural que suma y no
resta, y que edifica sobre las bases de un conocimiento heredado. Algoritmos tan sofisticados como el Plass-Knuth de TeX
para el corte de líneas y la composición de párrafo sistematizan la pericia de los cajistas. El propio TeX podría
definirse (lo hemos hecho así a menudo) como un cajista binario. Y Hermann Zapf acudió a la  <i>Biblia</i> de Gutenberg para
sus teorías de escalado horizontal y márgenes ópticos, que aplicaría el  <i>hz</i>-Program de Peter Karow y recogerían luego,
renovadas, pdfTeX y LuaTeX.
</p>

 <p>
Dicho lo cual, podríamos pensar en justicia que la tipografía que se hace en estos tiempos que corren, con dos
decenios casi cumplidos del siglo  <font style="font-size:smaller;">XXI</font>, es tipografía digital. Todo parecería indicarlo, habida cuenta de que la
práctica totalidad del grueso del material de impresión que reciben las imprentas consiste en ese producto etéreo que
llamamos PDF y que se genera en un ordenador. Lo malo es que esta época de avances tecnológicos, presuntos muchas
veces, también lo es de una inusitada frivolidad, de la cual no se escapa ni el término «digital», empleado con pareja
frivolidad por doquier. Y es que lo digital es el lema de nuestro tiempo, de hecho. Lo define todo y todo acaba
siendo, al cabo, digital. Una cosa tan presente y tan ubicua que termina brillando por su ausencia. Acaso ganaríamos
en precisión si hablásemos, más bien, de servidumbre digital. Incluso de borreguismo digital, donde el usuario no es
administrador de los sistemas que utiliza y se contenta con pulsar botones aquí y allá, siempre donde  <i>otros</i> (las
benefactoras corporaciones, las dueñas reales de lo digital) se lo indican. El usuario de medios digitales del llamado
Primer Mundo no sería muy distinto de cualquier miembro de alguna tribu perdida de la Amazonia, instruido en el manejo
de un  <i>smartphone</i> por unos imaginarios y perversos exploradores. Ambos, al final, tardarían lo mismo —muy poco—
en abrirse un perfil en  <i>Instagram</i>.
</p>

 <p>
Insistamos, entonces, en la pregunta: ¿la tipografía que se hace ahora —al menos, la mayor parte de ella— ha de ser
tildada como «digital»? Ciertamente, no. Sería una tipografía producida  <i>en</i> una computadora, pero no  <i>por medio de</i> una
computadora. De la misma forma que una carta de amor redactada con un teclado (y no con pluma de ave y tintero) y
enviada por correo electrónico (y no por paloma mensajera) no convierte a ese amor, expresado con mayor o menor fortuna,
en «digital». Esta tipografía sería, más bien,  <i>paradigital</i>. Está realizada en una computadora, sí, pero no aprovecha
la computación. No la comprende y, por tanto, la desprecia. Los cajistas y los linotipistas de antaño conocían a fondo
su herramienta de trabajo. Ahora tendrás suerte si encuentras a algún «maquetador» o «diseñador gráfico» de hoy día que
sepa o tenga una vaga noción de por qué ha guardado un texto en UTF-8, y qué consecuencias prácticas supone tal acción.
Este tipo de operarios, iletrados digitales  <i>stricto sensu</i>, ha terminado alcanzando el raro estatus de artífices sin
técnica que ejecutan un arte sin herramientas. Algunos, los menos, tendrán algún tipo de cultura tipográfica en
abstracto, y cierta idea de lo que quieren conseguir. Pero les falta el medio y, lo más importante, la materia, junto a
la comprensión de dicha materia. De vacíos así e inanidades tales se nutre el contenido de todos esos másteres de
edición que pululan por ahí (que considero una verdadera estafa y, en caso de estar auspiciados por universidades
públicas, una estafa vergozante) o de páginas web, tan populares como sobrevaloradas, del estilo de  <i>Unos tipos duros</i>,
que por cierto resultan sonrojantemente blandos a la hora de plegarse al  <i>software</i> propietario y privativo. Se verá
bastante decepcionado quien se asome por esos ámbitos buscando algo de tipografía digital real.
</p>

 <p>
El paisaje en torno, por tanto, no parece precisamente acogedor, y lo que tendría que haber sido una transición
natural entre el arte tipográfico mecánico y el producido mediante un ordenador, se ha visto truncado por un penoso
hiato, no surgido de casualidad por cierto, sino promovido interesadamente por las corporaciones de  <i>software</i>. Apple
y Adobe tienen no poca culpa de ello cuando en los 80 y 90 del pasado siglo se estableció la tiranía de los programas
de autoedición, que unidos casi genéticamente al término nebuloso (o vacuo) de «diseño gráfico» han acabado deviniendo
plaga y cáncer para la tipografía. Es el emblema de «todo para el usuario pero sin el usuario», que va de la mano con
la imposición de esa cantinela tan malsana y perniciosa de la «informática amigable», que es la informática sin la
informática, y donde los procesos complejos se embozan bajo una capa de impostada banalidad y de un simplismo que no
tiene nada que ver con el mero concepto de lo simple. Con herramientas tan débiles, el usuario no tiene un control
real sobre los procesos que ejecuta, si es que los llega a ejecutar, y carece de una noción precisa de ellos. Es más,
la aparente «amigabilidad» del medio no se traduce —paradójicamente— en menos trabajo, sino en un mayor coste
humano y material. Casi todo ha de hacerse a mano, cuando no a ojo. Pero en programas como Adobe InDesign lo manual no
tiene sentido si hablamos de la composición y producción seria de libros (como sí lo tendría en un  <i>software</i> de
dibujo). Lo manual en este caso es llana imposibilidad y, en última instancia, masoquismo.
</p>

 <div id="outline-container-org406223d" class="outline-2">
 <h2 id="org406223d">∞</h2>
 <div class="outline-text-2" id="text-org406223d">
 <div>
 <p>Publicado: 12/10/19</p>

 <p>Última actualización: 21/01/22</p>
</div>
 <div>
 <hr></hr> <p>
 <a href="index.html">Índice general</a>
</p>
 <p>
 <a href="acerca-de.html">Acerca de...</a>
</p>
 <p>
Esta obra está bajo una  <a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/">licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional</a>.
</p>
</div>
</div>
</div>
</div>]]></description>
  <link>https://lunotipia.juanmanuelmacias.com/tipografiadigital.html</link>
  <guid isPermaLink="false">https://lunotipia.juanmanuelmacias.com/tipografiadigital.html</guid>
  <pubDate>vie, 21 ene 2022 22:04:00 +0100</pubDate>
</item>
<item>
  <title>«Tonos» y «oxia», o el duplicado acento agudo en griego</title>
  <description><![CDATA[<div id="content" class="content">

 <form>
 <p style="text-align: center;"> <button formaction="https://maciaschain.gitlab.io/lunotipia/pdf/tonos_oxia.pdf"> <font size="2">Descargar esta entrada en formato PDF</font></button></p>
</form>

 <p>
Nadie duda a estas alturas de la gran bendición que supuso un estándar como Unicode para el tratamiento digital de los
textos. Y la justicia y reparación que vino con ello, pues las computadoras se veían por fin capaces de entender y
representar cualquier sistema de escritura humano más allá del latino, tanto actual como antiguo, ya fuese usado por
muchos, ya minoritario y casi desconocido. O, al menos, aspirar a semejante ideal, una meta que cada vez se antoja más
cercana con cada edición oficial del estándar. Desde los toscos grafos oghámicos a las intrincadas escrituras de Asia o
de África, pasando por silabarios, alfabetos, notaciones musicales y símbolos de toda clase, por supuesto que no podría
faltar en esta ordenada fiesta y encasillado bullicio la venerable escritura griega. De la cual volvemos a hablar aquí a
cuento de una pequeña y curiosa inconsistencia que viene acarreando el estándar (Unicode no es perfecto) desde los
propios orígenes de la inclusión del griego. La cuestión afecta al acento agudo y, si no andamos con el debido cuidado,
puede complicarnos innecesariamente la vida a la hora de trabajar digitalmente con un texto en caracteres helenos.
</p>

 <div id="outline-container-Dos acentos agudos ¿innecesarios?" class="outline-2">
 <h2 id="Dos acentos agudos ¿innecesarios?">Dos acentos agudos ¿innecesarios?</h2>
 <div class="outline-text-2" id="text-Dos acentos agudos ¿innecesarios?">
 <p>
Como bien sabe (o debería saber) todo aquel que trabaja en un ordenador con textos griegos, Unicode tiene asignadas dos
«parcelas» bien delimitadas para la correcta representación de esta lengua. A una la llama «griego» y a la otra «griego
extendido». La primera incluye el alfabeto completo, los signos de puntuación y todas las vocales acentuadas como
caracteres precompuestos. O sea, la vocal de turno y, sobre ella, el único acento que desde la reforma monotónica del 82
admite la escritura griega actual, y que no es sino un acento agudo como el que tenemos en español y al cual
impropiamente llamamos «tilde». Por otro lado, la parcela de griego extendido comprende todos los caracteres
precompuestos (vocales, mayormente) con el juego y combinatoria de diacríticos necesarios para la escritura del griego
politónico, que es la manera de representar el griego «antiguo» y el griego anterior a la mencionada reforma, pues a
pesar de que la lengua sólo cuenta desde hace mucho tiempo con un único acento intensivo, se seguía escribiendo (por
cuestiones más culturales que pragmáticas) con los signos de los espíritus y la ancestral tríada de acentos agudo, grave
y circunflejo.
</p>


 <div id="org1d48449" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/ebgaramond1.png" alt="ebgaramond1.png"></img></p>
 <p> <span class="figure-number">Figura 1: </span>Área de griego básico en la fuente EB Garamond (visualizada en FontForge)</p>
</div>


 <div id="org8ac6a3c" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/ebgaramond2.png" alt="ebgaramond2.png"></img></p>
 <p> <span class="figure-number">Figura 2: </span>Área de griego extendido en la misma fuente</p>
</div>

 <p>
Naturalmente, las fuentes pueden incluir ambas parcelas o sólo la primera, que es la básica. Si se da este último caso,
únicamente podremos escribir o representar griego monotónico. Hasta aquí, todo perfecto y, más o menos, dentro de la
habitual coherencia de Unicode. Pero trazar una línea divisoria tan drástica entre los sistemas mono y politónicos nos
llevó también a una inesperada duplicidad de acentos agudos. De tal suerte que Unicode presenta un acento para el área
monotónica, al cual llama con el término griego  <i>tonos</i>, y otro para el griego extendido politónico, que denomina,
también en griego,  <i>oxia</i>. Esto ya de por sí es una inconsistencia, pues la distinción que hace aquí el estándar no es
gráfica sino histórica. Y nos da a entender algo que no se corresponde con la realidad, como si la reforma monotónica
estableciese un nuevo signo diacrítico cuando lo que hizo fue simplemente eliminar de la escritura normativa aquellos
signos innecesarios por representar acentos y hechos fonológicos ya dejados muy atrás por la lengua griega en su
constante discurrir. En dos palabras, se descartaron los acentos grave y circunflejo (además de los dos espíritus que
marcaban la aspiración inicial o la ausencia de ella), y se dejó sólo el acento agudo. En lo que atañe al plano de la
letra escrita, y al margen de la fonología y de la historia, este acento, por tanto, es y debe ser siempre el mismo.
</p>

 <p>
A pesar de la inconsistencia, no tendríamos que temer ningún inconveniente, si al fin y al cabo ambos acentos son
idénticos. Sin embargo, el problema de verdad (al menos a efectos prácticos) viene ahora. Y es que no pocas fuentes,
manteniéndose fieles a esta distinción espuria que hace Unicode, incluyen dos diseños distintos para los dos
acentos. Mientras que el acento agudo (el  <i>oxia</i> del área politónica) aparece como un acento agudo normal y corriente,
el  <i>tonos</i>, por contra, queda casi (cuando no totalmente) perpendicular a la línea base de la letra. Este diseño, por
cierto, no es arbitrario sino que proviene de una moda, por no decir plaga, relativamente reciente en la tipografía
hecha en Grecia, como una especie de autoafirmación en el nuevo estilo monotónico frente al preterido politonismo. Al
margen de la cuestión meramente estética, y de que tal signo es difícilmente combinable con los espíritus y el
circunflejo, ni se le puede anteponer claramente un acento grave debido a esa verticalidad, el problema que salta a la
vista es que contamos con dos acentos agudos que pueden muy fácil acabar mezclándose en un texto griego, ya sea
monotónico o politónico. Y si vamos a componer en una fuente que distinga gráficamente el  <i>tonos</i> del  <i>oxia</i>, el aspecto
de nuestro texto también se volverá inconsistente.
</p>

 <p>
¿Es habitual esta confusión de acentos? Sin ninguna duda: digamos que está a la orden del día. Por diversas causas, y
entre ellas no es la menos importante el hecho de que los teclados para escribir en griego politónico tienen casi
siempre mapeado el signo del  <i>tonos</i> a costa del  <i>oxia</i>. Y podemos hacer también una prueba muy sencilla. Copiar, como
he hecho yo, cualquier palabra tomada al azar de los textos del  <a href="http://www.perseus.tufts.edu/hopper/">Perseus-Hopper</a> (por ejemplo, de Heródoto), que contenga
alguna letra con acento agudo, y la pegamos en un editor de texto que pueda interpretar el código hexadecimal de los
caracteres Unicode. Para ello yo uso Yudit. Y la palabra que he escogido, ἀπόδεξις. Vemos que en la pantalla de Yudit
(fig.  <a href="#orga1bd8b1">3</a>), si situamos el cursor a la altura del signo «ό», se nos informa que se trata del carácter Unicode que
lleva el código  <code>U+03CC</code>. Éste no es otro que el denominado en la jerga del estándar  <i>GREEK SMALL LETTER OMICRON WITH
TONOS</i>. Así pues, el  <i>Proyecto Perseo</i> está usando el  <i>tonos</i> y no el esperable  <i>oxia</i> en sus textos de griego antiguo.
</p>


 <div id="orga1bd8b1" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/yudit.png" alt="yudit.png"></img></p>
 <p> <span class="figure-number">Figura 3: </span>Una prueba en el editor de texto plano Unicode Yudit</p>
</div>

 <p>
Si un texto así lo procesamos con una fuente que distinga gráficamente ambos acentos, se notará a simple vista la
diferencia. Por fortuna, son más las tipografías que usan un único signo para el  <i>tonos</i> y el  <i>oxia</i>.  Pero las de la
otra cuerda haberlas haylas, y no están por cierto entre las menos conocidas. De unas cuantas de éstas, muy populares,
podemos citar las Noto de Google o la Minion Pro de Adobe. En la fig.  <a href="#org94ea3a6">4</a> se muestra cómo luciría la palabra
ἀπόδεξις en la Minion, tal y como está copiada de los textos del  <i>Proyecto Perseo</i>, con la ómicron y el  <i>tonos</i>. Justo
debajo, la misma palabra en la misma fuente, pero esta vez con el carácter de la ómicron y el oxia ( <code>U+1F79</code>).
</p>


 <div id="org94ea3a6" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/minion1.png" alt="minion1.png"></img></p>
 <p> <span class="figure-number">Figura 4: </span>Contraste entre  <i>oxia</i> y  <i>tonos</i> en la fuente Minion Pro</p>
</div>

 <p>
Y la diferencia de inclinación se hace, si cabe, más evidente cuando comparamos (fig.  <a href="#org4beab34">5</a>) la  <i>ómicron</i> con el
 <i>tonos</i> frente a la  <i>ómicron</i> con el espíritu suave y el  <i>oxia</i>.
</p>


 <div id="org4beab34" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/minion2.png" alt="minion2.png"></img></p>
 <p> <span class="figure-number">Figura 5: </span>Contraste entre  <i>oxia</i> y  <i>tonos</i> en la fuente Minion Pro (2)</p>
</div>

 <p>
Otro ejemplo notable lo tenemos en la tipografía FiraGo, una  <i>sans</i> humanística auspiciada por la fundación Mozilla
(fig.  <a href="#org21cf3ac">6</a>).
</p>


 <div id="org21cf3ac" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/tonos-oxia-firago.png" alt="tonos-oxia-firago.png"></img></p>
 <p> <span class="figure-number">Figura 6: </span>Contraste entre  <i>tonos</i> y  <i>oxia</i> en la fuente FiraGo</p>
</div>
</div>
</div>

 <div id="outline-container-Una solución en LuaTeX" class="outline-2">
 <h2 id="Una solución en LuaTeX">Una solución en LuaTeX</h2>
 <div class="outline-text-2" id="text-Una solución en LuaTeX">
 <p>

</p>

 <p>
Como se ve, si queremos trabajar en griego con alguna de estas fuentes no nos queda otra que normalizar el texto. Lo más
sensato sería procurar que todos los acentos agudos pasen a ser  <i>oxia</i>. Una forma de hacerlo es editar la fuente
mediante un  <i>software</i> como Fontforge. Pero si no queremos alterar nuestra fuente, se me ocurre una manera muchísimo más
simple si estamos componiendo en Lua(La)TeX, que consiste en echar mano —una vez más— de la siempre utilísima
función Lua  <code>fonts.handlers.otf.addfeature</code>, que nos permite (gracias a la inclusión de código Lua en nuestro
documento (La)TeX) modificar o aplicar ciertas características OpenType al vuelo, como las de substitución de
caracteres. Así pues, podemos definir los reemplazos necesarios para las vocales con  <i>tonos</i>, bajo la nueva
característica OpenType que hemos bautizado «tonosoxia»:
</p>

 <p>

</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate">\directlua</span>{
fonts.handlers.otf.addfeature{
name = "tonosoxia",
type = "substitution",
data = {
alphatonos = "ά",
epsilontonos = "έ",
etatonos = "ή",
iotatonos = "ί",
omicrontonos = "ό",
omegatonos = "ώ",
upsilontonos = "ύ",
                },
        }
}
</pre>
</div>

 <p>
Y a continuación hacemos la prueba con la fuente FiraGo para comparar el texto con y sin conversión. A tal efecto,
definimos (con  <code>fontspec</code>) dos familias para griego con FiraGo. Una, de base, que se comporte «normal»:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate"> <span class="org-keyword">\usepackage</span></span>{ <span class="org-function-name">fontspec</span>}
 <span class="org-font-latex-sedate">\newfontfamily\sinoxia</span>{FiraGo}
</pre>
</div>

 <p>
Y otra a la que le aplicaremos la nueva característica de substitución. Por tanto, convertirá automáticamente en la
compilación cualquier letra con  <i>tonos</i> en la misma letra con  <i>oxia</i>:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate">\newfontfamily\oxia</span>[RawFeature={+tonosoxia}]{FiraGo}
</pre>
</div>

 <p>
Y, por último, en nuestro documento de prueba escribimos las dos series de vocales con  <i>tonos</i>:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate"> <span class="org-keyword">\begin</span></span>{ <span class="org-function-name">document</span>}

 <span class="org-font-latex-sedate">\sinoxia</span>

ά έ ή ί ό ώ ύ

 <span class="org-font-latex-sedate">\oxia</span>

ά έ ή ί ό ώ ύ

 <span class="org-font-latex-sedate"> <span class="org-keyword">\end</span></span>{ <span class="org-function-name">document</span>}
</pre>
</div>

 <p>
Con lo que obtendremos el esperado resultado (fig.  <a href="#org36ac958">7</a>) tras la compilación.
</p>


 <div id="org36ac958" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/tonos-oxia-luatex.png" alt="tonos-oxia-luatex.png"></img></p>
 <p> <span class="figure-number">Figura 7: </span>Resultado de la compilación con la doble serie de acentos</p>
</div>
</div>
</div>

 <div id="outline-container-org6b7dfc8" class="outline-2">
 <h2 id="org6b7dfc8">∞</h2>
 <div class="outline-text-2" id="text-org6b7dfc8">
 <div>
 <p>Publicado: 05/09/19 - 14:58</p>

 <p>Última actualización: 05/09/19 - 14:58</p>
</div>
 <div>
 <hr></hr> <p>
 <a href="index.html">Índice general</a>
</p>
 <p>
 <a href="acerca-de.html">Acerca de...</a>
</p>
 <p>
Esta obra está bajo una  <a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/">licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional</a>.
</p>
</div>
</div>
</div>
</div>]]></description>
  <link>https://lunotipia.juanmanuelmacias.com/tonos_oxia.html</link>
  <guid isPermaLink="false">https://lunotipia.juanmanuelmacias.com/tonos_oxia.html</guid>
  <pubDate>vie, 21 ene 2022 22:04:00 +0100</pubDate>
</item>
<item>
  <title>Combinar familias de fuentes en LuaLaTeX: un caso práctico con el griego</title>
  <description><![CDATA[<div id="content" class="content">

 <p>
En este caso práctico veremos cómo definir, mediante fontspec, para una familia de tipos
determinada otra familia como cursiva o como énfasis fuerte.
</p>

 <div class="org-center">
 <iframe src="https://player.vimeo.com/video/476356740" width="640" height="360" frameborder="0" allow="autoplay; fullscreen"></iframe>
 <p> <a href="https://vimeo.com/476356740">Combinar familias de fuentes en LuaLaTeX: un caso práctico con el griego</a> from  <a href="https://vimeo.com/user70979426">Juan Manuel Macías Chaín</a> on  <a href="https://vimeo.com">Vimeo</a>.</p>
</div>

 <div id="outline-container-orgaf4407a" class="outline-2">
 <h2 id="orgaf4407a">∞</h2>
 <div class="outline-text-2" id="text-orgaf4407a">
 <div>
 <p>Publicado: 14/11/20</p>

 <p>Última actualización: 21/01/22</p>
</div>
 <div>
 <hr></hr> <p>
 <a href="index.html">Índice general</a>
</p>
 <p>
 <a href="acerca-de.html">Acerca de...</a>
</p>
 <p>
Esta obra está bajo una  <a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/">licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional</a>.
</p>
</div>
</div>
</div>
</div>]]></description>
  <link>https://lunotipia.juanmanuelmacias.com/tutorial_fontspec.html</link>
  <guid isPermaLink="false">https://lunotipia.juanmanuelmacias.com/tutorial_fontspec.html</guid>
  <pubDate>vie, 21 ene 2022 22:04:00 +0100</pubDate>
</item>
<item>
  <title>LuaLaTeX, babel y griego (un tutorial)</title>
  <description><![CDATA[<div id="content" class="content">

 <p>
En este vídeo-tutorial comento algunos casos prácticos a la hora de trabajar con varias
modalidades de griego (monotónico o politónico) en  <span style="font-family:serif;">LuaL <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span>, especialmente cuando
coexisten con textos en caracteres latinos. Se mencionan algunas de las nuevas
funcionalidades de  <code>babel</code> que Javier Bezos (el actual mantenedor del paquete) ha ido
añadiendo en las últimas versiones.
</p>

 <div class="org-center">
 <iframe src="https://player.vimeo.com/video/456294285" width="640" height="360" frameborder="0" allow="autoplay; fullscreen"></iframe>
 <p> <a href="https://vimeo.com/456294285">LuaLaTeX, Babel y griego (un tutorial)</a> from  <a href="https://vimeo.com/user70979426">Juan Manuel Macías Chaín</a> on  <a href="https://vimeo.com">Vimeo</a>.</p>
</div>


 <div id="outline-container-org91a932f" class="outline-2">
 <h2 id="org91a932f">∞</h2>
 <div class="outline-text-2" id="text-org91a932f">
 <div>
 <p>Publicado: 10/09/20</p>

 <p>Última actualización: 21/01/22</p>
</div>
 <div>
 <hr></hr> <p>
 <a href="index.html">Índice general</a>
</p>
 <p>
 <a href="acerca-de.html">Acerca de...</a>
</p>
 <p>
Esta obra está bajo una  <a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/">licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional</a>.
</p>
</div>
</div>
</div>
</div>]]></description>
  <link>https://lunotipia.juanmanuelmacias.com/tutorial_griego_babel.html</link>
  <guid isPermaLink="false">https://lunotipia.juanmanuelmacias.com/tutorial_griego_babel.html</guid>
  <pubDate>vie, 21 ene 2022 22:04:00 +0100</pubDate>
</item>
<item>
  <title>Apunte sobre el tratamiento (y estado de la cuestión) de los versos en TeX</title>
  <description><![CDATA[<div id="content" class="content">

 <form>
 <p style="text-align: center;"> <button formaction="https://maciaschain.gitlab.io/lunotipia/pdf/versostex.pdf "> <font size="2">Descargar esta entrada en formato PDF</font></button></p>
</form>

 <p>
Aunque creemos que es tema éste merecedor de un tratamiento algo más extenso, ensayaremos
de momento una suerte de  <i>estado de cosas</i> urgente en torno a la poesía versal en la
tipografía digital real, es decir, en TeX <sup> <a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink">1</a></sup>. Conviene aclarar una vez más, y antes de
empezar, que nos referimos a la composición tipográfica de los versos llamados «clásicos»,
donde por norma la tipografía suele aplicar de oficio una serie de procedimientos. El
poeta tiene siempre el derecho a desautomatizar tales protocolos. Quizás sea el único tipo
de autor que pueda jactarse de semejante bula. Y el tipógrafo, en el otro extremo, el
deber de escucharlo y dialogar con él. Pero al poeta también le cabe el deber de adquirir
una cierta noción del medio en que va a ser pubicado —el objeto que llamamos «libro»—,
y de no pedir caprichos que no sólo van más allá de las normas básicas y más razonables de
la tipografía, sino también de la naturaleza y de la física e incluso del sentido común.
En la otra orilla el tipógrafo, por supuesto, goza del derecho de advertirle de todo
aquello al poeta o, en última instancia, de ignorar sus demandas <sup> <a id="fnr.2" class="footref" href="#fn.2" role="doc-backlink">2</a></sup>.
</p>

 <div id="outline-container-El macro paquete ~verse.sty~" class="outline-2">
 <h2 id="El macro paquete ~verse.sty~">El macro paquete verse.sty</h2>
 <div class="outline-text-2" id="text-El macro paquete ~verse.sty~">
 <p>
Esta  <a href="https://www.ctan.org/pkg/verse">biblioteca de código</a>, firmada en origen por Peter Wilson para Herries Press, es sin
lugar a dudas la opción más completa que tenemos en el vasto ecosistema LaTeX para el
tratamiento tipográfico serio de los versos: ya sea para componer libros enteros de poesía
o para incluir poemas en cualquier otro contexto, por ejemplo las citas con fragmentos de
poemas. Posee la gran virtud que siempre aplaudo en ciertos paquetes de LaTeX, y que es su
carácter abstracto. Esto es, partiendo de una serie de macros básicas que hacen cada cual
una cosa y la hacen bien (como Unix manda), podemos extenderlo y adaptarlo a nuestras
necesidades particulares.
</p>

 <p>
La pulpa del paquete no es otra que la redefinición del entorno  <code>verse</code> de LaTeX,
reemplazando al que viene «de fábrica», que es bastante limitado e ineficiente para
componer versos. Éste, en efecto, y entre otras precariedades, nos sitúa el poema en un
margen fijo hacia la izquierda de la página. La nueva versión nos proporcionará un
argumento opcional donde poder declarar la anchura máxima entre la cual podrán expandirse
los versos. Algo muy útil y que nos permitirá llevar a cabo procedimientos esenciales como
el centrado óptico del poema en la página, como veremos a continuación.
</p>

 <p>
Además de eso,  <code>verse</code> cuenta con más funcionalidades útiles, como la numeración de versos
en el margen junto a la posibilidad de controlar su formato secuencia, el sangrado
automático de versos pares (entorno  <code>altverse</code>), el encabalgamiento de versos o el
tratamiento automatizado de los versos que abarcan más de una línea.
</p>

 <p>
El entorno  <code>verse</code> viene a ser el mismo, en lo que hace a su estructura, que el que
proporciona LaTeX de manera estándar. Al igual que en éste, los versos han de terminar con
el signo  <code>\\</code>, salvo el último de cada estrofa. La separación estrófica, asímismo, se
marca con una línea en blanco. A dicha separación podemos asignarle desde nuestro
preámbulo un valor fijo (lo razonable sería lo equivalente a una interlínea:
 <code>\baselineskip</code> o 1.2em) o una longitud con propiedades elásticas (un  <i>glue</i>, en la jerga
de TeX) dentro de unos márgenes de  <i>plus</i> y  <i>minus</i>.
</p>
</div>
</div>

 <div id="outline-container-El centrado óptico del poema" class="outline-2">
 <h2 id="El centrado óptico del poema">El centrado óptico del poema</h2>
 <div class="outline-text-2" id="text-El centrado óptico del poema">
 <p>
El centrado óptico de los poemas en la página es de las cosas que más brillan por su ausencia en los libros de poesía
publicados hoy día (véase fig.  <a href="#orgce64c65">1</a>). En parte, porque los «maquetadores» o editores lo desconocen; en parte
porque aquellos que sí saben de su existencia escurren grácilmente el bulto, pues estas técnicas hay que realizarlas a
mano y a ojímetro (tabuladores, cajas de texto y demás triquiñuelas) en InDesign, el programa que se usa
mayoritariamente para hacer libros y que no sabe hacer libros. Hay honrosas excepciones, ojo. Pero es una pena que
prefieran anclarse en un  <i>software</i> ineficiente e incompetente a todas luces y pagar desproporcionadas licencias
propietarias de uso antes que estudiar la tipografía digital real y los medios y el flujo de trabajo coherentes con
ella. Por supuesto, hay que estudiar y mucho, como para casi todo en esta vida, y tener curiosidad y no plegarse al
conformismo. Nadie espera pilotar un avión de buenas a primeras y por inspiración.
</p>


 <div id="orgce64c65" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/versos_mal_bien.png" alt="versos_mal_bien.png"></img></p>
 <p> <span class="figure-number">Figura 1: </span>Incorrecta vs. correcta disposición óptica del poema en el marco de la página</p>
</div>

 <p>
El paquete  <code>verse</code> nos proporciona los recursos necesarios para poder realizar un centrado óptico «guiado» del poema,
tomando como referencia la anchura del verso más largo. Este verso se añade, literalmente, como valor de la longitud
 <code>\versewidth</code> mediante la orden  <code>\settowidth</code>, justo antes de iniciar el entorno  <code>verse</code>, al que le habremos pasado el
valor de  <code>\versewidth</code> como argumento opcional, para declarar que ésa es la anchura máxima del poema. Veamos un ejemplo
con las dos primeras estrofas de la  <i>Sonatina</i> de Darío:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-comment-delimiter">%</span> <span class="org-comment">declaramos el verso más largo como valor de |</span> <span class="org-font-latex-sedate"> <span class="org-comment">\versewidth</span></span> <span class="org-comment">|</span>
 <span class="org-font-latex-sedate"> <span class="org-keyword">\settowidth</span></span>{ <span class="org-font-latex-sedate"> <span class="org-variable-name">\versewidth</span></span>}{ <span class="org-variable-name">La princesa está triste... ¿Qué tendrá la princesa?</span>}

 <span class="org-font-latex-sedate"> <span class="org-keyword">\begin</span></span>{ <span class="org-function-name">verse</span>}[ <span class="org-font-latex-sedate">\versewidth</span>]  <span class="org-comment">% <== Aplicamos esta longitud como argumento opcional del</span>
                            <span class="org-comment">% entorno, indicando que se trata de la anchura del poema</span>

La princesa está triste... ¿Qué tendrá la princesa? <span class="org-font-latex-warning">\\</span>
Los suspiros se escapan de su boca de fresa, <span class="org-font-latex-warning">\\</span>
que ha perdido la risa, que ha perdido el color. <span class="org-font-latex-warning">\\</span>
La princesa está pálida en su silla de oro, <span class="org-font-latex-warning">\\</span>
está mudo el teclado de su clave sonoro, <span class="org-font-latex-warning">\\</span>
y en un vaso, olvidada, se desmaya una flor.

El jardín puebla el triunfo de los pavos reales. <span class="org-font-latex-warning">\\</span>
Parlanchina, la dueña dice cosas banales, <span class="org-font-latex-warning">\\</span>
y vestido de rojo piruetea el bufón. <span class="org-font-latex-warning">\\</span>
La princesa no ríe, la princesa no siente; <span class="org-font-latex-warning">\\</span>
la princesa persigue por el cielo de Oriente <span class="org-font-latex-warning">\\</span>
la libélula vaga de una vaga ilusión.

 <span class="org-font-latex-sedate"> <span class="org-keyword">\end</span></span>{ <span class="org-function-name">verse</span>}
</pre>
</div>

 <p>
Tras la compilación, el poema quedará centrado ópticamente entre sendos márgenes verticales de la página. Por
supuesto, la longitud  <code>\versewidth</code> es variable, y su valor se reiniciará cada vez que establezcamos un nuevo
 <code>\settowidth</code>.
</p>
</div>

 <div id="outline-container-Una función para Gnu Emacs" class="outline-3">
 <h3 id="Una función para Gnu Emacs">Una función para Gnu Emacs</h3>
 <div class="outline-text-3" id="text-Una función para Gnu Emacs">
 <p>
Para facilitar la inclusión de estos comandos en el editor GNU Emacs escribí  <a href="https://maciaschain.gitlab.io/gnutas/versolargo.html">esta función</a> en elisp que realiza lo
siguiente:
</p>

 <ol class="org-ol"> <li>En un poema señalado (marcado, en la jerga emacsiana) nos busque y copie el verso más largo;</li>
 <li>Nos encierre ese poema dentro del entorno antes descrito, con el valor de ese verso añadido a  <code>\versewidth</code>.</li>
</ol> <p>
Este  <a href="https://vimeo.com/328937083">breve vídeo</a> muestra todo el procedimiento en acción.
</p>
</div>
</div>
</div>

 <div id="outline-container-El tratamiento de los versos que abarcan más de una línea" class="outline-2">
 <h2 id="El tratamiento de los versos que abarcan más de una línea">El tratamiento de los versos que abarcan más de una línea</h2>
 <div class="outline-text-2" id="text-El tratamiento de los versos que abarcan más de una línea">
 <p>
Este es un escenario que puede estar abierto a muchas y variadas estrategias. Optar por una u otra dependerá en gran
medida del contexto, del tipo de poema, del libro que estamos componiendo, etc. El paquete  <code>verse</code> ofrece una solución
que podríamos tildar de «clasica», y que consiste en sangrar la línea o líneas del verso desbordado desde el margen
izquierdo por un valor que se controla con la longitud  <code>\vindent</code>. Ésta es la opción que yo suelo preferir y, de hecho,
resulta casi la única posibilidad a escoger cuando el verso se desborda a lo largo de varias líneas. Pero, al margen de
qué camino sigamos, parece haber una premisa que se impone: si el verso se desborda es porque el poema se ha expandido
en algún lugar más allá de los márgenes de la caja de texto. La primera línea, por tanto, ha de ser siempre una línea
justificada a ambos márgenes. Y (aunque asumo que en esto puede haber controversia), no debemos huir en este contexto
del corte de palabras por guiones. Yo no lo hago. Ni TeX ni el paquete  <code>verse</code> tampoco. Será el mayor aliado que
tengamos aquí para facilitar la lectura. Y es que el habitual guionado sólo puede producir extrañeza cuando el lector no
está ejerciendo el rol que debe ejercer ante una página, es decir, el de leer el poema y no mirar el poema. Y el rol que
le toca a la tipografía (no debemos olvidarlo, señores «diseñadores gráficos») es el de guiar sutilmente, como un
Virgilio cualquiera, al lector hacia su cometido.
</p>

 <p>
Por tanto, si entendemos que la primera línea del verso se desborda, ya no tendría sentido declarar un valor para el
verso más largo. En este caso, la longitud que debemos pasar como argumento opcional del entorno  <code>verse</code> no será la
variable  <code>\versewidth</code> sino, directamente,  <code>\textwidth</code>. En el momento en que el verso desborde ese margen,  <code>verse</code> ya
entiende el tipo de situación y se encargará de hacer los cálculos oportunos. Imaginemos un caso con un verso
palmariamente largo que pueda abarcar varias líneas. Así, partiendo de este código fuente, donde la cadena de texto
completa constituye un único verso (marcado al final con  <code>\\</code>):
</p>

 <div class="org-src-container">
 <pre class="src src-latex">   <span class="org-font-latex-sedate"> <span class="org-keyword">\begin</span></span>{ <span class="org-function-name">verse</span>}[ <span class="org-font-latex-sedate">\textwidth</span>]

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec
hendrerit tempor tellus. Donec pretium posuere tellus. Proin quam
nisl, tincidunt et, mattis eget, convallis nec, purus. Cum sociis
natoque penatibus et magnis dis parturient montes, nascetur
ridiculus mus. Nulla posuere. Donec vitae dolor. Nullam tristique
diam non turpis. Cras placerat accumsan nulla. Nullam rutrum. Nam
vestibulum accumsan nisl. <span class="org-font-latex-warning">\\</span>

   <span class="org-font-latex-sedate"> <span class="org-keyword">\end</span></span>{ <span class="org-function-name">verse</span>}
</pre>
</div>

 <p>
Obtendremos tras compilar el resultado que se aprecia en la fig.  <a href="#org2167979">2</a>. La macro de  <code>verse</code> habrá sangrado las líneas restantes
con el valor de  <code>\vindent</code>, que en este caso tengo fijado a 1em.
</p>


 <div id="org2167979" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/versos-desbordados1.png" alt="versos-desbordados1.png"></img></p>
 <p> <span class="figure-number">Figura 2: </span>Tratamiento de los versos que abarcan más de una línea con el paquete  <code>verse.sty</code></p>
</div>
</div>

 <div id="outline-container-Tratamiento alternativo" class="outline-3">
 <h3 id="Tratamiento alternativo">Un tratamiento alternativo</h3>
 <div class="outline-text-3" id="text-Tratamiento alternativo">
 <p>
Sin embargo, habrá ciertas situaciones en que la solución de sangrar las líneas
desbordadas desde el margen izquierdo no sea la más satisfactoria. Un caso muy típico se
da cuando es el propio poema el que ya nos viene con uno o varios versos sangrados, según
ha dispuesto el poeta. Corremos el riesgo de confundir muy fácilmente al lector, que
tendrá entonces que discernir más de una vez qué línea sangrada es continuación del
anterior verso y cuál constituye un verso autónomo. En tales pasajes creo que la opción
más aconsejable consiste en alinear el fragmento de verso desbordado a la derecha, tras un
corchete o claudátur de apertura. El paquete  <code>verse.sty</code> no trae este procedimiento
automatizado «de fábrica», pero no es muy difícil ensayar un poco de código de alto nivel.
Podemos definir, por ejemplo, un comando como éste:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate"> <span class="org-keyword">\newlength</span></span>{ <span class="org-font-latex-sedate"> <span class="org-function-name">\vdesbordado</span></span>}
 <span class="org-comment-delimiter">% </span> <span class="org-comment">la anchura del makebox es el ancho de texto menos el valor de vindent (1em)</span>
 <span class="org-font-latex-sedate">\def\vresto</span>#1{ <span class="org-font-latex-sedate">\makebox</span>[ <span class="org-font-latex-sedate">\textwidth</span>-1em][r]{[#1}}
</pre>
</div>

 <p>
Y encerrar en nuestro comando  <code>\vresto{...}</code> el tramo de verso que en una primera compilación nos resulta desbordado. El
resultado de la compilación puede verse en la fig.  <a href="#orgded64b0">3</a>.
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate"> <span class="org-keyword">\begin</span></span>{ <span class="org-function-name">verse</span>}[12cm]
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec hendrerit  <span class="org-font-latex-sedate">\vresto</span>{tempor tellus.} <span class="org-font-latex-warning">\\</span>
Donec pretium posuere tellus. Proin quam nisl, tincidunt et, mattis eget,
convallis nec, purus. vestibulum accumsan nisl. <span class="org-font-latex-warning">\\</span>
 <span class="org-font-latex-sedate"> <span class="org-keyword">\end</span></span>{ <span class="org-function-name">verse</span>}
</pre>
</div>


 <div id="orgded64b0" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/versos-desbordados2.png" alt="versos-desbordados2.png"></img></p>
 <p> <span class="figure-number">Figura 3: </span>Tratamiento de los versos desbordados con el procedimiento del claudátur</p>
</div>
</div>
</div>
</div>

 <div id="outline-container-Conflictos de ~verse.sty~ con otros paquetes" class="outline-2">
 <h2 id="Conflictos de ~verse.sty~ con otros paquetes">Conflictos de verse.sty con otros paquetes</h2>
 <div class="outline-text-2" id="text-Conflictos de ~verse.sty~ con otros paquetes">
 <p>
Naturalmente, uno habla aquí de los paquetes que más suele utilizar, y a partir de la experiencia puedo afirmar que
 <code>verse.sty</code> es un código bastante estable y que no suele acusar problemas de convivencia con otros macro paquetes.
Sin embargo, hay dos en concreto donde se produce un choque frontal:  <code>microtype</code> y el paquete para componer ediciones
críticas filológicas  <code>reledmac</code>.
</p>
</div>

 <div id="outline-container-El caso de ~microtype~" class="outline-3">
 <h3 id="El caso de ~microtype~">El caso de microtype</h3>
 <div class="outline-text-3" id="text-El caso de ~microtype~">
 <p>
No es especialmente traumático, dado que podemos cargar ambos paquetes en el preámbulo sin que suceda ninguna
catástrofe. El único problema menor es que el entorno  <code>verse</code> está basado en el entorno  <code>list</code>, donde las esotéricas y
microtipográficas propiedades de  <code>microtype</code> no tienen efecto alguno. ¿Debe quitarnos esto el sueño? Sí —o, al menos,
moderadamente sí— en caso de que juzguemos al margen izquierdo del poema con la misma legitimidad que tiene el margen
real de la caja de texto en la página para admitir el alineamiento óptico o  <i>protrusion</i>. Pero hay un contexto que nos
puede desvelar aún más, y es aquél donde queramos aplicar la técnica del «colgado de diacríticos» para la poesía en griego
politónico, que supone un caso extremo del alineamiento óptico de márgenes y del cual hablamos en la anterior entrada sobre
 <a href="https://maciaschain.gitlab.io/lunotipia/cavafis_sarpedon.html"> <i>El funeral de Sarpedón</i> de Cavafis</a>. Por suerte, existe una solución, no todo lo elegante y limpia que nos gustaría,
pero que funciona: el  <i>hacking</i> que sugiere el autor de  <code>microtype</code> para el entorno  <code>list</code> y que, por consiguiente,
también resulta satisfactorio para el entorno  <code>verse</code>. Si el lector desea más información, le remito a la mencionada
entrada.
</p>
</div>
</div>

 <div id="outline-container-El caso de ~reledmac~" class="outline-3">
 <h3 id="El caso de ~reledmac~">El caso de reledmac</h3>
 <div class="outline-text-3" id="text-El caso de ~reledmac~">
 <p>
Aquí ya entramos de lleno en el drama, pues el entorno  <code>verse</code> sencillamente no funcionará dentro de una sección numerada
de  <code>reledmac</code> (o sea, el texto editado propiamente dicho de una edición crítica) y entregará un error grave de
compilación. Cabe decir que  <code>reledmac</code> cuenta con sus propios recursos para la composición de poesía versal, pero no es
la clase de composición que aquí nos interesa, ya que consiste en un tratamiento del verso destinado a la edición
crítica de poesía, especialmente de largas tiradas de versos, donde se siguen unos protocolos algo distintos de los que
aquí estamos comentando, que es la edición de la poesía como un objeto artístico y un  <i>corpus</i> literario para ser leído,
más que un texto «crítico» anotado filológicamente, tal y como lo presentaría  <code>reledmac</code>.
</p>

 <p>
Aun así, dentro de estos textos anotados puede haber pasajes donde se citen unos versos o un poema entero, y en tal caso
es preciso componer esa parte atendiendo a la norma del centrado óptico, si bien es común en las ediciones críticas que
no se añada epacio antes ni después de los versos. Éstos, al formar parte del texto anotado filológicamente, entrarían
en el cómputo de la numeración de lineas. Un ejemplo de lo dicho lo encontramos en esta página de Teubner, donde el
autor editado (Dionisio de Halicarnaso) cita un fragmento de Safo:
</p>


 <div id="orgf62f39a" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/Ejemplo_versocitado_Teubner.jpg" alt="Ejemplo_versocitado_Teubner.jpg"></img></p>
 <p> <span class="figure-number">Figura 4: </span>Disposición con centrado óptico de unos versos de Safo en una edición de Teubner</p>
</div>

 <p>
Como dije, no podemos usar dentro de una región textual donde actúa  <code>reledmac</code> el entorno  <code>verse</code>. Se me ocurrió, sin
embargo, una solución definiendo el siguiente comando, que he puesto en práctica con óptimo resultado en una edición
crítica del  <i>Calírroe</i> de Caritón, trabajo que terminé recientemente (fig.  <a href="#orga453e60">5</a>). Para que este comando funcione correctamente,
necesitamos cargar antes el paquete  <code>calc</code>:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate"> <span class="org-keyword">\usepackage</span></span>{ <span class="org-function-name">calc</span>}  <span class="org-comment-delimiter">%%%%%%%%%%%%%%%%%% </span> <span class="org-comment">se necesita para lo de los versos</span>
 <span class="org-font-latex-sedate"> <span class="org-keyword">\newlength</span></span>{ <span class="org-font-latex-sedate"> <span class="org-function-name">\verso</span></span>}  <span class="org-comment">% anchura variable: el v. más largo del poema</span>
 <span class="org-font-latex-sedate"> <span class="org-keyword">\newlength</span></span>{ <span class="org-font-latex-sedate"> <span class="org-function-name">\versob</span></span>}  <span class="org-comment">% anch. variable: es siempre el ancho de texto menos el verso más largo</span>
 <span class="org-font-latex-sedate">\def\versolargo</span>#1{ <span class="org-font-latex-sedate"> <span class="org-keyword">\settowidth</span></span>{ <span class="org-font-latex-sedate"> <span class="org-variable-name">\verso</span></span>}{ <span class="org-variable-name">#1</span>}}
 <span class="org-font-latex-sedate"> <span class="org-keyword">\newenvironment</span></span>{ <span class="org-function-name">edpoema</span>} <span class="org-comment">%</span>
{ <span class="org-font-latex-sedate"> <span class="org-function-name"> <span class="org-keyword">\setlength</span></span></span> <span class="org-function-name">{</span> <span class="org-font-latex-sedate"> <span class="org-function-name"> <span class="org-variable-name">\versob</span></span></span> <span class="org-function-name">}{</span> <span class="org-font-latex-sedate"> <span class="org-function-name"> <span class="org-variable-name">\textwidth</span></span></span> <span class="org-function-name"> <span class="org-variable-name">-</span></span> <span class="org-font-latex-sedate"> <span class="org-function-name"> <span class="org-variable-name">\verso</span></span></span> <span class="org-function-name">}</span> <span class="org-function-name"> <span class="org-comment">%</span></span>
 <span class="org-function-name">  </span> <span class="org-font-latex-sedate"> <span class="org-function-name">\leftskip</span></span> <span class="org-function-name">=0.5</span> <span class="org-font-latex-sedate"> <span class="org-function-name">\versob</span></span> <span class="org-function-name"> </span> <span class="org-function-name"> <span class="org-comment">%divide en dos para ambos márgenes</span></span>
 <span class="org-function-name">  </span> <span class="org-font-latex-sedate"> <span class="org-function-name">\parindent</span></span> <span class="org-function-name">=0pt </span> <span class="org-function-name"> <span class="org-comment">% elimina la sangría de primera línea</span></span>
}
{ <span class="org-font-latex-sedate"> <span class="org-function-name">\par</span></span>}
</pre>
</div>

 <p>
La anchura variable  <code>\verso</code>, que va a definir siempre el verso más largo del pasaje citado, nos puede resultar útil
también para este otro comando destinado a los versos que comienzan  <i>in media re</i>, y que por tanto deben alinearse a la
derecha (según convenciones de las ediciones críticas), tomando como margen el de dicho verso más largo:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate">\def\finverso</span>#1{ <span class="org-font-latex-sedate">\makebox</span>[ <span class="org-font-latex-sedate">\verso</span>][r]{#1}}
</pre>
</div>


 <div id="orga453e60" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/resultado-cariton.png" alt="resultado-cariton.png"></img></p>
 <p> <span class="figure-number">Figura 5: </span>Detalle del centrado óptico de los versos en una edición crítica compuesta por el autor de este artículo</p>
</div>
</div>
</div>
</div>

 <div id="outline-container-El macro paquete ~gmverse.sty~, ¿una alternativa a ~verse.sty~?" class="outline-2">
 <h2 id="El macro paquete ~gmverse.sty~, ¿una alternativa a ~verse.sty~?">El macro paquete gmverse.sty, ¿una alternativa a verse.sty?</h2>
 <div class="outline-text-2" id="text-El macro paquete ~gmverse.sty~, ¿una alternativa a ~verse.sty~?">
 <p>
La  <a href="https://www.ctan.org/pkg/gmverse">biblioteca de código</a>  <code>gmverse</code>, escrita por Grzegorz Murzynowski y cuya última versión
se remonta al 2008, pretende ser una redefinición completa y desde cero del entorno
 <code>verse</code>, lo cual implica que ya no estamos ante un entorno, en este caso, dependiente del
entorno  <code>list</code>. Aparte de eso, el paquete aporta una serie de características novedosas,
pero destacaremos aquí dos que son especialmente interesantes: el centrado óptico
«automático» y el tratamiento, igualmente «automático», de los versos que desbordan la
línea, realizado mediante la técnica del alineamiento a la derecha y el corchete.
</p>
</div>

 <div id="outline-container-Centrado óptico automático" class="outline-3">
 <h3 id="Centrado óptico automático">Centrado óptico automático</h3>
 <div class="outline-text-3" id="text-Centrado óptico automático">
 <p>
Junto a un centrado óptico guiado al estilo de  <code>verse</code> (en este caso, mediante el comando  <code>\versecenterdue{...}</code>, en
que se encerraría el verso más largo del poema a centrar), la característica de un centrado óptico que se
ejecute de manera automática es ciertamente innovadora. No contento con eso, además, el autor aporta cuatro variantes,
cuyos entresijos técnicos y matemáticos explica en la  <a href="https://osl.ugr.es/CTAN/macros/latex/contrib/gmverse/gmverse.pdf">documentación del paquete</a> <sup> <a id="fnr.3" class="footref" href="#fn.3" role="doc-backlink">3</a></sup>:  <code>\vocweigh1</code>,  <code>\vocweigh2</code>,
 <code>\vocweigh3</code> y  <code>\vocweigh8</code>.
</p>


 <div id="orge26e47a" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/gmverse.png" alt="gmverse.png"></img></p>
 <p> <span class="figure-number">Figura 6: </span>Un detalle de la documentación de  <code>gmverse.sty</code> donde se explica el centrado óptico automático</p>
</div>

 <p>
Sin embargo, he de decir que ninguna de las cuatro opciones logra centrar el poema de manera perfecta. Todas fallan
(unas más que otras) por un pequeño margen positivo o negativo, si comparamos (fig.  <a href="#orgb4ee8cd">7</a>) sus resultados con los del centrado
guiado, que son los correctos.
</p>


 <div id="orgb4ee8cd" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/comparacion-centrados.png" alt="comparacion-centrados.png"></img></p>
 <p> <span class="figure-number">Figura 7: </span>Comparación del centrado óptico automático con el centrado «guiado»</p>
</div>
</div>
</div>

 <div id="outline-container-Tratamiento automático de los versos desbordados" class="outline-3">
 <h3 id="Tratamiento automático de los versos desbordados">Tratamiento automático de los versos desbordados</h3>
 <div class="outline-text-3" id="text-Tratamiento automático de los versos desbordados">
 <p>
El comando  <code>\versehangright</code>, es el que se encarga del alineamiento a la derecha del verso que desborda la línea. Es la
opción por defecto. De hecho, es la única opción para este tipo de contextos; es decir, que ni existe un
 <code>\versehangleft</code> ni debemos esperarlo. Si deseamos, además, que la línea desbordada se encierre en el típico claudátur,
tendremos que declarar antes el comando  <code>\versehangrightsquare</code>. Ahora bien, como ya dijimos más arriba, los casos de
verso desbordado implican que el poema se ha llegado a expandir en un punto determinado más allá de los márgenes
izquierdo y derecho de la caja de texto, así que la primera línea del verso ha de estar justificada a ambos márgenes.
Por defecto,  <code>gmverse</code> aplica una pequeña sangría a todo el poema desde el margen izquierdo, cuyo valor controla el
comando  <code>\verseleftskip</code> y que debemos poner previamente a cero:  <code>\verseleftskip=0pt</code>. De todas formas, por el margen
derecho también se evita la justificación completa, como se puede apreciar en el  <a href="https://vimeo.com/342279901">breve vídeo</a> que he hecho para ilustrar
el procedimiento.
</p>
</div>
</div>

 <div id="outline-container-Uso de ~gmverse~ conjuntamente con ~verse~" class="outline-3">
 <h3 id="Uso de ~gmverse~ conjuntamente con ~verse~">Uso de gmverse conjuntamente con verse</h3>
 <div class="outline-text-3" id="text-Uso de ~gmverse~ conjuntamente con ~verse~">
 <p>
En teoría sería posible, según la documentación del paquete, si añadimos la opción  <code>local</code> al cargarlo en el preámbulo.
En este caso, las macros de  <code>gmverse</code> no se aplicarían por defecto y habría que declararlas previamente. No obstante, si
bien el tratamiento de los versos desboradados en versión de  <code>gmverse</code> funciona correctamente y puede convivivir sin
problemas con el de  <code>verse</code>, la opción del centrado automático del primero se comporta de forma errática si la activamos
de manera local.
</p>
</div>
</div>
</div>

 <div id="outline-container-En suma" class="outline-2">
 <h2 id="En suma">En suma</h2>
 <div class="outline-text-2" id="text-En suma">
 <p>
La poesía constituye un caso muy particular dentro de la composición tipográfica y la
producción de libros. Pero en ese quehacer también representa un perfecto ejemplo de lo
que podríamos denominar la capa semántica de la tipografía, que se movería en una órbita
superior a su capa física o pragmática. Allí mismo, más abajo, el tipógrafo (incluyendo a
nuestro tipógrafo binario TeX) sólo ve palabras, líneas y párrafos. Pero estas líneas, en
ocasiones, han de entenderse también como  <i>versos</i>. LaTeX, que es la cara semántica de
TeX, lo comprende estupendamente, y por eso se convierte (como en cualquier otro aspecto
de la composición libresca) en la perfecta herramienta y en el mejor aliado del tipógrafo
digital. Por eso mismo, también, un entorno de LaTeX tenía que acabar llamándose  <code>verse</code>.
</p>

 <p>
Por otra parte, paquetes de factura más reciente como  <code>gmverse.sty</code> han aportado novedades
muy interesantes. Si bien es una lástima que su desarrollo haya quedado algo estancado. En
todo caso, el código está ahí, abierto y al alcance de todos. No hace falta insistir en
que el ecosistema TeX es conocimiento libre. Y probablemente no se haya dicho la última
palabra en este vasto ámbito respecto al centrado óptico automático de los poemas.
</p>
</div>
</div>

 <div id="outline-container-org1f139fd" class="outline-2">
 <h2 id="org1f139fd">Actualización de 26/11/21: una función en Lua para los versos con claudátur</h2>
 <div class="outline-text-2" id="text-org1f139fd">
 <p>
Una de las características esenciales de LuaTeX, y la que precisamente da nombre a esta
versión del motor tipográfico, es la de poder acceder a los entresijos de TeX mediante
 <i>scripts</i> en Lua, de una forma limpia, simple y quirúrgica, y asociarlos a distintos
 <i>callback</i> o grupos especializados de funciones de forma que se ejecuten en puntos
determinados del proceso de compilación. Dado que contamos con un  <i>callback</i> llamado
 <code>post_linebreak_filter</code>, o sea, específico para todo código que ha de entrar en acción
cada vez que TeX corte una línea, se me ocurrió escribir y asociarle esta función, para
que aquellos versos desbordados se ajusten automáticamente a la derecha, tras un
claudátur, según el procedimiento que vimos en  <a href="#Tratamiento alternativo">Un tratamiento alternativo</a>. La ventaja es que
funciona bien con el paquete  <code>verse</code> y supone una solución alternativa y automatizada para
los versos desbordados, que ya hemos visto que el paquete  <code>verse</code> los trata mediante
sangrías.
</p>

 <p>
Primeramente, debemos definir una nueva caja para nuestro claudátur:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate">\newbox\claudatur</span>

 <span class="org-font-latex-sedate">\setbox\claudatur</span>= <span class="org-font-latex-sedate">\hbox</span>{[}
</pre>
</div>

 <p>
Nuestra función en Lua, encerrada en el entorno  <code>luacode</code>, del paquete del mismo nombre, pintaría tal que así:
</p>

 <div class="org-src-container">
 <pre class="src src-lua"> <span class="org-function-name">versos_desbordados</span> =  <span class="org-keyword">function</span>( <span class="org-variable-name">head</span>)
    <span class="org-keyword">local</span>  <span class="org-variable-name">last_line</span> =  <span class="org-constant">nil</span>
    <span class="org-keyword">for</span>  <span class="org-variable-name">line</span>  <span class="org-keyword">in</span> node.traverse_id(node.id( <span class="org-string">"hlist"</span>), head)  <span class="org-keyword">do</span>
       <span class="org-keyword">if</span> last_line  <span class="org-keyword">then</span>
          <span class="org-keyword">local</span>  <span class="org-variable-name">has_userpenalty</span> =  <span class="org-constant">false</span>
          <span class="org-keyword">for</span>  <span class="org-variable-name">pen</span>  <span class="org-keyword">in</span> node.traverse_id(node.id( <span class="org-string">"penalty"</span>), last_line.list)  <span class="org-keyword">do</span>
             <span class="org-keyword">if</span>  <span class="org-keyword">not</span> has_userpenalty  <span class="org-keyword">then</span>
               has_userpenalty = (pen.subtype == 0  <span class="org-keyword">and</span> pen.penalty == -10000)
             <span class="org-keyword">else</span>
                <span class="org-keyword">break</span>
             <span class="org-keyword">end</span>
          <span class="org-keyword">end</span>
          <span class="org-keyword">if</span>  <span class="org-keyword">not</span> has_userpenalty  <span class="org-keyword">then</span>
            line.head = node.insert_before(line.head,line.head,node.copy(tex.box.claudatur))
            x = node.new( <span class="org-string">"glue"</span>)
            x.stretch = 2^16
            x.stretch_order = 3
            line.head = node.insert_before(line.head,line.head,x)
            x = node.new( <span class="org-string">"glue"</span>)
            x.stretch = 2^16
            x.stretch_order = 2
            line.head = node.insert_before(line.head,line.head,x)
          <span class="org-keyword">end</span>
       <span class="org-keyword">end</span>
      last_line = line
    <span class="org-keyword">end</span>
    <span class="org-keyword">return</span> head
 <span class="org-keyword">end</span>
</pre>
</div>

 <p>
Y ya sólo nos quedaría definir dos comandos para activar y desactivar la función a
voluntad, es decir, para asociarla y desligarla del  <i>callback</i>, respectivamente:
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate"> <span class="org-keyword">\newcommand</span></span> <span class="org-font-latex-sedate"> <span class="org-function-name">\onclaudatur</span></span> <span class="org-font-latex-warning">{</span> <span class="org-comment">%</span>
   <span class="org-font-latex-sedate">\directlua</span>{luatexbase.add_to_callback("post_linebreak_filter",
    versos_desbordados, "versos_desbordados")}

 <span class="org-font-latex-sedate"> <span class="org-keyword">\newcommand</span></span> <span class="org-font-latex-sedate"> <span class="org-function-name">\offclaudatur</span></span> <span class="org-font-latex-warning">{</span> <span class="org-comment">%</span>
   <span class="org-font-latex-sedate">\directlua</span>{luatexbase.remove_from_callback("post_linebreak_filter",
    "versos_desbordados")}
</pre>
</div>

 <p>
Podemos poner el código en práctica con estos versos de Auden, y los márgenes adecuados para
garantizar el desbordamiento de algunos versos. El resultado de la compilación, en la fig.
 <a href="#org38c0354">8</a>.
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate">\onclaudatur</span>
 <span class="org-font-latex-sedate">\poemtitle</span>{In memory W.B. Yeats (W.H. Auden, fragmento)}
 <span class="org-font-latex-sedate"> <span class="org-keyword">\begin</span></span>{ <span class="org-function-name">verse</span>}
But for him it was his last afternoon as himself, <span class="org-font-latex-warning">\\</span>
An afternoon of nurses and rumours; <span class="org-font-latex-warning">\\</span>
The provinces of his body revolted, <span class="org-font-latex-warning">\\</span>
The squares of his mind were empty, <span class="org-font-latex-warning">\\</span>
Silence invaded the suburbs, <span class="org-font-latex-warning">\\</span>
The current of his feeling failed; he became his admirers.

Now he is scattered among a hundred cities <span class="org-font-latex-warning">\\</span>
And wholly given over to unfamiliar affections, <span class="org-font-latex-warning">\\</span>
To find his happiness in another kind of wood <span class="org-font-latex-warning">\\</span>
And be punished under a foreign code of conscience. <span class="org-font-latex-warning">\\</span>
The words of a dead man <span class="org-font-latex-warning">\\</span>
Are modified in the guts of the living.

But in the importance and noise of to-morrow <span class="org-font-latex-warning">\\</span>
When the brokers are roaring like beasts on the floor of the bourse, <span class="org-font-latex-warning">\\</span>
And the poor have the sufferings to which they are fairly accustomed <span class="org-font-latex-warning">\\</span>
And each in the cell of himself is almost convinced of his freedom <span class="org-font-latex-warning">\\</span>
A few thousand will think of this day <span class="org-font-latex-warning">\\</span>
As one thinks of a day when one did something slightly unusual.

What instruments we have agree <span class="org-font-latex-warning">\\</span>
The day of his death was a dark cold day. <span class="org-font-latex-warning">\\</span>
 <span class="org-font-latex-sedate"> <span class="org-keyword">\end</span></span>{ <span class="org-function-name">verse</span>}
</pre>
</div>


 <div id="org38c0354" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/yeats.png" alt="yeats.png" style="width:60%"></img></p>
 <p> <span class="figure-number">Figura 8: </span>Versos desbordados con claudátur (ejemplo con un poema de Auden)</p>
</div>
</div>
</div>

 <div id="outline-container-orgceca5cd" class="outline-2">
 <h2 id="orgceca5cd">∞</h2>
 <div class="outline-text-2" id="text-orgceca5cd">
 <div>
 <p>Publicado: 29/09/19</p>

 <p>Última actualización: 21/01/22</p>
</div>
 <div>
 <hr></hr> <p>
 <a href="index.html">Índice general</a>
</p>
 <p>
 <a href="acerca-de.html">Acerca de...</a>
</p>
 <p>
Esta obra está bajo una  <a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/">licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional</a>.
</p>
</div>
</div>
</div>
 <div id="footnotes">
 <h2 class="footnotes">Notas: </h2>
 <div id="text-footnotes">

 <div class="footdef"> <sup> <a id="fn.1" class="footnum" href="#fnr.1" role="doc-backlink">1</a></sup> <div class="footpara" role="doc-footnote"> <p class="footpara">
Nos ceñiremos, no obstante, sólamente al formato LaTeX.
</p></div></div>

 <div class="footdef"> <sup> <a id="fn.2" class="footnum" href="#fnr.2" role="doc-backlink">2</a></sup> <div class="footpara" role="doc-footnote"> <p class="footpara">
Como por desgracia ha venido sucediendo en tantas otras cosas, el Microsoft Word ha
hecho estragos entre algunos poetas, lastrándolos de no pocos desvaríos tipográficos, de
los cuales probablemente estarían a salvo si empleasen un editor de texto en condiciones
o, al menos, una máquina de escribir. O incluso bolígrafo y papel. Les serviría también de
saludable penitencia.
</p></div></div>

 <div class="footdef"> <sup> <a id="fn.3" class="footnum" href="#fnr.3" role="doc-backlink">3</a></sup> <div class="footpara" role="doc-footnote"> <p class="footpara">
Documentación que, dicho sea de paso, no es precisamente un ejemplo de claridad de cara a un público más general,
y en la que a menudo se hace necesario navegar por el código para llegar a entender las diversas funcionalidades o
enterarnos de su existencia.
</p></div></div>


</div>
</div></div>]]></description>
  <link>https://lunotipia.juanmanuelmacias.com/versostex.html</link>
  <guid isPermaLink="false">https://lunotipia.juanmanuelmacias.com/versostex.html</guid>
  <pubDate>vie, 21 ene 2022 22:04:00 +0100</pubDate>
</item>
<item>
  <title>Didot, /aplá/ y el bálsamo de la tradición</title>
  <description><![CDATA[<div id="content" class="content">

 <form>
 <p style="text-align: center;"> <button formaction="https://maciaschain.gitlab.io/lunotipia/pdf/apla.pdf"> <font size="2">Descargar esta entrada en formato PDF</font></button></p>
</form>

 <p>
Ciertas corrientes en la producción actual de libros, que podríamos tildar de vandálicas o
iletradas, parecen disfrutar de un placer malsano en abolir las tradiciones tipográficas a
golpe de ego. Y cuando el ego del productor del libro, inflado, estorba entre el autor y
el lector se rompe ese antiguo contrato social mediador de ambas orillas, que es la
esencia de la tipografía y que garantiza su benefactora invisibilidad. La «originalidad»,
lo hemos dicho muchas veces pero no importa insistir una más, es un veneno en la
tipografía del libro. El otro veneno, casi concatenado, suele ser la salmodia del diseño
gráfico, que alimenta hasta límites insospechados la arrogancia del, ya no tipógrafo, sino
«diseñador». Éste, habitual analfabeto digital y analógico, o bien desconoce las
elementales normas de composición que le ha legado la tradición, o bien se siente tan
venido arriba que se cree en potestad de inventarse toda la tipografía de golpe él solo, a
base de una infantil, casi automática transgresión. Sin ir más lejos, hace poco me topé
con un libro cuya tabla de contenido estaba dispuesta de tal forma que generaba en el
lector (es decir, en mí) la desagradable sensación de que todo ese índice estaba del
revés. No sé si era eso lo que pretendía nuestro «diseñador» de turno. Probablemente no,
pero seguro que le pareció divertido jugar con unos márgenes lisérgicos e incluso le
extrañaría por qué nadie lo había hecho antes. Cuánto mejor si tan sólo hubiese tenido en
cuenta que el lector (es decir, yo) que acude a una tabla de contenido lo que quiere es
eso: hacerse una idea del contenido y de las páginas en que éste se despliega. No
sorpresas. No mareos. No fiestas.
</p>

 <p>
En todo caso, entiéndase: no estamos afirmando que sea ilícito buscar nuevas vetas en la
tipografía del libro; ni que en ella esté ya todo definitivamente dicho. Pero para minar
tales vetas no es necesario —ni aconsejable— dinamitar lo colindante o precedente. Se
impone siempre un equilibrio. Entre lo nuevo y lo que ha funcionado siempre. Y, sobre
todo, se hace necesario comprender cómo y de qué manera ha funcionado. La tradición
tipográfica, que es un conjunto de normas y de rutinas, no hay que verla como una rémora
sino como un inagotable tesoro.
</p>

 <p>
Dentro de estas alhajas heredadas daremos aquí unos breves trazos de una en especial —y
de un caso concreto en la tradición vernácula de la tipografía griega— que podríamos
denominar los «tipos estándar». Es decir, aquellos tipos o familia de letras que se
convierten en los habituales para componer un texto y que el lector de libros, de alguna
forma inconsciente, ya los espera, pues los tiene tan asimilados como el rumor del mar en
la costa o el runrún del tráfico en su ciudad.
</p>


 <div id="org7f61c96" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/himno_aristoteles.png" alt="himno_aristoteles.png"></img></p>
 <p> <span class="figure-number">Figura 1: </span>Un pasaje de  <i>Hymne D’Aristote a la vertu. Traduit en vers français par Firmin Didot</i>, editado en París por Firmin Didot en 1832 (obsérvese las típicas variantes contextuales de la  <i>beta</i> inicial y media)</p>
</div>

 <p>
Los tipos estándar son un concepto variable. Así, en la tradición tipográfica anglosajona
puede recaer no en una sino en varia familias, dependiendo de la época, el lugar e incluso
el vaivén de las modas. Tipos como Bembo o Caslon bien pueden asumir tal rango, por citar
un par de nombres célebres. Y, en tiempos más recientes, la Times Roman. Pero si hablamos
de la tipografía griega hecha en Grecia, al menos hasta el siglo  <font style="font-size:smaller;">XX</font> hay un nombre que
brilla en justicia por sobre todos: Didot.
</p>

 <p>
Como ya referimos en esta  <a href="https://lunotipia.juanmanuelmacias.com/griegos_del_rey.html">historia de la tipografía griega para impacientes</a>, la
representación libresca de la lengua griega se desarrolló y maduró durante un largo y
fructífero período de exilio, y no llegaría a su Ítaca particular, a Grecia, hasta entrado
el siglo  <font style="font-size:smaller;">XIX</font>. Hasta entonces, y promovida por escribas y tipógrafos griegos,
igualmente exiliados, sus centros de influencia estaban en Venecia, París y Viena,
principalmente.
</p>


 <div id="orgf69a3fa" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/manucio.png" alt="manucio.png"></img></p>
 <p> <span class="figure-number">Figura 2: </span>Un ejemplo de convivencia de tipos Didot latinos y griegos en  <i>Alde Manuce et L’Hellénisme a Venisse</i>, publicado por Firmin Didot en 1875</p>
</div>

 <p>
Cuando llegó la imprenta a Grecia, que se hallaba aún bajo el yugo turco, las páginas
impresas de la escritura griega habían alcanzado ya un notable estado de madurez; de
mayoría de edad tipográfica, podríamos decir, en que, gracias a los primeros hallazgos de
Bodoni y, sobre todo, a la posterior revolución a cargo de Didot, ya se decía adiós
definitivamente al estilo caligráfico. Ambroise-Firmin Didot había conseguido, en efecto,
dotar a las letras griegas de un temperamento propio, decididamente tipográfico, sin
servidumbre alguna de los trazos y formas latinas, sin resto de las florituras del
escriba. No es de extrañar que desde esa atalaya privilegiada y vanguardista, fuera
también Didot el mentor del regreso (encuentro primerizo, más bien) de la tipografía
griega a su patria real y legítima.
</p>


 <div id="org2f8384d" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/vamvas.png" alt="vamvas.png"></img></p>
 <p> <span class="figure-number">Figura 3: </span>Una página de la  <i>Gramática griega</i> en demótico de Neofitos Vamvas, compuesta en Didot</p>
</div>

 <p>
Con el abundante material y tipos, en efecto, que hizo mandar Didot hacia Quíos (el primer
deseo del impresor francés era Atenas, pero se desestimó a causa de la situación
política), pudo imprimirse allí la  <i>Gramática griega</i> en griego demótico del erudito
Neófitos Vamvas, en 1821 (fig.  <a href="#org2f8384d">3</a>). La nueva imprenta no tardó en ser destruida
por los turcos, y a su vez no tardó Didot en donar nuevo material, cuyo destino fue ahora
la isla de Hidra. Allí se emprendió (1824) la impresión del periódico  <a href="https://el.wikipedia.org/wiki/%CE%9F_%CE%A6%CE%AF%CE%BB%CE%BF%CF%82_%CF%84%CE%BF%CF%85_%CE%9D%CF%8C%CE%BC%CE%BF%CF%85"> <i>Ο Φίλος του Νόμου</i></a>
( <i>El amigo de la ley</i>), de una efímera existencia de tres años, pero de un poso decisivo.
</p>


 <div id="org4879573" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/o-filos.png" alt="o-filos.png"></img></p>
 <p> <span class="figure-number">Figura 4: </span>Primera página del periódico  <i>Ο Φίλος του Νόμου</i>, compuesta en Didot</p>
</div>

 <div id="outline-container-Los tipos /aplá/" class="outline-2">
 <h2 id="Los tipos /aplá/">Los tipos  <i>aplá</i></h2>
 <div class="outline-text-2" id="text-Los tipos /aplá/">
 <p>
Gracias al trascendente impulso didotiano la tipografía griega, ya por fin en Grecia, fue
escalando y adquiriendo su personalidad propia. La influencia francesa fue siempre
innegable (¿quién en su sano juicio renunciaría a ella?) pero los impresores griegos
también supieron construir poco a poco una tradición que ya era, y con toda justicia,
vernácula. Y aún nos atreveríamos a añadir esto que sigue: desde que Grecia se puso por
fin al frente de su propia tipografía para representar la lengua que le es propia, la
representación del griego fuera de la Hélade debe seguir ya las normas de la tipografía
hecha allí, que conjunta lo mejor del acervo acumulado durante su larga historia
«apátrida» con los nuevos establecimientos y prescripciones que dictaron los peritos
impresores griegos <sup> <a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink">1</a></sup>.
</p>


 <div id="orga4bba54" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/galatia.png" alt="galatia.png"></img></p>
 <p> <span class="figure-number">Figura 5: </span>Detalle de una página de  <i>Η Μεγάλη Ελλάς</i>, de Galatia Kazantzaki, publicado en Atenas en 1927 y compuesto en Didot</p>
</div>

 <p>
Y es lícito llamar la atención sobre la letra que se convirtió en feliz constante a lo
largo de esta joven pero fructífera tradición: los tipos griegos que definiera Firmin
Didot. No tardaron en erigirse en un estilo propio y netamente reconocible, un estándar
 <i>de facto</i> que los impresores del país acabaron denominando  <i>aplá</i>, esto es, «sencillo»,
«plano», «simple». Con la implantación del uso de la monotipia a finales del  <font style="font-size:smaller;">XIX</font> y
principios del  <font style="font-size:smaller;">XX</font> llegó la culminación de este estilo, por obra de los habilidosos
monotipistas helenos y la asunción de la versión didotiana que distribuía la casa
Monotype, la célebre Greek 90 <sup> <a id="fnr.2" class="footref" href="#fn.2" role="doc-backlink">2</a></sup>, con la que se compusieron páginas griegas de una
claridad diáfana y limpia, hermosas y paradigmáticas.
</p>


 <div id="org6792dee" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/periodico.png" alt="periodico.png"></img></p>
 <p> <span class="figure-number">Figura 6: </span>Detalle del periódico  <i>Ανθολογία</i> (1837), compuesto en Didot. Resalto dos ejemplos de caracteres contextuales alternativos de  <i>beta</i> media e incial</p>
</div>

 <p>
Ahora bien, el estilo  <i>aplá</i> no sólo se encontró con el reto de ir definiendo un espíritu
autóctono para la representación tipográfica de la lengua griega. Había por delante otro
desafío acaso más profundo, y era el de representar con caracteres griegos por primera vez
una lengua viva, algo prácticamente exótico para los impresores en griego fuera de Grecia,
más atentos a la representación del griego antiguo y, por regla general, en un marco
académico y filológico. Un hito particular de este trance fue el caso de la cursiva, cuyo
uso enfático no es pertinente a la hora de representar el griego antiguo, pero se hace
necesario en una lengua viva de Europa. Por supuesto, ya había cursivas de reconocida
solvencia que en la impresión del griego antiguo se empleaban, no como énfasis
(insistimos), sino como variante de estilo del texto principal. Por un lado estaba la
británica  <a href="https://lunotipia.juanmanuelmacias.com/porson.html">Porson</a> de las ediciones clásicas oxonienses; por otro, la familia de tipos
 <i>lipsiakó</i>, inspirados en la Didot recta, nacidos en torno a Leipzig y las ediciones de
Teubner, principalmente. Este último estilo se convirtió en Grecia en la cursiva habitual
del  <i>aplá</i>, especialmente en la versión de Monotype denominada Greek 91. Pero también hubo
casos en que se aplicó la Porson con gran maestría y equilibrio.
</p>
</div>
</div>

 <div id="outline-container-El estilo /aplá/ en la era digital" class="outline-2">
 <h2 id="El estilo /aplá/ en la era digital">El estilo  <i>aplá</i> en la era digital</h2>
 <div class="outline-text-2" id="text-El estilo /aplá/ en la era digital">
 <p>
Por supuesto, dejada atrás la composición mecánica y la fotocomposición, y ya en el
nebuloso e incierto ámbito de la llamada «autoedición», tanto dentro y fuera de Grecia se
desarrollaron incontables fuentes TrueType o PostScript de inspiración didotiana, pero
generalmente de baja calidad y sin el refinamiento de sus ancestros mecánicos; en parte,
por las limitaciones del formato; en parte también por el poco generoso rigor histórico de
los desarrolladores. Una excepción, y un oasis, lo constituía el ecosistema  <span style="font-family:serif;">T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span>, y
especialmente  <code>metafont</code>, cuya tecnología de fuentes escalables se anticipó en muchos
lustros a la de las fuentes TrueType, e incluso a la de las OpenType. Así, cabe señalar el
espíritu decididamente Didot de la Computer Modern para representar griego.
</p>

 <p>
Con la llegada de las fuentes OpenType y de diseñadores más peritos, el panorama para los
amantes de la Didot (entre los que se cuenta quien escribe este textito) ha mejorado
considerablemente, si bien estamos algo lejos aún de la excelsa perfección y gracia de
la Greek 90 de Monotype. Entre las aproximaciones actuales (a fecha de estas líneas,
entiéndase) me atrevería a citar dos muy conseguidas, todas ellas de licencia libre: La
 <a href="https://greekfontsociety-gfs.gr/typefaces/19th_century">GFS Didot Classic</a>, desarrollada bajo el paraguas de la  <i>Sociedad de fuentes griega</i>, y los
tipos  <a href="https://www.ctan.org/pkg/oldstandard">Old Standard</a>, diseñados por el profesor Alexej Kryukov y mantenidos y enriquecidos
en la actualidad por Robert Alessi, Nikola Lečić y Bob Tennent.
</p>

 <p>
Ambas tienen, naturalmente, sus particularidades. La de la Greek Font Society acusa una
inspiración más cercana a la Didot de Monotype, con la caja de sus caracteres algo más
ancha. Pero, por otra parte, la elección de un estilo Palatino para su juego de caracteres
latinos y sus signos de puntuación nos parece completamente desafortunada y sin ningún
correlato en la tradición dentro y fuera de Grecia que lo justifique. Si tuviese que
quedarme con una de ambas, me decantaría claramente por la segunda, la Old Standard, de
diseño muchísimo más cuidado y sustentado por un gran conocimiento histórico. Diríamos que
se trata de una Didot de tradición más filológica, aunque su empleo es perfectamente
factible y legítimo en una gran variedad de escenarios. Digna de mención aparte es su
delicadísima y bella cursiva, claramente de inspiración lipsiaka <sup> <a id="fnr.3" class="footref" href="#fn.3" role="doc-backlink">3</a></sup>.
</p>


 <div id="org4be9889" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/angelis.png" alt="angelis.png"></img></p>
 <p> <span class="figure-number">Figura 7: </span>Página de un artículo de Dimitris Angelís, compuesto por mí en Old Standard, perteneciente al Volumen de homenaje a la profesora Penélope Stavrianopúlu (Berlín 2013)</p>
</div>
</div>
</div>


 <div id="outline-container-Fuentes de las imágenes" class="outline-2">
 <h2 id="Fuentes de las imágenes">Fuentes de las imágenes</h2>
 <div class="outline-text-2" id="text-Fuentes de las imágenes">
 <dl class="org-dl"> <dt>Fig.  <a href="#org7f61c96">1</a></dt> <dd> <a href="https://archive.org/">https://archive.org/</a></dd>
 <dt>Fig.  <a href="#orgf69a3fa">2</a></dt> <dd> <a href="https://archive.org/">https://archive.org/</a></dd>
 <dt>Fig.  <a href="#org2f8384d">3</a></dt> <dd> <a href="https://fdocument.org">https://fdocument.org</a></dd>
 <dt>Fig.  <a href="#org4879573">4</a></dt> <dd> <i>Wikimedia commons</i></dd>
 <dt>Fig.  <a href="#orga4bba54">5</a></dt> <dd> <a href="https://dimartblog.com">https://dimartblog.com</a></dd>
 <dt>Fig.  <a href="#orga4bba54">5</a></dt> <dd> <a href="http://spaniasyllektika.blogspot.com">http://spaniasyllektika.blogspot.com</a></dd>
</dl></div>
</div>



 <div id="outline-container-org7450b44" class="outline-2">
 <h2 id="org7450b44">∞</h2>
 <div class="outline-text-2" id="text-org7450b44">
 <div>
 <p>Publicado: 16/09/20</p>

 <p>Última actualización: 21/01/22</p>
</div>
 <div>
 <hr></hr> <p>
 <a href="index.html">Índice general</a>
</p>
 <p>
 <a href="acerca-de.html">Acerca de...</a>
</p>
 <p>
Esta obra está bajo una  <a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/">licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional</a>.
</p>
</div>
</div>
</div>
 <div id="footnotes">
 <h2 class="footnotes">Notas al pie de página: </h2>
 <div id="text-footnotes">

 <div class="footdef"> <sup> <a id="fn.1" class="footnum" href="#fnr.1" role="doc-backlink">1</a></sup> <div class="footpara" role="doc-footnote"> <p class="footpara">
Por ejemplo, véase  <a href="https://lunotipia.juanmanuelmacias.com/comillasgriegas.html">esta entrada</a> que aquí dedicamos al caso de las comillas en la
tipografía griega.
</p></div></div>

 <div class="footdef"> <sup> <a id="fn.2" class="footnum" href="#fnr.2" role="doc-backlink">2</a></sup> <div class="footpara" role="doc-footnote"> <p class="footpara">
Véase  <a href="http://web.archive.org/web/20120229131933/http://omega.enstb.org/yannis/pdf/boston99.pdf">From Unicode to Typography, a Case Study the Greek Script</a>, de Yannis Haralambous.
</p></div></div>

 <div class="footdef"> <sup> <a id="fn.3" class="footnum" href="#fnr.3" role="doc-backlink">3</a></sup> <div class="footpara" role="doc-footnote"> <p class="footpara">
Véase  <a href="https://lunotipia.juanmanuelmacias.com/cavafis_sarpedon.html">nuestro «experimento»</a> con un poema de Cavafis y la cursiva  <i>lipsiakó</i> de la Old Standard.
</p></div></div>


</div>
</div></div>]]></description>
  <link>https://lunotipia.juanmanuelmacias.com/apla.html</link>
  <guid isPermaLink="false">https://lunotipia.juanmanuelmacias.com/apla.html</guid>
  <pubDate>vie, 21 ene 2022 22:03:00 +0100</pubDate>
</item>
<item>
  <title>«Aprender LaTeX»</title>
  <description><![CDATA[<div id="content" class="content">

 <p>

 <style>
.figure-number {
    display: none;
}
</style></p>


 <div id="org8ec7ca6" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/ctan_lion.png" alt="ctan_lion.png" style="width:70%"></img></p>
 <p> <span class="figure-number">Figura 1: </span>La mascota de TeX, dibujada por Duane Bibby</p>
</div>

 <ol class="org-ol"> <li>De vez en cuando me preguntan dónde y cómo aprender  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span>. Primero,  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> no fue nunca, ni es ni será un procesador
de texto.  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> es un formato (no el único), un lenguaje de alto nivel para hacer composición tipográfica con  <span style="font-family:serif;">T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span>.</li>

 <li>Para entender  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> antes hay que entender qué es  <span style="font-family:serif;">T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span>, y si no te interesa la tipografía en su expresión más elevada
y refinada, ni la producción de libros, entonces ni  <span style="font-family:serif;">T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> ni  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> son para ti.</li>

 <li> <span style="font-family:serif;">T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> es un «digital typesetting system». Es a la tipografía lo que a la música podría ser un sintetizador o un
sampler. Mientras éstos generan sonidos y emulan instrumentos musicales acústicos,  <span style="font-family:serif;">T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> recrea y automatiza mediante
algoritmos la técnica y el arte del cajista clásico.</li>

 <li> <span style="font-family:serif;">T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> es también un lenguaje de programación y, por tanto, es programable a bajo nivel para que haga una serie de cosas
elementales (en el plano meramente físico de la composición) y las haga de manera perfecta. Pero uno de sus lenguajes
semánticos es  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span>. Si  <span style="font-family:serif;">T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> es el cajista, el que se mancha el mono de trabajo,  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> es entonces el director
editorial. Usar  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> como procesador de texto, como se hace en medios académicos/científicos, es como grabar un
audio del whatsapp en un software profesional de sonido como Logic o ProTools (o Ardour en GNU/Linux).</li>

 <li>Dicho esto,  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span>, cuya estructura es de núcleo mínimo, se «aprende» rápido: la disposición del documento, la
sintaxis básica, definir y redefinir comandos y entornos, las clases estándar, etc. A mí todo eso me llevó muy poco
aprenderlo.</li>

 <li>Pero  <b>no</b> es aprender  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span>. Dado que éste se extiende a base de paquetes, aprender realmente  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> es aprender la
documentación de los paquetes que usas. Cada paquete viene profusamente documentado. La documentación se estudia muy
poco, y eso no es óptimo.</li>

 <li>También es bueno saber cuándo se opera a nivel  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> y cuando a nivel  <span style="font-family:serif;">T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span>: cuándo se usa lenguaje  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> y cuándo los
comandos  <span style="font-family:serif;">T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> (las primitivas).</li>

 <li> <span style="font-family:serif;">LuaT <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> (e insisto:  <span style="font-family:serif;">LuaT <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> es lo que se debe usar: el resto va a quedar desfasado y el mundo  <span style="font-family:serif;">T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> ya gira en torno a
 <span style="font-family:serif;">LuaT <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span>) incorpora sus propias primitivas y, lo más importante, un intérprete de Lua.</li>

 <li>Así, en Lua <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> puedes usar lenguaje  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> e injertar lenguaje Lua para manejar diversos aspectos de la composición
en el pre-proceso. Y eso te da un control tipográfico brutal. Lua también abre nuevas posibilidades a los
desarrolladores de paquetes.</li>

 <li>Por último, la mejor forma de aprender  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> es usar  <span style="font-family:serif;">L <span style="vertical-align:0.5ex;font-size:smaller;margin-left:-0.3em;">A</span>T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span>. Porque cada libro aporta sus propios retos. No hay dos
libros iguales en el universo.</li>
</ol> <div id="outline-container-org0e6133e" class="outline-2">
 <h2 id="org0e6133e">∞</h2>
 <div class="outline-text-2" id="text-org0e6133e">
 <div>
 <p>Publicado: 26/10/19</p>

 <p>Última actualización: 21/01/22</p>
</div>
 <div>
 <hr></hr> <p>
 <a href="index.html">Índice general</a>
</p>
 <p>
 <a href="acerca-de.html">Acerca de...</a>
</p>
 <p>
Esta obra está bajo una  <a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/">licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional</a>.
</p>
</div>
</div>
</div>
</div>]]></description>
  <link>https://lunotipia.juanmanuelmacias.com/aprenderlatex.html</link>
  <guid isPermaLink="false">https://lunotipia.juanmanuelmacias.com/aprenderlatex.html</guid>
  <pubDate>vie, 21 ene 2022 22:03:00 +0100</pubDate>
</item>
<item>
  <title>Combinar tipos latinos y griegos (sólo un apunte)</title>
  <description><![CDATA[<div id="content" class="content">

 <form>
 <p style="text-align: center;"> <button formaction="https://maciaschain.gitlab.io/lunotipia/pdf/latino_griego.pdf"> <font size="2">Descargar esta entrada en formato PDF</font></button></p>
</form>


 <p>
Demasiado breve, ciertamente, para lo que este tema es capaz de dar de sí. Porque son muchas y variadas las
estrategias que podemos seguir a la hora de intentar casar en un libro tipos latinos y griegos de distintas familias
tipográficas, ya sea cuando el texto «rector» sea de caracteres latinos o viceversa. Partamos, ante todo, de una base
general, algo en que no haría falta redundar, pero que nos lleva a ello, una vez más, el desconocimiento coral que en
la producción gráfica de estos tiempos se tiene de la tipografía griega. Aunque la escritura griega es dueña de una
personalidad propia, de un temperamento y, cómo no, de una historia (larga historia no carente de más de un deseacomodo
con los caracteres latinos en su no menos larga  <i>Odisea</i> desde  <a href="https://maciaschain.gitlab.io/lunotipia/griegos_del_rey.html">la mano del escriba</a> hacia su propio estatus
tipográfico), conviene buscar un cierto espíritu que enlace el texto griego y el latino. Pero sin temor al natural
contraste entre ambos. No queremos letras griegas que parezcan latinas, ni letras latinas helenizadas en exceso.
Deseamos, más bien, esa noción tan imprecisa que se llama «estilo», y que puede concretarse muchas veces con el
espíritu de una época o los modos de alguna que otra tradición; pero que también estará esperando detrás de nuevas
vetas para minarlas con el debido recato. Porque en tipografía, insistimos de nuevo, la originalidad es el más
pecaminoso de los suicidios: caeremos nosotros primero, pero nos llevaremos detrás a quien más debemos cuidar, que es
el lector. La versión abreviada de todo lo dicho hasta aquí: combinar una Garamond o una Bembo con una Didot griega en
la misma página no es precisamente la más feliz de las ideas.
</p>

 <p>
Por contra, si hemos escogido bien nuestras dos fuentes, entonces ya tendremos la mayor parte del camino recorrido.
Sólo queda probar, calibrar y volver a probar. Habrá ocasiones, por cierto, en que la altura x de la fuente griega
difiera perceptiblemente de la de la latina, bien por arriba o por debajo. ¿Es esto un problema? Pues depende de la
circunstancia y caso concretos, pero en general no debería serlo si entendemos que estamos tratando con dos escrituras
que tienen su propia idiosincrasia. Por fortuna, tampoco nos faltan en el ecosistema  <span style="font-family:serif;">T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> recursos para lidiar
con esos y muchos más avatares. Sin ir más lejos, hay una propiedad muy interesante que proporciona el paquete
 <code>fontspec</code> a la hora de definir nuestras familias de tipos, llamada  <code>scale</code>. Esta propiedad admite tres valores: uno
numérico, el que queramos, y otros dos prefijados llamados  <code>MatchLowercase</code> y  <code>MatchUppercase</code>, que se encargarán de
escalar los tipos en que han sido declarados para que éstos se ajusten de la forma más aproximada posible a la
altura de las minúsculas o mayúsculas, respectivamente, de la fuente principal. Conviene añadir que se trata siempre
de un escalado no destructivo ni deformador, llevado a cabo mediante unos cálculos muy precisos en el proceso de
compilación y cargado de las fuentes. De dichos cálculos nos da buena cuenta el archivo  <code>*.log</code>, y también podemos
tomar como referencia la cifra que ha obtenido  <span style="font-family:serif;">T <span style="vertical-align:-0.4ex;font-size:smaller;">E</span>X</span> (seguida siempre por una hilera abrumadora de decimales) para
hacer alguna corrección, si es que nos interesa seguir esta vía.
</p>

 <p>
Para ver claramente el proceso, nada mejor que una exageración: muestro este primer ejemplo extremo con la fuente
Crimson (los tipos griegos de esta fuente, quiero decir) y una fuente de estilo «grafitero» llamada Abuse. Podemos usar
 <code>fontspec</code> mediante Babel, y así declaramos a un tiempo las familias con sus propiedades y la lengua en que deben ser
cargadas. El resultado de la compilación, en la fig.  <a href="#org1d81c28">1</a>).
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate"> <span class="org-keyword">\usepackage</span></span>{ <span class="org-function-name">fontspec</span>}
 <span class="org-comment-delimiter">% </span> <span class="org-comment">Cargamos Babel con español como lengua principal y como lenguas invitadas inglés, latín,</span>
 <span class="org-comment-delimiter">% </span> <span class="org-comment">alemán, italiano y griego (atributo: griego antiguo)</span>
 <span class="org-font-latex-sedate"> <span class="org-keyword">\usepackage</span></span>[ <span class="org-variable-name">greek.ancient,english,latin,german,italian,spanish</span>]{ <span class="org-function-name">babel</span>}
 <span class="org-comment-delimiter">% </span> <span class="org-comment">Definimos la famila rm principal</span>
 <span class="org-font-latex-sedate">\babelfont</span>{rm}{Abuse}
 <span class="org-comment-delimiter">% </span> <span class="org-comment">Y la familia sólo para ser usada en griego (Crimson)</span>
 <span class="org-font-latex-sedate">\babelfont</span>[greek]{rm}[Scale=MatchLowercase]{Crimson}
</pre>
</div>


 <div id="org1d81c28" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/abuse.png" alt="abuse.png"></img></p>
 <p> <span class="figure-number">Figura 1: </span>Abuse con Crimson griega escalada a la altura de las minúsculas de la primera</p>
</div>

 <p>
Y, visto ya como trabajan los cálculos de escalado, pasemos a un ejemplo más sensato, donde combinaremos Crimson con
Sabon (resultado en fig.  <a href="#orgded7f94">2</a>).
</p>

 <div class="org-src-container">
 <pre class="src src-latex"> <span class="org-font-latex-sedate"> <span class="org-keyword">\usepackage</span></span>{ <span class="org-function-name">fontspec</span>}
 <span class="org-comment-delimiter">% </span> <span class="org-comment">Cargamos Babel con español como lengua principal y como lenguas invitadas inglés, latín, alemán, italiano y griego (atributo: griego antiguo)</span>
 <span class="org-font-latex-sedate"> <span class="org-keyword">\usepackage</span></span>[ <span class="org-variable-name">greek.ancient,english,latin,german,italian,spanish</span>]{ <span class="org-function-name">babel</span>}
 <span class="org-comment-delimiter">% </span> <span class="org-comment">Definimos la famila rm principal</span>
 <span class="org-font-latex-sedate">\babelfont</span>{rm}[Numbers=Lowercase]{Sabon LT Std}
 <span class="org-comment-delimiter">% </span> <span class="org-comment">Y la familia sólo para ser usada en griego (Crimson)</span>
 <span class="org-font-latex-sedate">\babelfont</span>[greek]{rm}[Scale=MatchLowercase]{Crimson}
</pre>
</div>


 <div id="orgded7f94" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/sabon.png" alt="sabon.png"></img></p>
 <p> <span class="figure-number">Figura 2: </span>Sabon con Crimson griega escalada a la altura de las minúsculas de la primera</p>
</div>

 <div id="outline-container-En cualquier caso..." class="outline-2">
 <h2 id="En cualquier caso...">En cualquier caso…</h2>
 <div class="outline-text-2" id="text-En cualquier caso...">
 <p>
Insisto en lo que dije más arriba. En otras ocasiones es mejor dejar las cosas como están y no poner cadenas al
contraste, siempre y cuando éste pueda jugar a nuestro favor. Hoy las fuentes Unicode que cubren múltiples sistemas de
escritura nos han acostumbrado (tal vez demasiado) al aspecto homogéneo de los glifos a través de cada rango. Y salvo
honrosos casos donde esa homogeneidad viene dada por un minucioso y esmerado proceso de diseño, muy a menudo no
hallaremos más que letras saludando con su uniforme y en formación a los caracteres latinos. Pero cuando el griego
supo encontrar su propio lugar en la tipografía, el contraste no deja de ser bello, como bellas eran (ya no, por
desgracia) las páginas de la Colección Budé (fig.  <a href="#org13959db">3</a>). Qué mayor color que el aportado por su característica
paloseco griega. Y a la vez cuánta coherencia y limpieza en la composición.
</p>


 <div id="org13959db" class="figure">
 <p> <img src="https://lunotipia.juanmanuelmacias.com/images/herodoto.jpg" alt="herodoto.jpg"></img></p>
 <p> <span class="figure-number">Figura 3: </span>El Heródoto de Legrand (1944). Texto griego principal en la paloseco de Budé (que la colección usó hasta 1950). El griego del ap.crít. está en Didot.</p>
</div>
</div>
</div>


 <div id="outline-container-orge713735" class="outline-2">
 <h2 id="orge713735">∞</h2>
 <div class="outline-text-2" id="text-orge713735">
 <div>
 <p>Publicado: 27/12/19</p>

 <p>Última actualización: 21/01/22</p>
</div>
 <div>
 <hr></hr> <p>
 <a href="index.html">Índice general</a>
</p>
 <p>
 <a href="acerca-de.html">Acerca de...</a>
</p>
 <p>
Esta obra está bajo una  <a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/">licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional</a>.
</p>
</div>
</div>
</div>
</div>]]></description>
  <link>https://lunotipia.juanmanuelmacias.com/latino_griego.html</link>
  <guid isPermaLink="false">https://lunotipia.juanmanuelmacias.com/latino_griego.html</guid>
  <pubDate>vie, 21 ene 2022 22:03:00 +0100</pubDate>
</item>
<item>
  <title>Times Roman y tipografía divertida</title>
  <description><![CDATA[<div id="content" class="content">

 <form>
 <p style="text-align: center;"> <button formaction="https://maciaschain.gitlab.io/lunotipia/pdf/timesroman.pdf"> <font size="2">Descargar esta entrada en formato PDF</font></button></p>
</form>

 <p>
La felicidad de todo lector consiste en leer y olvidarse por completo de la tipografía. No otra es la felicidad que
reclamo para mí cuando tengo un libro entre las manos, a pesar de que hoy día ciertos «maquetadores» o —aún peor—
«diseñadores gráficos» se empeñan en arrebatarme un supremo estado de dicha que tiene que ver con el olvido y la
ignorancia. Y acto seguido me acuerdo de la tipografía y de sus parientes, así en general. Porque si la tipografía, la
buena tipografía, es el arte de la invisibilidad, aquí es donde Stanley Morison, creador de la Times Roman, se deja ver
un momento para insistir en que el tipógrafo perito (que ni maqueta ni es diseñador gráfico) ha de buscar a toda costa
ser expresión del autor cuyas páginas compone, no de sí mismo.
</p>

 <p>
Precisamente, y a cuento de la Times, recuerdo que en una ocasión, hace tiempo, alguien me pidió consejo para escoger el
tipo de letra en su tesis doctoral, puesto que el retoño de Morison —decía— le resultaba una fuente muy aburrida. Le
contesté que, así las cosas, se le abría la siguiente disyuntiva: si quería que el tribunal de su tesis se divirtiera
contemplando la fuente de su tesis, como quien asiste a un ameno desfile de letras, diacríticos y signos de puntuación;
o si deseaba, más bien, que el interés se dirigiese hacia lo que la tal tesis sostenía y disertaba. Suponiendo, claro
está, que este universo que nos ha tocado es aquel donde los tribunales se leen las tesis, pero eso es otro cantar. En
caso de lo primero, podría intentar imprimir todo en fraktur o en cualquier otra hermosa letra gótica, siempre y cuando
—ojo— el tribunal no estuviera formado por alemanes del siglo  <font style="font-size:smaller;">XVII</font> o  <font style="font-size:smaller;">XVIII</font>, pues de ser así el efecto
sorpresa en ellos sería nulo. También, por qué no, cabría echar mano de alguna de las muchas fuentes de fantasía que
pululan por ahí. Conozco una, incluso, donde las letras están formadas por gatitos en diversas posturas. Pero al cabo
tanto da, ya que lo malo de seguir esta vía estriba en que la contemplación estética, o lúdica si queremos, de una
tipografía suele durar muy poco. Una página, dos a lo sumo, y ya nos cansamos. De modo que si jugamos con más de
trescientas páginas el partido lo tenemos perdido sin salir siquiera al campo. En el fondo, es el horror ante una
tipografía, más que su posible deleite, lo que se nos clava y se extiende en el tiempo, a lo largo de una vida y durante
varias generaciones.
</p>

 <p>
Y es que las Garamond, las Bembo, las Bodoni, las Palatino y tantas otras más no fueron hechas para deleitar o distraer
(esa difícil competencia ha de recaer en el contenido), ni para ser contempladas con la boca abierta y los ojos fijos en
un cuadro colgadas de la pared. Por mucho que fuera de su hábitat natural las encontremos vistosas y «lindas».
Simplemente fueron concebidas para leer, puestas las letras una tras otra, formando palabras y renglones. Para leer con,
mediante, por, a través de ellas.
</p>

 <div id="outline-container-org5218e1c" class="outline-2">
 <h2 id="org5218e1c">∞</h2>
 <div class="outline-text-2" id="text-org5218e1c">
 <div>
 <p>Publicado: 25/10/19</p>

 <p>Última actualización: 21/01/22</p>
</div>
 <div>
 <hr></hr> <p>
 <a href="index.html">Índice general</a>
</p>
 <p>
 <a href="acerca-de.html">Acerca de...</a>
</p>
 <p>
Esta obra está bajo una  <a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/">licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional</a>.
</p>
</div>
</div>
</div>
</div>]]></description>
  <link>https://lunotipia.juanmanuelmacias.com/timesroman.html</link>
  <guid isPermaLink="false">https://lunotipia.juanmanuelmacias.com/timesroman.html</guid>
  <pubDate>vie, 21 ene 2022 22:03:00 +0100</pubDate>
</item>
</channel>
</rss>
