% % styl do przygotowania zestawów pytań egzaminacyjnych % wersja bardzo robocza % copyleft by Jan Jełowicki, Wrocław, czerwiec 2005 % dozwolone używanie w dowolnym celu i bez żadnych ograniczeń % \ProvidesPackage{zestawy}[2005/12/01 wersja bardzo robocza]% \typeout{`zestawy': wersja bardzo robocza} % \DeclareOption{list}{\def\@TrybSkladu{\@TrybLista}} \DeclareOption{group}{\def\@TrybSkladu{\@TrybZestawy}} \DeclareOption{nonames}{\def\zestawName{}\def\zadanieName{}} \DeclareOption{date}{\def\date#1{\gdef\@date{#1}\def\@DATE{#1}}\def\@DATE{\today}} \DeclareOption{random}{\setcounter{@@losowanko}{1}\def\@@NrPytania{\number\@@nrpytania}\def\@@LosujPytanie#1{\setrannum{\@@nrpytania}{1}{\value{@@LiczbaPytan}}}} \DeclareOption{permute}{\setcounter{@@losowanko}{2}\def\@@NrPytania{\number\@@nrpytania}\def\@@LosujPytanie#1{\setrannum{\@@nrpytania}{1}{\value{@@LiczbaPytan}}}} \DeclareOption{help}{% \typeout{`zestawy' -- opcje -------} \typeout{ `list' : wydruk pyta\'n rozdzia\l\ po rozdziale wg temat\'ow} \typeout{ `group' : wydruk pyta\'n pogrupowanych w zestawy} \typeout{ `nonames': wy\l\k acza nazywanie element\'ow} \typeout{ `date' : drukuje w nag\l\'owku dat\k e} \typeout{ `random' : wybiera losowo pytania z poszczeg\'olnych grup} \typeout{ `permute': miesza losowo pytania z poszczeg\'olnych grup} \typeout{ `help' : drukuje ten opis} \typeout{--------------------------} } \newcounter{@@losowanko}% \newcount\@@nrpytania% % %% redefinicja nagłówków, włącznie z układem typograficznym % \def\zestawName{Zestaw} \def\zadanieName{Zadanie} \def\@TrybZestawy{1} \def\@TrybLista{0} \def\@DATE{} \def\@@spacja{\kern0.2em} \def\@@Spacja{\kern0.6em} \ExecuteOptions{list} \ProcessOptions \input{random.tex}% \newcounter{zadanie}[section]\def\thezadanie{@\Roman{section}@@\roman{zadanie}} \newcounter{@@zadanie} \newcounter{@@ZADANIA} \newcounter{@@ZESTAWY} \newcounter{@@@ZESTAWY} \newcounter{@@LiczbaPytan} \def\ZadanWZestawie#1{\setcounter{@@ZADANIA}{#1}} \def\ZESTAWY#1{% \setcounter{@@ZESTAWY}{#1}% \setcounter{@@LiczbaPytan}{#1}% \setcounter{@@@ZESTAWY}{0}\setcounter{zadanie}{0}% \loop\ifnum\value{@@@ZESTAWY}<\value{@@ZESTAWY}\addtocounter{@@@ZESTAWY}{1}\ZESTAW\repeat }% \ifnum\@TrybSkladu=\@TrybLista \def\thezadanie{\arabic{section}.\arabic{zadanie}}% \def\ZADANIE#1{\addtocounter{zadanie}{1}\TYTUL{\zadanieName\@@spacja\makebox[2em]{\thezadanie.\hfill}} \TRESC{#1}\par}% \def\ZESTAW{}% \else \def\ZADANIE#1{\addtocounter{zadanie}{1}% \expandafter\def\csname @Zadanie\thezadanie\endcsname {\TRESC{#1}}} \newlength{\zestawheight}\setlength{\zestawheight}{0.3\textheight} \def\ZESTAW{\parbox[t][\zestawheight]{\textwidth}{\parskip0pt\addtocounter{zadanie}{1}% % %% TODO: %% * wykluczyć powtórzenia losowanych pytań %% * uporządkować konwencje nazw % \TYTUL{\zestawName\@@spacja\Roman{zadanie}.}\hfill\@DATE\\ \OPIS{\@@opisZestawu} \setcounter{@@zadanie}{0}% \loop\ifnum\value{@@zadanie}<\value{@@ZADANIA}% \addtocounter{@@zadanie}{1}% \ifnum\value{@@losowanko}=0\@@nrpytania=\value{zadanie}% \else\@@LosujPytanie{}% %%%{ (\number\@@nrpytania)}% %%% odkomentuj jeżeli chcesz kontrolny wydruk wylosowanego numeru \fi% % \TYTUL{\zadanieName\@@spacja\arabic{@@zadanie}.}\@@Spacja\csname @Zadanie@\Roman{@@zadanie}@@\romannumeral\@@nrpytania\endcsname\par\repeat }\par } \fi \def\@@opisZestawu{} \def\OpisZestawu#1{\def\@@opisZestawu{#1}} \def\TRESC#1{#1} \def\TYTUL{\textbf} \def\OPIS#1{{\small #1}} \setcounter{@@ZADANIA}{1} \setcounter{@@ZESTAWY}{0} \ifnum\value{@@losowanko}>0\nextrandom\else\fi % \endinput% %