기호 목록을 인쇄하는 동안 초안에서 정의 명령도 인쇄하고 싶습니다. 예를 들어 다음 명령을 고려해보세요.
\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}
자랑스러운 출력: 첫 번째 열에 있습니다 \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