diff options
author | Karl Berry <karl@freefriends.org> | 2015-07-10 22:38:54 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2015-07-10 22:38:54 +0000 |
commit | 8284b99c6fa05747925445552dcb2852f3b8201f (patch) | |
tree | 5d84fbd0bdf625991f6e553b4fc2ff116a17cbef | |
parent | df80c6b8c95d43d534eeb8fb64749160b071f026 (diff) |
esami (10jul15)
git-svn-id: svn://tug.org/texlive/trunk@37828 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r-- | Master/texmf-dist/doc/latex/esami/doc/esami-doc-en.pdf | bin | 493715 -> 453136 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/esami/doc/esami-doc-en.tex | 2 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/esami/doc/esami-doc-it.pdf | bin | 505069 -> 460454 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/esami/doc/esami-doc-it.tex | 2 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/esami/doc/examples/master-sol.tex | 96 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/esami/doc/examples/master.tex | 96 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/esami/esami.sty | 75 |
7 files changed, 251 insertions, 20 deletions
diff --git a/Master/texmf-dist/doc/latex/esami/doc/esami-doc-en.pdf b/Master/texmf-dist/doc/latex/esami/doc/esami-doc-en.pdf Binary files differindex fae5223ff85..ee5b341b2ab 100644 --- a/Master/texmf-dist/doc/latex/esami/doc/esami-doc-en.pdf +++ b/Master/texmf-dist/doc/latex/esami/doc/esami-doc-en.pdf diff --git a/Master/texmf-dist/doc/latex/esami/doc/esami-doc-en.tex b/Master/texmf-dist/doc/latex/esami/doc/esami-doc-en.tex index f12342dd08b..feb51f1be23 100644 --- a/Master/texmf-dist/doc/latex/esami/doc/esami-doc-en.tex +++ b/Master/texmf-dist/doc/latex/esami/doc/esami-doc-en.tex @@ -108,7 +108,7 @@ The package allows to write various type of exercises (multiple choiche question The development of the package has begun in 2008 (\cite{esami}, \cite{tug}) with the aim of unify and extend some properties of the packages \pkgname{exerquiz} e \pkgname{eqexam} by D.P. Story \cite{acrotex} and \pkgname{probsoln} by N.Talbot \cite{probsoln}. \section{Required packages} -Package \pkgname{esami} depends on some other non standard packages\footnote{The complete list of the packages used in a normal compilation of an exam is: etex, graphicx, enumerate, fp, currfile, array, environ, ifthen, xargs, xkeyval, multicol, amssymb, amsfonts, xcolor, babel, etoolbox, icomma, numprint, amsmath, fontenc, inputenc, lmodern. Obviously, every loaded package can have other dependencies.}: +Package \pkgname{esami} depends on some other non standard packages\footnote{The complete list of the packages used in a normal compilation of an exam is: graphicx, enumerate, fp, currfile, array, environ, ifthen, xargs, xkeyval, multicol, amssymb, amsfonts, xcolor, babel, etoolbox, icomma, numprint, amsmath, fontenc, inputenc, lmodern. Obviously, every loaded package can have other dependencies.}: \begin{enumerate} \item \pkgname{fp}: for mathematical operations; \item \pkgname{currfile}: to obtain the file and folder names; diff --git a/Master/texmf-dist/doc/latex/esami/doc/esami-doc-it.pdf b/Master/texmf-dist/doc/latex/esami/doc/esami-doc-it.pdf Binary files differindex 413e11f8a84..35dfdbee287 100644 --- a/Master/texmf-dist/doc/latex/esami/doc/esami-doc-it.pdf +++ b/Master/texmf-dist/doc/latex/esami/doc/esami-doc-it.pdf diff --git a/Master/texmf-dist/doc/latex/esami/doc/esami-doc-it.tex b/Master/texmf-dist/doc/latex/esami/doc/esami-doc-it.tex index 8e7fa8a648b..d977b749b47 100644 --- a/Master/texmf-dist/doc/latex/esami/doc/esami-doc-it.tex +++ b/Master/texmf-dist/doc/latex/esami/doc/esami-doc-it.tex @@ -107,7 +107,7 @@ Il pacchetto consente di scrivere esercizi di vario tipo (a risposta multipla co Lo sviluppo del pacchetto è iniziato nel 2008 (\cite{esami}, \cite{tug}) con l'intento di estendere e unificare alcune proprietà dei pacchetti \pkgname{exerquiz} e \pkgname{eqexam} di D.P. Story \cite{acrotex} e \pkgname{probsoln} di N.Talbot \cite{probsoln}. \section{Pacchetti richiesti} -Il pacchetto \pkgname{esami} dipende da alcuni altri pacchetti non standard\footnote{La lista completa dei pacchetti usati in una normale compilazione di un esame è: etex, graphicx, enumerate, fp, currfile, array, environ, ifthen, xargs, xkeyval, multicol, amssymb, amsfonts, xcolor, babel, etoolbox, icomma, numprint, amsmath, fontenc, inputenc, lmodern. Ovviamente ogni pacchetto caricato può avere altre dipendenze.} +Il pacchetto \pkgname{esami} dipende da alcuni altri pacchetti non standard\footnote{La lista completa dei pacchetti usati in una normale compilazione di un esame è: graphicx, enumerate, fp, currfile, array, environ, ifthen, xargs, xkeyval, multicol, amssymb, amsfonts, xcolor, babel, etoolbox, icomma, numprint, amsmath, fontenc, inputenc, lmodern. Ovviamente ogni pacchetto caricato può avere altre dipendenze.} \begin{enumerate} \item \pkgname{fp}: per le operazioni matematiche; \item \pkgname{currfile}: per ottenere il nome del file e della cartella di lavoro; diff --git a/Master/texmf-dist/doc/latex/esami/doc/examples/master-sol.tex b/Master/texmf-dist/doc/latex/esami/doc/examples/master-sol.tex new file mode 100644 index 00000000000..2882a372459 --- /dev/null +++ b/Master/texmf-dist/doc/latex/esami/doc/examples/master-sol.tex @@ -0,0 +1,96 @@ +\documentclass[a4paper,italiano]{article} + +\usepackage[shuffle,xyz,pointsonright,solutions,noquizsolutions,twocolumns]{esami}%%%%% TEMA + +%%%% substitute "xyz" with your own config file + +%%% some packages we use + + \usepackage{fixltx2e} + \usepackage[T1]{fontenc} + \usepackage[utf8]{inputenc} + \usepackage{lmodern,textcomp} + +% +=============================+ +% | DEFINITIONS | +% +=============================+ + +\def\examname{The name of the exam} +\def\numcompiti{10}%%% The number of the versions +\date{2014/07/22}%%% THE DATE IN THE FORMAT YYYY/M/D or D/M/YYYY +\def\Data{\longdate}%%% or \shortdate: the date in the heading +%\def\cartella{d:/folder}%%% The folder where are the exercises: by default the current folder% +%\def\Acapo{\newpage} +\usepackage{babel} + +\begin{document} + +\testversioni +\pagestyle{esame} + +\whiledo{\thevers<\numcompiti}{\stepvers +% +=============================+ +% | THE SEED | +% +=============================+ + +\FPeval\seme{round((\thenomefile+(3*\thevers)):0)} +%%% OR SOME OTHER LIKE +%\FPeval\seme{round(\thenomefile*(\thevers)+1-trunc(\thenomefile*(\thevers)/(2^31-1):0)*(2^31-1):0)} +%\FPeval\seme{round(1+abs(\thenomefile/(\thevers)+sin(\thevers)*(\thevers)^(2)):0)} + +\randomi=\seme + +\permuta +% +=============================+ +% | STUFF DEFINED IN CFG FILE | +% +=============================+ + +\testa%%% the heading +\istruzionii%%% some instructions + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section*{Part One} + + +\begin{test}[8] +\begin{questions} +%%% this is an example of "esdb" + +\begin{esdb}{mydb} %% some exercises from 2 files + \selectrandomlyn{3}{test2} + \selectrandomlyn{2}{test3} + \end{esdb} + +%%%% this is an example of "esercizi" + +\esercizi{ +test14, +test1, +test4, +test9, +test5-fillin +} +%%% all the problems of a file +\selectallproblems[random]{test11} + + +\end{questions} + +%%%% You can write other questions here using \begin{questions}... \end{question} + +\end{test} + +\section*{Part two} +\istruzioniii%%% Some other instructions + +%%%% This is an example of open question problem + +\esercizi{problem1} +\closevers +\newpage % + % +\setcounter{page}{1} %%% dvi +} + +\end{document} diff --git a/Master/texmf-dist/doc/latex/esami/doc/examples/master.tex b/Master/texmf-dist/doc/latex/esami/doc/examples/master.tex new file mode 100644 index 00000000000..6f102384957 --- /dev/null +++ b/Master/texmf-dist/doc/latex/esami/doc/examples/master.tex @@ -0,0 +1,96 @@ +\documentclass[a4paper,italiano]{article} + +\usepackage[shuffle,xyz,pointsonright,nosolutions,noquizsolutions,twocolumns]{esami}%%%%% TEMA + +%%%% substitute "xyz" with your own config file + +%%% some packages we use + + \usepackage{fixltx2e} + \usepackage[T1]{fontenc} + \usepackage[utf8]{inputenc} + \usepackage{lmodern,textcomp} + +% +=============================+ +% | DEFINITIONS | +% +=============================+ + +\def\examname{The name of the exam} +\def\numcompiti{10}%%% The number of the versions +\date{2014/07/22}%%% THE DATE IN THE FORMAT YYYY/M/D or D/M/YYYY +\def\Data{\longdate}%%% or \shortdate: the date in the heading +%\def\cartella{d:/folder}%%% The folder where are the exercises: by default the current folder% +%\def\Acapo{\newpage} +\usepackage{babel} + +\begin{document} + +\testversioni +\pagestyle{esame} + +\whiledo{\thevers<\numcompiti}{\stepvers +% +=============================+ +% | THE SEED | +% +=============================+ + +\FPeval\seme{round((\thenomefile+(3*\thevers)):0)} +%%% OR SOME OTHER LIKE +%\FPeval\seme{round(\thenomefile*(\thevers)+1-trunc(\thenomefile*(\thevers)/(2^31-1):0)*(2^31-1):0)} +%\FPeval\seme{round(1+abs(\thenomefile/(\thevers)+sin(\thevers)*(\thevers)^(2)):0)} + +\randomi=\seme + +\permuta +% +=============================+ +% | STUFF DEFINED IN CFG FILE | +% +=============================+ + +\testa%%% the heading +\istruzionii%%% some instructions + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section*{Part One} + + +\begin{test}[8] +\begin{questions} +%%% this is an example of "esdb" + +\begin{esdb}{mydb} %% some exercises from 2 files + \selectrandomlyn{3}{test2} + \selectrandomlyn{2}{test3} + \end{esdb} + +%%%% this is an example of "esercizi" + +\esercizi{ +test14, +test1, +test4, +test9, +test5-fillin +} +%%% all the problems of a file +\selectallproblems[random]{test11} + + +\end{questions} + +%%%% You can write other questions here using \begin{questions}... \end{question} + +\end{test} + +\section*{Part two} +\istruzioniii%%% Some other instructions + +%%%% This is an example of open question problem + +\esercizi{problem1} +\closevers +\newpage % + % +\setcounter{page}{1} %%% dvi +} + +\end{document} diff --git a/Master/texmf-dist/tex/latex/esami/esami.sty b/Master/texmf-dist/tex/latex/esami/esami.sty index f8c6930ea99..d198f79e5bc 100644 --- a/Master/texmf-dist/tex/latex/esami/esami.sty +++ b/Master/texmf-dist/tex/latex/esami/esami.sty @@ -34,7 +34,7 @@ % +=============================+ % | THE OPTIONS | % +=============================+ -\usepackage{etex} +%\usepackage{etex} \newif\ifes@language \es@languagefalse \DeclareOption{italian}{\InputIfFileExists{es-\CurrentOption.lng}% { \es@languagetrue \typeout{esami: Verrà usata la lingua italiana}}% @@ -77,8 +77,8 @@ \DeclareOption{shufflerandom}{\es@shuffleQuestionstrue \es@fissafalse}%% the exercises are randomly shuffled \DeclareOption{noshuffle}{\es@shuffleQuestionsfalse} %%% 2013-06-03 eliminata opzione -\DeclareOption{fillb}{} \newif\ifes@fillin \es@fillinfalse +\DeclareOption{fillb}{\es@fillintrue} \newif\ifes@pointsonright \es@pointsonrightfalse%%% the box with the points on the right side (from eqexam) \DeclareOption{pointsonright}{\es@pointsonrighttrue \AtEndOfPackage{\PointsOnRight}} \newif\ifes@solutions \es@solutionsfalse @@ -533,8 +533,8 @@ \newcommand\fillinproblem{\es@fillintrue% \ifes@solutions \immediate\openout\parametri=qf\nome q\romannumeral\tmp@quest e\thevers.parametri.tex -\fi} -%%%% +\fi +} \ifes@solutions \def\fill@ans@color#1{\bfseries\color{red}{#1}}%%% with solutions answers are in red by default \else @@ -564,7 +564,8 @@ %%%%% Other commands %%%%%% \newcommand\stepvers{\stepcounter{vers}\ifes@solutions -\immediate\write\sols{\string\begin{minipage}{.33\string\textwidth}\string\large\string\textbf{\es@solutionname\ \versionname\ n. \thevers}} +\immediate\write\sols{\string\begin{minipage}{.33\string\textwidth} +{\string\large\string\textbf{\es@solutionname\ \versionname\ n. \thevers}}} \immediate\write\loe{\versionname\space n. \thevers}\fi} \newcommand\closevers{\newpage\setcounter{page}{1}\setcounter{ex@no}{0}\ifes@solutions\immediate\write\sols{\string\end{minipage} \string\vspace{5ex}} @@ -611,7 +612,7 @@ \string}\string\newline}} \else \newcommandx{\FPsetpar}[5][1=\seme,5={}]{% -\ifnum#3<#4\else\PackageError{esami}{\es@fpsetparerrshort{#2}}{\es@fpsetparerrlong{#2}}\fi%% NEW 2015 +\ifnum#3>#4\PackageError{esami}{\es@fpsetparerrshort{#2}}{\es@fpsetparerrlong{#2}}\fi%% NEW 2015 \@ifundefined{nome}{\setcounter{fp@contatore}{-2}}{ \@ifundefined{base\nome}{\setcounter{fp@contatore}{-2}}{\setcounter{fp@contatore}{-\csname base\nome \endcsname}}} \FPval{randomico}{\thevers+\then@par+\thequestionno+#1} @@ -913,6 +914,12 @@ \let\nome\currfilebase \global\def\problabel{e:\thevers-file:\nome} \global\def\probnumber{q:\romannumeral\tmp@quest} +\ifes@fillin +\ifes@solutions%%% to write the string of solutions +\immediate\openout\parametri=qf\nome q\romannumeral\tmp@quest e\thevers.parametri.tex +\fi +\fi + \expandafter\global\expandafter\newcommand\csname @prob-\problabel-\probnumber \endcsname{\unexpanded{#1}} \expandafter\global\expandafter\newcommand\csname @probi-\problabel-\probnumber\endcsname{#1}%%% it assigns a unique name to exercise \fi @@ -1069,7 +1076,7 @@ } -\def\@getitems#1#2#3{\rand@getitems{#2}{#3}[#1]}% +%\def\@getitems#1#2#3{\rand@getitems{#2}{#3}[#1]}% \newcommand{\esercizidb}[1]{ \icount=0 @@ -1774,20 +1781,17 @@ \renewcommand{\theshuf@lop}{\arabic{shuf@lop}}% } -%%% the command \es@estrai choices in list #1: #2=name input file, #3=name output file, #4=counter name -\newcommand{\es@estrai}[4]{\sh@max=0\sh@chex{#1}{#2}\@getitems{#2}{#4}{#3}} - %%% the command \es@randestrai choices in the list #2 leaving out #1 elements. #3=name input file, #4=name output file, #5=total number of file \newcommand{\es@randestrai}[5][0]{\sh@max=#1\sh@chex{#2}{#3}\rand@getitems{#5}{#4}[#3]}% -\newcommand{\es@trai}[3][0]{%%% it extracts objects from the list #2 leaving out #1 elements. The objects will be named #3i, #3ii, ecc. +\newcommand{\randes@trai}[3][0]{%%% it extracts objects from the list #2 leaving out #1 elements. The objects will be named #3i, #3ii, ecc. \es@randestrai[#1]{#2}{tmp@in}{#3}{\theshuf@lop} } -%%% \estrai is the user command to extract objects from the list #2 leaving out #1 elements. -%%% \estraialfa extracts #1 random objects from the list #2 preserving order and naming them #3i,#3ii, ecc. +%%% \randestrai is the user command to randomly extract objects from the list #2 leaving out #1 elements. +%%% \randestraialfa extracts #1 random objects from the list #2 preserving order and naming them #3i,#3ii, ecc. \ifes@param%%% for parametric version -\newcommand{\estrai}[3][0]{ -\es@trai[#1]{#2}{tmp@out} +\newcommand{\randestrai}[3][0]{ +\randes@trai[#1]{#2}{tmp@out} \tmp@cntb=\value{shuf@lop} \advance\tmp@cntb by -#1 \loop @@ -1808,8 +1812,8 @@ \immediate\write\params{\es@EstraiMessage{#2}{#3}}%%% writes to a file } \else -\newcommand{\estrai}[3][0]{ -\es@trai[#1]{#2}{tmp@out} +\newcommand{\randestrai}[3][0]{ +\randes@trai[#1]{#2}{tmp@out} \tmp@cntb=\value{shuf@lop} \advance\tmp@cntb by -#1 \loop @@ -1834,9 +1838,44 @@ } \fi +%%% the command \es@estrai choices in list #2 leaving out #1 elements. #3=name input file, #4=name output file, #5=counter name +\newcommand{\es@estrai}[5][0]{\sh@max=#1\sh@chex{#2}{#3}\@getitems{#3}{#5}{#4}} + +\newcommand{\es@trai}[3][0]{%%% it extracts objects from the list #2 leaving out #1 elements. The objects will be named #3i, #3ii, ecc. +\es@estrai[#1]{#2}{tmp@in}{#3}{\theshuf@lop} +} +%%% \estrai is the user command to extract objects from the list #2 leaving out #1 elements. +%%% \estraialfa extracts #1 random objects from the list #2 preserving order and naming them #3i,#3ii, ecc. + +\ifes@param%%% for parametric version +\newcommand{\estrai}[3][0]{ +\es@trai[#1]{#2}{tmp@out} + \tmp@cntb=\value{shuf@lop} + \advance\tmp@cntb by -#1 + \loop + \expandafter\edef\csname #3\romannumeral\tmp@cntb\endcsname{#3\romannumeral\tmp@cntb}% + \advance\tmp@cntb by-1 + \ifnum\tmp@cntb>0 + \repeat +\immediate\write\params{\es@EstraiMessage{#2}{#3}}%%% writes to a file + \immediate\closeout\params +} +\else +\newcommand{\estrai}[3][0]{ +\es@trai[#1]{#2}{tmp@out} + \tmp@cntb=\value{shuf@lop} + \advance\tmp@cntb by -#1 + \loop + \expandafter\edef\csname #3\romannumeral\tmp@cntb\endcsname{\csname tmp@out\romannumeral\tmp@cntb\endcsname}% + \advance\tmp@cntb by-1 + \ifnum\tmp@cntb>0 + \repeat + }% +\fi + %%% \esestrai is the user command to extract exercises from the list #2 leaving out #1 elements. -\newcommand{\estraies}[2][0]{\es@trai[#1]{#2}{tmp@out} +\newcommand{\estraies}[2][0]{\randes@trai[#1]{#2}{tmp@out} \tmp@cnt=\value{shuf@lop} \advance\tmp@cnt by -#1 \loop |