我想将宏的参数存储在临时变量中,但我事先知道有些人会错误地将参数括在括号和大括号中(说来话长)。具体来说,有些用户会说类似
\bernard{abc}
而其他人会说
\bernard{(abc)}
我希望宏在两种情况下都\bernard
将字符串存储abc
在临时变量中。我该如何实现?
答案1
\documentclass{minimal}
\makeatletter
\def\bernard#1{\bernard@i#1\@nil}
\def\bernard@i{\@ifnextchar(\bernard@ii\bernard@iii}
\def\bernard@ii(#1)\@nil{\def\bTemp{#1}}
\def\bernard@iii#1\@nil{\def\bTemp{#1}}
\makeatother
\begin{document}
\bernard{(abc)} \bTemp
\bernard{abc} \bTemp
\end{document}