Я играю со шрифтом (найденнымздесь) у которого sups/subs определены для цифр, но не для букв. Если я их не включу, я их не получу:
Но если я \usepackage{realscripts}
их включу, то я вообще потеряю возможность использовать буквы в качестве нижних/верхних индексов:
Есть ли способ получить цифры subs/sups, сохранив возможность использовать буквы в нижних/верхних индексах? Вот мой код:
\documentclass{standalone}
\usepackage{fontspec}
\setmainfont{OFLGoudyStM}[
Extension = .otf,
Ligatures = {Common, TeX},
ItalicFont = OFLGoudyStM-Italic]
\usepackage{realscripts}
\begin{document}
\begin{tabular}{l}
M\textsuperscript{abc0123456789def} \\
M\textsubscript{abc0123456789def}
\end{tabular}
\end{document}
решение1
Нет, realscripts
полезно только есливсеглифы, которые вам нужны для надстрочного или подстрочного индекса, нарисованы специально в шрифте. В XeTeX нет способа определить, повлияет ли данная функция шрифта на конкретный глиф (или серию глифов), поэтому вы даже не можете знать этого, пока не наберете документ и не проверите вывод.
Что ж, в некоторых случаях вы можете создать блок и сравнить его размер до и после настройки шрифта, но у этого метода, вероятно, есть пограничные случаи, из-за которых он может быть ненадёжным.
Другим вариантом может быть проверка содержимого аргумента \textsuperscript
и переход в соответствии с входными данными. То есть,
\textsuperscript{a1} ->
\textsuperscript{a}\textsuperscript{1} ->
\fakesuperscript{a}\realsuperscript{1}
Но это будет выглядеть ужасно, потому что a
и 1
будет выглядеть совсем по-другому, поэтому в этом случае лучше использовать \fakesuperscript
(т. е. не нравится realscripts
).