[cstex] Jak skryt obsah prostredi

Jan Sustek Jan.Sustek at seznam.cz
Tue Mar 3 09:18:57 CET 2009


Dobry den,

nedavno jsem delal neco podobneho. Udelal jsem si makro \ignoreenv, ktere definuje prostredi #1, ktere skryje svuj obsah:

\def\ignoreenv#1{\newenvironment{#1}{\setbox0=\vbox\bgroup}{\egroup}}

Trik je v tom, ze se argument vlozi do boxu 0, ktery se nikde nepouzije. Jelikoz se obsah prostredi neuklada do argumentu, ale sazi se do boxu, je mozne pouzit i verbatim. Pouziti tohoto makra muze byt nasledujici.

\ifshowanswers
  \newenvironment{solution}{(klasicka definice Vaseho prostredi)}{}
\else
  \ignoreenv{solution}
\fi

Zdravi

Jan Sustek


> ------------ Původní zpráva ------------
> Od: Antonin Kral <A.Kral at bobek.cz>
> Předmět: [cstex] Jak skryt obsah prostredi
> Datum: 03.3.2009 07:55:02
> ----------------------------------------
> Dobry den,
> 
> potreboval bych udelat prostredi, ktere neposle na vystup svuj obsah,
> pokud je nastavena nejaka promenna. Na zaklade probsoln jsem zkoncil s
> necim takovym:
> 
> \newif\ifshowanswers
> 
> \newenvironment{solution}{%
>    \long at collect@body\do at onlysolution
> }{}
> \newcommand{\do at onlysolution}[1]{%
> \ifshowanswers
>   \par\noindent\textbf{\solutionname:}%
>   #1%
> \fi}
> 
> Kde \long at collect@body je obdoba collect at body. Vsechno funguje dobre, az
> na to, kdyz se do prostredi solution pokusim zavrit verbatim, lstlisting
> apod. Typicky to pak konci s
> 
> Paragraph ended before \@xverbatim was complete.
> 
> apod. Nemate prosim napad, jak tento problem resit?
> 
> Dekuji, s pozdravem,
> 
>     Tonda Kral
> _______________________________________________
> csTeX mailing list
> csTeX at cs.felk.cvut.cz
> http://lists.felk.cvut.cz/mailman/listinfo/cstex
> 
> 
> 



More information about the csTeX mailing list