summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/verifiche/verifiche.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/verifiche/verifiche.dtx')
-rw-r--r--macros/latex/contrib/verifiche/verifiche.dtx150
1 files changed, 140 insertions, 10 deletions
diff --git a/macros/latex/contrib/verifiche/verifiche.dtx b/macros/latex/contrib/verifiche/verifiche.dtx
index 60621ae295..a65baed8fd 100644
--- a/macros/latex/contrib/verifiche/verifiche.dtx
+++ b/macros/latex/contrib/verifiche/verifiche.dtx
@@ -16,12 +16,13 @@
%
% \iffalse
%<package>\NeedsTeXFormat{LaTeX2e}
-%<package>\ProvidesPackage{verifiche} [2022/06/21 v5.2 .dtx verifiche file]
+%<package>\ProvidesPackage{verifiche} [2022/09/17 v6.0 .dtx verifiche file]
%<*driver>
\documentclass{ltxdoc}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[english, italian]{babel}
+%\usepackage[a4paper]{geometry}
\usepackage{listings}
\lstset{
language=[LaTeX]TeX,
@@ -31,7 +32,7 @@
\inlinesol, \completetext, \truefalse, \openquestion, \linedopenquestion, \squaredopenquestion,
\headercandidatenamelabel, \checked, \finderror, \textandimage, \partialpt, \ptprefix, \ptlabel,
\partialptlabel, \partialptdelimiters, \ptdelimiters, \partialptprefix, \checkmaker, \ref, \tikz, \makecolumn,
- \columnseparation},
+ \columnseparation, \subtitle, \subtitlefont},
keywordstyle=\color{blue},
escapeinside={*@}{@*},
inputencoding=utf8,
@@ -70,7 +71,7 @@
%</driver>
% \fi
%
-% \CheckSum{934}
+% \CheckSum{997}
% \changes{v1.0}{2020/06/14}{Initial version.}
% \changes{v2.0}{2020/06/26}{Better performance in exercise environment.}
% \changes{v2.1}{2020/06/30}{Introduced closedquestionitem to control |item| symbol.}
@@ -118,6 +119,7 @@
% \DoNotIndex{\ProcessOptionsX, \protected@write, \ref, \refstepcounter, \reversemarginpar, \rule}
% \DoNotIndex{\scshape, setkeys, \sffamily, \sisetup, \spacedim, \string, \tikz, \underline, \usetikzlibrary}
% \DoNotIndex{\val, \xout, \y, \usebox, \romannumeral, \@ifundefined, \ltx@zero, \rc@default, \rc@extract@, \chardef, \llap}
+% \DoNotIndex{\toks1}
%
%
% \title{Il pacchetto \textsf{verifiche}%
@@ -185,6 +187,7 @@
%|notesttype| & non stampa il tipo di prova \\
%|nonumbered| & quesiti non numerati\\
%|noexercisept| & non stampa il punteggio degli esercizi, anche se dichiarati\\
+%|nosubtitle| & non stampa il sottotitolo\\
%|solutions| & stampa le soluzioni degli esercizi (si veda pag. \pageref{sec:solutions})\\
%|red| & il colore del font delle soluzioni è rosso\\
%|blue| & il colore del font delle soluzioni è blu\\
@@ -195,6 +198,7 @@
%Nel seguito si indicherà con "modalità test", il pacchetto caricato senza l'opzione |solutions|, altrimenti questa verrà detta "modalità soluzione" o "modalità solutions".
%
%\section{Intestazione}\label{sec:intestazione}
+%\subsection*{Comandi}
%Il pacchetto \textsf{verifiche} fornisce alcuni comandi per realizzare una semplice intestazione del documento che prevede il nome dell'istituto, l'anno scolastico il tipo di prova, le istruzioni e la durata della prova.
%Tutte queste voci vanno dichiarate prima del comando |\printheading| che si occupa della produzione del risultato finale.
%Le \emph{opzioni} del pacchetto permettono la soprressione della visualizzazione di alcune di queste voci.
@@ -263,7 +267,17 @@
%\fi
% che viene riportata sotto le istruzioni, al centro, anteponendo all'argomento il \meta{preambolo} (che di default riporta la dicitura ‘‘’Tempo della prova:’’). L'aspetto di questo comando può essere modificato ridefinendo il comando |\durationfont|.
%
-%\vspace{1em}
+%\DescribeMacro{\subtitle} Il comando |\subtitle| introduce un sottotitolo al di sotto di quanto visualizzato dal comando |\texttype|. L'aspetto ed il posizionamento di questo testo possono essere modificati ridefinendo il comando |\subtitlefont|.
+%\iffalse
+%<*example>
+%\fi
+\begin{lstlisting}
+\subtitle*@\marg{testo del sottotitolo}@*
+\end{lstlisting}
+%\iffalse
+%</example>
+%\fi
+%
%\DescribeMacro{\printheading}\label{par:printheading}L'intestazione, ovvero l'output di tutti i comandi appena definiti, viene riportata nel documento solo in presenza del comando
%\iffalse
%<*example>
@@ -287,11 +301,13 @@
%|\testtype| & |\testtypefont| & Definisce il tipo di prova.\\
%|\instruction| & |\instrunctionfont|& Definisce le istruzioni delle prove.\\
%|\duration| & |\durationfont| & Definisce la durata della prova.\\
+%|\subtitle| & |\subtitlefont| & Definisce il sottotitolo.\\
%|\printheading| & & Stampa l'intestazione.\\
%\hline
%\end{tabular}
%\end{center}
%
+%\subsection*{Stili di pagina}
% Il pacchetto definisce due stili di pagina \emph{ad hoc}: |mainverifiche| e |verifiche|. Il primo è evocato quando si definisce il comando |\institute| e stampa sulla prima pagina l'argomento di questo comando. \DescribeMacro{verifiche}Il secondo, invece, può essere utilizzato dall'utente tramite il comando:
%\iffalse
%<*example>
@@ -705,7 +721,7 @@ dell'esercizio somministrato
% \fi
%
%
-% L'ambiente \DescribeMacro{closeduestion}|closeduestion*| è analogo al precedente, fatto salvo che è adibito a produrre elenchi in linea; gli elementi vengono spaziati orizzontalmente in modo da riempire tutto lo spazio disponibile. Anche in questo caso i comandi del pacchetto |enumitem| possono essere usati tra le opzioni dell'ambiente.
+% L'ambiente \DescribeEnv{closeduestion}|closeduestion*| è analogo al precedente, fatto salvo che è adibito a produrre elenchi in linea; gli elementi vengono spaziati orizzontalmente in modo da riempire tutto lo spazio disponibile. Anche in questo caso i comandi del pacchetto |enumitem| possono essere usati tra le opzioni dell'ambiente.
% \iffalse
%<*example>
% \fi
@@ -849,7 +865,7 @@ dell'esercizio somministrato
%</example>
% \fi
%
-%
+%\clearpage
%\section{Personalizzazione}
%Il pacchetto prevede un certo numero di comandi per gestire l'aspetto del documento finale.
%\subsection*{Font}
@@ -1060,7 +1076,89 @@ dell'esercizio somministrato
%</example>
%\fi
%\clearpage
+%\section{Test multipli}
+%Uno degli aspetti peculiari della produzione di test tramite software tipografici come \LaTeX{} è quello di poter usufruire della sua versatilità per produrre un numero definito a priori dall'utente di test diversi a partire da uno stesso schema di base.
+%
+%Le modalità e le strategie per fare questo sono molteplici.
+% Uno di questi metodi è utilizzare il pacchetto\footnote{https://ctan.org/pkg/datatool} |datatool| che permette di leggere un database (solitamente salvato come file |csv|) al cui interno sono contenute le domande, i dati ed eventualmente le soluzioni degli esercizi. Il pacchetto, poi, mette a disposizione il comando |\DTLforeach| che, interrogando tutto il database precedentemente costruito, permette di popolare un unico documento in cui si variano taluni elementi al fine di ottenere prove didattiche differenti. Una soluzione di questo tipo necessita di scrivere almeno due file. Il primo, con estensione |tex|, è la struttura della prova di verifica al cui interno presenta tutti i comandi per utilizzare i dati contenuti nel secondo file. Quest'ultimo è un file di tipo |csv| al cui interno, organizzate per colonne, si trovano tutte le domande che si vogliono personalizzare ed ogni riga corrisponde ad un differente compito.
+%Il pacchetto permette anche di generare un database direttamente interno a \LaTeX{}, senza quindi dover creare un file a parte, tramite i comandi:
+%\iffalse
+%<*example>
+%\fi
+\begin{lstlisting}
+\DTLnewdb*@\marg{nome del database}@*
+\end{lstlisting}
+%\iffalse
+%</example>
+%\fi
+% per creare un database chiamato |nome del database|; per creare una nuova riga, corrispondente ad una prova diversa, si usa il comando
+%\iffalse
+%<*example>
+%\fi
+\begin{lstlisting}
+\DTLnewrow*@\marg{nome del database}@*
+\end{lstlisting}
+%\iffalse
+%</example>
+%\fi
+%e ciascuna entrata di questa riga viene popolata introducendo un'entrata tramite il comando:
+%\iffalse
+%<*example>
+%\fi
+\begin{lstlisting}
+\DTLnewdbentry*@\marg{nome del database}\marg{nome colonna}\marg{dato}@*
+\end{lstlisting}
+%\iffalse
+%</example>
+%\fi
+%Come nel caso precedente il database può essere utilizzato tramite il comando\footnote{Si rimanda alla documentazione ufficiale per ulteriori approfondimenti. Si faccia attenzione che l'ultima voce del secondo argomento del comando, ovvero |comando=nome colonna| non deve contenere spazi, si consiglia quindi di concludere la riga con il carattere \%}
+%\iffalse
+%<*example>
+%\fi
+\begin{lstlisting}
+\DTLforeach**@\marg{nome del database}\marg{comando=nome colonna}\marg{dato}\marg{testo}@*
+\end{lstlisting}
+%\iffalse
+%</example>
+%\fi
+%dichiarato subito dopo |\begin{document}| ed il |testo| non è altro che l'intero corpo del documento.
+%\subsection*{L'ambiente |multitest|}
+% Il pacchetto |verifiche| mette a disposizione una soluzione interna per generare un numero definito dall'utente di prove personalizzate e che si basa sugli strumenti messi a disposizione da |pgf| e |tikz|.
+%\DescribeEnv{multitest}L'ambiente |multitest| racchiude all'interno del suo corpo lo schema della prova che si vuole somministrare ed eventualmente i comandi che permettono personalizzare la prova.
+%\iffalse
+%<*example>
+%\fi
+\begin{lstlisting}
+\begin{multitest}[n]
+...
+\end{multitest}
+\end{lstlisting}
+%\iffalse
+%</example>
+%\fi
+%L'ambiente accetta un argomento opzionale |n| che è il numero di prove che si vogliono realizzare. Normalmente l'ambiente viene aperto dopo |\begin{document}| e chiuso prima di |\end{document}|.
%
+%\bigskip
+%La personalizzazione dei dati del problema può avvenire tramite i comandi di gestione dei numeri casuali e delle liste casuali messi a disposizione dal pacchetto |pgf| che vengono di seguito riassunti lasciando il loro approfondimento alla documentazione ufficiale\footnote{https://www.ctan.org/pkg/pgf}.
+%\iffalse
+%<*example>
+%\fi
+\begin{lstlisting}
+\pgfmathrnd
+\pgfmathrand
+\pgfmathrandom{x,y}
+\pgfmathgeneratepseudorandomnumber
+\pgfmathrandominteger*@\marg{macro}\marg{min}\marg{max}@*
+\pgfmathdeclarerandomlist*@\marg{nome lista}\{ \marg{item 1} \marg{item 2} ...\}@*
+\pgfmathrandomitem*@\marg{macro}\marg{nome lista}@*
+\pgfmathsetseed*@\marg{numero intero}@*
+\end{lstlisting}
+%Il comando inizializza il seme dei numeri casuali col numero del compito prodotto, in modo tale da produrre gli stessi compiti casuali ad ogni compilazione.
+%\DescribeMacro{multitestcounter}Il contatore |multitestcounter| permette di identificare il numero della traccia generata.
+%\iffalse
+%</example>
+%\fi
+%\clearpage
% \StopEventually{\clearpage\PrintChanges \clearpage\PrintIndex}
% \section{Implementation}
%\subsection{Require packages}
@@ -1111,6 +1209,7 @@ dell'esercizio somministrato
\newif\ifsolutionscolor\solutionscolorfalse
\newif\ifcandidatename\candidatenametrue
\newif\iftesttype\testtypetrue
+\newif\ifsubtitle\subtitletrue
\newif\ifshowinstructiondelimiter\showinstructiondelimiterfalse
\newif\ifprintedheading\printedheadingfalse
\newif\ifexercisesnumbered\exercisesnumberedtrue
@@ -1132,6 +1231,7 @@ dell'esercizio somministrato
\DeclareOptionX{noasyear}[]{\asyearfalse}
\DeclareOptionX{nocandidatename}[]{\candidatenamefalse}
\DeclareOptionX{notesttype}[]{\testtypefalse}
+\DeclareOptionX{nosubtitle}[]{\subtitlefalse}
\DeclareOptionX{nonumbered}[]{\exercisesnumberedfalse}
\DeclareOptionX{noexercisept}[]{\showexerciseptfalse}
\DeclareOptionX{color}[red]{\solutionscolortrue\def\solutionscolor{#1}}
@@ -1234,6 +1334,8 @@ dell'esercizio somministrato
\showinstructiondelimitertrue}%
\newcommand{\testtype}[1]{%
\gdef\@testtype{#1}}
+\newcommand{\subtitle}[1]{%
+ \gdef\@subtitle{#1}}%
\newcommand{\instruction}[1]{%
\gdef\@instruction{\ignorespaces#1}%
\showinstructiondelimitertrue}
@@ -1263,6 +1365,10 @@ dell'esercizio somministrato
\bgroup\hspace*{\fill}\scshape\huge#1\hspace*{\fill}\egroup}
% \end{macrocode}
% \begin{macrocode}
+\newcommand{\subtitlefont}[1]{%
+ \bgroup\hspace*{\fill}\Large\scshape#1\hspace*{\fill}\egroup}%
+% \end{macrocode}
+% \begin{macrocode}
\newcommand{\instructiondelimiter}{%
\hrulefill}
% \end{macrocode}
@@ -1420,12 +1526,18 @@ dell'esercizio somministrato
%\fi
% \begin{macrocode}
\newcommand{\ps@mainverifiche}{%
- \renewcommand\@oddhead{\parbox{\textwidth}{\centering \institutefont{\@institute}}}%
- \renewcommand\@evenhead{}%
+ \renewcommand\@oddhead{%
+ \parbox{\textwidth}{\centering \institutefont{\@institute}}%
+ }%
+ \renewcommand\@evenhead{}%
+ \renewcommand{\@oddfoot}{\hfill\normalfont\textrm\thepage\hfill}%
+ \let\evenfoot\@oddfoot%
}
\newcommand{\ps@verifiche}{%
- \renewcommand\@oddhead{
- \ifodd\thepage\parbox{\textwidth}{\headerfont\@header}\fi}%
+ \renewcommand\@oddhead{
+ \ifodd\thepage\parbox{\textwidth}{\headerfont\@header}\fi}%
+ \renewcommand{\@oddfoot}{\hfill\normalfont\textrm\thepage\hfill}%
+ \let\evenfoot\@oddfoot%
}
% \end{macrocode}
%
@@ -1439,6 +1551,7 @@ dell'esercizio somministrato
{\ifcandidatename\@header\par\vspace{\baselineskip}\fi}%
{\ifdefined\@asyear\ifasyear\asyearfont{\@asyearpreamble\space\@asyear}\par\vspace{\baselineskip}\fi\fi}%
{\ifdefined\@testtype\iftesttype\testtypefont{\@testtype}\par\fi\fi}%
+ {\ifdefined\@subtitle\ifsubtitle\vspace{\baselineskip}\subtitlefont{\@subtitle}\par\fi\fi}%
{\ifshowinstructiondelimiter\noindent\instructiondelimiter\par\fi}%
{\ifdefined\@instruction\ifinstruction\instrunctionfont{\noindent\@instruction}}\par\fi\fi%
{\ifdefined\@duration\ifduration\durationfont\@duration\par\fi\fi}%
@@ -1774,5 +1887,22 @@ dell'esercizio somministrato
% \end{macrocode}
%\end{macro}
%
+%\begin{environment}{multitest} The environment |multitest| handle the possibility of generating variation of the same test.
+% \begin{macrocode}
+\NewDocumentEnvironment{multitest}{O{1} +b}{
+ \newcounter{multitestcounter}
+ \toks1={\foreach \i in {1,...,#1}}
+ \the\toks1{%
+ \setcounter{multitestcounter}{\i}%
+ \setcounter{page}{1}%
+ \setcounter{exercisenumber}{0}%
+ \pgfmathsetseed{\i}%
+ #2%
+ \clearpage%
+ }%
+}{}
+% \end{macrocode}
+%\end{environment}
+
% \Finale
\endinput \ No newline at end of file