
Mientras imprimo la Lista de símbolos, me gustaría, en un borrador, imprimir también los comandos de definición. Por ejemplo, considere los siguientes comandos:
\providecommand{\perm}{\ensuremath{\pi}}
\providecommand{\permel}[1]{\ensuremath{\perm(#1)}}
y el siguiente comando para imprimir símbolos dentro de una tabla:
\providecommand{\symbdef}[2]{\texttt{\color{blue}\string #1} & #1 & #2}
Ahora, el código:
\section{List of Symbols}
\begin{tabular}{lll}
\symbdef{\perm}{a permutaion} \\
\symbdef{\permel{i}}{the value of \perm for the argument $i$} \\
\end{tabular}
Salida de orgullo: \perm
y \permeli
en la primera columna. Sin embargo me gustaría imprimir \permel{i}
en lugar de \permlei
aquí y no sé cómo.
Por favor ayuda...
Respuesta1
\string
solo tomaunotoken y lo imprime, por lo que solo ve \permel
.
Intentar
\providecommand{\symbdef}[2]{\texttt{\color{blue}\detokenize{#1}} & #1 & #2}
Esto insertará espacios explícitos después de las secuencias de control, lo que no es semánticamente incorrecto, pero puede que no sea estéticamente agradable. En ese caso, intente filtrar los espacios de esta manera:
\providecommand{\symbdef}[2]{\texttt{\color{blue}\expandafter\filterspaceaftercs\detokenize{#1\x}_} & #1 & #2}
\begingroup
\makeatletter
\catcode`\|=\z@
\catcode`\\=12
|gdef|filterspaceaftercs#1\#2 #3_%
{%
#1%
|ifx|empty#3|empty
|expandafter|@gobble
|else
\#2|expandafter|filterspaceaftercs
|fi
#3_%
}
|endgroup