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.dtx247
1 files changed, 185 insertions, 62 deletions
diff --git a/macros/latex/contrib/verifiche/verifiche.dtx b/macros/latex/contrib/verifiche/verifiche.dtx
index 4172a0771f..90f9978a64 100644
--- a/macros/latex/contrib/verifiche/verifiche.dtx
+++ b/macros/latex/contrib/verifiche/verifiche.dtx
@@ -16,7 +16,7 @@
%
% \iffalse
%<package>\NeedsTeXFormat{LaTeX2e}
-%<package>\ProvidesPackage{verifiche} [2022/03/10 v4.4 .dtx verifiche file]
+%<package>\ProvidesPackage{verifiche} [2022/03/10 v5.0 .dtx verifiche file]
%<*driver>
\documentclass{ltxdoc}
\usepackage[utf8]{inputenc}
@@ -28,7 +28,10 @@
morekeywords={\setlength, \institute, \asyear, \testtype, \instruction, \duration, \printheading,
\institutefont, \asyearfont, \testtypefont, \instructiondelimiter, \headerfont, \instrunctionfont,
\durationfont, \exerciselabel, \solutionfont, \solutionlabel, \diffsymb, \closedquestionitem,
- \inlinesol, \completetext, \truefalse, \openquestion, \linedopenquestion, \squaredopenquestion, \headercandidatenamelabel, \checked, \finderror, \textandimage, \partialpt, \ptprefix, \ptlabel, \partialptlabel, \partialptdelimiters, \ptdelimiters, \partialptprefix},
+ \inlinesol, \completetext, \truefalse, \openquestion, \linedopenquestion, \squaredopenquestion,
+ \headercandidatenamelabel, \checked, \finderror, \textandimage, \partialpt, \ptprefix, \ptlabel,
+ \partialptlabel, \partialptdelimiters, \ptdelimiters, \partialptprefix, \checkmaker, \ref, \tikz, \makecolumn,
+ \columnseparation},
keywordstyle=\color{blue},
escapeinside={*@}{@*},
inputencoding=utf8,
@@ -60,13 +63,14 @@
\EnableCrossrefs
\CodelineIndex
\RecordChanges
+\parindent0pt
\begin{document}
\DocInput{verifiche.dtx}
\end{document}
%</driver>
% \fi
%
-% \CheckSum{820}
+% \CheckSum{863}
% \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.}
@@ -77,6 +81,7 @@
% \changes{v4.2}{2021/08/18}{Solved truefalse issue in solutionsmode. Add noexercisept global option to hide the score of each exercise.}
% \changes{v4.3}{2022/02/10}{Move |parindent{0pt}| inside the environment.}
% \changes{v4.4}{2022/03/10}{Minor update. Fixed labels issues.}
+% \changes{v5.0}{2022/05/18}{Major update. Remove some unnecessary packages. Remove spurious space in closedquestion environment. Add a starred version of closedquestion environment. Add the possibility to add local label to soluzione environment. Add a new command: makecolumn.}
% \GetFileInfo{verifiche.sty}
% \DoNotIndex{\newcommand,\newenvironment,\def,\begin,\end,\par}
% \DoNotIndex{\DeclareOption,\ExecuteOptions,\ProcessOptions,\RequirePackage}
@@ -110,7 +115,7 @@
% \DoNotIndex{\or, \overset, \PackageError, \PackageWarning, \parindent, \pgfmathparse, \pgfmathresult}
% \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}
+% \DoNotIndex{\val, \xout, \y, \usebox, \romannumeral, \@ifundefined, \ltx@zero, \rc@default, \rc@extract@, \chardef, \llap}
%
%
% \title{Il pacchetto \textsf{verifiche}
@@ -545,13 +550,13 @@ che voglio somministrare
%
%
%\vspace{1em}
-%\DescribeEnv{soluzione}\label{sec:solutions}L'ambiente |soluzione| racchiude al suo interno tutto il materiale utile ad essere visualizzato solo in presenza dell'\emph{opzione} |solutions| del pacchetto \textsf{verifiche}. Quando il pacchetto è in modalità "test" il contenuto dell'ambiente |soluzione| viene ignorato.
+%\DescribeEnv{soluzione}\label{sec:solutions}L'ambiente |soluzione| racchiude al suo interno tutto il materiale utile ad essere visualizzato solo in presenza dell'\emph{opzione} |solutions| del pacchetto \textsf{verifiche}. Quando il pacchetto è in modalità "test" il contenuto dell'ambiente |soluzione| viene ignorato. L'etichetta che introduce l'ambiente può essere modificata localmente tramite l'opzione |label|.
%
% \iffalse
%<*example>
% \fi
\begin{lstlisting}
-\begin{soluzione}
+\begin{soluzione}[label=*@\meta{label}@*]
...
\end{soluzione}
\end{lstlisting}
@@ -631,7 +636,16 @@ dell'esercizio somministrato
% \iffalse
%</example>
% \fi
-%Il comando produce due riquadri quadrati allineati con le lettere \texttt V e \texttt F; l'argomento obbligatorio richiede di indicare la lettera |V| o |F| al fine di poter realizzare un segno di spunta ($\checkmark$) sulla casella giusta nella modalità |solutions| del pacchetto.
+%Il comando produce due riquadri quadrati allineati con le lettere \texttt V e \texttt F; l'argomento obbligatorio richiede di indicare la lettera |V| o |F| al fine di poter realizzare un segno di spunta ($\checkmark$) sulla casella giusta nella modalità |solutions| del pacchetto. Tale simbolo può essere modificato ridefinendo il comando \DescribeMacro{\checkmaker}|\checkmaker|. Il pacchetto ammette degli argomenti opzionali che possono essere tutti quelli descritti nel pacchetto |enumitem|.
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+\renewcommand{\checkmaker}*@\marg{...}@*
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
% \iffalse
%<*example>
% \fi
@@ -643,7 +657,28 @@ dell'esercizio somministrato
% \fi
%
%
-%\DescribeEnv{closedquestion}Le domande a scelta multipla possono essere realizzate tramite l'ambiente |closedquestion|. Ogni opzione deve essere anticipata dal comando \DescribeMacro{\item}|\item| che realizza un quadrato davanti ad ogni voce. Queste poi vengono spaziate orizzontalmente in modo da riempire tutto lo spazio disponibile. Eventuali elenchi verticali possono essere realizzati introducendo a mano una nuova linea (|\\|). La soluzione (o le soluzioni) possono essere segnate tramite il comando \DescribeMacro{\checked}|\checked| posto come argomento opzionale del comando |\item| e che, nella modalità |solutions|, produce un segno di spunta ($\checkmark$) sulla casella selezionata.
+%\DescribeEnv{closedquestion}Le domande a scelta multipla possono essere realizzate tramite l'ambiente |closedquestion|. Questo comando genera un elenco verticale di elementi ciascuno introdotto dal comando \DescribeMacro{\item}|\item| che realizza un quadrato davanti ad ogni voce.
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+\begin{closedquestion}[...]
+\item ...
+\end{closedquestion}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%La soluzione (o le soluzioni) possono essere segnate tramite il comando \DescribeMacro{\checked}|\checked| posto come argomento opzionale del comando |\item| e che, nella modalità |solutions|, produce un segno di spunta ($\checkmark$) sulla casella selezionata. Anche in questo caso tale simbolo può essere modificato ridefinendo il comando |\checkmaker|. Il pacchetto ammette degli argomenti opzionali che possono essere tutti quelli descritti nel pacchetto |enumitem|.
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+\renewcommand{\checkmaker}*@\marg{...}@*
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
%
% \iffalse
%<*example>
@@ -651,14 +686,14 @@ dell'esercizio somministrato
\example
{\begin{closedquestion}
\item Primo
-\item[\checked] Secondo\\
+\item[\checked] Secondo
\item Terzo
\item Quarto
\end{closedquestion}}
{\begin{closedquestion}
\item Primo
\item[\checked] Secondo
-\end{closedquestion}\\
+\end{closedquestion}
\begin{closedquestion}
\item Terzo
\item Quarto
@@ -668,6 +703,20 @@ 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.
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+\begin{closedquestion*}[...]
+\item ...
+\end{closedquestion*}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+%
+%
%\DescribeMacro{\openquestion}Il comando produce una base di supporto per la scrittura, ovvero delle linee o dei quadretti. La sintassi del comando è la seguente:
% \iffalse
%<*example>
@@ -766,6 +815,39 @@ dell'esercizio somministrato
%</example>
% \fi
%
+%
+%\vspace{1em}
+%\DescribeMacro{\makecolumn} Il pacchetto |verifiche| definisce anche un proprio comando per produrre del testo in colonna tramite il comando |\makecolumn| che ha la seguente sintassi:
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+\makecolumn*@\marg{width}\marg{text}@*
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% La larghezza è controllata tramite l'argomento opzionale \meta{width}, mentre il testo da mettere in colonne può risiedere, anche con paragrafi, entro il campo \meta{text}. La spaziatura tra le colonne può essere modificata ridefinendo la lunghezza |\columnseparation| (di default viene inizializzata col valore |\hfill|).
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+\setlength{\columnseparation}*@\marg{dim}@*
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% \iffalse
+%<*example>
+% \fi
+\example
+{\makecolumn{.3\textwidth}{Colonna 1}
+\makecolumn{.3\textwidth}{Colonna 2}}
+{\makecolumn{2.5cm}{Colonna 1} \makecolumn{2.5cm}{Colonna 2}}% \iffalse
+%</example>
+% \fi
+%
+%
%\section{Personalizzazione}
%Il pacchetto prevede un certo numero di comandi definiti al fine di gestire l'aspetto del documento finale.
%\subsection*{Font}
@@ -979,7 +1061,6 @@ dell'esercizio somministrato
\RequirePackage{tikz}
\RequirePackage{booktabs}
\RequirePackage[normalem]{ulem}
-\RequirePackage{xstring}
% \end{macrocode}
%
%
@@ -1061,10 +1142,12 @@ dell'esercizio somministrato
\newlength{\classrulerlength}
\newlength{\daterulerlength}
\newlength{\ptrulerlength}
+\newlength{\columnseparation}
\setlength{\candidatenamerulerlength}{.35\textwidth}
\setlength{\classrulerlength}{.1\textwidth}
\setlength{\daterulerlength}{.15\textwidth}
\setlength{\ptrulerlength}{1cm}
+\setlength{\columnseparation}{\fill}
% \end{macrocode}
%
%\subsection{Labels}
@@ -1074,34 +1157,34 @@ dell'esercizio somministrato
%Some labels are define as a variable in order to leave the user the possibility of customization the predefine texts.
%If the package \textsf{babel} or \textsf{polyglossia} is loaded with the italian language specify, than the predefine labels are redefine:
% \begin{macrocode}
-\@ifpackageloaded{babel}{%
- \addto\captionsitalian{%
- \def\@verifiche@durationlabeldefault{Tempo della prova:}%
- \def\@verifiche@asyearlabeldefault{Anno scolastico}%
- \def\@verifiche@headercandidatenamelabel{Nome e Cognome}%
- \def\@verifiche@headerclasslabel{Classe}%
- \def\@verifichhe@headerdatelabel{Data}%
- \def\@verifiche@exerciselabel{Quesito}%
- \def\@verifiche@solutionlabel{Soluzione}%
- }}{%
-\@ifpackageloaded{polyglossia}{%
- \addto\captionsitalian{%
- \def\@verifiche@durationlabeldefault{Tempo della prova:}%
- \def\@verifiche@asyearlabeldefault{Anno scolastico}%
- \def\@verifiche@headercandidatenamelabel{Nome e Cognome}%
- \def\@verifiche@headerclasslabel{Classe}%
- \def\@verifichhe@headerdatelabel{Data}%
- \def\@verifiche@exerciselabel{Quesito}%
- \def\@verifiche@solutionlabel{Soluzione}%
- }}{
- \def\@verifiche@durationlabeldefault{Time:}%
- \def\@verifiche@asyearlabeldefault{School year}%
- \def\@verifiche@headercandidatenamelabel{Name and Surname}%
- \def\@verifiche@headerclasslabel{Class}%
- \def\@verifichhe@headerdatelabel{Date}%
- \def\@verifiche@exerciselabel{Exercise}%
- \def\@verifiche@solutionlabel{Solution}%
- }}%
+\newcommand{\@verifiche@durationlabeldefault}{Time:}%
+\newcommand{\@verifiche@asyearlabeldefault}{School year}%
+\newcommand{\@verifiche@headercandidatenamelabel}{Name and Surname}%
+\newcommand{\@verifiche@headerclasslabel}{Class}%
+\newcommand{\@verifichhe@headerdatelabel}{Date}%
+\newcommand{\@verifiche@exerciselabel}{Exercise}%
+\newcommand{\@verifiche@solutionlabel}{Solution}%
+\newcommand{\@verifiche@Tletter}{T}%
+\newcommand{\@verifiche@Fletter}{F}%
+%
+\newcommand{\italiandictiornary}{%
+ \renewcommand{\@verifiche@durationlabeldefault}{Tempo della prova:}%
+ \renewcommand{\@verifiche@asyearlabeldefault}{Anno scolastico}%
+ \renewcommand{\@verifiche@headercandidatenamelabel}{Nome e Cognome}%
+ \renewcommand{\@verifiche@headerclasslabel}{Classe}%
+ \renewcommand{\@verifichhe@headerdatelabel}{Data}%
+ \renewcommand{\@verifiche@exerciselabel}{Quesito}%
+ \renewcommand{\@verifiche@solutionlabel}{Soluzione}%
+ \renewcommand{\@verifiche@Tletter}{V}%
+ \renewcommand{\@verifiche@Fletter}{F}%
+}%
+\@ifpackageloaded{babel}{% if babel is loaded
+ \addto\captionsitalian{\italiandictiornary}%
+}{%else if polyglossia is loaded
+ \@ifpackageloaded{polyglossia}{%
+ \addto\captionsitalian{\italiandictiornary}%
+ }{}%
+}%
% \end{macrocode}
% \begin{macrocode}
\newcommand{\@durationlabeldefault}{\@verifiche@durationlabeldefault}%
@@ -1259,6 +1342,13 @@ dell'esercizio somministrato
\@defineptdelimiter#1}
% \end{macrocode}
%\iffalse
+%% checkmaker
+%\fi
+% \begin{macrocode}
+\newcommand{\checkmarker}{$\checkmark$}%
+\newcommand{\verifiche@checkmarker}{\bgroup\ifsolutionscolor\color{\solutionscolor}\fi\checkmarker\egroup}%
+% \end{macfrocode}
+%\iffalse
%% convert ref to num
%\fi
% \begin{macrocode}
@@ -1436,13 +1526,23 @@ dell'esercizio somministrato
%\begin{environment}{soluzione}
%The main element for the "solutions" mode is the |soluzione| environment.
% \begin{macrocode}
-\NewDocumentEnvironment{soluzione}{+b}{%
+\define@key{soluzione}{label}[\solutionlabel]{%
+ \def\verifiche@tempsoluzionelabel{#1}%
+}
+\newcommand{\verifiche@solutionlabel}{%
+ \ifdefined\verifiche@tempsoluzionelabel\verifiche@tempsoluzionelabel%
+ \else\solutionlabel\fi%
+}%
+\NewDocumentEnvironment{soluzione}{o +b}{%
+ \IfValueT{#1}{\setkeys{soluzione}{#1}}%
\ifsol%
\par\addvspace{\baselineskip}%
- {\noindent\bfseries \solutionlabel}%
+ {\noindent\bfseries%
+ \ifsolutionscolor\color{\solutionscolor}\fi%
+ \verifiche@solutionlabel}%
\par\nobreak\noindent\ignorespaces%
\setlength\parindent{0pt}%no parindent
- \solutionfont #1%
+ \solutionfont #2%
\fi%
}{%
\ifsol%
@@ -1485,16 +1585,21 @@ dell'esercizio somministrato
%The |\truefalse| is generated via |\tikz| macro.
% \begin{macrocode}
\newcommand{\truefalse}[1]{%
- \tikz[baseline=-.8ex]{%
- %true part
- \node[draw, rectangle, minimum size=1.5em] {V};%
- \ifsol\IfSubStr{#1}{V}{\node[inner sep=0pt, shift={(1pt,1pt)}]{%
- $\Large\ifsolutionscolor\color{\solutionscolor}\fi\checkmark$}}{};\fi%
- %false part
- \node[xshift=1cm, draw, rectangle, minimum size=1.5em]{F};%
- \ifsol\IfSubStr{#1}{F}{\node[inner sep=0pt, xshift=1cm, shift={(1pt,1pt)}]{%
- $\Large\ifsolutionscolor\color{\solutionscolor}\fi\checkmark$}}{};\fi%
- }%
+ %True
+ \fbox{\@verifiche@Tletter}%
+ \ifsol\llap{%
+ \if#1\@verifiche@Tletter%
+ \Large\verifiche@checkmarker%
+ \fi}%
+ \fi%
+ \quad%
+ %False
+ \fbox{\@verifiche@Fletter}%
+ \ifsol\llap{%
+ \if#1\@verifiche@Fletter%
+ \Large\verifiche@checkmarker%
+ \fi}%
+ \fi%%
}
% \end{macrocode}
%\end{macro}
@@ -1517,20 +1622,26 @@ dell'esercizio somministrato
%\begin{environment}{closedquestion}
%The |closedquestion| environment define a new list whose item elements are preceded by square symbol, and every item is |\hfill| spaced. The |\checked| symbol is controlled and generated (in the "solutions mode") via |\tikz|.
% \begin{macrocode}
-\newlist{crocette}{itemize*}{1}%
-\setlist[crocette]{label=\closedquestionitem, itemjoin={\hfill}}%
+\newlist{crocette}{itemize}{1}%
+\newlist{crocette*}{itemize*}{1}%
+\setlist[crocette]{label=\closedquestionitem, leftmargin=*, parsep=0pt }%
+\setlist[crocette*]{label=\closedquestionitem, itemjoin={\hfill}}%
\newcommand{\checked}{%
\ifsol%
- \closedquestionitem\tikz[remember picture, overlay, baseline=-1ex, xshift=-.7ex]
- {\node{\ifsolutionscolor\color{\solutionscolor}\fi$\checkmark$};}
- \else
- \closedquestionitem
+ \closedquestionitem\llap{\verifiche@checkmarker\hspace{-1pt}}%
+ \else%
+ \closedquestionitem%
\fi}
-\NewDocumentEnvironment{closedquestion}{+b}{%
- \begin{crocette}#1%
+\NewDocumentEnvironment{closedquestion}{O{}+b}{%
+ \begin{crocette}[#1]#2%
}{%
- \end{crocette}
-}
+ \end{crocette}%
+}%
+\NewDocumentEnvironment{closedquestion*}{O{} +b}{%
+ \begin{crocette*}[#1]#2%
+}{%
+ \end{crocette*}%
+}%
% \end{macrocode}
%\end{environment}
@@ -1602,5 +1713,17 @@ dell'esercizio somministrato
}
% \end{macrocode}
%\end{macro}
+%
+%
+%\begin{macro}{\makecolumn}
+%The |\makecolumn| give the possibility to create multiple column in the document.
+% \begin{macrocode}
+\NewDocumentCommand{\makecolumn}{O{t} m +m}{%
+ \parbox[#1]{#2}{#3}%
+ \@ifnextchar\makecolumn{\hspace*{\columnseparation}}{}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
% \Finale
\endinput \ No newline at end of file