
Отредактировано: Дэвид Карлайл любезно предоставил ответ в комментарии, который представляет собой определение после \makeatletter.
Я пытаюсь использовать украшения в \NewDocumentCommand, чтобы определить макрос для кернинга нижних индексов в \Gamma (как тестовый пример для более общей проблемы), но не знаю, как обрабатывать простые числа. Поскольку они не принимают аргумент, я попробовал две закомментированные версии ниже, но в обоих случаях в последнем примере _ больше не рассматривается как украшение. Есть ли способ исправить это?
\documentclass{article}
\NewDocumentCommand{\kernedGamma}{e{^_}}{\Gamma\IfValueT{#1}{^{#1}}\IfValueT{#2}{_{\mkern-3mu #2}}}
%\NewDocumentCommand{\kernedGamma}{e{^_'}}{\Gamma\IfValueT{#1}{^{#1}}\IfValueT{#2}{_{\mkern-3mu #2}}\IfValueT{#3}{^{\prime}#3}}
%\NewDocumentCommand{\kernedGamma}{e{^_}t'}{\Gamma\IfValueT{#1}{^{#1}}\IfValueT{#2}{_{\mkern-3mu #2}}\IfBooleanT{#3}{^{\prime}}}
\makeatletter
\RenewDocumentCommand{\kernedGamma}{e{^_}t'e{_}}{\Gamma\IfValueT{#1}{^{#1}}
\IfValueT{#2}{_{\mkern-3mu #2}}\IfBooleanT{#3}{^{\prime}}
\IfValueT{#4}{\IfValueT{#2}{\@latex@error{embellishment used twice}}_{\mkern-3mu #4}}}
\makeatother
\begin{document}
$\Gamma_1$ $\kernedGamma_1$
$\Gamma^2_2$ $\kernedGamma^2_2$
$\Gamma_1'$ $\kernedGamma_1'$
$\Gamma'_1$ $\kernedGamma'_1$
\end{document}
решение1
Использоватьe{^_}t'e{^_}
\documentclass{article}
\NewDocumentCommand{\kernedGamma}{e{^_}t'e{^_}}{%
\kernedGammaAux{#1}{#2}{#3}{#4}{#5}%
}
\ExplSyntaxOn
\NewDocumentCommand{\kernedGammaAux}{mmmmm}
{
\bourke_kernedGamma:nnnnn { #1 } { #2 } { #3 } { #4 } { #5 }
}
\cs_new_protected:Nn \bourke_kernedGamma:nnnnn
{%#1 = first sup, #2 = first sub, #3 = prime, #4 = second sup, #5 = second sub
\Gamma
\bool_if:nTF { #3 }
{% there's a prime
\sp{ \tl_if_novalue:nF { #1 } { #1 } \prime \tl_if_novalue:nF { #4 } { #4 } }
}
{%
\exp_args:Ne \tl_if_empty:nF { \__bourke_double:nn { #1 } { #4 } }
{
\sp{ \__bourke_double:nn { #1 } { #4 } }
}
}
\sb{ \mkern -3mu ~ \__bourke_double:nn { #2 } { #5 } }
}
\cs_new:Nn \__bourke_double:nn
{
\tl_if_novalue:nF { #1 } { \exp_not:n { #1 } }
\tl_if_novalue:nF { #2 } { \exp_not:n { #2 } }
}
\ExplSyntaxOff
\begin{document}
$\kernedGamma$ $\Gamma$
$\kernedGamma'$ $\Gamma'$ $\Gamma^{\prime}$
$\kernedGamma'^{2}_{i}$ $\Gamma'^{2}_{i}$
$\kernedGamma_{i}^{2}'$ $\Gamma^{2\prime}_{i}$
$\kernedGamma_{i}'^{2}$ $\Gamma'^{2}_{i}$
$\kernedGamma_{i}^{2}$ $\Gamma^{2}_{i}$
\end{document}
(Картинка будет добавлена позже, когда Imgur это позволит)