Kerning automático con LuaLaTeX

Kerning automático con LuaLaTeX

¿Hay alguna manera de escribir una comilla doble derecha directamente encima de un punto (si la cita termina con un punto)? No a la izquierda (por ejemplo, ."), ni a la derecha (por ejemplo, ".), sino directamente arriba. La foto de abajo es un ejemplo deÁrboles, mapas y teoremas.por Jean-luc Doumont.

Comilla doble derecha directamente encima del punto.

Respuesta1

Una forma es agregar un "kerning" negativo entre las comillas y el punto:

\documentclass{article}
\begin{document}
Here is an unkerned quotation mark: ``\dots''.

Here is a kerned quotation mark: ``\dots''\kern-0.5em.
\end{document}

Ejemplo de interletraje

El comando TeX \kern-0.5eminserta un espacio negativo entre las comillas y el siguiente punto. Tendrás que jugar un poco con el espaciado exacto, pero usar una medida -0.5emque se ajuste al tamaño de la fuente debería funcionar razonablemente bien.

Kerning automático con LuaLaTeX

Como otros han sugerido, puede hacer esto con macros, pero si desea hacerlo automáticamente, parece que necesita incluir esta información de kerning en la tabla de kerning específica de la fuente. Esto se puede hacer conLuaLaTeXcomo sigue:

Primero crea un archivo:Palatino.fea

languagesystem DFLT dflt;
languagesystem latn dflt;
feature kern {
pos  \quotedblright \period -1000;
} kern;

Ahora cargue esta información de fuente usando fontspec:

\documentclass{article}
\usepackage{fontspec}
\setmainfont[FeatureFile=Palatino.fea]{Palatino}

\begin{document}
Here is an automatically kerned quotation mark: ``\dots''.

Here is a manually kerned quotation mark: ``\dots''\kern-0.5em.
\end{document}

Tenga en cuenta que debe compilar esto lualatexahora y que deberá agregar la información de interletraje personalizada para cada fuente que desee utilizar.

Kerning automático con LuaLaTeX

Respuesta2

Yo establecería esto simplemente como un \rlappunto -ed (o, en el sentido de LaTeX, \makebox[0pt][l]), envuelto en una macro:

ingrese la descripción de la imagen aquí

\documentclass{article}
\newcommand{\qperiod}{\rlap{.}}
\begin{document}
Some text: ``\dots''.

Some text: ``\dots''

Some text: ``\dots\qperiod''
\end{document}

La macroenvoltura permite realizar modificaciones globalmente, cuando sea necesario.

Respuesta3

Aquí uso una pila. Es stacktype"L" para Largo o "S" para Corto (predeterminado). Si es "L", la "distancia" de apilamiento es de una línea de base a otra. Al configurarlo en 0pt, dice que los dos componentes comparten la misma línea de base (en contraste, una distancia de pila corta es el espacio vertical entre la parte superior del "ancla" y la parte inferior del elemento apilado). Define stackalignmentla alineación horizontal (predeterminado c=centro). Aquí lo configuré para alineación izquierda.

\documentclass{article}
\usepackage{stackengine}
\renewcommand\stacktype{L}
\renewcommand\stackalignment{l}
\begin{document}
by ``\dots\stackon[0pt]{.}{''}
\end{document}  

ingrese la descripción de la imagen aquí

Se puede lograr el mismo resultado, omitiendo todos los ajustes de parámetros, utilizando la stackenginemacro genérica con 8 argumentos obligatorios:

by ``\dots\stackengine{0pt}{.}{''}{O}{l}{F}{F}{L}

Los ocho argumentos obligatorios son:

  • distancia de apilamiento
  • elemento de anclaje
  • elemento apilado
  • Pila O(ver) o U(nder)
  • l(izquierda) c(entrar) o r(derecha) alineación horizontal
  • T/F para "quietstack" ("T" significa creado pero no impreso)
  • T/F para "useanchorwidth" ("T" significa que el ancho del ancla determina el ancho total de la pila)
  • Pila S (corta) o L (larga)

información relacionada