3.1 Dando forma a tus párrafos
Para formatear párrafos, \(\LaTeX\) implementa los algoritmos ya integrados en el programa \(\TeX\), que de forma predeterminada producen párrafos justificados. En otras palabras, los espacios entre palabras se alargan o acortan ligeramente para producir líneas de igual longitud. \(\TeX\) logra este resultado con un algoritmo que intenta encontrar una solución óptima para un párrafo completo, utilizando la configuración actual de unos 20 parámetros internos. Incluyen aspectos como intentar producir líneas visualmente compatibles, de modo que a una línea apretada no le siga una tipografía muy suelta, o considerar varios guiones seguidos como señal de mala calidad. Las interacciones entre estos parámetros son muy sutiles e incluso a los expertos les resulta difícil predecir los resultados cuando los modifican. Debido a que los ajustes estándar son adecuados para casi todas las aplicaciones, en este libro describimos sólo algunos de los parámetros. El Apéndice B.4.3 analiza cómo rastrear el algoritmo. Si está interesado en profundizar más en el tema de la división automática de párrafos, consulte The \(\TeX\)book [84, chap.14], que describe el algoritmo con gran detalle, o el interesantísimo artículo de Michael Plass y Donald Knuth sobre el tema, que se reimprime en Digital Typography [99].
La desventaja del enfoque de optimización global de \(\TeX\), que encontrarás tarde o temprano, es que hacer pequeños cambios, como corregir un error tipográfico cerca del final de un párrafo, puede tener efectos drásticos y sorprendentes, ya que podría afectar la salto de línea de todo el párrafo. Es posible, y ni siquiera improbable, que, por ejemplo, la eliminación de una palabra pueda en realidad hacer que un párrafo sea una línea más larga.
Este comportamiento puede ser muy molesto si está cerca del final de un proyecto importante (como la tercera edición de este libro) y una corrección causa estragos en los saltos de página ya ajustados manualmente. En tal situación, es mejor colocar los comandos \linebreak
o \pagebreak
en lugares estratégicos para forzar a \(\TeX\) a elegir una solución que normalmente consideraría inferior. Para poder deshacerte posteriormente de dichas correcciones manuales, puedes definir fácilmente tus propios comandos, como
\newcommand\CElinebreak{\linebreak}
en lugar de utilizar los comandos estándar \(\LaTeX\) directamente. Esto le ayuda a distinguir los ajustes de diseño para una versión particular de otros usos de los comandos originales, un método utilizado con éxito en la preparación de este libro.
Espaciado entre palabras
El espacio entre palabras en un párrafo justificado (el espacio en blanco entre palabras individuales) está controlado por varios parámetros \(\TeX\); los más importantes son \tolerance
y \emergencystretch
. Al configurarlos adecuadamente para su documento, puede evitar la mayoría o todos los mensajes de “Cuadro demasiado lleno” sin necesidad de saltos de línea manuales. El comando \tolerance
es un medio para establecer cuánto se permite que el espacio entre palabras en un párrafo diverja de su valor óptimo. Este comando es un contador \(\TeX\) (no \(\LaTeX\)) y, por lo tanto, tiene una sintaxis de asignación poco común, por ejemplo, \tolerance=500
. Los valores más bajos hacen que \(\TeX\) se esfuerce más por mantenerse cerca del óptimo; los valores más altos permiten una composición tipográfica suelta. El valor predeterminado suele ser 200. Cuando \(\TeX\) no puede permanecer dentro de la tolerancia dada, encontrará cuadros demasiado llenos en su salida (es decir, líneas que sobresalen del margen como esta). Ampliar el valor de \tolerance
significa que \(\TeX\) también considera saltos de línea más pobres pero, con suerte, aún aceptables, en lugar de entregarle el problema a usted para que intervenga manualmente. Los valores razonables están entre 50 y 9999. No use 10000 o más, porque eso permite que \(\TeX\) produzca una sola línea arbitrariamente mala (como esta) para mantener perfecto el resto del párrafo. Si realmente necesita un salto de línea totalmente automatizado, es mejor establecer el parámetro de longitud \emergencystretch
en un valor positivo. Si \(\TeX\) no puede dividir un párrafo sin producir cuadros demasiado llenos (debido a la configuración de \tolerance
) y \emergencystretch
es positivo, agrega esta longitud como espacio extensible a cada línea, aceptando así soluciones de salto de línea que han sido rechazadas antes. Es posible que reciba algunos mensajes de cuadro insuficientemente lleno porque todas las líneas ahora están configuradas en una medida suelta, pero este resultado aún se verá mejor que una sola línea horrible en medio de un párrafo que de otro modo estaría perfectamente escrito.
\(\LaTeX\) tiene dos comandos predefinidos que influyen en los parámetros anteriores: \fussy
, que es el predeterminado, y \sloppy
, que permite líneas relativamente malas. El comando \sloppy
se aplica automáticamente por \(\LaTeX\) en algunas situaciones (por ejemplo, cuando se escriben argumentos \marginpar
o columnas p
en un entorno tabular
) donde rara vez es posible un salto de línea perfecto debido a la estrecha medida. Utiliza una \tolerancia
de 9999 junto con un \emergencystretch
de 3em.
Texto no justificado
Si bien la teoría sobre la producción de texto justificado de alta calidad se comprende bien (aunque sorprendentemente pocos sistemas tipográficos distintos de \(\TeX\) utilizan algoritmos que pueden producir texto justificado de alta calidad salvo por casualidad), no se puede decir lo mismo de la situación cuando el texto no justificado se está solicitando. Esto puede parecer extraño a primera vista. Después de todo, ¿por qué debería ser difícil dividir un párrafo en líneas de diferente longitud? La respuesta está en que no disponemos de medidas de calidad cuantificables que nos permitan determinar fácilmente si una determinada rotura es buena o mala. En comparación con su trabajo con texto justificado, \(\TeX\) hace un trabajo muy pobre cuando se le pide que produzca párrafos injustificados. Por lo tanto, para obtener la más alta calidad tenemos que estar preparados para ayudar a \(\TeX\) mucho más a menudo agregando saltos de línea explícitos en lugares estratégicos. En un artículo de Paul Stiff (1949-2011) [183] se ofrece una buena introducción a los problemas en este ámbito.
El tipo principal de texto no justificado es aquel en el que las líneas están alineadas a la izquierda pero no justificadas a la derecha. Para esta disposición \(\LaTeX\) ofrece el entorno Flushleft. Escribe todo el texto dentro de su alcance “a la izquierda” agregando espacios en blanco muy extensibles a la derecha de cada línea; es decir, establece el parámetro interno \rightskip en 0pt más 1fil. Esta configuración a menudo produce párrafos con un aspecto muy irregular porque hace que todas las líneas sean igualmente buenas independientemente de la cantidad de texto que contengan. Además, la separación de palabras está esencialmente deshabilitada porque un guión aumenta la “maldad” de una línea y, como no hay nada que lo contrarreste, el algoritmo de separación de párrafos de \(\TeX\) normalmente elige saltos de línea que evitan palabras con guiones.
\begin{flushleft} ‘‘The \LaTeX{} document preparation system is a special version of Donald Knuth’s \TeX{} program. \TeX{} is a sophisticated program designed to produce high-quality typesetting, especially for mathematical text.’’ \end{flushleft}
En resumen, el entorno flushleft de \(\LaTeX\) no es particularmente adecuado para texto continuo no justificado, que debe variar en el límite derecho solo hasta cierto punto y, cuando sea apropiado, debe usar separación de palabras (consulte ragged2e
en la siguiente sección). para alternativas). Sin embargo, puede resultar útil colocar objetos individuales, como un gráfico, al ras del margen izquierdo, especialmente porque este entorno añade espacio encima y debajo de sí mismo de la misma manera que lo hacen los entornos de lista.
Otra restricción importante es el hecho de que la configuración elegida por este entorno no tiene un efecto universal, porque algunos entornos (por ejemplo, minipage
o tabular
) y comandos (por ejemplo, \parbox
, \footnote
y \ caption
) restaurar la alineación de los párrafos a la justificación completa. Es decir, establecen el parámetro de longitud \rightskip
en 0pt
y así cancelan el espacio extensible en los finales de línea derechos. El paquete ragged2e
proporciona una forma de solucionar automáticamente este problema.
Otras formas de componer párrafos son al ras a la derecha y al centro, con los entornos “al ras a la derecha” y “centro”, respectivamente. En estos casos, los saltos de línea generalmente se indican con el comando \\
, mientras que para el texto irregular a la derecha (el entorno flushleft
discutido anteriormente) puede dejar que \(\LaTeX\) haga el salto de línea por sí mismo (si está satisfecho con la calidad resultante).
Los tres entornos discutidos en esta sección funcionan cambiando las declaraciones que controlan cómo \(\TeX\) compone los párrafos. Estas declaraciones también están disponibles como comandos \(\LaTeX\), como se muestra en la siguiente tabla de correspondencia:
\centering \raggedright \raggedleft environment: center flushleft flushright command:
Los comandos no comienzan un nuevo párrafo ni agregan espacios verticales, a diferencia de los entornos correspondientes. Por lo tanto, los comandos se pueden usar dentro de otros entornos y dentro de un \parbox
, en particular, para controlar la alineación en las columnas p
de un entorno array
o tabular
. Sin embargo, tenga en cuenta que si se usan en la última columna de un entorno “tabular” o “matriz”, el “\” ya no está disponible para indicar el final de una fila. En su lugar, se puede utilizar el comando \tabularnewline
para este propósito (consulte también la Sección 6.2.2).
También es importante darse cuenta de que las formas de comando siempre se aplican a párrafos completos, incluso si se usan en medio de un párrafo. \(\TeX\) usa la configuración activa al final de un párrafo para decidir cómo justificar el texto. Esto significa que si usa, por ejemplo, \centering
dentro de un grupo, debe asegurarse de que el párrafo termine dentro de ese grupo; de lo contrario, su solicitud se ignorará o se ignorará parcialmente.
3.1.1 ragged2e - Mejorar texto injustificado
Arriba discutimos las deficiencias de los entornos flushleft
y flushright
de \(\LaTeX\) si se usan para texto normal. El paquete “ragged2e”, escrito por Martin Schröder y ahora mantenido por Marei Peischl, pretende ofrecer alternativas que no produzcan una irregularidad tan extrema. Esta tarea no es tan simple como parece, porque no es suficiente establecer \rightskip
en algo como 0pt más 2em
. A pesar del hecho de que esto daría como resultado que \(\TeX\) se esfuerce por mantener los finales de línea dentro del límite 2em
, sigue existiendo un problema sutil: de forma predeterminada, el espacio entre palabras también es extensible para la mayoría de las fuentes. Por lo tanto, si \rightskip
solo tiene una capacidad de estiramiento finita, \(\TeX\) distribuye el exceso de espacio por igual a todos los espacios. Como resultado, los espacios entre palabras tienen diferente ancho, dependiendo de la cantidad de material en la línea. La solución es redefinir el espacio entre palabras para que ya no pueda estirarse ni reducirse especificando un valor adecuado (dependiente de la fuente) para \spaceskip
. Este parámetro interno \(\TeX\), si es distinto de cero, representa el espacio entre palabras actual, sobrescribiendo el valor predeterminado definido por la fuente actual.
De forma predeterminada, el paquete no modifica los comandos y entornos estándar de \(\LaTeX\) discutidos en la sección anterior, sino que define los suyos propios usando los mismos nombres excepto que algunas letras están en mayúsculas. Los nuevos entornos y comandos se dan en la siguiente tabla de correspondencia:
\Centering \RaggedRight \RaggedLeft environment: Center FlushLeft FlushRight command:
Se diferencian de sus homólogos de la sección anterior no sólo en el hecho de que intentan producir resultados menos irregulares, sino también en su intento de proporcionar flexibilidad adicional al permitirle cambiar fácilmente la mayoría de sus aspectos tipográficos. Los parámetros disponibles y sus valores predeterminados se muestran en la Tabla 3.1 en la página siguiente. Se utilizan como valores para \parindent
, \leftskip
, \rightskip
y \parfillskip
, siempre que se llame a uno de los comandos o entornos \ragged2e
correspondientes. Usar valores em
en los valores predeterminados (ver Tabla 3.1) significa que se necesita cuidado especial al cargar el paquete, porque em se convierte en una dimensión real en este punto. Por lo tanto, el paquete debe cargarse después de que se hayan establecido la fuente y el tamaño del cuerpo; por ejemplo, después de que se hayan cargado los paquetes de fuentes.
En lugar de utilizar los valores predeterminados enumerados en la Tabla 3.1, se puede indicar al paquete que inicialmente imite la configuración original de \(\LaTeX\) usando la opción originalparameters
y luego cambiando los valores de los parámetros como se desee.
Para establecer un documento completo como injustificado, puede especificar “document” como una opción para el paquete “ragged2e”. Con el fin de justificar párrafos individuales en dicho documento, el paquete ofrece el comando \justifying
y el entorno justify
. Por lo tanto, para producir un documento con una cantidad moderada de irregularidades y párrafos con sangría de 12 puntos, puede usar una configuración como la del siguiente ejemplo (compárelo con el Ejemplo 3-1-1 en la página 122):
\usepackage[document]{ragged2e} \setlength\RaggedRightRightskip{0pt plus 1cm} ‘‘The \LaTeX{} document preparation system is a special version of Donald Knuth’s \TeX{} program. \TeX{} is a sophisticated program designed to produce high-quality typesetting, especially for mathematical text.’’
En lugares con medidas estrechas (por ejemplo, \marginpars
, \parboxes
, entornos minipage
o p-
columnas de entornos tabular
), la configuración justificada generalmente produce resultados inferiores. Con la opción raggedrightboxes
, los párrafos en dichos lugares se componen automáticamente usando \RaggedRight
. Si es necesario, se puede utilizar \justifying
para forzar un párrafo justificado en casos individuales.
Advertencias falsas de casilla insuficientemente llena
Sin embargo, existe un problema que debe tener en cuenta si utiliza el comando \RaggedLeft
o \Centering
con muy poco texto (es decir, menos de una sola línea): puede recibir extrañas advertencias de “Cuadro poco lleno”. como
\hbox (badness 10000) in paragraph at lines 25--25 []\T1/ptm/m/n/10 ragged left text Underfull \hbox (badness 5893) in paragraph at lines 26--27 []\T1/ptm/m/n/10 centered text Underfull
aunque el resultado parezca (y sea) correcto. Por ejemplo, las advertencias anteriores se generaron durante el procesamiento del siguiente ejemplo:
\usepackage{ragged2e} \RaggedRight ragged right text \par \RaggedLeft ragged left text \par \Centering centered text
La razón es que con ragged2e
solo hay una flexibilidad muy limitada en cada línea en comparación con \raggedleft
o \centering
donde el espacio en blanco en uno o ambos lados puede estirarse arbitrariamente. \RaggedRight
, por otro lado, suele estar bien, porque todavía tenemos un \parfillskip
completamente extensible al final del párrafo.
Por lo tanto, si bien es tentador sobrecargar las definiciones estándar de \(\LaTeX\) con los nuevos comandos (usando la opción del paquete newcommands
) para evitar la necesidad de escribir los algo tediosos nombres en mayúsculas y minúsculas, realmente no se puede recomendar. Al menos \centering
se usa muy a menudo para centrar un solo objeto, como un gráfico, en un entorno de figura
, y cada uno de esos casos daría como resultado una advertencia falsa.
3.1.2 nolbreaks - Evitar saltos de línea en fragmentos de texto
Para evitar un salto de línea en un espacio dentro de un párrafo, \(\LaTeX\) ofrece ~ que denota un espacio irrompible que puede usar en lugar de uno ordinario, por ejemplo, A. ~Einstein
para garantizar que la inicial y el apellido no se separen. Si (además) desea asegurarse de que una palabra no tenga guiones, puede colocarla en un \mbox
, por ejemplo, A. ~\mbox{Einstein}
.
Sin embargo, para mantener varias palabras juntas, no es una buena idea colocarlas junto con los espacios entre ellas en un solo \mbox
, porque dentro de un cuadro un espacio siempre tiene su ancho nominal y no reacciona a la justificación de la línea, lo que significa que puedes terminar con un espaciado notablemente desigual. Por lo tanto, para obtener una alta calidad es necesario \mbox
todas las palabras individualmente y colocar un ~
entre cada una de ellas, lo cual es bastante engorroso. Para simplificar esta tarea, Donald Arseneau ha escrito el pequeño paquete nolbreaks que ofrece un único comando.
\nolbreaks*{text}
El texto no se divide en líneas, pero los espacios interiores aún participan en la justificación del párrafo como se esperaba. Si utiliza el formulario con estrella, entonces se permite que la línea antes del texto irrompible sea corta (como irregular a la derecha), como se muestra a continuación. También puedes cargar el paquete con la opción ragged
en cuyo caso \nolbreaks
se comporta como su forma estrellada.
\usepackage{nolbreaks} \sloppy However, to keep several \nolbreaks*{words together,} it is not a good idea to place them together with the spaces between them into \nolbreaks{a box}; use \verb=\nolbreaks= instead.
El comando no funciona en todas las circunstancias, por ejemplo, no puede tener material textual en su argumento y los espacios ocultos dentro de llaves o comandos aún pueden crear puntos de interrupción, pero en la mayoría de las situaciones ofrece un método simple y legible para ajustar su texto. Tenga en cuenta que es posible que necesite una \tolerancia
o \sloppy
más alta si agrega muchos fragmentos irrompibles a sus párrafos.
3.1.3 microtype - Mejora del texto justificado
Como se mencionó anteriormente, \(\TeX\) utiliza un algoritmo de salto de línea que intenta optimizar globalmente los párrafos de acuerdo con un conjunto de parámetros que sopesan objetivos diferentes (a menudo conflictivos), como desigualdad en la distribución de espacios en blanco, líneas incompatibles (con respecto a tamaño del espacio de palabras), longitud del párrafo, número de guiones consecutivos, etc., entre sí.
Sin embargo, hay una serie de aspectos adicionales que mejoran la calidad del párrafo que el algoritmo \(\TeX\) original no tiene en cuenta. El soporte para ellos se debe al trabajo de Hàn Thê Thành, quien desarrolló pdf\(\TeX\), que ahora es el motor \(\TeX\) estándar y, por lo tanto, estas mejoras están disponibles para todos [33, 34, 36].
Donald Knuth ya analizó el uso de “puntuaciones colgantes” como ejercicio en el \(\TeX\)book [48, p. 394f] y dio el siguiente ejemplo:
Como puede ver, todos los signos de puntuación y comillas se colocan fuera del cuerpo del texto, en el margen. Esta es una versión especial de un principio general de alineación óptica: para lograr una alineación vertical óptima del texto en los márgenes, es necesario tener en cuenta las formas de los glifos y permitir que algunos glifos sobresalgan ligeramente hacia el margen porque, de lo contrario, la línea parecen tener una ligera sangría; la puntuación colgante es solo una variante extrema de este principio. Cuánto sobresalir depende de la forma del glifo y de la cantidad de blancura que produce. Por lo tanto, depende de la fuente que se utilice y es posible que sea necesario realizar ajustes en consecuencia para obtener resultados óptimos. Sin embargo, incluso si no tiene valores especialmente personalizados para las fuentes utilizadas en su documento, puede lograr mejoras notables al aplicar un conjunto de valores predeterminados basados en formas de glifos “típicas”.
Un segundo tipo de mejora introducida con pdf\(\TeX\) fue la incorporación del algoritmo hz que lleva el nombre de su inventor Hermann Zapf (1918-2015). Se dio cuenta de que (ciertas) formas de letras se pueden expandir o comprimir ligeramente sin que el lector las note y que esta flexibilidad adicional en el texto se puede utilizar para mejorar la justificación. Por ejemplo, en lugar de simplemente ampliar el espacio entre palabras (posiblemente más allá de los límites aceptables), se puede ampliar ligeramente la mayoría de las letras de una línea, logrando así un valor de gris mucho más consistente en todo el párrafo. De hecho, la flexibilidad adicional introducida de esta manera puede dar lugar a diferentes conjuntos de saltos de línea que de otro modo no serían posibles. Esto puede evitar líneas demasiado llenas que de otro modo produciría el algoritmo de \(\TeX\) si no pudiera satisfacer todos los requisitos planteados por la configuración del parámetro de salto de línea.
Tanto las funciones como las posibilidades de configuración para adaptarlas están disponibles a través del paquete “microtype” de Robert Schlicht. Se ha utilizado con excelentes resultados a lo largo de este libro y es uno de los paquetes estándar que el autor carga en el preámbulo de casi todos los documentos.
Otras tres funciones microtipográficas son compatibles, pero no están activadas de forma predeterminada (porque su aplicación no siempre conduce a mejoras). Estos son el espaciado automático entre letras de Smallcaps y posiblemente otras fuentes (que se analizan en la Sección 3.4.6), interletraje adicional alrededor de caracteres individuales y ajustes de espaciado entre palabras basados en el carácter antes del espacio (una especie de extensión del concepto \spacefactor
de \(\TeX\)). Las funciones están habilitadas con las opciones “seguimiento”, “kerning” y “espaciado”, respectivamente. El seguimiento se puede utilizar con pdf\(\TeX\) y Lua\(\TeX\), mientras que las otras dos funciones solo están disponibles con pdf\(\TeX\) hasta la fecha.
Opciones de paquete
En muchos casos, es suficiente simplemente cargar el paquete con una declaración \usepackage
(sin ninguna opción) en el preámbulo y dejar que aplique su magia detrás de escena usando su configuración predeterminada. Luego aplica automáticamente la protrusión de caracteres y (si es posible) la expansión de fuente.
Para este último, el motor debe ser pdf\(\TeX\) o Lua\(\TeX\), debe utilizar únicamente fuentes de contorno escalables (es decir, no fuentes de mapa de bits generadas a partir de fuentes METAFONT
) y el motor debe estar configurado en generar formato de documento portátil (PDF) y no formato de archivo independiente del dispositivo (DVI). Para obtener detalles sobre lo que es posible en el modo DVI, consulte el manual [125]. Dicho de otra manera, el paquete aplica tantas mejoras microtipográficas como se puede esperar para que funcione correctamente dadas las circunstancias.
Sin embargo, ofrece una serie de opciones clave/valor para ajustar globalmente el comportamiento y, como veremos más adelante, también métodos para adaptar el comportamiento según las fuentes, los conjuntos de fuentes y el contexto dentro del documento. Las opciones “protrusión” y “expansión” se pueden usar para cambiar o activar o desactivar la característica respectiva dando el valor “verdadero” (predeterminado), “falso” o “compatibilidad”. Este último restringe las funciones para que actúen solo en líneas individuales después de que haya actuado el algoritmo de salto de línea. Esto garantiza que la línea de ruptura con o sin “microtipo” sea idéntica, pero al mismo tiempo limita los efectos positivos que el paquete puede ofrecer y, por lo tanto, sólo es útil en situaciones especiales.
También se puede especificar un nombre del conjunto de fuentes como valor, en cuyo caso sólo las fuentes que pertenecen a este conjunto utilizan la función. Para obtener detalles sobre este uso avanzado, consulte el manual microtype
[125].
La opción “factor” se puede utilizar para personalizar la característica de protrusión y espera un valor entero entre 0 (sin protrusión) y 1000 (protrusión completa). Por ejemplo, especificar un valor de 500 significa que la protuberancia actualmente definida para cada carácter se reduce a la mitad. Para mostrar los resultados, primero repitamos el Ejemplo 3-1-5 en la página 126 con un “factor” de 0 (que equivale a no usar protrusión en absoluto):
Puedes observar muy bien los diferentes saltos de línea que obtenemos solo con el algoritmo \(\TeX\) normal. Ahora repita esto pero con un “factor” de 500, en cuyo caso los caracteres de puntuación y comillas sobresalen un poco de los márgenes.
Los saltos de línea ahora son idénticos al Ejemplo 3-1-5 aunque usamos una cantidad menor de protuberancia. Tenga en cuenta que la función de protrusión no genera más flexibilidad para la división de párrafos (a diferencia de la función de expansión). Solo altera los saltos de línea porque los caracteres en los márgenes parecen incondicionalmente más pequeños que sin la función activada y, por lo tanto, cambia el atractivo de los puntos de interrupción individuales para que \(\TeX\) pueda decidir elegir un conjunto diferente.
Tenga en cuenta también que en los ejemplos anteriores la protrusión solo se especificó para los caracteres de puntuación y comillas para implementar la “puntuación colgante”. Para una alineación óptica adecuada, habría que especificar la protrusión para muchos más caracteres. Como muestra de la alineación óptica, puede consultar cualquier párrafo de este libro (excepto los ejemplos) donde muchos caracteres sobresalen un poco del margen para dar la impresión de alineación vertical en ambos lados.
Para controlar la expansión, hay algunas opciones más disponibles. Las opciones “estirar” y “reducir” definen cuántas fuentes se pueden expandir o comprimir. Esperan un valor entero que se multiplica por 1⁄1000 del ancho del carácter. Por lo tanto, para permitir una expansión máxima del 1,5%, especificaría “estiramiento = 15”. El valor predeterminado para ambos es 20, y si especifica solo “estirar”, su valor también lo hereda “reducir”.
Como muestra el siguiente ejemplo, debes ser conservador al permitir que las fuentes se estiren o encojan. La idea es mejorar la calidad tipográfica produciendo párrafos con un tono gris más uniforme y menos líneas con guiones, ofreciendo más opciones al algoritmo de salto de línea. Con la mayoría de las fuentes, un rango de variación de ±2% produce resultados razonables, pero ya por encima del 3% puedes notar que los tallos se hacen más grandes o más delgados, lo que puede distraerte. Además, algunas formas se distorsionan un poco cuando sólo se estiran horizontalmente, y por encima de cierto punto esto puede volverse perceptible y, por lo tanto, reducir, en lugar de mejorar, la calidad.
Para disminuir el impacto de las formas distorsionadas, “microtipo” ofrece la opción “seleccionado”, en cuyo caso dichas formas se expanden o comprimen a un ritmo menor que otras. Esto puede permitir límites generales ligeramente más altos, pero por otro lado hay que tener en cuenta que también significa que los caracteres uno al lado del otro pueden estirarse a velocidades diferentes y, por lo tanto, mostrar diferentes anchos de tallo. En nuestro ejemplo, los caracteres “trix!” están completamente expandidos, mientras que todos los demás lo están sólo en un 70%. Si esto es realmente una mejora o no, es probablemente una cuestión de gustos.
Para obtener mejores resultados con la expansión, necesita utilizar fuentes escalables (lo cual afortunadamente ya no es un problema) y es recomendable generar resultados en PDF, aunque ninguna de las dos es una necesidad absoluta. Si es necesario, es posible utilizar un flujo de trabajo basado en DVI, e incluso se pueden preparar fuentes de mapa de bits para la tarea, pero requiere una configuración más complicada y archivos de soporte de fuentes especialmente personalizados; consulte el manual [125] para obtener más detalles.
Hay algunas otras opciones que pueden resultar útiles de vez en cuando. Entre ellos se encuentra “activar”, que es simplemente una abreviatura para establecer tanto “protrusión” como “expansión” en el mismo valor. Luego está “detallado”, que genera información adicional en el archivo de transcripción (útil para depurar) o, si se le da el valor “errores”, se detiene si cree que encuentra una situación cuestionable. Una vez que haya investigado todas las advertencias, también puede asignarle el valor “silencioso”.
Al especificar la opción babel
, microtype
ajusta la composición tipográfica al idioma utilizado en el documento. Esta característica existe hasta el momento sólo para unos pocos idiomas seleccionados.
El paquete admite la opción disable
que deshabilita todo el procesamiento si se proporciona. Como resultado, el procesamiento es mucho más rápido cuando “microtipo” no hace nada, pero es probable que cambien los saltos de línea y página.
Por defecto, microtype
carga su configuración desde el archivo microtype.cfg
. Puede evitar esto usando la opción config
y especificar un archivo de configuración diferente (sin la extensión .cfg
). De esta manera puede mantener y utilizar su propia configuración si no le gustan los valores predeterminados.
Todas las opciones, excepto config
, se pueden usar alternativamente en el argumento de \microtypesetup
para definir o modificar la configuración deseada en el preámbulo. Además, este comando también se puede usar dentro del cuerpo del documento para habilitar o deshabilitar temporalmente cualquiera de las funciones de microtipografía, por ejemplo,
\microtypesetup{expansion=false}
pero de lo contrario ya no es posible cambiar las características.
Configurando la maquinaria
Como ya se indicó, todas las funciones de microtipografía admitidas por “microtype” requieren adaptación a las fuentes individuales utilizadas para lograr los mejores resultados. Si bien esto sin duda suena intimidante, la buena noticia es que el paquete ya viene equipado con configuraciones de protrusión listas para usar para más de una docena de familias de fuentes comunes, y para la mayoría de las demás, es probable que el perfil predeterminado también le brinde buenos resultados. Para la expansión, es probable que el valor predeterminado \(\pm \:2 \:\%\) también funcione universalmente y, si no, es fácil cambiarlo para un documento. En resumen, la información de uso general proporcionada anteriormente debería ser suficiente para la mayoría de situaciones de la vida real.
Por lo tanto, damos sólo algunos ejemplos de comandos de configuración para permitirle hojear los archivos de configuración y comprender lo que están configurando. Puede que esto no sea suficiente para embarcarse en la tarea algo tediosa de proporcionar una configuración totalmente hecha a mano para una nueva familia de fuentes, pero si usted es una de las pocas personas interesadas en eso, toda la información necesaria se puede encontrar en [125].
\SetProtrusion [key/value list] {set of fonts} {protrusion settings}
La declaración \SetProtrusion
le permite definir configuración de protrusión para un número arbitrario de caracteres para un conjunto de fuentes determinado.
La configuración de protrusión consta de carácter={tupla-integer} donde la tupla-integer define la protrusión para los márgenes izquierdo y derecho del carácter. Un valor cero o nulo significa que no hay protrusión y 1000 denota una protrusión completa. El carácter se puede proporcionar como un carácter UTF-8, un comando \(\LaTeX\) y de algunas otras maneras. Por ejemplo
A = {50, 50}, \
Æ= {50, }, : = { , 500}, -= {400, 500}
deja que “A” sobresalga un 5% en ambos lados y “Æ” un 5% sólo en el lado izquierdo. Tanto los dos puntos como el guión sobresalen la mitad de su ancho en el margen derecho, y en el izquierdo el guión también sobresale el 40% de su ancho. Si especifica un carácter base como “A”, entonces “microtipo” sabe que hay varios otros caracteres, por ejemplo, “Á, À, Â, Ä”, que deberían heredar la configuración, y lo hace automáticamente.
Hay muchas maneras de especificar el conjunto de fuentes, pero muy a menudo es suficiente especificar las codificaciones admitidas y el nombre de la familia de fuentes (en la convención Nuevo esquema de selección de fuentes (NFSS)); para más detalles, consulte [125, \(\S\) 4].
En el argumento opcional puede especificar una cantidad de valores clave: con name
puede darle un nombre a su configuración, lo cual es útil al leer el resultado de la opción verbose
. Más importante aún, esto le permite hacer referencia a dicha configuración en una declaración posterior con una clave load
, extendiéndola o modificándola para situaciones especiales.
Por ejemplo, la configuración de protuberancia principal para las fuentes Computer Modern se denomina cmr-default
; las adiciones específicas a la codificación T1
se denominan cmr-T1
(cargando cmr-default
primero). Y debido a que las fuentes Latin Modern son muy similares a Computer Modern, la declaración de protuberancia para esa familia es simplemente esta:
\SetProtrusion [ name = lmr-T1, load = cmr-T1 ]
{ encoding = {T1,LY1}, family = lmr }\textquotedblleft = {300,400}, \textquotedblright = {300,400} } {
Es decir, carga cmr-T1
, que a su vez carga cmr-default
y luego realiza dos cambios. Todo esto se aplica a cualquier fuente de la familia de fuentes lmr
en codificación T1
o LY1
(pero no en OT1
u otras codificaciones).
Si le gusta la apariencia de la puntuación colgante, así es como se produjo el ejemplo 3-1-5 de la página 126 utilizando fuentes latinas modernas:
\usepackage{lmodern}
\usepackage[expansion = false, verbose] {microtype}
\LoadMicrotypeFile{cmr}
\SetProtrusion [ name = lmr-hangingp ]
{ encoding = {T1,OT1}, family = lmr }
{ . = { ,1000}, {,} = { ,1000}, ; = { ,1000}, : = { ,1000},\textquotedblleft = {1000, }, \textquotedblright = { ,1000},
\textquoteleft = {1000, }, \textquoteright = { ,1000} }
Este ejemplo es interesante por varios motivos: deshabilitamos explícitamente la expansión para reproducir los mismos saltos de línea que en \(\TeX\)book. Con la expansión, \(\TeX\) habría encontrado una alternativa “mejor” o al menos diferente. La configuración de las protuberancias como tal no depara sorpresas: cada uno de los caracteres de puntuación y comillas sobresale completamente en el margen respectivo. Es posible que también quieras hacer lo mismo con el carácter de guión. Esto no se hizo porque nuevamente daría como resultado saltos de línea diferentes en comparación con \(\TeX\)book.
La línea sorprendente es la segunda: sin ella no pasa nada. El problema es que cuando microtype
encuentra una familia de fuentes por primera vez en un documento, intenta cargar un archivo de configuración llamado mt-
\(\langle\)family\(\rangle\).cfg
y aplica la declaraciones que contiene. Si ese archivo también contiene una declaración para el conjunto de fuentes que intentamos personalizar, sobrescribe nuestra configuración cuidadosamente redactada en el preámbulo del documento. La solución aquí es cargar ese archivo de configuración (usando \LoadMicrotypeFile
) antes de hacer nuestras declaraciones para que nuestra configuración sobrescriba el valor predeterminado y no al revés.
Una pequeña complicación es que algunas familias de fuentes
Proporcionar contexto
Por defecto, todas las declaraciones realizadas con \SetProtusion
y similares se aplican globalmente en todo el documento. Sin embargo, existe la posibilidad de especificar que se activen solo en un contexto específico. Esto se hace utilizando la clave context
en el argumento key/value list y asignándole un nombre de contexto. En ese caso, la declaración se activa solo si estamos dentro de ese contexto.
\microtypecontext{context spec}
\begin{microtypecontext}{context spec} ... \end{microtypecontext}
\textmicrotypecontext{context spec}{text}
Puede informar a microtype
que está en un contexto específico de tres formas diferentes: con \microtypecontext
se inicia un nuevo contexto que continúa hasta el final del ámbito actual, o puede utilizar la forma de entorno de ese, o puede utilizar el comando textmicrotypecontext
en el que el contexto se aplica al argumento text. La especificación de contexto es una lista separada por comas de asignaciones de la forma feature = context donde feature es protrusión, expansión, seguimiento, kerning
o espaciado
y context es el nombre que asignó en la declaración. Para restablecer el contexto (si no se revierte automáticamente a través del alcance) puede proporcionar un nombre de contexto vacío.
Especificación de seguimiento, kerning adicional y espaciado ajustado
Las funciones descritas a continuación cubren algunos conceptos que no están activados de manera predeterminada, sino que deben habilitarse explícitamente a través de opciones, es decir, tracking
, kerning
y spacing
, respectivamente. Además, las funciones de kerning y espaciado están disponibles solo con pdf\(\TeX\), mientras que el seguimiento también se puede utilizar con el motor Lua\(\TeX\). Se puede encontrar un artículo interesante sobre los antecedentes de estas funciones en [35].
\SetTracking[key/value list]{set of fonts}{tracking amount}
\SetExtraKerning[key/value list]{set of fonts}{kerning settings}
\SetExtraSpacing[key/value list]{set of fonts}{spacing settings}
La declaración \SetTracking
permite especificar espacios adicionales entre todos los caracteres de una fuente o un conjunto de fuentes para lograr el espaciado entre letras. Esto se analiza con más detalle en la Sección 3.4.6 en la página 191.
La declaración \SetExtraKerning
permite especificar espacios adicionales entre todos los caracteres de una fuente o un conjunto de fuentes para lograr el espaciado entre letras. Esto se analiza con más detalle en la Sección 3.4.6 en la página 191.
La declaración \SetExtraKerning
proporciona una manera de especificar que se agregue un espacio adicional a cada lado del glifo para caracteres individuales. Esto es útil con idiomas que tienen tradiciones tipográficas que requieren dicho espaciado alrededor de algunos caracteres (normalmente, signos de puntuación). En francés, por ejemplo, se requiere un espacio adicional delante de : “,”;“,”?” y “!”, y con una declaración como
\SetExtraKerning[name=french-default, context=french, unit=space]
{encoding = {OT1,T1,LY1}} { : = {1000,}, ; ={500, }, ! = {500,} ? = {500,}}
Esto se puede proporcionar automáticamente sin necesidad de modificar las fuentes de entrada. Tenga en cuenta el uso de la clave context
, que limita la declaración a un contexto llamado french
para que pueda restringir su uso según sea necesario.
Para comunicarse con Babel e instalar diferentes contextos por idioma, microtype
ofrece la declaración \DeclareMicrotypeBabelHook
. En el siguiente ejemplo, la usamos para especificar un kerning especial para texto en francés. La declaración \SetExtraKerning
ya forma parte de la configuración predeterminada de microtype
, por lo que podemos usarla sin necesidad de repetirla en el ejemplo.
\usepackage[english, french]{babel}
\usepackage[kerning]{microtype}
% \SetExtraKerning ... as above
\DeclareMicrotypeBebelHook{french}{kerning=french}
Finalmente, con la declaración \SetExtraSpacing
se obtiene un control granular sobre el ancho y el comportamiento de los espacios entre palabras. Para cada fuente, \(\TeX\) mantiene tres dimensiones (llamadas \fontdimen
s: consulte la página 745) que describen el ancho predeterminado de un espacio, la cantidad en la que ese espacio puede estirarse y la cantidad en la que puede encogerse al realizar la justificación de párrafos. Además, hay una tabla de “factor de espacio” donde para cada carácter se especifica un factor por el cual se multiplican estas dimensiones de fuente cuando ese carácter está directamente delante de un espacio. Esta es la razón por la que los espacios después de los caracteres de puntuación aparecen más grandes (cuando está en vigor \nonfrenchspacing
, el valor predeterminado) y aparecen uniformes (cuando se especifica \frenchspacing
).
El problema con el enfoque de \(\TeX\) de un factor de espacio es que no solo se obtienen espacios más grandes o más pequeños con la ayuda de estos factores; además, también se aplican a los componentes de estiramiento y contracción y, por lo tanto, en líneas espaciadas, los espacios después de los caracteres de puntuación pueden volverse excesivamente grandes.
El motor pdf\(\TeX\) extiende la funcionalidad \(\TeX\) al proporcionar controles individuales por carácter y por fuente para las tres dimensiones, y la declaración \SetExtraSpacing
ofrece una interfaz para ello. Por ejemplo,
\SetExtraSpacing[unit=space]
{font={*/*/*/*/*}}{ . = {2000,0,0} }
duplicaría el espacio después de un punto sin alterar su componente de estiramiento y contracción. El mecanismo también se puede utilizar para implementar el espaciado óptico, es decir, alterar ligeramente el ancho estándar de un espacio dependiendo de la forma del carácter precedente. Los archivos de configuración predeterminados para microtype
proporcionan algunas configuraciones para esto. Sin embargo, esto es, por supuesto, semi-óptimo dado que solo un carácter a la izquierda del espacio puede influir en su ancho.
Para obtener más detalles sobre las tres características, consulte el manual del paquete [125] y estudie los archivos de configuración predeterminados que proporcionan configuraciones estándar desde las que puede comenzar si realiza cambios.
Desactivación de ligaduras seleccionadas
El uso de ligaduras, por ejemplo, “ffi” en lugar de “ffi”, normalmente mejora la apariencia, y el hecho de que \(\LaTeX\) pueda producirlas automáticamente (si están disponibles en la fuente) normalmente es algo bueno. Hay ocasiones en las que se desea evitar que esto suceda, por ejemplo, en palabras compuestas como “Auflage” en lugar de “Auflage”, (porque es un “Lage” especial, no un “Flage”), pero son raras y se deben manejar de forma individual. El paquete babel
ofrece algún soporte para esto; vea el Ejemplo 13-3-7 en la página \(\rightarrow\) II 311. Sin embargo, también hay situaciones en las que se desea desactivar las ligaduras (o algunas ligaduras) por completo y para esto microtype
proporciona \DisableLigatures
.
\DisableLigatures[start characters]{set of fonts}
Con el argumento conjunto de fuentes se especifica para qué fuentes se deben suprimir las ligaduras y con el argumento opcional caracteres iniciales, es posible restringirlo a solo un subconjunto de ligaduras. Por ejemplo, Latin Modern Typewriter tiene ligaduras para “–” que se convierten en un solo “-” y “<<” y “>>” que generan “\(\ll\)” y “\(\gg\)”, respectivamente. Para evitar esto, puede escribir
\DisableLigatures[-,<,>]{family = lmtt}
Tenga en cuenta que por razones técnicas solo puede especificar el carácter de inicio de ligadura, por lo que al especificar, por ejemplo, f
, deshabilita todas las ligaduras que comiencen con “f”.
Algunas consideraciones especiales al utilizar microtipos
Como se mencionó anteriormente, normalmente basta con cargar microtype
en el preámbulo sin realizar más ajustes en el cuerpo del documento. Sin embargo, hay algunos casos a los que hay que prestar atención y puede que valga la pena desactivar temporalmente algunas o todas las funciones del paquete o guiarlas en situaciones difíciles.
La protrusión, por ejemplo, funciona automáticamente en párrafos normales, pero en ciertas situaciones \(\TeX\) no considera que el texto cuyo límite requiere alineación vertical (y, por lo tanto, protrusión) esté en el margen porque hay algún material intermedio. Por ejemplo, la viñeta en un itemize
se ve \(\LaTeX\) como parte de la línea, mientras que para un lector humano el texto de ese elemento es lo que necesita alineación visual. Por lo tanto, sin ayuda, el primer carácter en esa línea no sobresaldría, mientras que el primer carácter en la línea siguiente sí lo haría.
\leftprotrusion{text} \rightprotrusion{text}
\leftprotrusion \noprotrusion
Si la protrusión no se realiza automáticamente o no se realiza correctamente, puede forzarla o impedirla con estos comandos. \leftprotrusion
y rightprotrusion
añaden una corrección de protrusión a la izquierda o derecha de text, respectivamente. También puede usar \leftprotrusion
sin argumentos; en ese caso, escanea la entrada en busca de caracteres de texto y, si encuentra alguno (que puede ser una ligadura), aplica la protrusión a dicho carácter. La versión sin argumentos es ligeramente menos eficiente, pero tiene la ventaja de que puede usarse donde no se sabe qué texto sigue, por ejemplo, al principio de una celda tabular
:
\begin{tabular}{1>{\leftprotrusion}p{9cm}r}
Lamentablemente esto no es posible para la protrusión hacia la derecha: con el comando \rightprotrusion
siempre debes usar el argumento.
También existe la opción \noprotrusion
, que prohíbe la protrusión en todos los casos. Este comando ya está definido en el formato \(\LaTeX\), por lo que puede usarlo en las definiciones de comandos, independientemente de si microtype
se carga en su documento.
Si se activa la protrusión mientras se compone una tabla de contenido, los números de página de la derecha podrían sobresalir hacia el margen. Esto, a su vez, hace que el lado izquierdo de la columna de números de página sea algo irregular, lo cual puede notarse si los números empiezan con los mismos dígitos. La solución en este caso es usar \microtypesetup
para establecer protrusion
en false
, es decir,
\microtypesetup{protrusion=false}
\tableofcontents \listoftables \listoffigures
\microtypesetup{protrusion=true}
El estándar \(\LaTeX\) evita este problema, pero con clases de documentos más antiguas o definiciones especiales para dichas listas aún puede ocurrir.
De igual forma, ni la protrusión ni la expansión son realmente deseables si se compone código textualmente. Después de todo, la idea de utilizar una fuente monoespaciada en entornos verbatim
es garantizar que los caracteres aparezcan perfectamente alineados uno encima del otro, y cualquiera de las características puede estropear esa alineación. Por lo tanto, configurar ambas características (o activate
como abreviatura) como false
delante de dichos entornos soluciona este problema. Sin embargo, es recomendable no saturar el código fuente con tales declaraciones, especialmente si existen muchos entornos similares.
Una alternativa posiblemente mejor es incorporar la configuración al entorno mismo usando \AddToHook
con un \(\LaTeX\) razonablemente nuevo de la siguiente manera:
\AddToHook{env/verbatim/begin}{\microtypesetup{activate=false}}
No es necesario deshacer la configuración, ya que el entorno forma un grupo, por lo que al finalizar el cambio se deshace automáticamente. Si lo hace, puede que también desee actualizar \tableofcontents
y sus amigos de forma similar:
\AddToHook{cmd/tableofcontents/before}{\microtypesetup{protrusion=false}}
\AddToHook{cmd/tableofcontents/after}{\microtypesetup{protrusion=true}}
En este caso tenemos que volver a activar microtype
después del comando.
Otra situación en la que la expansión no suele ser realmente útil es la composición tipográfica de texto no justificado con el paquete ragged2e
, que se describe en la Sección 3.1.1 en la página 123. Dado que este paquete intenta evitar la irregularidad extrema haciendo que las líneas cortas parezcan “incompletas” para el algoritmo de salto de párrafo, microtype
intenta ayudar por error expandiendo las fuentes en dichas líneas. Por lo tanto, casi todas las líneas de los párrafos no justificados se expanden, lo cual no es deseable.
Por otro lado, microtype
sigue siendo útil si se necesita reducir ligeramente una línea para que encaje. En lugar de deshabilitar por completo la expansión al componer texto sin justificar, es mejor definir un contexto especial que solo permita la reducción, pero no el estiramiento. Esto se puede hacer de la siguiente manera (y con la ayuda de \AddToHook
directamente asociado a \RaggedRight
y comandos similares):
\SetExpansion[ context = ragged, stretch = 0, shrink = 30 ]
{ encoding = {OT1, T1, TS1} } {}\AddToHook{cmd/RaggedRight/before}{\microtypecontext{expansion=ragged}}
Generalmente no es necesario restaurar el contexto en este caso, porque eso sucede automáticamente cuando finaliza el alcance de \RaggedRight
.
3.1.4 parskip - Ajustar la apariencia y los pies de los párrafos
En la mayoría de las publicaciones, los párrafos se justifican con una sangría fija en la primera línea y una sangría corta en la última, según los saltos de línea. Gracias a la sangría a la izquierda en la primera línea y al espacio en blanco a la derecha en la última, los lectores pueden identificar fácilmente los párrafos sin necesidad de más indicaciones visuales. Por lo tanto, no suele añadirse espacio vertical entre párrafos, lo que ahorra espacio. Este tipo de diseño se utiliza en la mayoría de las clases de documentos de LaTeX y es el que se ve en la mayoría de las páginas de este libro.
Sin embargo, este no es el único diseño común. Es frecuente encontrar documentos que no utilizan sangría de párrafo, sino que añaden espacio vertical entre ellos para distinguirlos claramente. Por supuesto, se podría tener tanto sangría como espacio vertical. También se podrían organizar todos los párrafos como un solo bloque con un solo signo especial (por ejemplo, ¶) separándolos, un estilo bastante común en los manuscritos medievales.
Dentro del motor \(\TeX\), esto se maneja mediante una serie de parámetros: el ancho de la sangría del párrafo de la primera línea almacenada en \parindent
, el espacio en blanco al final en \parfillskip
y el espacio vertical entre párrafos en \parskip
.
Desafortunadamente, no basta con cambiar sus valores para cambiar de un tipo de diseño a otro. La creación de párrafos es una de las pocas funciones principales de \(\TeX\), por lo que muchos elementos que técnicamente no son párrafos de texto se gestionan internamente como si lo fueran. Por ejemplo, los títulos de los encabezados o las líneas de una tabla de contenido, entre otros, se construyen como párrafos de una sola línea. Si simplemente se estableciera \parskip
a la altura de una línea completa, todos estos elementos se dispersarían considerablemente, lo que resultaría en documentos con un aspecto muy desagradable.
Por lo tanto, es recomendable usar una clase de documento diseñada específicamente para este tipo de diseño. Para casos donde esto no sea posible, existe el pequeño paquete parskip
, que puede usarse con cualquier clase de documento y, por defecto, implementa párrafos sin sangría y con media línea de separación (al tiempo que corrige algunos de los efectos secundarios resultantes). El paquete data de hace treinta años, fue escrito originalmente por Hubert Partl y posteriormente mantenido por Robin Fairbairns (1947-2022) y otros. En 2018, Frank Mittelbach lo reescribió y amplió una vez más.
En su forma más simple, basta con cargar el paquete, lo que elimina la sangría, proporciona cierta separación vertical entre párrafos y gestiona bastante bien los encabezados, los entornos de lista y las tablas de contenidos. Sin embargo, puede haber otros entornos de visualización que muestren demasiado espacio en blanco vertical si no se ajustan sus parámetros.
\usepackage{kantlipsum}
\usepackage{multicol}
\raggedcolumns
\usepackage{parskip}
\begin{multicols}{2}
\kant[1][1] % one sentence
\kant[1][2] % paragraphs
\kant[1][3]
\end{multicols}
En la reimplementación de 2018, el paquete recibió varias opciones de clave/valor para permitir ajustes de configuración. Con la opción skip
, ahora se puede definir la separación vertical; el valor predeterminado es 0.5\baselineskip
más 2pt
de estiramiento si no se especifica la opción.
Por defecto, \parskip
es cero en \tableofcontents
y listas similares, independientemente de su valor en otras listas. Con la opción tocskip
se le puede asignar un valor diferente. Si se usa sin un valor explícito, se obtiene el mismo \parskip
que en otras listas.
La opción indent
define el ancho de la sangría de la primera línea. Si no se especifica, todos los párrafos se mantienen sin sangría; si se establece un valor, se utiliza ese valor; y si no se utiliza ningún valor, se conserva la sangría de la clase de documento.
Finalmente, existe la opción parfill
. Si se le asigna un valor de dimensión, \(\LaTeX\) intenta mantener al menos ese ancho como espacio en blanco en la última línea. Esto podría no ser posible debido al contenido del párrafo y a otras configuraciones de parámetros de salto de línea, en cuyo caso podría aparecer la advertencia “Overfull hbox (hbox demasiado lleno)” aunque el texto se vea bien. Si se especifica sin un valor, se usa 30pt
; si no se especifica, se permite que la línea se llene completamente.
En el siguiente ejemplo, se aplican tres de las opciones. La configuración parfill
no tiene ningún efecto visible porque los tres párrafos tienen más de 1em
de espacio en blanco en la última línea. Sin embargo, un cambio a 2em
afectaría al primer párrafo, y requerir incluso 3em
también alteraría el tercer párrafo.
\usepackage{kantlipsum}
\usepackage{multicol}
\raggedcolumns
\usepackage[indent=3m,
parfill=1em,\baselineskip]
skip=paskip}
{\begin{multicols}{2}
\kant[1][1] \kant[1][2]
\kant[1][3]
\end{multicols}
3.1.5 setspace - Cambiar el espaciado entre líneas
The command is TEX’s parameter for defining the leading (normal vertical distance) between consecutive baselines. Standard LaTEX defines a leading approximately 20% larger than the design size of the font (see Section 9.7.1 on page 731). Because it is not recommended to change the setting of directly, LaTEX 2ε provides the declaration to allow for changing at all sizes globally. After , the leading increases immediately.
The package setspace (by Geoffrey Tobin and others) provides commands and environments for typesetting with variable spacing (primarily double and one-and-a-half). Three commands— , , and — are available for use in the preamble to set the overall spacing for the document. Instead of the preamble commands, one can load the package with one of the options singlespacing (default), onehalfspacing, or doublespacing to achieve the same effect. Alternatively, a specific spacing value can be defined by placing a command in the preamble. It takes the desired spacing factor as a mandatory argument. In the absence of any of the above commands, the default setting is single spacing.
To change the spacing inside a document, three environments— singlespace, onehalfspace, and doublespace — are provided. They set the spacing to single, one-and-a-half, and double spacing, respectively. These environments cannot be nested.
lettrine - Dejando caer tu capital
In certain types of publications you may find the first letter of some paragraphs being highlighted by means of an enlarged letter often dropped into the paragraph body (so that the paragraph text flows around it) and usually followed by the first phrase or sentence being typeset in a special font. Applications range from chapter openings in novels, or indications of new thoughts in the text, to merely decorative elements to produce lively pages in a magazine. This custom can be traced back to the early days of printing, when such initials were often hand-colored after the printing process was finished. It originates in the manuscripts of the Middle Ages; that is, it predates the invention of printing.
3.1.7 Alfabetos para las iniciales
If you hunt on the Internet, you find many fonts that are suitable for being used as initials, but it is not always easy to make them available for use with LaTEX (at least not when using pdfTEX).
As part of the TEX distributions you find 23 such fonts, designed by Dieter Steffmann. They have been arranged for use with LaTEX by Clea F. Rees, and all you have to do is to load a corresponding support package. Each of these packages defines two commands: a font switch (like ) and a command with one argument to typeset in the font (like , e.g., and .
Some of the fonts contain only uppercase letters, while others offer a variant alphabet in the lowercase character positions. For use with the lettrine package the font switches are convenient; if you prefer to use the glyphs directly, then the commands with an argument may be better. Both usages are shown in the next example, showing four of the fonts:
3.1.8 magaz - Manejo especial de primera línea
In magazine-type publications the first line of an introductory paragraph is often handled in a special way, either by using an initial letter (see Section 3.1.6) or by setting that line in a special font. A method for the latter is provided by Donald Arseneau with his package magaz. While this can be manually achieved with trial and error, the package offers a convenient way with the command .
fancypar - Diseños elegantes para párrafos individuales
The fancypar package by Gonzalo Medina Arellano offers a number of decorative paragraph layouts for individual paragraphs that may be of interest in some types of documents.