在打印符号列表时,我希望在草稿中也打印定义命令。例如,考虑以下命令:
\providecommand{\perm}{\ensuremath{\pi}}
\providecommand{\permel}[1]{\ensuremath{\perm(#1)}}
以下命令用于打印表中的符号:
\providecommand{\symbdef}[2]{\texttt{\color{blue}\string #1} & #1 & #2}
现在,代码:
\section{List of Symbols}
\begin{tabular}{lll}
\symbdef{\perm}{a permutaion} \\
\symbdef{\permel{i}}{the value of \perm for the argument $i$} \\
\end{tabular}
proudeces 输出:\perm
并\permeli
在第一列。但是我想打印\permel{i}
而不是\permlei
在这里打印,但不知道怎么做。
请帮忙...
答案1
\string
只需要一令牌并打印出来,所以它只能看到\permel
。
尝试
\providecommand{\symbdef}[2]{\texttt{\color{blue}\detokenize{#1}} & #1 & #2}
这将在控制序列后插入显式空格,这在语义上没有错误,但可能不太美观。在这种情况下,请尝试像这样过滤掉空格:
\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