7

I want to store the argument of a macro in a temporary variable, but I know in advance that some people will incorrectly enclose the argument in parentheses as well as braces (long story). Specifically, some users will say something like

 \bernard{abc}

while others will say

\bernard{(abc)}

I want the macro \bernardto store the string abc in the temporary variable in both cases. How do I achieve this?

2
  • Is Bernard the person? :-D Mar 2, 2011 at 0:40
  • @Matthew - sadly not. Their name is Legion, for they are many. Mar 2, 2011 at 16:13

1 Answer 1

9
\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}
1
  • 1
    Nice. Maybe Ian needs a \newbernard macro that defines a command that takes Bernard-style arguments. Mar 2, 2011 at 18:12

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .