
Für eine moderne Ausgabe von Musik aus dem spanischen Kaiserreich des 17. Jahrhunderts muss ich bestimmte veraltete Abkürzungen in den Manuskriptquellen setzen. Bei dieser Konvention wird der mittlere Teil des Wortes abgekürzt und das Ende über dem Punkt zentriert. Zum Beispiel:
Für Neugierige: Dies lässt sich zu „Al Santissimo [Sacramento]. a 8“ erweitern, was bedeutet, dass das Stück dem Allerheiligsten Sakrament gewidmet ist (und daher für Fronleichnam bzw. die Eucharistie-Andacht verwendet wird) und für acht Stimmen komponiert ist.
Der Befehl im MWE macht das mit \rlap
, allerdings steht die Endung linksbündig am Punkt. Bei der Kursivschrift (zumindest bei ebgaramond
) kollidiert die Endung mit dem vorhergehenden Buchstaben.
Wie könnte ich dies besser absetzen, sodass die Endung sowohl in Antiqua als auch in Kursivschrift ohne Kollisionen über dem Punkt zentriert ist?
\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}
Antwort1
Dank an Joseph beiErkennen, welcher Textmodus (normal, kursiv, fett usw.) aktuell verwendet wird?um zu bestimmen, ob Kursivschrift verwendet wird. Wenn ja, wird ein zusätzlicher Unterschnitt auf die Überschrift angewendet (relativ zum Punkt darunter), um sie ästhetisch mit der Kursivschrift kompatibel zu machen.
Beachten Sie, dass ich mich dafür entschieden habe, den Punkt unter dem ersten Buchstaben der Überschrift zu zentrieren, wie in der Abbildung des OP gezeigt.
\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}
Wenn man wirklich den Punkt unter demCenterdes Überskripts, dann diese einfache Neudefinition
\def\oldabbhelp#1\relax{\bgroup\scriptsize%
\stackon{\normalsize.}{\IfItalicTF{\kern1.5pt}{}#1}\egroup}
hat folgende Wirkung:
Antwort2
Das Zentrieren ist einfach; die Kollision wird durch behoben \/
.
\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}
Ich bin jedoch nicht sicher, ob es gut ist.
Antwort3
Ich konnte nicht widerstehen, eine kleine Variante zu Steven B. Segletes' Lösung vorzuschlagen, bei der eine Schriftart verwendet wird, die ein kontextbezogenes historisches S hat (EBGaramond hat das leider nicht) und einen zentrierten Punkt, der nicht auf der Grundlinie liegt. Es wird mit xelatex
oder kompiliert 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}
Antwort4
Ja, das ist durchaus möglich. Versuchen Sie Folgendes:
\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}
Ich glaube, das hier sollte Ihnen das geben, was Sie wollen:
Diese Lösung hat einige Probleme: Es ist nämlich kein zeichenspezifisches Kerning beteiligt. Tatsächlich ist das „m“ im hochgestellten Zeichen zu nah an den Zeichen links, aber wenn wir das korrigieren, ist das „o“ zu weit von ihnen entfernt. Ich bin nicht sicher, wie ich dieses Problem lösen soll.
Beachten Sie, dass dies auch schriftartunabhängig sein sollte. Erreicht das Ihr Ziel?