summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/esami/doc/esami-doc-it.tex
blob: f44d3a9d5d654b5f5f9131654277301f86452f1c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
%\documentclass[10pt]{article}

%\iffalse    This is a METACOMMENT
%
%<*driver>
%\ProvidesFile{esami.dtx}
\documentclass{ltxdoc}
%\usepackage[colorlinks,hyperindex]{hyperref}
%\usepackage{esami}
\usepackage[braces]{colordoc}
\usepackage[T1]{fontenc}
\usepackage{calc}
\usepackage{hologo}
\usepackage{lmodern}
%\usepackage{comandi}
\usepackage[utf8]{inputenc}
\usepackage[italian]{babel}
\usepackage{graphicx}
\usepackage[dvipsnames,svgnames]{xcolor}
\usepackage{fancyvrb}
\usepackage[lmargin=3.5cm,rmargin=3.5cm]{geometry}
\usepackage[colorlinks=true,pdftex,hyperindex=true]{hyperref}
\newcounter{esempio}
\newsavebox{\fcolbox} %\newlength{\fcolwidth}
\newenvironment{esempio}
{\par \medskip
\begin{example}
  }
  {\end{example}\medskip}

\newenvironment{example}
{\noindent\stepcounter{esempio}%\setlength{\fcolwidth}{\textwidth-2\fboxsep-2\fboxrule}%
\begin{lrbox}{\fcolbox}%
\begin{minipage}[c]{\textwidth-2\fboxsep-2\fboxrule}
\textbf{\textsf{Esempio \theesempio.}}
}
{\end{minipage}\end{lrbox}\fbox{\usebox{\fcolbox}}}


\EnableCrossrefs
\CodelineIndex
\PageIndex
\RecordChanges
\OnlyDescription
\CheckSum{6041}
\begin{document}
%\GetFileInfo{esami.sty}
%  \DocInput{esami.dtx}
%\PrintChanges
%\PrintIndex

%</driver>
%\fi
%
%  \CharacterTable
%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%   Digits        \0\1\2\3\4\5\6\7\8\9
%   Exclamation   \!     Double quote  \"     Hash (number) \#
%   Dollar        \$     Percent       \%     Ampersand     \&
%   Acute accent  \'     Left paren    \(     Right paren   \)
%   Asterisk      \*     Plus          \+     Comma         \,
%   Minus         \-     Point         \.     Solidus       \/
%   Colon         \:     Semicolon     \;     Less than     \<
%   Equals        \=     Greater than  \>     Question mark \?
%   Commercial at \@     Left bracket  \[     Backslash     \\
%   Right bracket \]     Circumflex    \^     Underscore    \_
%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%   Right brace   \}     Tilde         \~}
%

\changes{Versione 1.0}{2013/03/08}{Prima versione rilasciata al CTAN}
\changes{Versione 1.1}{2013/12/09}{Reinserita la dipendenza dal pacchetto \texttt{environ} per eliminare alcuni errori nella compilazione con \hologo{LaTeX}. Eliminata la dipendenza dal pacchetto \texttt{icomma} nel file di localizzazione es-italian.lng a seguito dell'introduzione di nuove funzionalità nel pacchetto \texttt{babel} per la lingua italiana (comando \texttt{IntelligentComma}).}
\changes{Versione 2.0}{2015/02/25}{Eliminata la dipendenza da \texttt{pstricks}. Modificato l'inserimento di domande di tipo \emph{fill-in}. Inserita la possibilità di estrarre più esercizi da un solo file. Ora è possibile visualizzare le soluzioni nei test. Modificata la visualizzazione dei decimali nel comando \texttt{FPsv}. Modificata la definizione di \texttt{FPval} in modo da avere cifre decimali. Modificato l'algoritmo di scelta della variante di un esercizio in modo completamente deterministico. Aggiunto il comando \cmd{\Acapo}. Aggiunta la localizzazione serba (alfabeto latino). Ora la compilazione produce un nuovo file con la lista degli esercizi scelti.}
\changes{Versione 2.1}{2016/04/11}{Modificato \texttt{es-german.lng} e \texttt{es-spanish.lng} per errore nell'input delle soluzioni. Introdotto il comando \texttt{randestrai}. Introdotto il comando \texttt{FPsignpol}. Introdotto controllo punteggio totale degli esercizi. Rimossa l'incompatibilità tra il comando  \texttt{fillin} e i comandi  \texttt{sempli} e  \texttt{semplix}.}
\changes{Versione 2.2}{2017/07/01}{Introdotta la possibilità di avere due semi diversi per la scelta degli esercizi (\cmd{\semeex}) e per le permutazioni e scelta dei parametri (\cmd{\seme}): di default sono uguali. Leggermente modificato il comando \cmd{\estrai} così da poter essere usato per estrarre parametri numerici da una lista. Integrata la documentazione.}
\changes{Versione 2.3}{2017/09/18}{Corretto un errore di battitura nel codice.}
\changes{Versione 2.4}{2018/02/10}{Corretta la documentazione .}
\changes{Versione 2.5}{2018/05/06}{Corretto un errore di battitura nel codice. Migliorata la scelta aleatoria degli esercizi.}

%\IndexPrologue{\section*{Indice} I numeri scritti in italico rimandano alla pagina dove è descritto l'item; i numeri sottolineati rimandano alla riga di codice in cui l'item è descritto; le altre referenze sono alla riga di codice dove l'item è usato.}
\GlossaryPrologue{\section*{Changelog}}
\def\MacroFont{\fontencoding\encodingdefault
	\fontfamily\ttdefault
	\fontseries\mddefault
	\fontshape\updefault
	\footnotesize}
\GetFileInfo{esami.sty}
\def\fileversion{versione 2.5}
\def\filedate{2018/05/06}


\title{Il pacchetto esami\thanks{Questo documento
		corrisponde al pacchetto \textsf{esami}~\fileversion, con data \filedate.}}
\author{Grazia Messineo <grazia.messineo@unicatt.it> \\ Salvatore Vassallo <salvatore.vassallo@unicatt.it>}
\newcommand{\nuovo}[1]{\marginpar{\raggedleft{ \footnotesize{\textsf{Nuovo #1}}}}}

\maketitle

\tableofcontents
\newpage
\newcommand*\pkgname[1]{\texttt{#1}}
\newcommand*\clsname[1]{\texttt{#1}}
\newcommand*\optname[1]{\emph{#1}}
\newcommand*\envname[1]{\textsf{#1}}

%\section{Il pacchetto esami}
\section{Introduzione e motivazioni}
Il pacchetto \texttt{esami} è stato creato per produrre i testi e le soluzioni per gli esami di Matematica nella Facoltà di Economia dell'Università Cattolica di Milano e nasce dall'esigenza di poter generare molte versioni (da 12 a 50 solitamente) di una stessa prova d'esame contenenti esercizi simili, ma diversi e di stampare le soluzioni e, se fossero presenti domande a risposta chiusa, la stringa delle soluzioni.

Il pacchetto consente di scrivere esercizi di vario tipo (a risposta multipla con risposte che variano in ordine casuale, a risposta chiusa o aperta, \emph{matching}, problemi, ecc.). Le domande di ogni gruppo ruotano in modo casuale all'interno del compito e le varianti di ciascun esercizio vengono scelte in modo casuale da un file che le contiene tutte e, a nostra conoscenza, è l'unico che permetta di ottenere tali risultati senza utilizzare programmi esterni a \hologo{LaTeX}.

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.}
\begin{enumerate}
	\item \pkgname{fp}: per le operazioni matematiche;
	\item \pkgname{currfile}: per ottenere il nome del file e della cartella di lavoro;
	\item \pkgname{xargs}: per avere più di un parametro opzionale;
	\item \pkgname{environ}: per trasformare comandi in ambienti.\nuovo{vers. 1.1}
\end{enumerate}
Inoltre i seguenti pacchetti sono opzionali, ma raccomandati:
\begin{enumerate}
	\item \pkgname{ifluatex} e \pkgname{ifxetex} per la compilazione con \Hologo{XeLaTeX} e \Hologo{LuaLaTeX} (nel seguito si farà riferimento solo alla compilazione con \hologo{pdfLaTeX})\nuovo{vers. 2.0}\footnote{Al momento il supporto per \Hologo{XeLaTeX} e \Hologo{LuaLaTeX} è molto parziale e alcune tipologie di esercizio non sono utilizzabili.}.
	\item \pkgname{lmodern} and \pkgname{amsfonts}: necessari per un buon output in pdf;
	\item \pkgname{numprint}: per un output migliore dei numeri e per avere formati numerici diversi a seconda del linguaggio;
	\item \pkgname{eurosym}:  per usare la valuta;
	\item \pkgname{icomma}: dal pacchetto \pkgname{ws} per una corretta formattazione delle virgole. Tale pacchetto può essere sostituito per la lingua italiana dal comando \cmd{\IntelligentComma} di \pkgname{babel}: questa opzione è di default nel file di localizzazione \texttt{es-italian.lng} e può essere modificata commentando il comando  \cmd{\IntelligentComma} (o usando il comando \cmd{\NoIntelligentComma})\nuovo{vers. 1.1};
	\item \pkgname{pstricks}, \pkgname{pstricks-add} e \pkgname{auto-pst-pdf} oppure \pkgname{tikz} o altro pacchetto per i grafici\nuovo{vers. 2.0}.
\end{enumerate}
Tutti i pacchetti sono disponibili sia in \Hologo{TeX} Live che in \Hologo{MiKTeX}.

\section{Installazione} Il pacchetto è composto dal file {\tt esami.sty}, da alcuni file di configurazione {\tt *.cfg}, dai file di localizzazione, da 3 template per la compilazione e dalla documentazione. Il file {\tt sty} e i file {\tt cfg} e {\tt lng} devono essere copiati in una cartella dove possano essere trovati da \Hologo{LaTeX} (ad esempio {\tt texmf-local/tex/latex/esami} e in seguito deve essere aggiornato il database.

\section{Come scrivere un esame}
In questa sezione si vedrà come costruire una prova d'esame usando il pacchetto \pkgname{esami}.

\subsection{Il preambolo}
\begin{verbatim}
\documentclass[italian]{article}
\usepackage[<opzioni>]{esami}
\end{verbatim}
Le opzioni sono discusse nella sezione \ref{sec:opzioni}
\begin{verbatim}
\def\numcompiti{10}
\date{2018/04/21}%%% THE DATE IN THE FORMAT YYYY/MM/DD
\def\Data{\longdate}%%% or \shortdate: the date in the heading
\end{verbatim}
Il comando \cmd{\date} è quello solito di \Hologo{LaTeX}, ma la data deve essere scritta nel formato YYYY/MM/DD, mentre il comando \cmd{\numcompiti} serve a definire il numero di versioni che devono essere generate.
Il comando \cmd{\Data}  stamperà la data in formato lungo (D MMMM YYYY \cmd{\longdate}) o corto (D/M/YYYY \cmd{\shortdate}).
\subsection{Il documento}
\begin{verbatim}
\begin{document}
\pagestyle{esame}
%\setcounter{vers}{m}
\end{verbatim}
Il comando \cmd{\pagestyle} è definito in un file di configurazione (si veda la sezione \ref{sec:cfg}) e definisce gli header e i footer.
Il comando commentato \cmd{\setcounter}\{vers\}\{$m$\} serve, ponendo nel preambolo \cmd{\numcompiti} un numero $n$ (maggiore di $m$), a generare le versioni da $m+1$ a $n$.
\begin{verbatim}
  \whiledo{\thevers<\numcompiti}{\stepvers
\end{verbatim}
inizia la routine di compilazione delle varianti che terminerà alla fine del documento.
\begin{verbatim}
\FPeval\seme{round((\thenomefile+\thevers):0)}
%\FPeval\semeex{round(\thenomefile+1-trunc(\thenomefile/(2^31-1):0)*(2^31-1):0)}
\randomi=\seme
\end{verbatim}
genera il seme per i processi di randomizzazione e lo assegna anche a \cmd{\randomi}. \textcolor[rgb]{1.00,0.00,0.00}{\textbf{N.B.} Se il seme è un numero minore di 1, il seme viene inizializzato usando la data e l'ora e quindi due compilazioni daranno esiti diversi.}
\nuovo{vers. 2.2} È possibile ora definire in modo diverso il seme per le permutazioni (\cmd{\seme}) e quello per la scelta degli esercizi (\cmd{\semeex}): l'esigenza è nata dalla richiesta di poter scegliere per ogni compito gli stessi esercizi per tutti gli studenti (\cmd{\semeex} dipende  solo dalla data), ma di poterli permutare in ogni versione.
\begin{verbatim}
\permuta
\testa
\istruzionii
\end{verbatim}
\cmd{\testa}, \cmd{\istruzionii} vengono definiti nel file di configurazione e contengono le istruzioni per la testata e delle eventuali istruzioni per lo svolgimento dell'esame, mentre la macro \cmd{\permuta} permette la randomizzazione dell'ordine degli esercizi.
\begin{verbatim}
\begin{test}[punti]
\begin{questions}
\esercizi{test1,test2,test3,test4}
\begin{esdb}{dbone}
\selectrandomlyn{2}{dbtest1}
\selectrandomlyn{4}{dbtest2}
\end{esdb}
\end{questions}
\end{test}
\end{verbatim}
In questo modo si definisce un ambiente per un test tipicamente con domande a risposta multipla, il comando \cmd{\esercizi} serve per scegliere casualmente gli esercizi dai file indicati e per rimescolarli, l'ambiente \envname{esdb} serve a definire un database (virtuale) di esercizi in cui vengono inseriti con il comando \cmd{\selectrandomlyn}.
\begin{verbatim}
\esercizi{problema1, problema2}
\end{verbatim}
sceglie tra due esercizi a risposta aperta.
\begin{verbatim}
\closevers
}
%%\def\stringasol{}
\end{document}
\end{verbatim}
Termina la routine di compilazione. L'istruzione \verb|\def\stringasol{}| serve a non generare la stringa delle soluzioni se non desiderata. La compilazione produce un file pdf con tutte le varianti richieste.
\nuovo{vers. 2.0} Compilando il file delle soluzioni si ottiene  anche un file \texttt{filename-sol.loe} (loe = list of exercises)  che contiene le label che vengono assegnate agli esercizi scelti, in modo da poterli identificare: infatti ogni esercizio scelto è identificato  da una stringa del tipo \emph{e:numero di versione -file:nome del file-q:numero della domanda in cifre romane}.

\nuovo{vers. 2.1} Al termine del file delle soluzioni vi è la stringa delle soluzioni delle domande a risposta chiusa: di default tale stringa è per ogni versione inserita in un ambiente \envname{minipage}. Se tale formattazione non fosse adatta ai propri scopi (ad esempio se si hanno 40 domande a risposta chiusa le cui risposte non stanno in una pagina) è possibile modificarla adattando i comandi \cmd{\stepverssols} e \cmd{\closeverssols}: nel file di configurazione di esempio sono presenti, commentate, le definizioni per avere una stringa di soluzioni continua.

Durante la compilazione viene controllato che il numero di punti indicato per un test o un esercizio in più parti sia uguale alla somma dei punteggi parziali. \nuovo{vers. 2.1} Tale possibilità può essere esclusa commentando nel file di configurazione la definizione del comando \cmd{\checkpoints}.

\section{Le opzioni del pacchetto}\label{sec:opzioni}
Per usare il pacchetto bisogna usare il solito comando
\cmd{\usepackage}[\meta{options}]\{esami\}. Le opzioni possibili sono:
\begin{itemize}
	\item {\color{blue}{\optname{allowrandomize}}} e {\color{blue}{\optname{norandomize}}}: la prima permette di permutare in modo casuale l'ordine delle risposte nelle domande a risposta chiusa, la seconda di non permutarlo (di default le risposte vengono permutate in modo casuale).
	\item {\color{blue}{\optname{shuffle}}}, {\color{blue}{\optname{shufflerandom}}} e {\color{blue}{\optname{noshuffle}}}: la prime due permettono  di permutare gli esercizi, la prima in modo deterministico se il numero degli esercizi è minore di 9 e casuale se è maggiore, la seconda del tutto  casualmente, la terza di non permutarli (l'opzione di default è \optname{shuffle}).
	\item {\color{blue}{\optname{xyz}}}: Fa caricare un file di configurazione (\texttt{esami-xyz.cfg}) con nome dell'esame, istruzioni, ecc. relative a questo esame. Nel file {\tt esami.sty} sono predefinite alcune opzioni; è possibile caricare altre configurazioni definendole in {\tt esami.sty} o creare un proprio file di configurazione e farlo leggere senza modificare il file {\tt esami.sty}: è sufficiente scrivere un'opzione sconosciuta (ad esempio \verb|math|) e scrivere il file {\tt esami-math.cfg}.
	\item {\color{blue}{\optname{pointsonright}}}: fa apparire la casella con il punteggio sulla destra dell'esercizio. Se l'opzione non è specificata, la casella non appare.
	\item {\color{blue}{\optname{nosolutions}}}: questa opzione genera il compito senza soluzioni negli esercizi a risposta aperta e l'indicazione della risposta corretta in quelli a risposta chiusa (default).
	\item {\color{blue}{\optname{solutions}}}: genera il file delle soluzioni.
	\item {\color{blue}{\optname{noquizsolutions}}}: questa opzione genera il compito senza soluzioni  nelle domande a risposta chiusa (default).\nuovo{vers. 2.0}
	\item {\color{blue}{\optname{quizsolutions}}}: genera il compito con le soluzioni  nelle domande a risposta chiusa.
	\item {\color{blue}{\optname{prova}}}: si usa solo con il file {\tt totale-versioni} (si veda \ref{sec:totale}) e serve per visualizzare tutte le varianti di un esercizio. Fa visualizzare automaticamente le risposte esatte negli esercizi a risposta multipla e la soluzione nei problemi da svolgere.
	\item {\color{blue}{\optname{param}}}: serve per visualizzare le lettere che rappresentano i parametri casuali anziché il valore numerico attribuito. Stampa anche una frase, nella quale sono contenuti il valore iniziale e finale attribuiti ai parametri usati nell'esercizio. Può essere usata solo insieme all'opzione \texttt{prova}.
	\item {\color{blue}{\optname{correzione}}}: stampa solo i testi di tutti gli esercizi, senza soluzioni (funziona solo nel file {\tt totale-versioni}).
	\item  {\color{blue}{\optname{fillb}}}: deprecata, resta per compatibilità con le versioni precedenti. Serve quando si usano esercizi di tipo ``fillin'', ma è consigliato usare il comando \cmd{\fillinproblem} (si veda\ref{par:fillin})\nuovo{vers. 2.0}
	\item {\color{blue}{\optname{twocolumns}}}: per scrivere il testo delle domande a risposta chiusa su due colonne (ma si veda anche \ref{duecolonne}).
	\item  {\color{blue}{\optname{sansserif}}}: usa caratteri sans serif.
	\item {\color{blue}{\optname{autopston}}} e {\color{blue}{\optname{autopstoff}}}: caricano i pacchetti \pkgname{pstricks}, \pkgname{pstricks-add} e \pkgname{auto-pst-pdf} e permettono di compilare il file direttamente con \hologo{pdfLaTeX} (anche se contiene codice di \pkgname{pstricks}). La prima opzione crea e include direttamente nel documento i file delle immagini, la seconda non crea i file delle immagini (e rende più veloce la compilazione)\VerbatimFootnotes
	      \footnote{Per usare \pkgname{auto-pst-pdf} è necessario
		      abilitare \texttt{shell-escape} (\Hologo{TeX} Live) o \texttt{write18} (\Hologo{MiKTeX}) nell'esecuzione di \hologo{pdfLaTeX}.}.\nuovo{vers. 2.0}
	\item {\color{blue}{\optname{language}}}: legge il file di localizzazione es-language.lng (si veda \ref{sec:lng}). Nel file sono contenute le traduzioni delle etichette (esercizio, soluzione,  \dots ), dei messaggi d'errore, delle intestazioni contenute nel file (\texttt{esami-xyz.cfg}). Di default viene caricato il file della lingua italiana. Poiché le opzioni linguistiche hanno lo stesso nome di quelle usate in \pkgname{babel} è possibile passare l'opzione in \cmd{\documentclass}.
\end{itemize}

\section{Gli esercizi}
\subsection{Le varianti}
Ogni esercizio (con tutte le sue varianti) va scritto in un file separato.
\DescribeMacro{\newproblem}
Ogni variante è racchiusa nel comando
\cmd{\newproblem\{\dots \}} (che non ha alcun argomento opzionale).
\begin{esempio}
	\begin{verbatim}
%%%% Questo è il file file1.tex con 2 varianti di un esercizio
\newproblem{Testo della prima variante}
\newproblem{Testo della seconda variante}
\end{verbatim}
\end{esempio}
Il comando \cmd{\newproblem} è una versione molto modificata dell'analogo comando del pacchetto \pkgname{probsoln}.\\[2mm]
\setlength\fboxrule{2pt}
\setlength\fboxsep{2mm}
\fcolorbox{red}{white}{
	\begin{minipage}[c]{\textwidth-2\fboxsep-2\fboxrule}
		È assolutamente necessario che ogni versione degli esercizi sia argomento del comando \cmd{\newproblem}, se così non è o il programma si arresta con un errore o l'output è del tutto imprevedibile.
	\end{minipage}
}
\subsection{L'ambiente test}
\DescribeEnv{test}
L'ambiente \envname{test} consente di scrivere esercizi a risposta multipla o a risposta aperta breve, in cui ciascuno dei quesiti è tratto casualmente da uno dei file nel quale sono contenuti tutti gli esercizi con le rispettive varianti.

L'ambiente viene creato dal comando
\begin{verbatim}
  \begin{test}[punti]
    ...
  \end{test}
\end{verbatim}
\DescribeMacro{punti}
Il parametro opzionale \oarg{punti}  indica il punteggio \textbf{totale} attribuito all'intero gruppo di domande.

\DescribeEnv{questions}
I quesiti del gruppo, nel documento principale, sono racchiusi nell'ambiente \emph{questions} che è una versione modificata dell'ambiente omonimo del pacchetto \pkgname{exerquiz}:
\begin{verbatim}
    \begin{questions}
        ....
    \end{questions}
\end{verbatim}
È possibile inserire all'intero di un unico ambiente \envname{test} più ambienti \envname{questions}. Gli esercizi di ogni gruppo saranno mescolati indipendentemente.
\begin{esempio}
	\begin{verbatim}
\begin{test}
    \begin{questions}
        ....
    \end{questions}
....
    \begin{questions}
        ....
    \end{questions}
\end{test}
\end{verbatim}
\end{esempio}
\DescribeMacro{\esercizi}
All'interno di tale ambiente, i quesiti vengono ``caricati'' in due modi: o con l'ambiente \envname{esdb} che verrà descritto successivamente, o con il comando
\begin{verbatim}
  \esercizi{nome file sorgente 1, nome file sorgente 2,...}
\end{verbatim}
Il parametro obbligatorio è il nome di ciascuno degli esercizi
che si vogliono inserire nel test, separati da una virgola\footnote{In seguito
	verranno introdotti altri comandi simili per il caricamento di esercizi}.

È possibile sia inserire tutti gli esercizi con un unico comando, sia usare
più comandi \cmd{\esercizi} o \cmd{\estraies} o \cmd{\randestraies} (si veda \ref{estraies} e \ref{randestraies}).

\label{duecolonne}Questa possibilità è utile ad esempio se si vuole che ci siano esercizi da due
sottoinsiemi diversi (5 esercizi sui limiti scelti tra 7 e 3 esercizi  sulle derivate scelti tra 5) o se si vuole per esigenze di impaginazione avere alcuni esercizi su due colonne ed altri su una colonna: in tale caso
si deve  introdurre la parte che deve essere su due colonne con
\cmd{\begin\{multicols\}\{2\}} e concluderla con \cmd{\end\{multicols\}}. \textbf{Non} si usa l'opzione \optname{twocolumns}.
\begin{esempio}
	\begin{verbatim}
  \begin{test}[punti]
  \begin{multicols}{2}
  \esercizi{es1,es2,es3}
  \end{multicols}
  \esercizi{es4,es5,es6}
  \end{test}
\end{verbatim}
\end{esempio}
In questo modo gli esercizi \texttt{es1,es2,es3} sono formattati su due colonne mentre gli esercizi \texttt{es4,es5,es6} sono formattati su una colonna.

\DescribeEnv{esdb}
\DescribeMacro{selectrandomlyn}

L'ambiente \envname{esdb}\marg{nome db} definisce un database virtuale di esercizi di nome \emph{nome db} (il nome del database \textbf{deve} essere diverso dal nome di ogni altro file di esercizi, di ogni altro database e del file master, poiché è il nome di un file che viene scritto in fase di compilazione). All'interno di tale ambiente possono essere scelti uno o più esercizi da uno o più file con i comandi \cmd{\selectrandomlyn}\marg{numero esercizi}\marg{nome file}, dove \emph{nome file} indica il file da cui estrarre gli esercizi e \emph{numero esercizi} indica quanti esercizi devono essere estratti (se il numero di esercizi è ``all'' oppure è maggiore del numero di varianti presenti nel file vengono scelti tutti gli esercizi)\nuovo{vers. 2.0}.

L'ambiente genera un file \texttt{nome db.tex} che contiene i riferimenti agli esercizi scelti. Alla chiusura dell'ambiente gli esercizi vengono mandati automaticamente in output mediante il comando \cmd{\esercizidb}\marg{nome db} (da non dare esplicitamente). Ovviamente se si usano più ambienti \envname{esdb} ad ognuno deve essere assegnato un nome diverso.

Anche questo ambiente è una versione modificata di un analogo ambiente presente nel pacchetto \pkgname{probsoln} e, al momento non funziona né con \hologo{XeLaTeX} né con \hologo{LuaLaTeX}.

Nel file degli esercizi, la sintassi da usare all'interno di
\cmd{\newproblem} è la seguente:
\begin{verbatim} \item \PTs{punteggio}
...testo\dots
\begin{answers}{numero colonne}
    \bChoices[random]
\Ans0 risposta errata \eAns
\Ans0 risposta errata \eAns
\Ans1 risposta esatta \eAns
        \eFreeze
\Ans0 nessuna delle precedenti \eAns
    \eChoices
\end{answers}
\begin{solution}
Soluzione
\end{solution}
  \end{verbatim}
nella quale:
\begin{itemize}
	\item {\color{blue}{\begin{verbatim}
\item \PTs{punteggio}
\end{verbatim}}}
	      \DescribeMacro{\PTs}
	      introduce una domanda con punteggio indicato in \cmd{\PTs} (può essere anche un numero decimale e il separatore può essere la virgola).

	\item {\color{blue}{\begin{verbatim}
\begin{answers}{numero colonne}
    \bChoices[random]
    ...
    \eChoices
\end{answers}
\end{verbatim}}}
	      \DescribeEnv{answers}
	      \DescribeMacro{\Ans0}
	      \DescribeMacro{\Ans1}
	      \DescribeMacro{\bChoices}
	      \DescribeMacro{\eChoices}
	      \DescribeMacro{\eFreeze}
	      introduce le risposte disposte sul numero di colonne specificate. Le risposte vengono permutate in modo casuale  solo se è specificata l'opzione (\optname{random}).

	\item {\color{blue}{\cmd{\Ans0} }} introduce una risposta errata
	\item {\color{blue}{\cmd{\Ans1}}} introduce la risposta esatta \footnote{Se nella risposta appare il segno di tabulazione \& è necessario racchiudere la risposta tra parentesi graffe.}
	\item {\color{blue}{\cmd{\eFreeze}}} introduce (se si vuole) una o più risposte che non saranno in ordine casuale.
\end{itemize}
È possibile aumentare lo spazio tra l'etichetta dell'item e il testo della risposta impostando la lunghezza \verb|\mylabelsep|.

\DescribeEnv{solution}
L'ambiente \envname{solution} può essere inserito o meno \emph{dopo} l'ambiente \envname{answers} e permette di visualizzare, usando l'opzione \optname{quizsolutions}, le soluzioni dell'esercizio.\nuovo{vers. 2.0}
\begin{esempio}
	\begin{verbatim}
\newproblem{
\item \PTs{1} Le soluzioni dell'equazione
\[x^2-5x+6=0\]
sono:
\begin{answers}{2}
    \bChoices[random]
\Ans0 $x=3$ e $x=-2$ \eAns
\Ans0 $x=-3$ e $x=-2$  \eAns
\Ans1 $x=3$ e $x=2$  \eAns
        \eFreeze
\Ans0 nessuna delle precedenti \eAns
    \eChoices
\end{answers}
\begin{solution}
Le soluzioni dell'equazione di secondo grado sono date dalla formula
$x_{1,2}=\dfrac{5\pm\sqrt{5^2-4 \cdot 6}}{2}$.
\end{solution}
}

\newproblem{
\item \PTs{1} Le soluzioni dell'equazione
\[x^2+5x+6=0\]
sono:
\begin{answers}{2}
    \bChoices[random]
\Ans0 $x=3$ e $x=-2$ \eAns
\Ans1 $x=-3$ e $x=-2$  \eAns
\Ans0 $x=3$ e $x=2$  \eAns
        \eFreeze
\Ans0 nessuna delle precedenti \eAns
    \eChoices
\end{answers}
}
  \end{verbatim}
\end{esempio}

Oltre alle domande a risposta multipla è possibile inserire nell'ambiente \envname{test} altri tipi di domande che verranno descritti nella sezione \ref{sec:altri_esercizi}, ma se si usano esercizi di tipo \texttt{fill-in} se ci sono più spazi bianchi da riempire la stringa delle soluzioni avrà un utilità minore poiché non seguirà la numerazione delle risposte.

\textbf{N.B.} Di default ogni domanda del test è inserita in un ambiente \envname{minipage}.  Nel file di configurazione di esempio ci  sono alcune righe commentate che permettono di avere  le domande fuori da tale ambiente.

\subsection{Gli ambienti problem e problem*}
\DescribeEnv{problem}
\DescribeEnv{problem*}
Servono per scrivere problemi con risposte aperte. Si usano all'interno del file che contiene le varianti dell'esercizio, annidati nel comando \cmd{\newproblem}, con la seguente sintassi:
\begin{verbatim}
\begin{problem}
  ...
\end{problem}
\end{verbatim}
se si sceglie di scrivere un esercizio a risposta aperta in una sola parte; con la sintassi
\begin{verbatim}
\begin{problem*}
  ...
\end{problem*}
\end{verbatim}
se invece si sceglie di scrivere un esercizio a risposta aperta in più parti. Il codice di questi ambienti è derivato, con molte modificazioni, dal codice dell'ambiente \envname{exercise} del pacchetto \pkgname{exerquiz} \footnote{L'ambiente \envname{exercise} è rimasto e può essere usato come template per la costruzione di altri ambienti come nuovi esercizi, esempi o altro.}.
\paragraph{Esercizio senza parti}
È introdotto, come si è detto, dall'ambiente \envname{problem}.
\begin{verbatim}
\begin{problem} [punteggio]
........Testo..........
\begin{solution}[spazio_soluzione]
.\dots testo soluzione ......
\end{solution}
\end{problem}
  \end{verbatim}
\DescribeEnv{solution}
In \oarg{punteggio} va il punteggio dell'esercizio, in \oarg{spazio\_soluzione} va l'\emph{eventuale} spazio bianco che deve essere lasciato per la soluzione.
\paragraph{Esercizio in più parti}
\DescribeEnv{parts}
È introdotto dall'ambiente \envname{problem*}.
\begin{verbatim}
\begin{problem*} [punteggio]
....testo....
\begin{parts}
\item \PTs{punteggio della parte}
....testo....
   \begin{solution}[spazio_soluzione]
    .\dots testo soluzione ......
    \end{solution}
\item \PTs{punteggio della parte}
.....
\end{parts}  \end{problem*}
  \end{verbatim}
Con \cmd{\PTs\{punteggio della parte\}} si indica il punteggio della singola parte.
\paragraph{Esercizi in una minipage}
\DescribeEnv{problemmp}
\DescribeEnv{problemmp*}
Esistono anche gli ambienti \envname{problemmp} e \envname{problemmp*} \nuovo{vers. 2.1} che sono del tutto identici agli ambienti \envname{problem} e \envname{problem*},  ma inseriscono tutto il testo dell'esercizio in un ambiente \envname{minipage}.

\subsection{Altre tipologie di esercizi}\label{sec:altri_esercizi}
Sono state definite alcune nuove tipologie di esercizio:
\paragraph{fillin:} \label{par:fillin}\DescribeMacro{\fillin}
serve per creare esercizi ``a riempimento''. Parte del testo viene lasciata vuota e deve essere riempita dallo studente. Può essere usato anche per creare esercizi a risposta aperta breve. Anche questo tipo di esercizio è simile ad un tipo di esercizio introdotto da D.P. Story nel pacchetto \pkgname{eqexam}.

Questi esercizi sono introdotti con una sintassi leggermente diversa e nel testo sono definiti o dal comando \cmd{\newfillinproblem} o da \cmd{\newproblem}\cmd{\fillinproblem}\texttt{\{testo del problema\}}. \nuovo{vers. 2.0}
La sintassi è
\begin{verbatim}
  \fillin[u|e|b]{larghezza dello spazio}{risposta}
\end{verbatim}
I due parametri obbligatori sono la \marg{larghezza dello spazio} da lasciare, che deve essere espressa con una lunghezza (cm, pt, ecc.) e la \marg{risposta} esatta (parola o numero) che lo studente dovrebbe inserire (che verrà stampata solo nel file delle soluzioni).

Il parametro opzionale definisce come deve essere segnalato lo spazio in cui inserire la risposta: \emph{u} (\emph{underlined}), che è l'opzione di default, fa sì che lo spazio sia evidenziato mediante una riga su cui va inserita la risposta, \emph{e} (\emph{empty}) crea uno spazio vuoto (non evidenziato in alcun modo), \emph{b} (\emph{boxed}) crea uno spazio circondato da un riquadro.

Se la risposta contiene espressioni matematiche, deve essere inserita esplicitamente tra \$\ anche se il comando \cmd{\fillin} è già contenuto in un ambiente matematico.

%All'interno del comando \cmd{\fillin} (nello spazio per la risposta) non è possibile usare i comandi \cmd{\sempli} o \cmd{\semplix} (si veda la sezione \ref{sec:comandi}).

Questo tipo di esercizio non può al momento essere usato né con \Hologo{XeLaTeX} né con \Hologo{LuaLaTeX}
\paragraph{domanda:}\DescribeEnv{problema} questo ambiente deve contenere il testo dell'esercizio (non le soluzioni). Viene usato negli ambienti \envname{problema} e \envname{problema*}, con l'opzione \optname{solutionsonly} non viene stampato  il testo degli esercizi, ma solo la soluzione. Nelle versioni precedenti del pacchetto per lo stesso scopo veniva usato un altro ambiente.
\paragraph{risposta:}\DescribeEnv{risposta} serve per creare, in esercizi a risposta aperta lunga, lo spazio per inserire la risposta in un box o su righe.

La sintassi del comando è
\begin{verbatim}
  \begin{risposta}{b|l}{spazio verticale}
  \end{risposta}
\end{verbatim}
Il primo parametro definisce se lo spazio per la risposta deve essere riquadrato (opzione \emph{b}, di default) oppure diviso in righe su cui andrà scritta la risposta (opzione \emph{l}). Il secondo parametro definisce invece l'altezza dello spazio per la risposta (in cm se con opzione \emph{b}, in numero di righe se con opzione \emph{l}) \paragraph{matching:}\DescribeMacro{\matching} è basato su un'idea del pacchetto \pkgname{examdesign} \cite{examdesign}. Serve per creare esercizi in cui le parole o formule contenute su due colonne vanno abbinate dallo studente in modo corretto.

\DescribeMacro{\pair}Le coppie vengono definite dal comando \cmd{\pair}:
\begin{verbatim}
  \pair{nome 1}{nome 2}
\end{verbatim}
che va inserito tante volte quanti sono i nomi o le formule da abbinare.

L'elenco dei nomi (mischiati in ordine casuale su ciascuna colonna) viene visualizzato con il comando \cmd{\matching}.

\begin{esempio}

	\begin{minipage}{.4\textwidth}
		\begin{verbatim}
  \pair{Regno Unito}{Londra}
  \pair{Francia}{Parigi}
  \pair{Italia}{Roma}
  \pair{Germania}{Berlino}
  \pair{Grecia}{Atene}
  \matching
\end{verbatim}
	\end{minipage}
	\begin{minipage}{.4\textwidth}
		\begin{center}
			\begin{tabular}{l l l }
				\rule{1cm}{1pt} & Grecia      & (A) Parigi  \\
				\rule{1cm}{1pt} & Regno Unito & (B) Berlino \\
				\rule{1cm}{1pt} & Francia     & (C) Roma    \\
				\rule{1cm}{1pt} & Italia      & (D) Londra  \\
				\rule{1cm}{1pt} & Germania    & (E) Atene
			\end{tabular}
		\end{center}
	\end{minipage}
\end{esempio}
Nelle soluzioni viene invece visualizzato l'abbinamento corretto.

Anche questo esercizio non funziona né con \Hologo{XeLaTeX} né con \Hologo{LuaLaTeX}.
\paragraph{tabella:}\DescribeEnv{tabella} serve per creare esercizi con più risposte aperte incolonnate.

La sintassi è
\begin{verbatim}
  \begin{tabella}[numero colonne sempre visibili]
  {allineamento colonne visibili}{allineamento colonna nascosta}
     \dots &  \dots \cr
  \end{tabella}
\end{verbatim}
Il primo parametro (il cui valore di default è 2) indica il numero di colonne della tabella il cui contenuto deve essere visibile anche nel testo dell'esercizio (e non solo nella soluzione), mentre è possibile avere solo una colonna il cui contenuto è invisibile nel testo, ma appare nella soluzione. Il secondo parametro consente di scegliere l'allineamento delle colonne il cui contenuto è sempre visibile e il terzo l'allineamento della colonna invisibile.
Come per le domande a risposta chiusa, le risposte che contengono il carattere di tabulazione \&\ devono essere racchiuse tra parentesi graffe.

Questo tipo di esercizio  funziona con \Hologo{XeLaTeX}, ma non con \Hologo{LuaLaTeX}.
\begin{esempio}
	Con il codice
	\begin{verbatim}
\begin{center}
\renewcommand\arraystretch{3}
\begin{tabella}[1]{r}{c}
\hline
 Il dominio della funzione è & $D_f=(-\infty;2]$\cr
 \hline
 L'insieme immagine della funzione è & $Im(f)=(-\infty,0]$ \cr
 \hline
  \end{tabella}
\end{center}
      \end{verbatim}

	si ottiene il seguente risultato
	\renewcommand\arraystretch{3}
	\begin{center}
		\DeleteShortVerb{\|}
		\MakeShortVerb{\!}
		\begin{tabular}{r|c}
			\hline
			Il dominio della funzione è         & \color{red}{$D_f=(-\infty;2]$}   \\
			\hline
			L'insieme immagine della funzione è & \color{red}{$Im(f)=(-\infty,0]$} \\
			\hline
		\end{tabular}
	\end{center}

\end{esempio}
\paragraph{workarea:}\DescribeEnv{workarea} non è una tipologia di esercizi, ma serve a creare  un'area di lavoro, cioè uno spazio bianco sul foglio in cui lo studente possa scrivere.  La sintassi è
\begin{verbatim}
\begin{solution}{lunghezza}
  \begin{workarea}[larghezza]{lunghezza}
  \end{workarea}
  \end{solution}
\end{verbatim}
La lunghezza dello spazio soluzione e della workarea dovrebbero essere uguali, in caso contrario il testo presente nella workarea
viene posizionato male nello spazio della soluzione, sovrapponendosi al testo dell’esercizio
se la sua lunghezza è maggiore di quella della soluzione.  La larghezza della workarea è opzionale e di default è uguale alla larghezza del testo. A differenza dell’ambiente \envname{solution}, nella workarea è possibile inserire testo, grafici, ecc.; ad esempio, è possibile inserire degli assi
coordinati per disegnare un grafico.

\subsection{Altri comandi}
Il pacchetto definisce altri due comandi utilizzati nel file {\tt totale-versioni} (si veda \ref{sec:totale})
\begin{itemize}
	\item {\color{blue}{\cmd{\selectallproblems\{\textbackslash esercizio\}}}}:\DescribeMacro{\selectallproblems}\ si usa all'interno del file  che serve per visualizzare tutte le varianti di un esercizio, con i parametri calcolati oppure no.
	\item {\color{blue}{\cmd{\esercizio}}}:\DescribeMacro{\esercizio}\ si usa all'interno del file che serve per visualizzare tutte le varianti di un esercizio e serve per definire il nome dell'esercizio sul quale si sta lavorando, che verrà usato nel comando \cmd{\selectallproblems} visto in precedenza e verrà stampato come titolo del file pdf prodotto. La sintassi per definire il nome di un esercizio è \cmd{\def\textbackslash esercizio\{nome\}}.
\end{itemize}
Inoltre il comando \cmd{\Acapo} \DescribeMacro{\Acapo} equivalente di default a \verb|\par| separa gli esercizi; questo comando può essere ridefinito ad esempio in \cmd{\newpage} così da avere un esercizio per pagina (utile per studenti DSA o ipovedenti). \nuovo{vers. 2.0}

\section{I comandi per lavorare con i parametri e con le liste}
\subsection{Comandi per lavorare con i parametri (casuali)} \label{sec:comandi}
Sono stati definiti alcuni comandi per lavorare con i parametri (casuali).

Questi comandi si basano sul pacchetto \pkgname{fp} \cite{fp}, che permette di eseguire calcoli anche molto complessi all'interno di un documento \Hologo{LaTeX}.
Il comando fondamentale che serve per definire un parametro è   {\color{blue}{\cmd{\FPsetpar}\oarg{seme}\marg{nome-parametro}\marg{primo valore}\marg{ultimo valore}\oarg{{valori esclusi}}}} che serve per dichiarare i parametri casuali all'interno di un esercizio (a risposta chiusa o aperta). Il parametro avrà nome \cmd{\nome-parametro} e varierà tra il primo valore e l'ultimo valore (inclusi).\DescribeMacro{\FPsetpar} \    Il parametro sarà un numero intero\footnote{Anche se è possibile definire parametri razionali o (pseudo)reali, come nel pacchetto \pkgname{rangen} \cite{rangen} abbiamo preferito restringere la scelta al caso intero e ottenere gli altri casi operando sui parametri.}.
Il parametro opzionale \oarg{seme}, serve a imporre un seme diverso per la generazione del numero casuale.  Il valore di default del parametro è \cmd{\seme} ed è definito a partire dalla data dell'esame e dal numero della versione.
È possibile escludere dalla scelta uno o più valori (ultimo parametro tra parentesi quadre). Se i valori sono più di uno devono essere posti tra parentesi graffe e separati tra virgole; tra i valori esclusi ci possono essere anche altri parametri purché già definiti in precedenza (anche il primo e l'ultimo  valore possono essere parametri: in questo caso bisogna prestare attenzione al fatto che il primo valore deve essere minore dell'ultimo). \DescribeMacro{\maxLoopLimit}Il meccanismo usato per soddisfare tali condizioni consiste nel ripetere la generazione più volte: il numero massimo di ripetizioni è determinato dal parametro \cmd{\maxLoopLimit}, il cui valore di default è 10, ma che è definibile anche in fase di compilazione.
\begin{esempio}
	\begin{verbatim}
  \FPsetpar{a}{2}{10}
\end{verbatim}
	crea una variabile \cmd{\a} che può assumere un valore casuale tra $2$ e $10$, in questo caso, il seme è quello stabilito nel preambolo del documento.
	I comandi
	\begin{verbatim}
\FPsetpar{a}{2}{10}[3]
\FPsetpar{b}{4}{12}[{\a,6}]
\end{verbatim}
	creano due variabili \cmd{\a} (che può assumere un valore casuale tra 2 e 10, escluso 3) e \cmd{\b} (che può assumere un valore tra 4 e 12,
	escluso 6 e il valore già assegnato ad \cmd{\a}).
\end{esempio}

Sui parametri definiti è possibile operare come su numeri e sono stati definiti comandi che permettono di operare su tali parametri mostrando il risultato numerico o le operazioni in forma parametrica.

\begin{itemize}
	\item {\color{blue}{\cmd{\FPsv}\oarg{numero di cifre decimali}\marg{parametro/operazione su parametri}}}:\DescribeMacro{\FPsv}\ serve ad eseguire operazioni su parametri e restituirne il valore numerico (con il numero prescelto di cifre decimali, eliminando gli zeri superflui) o stampare l'operazione eseguita (se si sceglie l'opzione \optname{param} nel pacchetto esami).

	      \begin{esempio}
		      \begin{center}
			      \begin{tabular}{l|l|l}
				      \color{blue}{Istruzione} & \color{blue}{Risultato numerico} & \color{blue}{Opzione \texttt{param}} \\
				      \hline
				      \hline
				      \verb|\FPsv{2*k+1}|   & $5$                              & $2*k+1$                              \\
				      \verb|\FPsv[2]{(2*k+1)/2}|   & $2.50$                           & $(2*k+1)/2$                          \\
			      \end{tabular}
		      \end{center}
	      \end{esempio}
	      Le principali caratteristiche del comando \cmd{\FPsv} sono (negli esempi, $k=2$):
	      \begin{itemize}
		      \item le operazioni devono essere sempre indicate in modo esplicito
		            \begin{esempio}
			            \begin{center}
				            \begin{tabular}{lr}
					            \verb!$\FPsv{2*k}$! & $4$ \\
				            \end{tabular}
			            \end{center}
		            \end{esempio}
		      \item in via automatica, ogni operazione viene racchiusa tra parentesi tonde. La parentesi non viene visualizzata quando si vuole il risultato numerico, mentre lo è con l'opzione \optname{param}
		            \begin{esempio}
			            \begin{center}
				            \begin{tabular}{l|l|l}
					            \color{blue}{Istruzione} & \color{blue}{Risultato numerico} & \color{blue}{Opzione \texttt{param}} \\
					            \verb|$\FPsv{2*k+1}x$|   & $5x$                             & $(2*k+1)x$
				            \end{tabular}
			            \end{center}
		            \end{esempio}
		      \item Si possono usare i seguenti simboli per le operazioni: \verb|+,-,*,/,^|
		      \item Occorre prestare attenzione al fatto che il pacchetto \pkgname{fp} non può gestire potenze con base negativa
	      \end{itemize}

	\item {\color{blue}{\cmd{\FPval}\marg{nome}\oarg{numero di cifre decimali}\marg{parametro/operazione su parametri}}}:\DescribeMacro{\FPval}\
	      assegna a \marg{nome} il valore dell'operazione  arrotondato (è il comando \cmd{\FPeval} di \pkgname{fp} modificato) o stampare l'operazione eseguita se si sceglie l'opzione \optname{param} nel pacchetto esami, come  con \cmd{\FPsv}, il risultato viene approssimato al numero di cifre decimali indicato (di default è un intero) eliminando gli zeri superflui.\nuovo{vers. 2.0}
	      \begin{esempio}
		      Sia $k=2$. Il codice
		      \begin{verbatim}
  \FPsetpar{k}{1}{3}
    \FPval{a}{2*k+1}
    \FPsetpar{b}{2}{20}[\a]
  \end{verbatim}
		      genera una variabile \cmd{\b} che assume un valore casuale tra $2$ e $20$, escluso (in questo caso) il valore $5$. Nella versione parametrica appare invece una stringa di questo tipo (per quanto riguarda la variabile \cmd{\b})
		      \begin{center}
			      Il parametro $b$ varia da $2$ a $20$. $b \neq  (2*k+1)$. Il seme vale 209.
		      \end{center}
	      \end{esempio}
	\item {\color{blue}{\cmd{\sempli}\marg{num}\marg{den}}}:\DescribeMacro{\sempli}\ serve per scrivere delle frazioni in cui il numeratore o il denominatore contengono parametri e che potrebbero dover essere ridotte ai minimi termini.
	      All'interno del comando \cmd{\sempli} non si deve usare \cmd{\FPsv}.
	      \begin{esempio}

		      Se $k=1$:
		      \begin{center}
			      \begin{tabular}{lr}
				      \verb!$\sempli{2*k}{3*k+1}$! & $ \frac12$ \\[2mm]
				      \hline                               \\
				      \verb!$\frac{\FPsv{2*k}}{\FPsv{3*k+1}}$! & $\frac24$  \\
			      \end{tabular}
		      \end{center}
	      \end{esempio}
	      Nel file di \texttt{log} è possibile vedere se e in quali esercizi il risultato di tale operazione è uguale a $1$ o $-1$ (si veda sotto).
	\item {\color{blue}{\cmd{\semplix}\marg{num}\marg{den}}}:\DescribeMacro{\semplix}\ serve per scrivere delle frazioni in cui il numeratore o il denominatore contengono parametri e che potrebbero dover essere ridotte ai minimi termini, ma nelle quali il risultato pari ad $1$ non deve apparire (ad esempio perché davanti ad una incognita).

	      Il funzionamento è identico a quello del comando \cmd{\sempli}.

	      Il comando può essere utilizzato ponendo il denominatore uguale ad 1 anche per la formattazione di coefficienti affinché non appaia il valore $1$ e il valore $-1$ appaia come $-$ (segno meno).
	      \begin{esempio}

		      Se il parametro $k$ assume valore $2$:
		      \begin{center}
			      \begin{tabular}{lr}
				      \verb|$\FPsv{k-1}x$| & $1x$ \\[2mm]
				      \hline                         \\
				      \verb!$\semplix{k-1}{1}x$! & $x$  \\[2mm]
				      \hline                         \\
				      \verb|$\semplix{1-k}{1}x$| & $-x$ \\[2mm]
				      \hline                         \\
				      \verb|$\semplix{2*k}{k+2}x$| & $x$  \\
			      \end{tabular}
		      \end{center}
	      \end{esempio}
	\item {\color{blue}{\cmd{\esempli}\marg{num}\marg{den}}}:\DescribeMacro{\esempli}\ serve per scrivere delle frazioni in cui il numeratore o il denominatore contengono parametri e che potrebbero dover essere ridotte ai minimi termini, ma nelle quali il risultato pari ad $1$ non deve apparire, ma deve apparire esplicitamente il valore $-1$ (ad esempio per gli esponenti).

	      Il funzionamento è identico a quello del comando \cmd{\sempli}.

	      Il comando può essere utilizzato ponendo il denominatore uguale ad 1 anche per la formattazione di esponenti affinché non appaia il valore $1$ e il valore $-1$ appaia come $-1$.
	      \begin{esempio}

		      Se il parametro $k$ assume valore $2$:
		      \begin{center}
			      \begin{tabular}{lr}
				      \verb|$x^{\FPsv{k-1}}$| & $x^1$    \\[2mm]
				      \hline                             \\
				      \verb|$x^{\esempli{k-1}{1}}$| & $x$      \\[2mm]
				      \hline                             \\
				      \verb|$x^{\esempli{1-k}{1}}$| & $x^{-1}$
			      \end{tabular}
		      \end{center}
	      \end{esempio}
	\item {\color{blue}{\cmd\sempliz\marg{num}\marg{den}}}:\DescribeMacro{\sempliz}\ serve per scrivere delle frazioni in cui il numeratore o il denominatore contengono parametri e che potrebbero dover essere ridotte ai minimi termini e che possono assumere il valore $0$ (ad esempio nelle risposte). Mentre con gli altri comandi il risultato $0$ dà luogo a un \textbf{errore} e al blocco della compilazione, con il comando \cmd{\sempliz} viene scritto il risultato $0$.

	      Il funzionamento è identico a quello del comando \cmd{\sempli}.
	\item {\color{blue}{\cmd{\simpsqrt}\marg{ind}\marg{rad}}}:\DescribeMacro{\simpsqrt}\ serve per portar fuori da una radice tutti i fattori possibili. I fattori portati fuori dalla radice non possono essere semplificati con altri (ad esempio, se la radice è al numeratore di una frazione, non è possibile eseguire eventuali semplificazioni tra numeratore e denominatore). Il primo parametro obbligatorio, \marg{ind}, è l'indice della radice; il secondo, \marg{rad}, il radicando. Il primo può contenere un numero o un parametro; il secondo un numero, un parametro  o un'operazione su parametri (anche in questo caso non si deve usare all'interno \cmd{\FPsv}).
	      \begin{esempio}

		      Se  $a$ vale $2$ e $b$ vale $1$

		      \begin{tabular}{lr}
			      \verb|$\simpsqrt{2}{a^2+4*b}$| & $2\sqrt{2}$
		      \end{tabular}
	      \end{esempio}
	\item {\color{blue}{\cmd{\RandS}}}:\DescribeMacro{\RandS}\ serve per attribuire un segno casuale ($+$ o $-$) ad un numero. Il comando è simile a quello del pacchetto \pkgname{rangen}.
	\item {\color{blue}{\cmd{\FPsignpol}\marg{espressione1}\marg{espressione2}}}:\DescribeMacro{\FPsignpol}\ restituisce il valore di ``espressione1''  con il suo segno moltiplicato per ``espressione2'': è utile, ad esempio, se ``espressione1'' è il coefficiente di un polinomio. Se ``espressione2'' è vuoto il comando restituisce il valore di ``espressione1'' con il suo segno (contributo di Hjalmar Basile). \nuovo{vers. 2.1}
	      \begin{esempio}

		      Se  $a$ vale $2$ e $b$ vale $-1$

		      \begin{tabular}{lr}
			      \verb|$x^2\FPsignpol{a+4*b}{x}-2$| & $x^2-2x-2$
		      \end{tabular}

		      Se  $a$ vale $2$ e $b$ vale $1$

		      \begin{tabular}{lr}
			      \verb|$x^2\FPsignpol{a+4*b}{x}-2$| & $x^2+6x-2$
		      \end{tabular}
	      \end{esempio}
\end{itemize}
\subsection{Comandi per la scelta da una lista }
Oltre al comando \cmd{\esercizi} già visto esistono altri comandi per la scelta di esercizi da una lista o, più in generale, di oggetti da una lista.

Il primo comando permette di scegliere casualmente $n-m$ elementi di una lista
\DescribeMacro{\estrai}.\  Il comando \cmd{\estrai}\oarg{m}\marg{lista}\marg{nome} è il comando utente per estrarre gli elementi
dalla lista \marg{lista} escludendone \emph{m}. Gli elementi estratti avranno nome \cmd{\nomei}, \cmd{\nomeii}, \dots.
Gli elementi della lista devono essere separati da virgole.
\begin{esempio}

	Con il comando \cmd{\estrai[1]\{insiemi,logica,potenze\}\{alpha\}} si scelgono 2 elementi dell'insieme e questi due elementi si chiameranno \cmd{\alphai} e \cmd{\alphaii}. Se questi nomi corrispondono a nomi di file di esercizi è possibile inserire nella lista di file argomento del comando \cmd{\esercizi} anche \cmd{\alphai} e \cmd{\alphaii}.
\end{esempio}
\DescribeMacro{\randestrai}.\  Il comando \cmd{\randestrai}\oarg{m}\marg{lista}\marg{nome} è simile al comando \cmd{\estrai}, ma l'estrazione degli elementi è completamente aleatoria. \nuovo{vers. 2.1}

\DescribeMacro{\estraialfa} Il comando \cmd{\estraialfa}\marg{m}\marg{lista}\marg{nome} estrae \marg{m} oggetti casuali dalla lista
\marg{lista} mantenendo l'ordine fissato. Gli elementi estratti avranno nome \cmd{\nomei}, \cmd{\nomeii}, \dots.
Gli elementi della lista devono essere separati da virgole.
\begin{esempio}

	Con il comando \cmd{\estraialfa[2]\{a,b,c,d\}\{alpha\}} si scelgono 2 elementi dell'insieme, mantenendo l'ordine
	alfabetico e questi due elementi si chiameranno \cmd{\alphai} e \cmd{\alphaii}.
\end{esempio}
\DescribeMacro{\estraies} \label{estraies}  Il comando \cmd{\estraies}\oarg{m}\marg{lista} funziona come il comando \cmd{\estrai}, ma esclusivamente su una lista di esercizi. Una volta effettuata l'estrazione, li stampa come il comando \cmd{\esercizi}.
\DescribeMacro{\randestraies} \label{randestraies}  Il comando \cmd{\randestraies}\oarg{m}\marg{lista} funziona come il comando \cmd{\randestrai}, ma esclusivamente su una lista di esercizi. Una volta effettuata l'estrazione, li stampa come il comando \cmd{\esercizi}.

\section{I file ausiliari}
\subsection{Il file di localizzazione}\label{sec:lng}
Al momento sono presenti le localizzazioni in italiano (default), inglese (UK), inglese (US), francese, spagnolo (contributo di Maria Hernandez Cifre), tedesco (contributo di Kerstin von Kirschhausen), serbo con alfabeto latino (contributo di Dusko Latas), greco (contributo di Sotiris Hasapis). Usando la lingua greca (e forse altre localizzazioni in caratteri non latini) è necessario caricare i pacchetti \pkgname{fontenc}, \pkgname{inputenc} e \pkgname{babel} prima del caricamento del pacchetto \pkgname{esami}\footnote{L'opzione \optname{greek} prevede al momento l'utilizzo dell'opzione \optname{iso-8859-7} per il pacchetto \pkgname{inputenc}}. In questo file possono venire caricati  anche alcuni pacchetti dipendenti dalla localizzazione, quali \pkgname{numprint}, \pkgname{geometry}, ecc. e vengono definiti i comandi \cmd{\shortdate} e \cmd{\longdate} per esprimere la data.
\textcolor[rgb]{1.00,0.00,0.00}{\textbf{N.B.:} È nota un'incompatibilità tra  il pacchetto \pkgname{babel} per la lingua francese (che non è comunque necessario per la localizzazione) e il pacchetto \pkgname{fp}: per ovviare a tale incompatibilità  è sufficiente usare il comando \cmd{\shorthandoff\{:\}} subito dopo \cmd{\begin\{document\}}.}
\subsection{Il file di configurazione}\label{sec:cfg}
Il file di configurazione \texttt{esami-xyz.cfg} contiene varie definizioni tra cui la testata (comando \cmd{\testa}), il piè di pagina, la formattazione della stringa delle soluzioni, lo stile di pagina, le istruzioni per l'esame.
\subsection{I file \texttt{master} e \texttt{master-sol}}
Questi due file differiscono solo perché il secondo mostra le soluzioni e contengono le istruzioni per generare effettivamente la prova d'esame.  \textbf{I file vanno rinominati prima della compilazione}: in caso contrario la compilazione si arresta con un messaggio di errore. In entrambi è necessario indicare la data (comando \cmd{\date}) in formato YYYY/MM/DD, il numero di compiti da generare (comando \cmd{\numcompiti}), e, ovviamente, gli esercizi. Il tema d'esame può essere diviso in più parti e in  ognuna si può usare uno o più degli ambienti introdotti e uno o più comandi per la stampa degli esercizi.

Nel file possono essere definiti anche il numero massimo di ripetizioni che il comando \cmd{\FPsetpar} deve eseguire per cercare di soddisfare le condizioni poste (comando \cmd{\maxLoopLimit}) e il meccanismo di calcolo del seme iniziale per la generazione dei numeri casuali (comando \cmd{\seme}).

È anche possibile definire il nome delle parti in cui è diviso il tema d'esame.
\subsection{Il file \texttt{totale-versioni}}\label{sec:totale}
Il file \texttt{totale-versioni} serve per generare tutte le varianti di un esercizio. Con questo file il pacchetto ha sempre l'opzione \optname{prova} e può essere definita l'opzione \optname{param} per generare la versione parametrica degli esercizi.

Al suo interno si deve usare un solo comando, \cmd{\def \textbackslash esercizio\{nome\}}, che deve contenere il nome dell'esercizio da compilare. Se si compila la versione parametrica, i parametri e i loro intervalli di variazione vengono indicati alla fine dell'esercizio.

\section{Changelog}
\begin{description}
	\item[Versione 1.0 (2013/03/08)] Prima versione rilasciata al CTAN
	\item[Versione 1.1 (2013/12/09)] Reinserita la dipendenza dal pacchetto \pkgname{environ} per eliminare alcuni errori nella compilazione con \Hologo{LaTeX}. Eliminata la dipendenza dal pacchetto \pkgname{icomma} nel file di localizzazione es-italian.lng a seguito dell'introduzione di nuove funzionalità nel pacchetto \pkgname{babel} per la lingua italiana (comando \cmd{\IntelligentComma}).
	\item[Versione 2.0 (2015/02/25)] Eliminata la dipendenza da \pkgname{pstricks}. Modificato l'inserimento di domande di tipo \emph{fill-in}. Inserita la possibilità di estrarre più esercizi da un solo file. Ora è possibile visualizzare le risposte nei test. Modificata la visualizzazione dei decimali nel comando \cmd{\FPsv}. Modificata la definizione di \cmd{\FPval} in modo da avere cifre decimali. Modificato l'algoritmo di scelta della variante di un esercizio in modo completamente deterministico. Aggiunto il comando \cmd{\Acapo}. Aggiunta la localizzazione serba (alfabeto latino). Ora la compilazione produce un nuovo file con la lista degli esercizi scelti.
	\item[Versione 2.1 (2016/07/25)] Modificato \texttt{es-german.lng} e \texttt{es-spanish.lng} per errore nell'input delle soluzioni. Introdotto il comando \texttt{randestrai}. Introdotto il comando \texttt{FPsignpol}. Introdotto controllo punteggio totale degli esercizi. Risolta l'incompatibilità con \pkgname{babel} per la lingua spagnola.  Rimossa l'incompatibilità tra il comando  \cmd{\fillin} e i comandi  \cmd{\sempli} e  \cmd{\semplix}.
	\item[Versione 2.2 (2017/07/01)] Introdotta la possibilità di avere due semi diversi per la scelta degli esercizi (\cmd{\semeex}) e per le permutazioni e scelta dei parametri (\cmd{\seme}): di default sono uguali. Leggermente modificato il comando \cmd{\estrai} così da poter essere usato per estrarre parametri numerici da una lista. Integrata la documentazione.
	\item[Versione 2.3 (2017/09/18)] Corretto un errore di battitura nel codice.
	\item[Versione 2.4 (2018/02/10)] Corretta la documentazione .
        \item[Versione 2.5 (2018/05/06)] Corretto un errore di battitura nel codice. Migliorata la scelta aleatoria degli esercizi.


\end{description}


\bibliographystyle{plain}
\bibliography{esami}
\end{document}