Hi, I am trying to write a macro so that \SEQ X[1,2,3] expands to $X_1, X_2, X_3$ \SEQ X[1-N] expands to $X_1, \dots, X_N$ and \SEQ X expands to ${\bf X}$. So far I have \def\SEQ#1% {\dodoubleempty\doSEQ[#1]} \def\doSEQ[#1][#2]% {\ifsecondargument \mathematics{\processcommalist[#2]{\dodoSEQ{#1}}} \else \mathematics{\bold{#1}}\fi} \def\dodoSEQ#1#2% {#1_{#2},} \starttext \SEQ X[1,2,3] is part of \SEQ X. \stoptext There is an extra comma at the end. That is, \SEQ X[1,2,3] expands to $X_1,X_2,X_3,$ ^^^ How can I treat the last element of a commalist differently? Thanks, Aditya
Aditya Mahajan wrote:
There is an extra comma at the end. That is,
\SEQ X[1,2,3] expands to $X_1,X_2,X_3,$ ^^^
How can I treat the last element of a commalist differently?
It is much easier to treat the first element as special: \def\doSEQ[#1][#2]% {\ifsecondargument \donefalse \mathematics{\processcommalist[#2]{\dodoSEQ{#1}}} \else \mathematics{\bold{#1}}\fi} \def\dodoSEQ#1#2% {\ifdone ,\else \donetrue\fi#1_{#2}} Cheers, Taco
On Fri, 2 Jun 2006, Taco Hoekwater wrote:
Aditya Mahajan wrote:
There is an extra comma at the end. That is,
\SEQ X[1,2,3] expands to $X_1,X_2,X_3,$ ^^^
How can I treat the last element of a commalist differently?
It is much easier to treat the first element as special:
\def\doSEQ[#1][#2]% {\ifsecondargument \donefalse \mathematics{\processcommalist[#2]{\dodoSEQ{#1}}} \else \mathematics{\bold{#1}}\fi}
\def\dodoSEQ#1#2% {\ifdone ,\else \donetrue\fi#1_{#2}}
Thanks Taco, Works like ... er ... magic. Where is \done set to true? Aditya
On Fri, 2 Jun 2006, Taco Hoekwater wrote:
Aditya Mahajan wrote:
\def\dodoSEQ#1#2% {\ifdone ,\else \donetrue\fi#1_{#2}}
Thanks Taco,
Works like ... er ... magic. Where is \done set to true?
Right above here, in \dodoSEQ.
Duh... I need to read TeX code more carefully. Thanks. Aditya
On Fri, 2 Jun 2006, Aditya Mahajan wrote:
Hi, I am trying to write a macro so that
\SEQ X[1,2,3] expands to $X_1, X_2, X_3$ \SEQ X[1-N] expands to $X_1, \dots, X_N$ and \SEQ X expands to ${\bf X}$.
So far I have
On Fri, 2 Jun 2006, Taco Hoekwater wrote:
It is much easier to treat the first element as special:
\def\doSEQ[#1][#2]% {\ifsecondargument \donefalse \mathematics{\processcommalist[#2]{\dodoSEQ{#1}}} \else \mathematics{\bold{#1}}\fi}
\def\dodoSEQ#1#2% {\ifdone ,\else \donetrue\fi#1_{#2}}
This is the final macro that I have, incase someone else is interested. \def\SEQ#1% {\dodoubleempty\doSEQ[#1]} \def\doSEQ[#1][#2]% {\ifsecondargument \donefalse \mathematics{\processcommalist[#2]{\dodoSEQ{#1}}} \else \mathematics{\bold{#1}}\fi} \def\dodoSEQ#1#2% {\ifdone ,\else \donetrue\fi \doifelse{#2}{...}{\dots}{#1_{#2}}} \starttext \SEQ X[1,2] is part of \SEQ X[1,2,3,4] and \SEQ X[1,...,10] \SEQ X[1,2,...,n-1,n,n+1,...,N] \stoptext Aditya
participants (2)
-
Aditya Mahajan
-
Taco Hoekwater