Sintaxis de adornos/tokens de \NewDocumentCommand

Sintaxis de adornos/tokens de \NewDocumentCommand

Editado: David Carlisle amablemente proporcionó la respuesta en un comentario, que es la definición después de \makeatletter.

Estoy intentando usar adornos en \NewDocumentCommand para definir una macro para intercalar subíndices en \Gamma (como caso de prueba para un problema más general), pero no sé cómo manejar números primos. Como no aceptan argumentos, probé las dos versiones comentadas a continuación, pero en ambos casos, en el último ejemplo, _ ya no se trata como un adorno. ¿Hay alguna manera de solucionar esto?

\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}

Respuesta1

Usare{^_}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}

(La imagen se agregará más tarde, cuando Imgur lo permita)

información relacionada