Problem s expanzi ?

David Necas yeti at monoceros.physics.muni.cz
Thu Jun 1 14:57:54 CEST 2000


On Thu, 1 Jun 2000, Dont Miroslav wrote:

>
>
> Davidek Tomas wrote:
>
> > Dobry vecer vespolek,
> >   narazil jsem na problem s velice podivnym chovanim. V LaTeXu mam
> > nadefinovano:
> > \newcommand{\Wboson}{\ifmmode {\mathrm{W}}\else W\fi}
> > \newcommand{\lepton}{\ifmmode {\ell}\else $\ell$\fi}
> >
> > Pouziti funguje spravne v matematice i v textu, napr.
> > $$ \Wboson \rightarrow \lepton \nu $$
> > problem nastane v prostredi eqnarray pri pouziti "separatoru" & (bez nich
> > to prave taky funguje)
> > \begin{eqnarray}
> >       \Wboson & \rightarrow & \lepton \nu \\
> >                               ^^^^^^^^
> > ...
> > \end{eqnarray}
> >
> > Problem je v tom, ze v danem miste neni podminka \ifmmode splnena, tudiz
> > se substituuje $\ell$ a tim padem dojde k chybe. Kdyz ale dam vse do
> > zavorek, tj.
> >       \Wboson & \rightarrow & {\lepton} \nu \\
> > tak je vse v poradku, tj. test \ifmmode da hodnotu true.
> >
> > Mohl by mi prosim nekdo naznacit, v cem je zakopana kuna ?
> >
>
> Nevim kde je co zakopaneho.

Zakopane je to, ze se podminka \ifmmode expanduje nekdy jindy, nez by
mela. Zpusobene je to tim, ze je prvnim tokenem nasledujicim po & (po
expanzi), takze spravit to lze treba nasledovne (pouze jsem pridal
\relax):

\def\lepton{\relax\ifmmode\ell\else$\ell$\fi}

Nevim ovsem pricinu toho celeho, zkousel jsem \tracingmacros=1, ale to je
v LaTeXu naprosto beznadejna zalezitost, dozvite se akorat, jake je NFSS
zverstvo :-)

> P.S. Prostredi eqnarray je ponekud zastarale. Vhodnejsi je pouzit
> balik amsmath, kde je spousta ruznych prostredi pro viceradkove
> formule, ktere, oproti eqnarray, davaji (napr.) spravne mezerovani
> kolem rovnitka.

To je obecne dobra rada, ale obavam se, ze problemy s expanzi tam budou
tytez. Kdo chce pouzivat LaTeX, at si zvykne psat pred kazdy prikaz
\protect (a dobre mu tak :-))

Yeti




More information about the csTeX mailing list