![增加上标字母变音符号的大小](https://linux22.com/image/468410/%E5%A2%9E%E5%8A%A0%E4%B8%8A%E6%A0%87%E5%AD%97%E6%AF%8D%E5%8F%98%E9%9F%B3%E7%AC%A6%E5%8F%B7%E7%9A%84%E5%A4%A7%E5%B0%8F.png)
我正在研究中世纪文本的抄写,因此必须处理变音符号的混乱,同时还受限于对上标字母支持不佳的 Libertinus Serif 字体。我几年前提交的错误报告仍未得到答复,该项目看起来基本上已经死了(维护者声称它不是,但没有太大进展)。我的文档中出现了以下上标:
如您所见,前四行中组合变音符号范围(U+0363 至 U+036F)中的变音符号仅比我,因此在印刷品中也难以辨认,甚至与我。然而,出版商希望您尽可能使用正确的 Unicode,因此使用类似\overset
或\stackrel
(见下文)的字符来伪造它们是最后的手段。
在我打开编辑字体的麻烦之前,有没有办法在 LaTeX(具体来说是 XeLaTeX)中对其进行调整,以便将我需要的组合变音字母的大小增加到非组合修饰字母的大小(上图最后一行),这样就不会对可读性造成问题?我想newunicodechar
可以作为(重新)定义的包装器。之前曾有人问过类似的问题,尽管这只涉及字母下的点,而不是用作变音符号的字母。
梅威瑟:
\documentclass[varwidth]{standalone}
\usepackage{libertinus}
\begin{document}
Oͤ aͤ eͤ iͤ oͤ uͤ\\
Vͦ uͦ vͦ\\
oͧ\\
aͮ iͮ oͮ wͮ\\
aᵉ uᵒ oᵘ aᵛ
\end{document}
我之前拼凑起来的用于伪造变音符号的宏(#1 = 基本字母,#2 = 变音符号):
\newcommand{\sscr}[2]{$\stackrel{\text{\raisebox{-.4ex}[0pt][0pt]{\smaller \hspace{.5ex}#2}}}{\text{#1}}$}
答案1
这将用无点 i 替代基础,用小写 ascii 替代变音符号,并将构造与ActualText
原始构造包装在一起,以便将其剪切并粘贴为 Unicode 变音符号
\documentclass[varwidth]{standalone}
\usepackage{libertinus,accsupp}
\makeatletter
\def\foo#1#2{%
\leavevmode
\BeginAccSupp{method=plain,unicode,ActualText=#1#2}%
\vbox{%
\offinterlineskip
\ialign{##\cr
\hss
\fontsize{.5\dimexpr\f@size pt\relax}\z@\math@fontsfalse\selectfont
\ifx ͤ#2e\else
\ifx ᵉ#2e\else
\ifx ᵒ#2o\else
\ifx ͦ#2o\else
\ifx ᵘ#2u\else
\ifx ͧ#2u\else
\ifx ᵛ#2v\else
\ifx ͮ#2v\else
#2\fi\fi\fi\fi\fi\fi\fi\fi
\hss\cr
\noalign{\vskip.1\dimexpr\f@size pt\relax}
\ifx i#1\i\else#1\fi\cr
}%
}%
\EndAccSupp{}%
}
\makeatother
\begin{document}
Oͤaͤeͤ iͤ oͤ uͤ\\
Vͦ uͦ vͦ\\
oͧ\\
aͮ iͮ oͮ wͮ\\
aᵉ uᵒ oᵘ aᵛ
\bigskip
\foo Oͤ\foo aͤ\foo eͤ \foo iͤ \foo oͤ \foo uͤ\\
\foo Vͦ\foo uͦ \foo vͦ\\
\foo oͧ\\
\foo aͮ \foo iͮ \foo oͮ \foo wͮ\\
\foo aᵉ \foo uᵒ \foo oᵘ \foo aᵛ
\end{document}