
Para una edición moderna de música del imperio español del siglo XVII, necesito componer ciertas abreviaturas anticuadas en las fuentes manuscritas. En esta convención, la parte media de la palabra se abrevia y la terminación se centra sobre el punto. Por ejemplo:
Para los curiosos, esto se expande a "Al Santissimo [Sacramento]. a 8", lo que significa que la pieza está dedicada al Santísimo Sacramento (y por eso se usa para el Corpus Christi o la devoción eucarística), y está compuesta para ocho voces.
El comando en MWE hace esto usando \rlap
, pero el final está alineado a la izquierda con el punto. Cuando se usa cursiva (al menos cuando se usa ebgaramond
), la terminación choca con la letra anterior.
¿Cómo podría espaciar esto mejor para que el final esté centrado en el período sin colisiones, tanto en letra romana como en cursiva?
\documentclass[12pt]{article}
\usepackage{ebgaramond}
\usepackage[T1]{fontenc}
\newcommand{\oldabbrev}[2]{#1\rlap{.}\textsuperscript{#2}}
\begin{document}
\oldabbrev{M}{o} Salazar, \oldabbrev{Villan}{co} al \oldabbrev{SS}{mo} a 8
\itshape
\oldabbrev{M}{o} Salazar, \oldabbrev{Villan}{co} al \oldabbrev{SS}{mo} a 8
\end{document}
Respuesta1
Crédito a José en¿Detectar qué "modo" de texto (normal, cursiva, negrita, etc.) está actualmente en uso?para ayudar a determinar si está en cursiva. Si es así, se aplica un kern adicional a la sobreescritura (en relación con el punto a continuación) para que sea estéticamente compatible con la forma de cursiva.
Tenga en cuenta que elegí centrar el punto debajo de la primera letra del guión, como se muestra en la figura del OP.
\documentclass[12pt]{article}
\usepackage{ebgaramond}
\usepackage[T1]{fontenc}
\usepackage{stackengine}
\makeatletter
\newcommand*{\IfItalicTF}{%
\ifx\f@shape\my@test@it
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
}
\newcommand*{\my@test@it}{it}
\makeatother
\newcommand\oldabbrev[2]{#1\nobreak%
\def\stacktype{L}\setstackgap{L}{.5\baselineskip}\oldabbhelp#2\relax\relax}
\def\oldabbhelp#1#2\relax{\bgroup\scriptsize%
\stackon{\normalsize.}{\IfItalicTF{\kern1.5pt}{}#1}\stackon{}{#2}\egroup}
\begin{document}
\oldabbrev{M}{o} Salazar, \oldabbrev{Villan}{co} al \oldabbrev{SS}{mo} a 8
\itshape
\oldabbrev{M}{o} Salazar, \oldabbrev{Villan}{co} al \oldabbrev{SS}{mo} a 8
\end{document}
Si uno realmente quisiera el punto debajo delcentrodel sobreguión, entonces esta simple redefinición
\def\oldabbhelp#1\relax{\bgroup\scriptsize%
\stackon{\normalsize.}{\IfItalicTF{\kern1.5pt}{}#1}\egroup}
tendrá el efecto:
Respuesta2
Centrar es fácil; la colisión se cura con \/
.
\documentclass[12pt]{article}
\usepackage[T1]{fontenc}
\usepackage{ebgaramond}
\newcommand{\oa}[1]{%
\/{\ooalign{\textsuperscript{#1}\cr\hidewidth.\hidewidth\cr}}%
}
\begin{document}
M\oa{o} Salazar, Villan\oa{co} al SS\oa{mo} a 8
{\itshape
M\oa{o} Salazar, Villan\oa{co} al SS\oa{mo} a 8}
\end{document}
Aunque no estoy seguro de que sea bueno.
Respuesta3
No pude resistirme a proponer una pequeña variante a la solución de Steven B. Segletes usando una fuente que tiene una S histórica contextual (desafortunadamente, EBGaramond no la tiene) y un punto centrado que no está en la línea base. Se compila con xelatex
o lualatex
..
\documentclass[12pt]{article}
\usepackage{stackengine}
\usepackage{fontspec}
\setmainfont{Sabon Next LT Pro}
\newcommand{\myoldabbrev}[2]{#1\textsuperscript{\smash{\stackunder[0.5ex]{#2}{\normalsize.}}}}%
\begin{document}
\upshape \myoldabbrev{M}{o} Salazar, \myoldabbrev{Villan}{co} al \myoldabbrev{SS}{mo} a 8
\addfontfeature{StylisticSet={2, 4,5}, Ligatures=Historic}
\itshape
\myoldabbrev{M}{o} Salazar, \myoldabbrev{Villan}{co} al \myoldabbrev{SS}{mo} 8
\myoldabbrev{M}{o} Salazar, \myoldabbrev{Villan}{co} al \myoldabbrev{\char"017F\char"017F\kern0.25em}{mo} 8
\end{document}
Respuesta4
Sí, esto ciertamente se puede hacer. Pruebe lo siguiente:
\documentclass{article}
\thispagestyle{empty}
\newlength{\dotcenterwd}
\def\dotcenter#1{%
\settowidth{\dotcenterwd}{\textsuperscript{#1}}%
\hbox to\dotcenterwd{\textsuperscript{#1}}%
\kern-\dotcenterwd%
\hbox to\dotcenterwd{\hfil.\hfil}%
}%
\begin{document}
\Huge
M\dotcenter{o}
\textit{M\dotcenter{o}}
M\dotcenter{co}
\textit{M\dotcenter{co}}
SS\dotcenter{mo}
\textit{SS\dotcenter{mo}}
\end{document}
Esto debería darte lo que creo que quieres:
Hay algunos problemas con esta solución: a saber, no hay ningún interletraje específico de cada carácter involucrado. Realmente, la "m" en el superíndice está demasiado cerca de los caracteres de la izquierda, pero si corregimos eso, entonces la "o" está demasiado lejos de ellos. No estoy seguro de cómo resolver ese problema.
Tenga en cuenta que esto también debería ser independiente de la fuente. ¿Eso logra tu objetivo?