[cstex] Problém s testy definovanými pomocí \newif

Zdenek Wagner zdenek.wagner at gmail.com
Wed Sep 30 20:20:16 CEST 2015


Dobrý večer,

rozdíl je v tom, že \if provádí expanzi, \ifx nikoliv. Jako ukázka poslouží
můj maličký soubor truefalse.tex:

$ cat
truefalse.tex

\def\true{AA}

\def\false{AZ}

\let\notFalse\true

\let\notTrue\false

\if\notTrue


\message{ANO}

\else


\if\notFalse


\message{Ano}


\else


\message{Ne}


\fi

\fi

\bye

A zde je výstup na konzoli:

$ tex
truefalse.tex

This is TeX, Version 3.14159265 (TeX Live 2015) (preloaded
format=tex)

(./truefalse.tex Ano
)

No pages of
output.

Transcript written on truefalse.log.

Zdeněk Wagner
http://ttsm.icpf.cas.cz/team/wagner.shtml
http://icebearsoft.euweb.cz

Dne 30. září 2015 17:55 Tomas Hala <tomas.hala at mendelu.cz> napsal(a):

> Ahoj Jardo,
> nevím přesně, co řešíš, ale zdá se mi, že základní problém
> by mohl být v tom, že příkazy \if (i \ifx) vyžadují dva paramtery.
>
> Možná by Ti mohlo pomoci toto:
>
> \starttext
> \def\mujproblem{1}
> \def\notEOF{\mujproblem 1}
> \if\notEOF děláme \else končíme \fi
> \stoptext
>
> Do makra \mujproblem si někde strčíš jedničku, pokud chceš, aby "podmínka"
> \notEOF byla true. Makro \notEOF pak bude expandovat na dva tokeny,
> při shodě děláš, při neshodě, kterou simuluješ jakoukoliv jinou
> jednoznakovou hodnotou, končíš.
>
> Zdraví
>
> Tom
>
>
>
> Tue, Sep 29, 2015 ve 06:44:09PM +0200 Jaroslav Hajtmar napsal(a):
> # Dobrý den.
> # Potýkám se s problémem funkčnosti testů v ConTeXtových makrech,
> # která jsou umístěna v prostředí tabulek \startxtable ...
> # \stopxtable.
> # Že je to v ConTeXtu je v tuto chvíli nepodstatné, nicméně nejsem v
> # tuto chvíli schopen vyrobit nějaký plainový či latexový minimální
> # příklad, kde bych ukázal co nefunguje.
> #
> # Na důvod nefunkčnosti jsem už zřejmě narazil - viz
> http://tex.stackexchange.com/questions/35807/newif-conditional-causing-problem-in-typeout-or-edef
> #
> # Tam se píše:
> # % The problem here is that \testtrue is not expandable and not
> # protected and
> # % therefore fragile. It is defined as \let\iftrue\iftrue. In an
> expandable
> # % context like \edef or \typeout the \let assignment is ignored, and both
> # % if-switches are expanded. Because there is only one \fi (which is
> # taken as
> # % part of \iftrue) the compiler complains about the missing \fi.
> #
> # Chci se touto cestou zeptat, zda existuje možnost definovat makra,
> # která expandují do hodnot true nebo false tak aby šly jednoduše
> # nahradit testy hodnot definovaných pomocí \newif
> #
> # Něco ve smyslu:
> # \def\notEOF{false}
> #
> # aby se následně dobře vyhodnocoval test: \if\notEOF .... \else ... \fi
> #
> # Jde mi o to, abych zachoval nějakou vizuální kompatibilitu s testy typu
> # \ifnotEOF ... \else ... \fi
> #
> # Na vysvětlenou dodávám, že pokud bych dané řešení potřeboval sám jen
> # pro sebe, tak bych to to vyřešil jinak, nicméně pracuji na jednom
> # modulu (většina je psána v lua) a dá se předpokládat, že jej budou
> # užívat i jiní uživatelé, takže tomu chci dát jistý rámec.
> #
> # PS: Pokud jsem úplně mimo, tak se velmi omlouvám.
> #
> # Zdraví Jarda Hajtmar
> #
> #
> #
> # _______________________________________________
> # csTeX mailing list
> # csTeX at cs.felk.cvut.cz
> # https://lists.felk.cvut.cz/mailman/listinfo/cstex
>
>                                          Tomáš Hála
> --------------------------------------------------------------------
> Mendelova univerzita, Provozně ekonomická fakulta, ústav informatiky
> Zemědělská 1, CZ-613 00 Brno,  tel. +420 545 13 22 28
> --------------------------------------------------------------------
> http://akela.mendelu.cz/~thala
> _______________________________________________
> csTeX mailing list
> csTeX at cs.felk.cvut.cz
> https://lists.felk.cvut.cz/mailman/listinfo/cstex
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.felk.cvut.cz/pipermail/cstex/attachments/20150930/24e06557/attachment-0003.html>


More information about the csTeX mailing list