[cstex] Problém s \newif

Zdenek Wagner zdenek.wagner at gmail.com
Sat Oct 24 13:20:37 CEST 2009


2009/10/19 "Procházka Lukáš Ing. - Pontex s. r. o." <LPr at pontex.cz>:
> Zdravím v konferenci,
>
> prosím o pomoc při hledání chyby v kódu:
>
> \documentclass{article}
>
> \newif\ifSV % \SVtrue
> \newif\ifSSX
>
> \def\ifSS{SSS \ifSSX}
> % \let\ifSS=\ifSSX
>
> \begin{document}
>
> AAA
>
> \ifSV
>
>  \ifSS
>
>   BBB
>
>  \fi
>
> \fi
>
> \end{document}
>
> Objevuje se chybová hláška:
>
> ! Extra \fi.
> l.21 \fi
>
> ?
>
> A nedaří se mi odhalit proč.
>
Vytiskne se AAA

\ifSV není splněno, tj. je to \iffalse, následující text se přeskakuje
Makro \ifSS se přeskočí bez expanze
Text BBB se netiskne
\fi ukončí nejvnitřnější nalezenou podmínku \if, což je \ifSV (\ifSS
je makro, nikoliv podmínka)
\fi nemá odpovídající \if

> Zároveň - pokud odstraním libovolný komentář, tj. doplním \SVtrue nebo do

Pokud \ifSV je \iftrue, makro \ifSS je expandováno a do vstupního
proudu se tím dostane další \if

> \ifSS definuji pomocí \let a nikoli pomocí \def, překlad souboru skončí v
> pořádku.
>
Pokud pro definici \ifSS použijete \let, pak se stane podmínkou typu
\if a v obou případech bude první \fi patřit jemu.

> Co je příčinou?
>
> Předem děkuji.
>
> Lukáš Procházka
>
>
> _______________________________________________
> csTeX mailing list
> csTeX at cs.felk.cvut.cz
> http://lists.felk.cvut.cz/mailman/listinfo/cstex
>
>



-- 
Zdeněk Wagner
http://hroch486.icpf.cas.cz/wagner/
http://icebearsoft.euweb.cz



More information about the csTeX mailing list