Poradi radku

Pavel Calábek calabek at aix.upol.cz
Thu Oct 20 13:41:33 CEST 2005


 
> Dobry den,
> mam nasledujici zdrojovy text pro plainTeX:
> 
> \let\otazka=\line
> \otazka{derivace}
> \otazka{vektory}
> \otazka{vyroky}
> 
> ....
> 
> \otazka{nerovnice}
> \bye
> 
> Jsou to temata matur. otazek z matematiky :-)
> Potrebuji je na vystupu zprehazet (aspon trochu, aby nebyly zasebou).
> 
> dekuji
> -- 

Treba by se dalo udelat toto
%%%%%%%%%%%%%%

\newbox\Otazky
\newbox\Runda
\newcount\poc 

%%%%%%%%%%%%%%%%%%%%%%

potom by se dalo predefinovat \otazka tak aby
do vboxu \Otazky pridala otazku

%%%%%%%%%%%%%%%%%%%%%%%%%%

\setbox\Otazky=\vbox{}
\def\otazka#1{\setbox\Otazky=\vbox{\unvbox\Otazky\line{#1}}}

%%%%%%%%%%%%%%%%%%%%%%%%

Potom bychokm si mohli definovat makro \Usporadej s jednim 
ciselnym parametrem #1, ktere box \Otazky rozdeli do skupin
po #1 prvcích (od konce) a tyto skupiny nacte od konce

%%%%%%%%%%%%%%%%%%%%%%%

\def\Usporadej#1{%
 \setbox0=\vbox{%
   \unvbox\Otazky
   \global\setbox\Otazky=\vbox{}
   \setbox\Runda=\vbox{}
   \poc=#1
   \loop
     \setbox1=\lastbox
     \unskip
     \ifhbox1
        \global\setbox\Runda=\vbox{\box1\unvbox\Runda}
        \global\advance\poc by -1
        \ifnum\poc=0
            \global\setbox\Otazky=\vbox{\unvbox\Otazky\unvbox\Runda}
            \global\setbox\Runda=\vbox{}
            \global\poc=#1
        \fi
    \repeat
    \global\setbox\Otazky=\vbox{\unvbox\Otazky\unvbox\Runda}
    }
  }

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

a potom si muzeme nadefinovat makro \provedvsechny, ktere pro vsechna cisla ve svem argumentu 
ukoncena znakem ":" provede makro \Usporadej

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\def\provedvsechny{\let\next=\opakuj \next}
\def\opakuj #1{%
   \if :#1\let\next=\relax
   \else \Usporadej{#1}%
   \fi
   \next}

%%%%%%%%%%%%%%%%%%%%%%%%%


a potom uz si staci nejakym zpusobem vygenerovat nahodny argument
pro \provedvsechny a dost tezko nekdo najde system v otazkach

Napriklad:

%%%%%%%%%%%%%%%%%%%%%%%%

\setbox\Otazky=\vbox{
  \hbox{1}
  \hbox{2}
  \hbox{3}
  \hbox{4}
  \hbox{5}
 \hbox{6}
 \hbox{7}
 \hbox{8}
 \hbox{9}
 \hbox{10}
 \hbox{11}
 \hbox{12}
 \hbox{13}
 \hbox{14}
 \hbox{15}
 }   

\Usporadej4
\unvcopy\Otazky

******************

\provedvsechny56{12}27:
\unvbox\Otazky

%%%%%%%%%%%%%%%%%%%%%%%%%

calabek






More information about the csTeX mailing list