texlive[69009] Master/texmf-dist: ufrgscca (30nov23)

commits+karl at tug.org commits+karl at tug.org
Thu Nov 30 22:05:30 CET 2023


Revision: 69009
          https://tug.org/svn/texlive?view=revision&revision=69009
Author:   karl
Date:     2023-11-30 22:05:30 +0100 (Thu, 30 Nov 2023)
Log Message:
-----------
ufrgscca (30nov23)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/ufrgscca/README.md
    trunk/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-cover-ptBR.tex
    trunk/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-forms.tex
    trunk/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-terms-en.tex
    trunk/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-terms-ptBR.tex
    trunk/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca.pdf
    trunk/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca.tex
    trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-abnt.sty
    trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-base-en.def
    trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-base-ptBR.def
    trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-coord.sty
    trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-core.sty
    trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-cover.sty
    trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-curr.sty
    trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-forms.sty
    trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-lists.sty
    trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-ppc.sty
    trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca.cls

Modified: trunk/Master/texmf-dist/doc/latex/ufrgscca/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/ufrgscca/README.md	2023-11-30 21:05:17 UTC (rev 69008)
+++ trunk/Master/texmf-dist/doc/latex/ufrgscca/README.md	2023-11-30 21:05:30 UTC (rev 69009)
@@ -107,7 +107,13 @@
 
 
 ## Changelog
-* Version 2.0 (this)
+* Version 2.1 (this)
+    - A few typos corrected
+    - better error handling
+    - a bit of code clean up (private macro/functions only)
+    - added a few \...prof commands (-coord auxiliary ones)
+
+* Version 2.0 
     - fully rewritten as Expl3 class/packages
     - documentation
     - (a few) commands changed (mostly auxiliary/background ones)

Modified: trunk/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-cover-ptBR.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-cover-ptBR.tex	2023-11-30 21:05:17 UTC (rev 69008)
+++ trunk/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-cover-ptBR.tex	2023-11-30 21:05:30 UTC (rev 69009)
@@ -12,7 +12,7 @@
 %%
 %% The Current Maintainer of this work is Alceu Frigeri
 %%
-%% This is version {2.0} {2023/11/23}
+%% This is version {2.1} {2023/11/30}
 %%
 %% The list of files that compose this work can be found in the README.md file at
 %% https://ctan.org/pkg/ufrgscca

Modified: trunk/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-forms.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-forms.tex	2023-11-30 21:05:17 UTC (rev 69008)
+++ trunk/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-forms.tex	2023-11-30 21:05:30 UTC (rev 69009)
@@ -12,7 +12,7 @@
 %%
 %% The Current Maintainer of this work is Alceu Frigeri
 %%
-%% This is version {2.0} {2023/11/23}
+%% This is version {2.1} {2023/11/30}
 %%
 %% The list of files that compose this work can be found in the README.md file at
 %% https://ctan.org/pkg/ufrgscca
@@ -194,12 +194,9 @@
 \SetForm{calendar-I}{opening}{}
 
 %%%
-  \ExplSyntaxOn
-  \bool_new:N \l__ufrgscca_tmp_bool
+
 \SetForm{calendar-I}{body}{%
-  \starray_set_iter_from_hash:nn {activity}{tccI}
-  \starray_reset_iter:n {activity.calendar}
-  \bool_set_true:N \l__ufrgscca_tmp_bool
+  \ActivitySelect{tccI}
   { \footnotesize%
     \begin{center}
 %
@@ -206,10 +203,9 @@
       \resizebox{\textwidth}{!}{%%
         \begin{tabular}{ccp{11.5cm}}%
         Data/Período & Semana~ Letiva & Evento\\\hline
-        \bool_do_while:Nn \l__ufrgscca_tmp_bool
+        \ActivityCalendarIterate
           {
-            \textbf{\starray_get_prop:nn {activity.calendar}{date}} & \starray_get_prop:nn {activity.calendar}{week} & \starray_get_prop:nn {activity.calendar}{event}\\\hline
-            \starray_next_iter:nF {activity.calendar}{\bool_set_false:N \l__ufrgscca_tmp_bool}
+            \textbf{\DataFields{activity.calendar}{date}} & \DataFields{activity.calendar}{week} & \DataFields{activity.calendar}{event}\\\hline
           }
         \end{tabular}}%
 %
@@ -217,7 +213,6 @@
     \scriptsize \UseTerm{notes.calendarI}
   }%
 }
-  \ExplSyntaxOff
 
 %%%
 \SetForm{calendar-I}{closing}{\vfill}%
@@ -229,23 +224,18 @@
 \SetForm{calendar-II}{opening}{}
 
 %%%
-  \ExplSyntaxOn
-%  \bool_new:N \l__ufrgscca_tmp_bool
 \SetForm{calendar-II}{body}{%
-  \starray_set_iter_from_hash:nn {activity}{tccII}
-  \starray_reset_iter:n {activity.calendar}
-  \bool_set_true:N \l__ufrgscca_tmp_bool
+  \ActivitySelect{tccII}
   { \footnotesize%
     \begin{center}
 %
       \resizebox{\textwidth}{!}{%%
         \begin{tabular}{ccp{11.5cm}}%
-        Data/Período & Semana~ Letiva & Evento\\\hline
-        \bool_do_while:Nn \l__ufrgscca_tmp_bool
-          {
-            \textbf{\starray_get_prop:nn {activity.calendar}{date}} & \starray_get_prop:nn {activity.calendar}{week} & \starray_get_prop:nn {activity.calendar}{event}\\\hline
-            \starray_next_iter:nTF {activity.calendar}{}{\bool_set_false:N \l__ufrgscca_tmp_bool}
-          }
+          Data/Período & Semana~ Letiva & Evento\\\hline
+          \ActivityCalendarIterate
+            {
+              \textbf{\DataFields{activity.calendar}{date}} & \DataFields{activity.calendar}{week} & \DataFields{activity.calendar}{event}\\\hline
+            }
         \end{tabular}}%
 %
     \end{center}%
@@ -252,7 +242,6 @@
     \scriptsize \UseTerm{notes.calendarII}
   }%
 }
-  \ExplSyntaxOff
 
 %%%
 \SetForm{calendar-II}{closing}{\vfill}%
@@ -316,7 +305,7 @@
 \SetForm{coadvisor-I}{opening}{%
 
   \UseTerm{opening.requestform}
-  \coadvisoremptyifnone
+  \emptytermifnone{student.coadvisor}
 }
 
 %%%
@@ -364,7 +353,6 @@
     \UseLabel{board}
   \end{center}%
 
-%%% TODO: That's do be done... convert it to starray!!!
  
   \BoardDescSignature{Avaliador\DataFields{student.reviewer[2]}{narticle}}{student.reviewer[2]}
 
@@ -554,27 +542,27 @@
 %%%%%%%%%%%%%%%
 \SetForm{coadvisor-II}{heading}{\UseTerm{title.tccII}}
 \SetForm{coadvisor-II}{title}{\UseTerm{title.coadvisorform}}
-\SetForm{coadvisor-II}{opening}{%
+\SetForm{coadvisor-II}{opening}{
 
   \UseTerm{opening.requestform}
-  \coadvisoremptyifnone
+  \emptytermifnone{student.coadvisor}
 }
 
 %%%
-\SetForm{coadvisor-II}{body}{%
+\SetForm{coadvisor-II}{body}{
   \UseTerm{desc.coadvisorform}
   \vfill%
 
-  \UseLabel{worktitle.temp}: \DataFields{student}{worktitle}%\@title %
+  \UseLabel{worktitle.temp}: \DataFields{student}{worktitle}
 
   \UseLabel{advisor}: \DataFields{student.advisor}{name}
 
-  \UseLabel{coadvisor}: \DataFields{student.coadvisor}{name}%
+  \UseLabel{coadvisor}: \DataFields{student.coadvisor}{name}
 
-  \UseLabel{coadvisor.email}: {\bf \DataFields{student.coadvisor}{email}}%
-  \hfill \UseLabel{phone}: {\bf \DataFields{student.coadvisor}{phone}}\\%
+  \UseLabel{coadvisor.email}: {\bf \DataFields{student.coadvisor}{email}}
+  \hfill \UseLabel{phone}: {\bf \DataFields{student.coadvisor}{phone}}\\
 
-  {\bf Justificativa}:%
+  {\bf Justificativa}:
   \vfill
 
   \DataFields{student.coadvisor}{reason}
@@ -581,12 +569,12 @@
 }
 
 %%%
-\SetForm{coadvisor-II}{closing}{%
+\SetForm{coadvisor-II}{closing}{
 
   \SignatureDate{\UseLabel{signature.student}}
 
-  \parbox[t]{.45\textwidth}{\SignatureDate{\UseLabel{signature.advisor}}}\hfill%
-  \parbox[t]{.45\textwidth}{\SignatureDate{\UseLabel{signature.coadvisor}}}%
+  \parbox[t]{.45\textwidth}{\SignatureDate{\UseLabel{signature.advisor}}}\hfill
+  \parbox[t]{.45\textwidth}{\SignatureDate{\UseLabel{signature.coadvisor}}}
 }
 %%%%%%%%%%%%%%%
 %%%%%%%%%%%%%%%
@@ -602,9 +590,9 @@
 \SetForm{boardapproval-II}{opening}{\UseTerm{desc.studentwork.full}}
 
 %%%
-\SetForm{boardapproval-II}{body}{%
+\SetForm{boardapproval-II}{body}{
   \begin{center}
-    \UseLabel{board}%
+    \UseLabel{board}
   \end{center}%
 
   \BoardDescSignature{Avaliador\DataFields{student.reviewer[1]}{narticle}}{student.reviewer[1]}
@@ -615,9 +603,9 @@
 
   \BoardDescSignature{Suplente}{student.altreviewer[1]}
 
-  \vfill%
+  \vfill
 
-    Indicamos a nominata da Banca Examinadora acima relacionada.%
+    Indicamos a nominata da Banca Examinadora acima relacionada.
 }
 
 %%%
@@ -646,10 +634,10 @@
 
 %%%
 \SetForm{advisorsapproval-II}{closing}{%
-  \SignatureDate{\UseLabel{signature.advisor}}%
+  \SignatureDate{\UseLabel{signature.advisor}}
   \vfill%
 
-  \SignatureDate{\UseLabel{signature.student}}%
+  \SignatureDate{\UseLabel{signature.student}}
  }
 %%%%%%%%%%%%%%%
 %%%%%%%%%%%%%%%
@@ -663,20 +651,20 @@
 \SetForm{receipts-II}{footnote}{\UseTerm{footnote.receipts}}
 
 %%%
-\SetForm{receipts-II}{opening}{%
-  \UseTerm{desc.studentwork.full}\\%
+\SetForm{receipts-II}{opening}{
+  \UseTerm{desc.studentwork.full}\\
 
-  \noindent Membro da Banca : {\bf \DataFields{student.reviewer}{name} }%
+  \noindent Membro da Banca : {\bf \DataFields{student.reviewer}{name} }
 }
 
 %%%
-\SetForm{receipts-II}{body}{ %
+\SetForm{receipts-II}{body}{ 
   Declaro que encontra-se em minha posse cópia da versão final do \Activity[tccII]{name} em \Activity[course]{name}  d\DataFields{student}{article} alun\DataFields{student}{article} 
   \textbf{\DataFields{student}{name}}.
 
   \vfill%
 
- \SignatureDate{\UseLabel{signature.board}}%
+ \SignatureDate{\UseLabel{signature.board}}
  
 }
 
@@ -706,22 +694,22 @@
   \vfill%
 
   \begin{center}
-    \begin{tabular}{|c|c|c|}%
+    \begin{tabular}{|c|c|c|}
       \hline%
       \UseLabel{TCC-II.pointA} & \UseLabel{TCC-II.pointB} & \UseLabel{TCC-II.pointC} \\\hline%
       & & \\\hline
-    \end{tabular}%
-  \end{center}%
+    \end{tabular}
+  \end{center}
 }
 
 %%%
 \SetForm{examinersform-II}{closing}{ 
   
- \SignatureDate{\UseLabel{signature.reviewer}}%
+ \SignatureDate{\UseLabel{signature.reviewer}}
   \vfill%
   \begin{description}
     \item[Observações:] \ \\A nota final, de cada membro da banca examinadora, será calculada conforme:\\[2mm] {\bf Nota Final = \UseConst{TCC-II.weightA}\ x \UseLabel{TCC-II.pointA}\  + \UseConst{TCC-II.weightB}\ x \UseLabel{TCC-II.pointB}\  + \UseConst{TCC-II.weightC}\ x \UseLabel{TCC-II.pointC}\ }\\[2mm] A média final da atividade será dada pela média das notas finais atribuidas por cada um dos membros da banca examinadora.
-  \end{description}%
+  \end{description}
 }
 %%%%%%%%%%%%%%%
 %%%%%%%%%%%%%%%
@@ -742,7 +730,7 @@
 }
 
 %%%
-\SetForm{correctionsform-II}{body}{  \resizebox{0.9\textwidth}{!}{%%
+\SetForm{correctionsform-II}{body}{  \resizebox{0.9\textwidth}{!}{
 O texto submetido:
  \parbox[t]{.75\textwidth}{
     \begin{itemize}[tcc,nosep]
@@ -776,12 +764,12 @@
 	~\\\hline
 	~\\\hline
 	\end{tabular}\\[-1mm]
-	\end{itemize}}  }%
-  \footnotetext[2]{Neste caso \DataFields{student}{article} alun\DataFields{student}{article} estará em EXAME e receberá conceito final C ou D, conforme revisão final do texto.}%
+	\end{itemize}}  }
+  \footnotetext[2]{Neste caso \DataFields{student}{article} alun\DataFields{student}{article} estará em EXAME e receberá conceito final C ou D, conforme revisão final do texto.}
 }
 
 %%%
-\SetForm{correctionsform-II}{closing}{  \SignatureDate{\UseLabel{signature.reviewer}}%
+\SetForm{correctionsform-II}{closing}{  \SignatureDate{\UseLabel{signature.reviewer}}
  }
 %%%%%%%%%%%%%%%
 %%%%%%%%%%%%%%%
@@ -796,17 +784,17 @@
 \SetForm{rectifyapproval-II}{opening}{\UseTerm{desc.studentwork.full}}
 
 %%%
-\SetForm{rectifyapproval-II}{body}{  %
+\SetForm{rectifyapproval-II}{body}{ 
   \SetTerms{temp.formrefname = {Formulário de Correções}}
   \UseTerm{desc.rectifyapproval}
 
-  \vfill%
+  \vfill
 
   \ApprovalSignature[\UseLabel{advisor}]{\DataFields{student.advisor}{name}}
 }
 
 %%%
-\SetForm{rectifyapproval-II}{closing}{%
+\SetForm{rectifyapproval-II}{closing}{
   \studentDistinctBoardCase
     {
       \SetReviewer{1}
@@ -832,25 +820,25 @@
 \SetForm{referral-I}{opening}{\UseTerm{desc.sacad}}
 
 %%%
-\SetForm{referral-I}{body}{  %
+\SetForm{referral-I}{body}{  
 
 \studentCase%
   {
     \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ submeteu o trabalho intitulado \emph{\DataFields{student}{worktitle}}, tendo sido APROVAD\DataFields{student}{Article} com conceito final \textbf{\DataFields{student}{grade}}, conforme quadro de notas abaixo.\\[2em]
     \studentBoardGradedI
-  }%
+  }
   {
     \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ submeteu o trabalho intitulado \emph{\DataFields{student}{worktitle}}, tendo sido REAPROVAD\DataFields{student}{Article} com conceito final \textbf{\DataFields{student}{grade}}, conforme quadro de notas abaixo.\\[2em]
     \studentBoardGradedI
-  }%
+  }
   {
     \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ submeteu o trabalho intitulado \emph{\DataFields{student}{worktitle}}, não tendo sido considerad\DataFields{student}{article} apt\DataFields{student}{article} pela banca listada abaixo. Posto em exame, \DataFields{student}{article} mesm\DataFields{student}{article} foi APROVAD\DataFields{student}{Article} com conceito final \DataFields{student}{grade}.\\[2em]
     \studentBoardI
-  }%
+  }
   {
     \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ submeteu o trabalho intitulado \emph{\DataFields{student}{worktitle}}, não tendo sido considerad\DataFields{student}{article} apt\DataFields{student}{article} pela banca listada abaixo. Posto em exame, \DataFields{student}{article} mesm\DataFields{student}{article} foi REPROVAD\DataFields{student}{Article} com conceito final \DataFields{student}{grade}.\\[2em]
     \studentBoardI
-  }%
+  }
   {
     \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ não concluiu o trabalho de conclusão de Curso tendo sido REPROVAD\DataFields{student}{Article}  com conceito final \textbf{FF}.
   }
@@ -857,7 +845,7 @@
 }
 
 %%%
-\SetForm{referral-I}{closing}{%
+\SetForm{referral-I}{closing}{
     \begin{flushright}
     Porto Alegre, \UseConst{publ.day} de \UseConst{publ.month} de \UseConst{publ.year}.\\[2em]
 
@@ -870,8 +858,8 @@
 }
 
 
-\NewDocumentCommand{\studentCoadvLabelCase}{}{%%
-  \studentCoadvCase{\UseLabel{advisors} : \DataFields{student.advisor}{name} / \DataFields{student.coadvisor}{name}}{\UseLabel{advisor} : \DataFields{student.advisor}{name}}%%
+\NewDocumentCommand{\studentCoadvLabelCase}{}{
+  \studentCoadvCase{\UseLabel{advisors} : \DataFields{student.advisor}{name} / \DataFields{student.coadvisor}{name}}{\UseLabel{advisor} : \DataFields{student.advisor}{name}}
 }
 
 \NewDocumentCommand{\studentBoardI}{}{
@@ -880,9 +868,10 @@
     \begin{center}%
       \begin{tabular}{p{\UseConst{report.tabA*}}@{\ }p{\UseConst{report.tabB*}}@{\ }c}%\hline%
         & \UseLabel{board} \\\hline%
-        \multirow{2}={\DataFields{student}{name}} %
+        \multirow{3}={\DataFields{student}{name}} %
         &\DataFields{student.reviewer[2]}{name}\\%
         &\DataFields{student.reviewer[3]}{name}\\%
+        & ~\\[-2.5ex]
         \multicolumn{2}{l}{\ \ \studentCoadvLabelCase} \\\hline%
       \end{tabular}%
     \end{center}%
@@ -908,9 +897,10 @@
     \UseLabel{Ngrade} & \UseLabel{grade}\\\hline%
 }
 \NewDocumentCommand{\studentLineI}{}{%
-   \multirow{2}={\textbf{\DataFields{student}{name}}} %
+   \multirow{3}={\textbf{\DataFields{student}{name}}} %
     \ReviewerLineI{2}\\*%
     \ReviewerLineI{3}\\*%
+    \nopagebreak & ~\\[-2.5ex]
     \multicolumn{6}{l}{\ \ \ \studentCoadvLabelCase} & \textbf{\DataFields{student}{gradeavrg}} & \textbf{\DataFields{student}{grade}}%\\* \hline%   
 }
 
@@ -919,9 +909,9 @@
  }
 
 
-\NewDocumentCommand{\studentExtLine}{m}{%
+\NewDocumentCommand{\studentExtLine}{mm}{%
    \\[-1em]%
-   \multicolumn{#1}{l}{\ \ \ \UseLabel{worktitle}: \DataFields{student}{worktitle}}\\*       
+   \multicolumn{#1}{p{#2}}{\ \ \ \UseLabel{worktitle}: \DataFields{student}{worktitle}}\\*       
    \multicolumn{#1}{l}{\ \ \ (\UseLabel{Nproc}: \DataFields{student}{Nproc}) \UseLabel{student.ID}: \DataFields{student}{ID} / \DataFields{student}{email}}\\*       
    \multicolumn{#1}{l}{\ \ \ \UseLabel{remarks}: \DataFields{student}{remarks}}%\\ \hline
 }
@@ -985,10 +975,11 @@
     \begin{center}%
       \begin{tabular}{p{\UseConst{report.tabA*}}@{\ }p{\UseConst{report.tabB*}}@{\ }c}%\hline%
         & \UseLabel{board} \\\hline%
-        \multirow{3}={\DataFields{student}{name}} %
+        \multirow{4}={\DataFields{student}{name}} %
         &\DataFields{student.reviewer[1]}{name}\\%
         &\DataFields{student.reviewer[2]}{name}\\%
         &\DataFields{student.reviewer[3]}{name}\\%
+        & ~\\[-2.5ex]
         \multicolumn{2}{l}{\ \ \studentCoadvLabelCase} \\\hline%
       \end{tabular}%
     \end{center}%
@@ -1013,10 +1004,11 @@
   \UseLabel{Ngrade} & \UseLabel{grade}\\\hline%
 }
 \NewDocumentCommand{\studentLineII}{}{%
-   \multirow{3}={\textbf{\DataFields{student}{name}}} %
+   \multirow{4}={\textbf{\DataFields{student}{name}}} %
     \ReviewerLineII{1}\\*%
     \ReviewerLineII{2}\\*%
     \ReviewerLineII{3}\\*%
+    \nopagebreak & ~\\[-2.5ex]
     \multicolumn{5}{l}{\ \ \ \studentCoadvLabelCase} & \textbf{\DataFields{student}{gradeavrg}} & \textbf{\DataFields{student}{grade}}%\\ \hline%   
 }
 
@@ -1030,7 +1022,9 @@
 
 
 
+\ExplSyntaxOn
 
+
 %%%%%%%%%%%%%%%
 %%  report TCC - I
 %%%%%%%%%%%%%%%
@@ -1038,17 +1032,16 @@
 \SetForm{report-I}{title}{Relatório Acompanhamento - \UseTerm{semester}}
 \SetForm{report-I}{opening}{}
 
-\ExplSyntaxOn
 %%%
 \SetForm{report-I}{opening}{  %
   { \tiny
     \begin{longtable}{p{\UseConst{report.tabA}}@{\ }p{\UseConst{report.tabB}}@{\ }p{\UseConst{report.tabC}}@{\ }p{\UseConst{report.tabD}}@{\ }p{\UseConst{report.tabE}}@{\ }p{\UseConst{report.tabEx}}@{\ }p{\UseConst{report.tabF}}@{\ }p{\UseConst{report.tabG}}}%
     \HeaderLineI
-    \seq_map_inline:cn {l__ufrgscca_baselist_graded_seq} 
+    \seq_map_inline:Nn \l__ufrgscca_baselist_graded_seq
       {
-        \starray_set_iter_from_hash:nn {student} {#1}
+        \studentselect{#1}
         \studentLineI\\*\hline
-        \studentExtLine{8}\\\hline        
+        \studentExtLine{8}{\UseConst{report.tabMult.I}}\\\hline        
       }
     \reportMissCase{8}{\l__ufrgscca_baselist_ff_seq}{Desistentes~ com~ conceito~ (2o ~ semestre)}
     \reportMissCase{8}{\l__ufrgscca_baselist_dismiss_seq}{Desistentes~ sem~ conceito~ (1o ~ semestre)}[magenta]
@@ -1076,10 +1069,8 @@
       }
 }
 
-\ExplSyntaxOff
 
 
-
 %%%%%%%%%%%%%%%
 %%  report TCC - II
 %%%%%%%%%%%%%%%
@@ -1087,17 +1078,16 @@
 \SetForm{report-II}{title}{Relatório Acompanhamento - \UseTerm{semester}}
 \SetForm{report-II}{opening}{}
 
-\ExplSyntaxOn
 %%%
 \SetForm{report-II}{opening}{  %
   { \tiny
     \begin{longtable}{p{\UseConst{report.tabA}}@{\ }p{\UseConst{report.tabB}}@{\ }p{\UseConst{report.tabC}}@{\ }p{\UseConst{report.tabD}}@{\ }p{\UseConst{report.tabE}}@{\ }p{\UseConst{report.tabF}}@{\ }p{\UseConst{report.tabG}}}%
     \HeaderLineII
-    \seq_map_inline:cn {l__ufrgscca_baselist_graded_seq} 
+    \seq_map_inline:Nn \l__ufrgscca_baselist_graded_seq
       {
-        \starray_set_iter_from_hash:nn {student} {#1}
+        \studentselect{#1}
         \studentLineII\\*\hline
-        \studentExtLine{7}\\\hline        
+        \studentExtLine{7}{\UseConst{report.tabMult.II}}\\\hline        
       }
     \reportMissCase{7}{\l__ufrgscca_baselist_ff_seq}{Desistentes~ com~ conceito~ (2o ~ semestre)}
     \reportMissCase{7}{\l__ufrgscca_baselist_dismiss_seq}{Desistentes~ sem~ conceito~ (1o ~ semestre)}[magenta]
@@ -1173,13 +1163,9 @@
 %%%
 \SetForm{checklist-II}{closing}{}
 
-\ExplSyntaxOff
 
 
 
-
-
-
 %%%%%%%%%%%%%%%
 %%  Boards TCC - II
 %%%%%%%%%%%%%%%
@@ -1187,7 +1173,6 @@
 \SetForm{boards}{title}{\UseTerm{board.title}}
 \SetForm{boards}{opening}{}
 
-\ExplSyntaxOn
 %%%
 \SetForm{boards}{opening}{  %
   {\footnotesize
@@ -1202,8 +1187,6 @@
         \starray_term_syntax:n {student}
         \tl_gset:Ne \l__ufrgscca_daytmpb_tl {\starray_parsed_get_prop:n{board-date}}
         \tl_gset:Ne \l__ufrgscca_daytmpc_tl {\UseConst{date:\l__ufrgscca_daytmpb_tl}}
-        %\tl_gset:Ne \l__ufrgscca_daytmpD_tl {date:\l__ufrgscca_daytmpb_tl}
-        %\tl_gset:Ne \l__ufrgscca_daytmpc_tl {\UseConst{\l__ufrgscca_daytmpD_tl}}
         \studentNewPageCase
           {\kill\pagebreak\tl_gset:Nn \l__ufrgscca_daytmpa_tl {}}
           {}
@@ -1217,7 +1200,7 @@
         && \DataFields{student.reviewer[2]}{name} \\*
         && \DataFields{student.reviewer[3]}{name} \\*
         && (\DataFields{student.altreviewer[1]}{name}) \\*
-        \multicolumn{4}{l}{\textsc{Título:}\ \emph{\DataFields{student}{worktitle}}}\\\hline      
+        \multicolumn{4}{p{\UseConst{board.tabAll}}}{\textsc{Título:}\ \emph{\DataFields{student}{worktitle}}}\\\hline      
       }
     \end{longtable} 
     
@@ -1224,6 +1207,7 @@
     {\scriptsize\UseTerm{board.obs}}
   }
 }
+
 \ExplSyntaxOff
 
 %%%

Modified: trunk/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-terms-en.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-terms-en.tex	2023-11-30 21:05:17 UTC (rev 69008)
+++ trunk/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-terms-en.tex	2023-11-30 21:05:30 UTC (rev 69009)
@@ -12,7 +12,7 @@
 %%
 %% The Current Maintainer of this work is Alceu Frigeri
 %%
-%% This is version {2.0} {2023/11/23}
+%% This is version {2.1} {2023/11/30}
 %%
 %% The list of files that compose this work can be found in the README.md file at
 %% https://ctan.org/pkg/ufrgscca

Modified: trunk/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-terms-ptBR.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-terms-ptBR.tex	2023-11-30 21:05:17 UTC (rev 69008)
+++ trunk/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-terms-ptBR.tex	2023-11-30 21:05:30 UTC (rev 69009)
@@ -12,7 +12,7 @@
 %%
 %% The Current Maintainer of this work is Alceu Frigeri
 %%
-%% This is version {2.0} {2023/11/23}
+%% This is version {2.1} {2023/11/30}
 %%
 %% The list of files that compose this work can be found in the README.md file at
 %% https://ctan.org/pkg/ufrgscca
@@ -239,7 +239,7 @@
 
 
 \SetConsts{%
-  report.tabA = {32mm} ,
+  report.tabA = {34mm} ,
   report.tabA* = {42mm} ,
   report.tabB = {42mm} ,
   report.tabB* = {62mm} ,
@@ -249,6 +249,8 @@
   report.tabEx = {15mm} ,
   report.tabF = {8mm} ,
   report.tabG = {12mm} , 
+  report.tabMult.II = {141mm} , % A+B+C+D+E+F+G
+  report.tabMult.I = {156mm} , % A+B+C+D+E+F+G + Ex
 }
 
 \SetConsts{%
@@ -256,6 +258,7 @@
   board.tabB = {38mm} ,
   board.tabC = {60mm} ,
   board.tabD = {13mm} ,
+  board.tabAll = {148mm} ,
 }
 
 \SetConsts{%

Modified: trunk/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca.tex	2023-11-30 21:05:17 UTC (rev 69008)
+++ trunk/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca.tex	2023-11-30 21:05:30 UTC (rev 69009)
@@ -15,7 +15,7 @@
 %%
 %% The Current Maintainer of this work is Alceu Frigeri
 %%
-%% This is version {2.0} {2023/11/23}
+%% This is version {2.1} {2023/11/30}
 %%
 %% The list of files that compose this work can be found in the README.md file at
 %% https://ctan.org/pkg/ufrgscca
@@ -92,7 +92,7 @@
 \end{tsremark}
 
 \begin{tsremark}[Version 1.12a:]
-	In case you need the old version, for some odd \tsobj[pkg]{expl3} compatibility issue, you can find it at \tsverb{https://github.com/ alceu-frigeri/ufrgscca/releases/tag/v1.12}
+	In case you need the old version, for some odd \tsobj[pkg]{expl3} compatibility issue, you can find it at \tsverb{https://github.com/ alceu-frigeri/ufrgscca/releases/tag/v1.12a}
 \end{tsremark}
 
 \subsection{Current Version}
@@ -649,6 +649,12 @@
 This is \tsobj{\starray_iterate_over:nn} from \tsobj[pack]{starray}. \tsobj[meta]{code} will be executed for every defined student.
 \end{codedescribe}
 
+\begin{codedescribe}[code,new=2023/11/29]{\ActivityCalendarIterate}
+	\begin{codesyntax}%
+    \tsmacro{\ActivityCalendarIterate}{code}
+	\end{codesyntax}
+This is \tsobj{\starray_iterate_over:nn} from \tsobj[pack]{starray}. \tsobj[meta]{code} will be executed for every defined calendar item.
+\end{codedescribe}
 
 
 \subsection{Core Specific Commands}\label{core-specific-commands}
@@ -1055,7 +1061,21 @@
 \end{codedescribe}
 
 
+\begin{codedescribe}[code,new=2023/11/30]{\professor,\advisorprof,\coadvisorprof,\examinerprof,\altexaminerprof}
+	\begin{codesyntax}%
+		\tsobj[code]{\professor}\tsargs[oarg]{prof-ref}\tsargs[marg]{last,first}\tsargs[oarg]{gender}
+		\tsmacro{\advisorprof}{prof-ref}
+		\tsmacro{\coadvisorprof}{prof-ref}
+		\tsmacro{\examinerprof}{prof-ref}
+		\tsmacro{\altexaminerprof}{prof-ref}
+	\end{codesyntax}
+\tsobj{\professor} creates a \tsobj[oarg]{prof-ref} alias to a person's full name.  \tsobj{\advisorprof} expands to a call for \tsobj{\advisor} using the properties stored by \tsobj{\professor}. Similarly, \tsobj{\coadvisorprof,\examinerprof,\altexaminerprof} results in call to \tsobj{\coadvisor,\examinerprof,\altexaminerprof} respectively.
+\end{codedescribe}
+\begin{tsremark}
+\tsobj{\professor} creates/uses an auxiliary \tsobj[pkg]{starray}, just mapping names for users convenience.
+\end{tsremark}
 
+
 \begin{codedescribe}[code,new=2023/11/18]{\boardtitle,\boardobs,\semester}
 	\begin{codesyntax}%
 		\tsmacro{\boardtitle}{title}
@@ -1166,15 +1186,19 @@
 \end{codedescribe}
 
 
-\begin{codedescribe}[code,update=2023/11/18]{\timeslot}
+\begin{codedescribe}[code,update=2023/11/29]{\timeslot}
 	\begin{codesyntax}%
 		\tsmacro{\timeslot}[local]{date,time}
 	\end{codesyntax}
-To set, for the Boards Report, the \tsobj[meta]{local}, \tsobj[meta]{date} and \tsobj[meta]{time} of a student's presentation work.
+To set the \tsobj[meta]{local}, \tsobj[meta]{date} and \tsobj[meta]{time} of a student's presentation work.
 \end{codedescribe}
 
+\begin{tsremark}
+\tsobj[meta]{date} must be given in numerical form, either \tsmeta{day}/\tsmeta{month} or \tsmeta{day}/\tsmeta{month}/\tsmeta{year}. The day-of-the-week will be obtained  using \tsobj[pkg]{pgfcalendar}.
+\end{tsremark}
 
 
+
 \begin{codedescribe}[code,update=2023/11/18]{\worktitle,\studentremark}
 	\begin{codesyntax}%
 		\tsmacro{\worktitle}{title}
@@ -1221,11 +1245,12 @@
 
 
 
-\begin{codedescribe}{\setstudentlist}
+\begin{codedescribe}[code,update=2023/11/29]{\setstudentlist}
 	\begin{codesyntax}%
 		\tsmacro{\setstudentlist}{listID,list}
+		\tsmacro{\setstudentlist*}{listID,list}
 	\end{codesyntax}
-This command will define/create a list named \tsobj[meta]{listID} composed of a csv \tsobj[meta]{list}~ of student names (as defined by \tsmacro{\Newstudent}{}).
+This command will define/create a list named \tsobj[meta]{listID} composed of a csv \tsobj[meta]{list}~ of student names (as defined by \tsmacro{\Newstudent}{}). The star version sorts the list first (by student's name).
 \end{codedescribe}
 
 \begin{codedescribe}{\tcreports}

Modified: trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-abnt.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-abnt.sty	2023-11-30 21:05:17 UTC (rev 69008)
+++ trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-abnt.sty	2023-11-30 21:05:30 UTC (rev 69009)
@@ -12,7 +12,7 @@
 %%
 %% The Current Maintainer of this work is Alceu Frigeri
 %%
-%% This is version {2.0} {2023/11/23}
+%% This is version {2.1} {2023/11/30}
 %%
 %% The list of files that compose this work can be found in the README.md file at
 %% https://ctan.org/pkg/ufrgscca
@@ -27,8 +27,8 @@
 
 \ProvidesExplPackage
     {ufrgscca-abnt}
-    {2023/11/23}
-    {2.0}
+    {2023/11/30}
+    {2.1}
     {UFRGS/CCA ABNT layout}
 
 
@@ -42,8 +42,8 @@
   {
      name        .code:n = {ufrgscca-abnt} ,
      prefix      .code:n = {ufrgscca} ,
-     date        .code:n = {2023/11/23},
-     version     .code:n = {2.0} ,
+     date        .code:n = {2023/11/30},
+     version     .code:n = {2.1} ,
      description .code:n = {UFRGS/CCA~ abnt~layout}
   }
 \cs_if_exist:NF \__codedesc_pkg_info:nn 
@@ -812,6 +812,20 @@
   			October\or November\or December
   		\fi
     }
+    \cs_new_protected:Npn \__ufrgscca_weekday:n #1 
+      {
+        \int_case:nnF {#1}
+          {
+            {0}{Monday}
+            {1}{Tuesday}
+            {2}{Wednsday}
+            {3}{Thursday}
+            {4}{Friday}
+            {5}{Saturday}
+            {6}{Sunday}
+          }
+          {-none-}
+      }
   }
   {
   	\def\today{\number\day\space de\space\monthname\space de\space\number\year}
@@ -822,6 +836,20 @@
   			Outubro\or Novembro\or Dezembro
   		\fi
     }
+    \cs_new_protected:Npn \__ufrgscca_weekday:n #1 
+      {
+        \int_case:nnF {#1}
+          {
+            {0}{Segunda}
+            {1}{Terça}
+            {2}{Quarta}
+            {3}{Quinta}
+            {4}{Sexta}
+            {5}{Sábado}
+            {6}{Domingo}
+          }
+          {-none-}
+      }
   }
 
 

Modified: trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-base-en.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-base-en.def	2023-11-30 21:05:17 UTC (rev 69008)
+++ trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-base-en.def	2023-11-30 21:05:30 UTC (rev 69009)
@@ -12,7 +12,7 @@
 %%
 %% The Current Maintainer of this work is Alceu Frigeri
 %%
-%% This is version {2.0} {2023/11/23}
+%% This is version {2.1} {2023/11/30}
 %%
 %% The list of files that compose this work can be found in the README.md file at
 %% https://ctan.org/pkg/ufrgscca

Modified: trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-base-ptBR.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-base-ptBR.def	2023-11-30 21:05:17 UTC (rev 69008)
+++ trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-base-ptBR.def	2023-11-30 21:05:30 UTC (rev 69009)
@@ -12,7 +12,7 @@
 %%
 %% The Current Maintainer of this work is Alceu Frigeri
 %%
-%% This is version {2.0} {2023/11/23}
+%% This is version {2.1} {2023/11/30}
 %%
 %% The list of files that compose this work can be found in the README.md file at
 %% https://ctan.org/pkg/ufrgscca

Modified: trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-coord.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-coord.sty	2023-11-30 21:05:17 UTC (rev 69008)
+++ trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-coord.sty	2023-11-30 21:05:30 UTC (rev 69009)
@@ -12,7 +12,7 @@
 %%
 %% The Current Maintainer of this work is Alceu Frigeri
 %%
-%% This is version {2.0} {2023/11/23}
+%% This is version {2.1} {2023/11/30}
 %%
 %% The list of files that compose this work can be found in the README.md file at
 %% https://ctan.org/pkg/ufrgscca
@@ -27,8 +27,8 @@
 
 \ProvidesExplPackage
     {ufrgscca-coord}
-    {2023/11/23}
-    {2.0}
+    {2023/11/30}
+    {2.1}
     {UFRGS/CCA coord commands}
 
 
@@ -42,8 +42,8 @@
   {
      name        .code:n = {ufrgscca-coord} ,
      prefix      .code:n = {ufrgscca} ,
-     date        .code:n = {2023/11/23},
-     version     .code:n = {2.0} ,
+     date        .code:n = {2023/11/30},
+     version     .code:n = {2.1} ,
      description .code:n = {UFRGS/CCA~ coordination~ report~ commands}
   }
 \cs_if_exist:NF \__codedesc_pkg_info:nn 
@@ -118,7 +118,9 @@
 
 \RequirePackage{longtable}
 \RequirePackage{multirow}
+\RequirePackage{pgfcalendar}
 
+
 \RequirePackage{ufrgscca-core}
 \RequirePackage{ufrgscca-forms}
 %\RequirePackage{pgfcalendar}
@@ -125,6 +127,57 @@
 
 %
 
+
+\starray_new:n {prof}
+\starray_def_from_keyval:nn {prof}
+ {
+   last = ,
+   first = ,
+   gender = ,
+ }
+ 
+\NewDocumentCommand{\professor}{O{}mmO{}}
+  {
+    \starray_new_term:nn {prof}{#1}
+    \starray_set_from_keyval:nn {prof}
+      {
+        last = {#2},
+        first = {#3},
+        gender = {#4},
+      }
+  }
+
+\cs_new_protected:Npn \__ufrgscca_prof_ref_set:nnnn #1#2#3#4
+  {  #1 {#2}{#3}[#4]  }
+  
+\cs_generate_variant:Nn \__ufrgscca_prof_ref_set:nnnn {eeee}  
+
+\cs_new_protected:Npn \__ufrgscca_prof_ref:nn #1#2
+  {
+    \starray_set_iter_from_hash:nnTF {prof}{#2}
+      {
+        \starray_term_syntax:n {prof}
+        \__ufrgscca_prof_ref_set:eeee {#1}{\starray_parsed_get_prop:n{last}}{\starray_parsed_get_prop:n{first}}{\starray_parsed_get_prop:n{gender}}
+      }
+      {
+        #1{definido:(#2)}{não}
+      }    
+  }
+
+\NewDocumentCommand{\advisorprof}{m}
+  {  \__ufrgscca_prof_ref:nn {\advisor}{#1}  }
+
+\NewDocumentCommand{\coadvisorprof}{m}
+  {  \__ufrgscca_prof_ref:nn {\coadvisor}{#1}  }
+  
+\NewDocumentCommand{\examinerprof}{m}
+  {  \__ufrgscca_prof_ref:nn {\examiner}{#1}  }
+  
+\NewDocumentCommand{\altexaminerprof}{m}
+  {  \__ufrgscca_prof_ref:nn {\altexaminer}{#1}  }
+
+
+
 \NewDocumentCommand{\ActivitySetNewEvent}{O{}mm}{
   \tl_if_blank:nTF {#1}
     {
@@ -205,6 +258,7 @@
         }
     }
     { %% in case of none of above...
+      \emptytermifnone[3]{student.reviewer}[\starray_gset_prop:nnn {student}{flag-null}{\c_true_bool}]
       \__ufrgscca_studentgrade:
     }
 }%%
@@ -215,62 +269,101 @@
 \tl_new:N \l__ufrgscca_tmpd_tl
 \cs_new_protected:Npn \__ufrgscca_studentgrade: 
     {
-      %(\DataFields{student}{name})\par
-      \starray_term_syntax:n {student.reviewer[1]}
-      \tl_set:Ne \l__ufrgscca_tmpa_tl {\starray_parsed_get_prop:n {grade}}
-      \starray_term_syntax:n {student.reviewer[2]}
-      \tl_set:Ne \l__ufrgscca_tmpb_tl {\starray_parsed_get_prop:n {grade}}
-      \starray_term_syntax:n {student.reviewer[3]}
-      \tl_set:Ne \l__ufrgscca_tmpc_tl {\starray_parsed_get_prop:n {grade}}
-      \int_case:nn {\starray_parsed_get_prop:n {gradetype}}
+      \starray_term_syntax:n {student}
+      \bool_if:nTF {\starray_parsed_get_prop:n {flag-null}}
         {
-          {1}
+           \starray_gset_prop:nnn {student}{grade}{D*}
+        }
+        {
+          %(\DataFields{student}{name})\par
+          \starray_term_syntax:n {student.reviewer[1]}
+          \tl_set:Ne \l__ufrgscca_tmpa_tl {\starray_parsed_get_prop:n {grade}}
+          \starray_term_syntax:n {student.reviewer[2]}
+          \tl_set:Ne \l__ufrgscca_tmpb_tl {\starray_parsed_get_prop:n {grade}}
+          \starray_term_syntax:n {student.reviewer[3]}
+          \tl_set:Ne \l__ufrgscca_tmpc_tl {\starray_parsed_get_prop:n {grade}}
+          \str_case:nnF {\starray_parsed_get_prop:n {gradetype}}
             {
-              \tl_set:Ne \l__ufrgscca_tmpd_tl
-                {\fpeval{round(((\l__ufrgscca_tmpb_tl + \l__ufrgscca_tmpc_tl)/2),2,1)}}
+              {1}
+                {
+                  \tl_set:Ne \l__ufrgscca_tmpd_tl
+                    {\fpeval{round(((\l__ufrgscca_tmpb_tl + \l__ufrgscca_tmpc_tl)/2),2,1)}}
+                }
+              {2}
+                {
+                  \tl_set:Ne \l__ufrgscca_tmpd_tl
+                    {\fpeval{round(((\l__ufrgscca_tmpa_tl + \l__ufrgscca_tmpb_tl + \l__ufrgscca_tmpc_tl)/3),2,1)}}
+                }
             }
-          {2}
-            {
-              \tl_set:Ne \l__ufrgscca_tmpd_tl
-                {\fpeval{round(((\l__ufrgscca_tmpa_tl + \l__ufrgscca_tmpb_tl + \l__ufrgscca_tmpc_tl)/3),2,1)}}
+            {  \tl_set:Nn \l__ufrgscca_tmpd_tl {0} }
+            
+          \starray_gset_prop:nne {student}{gradeavrg}{\l__ufrgscca_tmpd_tl}
+          \fp_compare:nNnTF {\l__ufrgscca_tmpd_tl} < {\UseConst{NgradeC}}
+            { % D
+              \starray_gset_prop:nnn {student}{grade}{D}
             }
-        }
-      \starray_gset_prop:nne {student}{gradeavrg}{\l__ufrgscca_tmpd_tl}
-      \fp_compare:nNnTF {\l__ufrgscca_tmpd_tl} < {\UseConst{NgradeC}}
-        { % D
-          \starray_gset_prop:nnn {student}{grade}{D}
-        }
-        {
-          \fp_compare:nNnTF {\l__ufrgscca_tmpd_tl} < {\UseConst{NgradeB}}
-            { % C
-              \starray_gset_prop:nnn {student}{grade}{C}
-              \starray_gset_prop:nnn {student}{flag-approved}{\c_true_bool}
-            }
             {
-              \fp_compare:nNnTF {\l__ufrgscca_tmpd_tl} < {\UseConst{NgradeA}}
-                { % B
-                  \starray_gset_prop:nnn {student}{grade}{B}
+              \fp_compare:nNnTF {\l__ufrgscca_tmpd_tl} < {\UseConst{NgradeB}}
+                { % C
+                  \starray_gset_prop:nnn {student}{grade}{C}
                   \starray_gset_prop:nnn {student}{flag-approved}{\c_true_bool}
                 }
-                { % A
-                  \starray_gset_prop:nnn {student}{grade}{A}
-                  \starray_gset_prop:nnn {student}{flag-approved}{\c_true_bool}
+                {
+                  \fp_compare:nNnTF {\l__ufrgscca_tmpd_tl} < {\UseConst{NgradeA}}
+                    { % B
+                      \starray_gset_prop:nnn {student}{grade}{B}
+                      \starray_gset_prop:nnn {student}{flag-approved}{\c_true_bool}
+                    }
+                    { % A
+                      \starray_gset_prop:nnn {student}{grade}{A}
+                      \starray_gset_prop:nnn {student}{flag-approved}{\c_true_bool}
+                    }
                 }
             }
         }
+      \starray_gset_prop:nnn {student}{flag-graded}{\c_true_bool}
+    }
 
-        \starray_gset_prop:nnn {student}{flag-graded}{\c_true_bool}
+
+\cs_new_protected:Npn \__ufrgscca_set_timeslot:nnnn #1#2#3#4
+  {
+  \starray_gset_from_keyval:nn {student}
+    {
+      board-local = {#1} ,
+      board-time = {#2} ,
+      board-date = {#3} ,
     }
-%
+    \SetConsts {
+      date:#3 = {\__ufrgscca_weekday:n {#4}} ,
+    }    
+  }
+\cs_generate_variant:Nn \__ufrgscca_set_timeslot:nnnn {nnee}    
+
+
+\seq_new:N \l__ufrgscca_cal_seq
+\newcount\l__ufrgscca_day_counter
+\newcount\l__ufrgscca_weekday_counter
 \NewDocumentCommand{\timeslot}{O{}mm}{%%
-  \starray_gset_from_keyval:nn {student}
+  \seq_set_split:Nnn \l__ufrgscca_cal_seq {/} {#2}
+  \int_case:nnF {\seq_count:N \l__ufrgscca_cal_seq}
     {
-      board-local = #1 ,
-      board-date = #2 ,
-      board-time = #3 ,
+      {2}{ \seq_put_right:Ne \l__ufrgscca_cal_seq {\number\year}  }
+      {3}{}
     }
+    {
+      \seq_clear:N \l__ufrgscca_cal_seq
+      \seq_put_right:Nn \l__ufrgscca_cal_seq {31}
+      \seq_put_right:Nn \l__ufrgscca_cal_seq {12}
+      \seq_put_right:Ne \l__ufrgscca_cal_seq {\number\year}
+    }
+  \seq_reverse:N \l__ufrgscca_cal_seq
+  \pgfcalendardatetojulian{\seq_use:Nn \l__ufrgscca_cal_seq {-}}{\l__ufrgscca_day_counter}
+  \pgfcalendarjuliantoweekday{\the\l__ufrgscca_day_counter}{\l__ufrgscca_weekday_counter}
+  \seq_reverse:N \l__ufrgscca_cal_seq
+  \seq_pop_right:NN \l__ufrgscca_cal_seq \l_tmpa_tl
+
+  \__ufrgscca_set_timeslot:nnee {#1}{#3}{\seq_use:Nn \l__ufrgscca_cal_seq {/}}{\the\l__ufrgscca_weekday_counter}
 }%
-%
 
 
 
@@ -337,12 +430,14 @@
   }
 }%
 
-
-\NewDocumentCommand{\boarddate}{mm}{%%
-  \SetConsts{%
-    date:#1 = {#2} ,
-  }
-}%
+%%
+%% DEPRECATED, to be removed.
+%%
+%\NewDocumentCommand{\boarddate}{mm}{%%
+%  \SetConsts{%
+%    date:#1 = {#2} ,
+%  }
+%}%
 %
 \NewDocumentCommand{\semester}{m}{%%
   \SetTerms{%
@@ -384,7 +479,10 @@
 
 \NewDocumentCommand{\examinergrades}{mmmO{}}{
   \tl_if_blank:nTF {#1}
-    { \starray_gset_prop:nnn {student.reviewer}{grade}{0} }
+    { 
+      \starray_gset_prop:nnn {student.reviewer}{grade}{0} 
+      \starray_gset_prop:nnn {student}{flag-null}{\c_true_bool} 
+    }
     {
       \tl_if_blank:nTF {#4}
         { %% 3 grades, TCC II
@@ -419,35 +517,64 @@
   
 }
 
+\tl_new:N \l__ufrgscca_sortA_tl
+\tl_new:N \l__ufrgscca_sortB_tl
 
-\NewDocumentCommand{\setstudentlist}{O{tcc}mm}{
-  \seq_new:c {l__ufrgscca_#2_seq}
-  \seq_new:c {l__ufrgscca_#2_ff_seq}
-  \seq_new:c {l__ufrgscca_#2_dismiss_seq}
-  \seq_new:c {l__ufrgscca_#2_graded_seq}
+\NewDocumentCommand{\setstudentlist}{sO{tcc}mm}{
+  \seq_new:c {l__ufrgscca_#3_seq}
+  \seq_new:c {l__ufrgscca_#3_ff_seq}
+  \seq_new:c {l__ufrgscca_#3_dismiss_seq}
+  \seq_new:c {l__ufrgscca_#3_graded_seq}
   
-  \seq_gset_from_clist:cn {l__ufrgscca_#2_seq}{#3}
-  \str_case:nn {#1}
+  \clist_map_inline:nn {#4}
+    {
+      \starray_set_iter_from_hash:nnT {student}{##1}
+        {  
+          \seq_put_right:cn {l__ufrgscca_#3_seq} {##1} 
+          \emptytermifnone{student.advisor}
+          \emptytermifnone[3]{student.reviewer}[\starray_gset_prop:nnn {student}{flag-null}{\c_true_bool}]
+          \emptytermifnone{student.altreviewer}
+        }
+    }
+%  \seq_gset_from_clist:cn {l__ufrgscca_#3_seq}{#4}
+
+  \bool_if:nT {#1}
+    {  
+      \seq_gsort:cn {l__ufrgscca_#3_seq }
+        {
+          \starray_set_iter_from_hash:nn {student}{##1}
+          \starray_get_prop:nnN {student}{name} \l__ufrgscca_sortA_tl
+          \starray_set_iter_from_hash:nn {student}{##2}
+          \starray_get_prop:nnN {student}{name} \l__ufrgscca_sortB_tl          
+          \str_compare:eNeTF { \l__ufrgscca_sortA_tl } > { \l__ufrgscca_sortB_tl }
+            { \sort_return_swapped: }
+            { \sort_return_same: }
+        }
+    }
+  
+  
+  
+  \str_case:nn {#2}
   {
     {tcc} 
       {
-        \seq_map_tokens:cn {l__ufrgscca_#2_seq} {\__ufrgscca_grade:n}
-        \seq_map_tokens:cn {l__ufrgscca_#2_seq} {\__ufrgscca_listclassify:nn {#2}}
+        \seq_map_tokens:cn {l__ufrgscca_#3_seq} {\__ufrgscca_grade:n}
+        \seq_map_tokens:cn {l__ufrgscca_#3_seq} {\__ufrgscca_listclassify:nn {#3}}
       }
     {tccI} 
       {
-        \seq_map_tokens:cn {l__ufrgscca_#2_seq} {\__ufrgscca_grade:n}
-        \seq_map_tokens:cn {l__ufrgscca_#2_seq} {\__ufrgscca_listclassify:nn {#2}}
+        \seq_map_tokens:cn {l__ufrgscca_#3_seq} {\__ufrgscca_grade:n}
+        \seq_map_tokens:cn {l__ufrgscca_#3_seq} {\__ufrgscca_listclassify:nn {#3}}
       }
     {tccII} 
       {
-        \seq_map_tokens:cn {l__ufrgscca_#2_seq} {\__ufrgscca_grade:n}
-        \seq_map_tokens:cn {l__ufrgscca_#2_seq} {\__ufrgscca_listclassify:nn {#2}}
+        \seq_map_tokens:cn {l__ufrgscca_#3_seq} {\__ufrgscca_grade:n}
+        \seq_map_tokens:cn {l__ufrgscca_#3_seq} {\__ufrgscca_listclassify:nn {#3}}
       }
     {intern}
       {  %% TO BE IMPLEMENTED !!!
-        \seq_map_tokens:cn {l__ufrgscca_#2_seq} {\__ufrgscca_grade:n}
-        \seq_map_tokens:cn {l__ufrgscca_#2_seq} {\__ufrgscca_listclassify:nn {#2}}
+        \seq_map_tokens:cn {l__ufrgscca_#3_seq} {\__ufrgscca_grade:n}
+        \seq_map_tokens:cn {l__ufrgscca_#3_seq} {\__ufrgscca_listclassify:nn {#3}}
       }
   }
 }
@@ -455,7 +582,7 @@
 \cs_new_protected:Npn \__ufrgscca_grade:n #1 
     {
       \starray_set_iter_from_hash:nn {student}{#1}
-      \starray_term_syntax:n {student[#1]}
+      \starray_term_syntax:n {student}
       \bool_if:nF {\starray_parsed_get_prop:n {flag-graded}}
         { \__ufrgscca_studentgrade: }        
     }

Modified: trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-core.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-core.sty	2023-11-30 21:05:17 UTC (rev 69008)
+++ trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-core.sty	2023-11-30 21:05:30 UTC (rev 69009)
@@ -12,7 +12,7 @@
 %%
 %% The Current Maintainer of this work is Alceu Frigeri
 %%
-%% This is version {2.0} {2023/11/23}
+%% This is version {2.1} {2023/11/30}
 %%
 %% The list of files that compose this work can be found in the README.md file at
 %% https://ctan.org/pkg/ufrgscca
@@ -27,8 +27,8 @@
 
 \ProvidesExplPackage
     {ufrgscca-core}
-    {2023/11/23}
-    {2.0}
+    {2023/11/30}
+    {2.1}
     {UFRGS/CCA core commands}
 
 
@@ -42,8 +42,8 @@
   {
      name        .code:n = {ufrgscca-core} ,
      prefix      .code:n = {ufrgscca} ,
-     date        .code:n = {2023/11/23},
-     version     .code:n = {2.0} ,
+     date        .code:n = {2023/11/30},
+     version     .code:n = {2.1} ,
      description .code:n = {UFRGS/CCA~core~commands/data}
   }
 \cs_if_exist:NF \__codedesc_pkg_info:nn 
@@ -126,11 +126,12 @@
   checklist = , %%% This shall be a property list of check items
   brief = \BlankLines{6} ,
   reason = \BlankLines{6} ,
-  board-local = {local ~da~ apresentação} ,
-  board-date   = {dia~ da~ apresentação} ,
-  board-time  = {hora~da~apresentação} ,
+  board-local = {local} ,
+  board-date   = {dia} ,
+  board-time  = {hora} ,
   gradeavrg = 0,
   grade = ,
+  flag-null = \c_false_bool , %% IF no grade was given
   flag-graded = \c_false_bool , %%% IF gradeavrg AND finalgrade already calculated (or defined)
   flag-exam = \c_false_bool ,
   flag-ff = \c_false_bool ,
@@ -336,7 +337,11 @@
   \starray_get_prop:nn {activity.calendar}{date} & \starray_get_prop:nn {activity.calendar}{week} & \starray_get_prop:nn {activity.calendar}{event}
 }
 
+\NewDocumentCommand{\ActivityCalendarIterate}{m}{
+    \starray_iterate_over:nn{activity.calendar}{#1}
+}
 
+
 %
 \cs_new_protected:Npn \__ufrgscca_setgender:nn #1#2 
   {
@@ -490,7 +495,34 @@
       }
   }
 
+\cs_new_protected:Npn \__ufrgscca_emptyterm_if_none:nnn #1#2#3
+  {
+    \starray_get_cnt:nN {#2} \l_tmpa_int
+    \int_while_do:nNnn {\l_tmpa_int} < {#1}
+      { 
+        \starray_new_term:nn {#2}{} 
+        #3
+        \starray_get_cnt:nN {#2} \l_tmpa_int
+      }
+  }
 
+\NewDocumentCommand{\emptytermifnone}{O{1}mO{}}
+  {
+    \__ufrgscca_emptyterm_if_none:nnn {#1}{#2}{#3}
+  }
+
+\cs_new_protected:Npn \__ufrgscca_student_emptyfields_if_none:
+  {
+    \__ufrgscca_emptyterm_if_none:nnn {1}{student}{}
+    \__ufrgscca_emptyterm_if_none:nnn {1}{student.advisor}{}
+    \__ufrgscca_emptyterm_if_none:nnn {3}{student.reviewer}{}
+    \__ufrgscca_emptyterm_if_none:nnn {1}{student.altreviewer}{}
+    \__ufrgscca_emptyterm_if_none:nnn {1}{student.tutor}{}
+    \__ufrgscca_emptyterm_if_none:nnn {1}{student.supervisor}{}
+    \__ufrgscca_emptyterm_if_none:nnn {1}{student.internship}{}
+  }
+
+
 \NewDocumentCommand{\advisor}{O{}mmO{}}{%%
   \starray_new_term:nn {student.advisor}{}
   \__ufrgscca_set_prof:nnnnn {advisor}{#1}{#2}{#3}{#4}
@@ -518,12 +550,12 @@
 }%
 
 
-\NewDocumentCommand{\coadvisoremptyifnone}{}{%%
-  \starray_get_cnt:nN {student.coadvisor} \l_tmpa_int
-  \int_if_zero:nTF \l_tmpa_int
-    { \starray_new_term:nn {student.coadvisor}{} }
-    {}
-}%
+%%%\NewDocumentCommand{\coadvisoremptyifnone}{}{%%
+%%%  \starray_get_cnt:nN {student.coadvisor} \l_tmpa_int
+%%%  \int_if_zero:nTF \l_tmpa_int
+%%%    { \starray_new_term:nn {student.coadvisor}{} }
+%%%    {}
+%%%}%
 
 
 \NewDocumentCommand{\tutor}{O{}mmO{}}{%%
@@ -535,10 +567,12 @@
   \__ufrgscca_set_prof_info:nnnnn {tutor}{#1}{#2}{#3}{#4}
 }%
 
+
 \NewDocumentCommand{\supervisor}{O{}mmO{}}{%%
   \starray_new_term:nn {student.supervisor}{}
   \__ufrgscca_set_prof:nnnnn {supervisor}{#1}{#2}{#3}{#4}
-}%
+}
+
 \NewDocumentCommand{\supervisorinfo}{mmmm}{%%
     \starray_gset_from_keyval:nn {student.supervisor}
       {
@@ -548,6 +582,7 @@
         phone = {#4} ,
       }
 }%
+
 \NewDocumentCommand{\internship}{mmmmm}{%%
     \starray_new_term:nn {student.internship}{}
     \starray_gset_from_keyval:nn {student.internship}
@@ -564,6 +599,7 @@
   \starray_new_term:nn {student.reviewer}{}
   \__ufrgscca_set_prof:nnnnn {reviewer}{#1}{#2}{#3}{#4}
 }%
+
 \NewDocumentCommand{\examinerinfo}{mmmm}{%%
   \__ufrgscca_set_prof_info:nnnnn {reviewer}{#1}{#2}{#3}{#4}
 }%

Modified: trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-cover.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-cover.sty	2023-11-30 21:05:17 UTC (rev 69008)
+++ trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-cover.sty	2023-11-30 21:05:30 UTC (rev 69009)
@@ -12,7 +12,7 @@
 %%
 %% The Current Maintainer of this work is Alceu Frigeri
 %%
-%% This is version {2.0} {2023/11/23}
+%% This is version {2.1} {2023/11/30}
 %%
 %% The list of files that compose this work can be found in the README.md file at
 %% https://ctan.org/pkg/ufrgscca
@@ -27,8 +27,8 @@
 
 \ProvidesExplPackage
     {ufrgscca-cover}
-    {2023/11/23}
-    {2.0}
+    {2023/11/30}
+    {2.1}
     {UFRGS/CCA cover commands}
 
 
@@ -42,8 +42,8 @@
   {
      name        .code:n = {ufrgscca-cover} ,
      prefix      .code:n = {ufrgscca} ,
-     date        .code:n = {2023/11/23},
-     version     .code:n = {2.0} ,
+     date        .code:n = {2023/11/30},
+     version     .code:n = {2.1} ,
      description .code:n = {UFRGS/CCA~ cover~pages}
   }
 \cs_if_exist:NF \__codedesc_pkg_info:nn 
@@ -92,6 +92,7 @@
 
 \NewDocumentCommand{\MakeCoverPages}{m} 
   {
+    \__ufrgscca_student_emptyfields_if_none:
     \seq_set_from_clist:Ne \l__ufrgscca_tmp_seq {\prop_item:Nn \l__ufrgscca_coverpages_prop {#1.clist} }
 
     \seq_map_inline:Nn \l__ufrgscca_tmp_seq 

Modified: trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-curr.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-curr.sty	2023-11-30 21:05:17 UTC (rev 69008)
+++ trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-curr.sty	2023-11-30 21:05:30 UTC (rev 69009)
@@ -12,7 +12,7 @@
 %%
 %% The Current Maintainer of this work is Alceu Frigeri
 %%
-%% This is version {2.0} {2023/11/23}
+%% This is version {2.1} {2023/11/30}
 %%
 %% The list of files that compose this work can be found in the README.md file at
 %% https://ctan.org/pkg/ufrgscca
@@ -27,8 +27,8 @@
 
 \ProvidesExplPackage
     {ufrgscca-curr}
-    {2023/11/23}
-    {2.0}
+    {2023/11/30}
+    {2.1}
     {UFRGS/CCA curricula commands}
 
 %%%%%%%
@@ -41,8 +41,8 @@
   {
      name        .code:n = {ufrgscca-curr} ,
      prefix      .code:n = {ufrgscca} ,
-     date        .code:n = {2023/11/23},
-     version     .code:n = {2.0} ,
+     date        .code:n = {2023/11/30},
+     version     .code:n = {2.1} ,
      description .code:n = {UFRGS/CCA~ curricula~ commands}
   }
 \cs_if_exist:NF \__codedesc_pkg_info:nn

Modified: trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-forms.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-forms.sty	2023-11-30 21:05:17 UTC (rev 69008)
+++ trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-forms.sty	2023-11-30 21:05:30 UTC (rev 69009)
@@ -12,7 +12,7 @@
 %%
 %% The Current Maintainer of this work is Alceu Frigeri
 %%
-%% This is version {2.0} {2023/11/23}
+%% This is version {2.1} {2023/11/30}
 %%
 %% The list of files that compose this work can be found in the README.md file at
 %% https://ctan.org/pkg/ufrgscca
@@ -27,8 +27,8 @@
 
 \ProvidesExplPackage
     {ufrgscca-forms}
-    {2023/11/23}
-    {2.0}
+    {2023/11/30}
+    {2.1}
     {UFRGS/CCA forms commands}
    
     
@@ -42,8 +42,8 @@
   {
      name        .code:n = {ufrgscca-forms} ,
      prefix      .code:n = {ufrgscca} ,
-     date        .code:n = {2023/11/23},
-     version     .code:n = {2.0} ,
+     date        .code:n = {2023/11/30},
+     version     .code:n = {2.1} ,
      description .code:n = {UFRGS/CCA~ forms~commands}
   }
 \cs_if_exist:NF \__codedesc_pkg_info:nn 
@@ -160,6 +160,7 @@
 
 
 \NewDocumentCommand{\tcforms}{m}{%
+  \__ufrgscca_student_emptyfields_if_none:
   \SetKeys[forms]{#1}%
 }
 

Modified: trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-lists.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-lists.sty	2023-11-30 21:05:17 UTC (rev 69008)
+++ trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-lists.sty	2023-11-30 21:05:30 UTC (rev 69009)
@@ -12,7 +12,7 @@
 %%
 %% The Current Maintainer of this work is Alceu Frigeri
 %%
-%% This is version {2.0} {2023/11/23}
+%% This is version {2.1} {2023/11/30}
 %%
 %% The list of files that compose this work can be found in the README.md file at
 %% https://ctan.org/pkg/ufrgscca
@@ -27,8 +27,8 @@
 
 \ProvidesExplPackage
     {ufrgscca-lists}
-    {2023/11/23}
-    {2.0}
+    {2023/11/30}
+    {2.1}
     {UFRGS/CCA auxiliary lists commands}
 
 
@@ -42,8 +42,8 @@
   {
      name        .code:n = {ufrgscca-lists} ,
      prefix      .code:n = {ufrgscca} ,
-     date        .code:n = {2023/11/23} ,
-     version     .code:n = {2.0} ,
+     date        .code:n = {2023/11/30} ,
+     version     .code:n = {2.1} ,
      description .code:n = {UFRGS/CCA~Auxiliary~ lists~ commands}
   }
 \cs_if_exist:NF \__codedesc_pkg_info:nn 

Modified: trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-ppc.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-ppc.sty	2023-11-30 21:05:17 UTC (rev 69008)
+++ trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-ppc.sty	2023-11-30 21:05:30 UTC (rev 69009)
@@ -12,7 +12,7 @@
 %%
 %% The Current Maintainer of this work is Alceu Frigeri
 %%
-%% This is version {2.0} {2023/11/23}
+%% This is version {2.1} {2023/11/30}
 %%
 %% The list of files that compose this work can be found in the README.md file at
 %% https://ctan.org/pkg/ufrgscca
@@ -27,8 +27,8 @@
 
 \ProvidesExplPackage
     {ufrgscca-ppc}
-    {2023/11/23}
-    {2.0}
+    {2023/11/30}
+    {2.1}
     {UFRGS/CCA PPC commands}
 
 %%%%%%%
@@ -41,8 +41,8 @@
   {
      name        .code:n = {ufrgscca-ppc} ,
      prefix      .code:n = {ufrgscca} ,
-     date        .code:n = {2023/11/23},
-     version     .code:n = {2.0} ,
+     date        .code:n = {2023/11/30},
+     version     .code:n = {2.1} ,
      description .code:n = {UFRGS/CCA~ auxiliary~ PPC-related~ (indicators)~ commands}
   }
 \cs_if_exist:NF \__codedesc_pkg_info:nn 

Modified: trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca.cls	2023-11-30 21:05:17 UTC (rev 69008)
+++ trunk/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca.cls	2023-11-30 21:05:30 UTC (rev 69009)
@@ -12,7 +12,7 @@
 %%
 %% The Current Maintainer of this work is Alceu Frigeri
 %%
-%% This is version {2.0} {2023/11/23}
+%% This is version {2.1} {2023/11/30}
 %%
 %% The list of files that compose this work can be found in the README.md file at
 %% https://ctan.org/pkg/ufrgscca
@@ -27,8 +27,8 @@
 
 \ProvidesExplClass
     {ufrgscca}
-    {2023/11/23}
-    {2.0}
+    {2023/11/30}
+    {2.1}
     {UFRGS/CCA class}
 
 
@@ -42,8 +42,8 @@
   {
      name        .code:n = {ufrgscca} ,
      prefix      .code:n = {ufrgscca} ,
-     date        .code:n = {2023/11/23},
-     version     .code:n = {2.0} ,
+     date        .code:n = {2023/11/30},
+     version     .code:n = {2.1} ,
      description .code:n = {UFRGS/CCA~a~report~based~class~bundle}
   }
 \cs_if_exist:NF \__codedesc_pkg_info:nn 
@@ -133,6 +133,14 @@
     \prop_put_from_keyval:Nn \l__ufrgscca_const_prop {#1}
   }
 
+\cs_generate_variant:Nn \prop_put:Nnn {Nee}
+\NewDocumentCommand{\eSetConst}{mm}
+  {
+    \prop_put:Nee \l__ufrgscca_const_prop {#1}{#2}
+  }
+
+
+
 \cs_generate_variant:Nn \prop_item:Nn {Ne}
 
   %%



More information about the tex-live-commits mailing list.