
Bearbeitet: David Carlisle hat freundlicherweise die Antwort in einem Kommentar bereitgestellt. Dabei handelt es sich um die Definition nach \makeatletter.
Ich versuche, Verzierungen in \NewDocumentCommand zu verwenden, um ein Makro zum Kernen von Indizes in \Gamma zu definieren (als Testfall für ein allgemeineres Problem), weiß aber nicht, wie ich mit Primzahlen umgehen soll. Da sie kein Argument annehmen, habe ich die beiden kommentierten Versionen unten ausprobiert, aber in beiden Fällen im letzten Beispiel wird das _ nicht mehr als Verzierung behandelt. Gibt es eine Möglichkeit, dies zu beheben?
\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}
Antwort1
Verwendene{^_}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}
(Bild wird später hinzugefügt, wenn Imgur es zulässt)