[comp.text.tex] A macro question

cotner@ronzoni.berkeley.edu (08/29/90)

I have a macro question.  I have a macro which I use like this:

\mymacro input1
\mymacro input2
...
\mymacro inputn


I would like to be able to say instead

\mynewmacro input1 <delimiter> input2 <delimiter> ... <delimiter> inputn

where <delimiter> is any character or string which doesn't appear in any
of the inputs and the number of inputs is arbitrary (variable).


Any help would be greatly appreciated.

Carl Cotner
cotner@math.berkeley.edu

marcel@cs.caltech.edu (Marcel van der Goot) (09/06/90)

In <1990Aug29.002146.24426@agate.berkeley.edu> Carl Cotner
(cotner@math.berkeley.edu) asks for a way to write macros that take an
arbitrary number of arguments.


Here's how I usually do it (I don't remember whether this can be found
somewhere in the TeX-book; the idea was described to me several years
ago by Prof. R. Backhouse). I assume that the technique is pretty
well-known.

\def\callmymacro[#1+#2]% 
   {\mymacro{#1}%
    \def\more{#2}%
    \ifx\more\empty{}\else\callmymacro[#2]\fi
   }

\def\mynewmacro[#1]%
   {\callmymacro[#1+]%
   }

% The separator is '+'. You can call
%   \mynewmacro[input1+input2+input3]
% Try with, e.g., \def\mymacro#1{\immediate\write16{--- #1}}


					Marcel van der Goot
					marcel@vlsi.caltech.edu