diff options
18 files changed, 245 insertions, 177 deletions
diff --git a/Master/texmf-dist/doc/latex/ufrgscca/README.md b/Master/texmf-dist/doc/latex/ufrgscca/README.md index 16b72a2b73d..6c1eac798e6 100644 --- a/Master/texmf-dist/doc/latex/ufrgscca/README.md +++ b/Master/texmf-dist/doc/latex/ufrgscca/README.md @@ -46,7 +46,7 @@ Please do not use the issue page for generic help on how to use the package. * git: https://github.com/alceu-frigeri/ufrgscca ------------- -Copyright 2022-23 by Alceu Frigeri +Copyright 2022-present by Alceu Frigeri This work may be distributed and/or modified under the conditions of @@ -107,7 +107,12 @@ The Current Maintainer of this work is Alceu Frigeri ## Changelog -* Version 2.2 (this) +* Version 2.3 (this) + - adjustments to report's cover + - added two student's list related commands \studentaddtolist and \sortstudentlist (-coord) + - some code clean up + +* Version 2.2 - fixed the reports table broken by last update :/ - added an option to sort student's list (-coord) by presentation's date - further code clean up diff --git a/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-cover-ptBR.tex b/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-cover-ptBR.tex index c0bfe2c643b..e61c119748d 100644 --- a/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-cover-ptBR.tex +++ b/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-cover-ptBR.tex @@ -1,5 +1,5 @@ %%%============================================================================== -%% Copyright 2022-23 by Alceu Frigeri +%% Copyright 2022-present by Alceu Frigeri %% %% This work may be distributed and/or modified under the conditions of %% @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version {2.2} {2023/12/02} +%% This is version {2.3} {2023/12/05} %% %% The list of files that compose this work can be found in the README.md file at %% https://ctan.org/pkg/ufrgscca @@ -107,6 +107,20 @@ \MakeUppercase{\UseHeading{department}}\\ \MakeUppercase{\UseHeading{class.code}~ -~ \UseHeading{class.name}}\\ } , + report.prof-descpage = % + {% + \noindent\raggedleft + \studentAdvCase{% + \UseTerm{professors}:\\ + \studentadvisoriterate% + {% + \DataFields{student.advisor}{name}\\ + } + }{% + \UseTerm{professor}:\\ + \DataFields{student.advisor}{name}\\ + } + } , } \SetTerms{ @@ -293,12 +307,18 @@ CONTROLE~ E~ AUTOMAÇÃO } %%%%%%%%%%%%%%% %%%%%%%%%%%%%%% -\SetCoverFields{class-report}{clist}{cover} +\SetCoverFields{class-report}{clist}{desc} \SetCoverFields{class-report}{top}{ \UseTerm{report.top} } \SetCoverFields{class-report}{students}{ \UseTerm{cover.students} } \SetCoverFields{class-report}{title}{ \UseTerm{cover.title} } \SetCoverFields{class-report}{bottom}{\centering \UseConst{publ.city}\\\UseConst{publ.month}~ \UseConst{publ.year}\par} +\SetCoverFields{class-report}{text-descpage}{ \UseTerm{class-report.desc} } + +\SetCoverFields{class-report}{advisor-descpage}{ \UseTerm{report.prof-descpage} } + +\SetCoverFields{class-report}{bottom-descpage}{\centering \UseConst{publ.city}\\\UseConst{publ.month}~ \UseConst{publ.year}\par} + \SetCoverFields{class-report}{text-approvalpage}{} \SetCoverFields{class-report}{advisor-approvalpage}{} diff --git a/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-forms.tex b/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-forms.tex index c2eff7eaf93..6a3b6573c1d 100644 --- a/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-forms.tex +++ b/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-forms.tex @@ -1,5 +1,5 @@ %%%============================================================================== -%% Copyright 2022-23 by Alceu Frigeri +%% Copyright 2022-present by Alceu Frigeri %% %% This work may be distributed and/or modified under the conditions of %% @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version {2.2} {2023/12/02} +%% This is version {2.3} {2023/12/05} %% %% 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/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-terms-en.tex b/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-terms-en.tex index 357a65e9910..0a5f9557b51 100644 --- a/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-terms-en.tex +++ b/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-terms-en.tex @@ -1,5 +1,5 @@ %%%============================================================================== -%% Copyright 2022-23 by Alceu Frigeri +%% Copyright 2022-present by Alceu Frigeri %% %% This work may be distributed and/or modified under the conditions of %% @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version {2.2} {2023/12/02} +%% This is version {2.3} {2023/12/05} %% %% 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/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-terms-ptBR.tex b/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-terms-ptBR.tex index 4001c9ba940..f054d3473c7 100644 --- a/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-terms-ptBR.tex +++ b/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-terms-ptBR.tex @@ -1,5 +1,5 @@ %%%============================================================================== -%% Copyright 2022-23 by Alceu Frigeri +%% Copyright 2022-present by Alceu Frigeri %% %% This work may be distributed and/or modified under the conditions of %% @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version {2.2} {2023/12/02} +%% This is version {2.3} {2023/12/05} %% %% The list of files that compose this work can be found in the README.md file at %% https://ctan.org/pkg/ufrgscca @@ -159,7 +159,9 @@ Orientador\DataFields{student.advisor}{narticle}} e Banca Examinadora abaixo.% } , internship.title = - { RELATÓRIO DE ESTÁGIO SUPERVISIONADO OBRIGATÓRIO EM ENG. DE CONTROLE E AUTOMAÇÃO } , + { \centering\textbf{% + RELATÓRIO DE ESTÁGIO SUPERVISIONADO OBRIGATÓRIO, DESENVOLVIDO\\DE \DataFields{student.internship}{start} ATÉ \DataFields{student.internship}{end} } + }, internship.text-approvalpage = { Este Relatório foi julgado adequado para a obtenção do conceito final na Atividade de Estágio Supervisionado Obrigatório em Eng. de Controle e Automação e aprovado em sua forma final pel\DataFields{student.tutor}{article} @@ -171,7 +173,9 @@ e Automação e aprovado em sua forma final pel\DataFields{student.tutor}{article} Tutor\DataFields{student.tutor}{narticle} e Supervisor\DataFields{student.supervisor}{narticle}.% } , internship-opt.title = - { RELATÓRIO DE ESTÁGIO SUPERVISIONADO NÂO OBRIGATÓRIO EM ENG. DE CONTROLE E AUTOMAÇÃO } , + { \centering\textbf{% + RELATÓRIO DE ESTÁGIO SUPERVISIONADO NÂO OBRIGATÓRIO, DESENVOLVIDO\\DE \DataFields{student.internship}{start} ATÉ \DataFields{student.internship}{end} } + }, } @@ -183,47 +187,49 @@ \SetLabels{% - advisor = Orientador\DataFields{student.advisor}{narticle} , - advisors = Orientadores , - advisor.gen = Orientador(a) , - advisor.email = Email d\DataFields{student.advisor}{article} Orientador\DataFields{student.advisor}{narticle} , - coadvisor = Coorientador\DataFields{student.coadvisor}{narticle} , - coadvisor.gen = Coorientador(a) , - coadvisor.email = Email d\DataFields{student.coadvisor}{article} Coorientador\DataFields{student.coadvisor}{narticle} , - reviewer.base = Avaliador , - reviewer = Avaliador\DataFields{student.reviewer}{narticle} , - altreviewer = Suplente , - altreviewer.sig = Avaliador\DataFields{student.altreviewer}{narticle} , - tutor = Tutor\DataFields{student.tutor}{narticle} , - tutor.gen = Tutor(a) , - tutor.email = Email d\DataFields{student.tutor}{article} Tutor\DataFields{student.tutor}{narticle} , - supervisor = Supervisor\DataFields{student.supervisor}{narticle} , - supervisor.gen = Supervisor(a) , - student = Alun\DataFields{student}{article} , - student.gen = Aluno(a) , - student.email = Email d\DataFields{student}{article} Alun\DataFields{student}{article} , - student.ID = Cartão , - signature.gen = Assinatura , - signature.student = Assinatura\ \ d\DataFields{student}{article}\ \ Alun\DataFields{student}{article} , - signature.student.gen = Assinatura\ \ do(a)\ \ Aluno(a) , - signature.advisor = Assinatura\ \ d\DataFields{student.advisor}{article}\ \ Orientador\DataFields{student.advisor}{narticle} , - signature.coadvisor = Assinatura\ \ d\DataFields{student.coadvisor}{article}\ \ Coorientador\DataFields{student.coadvisor}{narticle} , - signature.reviewer = Assinatura\ \ d\DataFields{student.reviewer}{article}\ \ Avaliador\DataFields{student.reviewer}{narticle} , - signature.board = Assinatura\ \ do\ \ Membro\ \ da\ \ Banca , - signature.gen = Assinatura , - signature.supervisor = Assinatura\ \ d\DataFields{student.supervisor}{article}\ \ Supervisor\DataFields{student.supervisor}{narticle} , - signature.tutor = Assinatura\ \ d\DataFields{student.tutor}{article}\ \ Tutor\DataFields{student.tutor}{narticle} , - signature.internshipcoord = Assinatura\ \ d\ActivityCoord[internship]{article}\ \ Coordenador\ActivityCoord[internship]{narticle} , - worktitle = Título do Trabalho , - worktitle.temp = Título Provisório , - email = Email , - phone = ramal , - board = Banca Examinadora , - board.member = Membro da Banca , - agree = De Acordo , - Nproc = SEI , - remarks = remarks , - boardtime.gen = Horário , + professor = {Professor\DataFields{student.advisor}{narticle}} , + professors = {Professores} , + advisor = {Orientador\DataFields{student.advisor}{narticle}} , + advisors = {Orientadores} , + advisor.gen = {Orientador(a)} , + advisor.email = {Email d\DataFields{student.advisor}{article} Orientador\DataFields{student.advisor}{narticle}} , + coadvisor = {Coorientador\DataFields{student.coadvisor}{narticle}} , + coadvisor.gen = {Coorientador(a)} , + coadvisor.email = {Email d\DataFields{student.coadvisor}{article} Coorientador\DataFields{student.coadvisor}{narticle}} , + reviewer.base = {Avaliador} , + reviewer = {Avaliador\DataFields{student.reviewer}{narticle}} , + altreviewer = {Suplente} , + altreviewer.sig = {Avaliador\DataFields{student.altreviewer}{narticle}} , + tutor = {Tutor\DataFields{student.tutor}{narticle}} , + tutor.gen = {Tutor(a)} , + tutor.email = {Email d\DataFields{student.tutor}{article} Tutor\DataFields{student.tutor}{narticle}} , + supervisor = {Supervisor\DataFields{student.supervisor}{narticle}} , + supervisor.gen = {Supervisor(a)} , + student = {Alun\DataFields{student}{article}} , + student.gen = {Aluno(a)} , + student.email = {Email d\DataFields{student}{article} Alun\DataFields{student}{article}} , + student.ID = {Cartão} , + signature.gen = {Assinatura} , + signature.student = {Assinatura\ \ d\DataFields{student}{article}\ \ Alun\DataFields{student}{article}} , + signature.student.gen = {Assinatura\ \ do(a)\ \ Aluno(a)} , + signature.advisor = {Assinatura\ \ d\DataFields{student.advisor}{article}\ \ Orientador\DataFields{student.advisor}{narticle}} , + signature.coadvisor = {Assinatura\ \ d\DataFields{student.coadvisor}{article}\ \ Coorientador\DataFields{student.coadvisor}{narticle}} , + signature.reviewer = {Assinatura\ \ d\DataFields{student.reviewer}{article}\ \ Avaliador\DataFields{student.reviewer}{narticle}} , + signature.board = {Assinatura\ \ do\ \ Membro\ \ da\ \ Banca} , + signature.gen = {Assinatura} , + signature.supervisor = {Assinatura\ \ d\DataFields{student.supervisor}{article}\ \ Supervisor\DataFields{student.supervisor}{narticle}} , + signature.tutor = {Assinatura\ \ d\DataFields{student.tutor}{article}\ \ Tutor\DataFields{student.tutor}{narticle}} , + signature.internshipcoord = {Assinatura\ \ d\ActivityCoord[internship]{article}\ \ Coordenador\ActivityCoord[internship]{narticle}} , + worktitle = {Título do Trabalho} , + worktitle.temp = {Título Provisório} , + email = {Email} , + phone = {ramal} , + board = {Banca Examinadora} , + board.member = {Membro da Banca} , + agree = {De Acordo} , + Nproc = {SEI} , + remarks = {remarks} , + boardtime.gen = {Horário} , } \SetLabels{% diff --git a/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca.pdf b/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca.pdf Binary files differindex b00760ede4e..02ac40fc7ce 100644 --- a/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca.pdf +++ b/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca.pdf diff --git a/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca.tex b/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca.tex index 9b5171802b6..413f1fc7d6e 100644 --- a/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca.tex +++ b/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca.tex @@ -2,7 +2,7 @@ % !TEX ext = --interaction=nonstopmode --enable-etex --enable-write18 % !BIB program = none %%%============================================================================== -%% Copyright 2022-23 by Alceu Frigeri +%% Copyright 2022-present by Alceu Frigeri %% %% This work may be distributed and/or modified under the conditions of %% @@ -15,7 +15,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version {2.2} {2023/12/02} +%% This is version {2.3} {2023/12/05} %% %% The list of files that compose this work can be found in the README.md file at %% https://ctan.org/pkg/ufrgscca @@ -644,11 +644,12 @@ These are, respectively, \tsobj{\starray_get_prop:nn, \starray_term_syntax:n,\st \end{codedescribe} -\begin{codedescribe}[code,new=2023/11/18]{\studentiterate} +\begin{codedescribe}[code,new=2023/11/18,update=2023/12/02]{\studentiterate,\studentadvisoriterate} \begin{codesyntax}% \tsmacro{\studentiterate}{code} + \tsmacro{\studentadvisoriterate}{code} \end{codesyntax} -This is \tsobj{\starray_iterate_over:nn} from \tsobj[pack]{starray}. \tsobj[meta]{code} will be executed for every defined student. +These are \tsobj{\starray_iterate_over:nn} from \tsobj[pack]{starray}. \tsobj[meta]{code} will be executed for every defined student, \tsobj{\studentiterate} or student's advisor, \tsobj{\studentadvisoriterate}. \end{codedescribe} \begin{codedescribe}[code,new=2023/11/29]{\ActivityCalendarIterate} @@ -1051,12 +1052,13 @@ Those commands are only of use when using \tsobj[pkg]{ufrgscca-coord}. \tsmacro{ \end{codedescribe} -\begin{codedescribe}[code,new=2023/11/18]{\studentCase,\studentCoadvCase,\studentDismissCase,\studentNewPageCase,\studentDistinctBoardCase} +\begin{codedescribe}[code,new=2023/11/18,update=2023/12/02]{\studentCase,\studentAdvCase,\studentCoadvCase,\studentDismissCase,\studentNewPageCase,\studentDistinctBoardCase} \begin{codesyntax}% \tsmacro{\studentCase}{if-A-B-C,if-D,if-Exam-C,if-Exam-D,if-FF} + \tsmacro{\studentAdvCase}{if-more-than-one,if-not} \tsmacro{\studentCoadvCase}{if-defined,if-not} \tsmacro{\studentDismissCase}{if-dismiss,if-not} - \tsmacro{\studentNewPageCase}{if-new,if-not} + \tsmacro{\studentNewPageCase}{if-newpage,if-not} \tsmacro{\studentDistinctBoardCase}{if-distinct,if-not} \end{codesyntax} These are a set of auxiliary conditionals, for instance, \tsobj{\StudentCase} will execute \emph{only one} of the \tsobj[meta]{if-} accordingly. @@ -1180,6 +1182,13 @@ These are a set of auxiliary conditionals, for instance, \tsobj{\StudentCase} wi This assigns the \tsobj[meta]{fate} of a student, for those cases that one cannot rely on the 'calculated one' (from examiners individual grades). \tsobj[meta]{fate} can be either C or D (in case a student got in exam), FF for those that haven't finished the work or 'Dismiss' for those that, for whatever reason, got dismissed. The default is 'do nothing' (no \tsobj[meta]{fate} assigned) \end{codedescribe} +\begin{codedescribe}[code,new=2023/12/04]{\studentaddtolist} + \begin{codesyntax}% + \tsmacro{\studentaddtolist}{listID} + \end{codesyntax} +Adds the student to a given list (defined by \tsobj[marg]{listID}), to be later used by \tsobj{\sortstudentlist} and \tsobj{\tcreport}. +\end{codedescribe} + \begin{codedescribe}{\checklist} \begin{codesyntax}% \tsmacro{\checklist}{csv-checkitems} @@ -1196,7 +1205,7 @@ To set the \tsobj[meta]{local}, \tsobj[meta]{date} and \tsobj[meta]{time} of a s \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}. +\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}.\\ Likewise, \tsobj[marg]{time} must be given in a (24h) \tsmeta{hour}:\tsmeta{min} format. \end{tsremark} @@ -1250,18 +1259,27 @@ Quite obvious, this set the grades given by an examiner (the one defined by the \begin{codedescribe}[code,update=2023/11/29]{\setstudentlist} \begin{codesyntax}% \tsmacro{\setstudentlist}{listID,list} - \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 hashes (as defined by \tsmacro{\student}[student-hash]{...}). The star version sorts the list by student's full name, the \emph{plus} version sorts the list by student's presentation date. +This command will define/create a list named \tsobj[meta]{listID} composed of a csv \tsobj[meta]{list}~ of student hashes (as defined by \tsmacro{\student}[student-hash]{...}). +\end{codedescribe} + +\begin{codedescribe}[code,new=2023/12/04]{\sortstudentlist} + \begin{codesyntax}% + \tsmacro{\sortstudentlist}{listID} + \tsmacro{\sortstudentlist*}{listID} + \tsmacro{\sortstudentlist+}{listID} + \end{codesyntax} +These will sort (and classify) a given student list defined by \tsobj[meta]{listID}. The star version sorts the list by student's full name, the \emph{plus} version sorts the list by student's presentation date. +By default, the list remains unchanged (no sort). \end{codedescribe} + \begin{codedescribe}{\tcreports} \begin{codesyntax}% - \tsmacro{\tcreports}[rep-list]{listID} + \tsmacro{\tcreports}[report-list]{listID} \end{codesyntax} This will typeset the many reports, using the student list defined by \tsobj[meta]{listID}. - \tsobj[meta]{rep-list} is a csv list of keys as follow: + Where \tsobj[meta]{report-list} is a csv list of keys as follow: \end{codedescribe} \begin{describelist}{option} diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-abnt.sty b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-abnt.sty index 9eb2b1b127f..74988131c7f 100644 --- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-abnt.sty +++ b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-abnt.sty @@ -1,5 +1,5 @@ %%%============================================================================== -%% Copyright 2022-23 by Alceu Frigeri +%% Copyright 2022-present by Alceu Frigeri %% %% This work may be distributed and/or modified under the conditions of %% @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version {2.2} {2023/12/02} +%% This is version {2.3} {2023/12/05} %% %% 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/12/02} - {2.2} + {2023/12/05} + {2.3} {UFRGS/CCA ABNT layout} @@ -42,8 +42,8 @@ { name .code:n = {ufrgscca-abnt} , prefix .code:n = {ufrgscca} , - date .code:n = {2023/12/02}, - version .code:n = {2.2} , + date .code:n = {2023/12/05}, + version .code:n = {2.3} , description .code:n = {UFRGS/CCA~ abnt~layout} } \cs_if_exist:NF \__codedesc_pkg_info:nn diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-base-en.def b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-base-en.def index e1fa48bde03..204f0845c85 100644 --- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-base-en.def +++ b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-base-en.def @@ -1,5 +1,5 @@ %%%============================================================================== -%% Copyright 2022-23 by Alceu Frigeri +%% Copyright 2022-present by Alceu Frigeri %% %% This work may be distributed and/or modified under the conditions of %% @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version {2.2} {2023/12/02} +%% This is version {2.3} {2023/12/05} %% %% 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/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-base-ptBR.def b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-base-ptBR.def index 3f92982697d..436950f70fe 100644 --- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-base-ptBR.def +++ b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-base-ptBR.def @@ -1,5 +1,5 @@ %%%============================================================================== -%% Copyright 2022-23 by Alceu Frigeri +%% Copyright 2022-present by Alceu Frigeri %% %% This work may be distributed and/or modified under the conditions of %% @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version {2.2} {2023/12/02} +%% This is version {2.3} {2023/12/05} %% %% 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/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-coord.sty b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-coord.sty index 2ac06980144..612a5885c82 100644 --- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-coord.sty +++ b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-coord.sty @@ -1,5 +1,5 @@ %%%============================================================================== -%% Copyright 2022-23 by Alceu Frigeri +%% Copyright 2022-present by Alceu Frigeri %% %% This work may be distributed and/or modified under the conditions of %% @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version {2.2} {2023/12/02} +%% This is version {2.3} {2023/12/05} %% %% 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/12/02} - {2.2} + {2023/12/05} + {2.3} {UFRGS/CCA coord commands} @@ -42,8 +42,8 @@ { name .code:n = {ufrgscca-coord} , prefix .code:n = {ufrgscca} , - date .code:n = {2023/12/02}, - version .code:n = {2.2} , + date .code:n = {2023/12/05}, + version .code:n = {2.3} , description .code:n = {UFRGS/CCA~ coordination~ report~ commands} } \cs_if_exist:NF \__codedesc_pkg_info:nn @@ -400,7 +400,7 @@ {\seq_put_right:Ne \l__ufrgscca_time_seq {0 \int_use:N \l__ufrgscca_hour_tmp_int}} {\seq_put_right:Ne \l__ufrgscca_time_seq { \int_use:N \l__ufrgscca_hour_tmp_int}} \int_compare:nNnTF {\l__ufrgscca_min_tmp_int} < {10} - {\seq_put_right:Ne \l__ufrgscca_time_seq {0 \int_use:N \l__ufrgscca_min_tmp_int}} + { \seq_put_right:Ne \l__ufrgscca_time_seq {0 \int_use:N \l__ufrgscca_min_tmp_int} } {\seq_put_right:Ne \l__ufrgscca_time_seq { \int_use:N \l__ufrgscca_min_tmp_int}} \seq_set_split:Nnn \l__ufrgscca_date_seq {/} {#2} @@ -587,11 +587,9 @@ \starray_gset_prop:nne {student.reviewer}{grade} {% \fpeval{round((#1 * \UseConst{TCC-I.weightA} + #2 * \UseConst{TCC-I.weightB} + #3 * \UseConst{TCC-I.weightC} + #4 * \UseConst{TCC-I.weightD}) / ( \UseConst{TCC-I.weightA} + \UseConst{TCC-I.weightB} + \UseConst{TCC-I.weightC} + \UseConst{TCC-I.weightD}) , 2 , 1) } - } - + } } } - } @@ -600,7 +598,7 @@ \tl_new:N \l__ufrgscca_sortB_tl \cs_new_protected:Npn \__ufrgscca_seq_sort:nn #1#2 { - \seq_gsort:cn {l__ufrgscca_#1_seq } + \seq_gsort:cn {l__ufrgscca_#1_list_seq } { \starray_set_iter_from_hash:nn {student}{##1} \starray_get_prop:nnN {student}{#2} \l__ufrgscca_sortA_tl @@ -612,55 +610,56 @@ } } +\cs_generate_variant:Nn \seq_gput_right:Nn {ce} + +\NewDocumentCommand{\studentaddtolist}{m} + { + \seq_if_exist:cF {l__ufrgscca_#1_list_seq} + { + \seq_new:c {l__ufrgscca_#1_list_seq} + \seq_new:c {l__ufrgscca_#1_list_ff_seq} + \seq_new:c {l__ufrgscca_#1_list_dismiss_seq} + \seq_new:c {l__ufrgscca_#1_list_graded_seq} + + \bool_new:c {l__ufrgscca_#1_classified_bool} + } + \bool_set_false:c {l__ufrgscca_#1_classified_bool} + \starray_term_syntax:n {student} + \seq_gput_right:ce {l__ufrgscca_#1_list_seq} {\starray_parsed_get_prop:n {self}} + } + +\NewDocumentCommand{\sortstudentlist}{st+m} + { + \bool_set_true:c {l__ufrgscca_#3_classified_bool} + \bool_if:nTF {#1} + { \__ufrgscca_seq_sort:nn {#3}{name} } + { + \bool_if:nT {#2} + { \__ufrgscca_seq_sort:nn {#3}{board-datetime} } + } + \seq_map_tokens:cn {l__ufrgscca_#3_list_seq} {\__ufrgscca_grade:n} + \seq_map_tokens:cn {l__ufrgscca_#3_list_seq} {\__ufrgscca_listclassify:nn {#3}} + } + -\NewDocumentCommand{\setstudentlist}{st+O{tcc}mm}{ - \seq_new:c {l__ufrgscca_#4_seq} - \seq_new:c {l__ufrgscca_#4_ff_seq} - \seq_new:c {l__ufrgscca_#4_dismiss_seq} - \seq_new:c {l__ufrgscca_#4_graded_seq} +\NewDocumentCommand{\setstudentlist}{mm}{ + \seq_gclear_new:c {l__ufrgscca_#1_list_seq} + \seq_gclear_new:c {l__ufrgscca_#1_list_ff_seq} + \seq_gclear_new:c {l__ufrgscca_#1_list_dismiss_seq} + \seq_gclear_new:c {l__ufrgscca_#1_list_graded_seq} + \bool_if_exist:cF {l__ufrgscca_#1_classified_bool} + { \bool_new:c {l__ufrgscca_#1_classified_bool} } - \clist_map_inline:nn {#5} + \clist_map_inline:nn {#2} { \starray_set_iter_from_hash:nnT {student}{##1} { - \seq_put_right:cn {l__ufrgscca_#4_seq} {##1} + \seq_put_right:cn {l__ufrgscca_#1_list_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:nTF {#1} - { \__ufrgscca_seq_sort:nn {#4}{name} } - { - \bool_if:nT {#2} - { \__ufrgscca_seq_sort:nn {#4}{board-datetime} } - } - - \str_case:nn {#3} - { - {tcc} - { - \seq_map_tokens:cn {l__ufrgscca_#4_seq} {\__ufrgscca_grade:n} - \seq_map_tokens:cn {l__ufrgscca_#4_seq} {\__ufrgscca_listclassify:nn {#4}} - } - {tccI} - { - \seq_map_tokens:cn {l__ufrgscca_#4_seq} {\__ufrgscca_grade:n} - \seq_map_tokens:cn {l__ufrgscca_#4_seq} {\__ufrgscca_listclassify:nn {#4}} - } - {tccII} - { - \seq_map_tokens:cn {l__ufrgscca_#4_seq} {\__ufrgscca_grade:n} - \seq_map_tokens:cn {l__ufrgscca_#4_seq} {\__ufrgscca_listclassify:nn {#4}} - } - {intern} - { %% TO BE IMPLEMENTED !!! - \seq_map_tokens:cn {l__ufrgscca_#4_seq} {\__ufrgscca_grade:n} - \seq_map_tokens:cn {l__ufrgscca_#4_seq} {\__ufrgscca_listclassify:nn {#4}} - } - } } \cs_new_protected:Npn \__ufrgscca_grade:n #1 @@ -678,21 +677,22 @@ \starray_term_syntax:n {student} \bool_case:nF { - {\starray_parsed_get_prop:n {flag-ff}}{\seq_gput_right:cn {l__ufrgscca_#1_ff_seq}{#2}} - {\starray_parsed_get_prop:n {flag-dismiss}}{\seq_gput_right:cn {l__ufrgscca_#1_dismiss_seq}{#2}} + {\starray_parsed_get_prop:n {flag-ff}}{\seq_gput_right:cn {l__ufrgscca_#1_list_ff_seq}{#2}} + {\starray_parsed_get_prop:n {flag-dismiss}}{\seq_gput_right:cn {l__ufrgscca_#1_list_dismiss_seq}{#2}} } - {\seq_gput_right:cn {l__ufrgscca_#1_graded_seq}{#2}} - + {\seq_gput_right:cn {l__ufrgscca_#1_list_graded_seq}{#2}} } \NewDocumentCommand{\tcreports}{O{}m}{ { \__ufrgscca_set_reports:n {#1} - \seq_gset_eq:Nc \l__ufrgscca_baselist_seq {l__ufrgscca_#2_seq} - \seq_gset_eq:Nc \l__ufrgscca_baselist_ff_seq {l__ufrgscca_#2_ff_seq} - \seq_gset_eq:Nc \l__ufrgscca_baselist_dismiss_seq {l__ufrgscca_#2_dismiss_seq} - \seq_gset_eq:Nc \l__ufrgscca_baselist_graded_seq {l__ufrgscca_#2_graded_seq} + \bool_if:cF {l__ufrgscca_#2_classified_bool} + { \sortstudentlist{#2} } + \seq_gset_eq:Nc \l__ufrgscca_baselist_seq {l__ufrgscca_#2_list_seq} + \seq_gset_eq:Nc \l__ufrgscca_baselist_ff_seq {l__ufrgscca_#2_list_ff_seq} + \seq_gset_eq:Nc \l__ufrgscca_baselist_dismiss_seq {l__ufrgscca_#2_list_dismiss_seq} + \seq_gset_eq:Nc \l__ufrgscca_baselist_graded_seq {l__ufrgscca_#2_list_graded_seq} \bool_if:NT \l__ufrgscca_attendance_bool { \MakeForm{attendancelist} diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-core.sty b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-core.sty index a303a53a2ad..475ce08a95d 100644 --- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-core.sty +++ b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-core.sty @@ -1,5 +1,5 @@ %%%============================================================================== -%% Copyright 2022-23 by Alceu Frigeri +%% Copyright 2022-present by Alceu Frigeri %% %% This work may be distributed and/or modified under the conditions of %% @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version {2.2} {2023/12/02} +%% This is version {2.3} {2023/12/05} %% %% 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/12/02} - {2.2} + {2023/12/05} + {2.3} {UFRGS/CCA core commands} @@ -42,8 +42,8 @@ { name .code:n = {ufrgscca-core} , prefix .code:n = {ufrgscca} , - date .code:n = {2023/12/02}, - version .code:n = {2.2} , + date .code:n = {2023/12/05}, + version .code:n = {2.3} , description .code:n = {UFRGS/CCA~core~commands/data} } \cs_if_exist:NF \__codedesc_pkg_info:nn @@ -109,6 +109,7 @@ \starray_new:n {student} \starray_def_from_keyval:nn {student} { + self = , %% this shall be self hash (if any) first = , last = , name = \rule{\l__ufrgscca_name_rule_dim}{.1pt} , @@ -379,6 +380,7 @@ {\starray_new_term:nn {student}{#1}} \starray_gset_from_keyval:nn {student} { + self = {#1} , first = {#3} , last = {#2} , name = {#3~ #2} , @@ -410,6 +412,12 @@ {#2} } +\NewDocumentCommand{\studentAdvCase}{mm}{ + \starray_term_syntax:n{student.advisor} + \int_compare:nNnTF {\starray_parsed_get_cnt:} > {1} + {#1} + {#2} +} \NewDocumentCommand{\distinctboard}{}{ @@ -429,6 +437,9 @@ \starray_iterate_over:nn{student}{#1} } +\NewDocumentCommand{\studentadvisoriterate}{m}{ + \starray_iterate_over:nn{student.advisor}{#1} +} \NewDocumentCommand{\worktitle}{m}{%% \starray_gset_prop:nnn {student}{worktitle}{#1} diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-cover.sty b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-cover.sty index ab87aa84b82..55aae547755 100644 --- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-cover.sty +++ b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-cover.sty @@ -1,5 +1,5 @@ %%%============================================================================== -%% Copyright 2022-23 by Alceu Frigeri +%% Copyright 2022-present by Alceu Frigeri %% %% This work may be distributed and/or modified under the conditions of %% @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version {2.2} {2023/12/02} +%% This is version {2.3} {2023/12/05} %% %% 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/12/02} - {2.2} + {2023/12/05} + {2.3} {UFRGS/CCA cover commands} @@ -42,8 +42,8 @@ { name .code:n = {ufrgscca-cover} , prefix .code:n = {ufrgscca} , - date .code:n = {2023/12/02}, - version .code:n = {2.2} , + date .code:n = {2023/12/05}, + version .code:n = {2.3} , description .code:n = {UFRGS/CCA~ cover~pages} } \cs_if_exist:NF \__codedesc_pkg_info:nn @@ -65,7 +65,7 @@ %%%%%%% -\NewDocumentCommand{\class}{mm}{% +\NewDocumentCommand{\reportclass}{mm}{% \SetHeadings{% class.code = {#1} , class.name = {#2} , @@ -73,6 +73,14 @@ }% % +\NewDocumentCommand{\reportdescription}{m}{% + \SetTerms{% + class-report.desc = {#1} , + } +}% +% + + \cs_generate_variant:Nn \text_uppercase:n {e} \NewDocumentCommand{\location}{mm}{%% diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-curr.sty b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-curr.sty index 05380271f62..381e31c73bf 100644 --- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-curr.sty +++ b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-curr.sty @@ -1,5 +1,5 @@ %%%============================================================================== -%% Copyright 2022-23 by Alceu Frigeri +%% Copyright 2022-present by Alceu Frigeri %% %% This work may be distributed and/or modified under the conditions of %% @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version {2.2} {2023/12/02} +%% This is version {2.3} {2023/12/05} %% %% 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/12/02} - {2.2} + {2023/12/05} + {2.3} {UFRGS/CCA curricula commands} %%%%%%% @@ -41,8 +41,8 @@ { name .code:n = {ufrgscca-curr} , prefix .code:n = {ufrgscca} , - date .code:n = {2023/12/02}, - version .code:n = {2.2} , + date .code:n = {2023/12/05}, + version .code:n = {2.3} , description .code:n = {UFRGS/CCA~ curricula~ commands} } \cs_if_exist:NF \__codedesc_pkg_info:nn diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-forms.sty b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-forms.sty index 4acd2de65b5..62c966a938c 100644 --- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-forms.sty +++ b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-forms.sty @@ -1,5 +1,5 @@ %%%============================================================================== -%% Copyright 2022-23 by Alceu Frigeri +%% Copyright 2022-present by Alceu Frigeri %% %% This work may be distributed and/or modified under the conditions of %% @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version {2.2} {2023/12/02} +%% This is version {2.3} {2023/12/05} %% %% 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/12/02} - {2.2} + {2023/12/05} + {2.3} {UFRGS/CCA forms commands} @@ -42,8 +42,8 @@ { name .code:n = {ufrgscca-forms} , prefix .code:n = {ufrgscca} , - date .code:n = {2023/12/02}, - version .code:n = {2.2} , + date .code:n = {2023/12/05}, + version .code:n = {2.3} , description .code:n = {UFRGS/CCA~ forms~commands} } \cs_if_exist:NF \__codedesc_pkg_info:nn diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-lists.sty b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-lists.sty index 732b0ed3a57..21f1473d18b 100644 --- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-lists.sty +++ b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-lists.sty @@ -1,5 +1,5 @@ %%%============================================================================== -%% Copyright 2022-23 by Alceu Frigeri +%% Copyright 2022-present by Alceu Frigeri %% %% This work may be distributed and/or modified under the conditions of %% @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version {2.2} {2023/12/02} +%% This is version {2.3} {2023/12/05} %% %% 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/12/02} - {2.2} + {2023/12/05} + {2.3} {UFRGS/CCA auxiliary lists commands} @@ -42,8 +42,8 @@ { name .code:n = {ufrgscca-lists} , prefix .code:n = {ufrgscca} , - date .code:n = {2023/12/02} , - version .code:n = {2.2} , + date .code:n = {2023/12/05} , + version .code:n = {2.3} , description .code:n = {UFRGS/CCA~Auxiliary~ lists~ commands} } \cs_if_exist:NF \__codedesc_pkg_info:nn diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-ppc.sty b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-ppc.sty index 67724e318ce..08bba41e213 100644 --- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-ppc.sty +++ b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-ppc.sty @@ -1,5 +1,5 @@ %%%============================================================================== -%% Copyright 2022-23 by Alceu Frigeri +%% Copyright 2022-present by Alceu Frigeri %% %% This work may be distributed and/or modified under the conditions of %% @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version {2.2} {2023/12/02} +%% This is version {2.3} {2023/12/05} %% %% 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/12/02} - {2.2} + {2023/12/05} + {2.3} {UFRGS/CCA PPC commands} %%%%%%% @@ -41,8 +41,8 @@ { name .code:n = {ufrgscca-ppc} , prefix .code:n = {ufrgscca} , - date .code:n = {2023/12/02}, - version .code:n = {2.2} , + date .code:n = {2023/12/05}, + version .code:n = {2.3} , description .code:n = {UFRGS/CCA~ auxiliary~ PPC-related~ (indicators)~ commands} } \cs_if_exist:NF \__codedesc_pkg_info:nn diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca.cls b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca.cls index 4b49363841f..12a6cea3592 100644 --- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca.cls +++ b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca.cls @@ -1,5 +1,5 @@ %%%============================================================================== -%% Copyright 2022-23 by Alceu Frigeri +%% Copyright 2022-present by Alceu Frigeri %% %% This work may be distributed and/or modified under the conditions of %% @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version {2.2} {2023/12/02} +%% This is version {2.3} {2023/12/05} %% %% 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/12/02} - {2.2} + {2023/12/05} + {2.3} {UFRGS/CCA class} @@ -42,8 +42,8 @@ { name .code:n = {ufrgscca} , prefix .code:n = {ufrgscca} , - date .code:n = {2023/12/02}, - version .code:n = {2.2} , + date .code:n = {2023/12/05}, + version .code:n = {2.3} , description .code:n = {UFRGS/CCA~a~report~based~class~bundle} } \cs_if_exist:NF \__codedesc_pkg_info:nn |