On Tue, 5 Dec 2006, Aditya Mahajan wrote:
On Mon, 4 Dec 2006, Hubertus Schmidt wrote:
Hi all, for some weeks I need to tex formulas again and tried the way I used to do it:
\placeformula $$ f(t)={1\over2\pi}\int_0^\infty e^{i(\omega t-kx)} dx $$
It didn't work anymore?!? It doesn't place a number nor does it do the spacing properly. It does work the "context" way using
\placeformula \startformula f(t)={1\over2\pi}\int_0^\infty e^{i(\omega t-kx)} dx \stopformula
This is a bug in doplaceformula. I do not know how to avoid it, but the next code illustrates what is happening.
\def\dotest{ \def\nextnext{$}% \ifx\next\nextnext Inside dispplaceformula\ldots % This always fails \else Inside dodoplaceformula\ldots \fi}
\def\test{\futurelet\next\dotest}
\test$$A = B$$
This prints "Inside dodoplaceformula" even though the next character is \$.
So, the \next=\nextnext branch never matches. I do not know why this happens, but a more robust check is needed in doplaceformula.
\ifcat seems to be working, but I do not really know how robust this is? \unprotect \def\doplaceformula[#1][#2]% #2 = dummy, gobbles spaces {\def\redoplaceformula {\bgroup \ifx\next\bgroup \egroup \@EA\moreplaceformula % [ref]{} \else % \def\nextnext{$}% % \ifx\next\nextnext \ifcat\next$% \egroup \@EAEAEA\dispplaceformula % [ref]$$ \else \egroup \@EAEAEA\dodoplaceformula % [ref]\start \fi \fi[#1]{}}% \futurelet\next\redoplaceformula} \long\def\moreplaceformula[#1]#2#3#4% #2 dummy #4 gobbles spaces {\def\redoplaceformula {\bgroup % \def\nextnext{$}% % \ifx\next\nextnext \ifcat\next$% \egroup \@EA\dispplaceformula % [ref]$$ \else \egroup \@EA\dodoplaceformula % [ref]\start \fi [#1]{#3}}% \futurelet\next\redoplaceformula#4} \protect \starttext \placeformula[eq:test] $$A = B$$ \stoptext Aditya