
17세기 스페인 제국 음악의 현대판을 위해서는 원고 출처에 있는 특정 구식 약어를 조판해야 합니다. 이 관례에서는 단어의 중간 부분을 축약하고 어미를 마침표 중심으로 지정합니다. 예를 들어:
호기심이 있으신 분들을 위해 이 곡은 "Al Santisimo [Sacramento]. a 8"로 확장됩니다. 이는 이 곡이 성체성사(Corpus Christi 또는 성체 봉헌에 사용됨)에 헌정되었음을 의미하며 8성부로 점수가 매겨져 있습니다.
MWE의 명령은 을 사용하여 이를 수행 \rlap
하지만 끝 부분은 마침표와 왼쪽 정렬됩니다. 이탤릭체를 사용하면(적어도 를 사용하는 경우 ebgaramond
) 결말이 앞 글자와 충돌합니다.
로마자와 이탤릭체 모두에서 충돌 없이 끝 부분이 기간의 중앙에 오도록 이 공간을 더 잘 배치하려면 어떻게 해야 합니까?
\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}
답변1
Joseph의 신용현재 사용 중인 텍스트 "모드"(일반, 기울임꼴, 굵게 등)를 감지합니까?이탤릭체인지 확인하는 데 도움이 됩니다. 그렇다면 추가 커닝이 오버 스크립트에 적용되어(아래 점을 기준으로) 이탤릭체 모양과 미학적으로 호환됩니다.
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}
정말로 아래에 점을 원했다면센터오버 스크립트의 경우 다음과 같은 간단한 재정의가 필요합니다.
\def\oldabbhelp#1\relax{\bgroup\scriptsize%
\stackon{\normalsize.}{\IfItalicTF{\kern1.5pt}{}#1}\egroup}
다음과 같은 효과가 있습니다.
답변2
센터링은 쉽습니다. 충돌은 에 의해 해결됩니다 \/
.
\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}
하지만 그것이 좋은지는 확실하지 않습니다.
답변3
나는 상황에 맞는 역사적인 S(불행히도 EGBaramond는 그렇지 않음)와 기준선에 없는 중앙 점을 사용하는 Steven B. Segletes의 솔루션에 대한 작은 변형을 제안하지 않을 수 없었습니다. xelatex
또는 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}
답변4
예, 확실히 가능합니다. 다음을 시도해 보세요:
\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}
이것은 당신이 원하는 것을 제공할 것입니다:
이 솔루션에는 몇 가지 문제가 있습니다. 즉, 문자별 커닝이 포함되지 않습니다. 실제로 위 첨자의 "m"은 왼쪽 문자에 너무 가깝습니다. 하지만 이를 수정하면 "o"는 왼쪽 문자에서 너무 멀리 떨어져 있습니다. 그 문제를 해결하는 방법을 잘 모르겠습니다.
이 역시 글꼴 독립적이어야 합니다. 그게 당신의 목표를 달성합니까?