summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/ufrgscca
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-12-01 03:00:49 +0000
committerNorbert Preining <norbert@preining.info>2023-12-01 03:00:49 +0000
commitcddec35d9b4df3b6e5a4ebb36db9bab6fd409269 (patch)
treec5c35e2bd772a5f43a4ed3ef3410a49bad1a6829 /macros/latex/contrib/ufrgscca
parentff7e60f3d1af3d5bbcc9c125c01a063391a30cc5 (diff)
CTAN sync 202312010300
Diffstat (limited to 'macros/latex/contrib/ufrgscca')
-rw-r--r--macros/latex/contrib/ufrgscca/README.md8
-rw-r--r--macros/latex/contrib/ufrgscca/doc/ufrgscca.pdfbin586726 -> 588653 bytes
-rw-r--r--macros/latex/contrib/ufrgscca/doc/ufrgscca.tex37
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-abnt.sty38
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-base-en.def2
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-base-ptBR.def2
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-coord.sty263
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-core.sty66
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-cover-ptBR.tex2
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty11
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-curr.sty10
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.sty11
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.tex164
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-lists.sty10
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-ppc.sty10
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-en.tex2
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-ptBR.tex7
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca.cls18
18 files changed, 440 insertions, 221 deletions
diff --git a/macros/latex/contrib/ufrgscca/README.md b/macros/latex/contrib/ufrgscca/README.md
index 02143ca5f7..9ce0b4dcf1 100644
--- a/macros/latex/contrib/ufrgscca/README.md
+++ b/macros/latex/contrib/ufrgscca/README.md
@@ -107,7 +107,13 @@ The Current Maintainer of this work is Alceu Frigeri
## 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)
diff --git a/macros/latex/contrib/ufrgscca/doc/ufrgscca.pdf b/macros/latex/contrib/ufrgscca/doc/ufrgscca.pdf
index 70e38ced7f..b6146a3339 100644
--- a/macros/latex/contrib/ufrgscca/doc/ufrgscca.pdf
+++ b/macros/latex/contrib/ufrgscca/doc/ufrgscca.pdf
Binary files differ
diff --git a/macros/latex/contrib/ufrgscca/doc/ufrgscca.tex b/macros/latex/contrib/ufrgscca/doc/ufrgscca.tex
index e274af87ed..3f27431154 100644
--- a/macros/latex/contrib/ufrgscca/doc/ufrgscca.tex
+++ b/macros/latex/contrib/ufrgscca/doc/ufrgscca.tex
@@ -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 @@ These are, respectively, \tsobj{\starray_get_prop:nn, \starray_term_syntax:n,\st
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,6 +1061,20 @@ These are a set of auxiliary conditionals, for instance, \tsobj{\StudentCase} wi
\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}%
@@ -1166,13 +1186,17 @@ This assigns the \tsobj[meta]{fate} of a student, for those cases that one canno
\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}
@@ -1221,11 +1245,12 @@ Quite obvious, this set the grades given by an examiner (the one defined by the
-\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}
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-abnt.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-abnt.sty
index eba4667270..dce7de584a 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-abnt.sty
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-abnt.sty
@@ -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-}
+ }
}
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-en.def b/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-en.def
index 014860c78f..fcbb674815 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-en.def
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-en.def
@@ -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
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-ptBR.def b/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-ptBR.def
index 8854c1ded8..a75f798851 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-ptBR.def
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-ptBR.def
@@ -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
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-coord.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-coord.sty
index ffb88727a4..a232b45891 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-coord.sty
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-coord.sty
@@ -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,6 +118,8 @@
\RequirePackage{longtable}
\RequirePackage{multirow}
+\RequirePackage{pgfcalendar}
+
\RequirePackage{ufrgscca-core}
\RequirePackage{ufrgscca-forms}
@@ -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}
- {
- \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)}}
- }
- }
- \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: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}
+ %(\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}}
+ {
+ {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)}}
+ }
+ }
+ { \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}
}
{
- \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}
+ {
+ {2}{ \seq_put_right:Ne \l__ufrgscca_cal_seq {\number\year} }
+ {3}{}
+ }
{
- board-local = #1 ,
- board-date = #2 ,
- board-time = #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}{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}
+
+ \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}
-\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}
+ \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: }
+ }
+ }
+
- \seq_gset_from_clist:cn {l__ufrgscca_#2_seq}{#3}
- \str_case:nn {#1}
+
+ \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: }
}
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-core.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-core.sty
index 1972c1d250..92b211cf5c 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-core.sty
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-core.sty
@@ -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,6 +337,10 @@
\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,6 +495,33 @@
}
}
+\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}{}
@@ -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}
}%
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover-ptBR.tex b/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover-ptBR.tex
index cb385e9cc6..1cb8f47293 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover-ptBR.tex
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover-ptBR.tex
@@ -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
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty
index 9cfd99a620..5f33f07558 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty
@@ -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
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr.sty
index 51dd5a43ef..c1d4745907 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr.sty
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr.sty
@@ -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
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.sty
index c5f3afe8e9..38380a97c3 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.sty
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.sty
@@ -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}%
}
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.tex b/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.tex
index 9f822247c9..e6e47ec34e 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.tex
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.tex
@@ -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,22 +194,18 @@ Data de Início: {\bf \DataFields{student.internship}{start}}\hfill Previsão de
\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}
%
\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 @@ Data de Início: {\bf \DataFields{student.internship}{start}}\hfill Previsão de
\scriptsize \UseTerm{notes.calendarI}
}%
}
- \ExplSyntaxOff
%%%
\SetForm{calendar-I}{closing}{\vfill}%
@@ -229,30 +224,24 @@ Data de Início: {\bf \DataFields{student.internship}{start}}\hfill Previsão de
\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}%
\scriptsize \UseTerm{notes.calendarII}
}%
}
- \ExplSyntaxOff
%%%
\SetForm{calendar-II}{closing}{\vfill}%
@@ -316,7 +305,7 @@ Data de Início: {\bf \DataFields{student.internship}{start}}\hfill Previsão de
\SetForm{coadvisor-I}{opening}{%
\UseTerm{opening.requestform}
- \coadvisoremptyifnone
+ \emptytermifnone{student.coadvisor}
}
%%%
@@ -364,7 +353,6 @@ Data de Início: {\bf \DataFields{student.internship}{start}}\hfill Previsão de
\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,39 +542,39 @@ Outras considerações, parecer (se necessário): \BlankLines{6}
%%%%%%%%%%%%%%%
\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}
}
%%%
-\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 @@ Outras considerações, parecer (se necessário): \BlankLines{6}
\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 @@ Outras considerações, parecer (se necessário): \BlankLines{6}
\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 @@ Outras considerações, parecer (se necessário): \BlankLines{6}
%%%
\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 @@ Outras considerações, parecer (se necessário): \BlankLines{6}
\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 @@ A nota (variando de zero a dez) atribuída por cada membro da banca examinadora
\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 @@ A nota (variando de zero a dez) atribuída por cada membro da banca examinadora
}
%%%
-\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 @@ O texto submetido:
~\\\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 @@ O texto submetido:
\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,32 +820,32 @@ O texto submetido:
\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}.
}
}
%%%
-\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 @@ O texto submetido:
}
-\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 @@ O texto submetido:
\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 @@ O texto submetido:
\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 @@ O texto submetido:
}
-\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 @@ O texto submetido:
\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 @@ O texto submetido:
\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,6 +1022,8 @@ O texto submetido:
+\ExplSyntaxOn
+
%%%%%%%%%%%%%%%
%% report TCC - I
@@ -1038,17 +1032,16 @@ O texto submetido:
\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,8 +1069,6 @@ O texto submetido:
}
}
-\ExplSyntaxOff
-
%%%%%%%%%%%%%%%
@@ -1087,17 +1078,16 @@ O texto submetido:
\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,10 +1163,6 @@ O texto submetido:
%%%
\SetForm{checklist-II}{closing}{}
-\ExplSyntaxOff
-
-
-
@@ -1187,7 +1173,6 @@ O texto submetido:
\SetForm{boards}{title}{\UseTerm{board.title}}
\SetForm{boards}{opening}{}
-\ExplSyntaxOn
%%%
\SetForm{boards}{opening}{ %
{\footnotesize
@@ -1202,8 +1187,6 @@ O texto submetido:
\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,13 +1200,14 @@ O texto submetido:
&& \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}
{\scriptsize\UseTerm{board.obs}}
}
}
+
\ExplSyntaxOff
%%%
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-lists.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-lists.sty
index 3d34c7c927..0e00613fe4 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-lists.sty
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-lists.sty
@@ -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
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-ppc.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-ppc.sty
index 34939ff17e..4a176fd236 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-ppc.sty
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-ppc.sty
@@ -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
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-en.tex b/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-en.tex
index 04f3fa11d0..c061c01555 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-en.tex
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-en.tex
@@ -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
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-ptBR.tex b/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-ptBR.tex
index 187a58ebf0..d8cd5d3b24 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-ptBR.tex
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-ptBR.tex
@@ -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{%
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca.cls b/macros/latex/contrib/ufrgscca/latex/ufrgscca.cls
index dd87d1ea35..4aa296e5c4 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca.cls
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca.cls
@@ -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}
%%