summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2023-11-24 21:13:10 +0000
committerKarl Berry <karl@freefriends.org>2023-11-24 21:13:10 +0000
commit49b3498f25b7813dde26d170282a5b34d5f49ae3 (patch)
tree3c529477e8d4a0f281ee340c271d44c1528913fa /Master
parent40cbc4e02b2977807e89b4e7e5d1c793727cadb9 (diff)
ufrgscca (24nov23)
git-svn-id: svn://tug.org/texlive/trunk@68960 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r--Master/texmf-dist/doc/latex/ufrgscca/README.md45
-rw-r--r--Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-cover-ptBR.tex322
-rw-r--r--Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-forms.tex1277
-rw-r--r--Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-terms-en.tex103
-rw-r--r--Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-terms-ptBR.tex267
-rw-r--r--Master/texmf-dist/doc/latex/ufrgscca/ufrgscca.pdfbin632430 -> 586726 bytes
-rw-r--r--Master/texmf-dist/doc/latex/ufrgscca/ufrgscca.tex1020
-rw-r--r--Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-abnt.sty894
-rw-r--r--Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-base-en.def (renamed from Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-en-base.def)13
-rw-r--r--Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-base-ptBR.def (renamed from Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-ptBR-base.def)11
-rw-r--r--Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-coord.sty1629
-rw-r--r--Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-core.sty775
-rw-r--r--Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-cover.sty567
-rw-r--r--Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-curr-graph.sty101
-rw-r--r--Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-curr-tab.sty163
-rw-r--r--Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-curr.sty743
-rw-r--r--Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-en-coord.def101
-rw-r--r--Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-en-core.def68
-rw-r--r--Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-en-forms.def183
-rw-r--r--Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-forms.sty883
-rw-r--r--Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-formsTR.sty313
-rw-r--r--Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-formsintern.sty148
-rw-r--r--Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-gen.sty120
-rw-r--r--Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-lists.sty133
-rw-r--r--Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-ppc.sty977
-rw-r--r--Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-ptBR-coord.def167
-rw-r--r--Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-ptBR-core.def95
-rw-r--r--Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-ptBR-forms.def319
-rw-r--r--Master/texmf-dist/tex/latex/ufrgscca/ufrgscca.cls398
29 files changed, 6252 insertions, 5583 deletions
diff --git a/Master/texmf-dist/doc/latex/ufrgscca/README.md b/Master/texmf-dist/doc/latex/ufrgscca/README.md
index 6159b8ce116..02143ca5f74 100644
--- a/Master/texmf-dist/doc/latex/ufrgscca/README.md
+++ b/Master/texmf-dist/doc/latex/ufrgscca/README.md
@@ -73,43 +73,27 @@ The Current Maintainer of this work is Alceu Frigeri
- cover pages macros
* ufrgscca-lists.sty
- New float environments (for code listing, for instance)
-* ufrgscca-gen.sty
- - a switch/case macro construct and
- 'macro factory', for instance to create commands used in the .def files.
* ufrgscca-forms.sty
- forms creation macros (course specific)
-* ufrgscca-formsTR.sty
- - forms creation macros (course specific, include by ufrgs-forms)
-* ufrgscca-formsintern.sty
- - forms creation macros (course specific, include by ufrgs-forms)
* ufrgscca-coord.sty
- student work coordenation related macros (course specific)
* ufrgscca-ppc.sty
- ppc specific macros (ppc stands for Course Pedagogic Project)
* ufrgscca-curr.sty
- curricula specific macros (as a set of semesters and class dependency lists)
-* ufrgscca-curr-tab.sty
- - curricula tabular macros (to display the curricula as tables)
-* ufrgscca-curr-graph.sty
- - curricula graph macros (to display the curricula as a dependency graph)
-* ufrgscca-en-base.def
+* ufrgscca-base-en.def
- locale, English, base def's (for babel)
-* ufrgscca-en-core.def
- - locale, English, for -core.sty
-* ufrgscca-en-forms.def
- - locale, English, for -forms.sty
-* ufrgscca-en-coord.def
- - locale, English, for -coord.sty
-
-* ufrgscca-ptBR-base.def
+* ufrgscca-base-ptBR.def
- locale, Portuguese, base def's (for babel)
-* ufrgscca-ptBR-core.def
- - locale, Portuguese, for -core.sty
-* ufrgscca-ptBR-forms.def
- - locale, Portuguese, for -forms.sty
-* ufrgscca-ptBR-coord.def
- - locale, Portuguese, for -coord.sty
+* ufrgscca-terms-ptBR.tex
+ - locale, many defaults
+* ufrgscca-terms-en.tex
+ - locale, many defaults
+* ufrgscca-cover-ptBR.tex
+ - locale, defaults, for -cover.sty
+* ufrgscca-forms.tex
+ - locale, defaults, for -forms.sty
* README.md (this file)
- quick introduction
@@ -121,8 +105,15 @@ The Current Maintainer of this work is Alceu Frigeri
-------------
+
## Changelog
-* Version 1.12 (this)
+* Version 2.0 (this)
+ - fully rewritten as Expl3 class/packages
+ - documentation
+ - (a few) commands changed (mostly auxiliary/background ones)
+ - some class options added and removed (see documentation)
+
+* Version 1.12
- forms adjustments
- documentation typo
- expl3 initial preparation
diff --git a/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-cover-ptBR.tex b/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-cover-ptBR.tex
new file mode 100644
index 00000000000..cb385e9cc63
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-cover-ptBR.tex
@@ -0,0 +1,322 @@
+%%%==============================================================================
+%% Copyright 2022-23 by Alceu Frigeri
+%%
+%% This work may be distributed and/or modified under the conditions of
+%%
+%% * The [LaTeX Project Public License](http://www.latex-project.org/lppl.txt),
+%% version 1.3c (or later), and/or
+%% * The [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html),
+%% version 3 (or later)
+%%
+%% This work has the LPPL maintenance status *maintained*.
+%%
+%% The Current Maintainer of this work is Alceu Frigeri
+%%
+%% This is version {2.0} {2023/11/23}
+%%
+%% The list of files that compose this work can be found in the README.md file at
+%% https://ctan.org/pkg/ufrgscca
+%%
+%%%==============================================================================
+%% UFRGS stands for "Federal University of Rio Grande do Sul" in south Brazil
+%% EE stands for "Engineering School"
+%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym)
+%%%==============================================================================
+
+
+%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%
+
+
+\SetTerms{%
+ advisor.descpage = %
+ {%
+ \noindent%
+ \studentCoadvCase{%
+ \UseTerm{advisors}:\\
+ \DataFields{student.advisor}{name}\\[1ex]
+ \DataFields{student.coadvisor}{name}
+ }{%
+ \UseTerm{advisor}:\\
+ \DataFields{student.advisor}{name}
+ }
+ } ,
+ advisor.approvalpage = %
+ {%
+ \noindent%
+ \studentCoadvCase{%
+ \UseTerm{advisors}:\\
+ \DataFields{student.advisor}{name}, \DataFields{student.advisor}{institution}\\
+ \DataFields{student.advisor}{title}\\[1ex]
+ \DataFields{student.coadvisor}{name}, \DataFields{student.coadvisor}{institution}\\
+ \DataFields{student.coadvisor}{title}
+ }{
+ \UseTerm{advisor}:\\
+ \DataFields{student.advisor}{name}, \DataFields{student.advisor}{institution}\\
+ \DataFields{student.advisor}{title}
+ }
+ } ,
+ internship.tutorapproval =
+ { ~\\
+ \noindent\UseTerm{tutor}:\\
+ \DataFields{student.tutor}{name}, \DataFields{student.tutor}{institution}\\
+ \DataFields{student.tutor}{title}\\[1ex]
+
+ \noindent\UseTerm{supervisor}:\\
+ \DataFields{student.supervisor}{name}, \DataFields{student.supervisor}{institution}\\
+ \DataFields{student.supervisor}{office}\\
+ \DataFields{student.internship}{company}\\
+
+
+ } ,
+ cover.students = %
+ {%
+ \eDataSet{student}
+ \centering{\MakeUppercase{\eDataFields{name}} - \eDataFields{ID}}
+ } ,
+ cover.topbase = %
+ {%
+ \centering
+ \MakeUppercase{\UseHeading{university}}\\
+ \MakeUppercase{\UseHeading{unit}}\\
+ \MakeUppercase{\UseHeading{course}}
+ } ,
+ cover.title = %
+ {%
+ \eDataSet{student}
+ \centering\textbf{\MakeUppercase{\eDataFields{worktitle}}}
+ } ,
+ cover.bottom = {%
+ \centering \UseConst{publ.city}\\ \UseConst{publ.date}\par
+ } ,
+ ppc.top = %
+ {%
+ \centering
+ \MakeUppercase{\UseHeading{university}}\\
+ \MakeUppercase{\UseHeading{unit}}\\
+ \MakeUppercase{\UseHeading{ppc.comgrad}}\\
+ \MakeUppercase{\UseHeading{ppc.nde}}\\
+ \MakeUppercase{\UseHeading{ppc.course}}\\
+
+ } ,
+ report.top = %
+ {%
+ \centering
+ \MakeUppercase{\UseHeading{university}}\\
+ \MakeUppercase{\UseHeading{unit}}\\
+ \MakeUppercase{\UseHeading{department}}\\
+ \MakeUppercase{\UseHeading{class.code}~ -~ \UseHeading{class.name}}\\
+ } ,
+}
+
+\SetTerms{
+ cover.students =
+ {
+ \studentiterate
+ {
+ \eDataSet{student}
+ \centering{\MakeUppercase{\eDataFields{name}}~ -~ \eDataFields{ID}}\\
+ }
+ }
+}
+
+
+%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%
+%%%
+%%% TCC I
+%%%
+%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%
+
+\SetCoverFields{tccI}{clist}{cover,desc,approval}
+\SetCoverFields{tccI}{top}{ \UseTerm{cover.topbase} }
+\SetCoverFields{tccI}{students}{ \UseTerm{cover.students} }
+\SetCoverFields{tccI}{title}{ \UseTerm{cover.title} }
+\SetCoverFields{tccI}{bottom}{\centering \UseConst{publ.city}\\ \UseConst{publ.year}\par}
+
+\SetCoverFields{tccI}{text-descpage}{ \UseTerm{tccI.text-descpage} }
+
+\SetCoverFields{tccI}{advisor-descpage}{ \UseTerm{advisor.descpage} }
+
+\SetCoverFields{tccI}{bottom-descpage}{\centering \UseConst{publ.city}\\ \UseConst{publ.year}\par}
+
+\SetCoverFields{tccI}{text-approvalpage}{ \UseTerm{tccI.text-approvalpage} }
+\SetCoverFields{tccI}{advisor-approvalpage}{ \UseTerm{advisor.approvalpage} }
+
+\SetCoverFields{tccI}{bottom-approvalpage}{ \UseTerm{cover.bottom} }
+
+
+\SetCoverFields{tccI}{board}{
+\noindent \UseTerm{board}:\\
+\indent \DataFields{student.reviewer[2]}{name}, \DataFields{student.reviewer[2]}{institution}\\
+\indent \DataFields{student.reviewer[2]}{title}\\
+\\
+\indent \DataFields{student.reviewer[3]}{name}, \DataFields{student.reviewer[2]}{institution}\\
+\indent \DataFields{student.reviewer[3]}{title}\\
+}
+
+
+\SetCoverFields{tccI}{coord}{
+\noindent\hrulefill\\
+\ActivityCoord[course]{name}\\
+\ActivityCoord[course]{title}\\
+\Activity[course]{name}
+}
+
+
+
+%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%
+%%%
+%%% TCC II
+%%%
+%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%
+
+\SetCoverFields{tccII}{clist}{cover,desc,approval}
+\SetCoverFields{tccII}{top}{ \UseTerm{cover.topbase} }
+\SetCoverFields{tccII}{students}{ \UseTerm{cover.students} }
+\SetCoverFields{tccII}{title}{ \UseTerm{cover.title} }
+\SetCoverFields{tccII}{bottom}{\centering \UseConst{publ.city}\\ \UseConst{publ.year}\par}
+
+\SetCoverFields{tccII}{text-descpage}{ \UseTerm{tccII.text-descpage} }
+
+\SetCoverFields{tccII}{advisor-descpage}{ \UseTerm{advisor.descpage} }
+
+\SetCoverFields{tccII}{bottom-descpage}{\centering \UseConst{publ.city}\\ \UseConst{publ.year}\par}
+
+\SetCoverFields{tccII}{text-approvalpage}{ \UseTerm{tccII.text-approvalpage} }
+\SetCoverFields{tccII}{advisor-approvalpage}{ \UseTerm{advisor.approvalpage} }
+
+\SetCoverFields{tccII}{bottom-approvalpage}{ \UseTerm{cover.bottom} }
+
+
+\SetCoverFields{tccII}{board}{
+\noindent \UseTerm{board}:\\
+\indent \DataFields{student.reviewer[1]}{name}, \DataFields{student.reviewer[1]}{institution}\\
+\indent \DataFields{student.reviewer[1]}{title}\\[-1ex]
+
+\indent \DataFields{student.reviewer[2]}{name}, \DataFields{student.reviewer[2]}{institution}\\
+\indent \DataFields{student.reviewer[2]}{title}\\[-1ex]
+
+\indent \DataFields{student.reviewer[3]}{name}, \DataFields{student.reviewer[2]}{institution}\\
+\indent \DataFields{student.reviewer[3]}{title}\\
+}
+
+
+\SetCoverFields{tccII}{coord}{
+\noindent\hrulefill\\
+\ActivityCoord[course]{name}\\
+\ActivityCoord[course]{title}\\
+\Activity[course]{name}
+}
+
+
+
+
+\SetCoverFields{ppc}{clist}{cover}
+\SetCoverFields{ppc}{top}{ \UseTerm{ppc.top} }
+\SetCoverFields{ppc}{students}{ }
+\SetCoverFields{ppc}{title}{ \centering PROJETO~ PEDAGÓGICO~ DO\\
+CURSO~ EM~ ENGENHARIA~ DE\\
+CONTROLE~ E~ AUTOMAÇÃO }
+\SetCoverFields{ppc}{bottom}{\centering \UseConst{publ.city}\\ \UseConst{publ.year}\par}
+
+
+
+%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%
+%%%
+%%% Internship
+%%%
+%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%
+
+\SetCoverFields{internship}{clist}{cover,approval}
+\SetCoverFields{internship}{top}{ \UseTerm{cover.topbase} }
+\SetCoverFields{internship}{students}{ \UseTerm{cover.students} }
+\SetCoverFields{internship}{title}{ \centering\textbf{ RELATÓRIO DE ESTÁGIO SUPERVISIONADO OBRIGATÓRIO EM ENG. DE CONTROLE E AUTOMAÇÃO}}
+\SetCoverFields{internship}{bottom}{\centering \UseConst{publ.city}\\ \UseConst{publ.year}\par}
+
+\SetCoverFields{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} Tutor\DataFields{student.tutor}{narticle}, Supervisor\DataFields{student.supervisor}{narticle} e Coordenador\DataFields{activity[internship].coord}{narticle} da Atividade.}
+
+\SetCoverFields{internship}{advisor-approvalpage}{ \UseTerm{internship.tutorapproval} }
+
+\SetCoverFields{internship}{bottom-approvalpage}{ \centering \UseConst{publ.city}\\\UseConst{publ.month}~ \UseConst{publ.year}\par }
+
+
+\SetCoverFields{internship}{board}{}
+
+
+\SetCoverFields{internship}{coord}{
+\noindent\hrulefill\\
+\ActivityCoord[internship]{name}\\
+\ActivityCoord[internship]{title}
+}
+
+
+
+%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%
+%%%
+%%% Nonrequired / Internship-optional
+%%%
+%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%
+
+\SetCoverFields{internship-opt}{clist}{cover,approval}
+\SetCoverFields{internship-opt}{top}{ \UseTerm{cover.topbase} }
+\SetCoverFields{internship-opt}{students}{ \UseTerm{cover.students} }
+\SetCoverFields{internship-opt}{title}{ \centering\textbf{ RELATÓRIO DE ESTÁGIO SUPERVISIONADO NÃO OBRIGATÓRIO EM ENG. DE CONTROLE E AUTOMAÇÃO}}
+\SetCoverFields{internship-opt}{bottom}{\centering \UseConst{publ.city}\\ \UseConst{publ.year}\par}
+
+\SetCoverFields{internship-opt}{text-approvalpage}{
+ Este Relatório foi julgado adequado para uma Atividade de Estágio Supervisionado Não Obrigatório em Eng. de Controle
+ 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}.}
+
+\SetCoverFields{internship-opt}{advisor-approvalpage}{ \UseTerm{internship.tutorapproval} }
+
+\SetCoverFields{internship-opt}{bottom-approvalpage}{ \centering \UseConst{publ.city}\\\UseConst{publ.month}~ \UseConst{publ.year}\par }
+
+
+\SetCoverFields{internship-opt}{board}{}
+
+
+\SetCoverFields{internship-opt}{coord}{}
+
+
+
+%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%
+%%%
+%%% class report
+%%%
+%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%
+
+\SetCoverFields{class-report}{clist}{cover}
+\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-approvalpage}{}
+
+\SetCoverFields{class-report}{advisor-approvalpage}{}
+
+\SetCoverFields{class-report}{bottom-approvalpage}{}
+
+
+\SetCoverFields{class-report}{board}{}
+
+
+\SetCoverFields{class-report}{coord}{}
+
+
+
+
+
+
diff --git a/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-forms.tex b/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-forms.tex
new file mode 100644
index 00000000000..9f822247c98
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-forms.tex
@@ -0,0 +1,1277 @@
+%%%==============================================================================
+%% Copyright 2022-23 by Alceu Frigeri
+%%
+%% This work may be distributed and/or modified under the conditions of
+%%
+%% * The [LaTeX Project Public License](http://www.latex-project.org/lppl.txt),
+%% version 1.3c (or later), and/or
+%% * The [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html),
+%% version 3 (or later)
+%%
+%% This work has the LPPL maintenance status *maintained*.
+%%
+%% The Current Maintainer of this work is Alceu Frigeri
+%%
+%% This is version {2.0} {2023/11/23}
+%%
+%% The list of files that compose this work can be found in the README.md file at
+%% https://ctan.org/pkg/ufrgscca
+%%
+%%%==============================================================================
+%% UFRGS stands for "Federal University of Rio Grande do Sul" in south Brazil
+%% EE stands for "Engineering School"
+%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym)
+%%%==============================================================================
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%
+%%% Internship
+%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+%%%%%%%%%%%%%%%
+%% req form - Internship
+%%%%%%%%%%%%%%%
+\SetForm{internshiprequest}{heading}{\UseTerm{title.internship}}
+\SetForm{internshiprequest}{title}{\UseTerm{title.requestform}}
+
+%%%
+\SetForm{internshiprequest}{opening}{
+
+ \UseTerm{opening.requestform}}
+
+%%%
+\SetForm{internshiprequest}{body}{
+ \UseTerm{desc.requestform} \Activity[internship]{name}.
+ \vfill%
+ \UseLabel{student.email}: {\bf \DataFields{student}{email}} %
+\vspace{2mm}
+
+\UseLabel{tutor}: \textbf{\DataFields{student.tutor}{name}}%
+
+\UseLabel{tutor.email}: {\bf \DataFields{student.tutor}{email}}%
+\hfill \UseLabel{phone}: {\bf \DataFields{student.tutor}{phone}}%
+\vspace{2mm}
+
+
+Empresa: {\bf \DataFields{student.internship}{company}}%
+
+Área de Atividade: {\bf \DataFields{student.internship}{field}}%
+\vspace{2mm}
+
+\UseTerm{desc.supervisor}
+
+Cargo: {\bf \DataFields{student.supervisor}{office}}\hfill Email: {\bf \DataFields{student.supervisor}{email}} \hfill Fone: {\bf \DataFields{student.supervisor}{phone}} %
+\vspace{2mm}
+
+Data de Início: {\bf \DataFields{student.internship}{start}}\hfill Previsão de Término: {\bf \DataFields{student.internship}{end}}\hfill Duração: {\bf \DataFields{student.internship}{length}}
+
+}
+
+%%%
+\SetForm{internshiprequest}{closing}{
+ \parbox[t]{.45\textwidth}{\SignatureDate{\UseLabel{signature.supervisor}}}\hfill%
+ \parbox[t]{.45\textwidth}{\SignatureDate{\UseLabel{signature.tutor}}}%
+
+ \hfill%
+ \parbox[t]{.45\textwidth}{\SignatureDate{\UseLabel{signature.student}}}
+}
+
+
+%%%%%%%%%%%%%%%
+%% supervisor`s form - Internship
+%%%%%%%%%%%%%%%
+\SetForm{internshipsupervisorform}{heading}{\UseTerm{title.internship}}
+\SetForm{internshipsupervisorform}{title}{\UseTerm{title.internsupervisorform}}
+\SetForm{internshipsupervisorform}{footnote}{\UseTerm{footnote.supervisorsform}}
+
+%%%
+\SetForm{internshipsupervisorform}{opening}{
+ \UseTerm{desc.student}\\%
+ \noindent\UseTerm{desc.supervisor}\\%
+ \UseTerm{desc.internshipperiod}
+}
+
+%%%
+\SetForm{internshipsupervisorform}{body}{
+\begin{itemize}[tcc,nosep]
+ \item Grupo I - Aspectos Profissionais
+ \begin{enumerate}[tcc,nosep]
+ \item \textbf{Qualidade do Trabalho}:\emptybox\\ {\footnotesize considerar a qualidade do trabalho tendo em vista o que seria desejável}
+ \item \textbf{Engenhosidade}:\emptybox\\ {\footnotesize capacidade de sugerir, projetar ou executar modificações ou inovações.}
+ \item \textbf{Conhecimentos}:\emptybox\\ {\footnotesize conhecimento demonstrado no desenvolvimento das atividades programadas.}
+ \item \textbf{Cumprimentos das Tarefas}:\emptybox\\ {\footnotesize considerar o volume de atividades cumpridas dentro de um padrão razoável.}
+ \item \textbf{Iniciativa}:\emptybox\\ {\footnotesize iniciativa para desenvolver suas atividades sem dependências de outros.}
+ \end{enumerate}
+ \item Grupo II - Aspectos Humanos
+ \begin{enumerate}[tcc,nosep]
+ \item \textbf{Assiduidade}:\emptybox\\ {\footnotesize cumprimento do horário do estágio e ausência de falhas}
+\item \textbf{Disciplina}:\emptybox\\ {\footnotesize observância das normas e regulamentos internos da empresa.}
+\item \textbf{Sociabilidade}:\emptybox\\ {\footnotesize facilidade de se integrar com colegas e ambiente de trabalho.}
+\item \textbf{Cooperação}:\emptybox\\ {\footnotesize disposição para cooperar com colegas e para atender a atividades..}
+\item \textbf{Senso de Responsabilidade}:\emptybox\\ {\footnotesize zelo pelo material, equipamentos e bens da empresa.}
+ \end{enumerate}
+\end{itemize}
+
+ \vfill%
+
+ Considerações Complementares: \BlankLines{5}
+}
+
+%%%
+\SetForm{internshipsupervisorform}{closing}{
+\hfill\parbox[t]{.45\textwidth}{\SignatureDate{\UseLabel{signature.supervisor}}}
+}
+
+%%%%%%%%%%%%%%%
+%% tutor`s form - Internship
+%%%%%%%%%%%%%%%
+\SetForm{internshiptutorform}{heading}{\UseTerm{title.internship}}
+\SetForm{internshiptutorform}{title}{\UseTerm{title.interntutorform}}
+
+%%%
+\SetForm{internshiptutorform}{opening}{
+ \UseTerm{desc.student}\\%
+ \UseLabel{tutor}: \textbf{\DataFields{student.tutor}{name}}\\%
+ \UseTerm{desc.internshipperiod}
+}
+
+%%%
+\SetForm{internshiptutorform}{body}{
+ Avaliação d\DataFields{student.tutor}{article} Prof\DataFields{student.tutor}{narticle}. Tutor\DataFields{student.tutor}{narticle}:\emptybox
+
+ \vfill%
+
+ Considerações d\DataFields{student.tutor}{article} Prof\DataFields{student.tutor}{narticle}. Tutor\DataFields{student.tutor}{narticle} sobre o Estágio:
+
+ \BlankLines{5}%
+
+ \vfill%
+
+ \hfill\parbox[t]{.45\textwidth}{\SignatureDate{\UseLabel{signature.tutor}}}
+
+ % \hline
+ \vfill%
+
+ Avaliação d\ActivityCoord[internship]{article} Prof\ActivityCoord[internship]{narticle}. Coordenador\ActivityCoord[internship]{narticle}:\emptybox%
+ \vfill
+
+ Considerações d\ActivityCoord[internship]{article} Prof\ActivityCoord[internship]{narticle}. Coordenador\ActivityCoord[internship]{narticle} sobre o Estágio:
+
+ \BlankLines{5}%
+ \vfill%
+
+ \hfill\parbox[t]{.45\textwidth}{\SignatureDate{\UseLabel{signature.internshipcoord}}}
+}
+
+%%%
+\SetForm{internshiptutorform}{closing}{}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%
+%%% TCCs - Calendar - EVENTS
+%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%\SetActivityNewEvent{}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%
+%%% TCCs - Calendar
+%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\SetForm{calendar-I}{heading}{\UseTerm{title.tccI}}
+\SetForm{calendar-I}{title}{\UseTerm{title.calendar}}
+\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
+ { \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:nF {activity.calendar}{\bool_set_false:N \l__ufrgscca_tmp_bool}
+ }
+ \end{tabular}}%
+%
+ \end{center}%
+ \scriptsize \UseTerm{notes.calendarI}
+ }%
+}
+ \ExplSyntaxOff
+
+%%%
+\SetForm{calendar-I}{closing}{\vfill}%
+%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%
+
+\SetForm{calendar-II}{heading}{\UseTerm{title.tccII}}
+\SetForm{calendar-II}{title}{\UseTerm{title.calendar}}
+\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
+ { \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}
+ }
+ \end{tabular}}%
+%
+ \end{center}%
+ \scriptsize \UseTerm{notes.calendarII}
+ }%
+}
+ \ExplSyntaxOff
+
+%%%
+\SetForm{calendar-II}{closing}{\vfill}%
+%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%
+%%% TCC - I
+%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+%%%%%%%%%%%%%%%
+%% req form - I
+%%%%%%%%%%%%%%%
+\SetForm{request-I}{heading}{\UseTerm{title.tccI}}
+\SetForm{request-I}{title}{\UseTerm{title.requestform}}
+\SetForm{request-I}{opening}{\UseTerm{opening.requestform}}
+
+%%%
+\SetForm{request-I}{body}{%
+ \UseTerm{desc.requestform} \Activity[tccI]{name}.
+ \vfill%
+
+ \UseLabel{worktitle.temp}: \DataFields{student}{worktitle}%\@title %
+
+ \UseLabel{student.email}: {\bf \DataFields{student}{email}} %
+
+ \UseLabel{advisor}: \DataFields{student.advisor}{name}%
+
+ \UseLabel{advisor.email}: {\bf \DataFields{student.advisor}{email}}%
+ \hfill \UseLabel{phone}: {\bf \DataFields{student.advisor}{phone}}%
+
+ {\bf Resumo}:\footnote[1]{\UseTerm{footnote.requestform}}%
+
+ \vfill%
+
+ \DataFields{student}{brief}
+}
+
+%%%
+\SetForm{request-I}{closing}{%
+ \parbox[t]{.45\textwidth}{\SignatureDate{\UseLabel{signature.student}}}\hfill%
+ \parbox[t]{.45\textwidth}{\SignatureDate{\UseLabel{signature.advisor}}}%
+}%
+%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%
+
+
+%%%%%%%%%%%%%%%
+%% coadvisor - I
+%%%%%%%%%%%%%%%
+\SetForm{coadvisor-I}{heading}{\UseTerm{title.tccI}}
+\SetForm{coadvisor-I}{title}{\UseTerm{title.coadvisorform}}
+\SetForm{coadvisor-I}{opening}{%
+
+ \UseTerm{opening.requestform}
+ \coadvisoremptyifnone
+}
+
+%%%
+\SetForm{coadvisor-I}{body}{%
+ \UseTerm{desc.coadvisorform}
+ \vfill%
+
+ \UseLabel{worktitle.temp}: \DataFields{student}{worktitle}%\@title %
+
+ \UseLabel{advisor}: \DataFields{student.advisor}{name}
+
+ \UseLabel{coadvisor}: \DataFields{student.coadvisor}{name}%
+
+ \UseLabel{coadvisor.email}: {\bf \DataFields{student.coadvisor}{email}}%
+ \hfill \UseLabel{phone}: {\bf \DataFields{student.coadvisor}{phone}}\\%
+
+ {\bf Justificativa}:%
+ \vfill
+
+ \DataFields{student.coadvisor}{reason}
+
+}
+
+%%%
+\SetForm{coadvisor-I}{closing}{%
+
+ \SignatureDate{\UseLabel{signature.student}}
+
+ \parbox[t]{.45\textwidth}{\SignatureDate{\UseLabel{signature.advisor}}}\hfill%
+ \parbox[t]{.45\textwidth}{\SignatureDate{\UseLabel{signature.coadvisor}}}%
+}%
+%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%
+
+
+%%%%%%%%%%%%%%%
+%% board approval - I
+%%%%%%%%%%%%%%%
+\SetForm{boardapproval-I}{heading}{\UseTerm{title.tccI}}
+\SetForm{boardapproval-I}{title}{\UseTerm{title.boardapproval}}
+\SetForm{boardapproval-I}{opening}{\UseTerm{desc.studentwork.full}}
+
+%%%
+\SetForm{boardapproval-I}{body}{ \begin{center}
+ \UseLabel{board}
+ \end{center}%
+
+%%% TODO: That's do be done... convert it to starray!!!
+
+ \BoardDescSignature{Avaliador\DataFields{student.reviewer[2]}{narticle}}{student.reviewer[2]}
+
+ \BoardDescSignature{Avaliador\DataFields{student.reviewer[3]}{narticle}}{student.reviewer[3]}
+
+ \vfill%
+
+ Indicamos a nominata da Banca Examinadora acima relacionada.%
+}
+
+%%%
+\SetForm{boardapproval-I}{closing}{\hfill\parbox[t]{.45\textwidth}{\SignatureDate{\UseLabel{signature.advisor}}}}
+%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%
+
+
+%%%%%%%%%%%%%%%
+%% advisor's approval - I
+%%%%%%%%%%%%%%%
+\SetForm{advisorsapproval-I}{heading}{\UseTerm{title.tccI}}
+\SetForm{advisorsapproval-I}{title}{\UseTerm{title.advisorsapproval-I}}
+\SetForm{advisorsapproval-I}{opening}{\UseTerm{desc.studentwork.full}}
+
+%%%
+\SetForm{advisorsapproval-I}{body}{%
+ {\bf Parecer d\DataFields{student.advisor}{article} Orientador\DataFields{student.advisor}{narticle}}\footnote{Preenchimento Obrigatório}
+
+ \vfill%
+
+
+ \DataFields{student.advisor}{assessment}
+}
+
+%%%
+\SetForm{advisorsapproval-I}{closing}{
+ \SignatureDate{\UseLabel{signature.advisor}}\vfill%
+ \SignatureDate{\UseLabel{signature.student}}%
+
+}%
+%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%
+
+
+%%%%%%%%%%%%%%%
+%% examiner's form - I
+%%%%%%%%%%%%%%%
+\SetForm{examinersform-I}{heading}{\UseTerm{title.tccI}}
+\SetForm{examinersform-I}{title}{\UseTerm{title.reviewersform}}
+\SetForm{examinersform-I}{footnote}{\UseTerm{footnote.reviewersform}}
+\SetForm{examinersform-I}{opening}{%
+ \UseTerm{desc.studentwork}\\[2mm]
+
+ \UseLabel{reviewer}: \textbf{\DataFields{student.reviewer}{name}}\\[-4mm]%
+
+ {\scriptsize {\textsl{(favor retornar este diretamente à coordenação de TCC.)}}}
+ }
+
+%%%
+\SetForm{examinersform-I}{body}{%
+ O trabalho submetido\footnotemark[2]:
+
+ \begin{enumerate}[tcc,nosep]
+ \item \emptybox\ \textbf{Enquadramento do Tema}. {\footnotesize(peso:2)}\\ {\footnotesize Quão bem o mesmo se enquadra no perfil de um formando em Eng. de Controle e Automação.}
+ \item \emptybox\ \textbf{Revisão Bibliográfica}. {\footnotesize(peso:2)}\\ {\footnotesize A revisão apresentada é adequada, suficiente, para o tema do trabalho?}
+ \item \emptybox\ \textbf{Abordagem/Plano de Trabalho Proposto}. {\footnotesize(peso:2)}\\ {\footnotesize Considerar se a abordagem, plano de trabalho proposto, é adequada e factivel.}
+ \item \emptybox\ \textbf{Redação}. {\footnotesize(peso:1)}\\ {\footnotesize Considerar a qualidade do trabalho escrito apresentado.}
+ \item { O Trabalho Submetido}
+ \begin{itemize}[tcc,nosep]
+ \item[$\Box$] Está adequado, dispensando correções do texto.
+ \item[$\Box$] Está adequado, sendo necessário correções, conforme anotações anexas.
+ \item[$\Box$] Necessita ser revisto/re-escrito,\footnotemark[3] e:
+ \begin{itemize}
+ \item[$\Box$] basta a revisão final do texto pelo orientador,
+ \item[$\Box$] revisarei o trabalho depois de corrigido.
+ \end{itemize}
+ \end{itemize}
+ \end{enumerate}
+
+Outras considerações, parecer (se necessário): \BlankLines{6}
+
+ \footnotetext[2]{Use a escala: \begin{enumerate*}\item[0.]Péssimo \item[3.]Deficitário \item[6.]Bom \item[8.]Muito Bom \item[10.]Excelente \end{enumerate*}}%
+ \footnotetext[3]{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{examinersform-I}{closing}{%signature.reviewer
+ \SignatureDate{\UseLabel{signature.reviewer}}%
+}
+%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%
+
+
+%%%%%%%%%%%%%%%
+%% rectify approval - I
+%%%%%%%%%%%%%%%
+\SetForm{rectifyapproval-I}{heading}{\UseTerm{title.tccI}}
+\SetForm{rectifyapproval-I}{title}{\UseTerm{title.rectifyapproval}}
+\SetForm{rectifyapproval-I}{opening}{\UseTerm{desc.studentwork.full}}
+
+%%%
+\SetForm{rectifyapproval-I}{body}{ %
+ \SetTerms{temp.formrefname = {Formulário de Avaliação}}
+ \UseTerm{desc.rectifyapproval}
+
+ \vfill%
+
+ \ApprovalSignature[\UseLabel{advisor}]{\DataFields{student.advisor}{name}}
+
+}
+
+%%%
+\SetForm{rectifyapproval-I}{closing}{
+
+ \SetReviewer{2}
+ \ApprovalSignature{\DataFields{student.reviewer}{name}}\vfill
+
+ \SetReviewer{3}
+ \ApprovalSignature{\DataFields{student.reviewer}{name}}\vfill
+
+ }
+%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%
+%%% TCC - II
+%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+%%%%%%%%%%%%%%%
+%% req form - II
+%%%%%%%%%%%%%%%
+\SetForm{request-II}{heading}{\UseTerm{title.tccII}}
+\SetForm{request-II}{title}{\UseTerm{title.requestform}}
+
+\SetForm{request-II}{opening}{
+
+\UseTerm{opening.requestform}}
+
+%%%
+\SetForm{request-II}{body}{
+ \UseTerm{desc.requestform} \Activity[tccII]{name}.
+ \vfill%
+
+ \UseLabel{worktitle.temp}: \DataFields{student}{worktitle}%\@title %
+
+ \UseLabel{student.email}: {\bf \DataFields{student}{email}} %
+
+ \UseLabel{advisor}: \DataFields{student.advisor}{name}%
+
+ \UseLabel{advisor.email}: {\bf \DataFields{student.advisor}{email}}%
+ \hfill \UseLabel{phone}: {\bf \DataFields{student.advisor}{phone}}%
+
+ \UseLabel{coadvisor}: \DataFields{student.coadvisor}{name}%
+
+ \UseLabel{coadvisor.email}: {\bf \DataFields{student.coadvisor}{email}}%
+ \hfill \UseLabel{phone}: {\bf \DataFields{student.coadvisor}{phone}}%
+
+
+ \vfill%
+ O Tema do Trabalho e Orientador (Coorientador) seguem sendo os mesmos de TCC I ?
+\begin{itemize}[tcc,noitemsep]
+ \item[$\Box$] SIM
+ \item[$\Box$] NÃO, neste caso \textbf{justifique} a mudança no espaço a seguir:
+ \end{itemize}
+
+
+ \DataFields{student}{reason}
+
+}
+
+%%%
+\SetForm{request-II}{closing}{
+ \parbox[t]{.45\textwidth}{\SignatureDate{\UseLabel{signature.student}}}\hfill%
+ \parbox[t]{.45\textwidth}{\SignatureDate{\UseLabel{signature.advisor}}}%
+}
+%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%
+%% coadvisor - II
+%%%%%%%%%%%%%%%
+\SetForm{coadvisor-II}{heading}{\UseTerm{title.tccII}}
+\SetForm{coadvisor-II}{title}{\UseTerm{title.coadvisorform}}
+\SetForm{coadvisor-II}{opening}{%
+
+ \UseTerm{opening.requestform}
+ \coadvisoremptyifnone
+}
+
+%%%
+\SetForm{coadvisor-II}{body}{%
+ \UseTerm{desc.coadvisorform}
+ \vfill%
+
+ \UseLabel{worktitle.temp}: \DataFields{student}{worktitle}%\@title %
+
+ \UseLabel{advisor}: \DataFields{student.advisor}{name}
+
+ \UseLabel{coadvisor}: \DataFields{student.coadvisor}{name}%
+
+ \UseLabel{coadvisor.email}: {\bf \DataFields{student.coadvisor}{email}}%
+ \hfill \UseLabel{phone}: {\bf \DataFields{student.coadvisor}{phone}}\\%
+
+ {\bf Justificativa}:%
+ \vfill
+
+ \DataFields{student.coadvisor}{reason}
+}
+
+%%%
+\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}}}%
+}
+%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%
+
+
+
+
+%%%%%%%%%%%%%%%
+%% board approval - II
+%%%%%%%%%%%%%%%
+\SetForm{boardapproval-II}{heading}{\UseTerm{title.tccII}}
+\SetForm{boardapproval-II}{title}{\UseTerm{title.boardapproval}}
+\SetForm{boardapproval-II}{opening}{\UseTerm{desc.studentwork.full}}
+
+%%%
+\SetForm{boardapproval-II}{body}{%
+ \begin{center}
+ \UseLabel{board}%
+ \end{center}%
+
+ \BoardDescSignature{Avaliador\DataFields{student.reviewer[1]}{narticle}}{student.reviewer[1]}
+
+ \BoardDescSignature{Avaliador\DataFields{student.reviewer[2]}{narticle}}{student.reviewer[2]}
+
+ \BoardDescSignature{Avaliador\DataFields{student.reviewer[3]}{narticle}}{student.reviewer[3]}
+
+ \BoardDescSignature{Suplente}{student.altreviewer[1]}
+
+ \vfill%
+
+ Indicamos a nominata da Banca Examinadora acima relacionada.%
+}
+
+%%%
+\SetForm{boardapproval-II}{closing}{ \SignatureDate{\UseLabel{signature.advisor}}}
+%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%
+
+
+
+
+%%%%%%%%%%%%%%%
+%% advisor's approval - II
+%%%%%%%%%%%%%%%
+\SetForm{advisorsapproval-II}{heading}{\UseTerm{title.tccII}}
+\SetForm{advisorsapproval-II}{title}{\UseTerm{title.advisorsapproval-II}}
+\SetForm{advisorsapproval-II}{opening}{\UseTerm{desc.studentwork.full}}
+
+%%%
+\SetForm{advisorsapproval-II}{body}{%
+ {\bf Parecer d\DataFields{student.advisor}{article} Orientador\DataFields{student.advisor}{narticle}}\footnote{Preenchimento Obrigatório}
+
+ \vfill%
+
+ \DataFields{student.advisor}{assessment}
+}
+
+%%%
+\SetForm{advisorsapproval-II}{closing}{%
+ \SignatureDate{\UseLabel{signature.advisor}}%
+ \vfill%
+
+ \SignatureDate{\UseLabel{signature.student}}%
+ }
+%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%
+
+
+%%%%%%%%%%%%%%%
+%% receipts - II
+%%%%%%%%%%%%%%%
+\SetForm{receipts-II}{heading}{\UseTerm{title.tccII}}
+\SetForm{receipts-II}{title}{\UseTerm{title.receipts}}
+\SetForm{receipts-II}{footnote}{\UseTerm{footnote.receipts}}
+
+%%%
+\SetForm{receipts-II}{opening}{%
+ \UseTerm{desc.studentwork.full}\\%
+
+ \noindent Membro da Banca : {\bf \DataFields{student.reviewer}{name} }%
+}
+
+%%%
+\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}}%
+
+}
+
+%%%
+\SetForm{receipts-II}{closing}{}
+%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%
+
+
+%%%%%%%%%%%%%%%
+%% examiner's form - II
+%%%%%%%%%%%%%%%
+\SetForm{examinersform-II}{heading}{\UseTerm{title.tccII}}
+\SetForm{examinersform-II}{title}{\UseTerm{title.reviewersform}}
+\SetForm{examinersform-II}{footnote}{\UseTerm{footnote.reviewersform}}
+
+%%%
+\SetForm{examinersform-II}{opening}{\UseTerm{desc.studentwork}
+
+ \noindent\UseLabel{reviewer}: \textbf{\DataFields{student.reviewer}{name}}
+}
+
+%%%
+\SetForm{examinersform-II}{body}{
+A nota (variando de zero a dez) atribuída por cada membro da banca examinadora será dada considerando o desempenho d\DataFields{student}{article} alun\DataFields{student}{article} nos 3 pontos apresentados na tabela abaixo.
+
+ \vfill%
+
+ \begin{center}
+ \begin{tabular}{|c|c|c|}%
+ \hline%
+ \UseLabel{TCC-II.pointA} & \UseLabel{TCC-II.pointB} & \UseLabel{TCC-II.pointC} \\\hline%
+ & & \\\hline
+ \end{tabular}%
+ \end{center}%
+}
+
+%%%
+\SetForm{examinersform-II}{closing}{
+
+ \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}%
+}
+%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%
+
+
+%%%%%%%%%%%%%%%
+%% examiner's form - II
+%%%%%%%%%%%%%%%
+\SetForm{correctionsform-II}{heading}{\UseTerm{title.tccII}}
+\SetForm{correctionsform-II}{title}{\UseTerm{title.correctionsform}}
+\SetForm{correctionsform-II}{footnote}{\UseTerm{footnote.correctionsform}}
+
+%%%
+\SetForm{correctionsform-II}{opening}{\UseTerm{desc.studentwork}
+
+ \noindent\UseLabel{reviewer}: \textbf{\DataFields{student.reviewer}{name}}
+
+}
+
+%%%
+\SetForm{correctionsform-II}{body}{ \resizebox{0.9\textwidth}{!}{%%
+O texto submetido:
+ \parbox[t]{.75\textwidth}{
+ \begin{itemize}[tcc,nosep]
+ \item[$\Box$] Está adequado, dispensando correções do texto.
+ \item[$\Box$] Está adequado, sendo necessário correções, conforme a
+ seguir (e anotações anexas).
+ \begin{description}[tcc,noitemsep]
+ \item[$\Box$] Ortográfica
+ \item[$\Box$] Regras de Escrita
+ \item[$\Box$] Equações
+ \item[$\Box$] Resumo
+ \item[$\Box$] Abstract
+ \item[$\Box$] Índice
+ \item[$\Box$] Introdução
+ \item[$\Box$] Conclusões
+ \item[$\Box$] Corpo do Trabalho
+ \item[$\Box$] Resultados
+ \item[$\Box$] Adicionar mais exemplos
+ \item[$\Box$] Figuras
+ \item[$\Box$] Tabelas
+ \end{description}
+ \item[$\Box$] Necessita ser revisto/re-escrito,\footnotemark[2] e:
+ \begin{itemize}
+ \item[$\Box$] basta a revisão final do texto pelo orientador,
+ \item[$\Box$] revisarei o trabalho depois de corrigido.
+ \end{itemize}
+ \item[$\Box$] Outras considerações (se necessário): \\
+ \begin{tabular}{p{0.7\textwidth}}
+ ~\\\hline
+ ~\\\hline
+ ~\\\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.}%
+}
+
+%%%
+\SetForm{correctionsform-II}{closing}{ \SignatureDate{\UseLabel{signature.reviewer}}%
+ }
+%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%
+
+
+
+%%%%%%%%%%%%%%%
+%% rectify approval - II
+%%%%%%%%%%%%%%%
+\SetForm{rectifyapproval-II}{heading}{\UseTerm{title.tccII}}
+\SetForm{rectifyapproval-II}{title}{\UseTerm{title.rectifyapproval}}
+\SetForm{rectifyapproval-II}{opening}{\UseTerm{desc.studentwork.full}}
+
+%%%
+\SetForm{rectifyapproval-II}{body}{ %
+ \SetTerms{temp.formrefname = {Formulário de Correções}}
+ \UseTerm{desc.rectifyapproval}
+
+ \vfill%
+
+ \ApprovalSignature[\UseLabel{advisor}]{\DataFields{student.advisor}{name}}
+}
+
+%%%
+\SetForm{rectifyapproval-II}{closing}{%
+ \studentDistinctBoardCase
+ {
+ \SetReviewer{1}
+ \ApprovalSignature{\DataFields{student.reviewer}{name}}\vfill
+ }
+ {}
+
+ \SetReviewer{2}
+ \ApprovalSignature{\DataFields{student.reviewer}{name}}\vfill
+
+ \SetReviewer{3}
+ \ApprovalSignature{\DataFields{student.reviewer}{name}}\vfill
+
+
+ \ApprovalSignature[\UseLabel{altreviewer.sig}]{\DataFields{student.altreviewer}{name}}
+}
+
+%%%%%%%%%%%%%%%
+%% referall letter- I
+%%%%%%%%%%%%%%%
+\SetForm{referral-I}{heading}{\UseTerm{title.tccI}}
+\SetForm{referral-I}{title}{\UseTerm{semester}}
+\SetForm{referral-I}{opening}{\UseTerm{desc.sacad}}
+
+%%%
+\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}{%
+ \begin{flushright}
+ Porto Alegre, \UseConst{publ.day} de \UseConst{publ.month} de \UseConst{publ.year}.\\[2em]
+
+ \ActivitySelect{tccI}
+ \DataFields{activity.coord}{name}
+
+ \DataFields{activity.coord}{title}
+ \end{flushright}
+ \vfill
+}
+
+
+\NewDocumentCommand{\studentCoadvLabelCase}{}{%%
+ \studentCoadvCase{\UseLabel{advisors} : \DataFields{student.advisor}{name} / \DataFields{student.coadvisor}{name}}{\UseLabel{advisor} : \DataFields{student.advisor}{name}}%%
+}
+
+\NewDocumentCommand{\studentBoardI}{}{
+ {%%
+ \footnotesize%
+ \begin{center}%
+ \begin{tabular}{p{\UseConst{report.tabA*}}@{\ }p{\UseConst{report.tabB*}}@{\ }c}%\hline%
+ & \UseLabel{board} \\\hline%
+ \multirow{2}={\DataFields{student}{name}} %
+ &\DataFields{student.reviewer[2]}{name}\\%
+ &\DataFields{student.reviewer[3]}{name}\\%
+ \multicolumn{2}{l}{\ \ \studentCoadvLabelCase} \\\hline%
+ \end{tabular}%
+ \end{center}%
+ }%
+}
+
+\NewDocumentCommand{\studentBoardGradedI}{}{
+ {\footnotesize%
+ \begin{center}%
+ \resizebox{\textwidth}{!}{%
+ \begin{tabular}{p{\UseConst{report.tabA}}@{\ }p{\UseConst{report.tabB}}@{\ }c@{\ }c@{\ }c@{\ }c@{\ }c@{\ }c}%\hline%
+ \HeaderLineI
+ \studentLineI\\*\hline
+ \end{tabular}%
+ }%
+ \end{center}%
+ }%
+}
+
+
+\NewDocumentCommand{\HeaderLineI}{}{%
+ & \UseLabel{board} & \UseLabel{TCC-I.pointA} & \UseLabel{TCC-I.pointB} & \UseLabel{TCC-I.pointC} & \UseLabel{TCC-I.pointD} &%
+ \UseLabel{Ngrade} & \UseLabel{grade}\\\hline%
+}
+\NewDocumentCommand{\studentLineI}{}{%
+ \multirow{2}={\textbf{\DataFields{student}{name}}} %
+ \ReviewerLineI{2}\\*%
+ \ReviewerLineI{3}\\*%
+ \multicolumn{6}{l}{\ \ \ \studentCoadvLabelCase} & \textbf{\DataFields{student}{gradeavrg}} & \textbf{\DataFields{student}{grade}}%\\* \hline%
+}
+
+\NewDocumentCommand{\ReviewerLineI}{m}{%
+ & \hspace{-0.4em}\DataFields{student.reviewer[#1]}{name} & \DataFields{student.reviewer[#1]}{pointA} & \DataFields{student.reviewer[#1]}{pointB} & \DataFields{student.reviewer[#1]}{pointC} & \DataFields{student.reviewer[#1]}{pointD} & \DataFields{student.reviewer[#1]}{grade} &%
+ }
+
+
+\NewDocumentCommand{\studentExtLine}{m}{%
+ \\[-1em]%
+ \multicolumn{#1}{l}{\ \ \ \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
+}
+
+
+
+
+
+%%%%%%%%%%%%%%%
+%% referall letter- II
+%%%%%%%%%%%%%%%
+\SetForm{referral-II}{heading}{\UseTerm{title.tccII}}
+\SetForm{referral-II}{title}{\UseTerm{semester}}
+\SetForm{referral-II}{opening}{\UseTerm{desc.sacad}}
+
+%%%
+\SetForm{referral-II}{body}{ %
+
+\studentCase%
+ {
+ \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ apresentou o trabalho intitulado \emph{\DataFields{student}{worktitle}}\ no dia \DataFields{student}{board-day}, tendo sido APROVAD\DataFields{student}{Article} com conceito final \textbf{\DataFields{student}{grade}}, conforme quadro de notas abaixo.\\[2em]
+ \studentBoardGradedII
+ }%
+ {
+ \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ apresentou o trabalho intitulado \emph{\DataFields{student}{worktitle}}\ no dia \DataFields{student}{board-day}, tendo sido REAPROVAD\DataFields{student}{Article} com conceito final \textbf{\DataFields{student}{grade}}, conforme quadro de notas abaixo.\\[2em]
+ \studentBoardGradedII
+ }%
+ {
+ \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ apresentou o trabalho intitulado \emph{\DataFields{student}{worktitle}}\ no dia \DataFields{student}{board-day}, 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]
+ \studentBoardII
+ }%
+ {
+ \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ apresentou o trabalho intitulado \emph{\DataFields{student}{worktitle}}\ no dia \DataFields{student}{board-day}, 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]
+ \studentBoardII
+ }%
+ {
+ \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-II}{closing}{%
+ \begin{flushright}
+ Porto Alegre, \UseConst{publ.day} de \UseConst{publ.month} de \UseConst{publ.year}.\\[2em]
+
+ \ActivitySelect{tccII}
+ \DataFields{activity.coord}{name}
+
+ \DataFields{activity.coord}{title}
+ \end{flushright}
+ \vfill
+}
+
+
+
+
+
+\NewDocumentCommand{\studentBoardII}{}{
+ {%%
+ \footnotesize%
+ \begin{center}%
+ \begin{tabular}{p{\UseConst{report.tabA*}}@{\ }p{\UseConst{report.tabB*}}@{\ }c}%\hline%
+ & \UseLabel{board} \\\hline%
+ \multirow{3}={\DataFields{student}{name}} %
+ &\DataFields{student.reviewer[1]}{name}\\%
+ &\DataFields{student.reviewer[2]}{name}\\%
+ &\DataFields{student.reviewer[3]}{name}\\%
+ \multicolumn{2}{l}{\ \ \studentCoadvLabelCase} \\\hline%
+ \end{tabular}%
+ \end{center}%
+ }%
+}
+\NewDocumentCommand{\studentBoardGradedII}{}{
+ {%
+ \footnotesize%
+ \begin{center}%
+ \resizebox{\textwidth}{!}{%
+ \begin{tabular}{p{\UseConst{report.tabA}}@{\ }p{\UseConst{report.tabB}}@{\ }c@{\ }c@{\ }c@{\ }c@{\ }c}%\hline%
+ \HeaderLineII
+ \studentLineII\\*\hline
+ \end{tabular}%
+ }%
+ \end{center}%
+ }%
+}
+
+\NewDocumentCommand{\HeaderLineII}{}{%
+ & \UseLabel{board} & \UseLabel{TCC-II.pointA} & \UseLabel{TCC-II.pointB} & \UseLabel{TCC-II.pointC} &%
+ \UseLabel{Ngrade} & \UseLabel{grade}\\\hline%
+}
+\NewDocumentCommand{\studentLineII}{}{%
+ \multirow{3}={\textbf{\DataFields{student}{name}}} %
+ \ReviewerLineII{1}\\*%
+ \ReviewerLineII{2}\\*%
+ \ReviewerLineII{3}\\*%
+ \multicolumn{5}{l}{\ \ \ \studentCoadvLabelCase} & \textbf{\DataFields{student}{gradeavrg}} & \textbf{\DataFields{student}{grade}}%\\ \hline%
+}
+
+\NewDocumentCommand{\ReviewerLineII}{m}{%
+ & \hspace{-0.4em}\DataFields{student.reviewer[#1]}{name} & \DataFields{student.reviewer[#1]}{pointA} & \DataFields{student.reviewer[#1]}{pointB} & \DataFields{student.reviewer[#1]}{pointC} & \DataFields{student.reviewer[#1]}{grade} &%
+ }
+
+
+
+
+
+
+
+
+%%%%%%%%%%%%%%%
+%% report TCC - I
+%%%%%%%%%%%%%%%
+\SetForm{report-I}{heading}{\UseTerm{title.tccI}}
+\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}
+ {
+ \starray_set_iter_from_hash:nn {student} {#1}
+ \studentLineI\\*\hline
+ \studentExtLine{8}\\\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]
+ \end{longtable}
+ }
+}
+
+%%%
+\SetForm{report-I}{closing}{}
+
+
+\NewDocumentCommand{\reportMissCase}{mmmO{red}}{
+ \seq_if_empty:NF #2
+ {
+ &\\
+ \multicolumn{#1}{l}{\textbf{\color{#4}#3}}\\\hline
+ \seq_map_inline:Nn #2
+ {
+ \studentselect{##1}
+ &\\*
+ \multicolumn{#1}{l}{\textbf{\color{#4}\DataFields{student}{name}}}\\*
+ \studentExtLine{#1}\\*
+ \multicolumn{#1}{l}{\studentCoadvLabelCase}\\ \hline
+ }
+ }
+}
+
+\ExplSyntaxOff
+
+
+
+%%%%%%%%%%%%%%%
+%% report TCC - II
+%%%%%%%%%%%%%%%
+\SetForm{report-II}{heading}{\UseTerm{title.tccII}}
+\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}
+ {
+ \starray_set_iter_from_hash:nn {student} {#1}
+ \studentLineII\\*\hline
+ \studentExtLine{7}\\\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]
+ \end{longtable}
+ }
+}
+
+%%%
+\SetForm{report-II}{closing}{}
+
+
+\NewDocumentCommand{\CheckList}{mmmO{red}}{
+ \seq_if_empty:NF #2
+ {
+ &\\
+ \multicolumn{#1}{l}{\textbf{\color{#4}#3}}\\\hline
+ \seq_map_inline:Nn #2
+ {
+ \studentselect{##1}
+ &\\[-2ex]
+ ~\multicolumn{#1}{l}{\textbf{\color{#4}\DataFields{student}{name}}}\\*
+ \__ufrgscca_checktable_lines:nn {L1,L2,L3,L4}{C1,C2,C3,C4,C5}\hline
+ }
+ }
+
+}
+
+
+%%%%%%%%%%%%%%%
+%% Check List TCC - I
+%%%%%%%%%%%%%%%
+\SetForm{checklist-I}{heading}{\UseTerm{title.tccI}}
+\SetForm{checklist-I}{title}{Check~ List~ TCC~ I~ -~ \UseTerm{semester}}
+\SetForm{checklist-I}{opening}{}
+
+%%%
+\SetForm{checklist-I}{opening}{ %
+ \ActivitySelect{tccI}
+ { \scriptsize
+ \begin{longtable}{lllll}%
+ \CheckList{5}{\l__ufrgscca_baselist_graded_seq}{Alunos~Com~ Conceito}[black]
+ \CheckList{5}{\l__ufrgscca_baselist_ff_seq}{Desistentes~ com~ conceito~ (2o ~ semestre)}[red]
+ \CheckList{5}{\l__ufrgscca_baselist_dismiss_seq}{Desistentes~ sem~ conceito~ (1o ~ semestre)}[magenta]
+ \end{longtable}
+ }
+ ~\vfill
+}
+
+%%%
+\SetForm{checklist-I}{closing}{}
+
+
+%%%%%%%%%%%%%%%
+%% Check List TCC - II
+%%%%%%%%%%%%%%%
+\SetForm{checklist-II}{heading}{\UseTerm{title.tccII}}
+\SetForm{checklist-II}{title}{Check~ List~ TCC~ II~ -~ \UseTerm{semester}}
+\SetForm{checklist-II}{opening}{}
+
+%%%
+\SetForm{checklist-II}{opening}{ %
+ \ActivitySelect{tccII}
+ { \scriptsize
+ \begin{longtable}{lllll}%
+ \CheckList{5}{\l__ufrgscca_baselist_graded_seq}{Alunos~Com~ Conceito}[black]
+ \CheckList{5}{\l__ufrgscca_baselist_ff_seq}{Desistentes~ com~ conceito~ (2o ~ semestre)}[red]
+ \CheckList{5}{\l__ufrgscca_baselist_dismiss_seq}{Desistentes~ sem~ conceito~ (1o ~ semestre)}[magenta]
+ \end{longtable}
+ }
+ ~\vfill
+}
+
+%%%
+\SetForm{checklist-II}{closing}{}
+
+\ExplSyntaxOff
+
+
+
+
+
+
+%%%%%%%%%%%%%%%
+%% Boards TCC - II
+%%%%%%%%%%%%%%%
+\SetForm{boards}{heading}{\UseTerm{title.tccII}}
+\SetForm{boards}{title}{\UseTerm{board.title}}
+\SetForm{boards}{opening}{}
+
+\ExplSyntaxOn
+%%%
+\SetForm{boards}{opening}{ %
+ {\footnotesize
+ \begin{longtable}{p{\UseConst{board.tabA}}p{\UseConst{board.tabB}}p{\UseConst{board.tabC}}p{\UseConst{board.tabD}}}%
+ %\multicolumn{4}{c}{\UseTerm{board.title}}\\\hline
+ \hline
+ \tl_gclear:N \l__ufrgscca_daytmpa_tl
+ \tl_gclear:N \l__ufrgscca_daytmpb_tl
+ \seq_map_inline:cn {l__ufrgscca_baselist_seq}
+ {
+ \starray_set_iter_from_hash:nn {student} {#1}
+ \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 {}}
+ {}
+ \tl_if_eq:NNF \l__ufrgscca_daytmpa_tl \l__ufrgscca_daytmpb_tl
+ {
+ &\multicolumn{3}{r}{\textbf{\l__ufrgscca_daytmpc_tl\ ~- ~ \l__ufrgscca_daytmpb_tl}}\\*
+ \textsc{\UseLabel{student.gen}} & \textsc{\UseLabel{advisor.gen}} & \textsc{\UseLabel{board}} & \textsc{\UseLabel{boardtime.gen}}\\*\hline
+ \tl_gset:Ne \l__ufrgscca_daytmpa_tl \l__ufrgscca_daytmpb_tl
+ }
+ \multirow{4}={\textbf{\DataFields{student}{name}}} & \multirow{4}={\studentCoadvCase{\hspace{-0.6em}\DataFields{student.advisor}{name}\\[1mm]\hspace{-0.6em}\DataFields{student.coadvisor}{name}}{\hspace{-0.6em}\DataFields{student.advisor}{name}}} & \DataFields{student.reviewer[1]}{name} & \multirow{4}={\DataFields{student}{board-time}\\[1mm]\DataFields{student}{board-local}}\\*
+ && \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
+ }
+ \end{longtable}
+
+ {\scriptsize\UseTerm{board.obs}}
+ }
+}
+\ExplSyntaxOff
+
+%%%
+\SetForm{boards}{body}{~}
+\SetForm{boards}{closing}{~}
+
+
+%%%%%%%%%%%%%%%
+%% cocertificate
+%%%%%%%%%%%%%%%
+\SetForm{cocertificate}{heading}{\UseTerm{title.tcc}}
+\SetForm{cocertificate}{title}{\UseTerm{semester}}
+\SetForm{cocertificate}{opening}{À quem interessar possa,\\ certificamos que}
+\SetForm{cocertificate}{body}{%
+ \begin{center}
+ \textsc{\DataFields{student.coadvisor}{name}}
+ \end{center}
+ \vfill
+ atuou como coorientador\DataFields{student.coadvisor}{narticle} d\DataFields{student}{article} alun\DataFields{student}{article}\ \emph{\DataFields{student}{name}}\ no Trabalho de Conclusão de Curso intitulado \emph{\DataFields{student}{worktitle}}\ no semestre \UseTerm{semester}.
+}
+
+\SetForm{cocertificate}{closing}{%
+ \begin{flushright}
+ Porto Alegre, \UseConst{publ.day} de \UseConst{publ.month} de \UseConst{publ.year}.\\[2em]
+
+ \ActivitySelect{tccII}
+ \DataFields{activity.coord}{name}
+
+ \DataFields{activity.coord}{title}
+ \end{flushright}
+ \vfill
+}
+
+
+
+
+%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%
+%%
+%%%%%%%%%%%%%%%
+% examiners approval (or not) signature (for rectify approval form)%
+%%%%%%%%%%%%%%%
+\ExplSyntaxOn
+\NewDocumentCommand{\ApprovalSignature}{O{\UseLabel{reviewer}}m}{%%
+ \UseTerm{corrections.ok} \hfill Data:\rule{\l__ufrgscca_date_rule_dim}{.1pt}\\[3mm]%
+ #1: #2 \hfill \UseLabel{signature.gen}:\rule{\l__ufrgscca_name_rule_dim}{.1pt}%
+}%
+\ExplSyntaxOff
+
+
+
diff --git a/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-terms-en.tex b/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-terms-en.tex
new file mode 100644
index 00000000000..04f3fa11d02
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-terms-en.tex
@@ -0,0 +1,103 @@
+%%%==============================================================================
+%% Copyright 2022-23 by Alceu Frigeri
+%%
+%% This work may be distributed and/or modified under the conditions of
+%%
+%% * The [LaTeX Project Public License](http://www.latex-project.org/lppl.txt),
+%% version 1.3c (or later), and/or
+%% * The [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html),
+%% version 3 (or later)
+%%
+%% This work has the LPPL maintenance status *maintained*.
+%%
+%% The Current Maintainer of this work is Alceu Frigeri
+%%
+%% This is version {2.0} {2023/11/23}
+%%
+%% The list of files that compose this work can be found in the README.md file at
+%% https://ctan.org/pkg/ufrgscca
+%%
+%%%==============================================================================
+%% UFRGS stands for "Federal University of Rio Grande do Sul" in south Brazil
+%% EE stands for "Engineering School"
+%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym)
+%%%==============================================================================
+
+
+\SetHeadings{%
+ university = Federal University of Rio Grande do Sul ,
+ acronym = UFRGS ,
+ unit = Engineering School ,
+ secretary = SACAD/EE ,
+ course = Control and Automation Engineering ,
+ course.title = Bachelor in Control and Automation Engineering ,
+ department = {Dept. of Electrical Systems} ,
+}
+
+
+
+\ActivitySelect{course}
+\ActivitySet{CCA}{Control and Automation Engineering}
+\ActivitySetCoord{Nome Coordenador}
+\ActivitySetCoordTitle{Head of Course}
+
+\ActivitySelect{tccI}
+\ActivitySet{TCC~-~I}{Final Course Work I}
+\ActivitySetCoord{Nome Coordenador}
+\ActivitySetCoordTitle{Final Course Work Coordinator}
+
+\ActivitySelect{tccII}
+\ActivitySet{TCC~-~II}{Final Course Work II}
+\ActivitySetCoord{Nome Coordenador}
+\ActivitySetCoordTitle{Final Course Work Coordinator}
+
+\ActivitySelect{internship}
+\ActivitySet{Est.Ob.}{Estágio Supervisionado Obrigatório}
+\ActivitySetCoord{Nome Coordenador}
+\ActivitySetCoordTitle{Coordenador\ActivityCoord[internship]{narticle} da Atividade de Ensino de\newline Estágio Supervisionado Obrigatório}
+
+
+
+\SetTerms{%
+ title.tcc = Completions's Course Work ,
+ title.tccI = Completions's Course Work I ,
+ title.tccII = Completions's Course Work II ,
+}
+
+
+\SetLabels{%
+ advisor = Advisor ,
+ advisors = Advisors ,
+ advisor.gen = Advisor ,
+ advisor.email = Advisor's Email ,
+ coadvisor = Co-advisor ,
+ coadvisor.gen = Co-advisor ,
+ coadvisor.email = Co-advisor's Email ,
+ reviewer.base = Reviewer ,
+ reviewer = Reviewer ,
+ 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 = Student ,
+ student.gen = Student ,
+ student.email = Student's Email ,
+ student.ID = Card N. ,
+ board = Exam's Board ,
+}
+
+\SetTerms{%
+ tccI.text-descpage = { This work's proposal was submitted to COMGRAD/\Activity[course]{acronym}\ -- \UseHeading{acronym}\
+ as part of the requirements to obtain the title of \emph{\UseHeading{course.title}.}
+ } ,
+ tccI.text-approvalpage = { This work's proposal was considered adequate to finish the \emph{\Activity[tccI]{name}} and approved, in it's final form, by the
+ \studentCoadvCase{Advisors}{Advisor} and Exam's Board below. } ,
+ tccII.text-descpage = { This work was submitted to COMGRAD/\Activity[course]{acronym}\ -- \UseHeading{acronym}\
+ as part of the requirements to obtain the title of \emph{\UseHeading{course.title}.}
+ } ,
+ tccII.text-approvalpage = { This work was considered adequate to finish the \emph{\Activity[tccII]{name}} and approved, in it's final form, by the
+ \studentCoadvCase{Advisors}{Advisor} and Exam's Board below.
+ } ,
+}
+
diff --git a/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-terms-ptBR.tex b/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-terms-ptBR.tex
new file mode 100644
index 00000000000..187a58ebf09
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca-terms-ptBR.tex
@@ -0,0 +1,267 @@
+%%%==============================================================================
+%% Copyright 2022-23 by Alceu Frigeri
+%%
+%% This work may be distributed and/or modified under the conditions of
+%%
+%% * The [LaTeX Project Public License](http://www.latex-project.org/lppl.txt),
+%% version 1.3c (or later), and/or
+%% * The [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html),
+%% version 3 (or later)
+%%
+%% This work has the LPPL maintenance status *maintained*.
+%%
+%% The Current Maintainer of this work is Alceu Frigeri
+%%
+%% This is version {2.0} {2023/11/23}
+%%
+%% The list of files that compose this work can be found in the README.md file at
+%% https://ctan.org/pkg/ufrgscca
+%%
+%%%==============================================================================
+%% UFRGS stands for "Federal University of Rio Grande do Sul" in south Brazil
+%% EE stands for "Engineering School"
+%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym)
+%%%==============================================================================
+
+
+\location{Porto~Alegre}{RS}
+
+\SetHeadings{%
+ university = Universidade Federal do Rio Grande do Sul ,
+ acronym = UFRGS ,
+ unit = Escola de Engenharia ,
+ secretary = SACAD/EE ,
+ course = Engenharia de Controle e Automação ,
+ course.title = Bacharel em Engenharia de Controle e Automação ,
+ ppc.comgrad = {COMISSÃO DE GRADUAÇÃO - COMGRAD/CCA} ,
+ ppc.nde = {NÚCLEO DOCENTE ESTRUTURANTE - NDE/CCA} ,
+ ppc.course = {DO CURSO EM ENGENHARIA DE CONTROLE E AUTOMAÇÃO} ,
+ department = {Depto. de Sistemas Elétricos de Automação e Energia} ,
+}
+
+
+
+\ActivitySelect{course}
+\ActivitySet{CCA}{Eng. de Controle e Automação}
+\ActivitySetCoord{Nome Coordenador}
+\ActivitySetCoordTitle{Coordenador\ActivityCoord[course]{narticle} de Curso}
+
+\ActivitySelect{tccI}
+\ActivitySet{TCC~-~I}{Trabalho de Conclusão de Curso CCA - I}
+\ActivitySetCoord{Nome Coordenador}
+\ActivitySetCoordTitle{Coordenador\ActivityCoord[tccI]{narticle} da Atividade de Ensino de\break Trabalho de Conclusão de Curso}
+
+\ActivitySelect{tccII}
+\ActivitySet{TCC~-~II}{Trabalho de Conclusão de Curso CCA - II}
+\ActivitySetCoord{Nome Coordenador}
+\ActivitySetCoordTitle{Coordenador\ActivityCoord[tccII]{narticle} da Atividade de Ensino de\break Trabalho de Conclusão de Curso}
+
+\ActivitySelect{internship}
+\ActivitySet{Est.Ob.}{Estágio Supervisionado Obrigatório}
+\ActivitySetCoord{Nome Coordenador}
+\ActivitySetCoordTitle{Coordenador\ActivityCoord[internship]{narticle} da Atividade de Ensino de\newline Estágio Supervisionado Obrigatório}
+
+\ActivitySelect{internship}
+\ActivitySet{Est.Ob.}{Estágio Supervisionado Não Obrigatório}
+\ActivitySetCoord{Nome Coordenador}
+\ActivitySetCoordTitle{Coordenador\ActivityCoord[internship]{narticle} da Atividade de Ensino de\newline Estágio Supervisionado Não Obrigatório}
+
+
+\SetTerms{%
+ title.tcc = Trabalho de Conclusão de Curso ,
+ title.tccI = Trabalho de Conclusão de Curso I ,
+ title.tccII = Trabalho de Conclusão de Curso II ,
+ title.internship = Estágio Supervisionado Obrigatório ,
+ %
+ title.calendar = {Calendário - \UseTerm{semester}} ,
+ title.requestform = Formulário de Requerimento de Matrícula ,
+ title.coadvisorform = Requerimento de Autorização de Coorientação ,
+ title.boardapproval = Formulário de Indicação da Banca Examinadora ,
+ title.advisorsapproval-I = Formulário de Aprovação para Avaliação ,
+ title.advisorsapproval-II = Formulário de Aprovação para Apresentação ,
+ title.receipts = Recibo de entrega de cópia da versão final do Trabalho de Conclusão ,
+ title.reviewersform = Formulário de Avaliação ,
+ title.correctionsform = Formulário de Correções ,
+ title.rectifyapproval = Formulário de Aprovação das Correções ,
+ title.internsupervisorform = Formulário de Avaliação do Supervisor (Pela Empresa) ,
+ title.interntutorform = Formulário de Avaliação do Tutor e Coordenador ,
+ %
+ %footnote.reviewersform
+ footnote.reviewersform = {Entregar a cada membro da banca juntamente com a cópia do trabalho.} , %%% TCC I / II
+ footnote.receipts = {Entregar a cada membro da banca juntamente com a cópia do trabalho final e após encaminhar à coordenação de TCC.} , %%% TCC II
+ footnote.correctionsform = {Entregar a cada membro da banca juntamente com a cópia do trabalho. Após apresentação, retornar este à coordenação de TCC.} ,%%% TCC II
+ %
+ footnote.supervisorsform = {Favor utilizar a seguinte grade discreta: \begin{enumerate*}[start=0]\item Sofrível \item Regular \item Bom \item Muito Bom \item Excelente \end{enumerate*}} ,
+ %
+ opening.requestform = { Ilm\ActivityCoord[course]{article}. Sr\ActivityCoord[course]{narticle}.\par
+ Coordenador\ActivityCoord[course]{narticle} da Comissão de Graduação do Curso em \Activity[course]{name}\ da \UseHeading{university}. } ,
+ localdate = {\UseConst{publ.city},\hspace{4mm} de \hspace{1.2cm} de 20\hspace{4mm}.} ,
+ %
+ %
+ %
+ %
+ footnote.requestform = { O resumo deve ser curto, i.e., não deve exceder este espaço. O texto deve ser escrito em parágrafo único,
+ e por se tratar de proposta, poderá utilizar tempo futuro e não necessita ter motivação ou justificativa.\break Deve conter:
+ \begin{enumerate*}[alpha)]
+ \item O QUE será feito - descrição e objetivos.
+ \item COMO será feito - metodologia.
+ \item Resultados esperados.
+ \end{enumerate*}%
+ } , %%% TCC I
+ desc.requestform = { \DataFields{student}{Article} alun\DataFields{student}{article} \DataFields{student}{name},
+ REGULARMENTE MATRICULAD\DataFields{student}{Article} neste período letivo no curso \emph{\Activity[course]{name}}, desta universidade,
+ portador\DataFields{student}{narticle} do cartão de identificação n$^o$ \DataFields{student}{ID},
+ vem por meio deste solicitar matrícula na atividade de ensino} ,
+ desc.coadvisorform = {\DataFields{student}{Article} alun\DataFields{student}{article} \DataFields{student}{name},
+ REGULARMENTE MATRICULAD\DataFields{student}{Article} na atividade de TCC neste período letivo,
+ vem por meio deste solicitar autorização para registro de coorientação de TCC, conforme justificativa abaixo.} ,
+ desc.rectifyapproval = { \begin{description}
+ \item[Observação 1:] Caso a versão final corrigida do trabalho, mais este formulário, não sejam entregues até a data estipulada, o conceito final passará a ser {\bf D}.
+ \item[Observação 2:] Caso as correções sejam satisfatórias, a nota final será a já atribuída pela Banca Examinadora.
+ \item[Observação 3:] A assinatura d\DataFields{student.advisor}{article} orientador\DataFields{student.advisor}{narticle} é obrigatória, entretanto a assinatura dos membros da banca só é necessária caso tenham marcado a opção ''$\Box$ Revisarei o trabalho depois de corrigido'' no \emph{\UseTerm{temp.formrefname}}.
+ \end{description}
+ } ,
+ desc.studentwork = {
+ \noindent\UseLabel{student}: {\bf \DataFields{student}{name}}\hfill \UseLabel{student.ID}: {\bf \DataFields{student}{ID}}\\%
+ \noindent\UseLabel{worktitle}: \DataFields{student}{worktitle} } ,
+ desc.studentwork.full = {\UseTerm{desc.studentwork}\\[2.5mm]\UseTerm{desc.advisor}} ,
+ desc.advisor = {\noindent\UseLabel{advisor}: \textbf{\DataFields{student.advisor}{name}}} ,
+ desc.coadvisor = {\noindent\UseLabel{coadvisor}: \textbf{\DataFields{student.advisor}{name}}} ,
+ desc.reviewer = {\noindent\UseLabel{reviewer}: \textbf{\DataFields{student.advisor}{name}}} ,
+ desc.student = {\noindent\UseLabel{student}: {\bf \DataFields{student}{name}}\hfill
+ \UseLabel{student.ID}: {\bf \DataFields{student}{ID}}} ,
+ desc.internshipperiod = {\noindent Período do Estágio: {\bf \DataFields{student.internship}{start}} até: {\bf \DataFields{student.internship}{end}}} ,
+ desc.supervisor = {\UseLabel{supervisor}: \textbf{\DataFields{student.supervisor}{name}} \hfill CREA: \textbf{\DataFields{student.supervisor}{register}}} ,
+ desc.sacad = {\noindent Ao\par\noindent SACAD da Escola de Engenharia} ,
+ corrections.ok = {Correções satisfatórias: \hspace*{1cm}$\Box$\ sim\hspace*{2cm}$\Box$\ não} ,
+}
+
+
+
+\SetTerms{%
+ tccI.text-descpage = { Proposta de Trabalho de Conclusão de Curso submetida à
+ COMGRAD/\Activity[course]{acronym}\ da \UseHeading{acronym}\ como parte dos requisitos para a
+ obtenção do título de \emph{\UseHeading{course.title}.}
+ } ,
+ tccI.text-approvalpage = { Esta Proposta de Trabalho de Conclusão de Curso foi julgada adequada para a
+ obtenção dos créditos da Atividade de \emph{\Activity[tccI]{name}} e aprovada em sua forma final
+ \studentCoadvCase{pelos Orientadores}{pel\DataFields{student.advisor}{article} Orientador\DataFields{student.advisor}{narticle}}
+ e Banca Examinadora abaixo.
+ } ,
+ tccII.text-descpage = { Trabalho de Conclusão de Curso submetido à
+ COMGRAD/\Activity[course]{acronym}\ da \UseHeading{acronym}\ como parte dos requisitos para a
+ obtenção do título de \emph{\UseHeading{course.title}.}
+ } ,
+ tccII.text-approvalpage = { Este Trabalho de Conclusão de Curso foi julgado adequado para a
+ obtenção dos créditos da Atividade de \emph{\Activity[tccII]{name}} e aprovado em sua forma final
+ \studentCoadvCase{pelos Orientadores}{pel\DataFields{student.advisor}{article}
+ Orientador\DataFields{student.advisor}{narticle}} e Banca Examinadora abaixo.
+ } ,
+}
+
+
+
+
+%\SetTerms{%
+%
+%}
+
+
+\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 ,
+}
+
+\SetLabels{%
+ TCC-I.pointA = {Tema} ,
+ TCC-I.pointB = {Biblio.} ,
+ TCC-I.pointC = {Plano Trab.} ,
+ TCC-I.pointD = {Texto} ,
+ TCC-II.pointA = {Conteúdo} ,
+ TCC-II.pointB = {Trab. Escrito} ,
+ TCC-II.pointC = {Apresentação} ,
+ Ngrade = {Nota} ,
+ grade = {Conceito} ,
+}
+
+\SetConsts{%
+ TCC-I.weightA = {2} ,
+ TCC-I.weightB = {2} ,
+ TCC-I.weightC = {2} ,
+ TCC-I.weightD = {1} ,
+ TCC-II.weightA = {0.35} ,
+ TCC-II.weightB = {0.35} ,
+ TCC-II.weightC = {0.3} ,
+ NgradeA = {9.0} ,
+ NgradeB = {7.5} ,
+ NgradeC = {6.0} ,
+}
+
+
+
+\SetConsts{%
+ report.tabA = {32mm} ,
+ report.tabA* = {42mm} ,
+ report.tabB = {42mm} ,
+ report.tabB* = {62mm} ,
+ report.tabC = {15mm} ,
+ report.tabD = {15mm} ,
+ report.tabE = {15mm} ,
+ report.tabEx = {15mm} ,
+ report.tabF = {8mm} ,
+ report.tabG = {12mm} ,
+}
+
+\SetConsts{%
+ board.tabA = {38mm} ,
+ board.tabB = {38mm} ,
+ board.tabC = {60mm} ,
+ board.tabD = {13mm} ,
+}
+
+\SetConsts{%
+ cover.winwidth = {95mm} ,
+ cover.winheight = {64mm} ,
+ cover.winvoffset = {112mm} ,
+ form.winvoffset = {24mm} ,
+}
+
diff --git a/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca.pdf b/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca.pdf
index 520b6165a31..70e38ced7fa 100644
--- a/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca.pdf
+++ b/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca.tex b/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca.tex
index e10a7db8c89..e274af87edb 100644
--- a/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca.tex
+++ b/Master/texmf-dist/doc/latex/ufrgscca/ufrgscca.tex
@@ -15,7 +15,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version 1.12 (2023/09/23)
+%% This is version {2.0} {2023/11/23}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -28,7 +28,6 @@
\documentclass[article,nogeometry,english,tocdepth=3,secdepth=3]{ufrgscca} % tcbundle tcpack tcmain
\usepackage[a4paper,margin=5cm,right=2cm,marginparwidth=3.5cm,asymmetric,top=2.5cm,bottom=1.5cm]{geometry}
\usepackage{codedescribe}
-\usepackage{ufrgscca-curr}
%\maxdeadcycles=500 %% the many marginpar statements are actually a pain.
@@ -36,6 +35,19 @@
%\fulldocfalse
\fulldoctrue
+\newif\ifversiontest
+\versiontestfalse
+%\versiontesttrue
+
+
+\ifversiontest
+\usepackage{ufrgscca-lists}
+\usepackage{ufrgscca-coord}
+\usepackage{ufrgscca-forms}
+\usepackage{ufrgscca-ppc}
+\usepackage{ufrgscca-curr}
+\fi
+
\begin{document}
@@ -43,16 +55,22 @@
\tstitle{
author={Alceu Frigeri\footnote{\tsverb{https://github.com/alceu-frigeri/ufrgscca}}},
date={\monthname\space\number\year},
- title={The ufrgscca, and associated, Packages\\ Version \ufrgsccaversion \\(extended documentation)}
+ title={The ufrgscca, and associated, Packages\\ Version \PkgInfo{ufrgscca}{version} \\(extended documentation)}
}
\else
\tstitle{
author={Alceu Frigeri\footnote{\tsverb{https://github.com/alceu-frigeri/ufrgscca}}},
date={\monthname\space\number\year},
- title={The ufrgscca, and associated, Packages\\ Version \ufrgsccaversion}
+ title={The ufrgscca, and associated, Packages\\ Version \PkgInfo{ufrgscca}{version}}
}
\fi
+\ifversiontest
+\ExplSyntaxOn
+\clist_map_inline:nn {ufrgscca,ufrgscca-abnt,ufrgscca-core,ufrgscca-cover,ufrgscca-lists,ufrgscca-forms,ufrgscca-coord,ufrgscca-curr,ufrgscca-ppc}{\PkgDescription{#1}}
+\ExplSyntaxOff
+\fi
+
\begin{tsabstract}
This bundled is aimed at producing undergraduate students final work/report at UFRGS/EE (Engineering School at the Federal University of Rio Grande do Sul), closely following ABNT rules (Brazilian Association for Technical Norms). It is composed of a main class, \tsobj[pkg]{ufrgscca}, and a set of auxiliary packages, some of which can be used independently.
@@ -61,29 +79,37 @@
\tableofcontents
\section{Introduction}
- \emph{ABNT} rules can be quite challenging some times (read: bibliography style/references) and sometimes just odd (line spacing, front matter, page layout), nevertheless it is a \emph{Brazilian Standard} for typography whose students at UFRGS should grow cherished to follow.
+ \emph{ABNT} rules can be quite challenging at times (read: bibliography style/references) and sometimes just odd (line spacing, front matter, page layout), nevertheless it is a \emph{Brazilian Standard} for typography whose students at UFRGS should grow cherished to follow.
- In short, as of version \ufrgsccaversion\space the bundle is composed of a class, \tsobj[pkg]{ufrgscca} (based on the standard \LaTeX2e \tsobj[pkg]{report} class), which pre-loads all other, as needed, packages: \tsobj[pkg]{ufrgscca-abnt, ufrgscca-core, ufrgscca-cover, ufrgscca\-forms, ufrgscca-gen, ufrgscca-lists, ufrgscca-curr, ufrgscca-coord, ufrgscca-ppc}.
+ In short, as of version \PkgInfo{ufrgscca}{version}\space the bundle is composed of a class, \tsobj[pkg]{ufrgscca} (based on \tsobj[pkg]{report} class), which pre-loads, as needed: \tsobj[pkg]{ufrgscca-abnt, ufrgscca\-core, ufrgscca-cover, ufrgscca-forms, ufrgscca-lists}. The packages \tsobj[pkg]{ufrgscca-curr, ufrgscca-coord, ufrgscca-ppc} need to be loaded explicitly, thought.
\begin{tsremark}[N.B.:]
This bundle requires a quite recent \LaTeX2e kernel, at least as recent as June 2022, which allows to declare package options using the \tsobj[key]{key}~=\tsobj[key]{value} system and declare commands with \tsmacro{\NewDocumentCommand}{}, out-of-the-box.
\end{tsremark}
+\begin{tsremark}[\color{red}Version 2.0:]
+ Starting with Version 2.0, this bundle has been fully re-written with \tsobj[pkg]{Expl3,starray}.
+\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}
+\end{tsremark}
+
\subsection{Current Version}
-For the sake of the “maintainer's sanity”, since this is a bundle, all files are saved with the same version (bundle version), with two exceptions: \tsobj[pkg]{ufrgscca-curr.sty} \tsobj[pkg]{ufrgscca-ppc.sty} which are less tested than the others, and somewhat in what one would call 'beta' state. Better said, all files are version \ufrgsccaversion, except \tsobj[pkg]{ufrgscca-curr} and \tsobj[pkg]{ufrgscca-ppc} whose versions are \ufrgsccacurrversion.
+For the sake of the “maintainer's sanity”, since this is a bundle, all files are saved with the same version (bundle version: \PkgInfo{ufrgscca}{version})
\section{\tightul{ufrgscca} Class}
-The following packages are always pre-loaded: \tsobj[pkg]{etex, etoolbox, lmodern, fontenc (T1), inputenc (utf8), silence, ufrgscca-abnt, ufrgscca-gen}, \tsobj[pkg]{ ufrgscca-cover, ufrgscca-core, hyperref} and (if it exists) a \emph{local.tex} file.
+The following packages are always pre-loaded: \tsobj[pkg]{etex, etoolbox, lmodern, fontenc (T1), inputenc (utf8), silence, ufrgscca-abnt}, \tsobj[pkg]{ ufrgscca-cover, ufrgscca-core, hyperref} and (if it exists) a \emph{local.tex} file.
-Other set of auxiliary packages are also pre-loaded, depending on the class options used, and finally it loads (normally) the \tsobj[pkg]{report} class (the exception being if one uses the \tsobj[option]{dctools} option).
+Other, auxiliary, packages are also pre-loaded, depending on the class options used, and finally \tsobj[pkg]{report} class (the exception being in case of the \tsobj[option]{article} class option).
-Being based on the report class, one can use all class options one would with a report, plus the ones listed below.
+Being based on the report class, all report class options are valid, in addition to the ones below.
\subsection{Class Options}
\begin{describelist}{option}
- \describe {tocdepth} { use: \tsobj[key]Use{tocdepth}{number}, whereas \tsobj[meta]{number} indicates the deepest sectioning to appears in the Table of Contents (0 being the top section, which is \tsmacro{\chapter}{} for report based classes, 1 being \tsmacro{\section}{}, and so on.) The default value being 3 (\tsmacro{\subsubsection}{}).}
+ \describe {tocdepth} { use: \tsobj[key]{tocdepth}=\tsobj[value]{number}, whereas \tsobj[meta]{number} indicates the deepest sectioning to appears in the Table of Contents (0 being the top section, which is \tsmacro{\chapter}{} for report based classes, 1 being \tsmacro{\section}{}, and so on.) The default is 3 (\tsmacro{\subsubsection}{}).}
- \describe {secdepth} { use: \tsobj[key]Use{secdepth}{number}, whereas \tsobj[meta]{number} indicates the deepest sectioning to be numbered. (0 being the top section, which is \tsmacro{\chapter}{} for report based classes, 1 being \tsmacro{\section}{}, and so on.) The default value being 4 (\tsmacro{\paragraph}{}).}
+ \describe {secdepth} { use: \tsobj[key]{secdepth}=\tsobj[value]{number}, whereas \tsobj[meta]{number} indicates the deepest sectioning to be numbered. (0 being the top section, which is \tsmacro{\chapter}{} for report based classes, 1 being \tsmacro{\section}{}, and so on.) The default is 4 (\tsmacro{\paragraph}{}).}
\describe {english} { the default language being Portuguese, this option changes locale to English.}
@@ -91,7 +117,7 @@ Being based on the report class, one can use all class options one would with a
\describe {relnum} { by default, figures, tables, etc. are numbered as a continuous series. With this switch, those lists are reset at each chapter, e.g. Figure 5.1 instead of Figure 23.}
- \describe {openright} { in case of printed material, this will assure that a \tsmacro{\chapter}{} always starts at an odd page, which is relevant in case of printing out (double sided) the document.}
+ \describe {openright} { in case of printed material, this assures that a \tsmacro{\chapter}{} always starts at an odd page, which is relevant in case of printing out (double sided) the document.}
\describe {oneside} { in case the document will be printed in single side sheets, otherwise it's assumed a two-sided printing.}
@@ -99,7 +125,7 @@ Being based on the report class, one can use all class options one would with a
\describe {pretextontoc} { “pre-text” elements, like “list of$\dots$” will be inserted in the “table of contents”.}
- \describe {yearsonly} { Cover pages, at their bottom, will display the years only (instead of the default mouth year construct).}
+ \describe {yearsonly} { Approval page, at it’s bottom, will display the years only (instead of the default mouth year construct).}
\describe {timesroman} { will set the default font to Roman (using the obsolete mathptmx package, based on a free replacement of the proprietary
Times New Roman (by Microsoft) and Times Roman (By Adobe)) instead of the default Latin Modern Roman font.
@@ -120,14 +146,6 @@ In the default setting the author's name is written only in the first entry, and
%\begin{describelist}{option}
%some random text, inserted here...
- \describe {report} { in case the doc is just a class assignment with, possibly, many co-authors. It changes mainly the front matter, which is simplified (no referral page, for instance).}
-
- \describe {internship} { in case the doc is an internship report.}
-
- \describe {nonrequired} { in case the internship report is related to a “non required” / “optional” internship. This option is ignored otherwise.}
-
- \describe {forms} { in the process of submitting a student final work/report, there is a series of forms to be submitted, this allows the customization of said forms in a simple way.}
-
\describe {chapternopagenum} { to suppress the page numbers at chapters begin.}
\describe {nomicrotype} { in some rare cases, \tsobj[pkg]{microtype} might hurt page layout, this allows the suppression of \tsobj[pkg]{microtype}.}
@@ -144,6 +162,8 @@ In the default setting the author's name is written only in the first entry, and
\describe {nogeometry} { the package \tsobj[pkg]{geometry} won't be loaded. In case one wants to fully customize the page geometry}
+ \describe {oldrenews} { Some, deprecated, renews will be in effect: \tsobj{\maketitle}, \tsobj{\author} \tsobj{\begin{abstract}}. For backwards compatibility only. }
+
\describe {texlive} { this is a reserved key, in case some workaround for texlive is needed.}
\describe {overleaf} { this is a reserved key, in case some workaround for overleaf is needed.}
@@ -154,9 +174,9 @@ In the default setting the author's name is written only in the first entry, and
\subsection{Class Declared Commands}
\begin{codedescribe}{\autonameref,\annexref,\autoannexref}
\begin{codesyntax}%
- \tsobj[code]{\autonameref}{\tsobj[oarg]{sep}\tsobj[marg]{label}\tsobj[oarg]{spc}}
+ \tsobj[code]{\autonameref}{\tsargs[oarg]{sep}\tsargs[marg]{label}\tsargs[oarg]{spc}}
\tsmacro{\annexref}{label}
- \tsobj[code]{\autoannexref}{\tsobj[oarg]{sep}\tsobj[marg]{label}\tsobj[oarg]{spc}}
+ \tsobj[code]{\autoannexref}{\tsargs[oarg]{sep}\tsargs[marg]{label}\tsargs[oarg]{spc}}
\end{codesyntax}
The \tsobj[pkg]{hyperref} package, sometimes, gets the \tsmacro{\autoref}{} name wrong (when referencing an annex), the \tsmacro{\annexref}{label} will assure the correct annex name is used.
@@ -175,7 +195,7 @@ The default \tsobj[meta]{sep} being a comma, and the default \tsobj[meta]{spc} b
\tsmacro{\overleafHack}{}
\tsmacro{\livetexHack}{}
\end{codesyntax}
- In case some workaround is needed due an unexpected error (when upgrading packages/\TeX system) the class “knows” about those three hooks.
+ Case some workaround is needed due an unexpected error (when upgrading packages/\TeX system) the class “knows” about those three hooks.
They will be executed if, and only if, they are user defined and the corresponding package option is used, i.e., for example, for the hook \tsmacro{\miktexHack}{} to be used/called by the class \tsobj[pkg]{ufrgscca}, one has to: a)~define it and b)~use the class option \tsobj[option]{miktex}.
\end{codedescribe}
@@ -200,9 +220,7 @@ Take note that \tsobj[pkg]{biblatex} is loaded with the \textbf{\tsobj[option]{b
\describe {repeatfields} { in case of authors with multiple publications, their names will be repeated for each entry. In the default setting the author's name is written only in the first entry, and replaced by underscores in the other entries.}
- \describe {yearsonly} { Cover pages, at their bottom, will display the years only (instead of the default mouth year construct).}
-
- \describe {yearsonly}{ Cover pages, at their bottom, will display the years only, instead of the default mouth year construct.}
+ \describe {yearsonly} { Approval page, at it's bottom, will display the years only (instead of the default mouth year construct).}
\describe {nomicrotype} { in some rare cases, \tsobj[pkg]{microtype} might hurt page layout, this allows the suppression of \tsobj[pkg]{microtype}.}
@@ -210,22 +228,25 @@ Take note that \tsobj[pkg]{biblatex} is loaded with the \textbf{\tsobj[option]{b
\describe {showlabels} { it will put a reference mark in each label created, and print out it's name.}
- \describe {tocdepth} { use: \tsobj[key]{tocdepth}=\tsobj[meta]{number}, whereas \tsobj[meta]{number} indicates the deepest sectioning to appears in the Table of Contents (0 being the top section, which is \tsmacro{\chapter}{} for report based classes, 1 being \tsmacro{\section}{}, and so on.) The default value being 3 (\tsmacro{\subsubsection}{}).}
+ \describe {tocdepth} { use: \tsobj[key]{tocdepth} = \tsobj[meta]{number}, whereas \tsobj[meta]{number} indicates the deepest sectioning to appears in the Table of Contents (0 being the top section, which is \tsmacro{\chapter}{} for report based classes, 1 being \tsmacro{\section}{}, and so on.) The default value being 3 (\tsmacro{\subsubsection}{}).}
- \describe {secdepth} { use: \tsobj[key]{secdepth}=\tsobj[meta]{number}, whereas \tsobj[meta]{number} indicates the deepest sectioning to be numbered. (0 being the top section, which is \tsmacro{\chapter}{} for report based classes, 1 being \tsmacro{\section}{}, and so on.) The default value being 4 (\tsmacro{\paragraph}{}).}
+ \describe {secdepth} { use: \tsobj[key]{secdepth} = \tsobj[meta]{number}, whereas \tsobj[meta]{number} indicates the deepest sectioning to be numbered. (0 being the top section, which is \tsmacro{\chapter}{} for report based classes, 1 being \tsmacro{\section}{}, and so on.) The default value being 4 (\tsmacro{\paragraph}{}).}
- \describe {dctools} { this will change page layout and base class to article, it is meant to document the class itself.}
\end{describelist}
\subsection{Commands}
-\begin{codedescribe}{\keyword}
+\begin{codedescribe}[code,new=2023/11/18]{\mainkeyword,\otherkeyword}
\begin{codesyntax}%
- \tsmacro{\keyword}{keyword}
+ \tsmacro{\mainkeyword}{keyword}
+ \tsmacro{\otherkeyword}{keyword}
\end{codesyntax}
- This command can be invoked many times, it will construct a list of keywords to be used when printing out the abstract environment.
+ These command can be invoked many times, it will construct a list of keywords to be used when printing out the (main/other)abstract environment.
\end{codedescribe}
+\begin{tsremark}
+ the old \tsmacro{\keyword}{keyword} gets defined, as an allias to \tsobj{\mainkeyword}, in case one use the \tsobj[key]{oldrenews} class option is used.
+\end{tsremark}
\begin{codedescribe}{\sourcecitation,\note}
\begin{codesyntax}
@@ -269,7 +290,7 @@ This will \emph{underline} a short text, take note that \tsobj[meta]{text} `can'
\tsmacro{\NewChapListEnv}{envname,displayname}
\end{codesyntax}
\end{codedescribe}
-This is the command used to created those \emph{chapter like} lists, like `List of Symbols' or `List of acronyms'. With it, a new environment is created, \tsobj[meta]{envname}, with an associated `numberless' chapter name \tsobj[meta]{displayname}. The newly created environment will implement a \emph{description} like environment (thanks to \tsobj[pkg]{enumitem}) with an optional and a mandatory argument (see below).
+Creates those \emph{chapter like} lists, like `List of Symbols' or `List of acronyms'. With it, a new environment is created, \tsobj[meta]{envname}, with an associated `numberless' chapter name \tsobj[meta]{displayname}. The newly created environment will implement a \emph{description} like environment (thanks to \tsobj[pkg]{enumitem}) with an optional and a mandatory argument (see below).
\begin{codestore}[st=d.newchapenv]
\def\listabbrvname{Lista de Abreviaturas}
@@ -288,32 +309,33 @@ The command \tsmacro{\date}{} is redefined, to allow a separation between the ma
\subsection{Environments}
-
-\begin{codedescribe}[env]{abstract}
+\begin{codedescribe}[env,new=2023/11/18]{mainabstract}
\begin{codesyntax}%
- \tsmacro{\begin{abstract}}[lang]{keywords}\ldots\tsmacro{\end{abstract}}{}
+ \tsmacro{\begin{mainabstract}}[lang]{keywords}\ldots\tsmacro{\end{mainabstract}}{}
\end{codesyntax}
- The standard environment \tsobj[env]{abstract} is redefined as a numberless chapter based on the current locale (default: Portuguese), at the end of it the keywords list created with \tsmacro{\keyword}{} will be added.
+ \tsobj[env]{mainabstract} is defined as a numberless chapter based on the current locale (default: Portuguese), at the end of it the keywords list created with \tsmacro{\mainkeyword}{} will be added.
\end{codedescribe}
\begin{codestore}[st=d.abstract]
- \keyword{a keyword}
- \keyword{another keyword}
- \begin{abstract} some short summary of things\ldots
- \end{abstract}
+ \mainkeyword{a keyword}
+ \mainkeyword{another keyword}
+ \begin{mainabstract} some short summary of things\ldots
+ \end{mainabstract}
\end{codestore}
\tscode*{d.abstract}
-\begin{codedescribe}[env]{otherabstract}
+\begin{codedescribe}[env,update=2023/11/18]{otherabstract}
\begin{codesyntax}%
- \tsmacro{\begin{otherabstract}}[lang]{keywords}\ldots\tsmacro{\end{otherabstract}}{}
+ \tsmacro{\begin{otherabstract}}[lang]\ldots\tsmacro{\end{otherabstract}}{}
\end{codesyntax}
This is the environment to create an abstract in a language other than the default one.
-The default value for \tsobj[meta]{lang} is english, and it can be any value that \tsobj[pkg]{babel} understands. The \tsobj[meta]{keywords} are just a list of keywords which will be added at the end of the \emph{otherabstract}.
+The default value for \tsobj[meta]{lang} is english, and it can be any value that \tsobj[pkg]{babel} understands. A keywords list created with \tsmacro{\otherkeyword}{} will be added at the end of it.
\end{codedescribe}
\begin{codestore}[st=d.oabstract]
- \begin{otherabstract}[english]{a keyword, another keyword} some short summary of things\ldots
+ \otherkeyword{a keyword}
+ \otherkeyword{another keyword}
+ \begin{otherabstract}[english] some short summary of things\ldots
\end{otherabstract}
\end{codestore}
\tscode*{d.oabstract}
@@ -484,49 +506,149 @@ New paragraph, for reference.
\section{\tightul{ufrgscca-core} Package}
-The \tsobj[pkg]{ufrgscca-core} package defines a set of commands for author's, student's, advisor's examiner's names and related info. It is needed by most/all of the bundled packages.
+The \tsobj[pkg]{ufrgscca-core} package defines a set of commands for student's and activity's related info. It is needed by most/all of the bundled packages.
+
+All data is stored in two main \tsobj[pack]{starray} defined as follow:
+
+\begin{codestore}[st=activitydef]
+ {
+ name , acronym ,
+ coord . struct
+ {
+ name , title ,
+ article , Article , narticle , Narticle , carticle , Carticle ,
+ } ,
+ calendar . struct
+ {
+ date , week , event ,
+ } ,
+ chkmarked , chkunmarked , chkref
+ }
+\end{codestore}
+
+\tscode*[codeprefix={Activity's Structure Definition:},basicstyle={\scriptsize\ttfamily}]{activitydef}\label{activity-def}
+
+
+\begin{codestore}[st=studentdef]
+ {
+ first , last , name , Nproc , ID , email , worktitle ,
+ article , Article , narticle , Narticle , carticle , Carticle ,
+ remarks , checklist , brief , reason ,
+ board-local , board-date , board-time , gradeavrg , grade ,
+ flag-graded , %%% IF gradeavrg AND finalgrade already calculated (or defined)
+ flag-exam ,
+ flag-ff ,
+ flag-dismiss , %%% IF it was the 1st semester.
+ flag-newpage , %% if it should go in a new page (board)
+ flag-distinctboard , %% if advisor isn't in the board
+ flag-approved ,
+ flag-coadvisor ,
+ advisor . struct {
+ first , last , name , institution , title , email , phone ,
+ article , Article , narticle , Narticle , carticle , Carticle ,
+ assessment
+ } ,
+ coadvisor . struct {
+ first , last , name , institution , title , email , phone ,
+ article , Article , narticle , Narticle , carticle , Carticle ,
+ reason
+ } ,
+ reviewer . struct {
+ first , last , name , institution , title , email , phone ,
+ article , Article , narticle , Narticle , carticle , Carticle ,
+ pointA , pointB , pointC , pointD , grade , gradetype ,
+ } ,
+ altreviewer . struct {
+ first , last , name , institution , title , email , phone ,
+ article , Article , narticle , Narticle , carticle , Carticle ,
+ } ,
+ internship . struct {
+ company , field , start , end , length ,
+ } ,
+ tutor . struct {
+ first , last , name , title , email , phone ,
+ article , Article , narticle , Narticle , carticle , Carticle ,
+ } ,
+ supervisor . struct {
+ first , last , name , register , title , office , email , phone ,
+ article , Article , narticle , Narticle , carticle , Carticle ,
+ } ,
+ }
+\end{codestore}
+
+\tscode*[codeprefix={Student's Structure Definition:},basicstyle={\scriptsize\ttfamily}]{studentdef}\label{student-def}
+
+
+
+\subsection{Core Commands}\label{core-commands}
-\subsection{Core Forms Commands}
-\begin{codedescribe}{\tccbrief,\tcccoadvisorbrief,\tccadvisorsreview}
+
+
+\begin{codedescribe}[code,new=2023/11/18]{\NewActivity}
\begin{codesyntax}%
- \tsmacro{\tccbrief}{brief}
- \tsmacro{\tcccoadvisorbrief}{brief}
- \tsmacro{\tccadvisorsreview}{brief}
+ \tsmacro{\NewActivity}{act-hash}
\end{codesyntax}
-Those commands are only of use when using \tsobj[pkg]{ufrgscca-forms}. \tsmacro{\tccbrief}{} sets the work initial summary, \tsmacro{\tcccoadvisorbrief}{} sets the justification for having a co-advisor, \tsmacro{\tccadvisorsreview}{} sets the advisor's review.
+This will create a new 'activity'. Predefined ones being: \tsobj[option]{course,tccI,tccII,internship,internship-opt}.
\end{codedescribe}
+\begin{tsremark}
+This will create a \tsobj[pack]{starray}, the \tsobj[meta]{act-hash} being it's \tsobj[meta]{hash}.
+\end{tsremark}
-\subsection{Core Global Commands}\label{core-commands}
-\begin{codedescribe}{\location}
+
+\begin{codedescribe}[code,new=2023/11/18]{\ActivitySet,\ActivitySetCoordTitle,\ActivitySetCoord}
\begin{codesyntax}%
- \tsmacro{\location}{city,state}
+ \tsmacro{\ActivitySet}[act-hash]{acronym,name}
+ \tsmacro{\ActivitySetCoordTitle}[act-hash]{title}
+ \tsmacro{\ActivitySetCoord}[act-hash]{name}\tsargs[oarg]{gender}
\end{codesyntax}
- To redefine the default values of \tsobj[meta]{city} and \tsobj[meta]{state} (Porto Alegre and RS).\\
+These will set an Activity many fields. \tsobj[meta]{acronym,name} being the short (acronym) and long name of an activity. \tsobj[meta]{title} is the coordinator formal title, and so on.
\end{codedescribe}
-\begin{codedescribe}{\TCCcoord,\TCCcoordtitle}
+
+
+\begin{codedescribe}[code,new=2023/11/18]{\ActivitySelect,\Activity,\ActivityCoord}
\begin{codesyntax}%
- \tsobj[code]{\TCCcoord}{\tsobj[marg]{(title) full name}\tsobj[oarg]{gender}}
- \tsmacro{\TCCcoordtitle}{coordinator denomination}
+ \tsmacro{\ActivitySelect}{act-hash}
+ \tsmacro{\Activity}[act-hash]{act-field}
+ \tsmacro{\ActivityCoord}[act-hash]{coord-field}
\end{codesyntax}
+\tsobj{\ActivitySelect} just sets \tsobj[meta]{act-hash} as the current activity (set's the \tsobj[pack]{starray} iter). \tsobj{\Activity,\ActivityCoord} gets the corresponding field.
+Possible values for \tsobj[meta]{act-field} are: \tsobj[option]{name,acronym}.
+Possible values for \tsobj[meta]{coord-field} are: \tsobj[option]{name,title,article,Article,narticle,Narticle,carticle,Carticle}, as defined by \emph{Activity's structure} (see \ref{activity-def}).
+
\end{codedescribe}
-\begin{codedescribe}{\coursecoord,\coursecoordtitle}
+\subsection{Core Auxiliary Commands}
+
+
+\begin{codedescribe}[code,new=2023/11/18]{\studentselect}
\begin{codesyntax}%
- \tsobj[code]{\coursecoord}{\tsobj[oarg]{(title) full name}\tsobj[oarg]{gender}}
- \tsmacro{\coursecoordtitle}{course coordinator denomination}
+ \tsmacro{\studentselect}{student-hash}
\end{codesyntax}
+Select a student based on it's hash.
\end{codedescribe}
- \tsobj[meta]{coordinator denomination} and \tsobj[meta]{course coordinator denomination} are the full 'job title' of their position. \tsobj[meta]{gender} can be either 'm' or 'f'.
-\begin{codedescribe}{\internshipcoord,\internshipcoordtitle}
- \begin{codesyntax}%
- \tsobj[code]{\internshipcoord}{\tsobj[oarg]{(title) full name}\tsobj[oarg]{gender}}
- \tsmacro{\internshipcoordtitle}{internship coordinator denomination}
- \end{codesyntax}
+
+
+
+\begin{codedescribe}[code,new=2023/11/18]{\DataFields,\eDataSet,\eDataFields}
+ \begin{codesyntax}%
+ \tsmacro{\DataFields}{starray-ref,field}
+ \tsmacro{\eDataSet}[act-hash]{starray-ref}
+ \tsmacro{\eDataFields}{field}
+ \end{codesyntax}
+These are, respectively, \tsobj{\starray_get_prop:nn, \starray_term_syntax:n,\starray_parsed_get_prop:n} from \tsobj[pack]{starray}. One can reference/get any field from the main \tsobj[pack]{starray} defined structures: \tsobj[key]{student,activity} as defined at chapter \ref{activity-def}.
\end{codedescribe}
-\tsobj[meta]{coordinator denomination} and \tsobj[meta]{internship coordinator denomination} are the full 'job title' of their position. \tsobj[meta]{gender} can be either 'm' or 'f'.
+
+
+\begin{codedescribe}[code,new=2023/11/18]{\studentiterate}
+ \begin{codesyntax}%
+ \tsmacro{\studentiterate}{code}
+ \end{codesyntax}
+This is \tsobj{\starray_iterate_over:nn} from \tsobj[pack]{starray}. \tsobj[meta]{code} will be executed for every defined student.
+\end{codedescribe}
+
\subsection{Core Specific Commands}\label{core-specific-commands}
@@ -534,100 +656,173 @@ Those commands are only of use when using \tsobj[pkg]{ufrgscca-forms}. \tsmacro{
The following commands are more or less self-explanatory, \tsobj[meta]{ID} is the student's university ID. \tsobj[meta]{Nproc} is the process/request number. \tsobj[meta]{gender} can be either 'm' or 'f'.
-\begin{codedescribe}{\author,\authorinfo,\student,\studentinfo}%,\studentgender}
+\begin{codedescribe}[code,update=2023/11/18]{\student,\studentinfo}%,\studentgender}
\begin{codesyntax}
- \tsobj[code]{ \author}{\tsobj[marg]{last}\tsobj[marg]{first}\tsobj[oarg]{gender}}
- \tsmacro{\authorinfo}[Nproc]{ID,email}
- \tsobj[code]{\student}{\tsobj[marg]{last}\tsobj[marg]{first}\tsobj[oarg]{gender}}
+ \tsobj[code]{\student}{\tsargs[oarg]{student-hash}\tsargs[marg]{last,first}\tsargs[oarg]{gender}}
\tsmacro{\studentinfo}[Nproc]{ID,email}
\end{codesyntax}
\end{codedescribe}
+\begin{tsremark}[N.B.:]
+ If the package option \tsobj[option]{oldrenews} is used, the command \tsobj{\author,\authorinfo} will be redefined as an allias to \tsobj{\student,\studentinfo}.
+\end{tsremark}
+
+\begin{codedescribe}[code,new=2023/11/18]{\workbrief,\advisorreview,\coadvisorreason,\workchange}
+ \begin{codesyntax}%
+ \tsmacro{\workbrief}{work-summary}
+ \tsmacro{\advisorreview}{advisor's-review}
+ \tsmacro{\coadvisorreason}{reason-for-a-coadvisor}
+ \tsmacro{\workchange}{reason-for-the-change}
+ \end{codesyntax}
+Those commands are only of use when using \tsobj[pkg]{ufrgscca-forms}. \tsmacro{\workbrief}{} sets the work initial summary, \tsmacro{\coadvisorreason}{} sets the justification for having a co-advisor, \tsmacro{\advisorreview}{} sets the advisor's review, \tsmacro{\workchange}{} sets the reason for the work's theme change.
+\end{codedescribe}
+
\begin{codedescribe}{\advisor,\advisorinfo}%,\advisorgender}
\begin{codesyntax}
- \tsobj[code]{\advisor}{\tsobj[oarg]{title}\tsobj[marg]{last}\tsobj[marg]{first}\tsobj[oarg]{gender}}
+ \tsobj[code]{\advisor}{\tsargs[oarg]{title}\tsargs[marg]{last,first}\tsargs[oarg]{gender}}
\tsmacro{\advisorinfo}{Institut,title-info,email,phone}
\end{codesyntax}
\end{codedescribe}
\begin{codedescribe}{\coadvisor,\coadvisorinfo}%,\coadvisorgender}
\begin{codesyntax}
- \tsobj[code]{\coadvisor}{\tsobj[oarg]{title}\tsobj[marg]{last}\tsobj[marg]{first}\tsobj[oarg]{gender}}
+ \tsobj[code]{\coadvisor}{\tsargs[oarg]{title}\tsargs[marg]{last,first}\tsargs[oarg]{gender}}
\tsmacro{\coadvisorinfo}{Institut,title-info,email,phone}
\end{codesyntax}
\end{codedescribe}
+\begin{codedescribe}[code,new=2023/11/18]{\distinctboard}
+ \begin{codesyntax}%
+ \tsmacro{\distinctboard}{}
+ \end{codesyntax}
+For the rare case in which the advisor won't take part in the examiner's board.
+\end{codedescribe}
+
+
\begin{codedescribe}{\examiner,\examinerinfo}%,\examinergender}
\begin{codesyntax}
- \tsobj[code]{\examiner}{\tsobj[oarg]{title}\tsobj[marg]{last}\tsobj[marg]{first}\tsobj[oarg]{gender}}
+ \tsobj[code]{\examiner}{\tsargs[oarg]{title}\tsargs[marg]{last,first}\tsargs[oarg]{gender}}
\tsmacro{\examinerinfo}{Institut,title-info,email,phone}
\end{codesyntax}
\end{codedescribe}
\begin{codedescribe}{\altexaminer,\altexaminerinfo}%,\altexaminergender}
\begin{codesyntax}
- \tsobj[code]{\altexaminer}{\tsobj[oarg]{title}\tsobj[marg]{last}\tsobj[marg]{first}\tsobj[oarg]{gender}}
+ \tsobj[code]{\altexaminer}{\tsargs[oarg]{title}\tsargs[marg]{last,first}\tsargs[oarg]{gender}}
\tsmacro{\altexaminerinfo}{Institut,title-info,email,phone}
\end{codesyntax}
\end{codedescribe}
+\begin{codedescribe}[code,new=2023/11/18]{\internship}%,\tutorgender}
+\begin{codesyntax}
+ \tsmacro{\internship}{company,field,start,end,length}
+\end{codesyntax}
+\end{codedescribe}
+
\begin{codedescribe}{\tutor,\tutorinfo}%,\tutorgender}
\begin{codesyntax}
- \tsobj[code]{\tutor}{\tsobj[oarg]{title}\tsobj[marg]{last}\tsobj[marg]{first}\tsobj[oarg]{gender}}
+ \tsobj[code]{\tutor}{\tsargs[oarg]{title}\tsargs[marg]{last,first}\tsargs[oarg]{gender}}
\tsmacro{\tutorinfo}{Institut,title-info,email,phone}
\end{codesyntax}
\end{codedescribe}
\begin{codedescribe}{\supervisor,\supervisorinfo}%,\tutorgender}
\begin{codesyntax}
- \tsobj[code]{\supervisor}{\tsobj[oarg]{title}\tsobj[marg]{last}\tsobj[marg]{first}\tsobj[oarg]{gender}}
+ \tsobj[code]{\supervisor}{\tsargs[oarg]{title}\tsargs[marg]{last,first}\tsargs[oarg]{gender}}
\tsmacro{\supervisorinfo}{register,office,email,phone}
\end{codesyntax}
\end{codedescribe}
\begin{tsremark}[N.B.:]
-The commands \tsmacro{\advisor}{}, \tsmacro{\coadvisor}{}, \tsmacro{\examiner}{} and \tsmacro{\altexaminer}{} are meant to be used in a 'final work' doc. The Macros \tsmacro{\tutor}{} and \tsmacro{\supervisor}{} in case of an internship report.
+The commands \tsobj{\advisor,\coadvisor,\examiner,\altexaminer} are meant to be used in a 'final work' doc. The Macros \tsobj{\internship,\tutor,\supervisor} in case of an internship report.
\end{tsremark}
\section{\tightul{ufrgscca-cover} Package}
-This package is the one that sets the front pages, depending on the kind of 'report' being generated. The default being to generate 3 cover pages: an identification on, followed by presentation one, then an referral/approval one.
+This package is the one that sets the front pages, depending on the kind of 'report' being generated.
-\subsection{Package Options}
-\begin{describelist}{option}
- \describe {report} { in case the doc is just a class assignment with, possibly, many co-authors. It changes mainly the front matter, which is simplified (no referral page, for instance).}
- \describe {internship} { in case the doc is an internship report.}
- \describe {nonrequired} { in case the internship report is related to a “non required” / “optional” internship. This option is ignored otherwise.}
+%%%\subsection{Package Options}
+%%%\begin{describelist}{option}
+%%% \describe {report} { in case the doc is just a class assignment with, possibly, many co-authors. It changes mainly the front matter, which is simplified (no referral page, for instance).}
+%%% \describe {internship} { in case the doc is an internship report.}
+%%% \describe {nonrequired} { in case the internship report is related to a “non required” / “optional” internship. This option is ignored otherwise.}
+%%%
+%%%\end{describelist}
+\subsection{Defined Commands}
+\begin{codedescribe}[code,new=2023/11/18]{\MakeCoverPages}
+ \begin{codesyntax}%
+ \tsmacro{\MakeCoverPages}{type}
+ \end{codesyntax}
+This is the main command, which will typeset the front matter, from the information already given. \tsobj[meta]{type} sets the 'kind' of cover pages to be generated. Currently, it can be one of:
+\end{codedescribe}
+\begin{describelist}{option}
+\describe{tccI}{Generate 3 pages, a first cover one, a second with work's description and third last one with work's approval for TCC-I}
+\describe{tccII}{Generate 3 pages, a first cover one, a second with work's description and third last one with work's approval for TCC-II}
+\describe{internship}{Generate 2 pages, a first cover one, a second with work's approval for internship report}
+\describe{internship-opt}{Generate 2 pages, a first cover one, a second with work's approval for optional internship report}
+\describe{class-report}{Generate 1 cover page}
\end{describelist}
+\begin{tsremark}[N.B.:]
+ If the package option \tsobj[option]{oldrenews} is used, the command \tsobj{\maketitle} will be redefined as an allias to \tsobj{\MakeCoverPages}.
+\end{tsremark}
-\subsection{Defined Commands}
-\begin{codedescribe}{\maketitle}
+
+\begin{codedescribe}{\location}
\begin{codesyntax}%
- \tsmacro{\maketitle}{}
+ \tsmacro{\location}{city,state}
\end{codesyntax}
-This is the only main command, which will typeset the front matter. It requires that all \emph{specific info} be already set up (like work title, author's name, affiliation, etc.)
+ To redefine the default values of \tsobj[meta]{city} and \tsobj[meta]{state} (Porto Alegre and RS).\\
\end{codedescribe}
+\begin{codedescribe}[code,new=2023/11/18]{\class}
+ \begin{codesyntax}%
+ \tsmacro{\class}{code,name}
+ \end{codesyntax}
+ To set the class code and name, for the cover page, in case of a class report.
+\end{codedescribe}
-\begin{codedescribe}{\course,\courseacronym,\graduationtitle,\university,\universityacronym,%
- \universitydivision,\divisiongradcouncil,\department,\classcode,\classname,\subject}
-\begin{codesyntax}%
- \tsmacro{\course}{arg}
- \tsmacro{\courseacronym}{arg}
- \tsmacro{\graduationtitle}{arg}
- \tsmacro{\university}{arg}
- \tsmacro{\universityacronym}{arg}
- \tsmacro{\universitydivision}{arg}
- \tsmacro{\divisiongradcouncil}{arg}
- \tsmacro{\department}{arg}
- \tsmacro{\classcode}{arg}
- \tsmacro{\classname}{arg}
- \tsmacro{\subject}{arg}
-\end{codesyntax}
-In case some customization is needed, one can change them as needed. The default values are set for the \emph{control and automation} course at UFRGS/EE.
+
+\begin{codedescribe}[code,new=2023/11/18]{\SetCoverFields}
+ \begin{codesyntax}%
+ \tsmacro{\SetCoverFields}{type,field,value}
+ \end{codesyntax}
+ This allows to redefine the aforementioned \tsobj[meta]{types} and create new types of cover pages. \tsobj[meta]{field} is one of:
\end{codedescribe}
+\begin{describelist}{option}
+\describe{clist}{this defines which kind, and order, of pages will be generated. Possible values are: \tsobj[option]{cover,desc,approval}.}
+\describe{top}{This will be the common top matter used.}
+\describe{students}{How students names, authors, will be presented}
+\describe{title}{The title to be used}
+\describe{bottom}{The bottom of the cover page.}
+\describe{text-descpage}{The text presented in the desc page.}
+\describe{advisor-descpage}{Advisor's matter.}
+\describe{bottom-descpage}{The bottom of the desc page.}
+\describe{text-approvalpage}{The text presented in the approval page.}
+\describe{advisor-approvalpage}{Advisor´s matter in the approval page.}
+\describe{bottom-approvalpage}{The bottom of the approval page.}
+\end{describelist}
+
+
+%%
+%%\begin{codedescribe}{\course,\courseacronym,\graduationtitle,\university,\universityacronym,%
+%% \universitydivision,\divisiongradcouncil,\department,\classcode,\classname,\subject}
+%%\begin{codesyntax}%
+%% \tsmacro{\course}{arg}
+%% \tsmacro{\courseacronym}{arg}
+%% \tsmacro{\graduationtitle}{arg}
+%% \tsmacro{\university}{arg}
+%% \tsmacro{\universityacronym}{arg}
+%% \tsmacro{\universitydivision}{arg}
+%% \tsmacro{\divisiongradcouncil}{arg}
+%% \tsmacro{\department}{arg}
+%% \tsmacro{\classcode}{arg}
+%% \tsmacro{\classname}{arg}
+%% \tsmacro{\subject}{arg}
+%%\end{codesyntax}
+%%In case some customization is needed, one can change them as needed. The default values are set for the \emph{control and automation} course at UFRGS/EE.
+%%\end{codedescribe}
\section{\tightul{ufrgscca-forms} Package}
This package defines just two user commands to generate specific forms needed at UFRGS/EE.
@@ -641,7 +836,7 @@ The command \tsmacro{\tcforms}{} will generate the many forms (\tsobj[meta]{form
\end{codedescribe}
-\tsobj[meta]{formslist} is a csv list of any of:
+\tsobj[meta]{formslist} is a csv list of:
\begin{describelist*}{option}
\describe {reqform-I} {}
\describe {reqform-II} { Registration requirement form.}
@@ -662,10 +857,18 @@ The command \tsmacro{\tcforms}{} will generate the many forms (\tsobj[meta]{form
\end{describelist*}
Please note that those '-I' regards TCC-I, while '-II' regards TCC-II.
+\begin{codedescribe}[code,new=2023/11/18]{\SetForm,\MakeForm}
+ \begin{codesyntax}%
+\tsmacro{\SetForm}{form-hash,field,code}
+\tsmacro{\MakeForm}{form-hash}
+\end{codesyntax}
+\tsobj{\SetForm} can be used to set new forms (or redefine existent ones). \tsobj[meta]{form-hash} being a free identifier. Possible \tsobj[meta]{field} values are \tsobj[key]{heading,title,opening,body,closing,footnone}. \tsobj{\MakeForm} typesets the selected form.
+\end{codedescribe}
+
\section{\tightul{ufrgscca-lists} Package}
The following packages are always pre-loaded: \tsobj[pkg]{ newfloat, listings, xcolor}.
-It defines a new \emph{floating environment}. Combined with \tsobj[pkg]{listings} one can typeset exempts of \emph{code listing}.
+It defines a new \emph{floating environment} \tsobj[env]{codelist}. Combined with \tsobj[pkg]{listings} one can typeset exempts of a \emph{code listing}.
\subsection{Environment}
\begin{codedescribe}[env]{codelist}
@@ -723,73 +926,58 @@ A new float environment, named \tsobj[env]{env-name}, will be created. Captions
\fi
\iffulldoc
-\section{\tightul{ufrgscca-gen} Package (extended documentation)}
-Just two set of commands are defined, one is kind of a 'command factory' aimed at creating macros in a standard way, while the other helps create 'case like' commands.
-
-
-\subsection{Package Options}
-\begin{describelist}{option}
- \describe {family} { sets the family name, defaults to \tsobj[value]{tcdef}.}
- \describe {group} { sets the group name, defaults to \tsobj[value]{gen}.}
-\end{describelist}
-
-\subsection{Defined Commands}
-\begin{codedescribe}{\cmdfactory,\factory,\tcgen@cdef}
- \begin{codesyntax}%
- \tsobj[code]{\cmdfactory}{\tsobj[oarg]{fam}\tsobj[xarg]{grp}\tsobj[marg]{cmd-list}}
- \tsobj[code]{\factory}{\tsobj[oarg]{fam}\tsobj[xarg]{grp}\tsobj[marg]{cmd}}
- \tsobj[code]{\tcgen@cdef}{\tsobj[oarg]{fam}\tsobj[xarg]{grp}\tsobj[marg]{cmd}\tsobj[marg]{new-val}}
- \end{codesyntax}
- \tsmacro{\cmdfactory}{} is the actual command meant to be used (the other two are just auxiliary ones). \tsobj[meta]{cmd-lst} is a csv list of commands. \tsobj[meta]{fam} is the command \emph{family} (defaults to \emph{tcdef}) and \tsobj[meta]{grp} is the family group (defaults to \emph{gen}).
-
- The newly created commands will be based on \tsmacro{\tcgen@cdef}{} (the actual assigment command) having the form \tsmacro{\cmd}{new-val}, accepting a single mandatory value. Internally \tsobj[meta]{new-val} will be stored in a macro likely named \tsmacro{\fam@grp@cmd}{}.
-
- \tsmacro{\factory}{} is basically the same as \tsmacro{\cmdfactory}{}, whilst to create just one new command (it is the command called by \tsmacro{\cmdfactory}{} via \tsmacro{\forcsvlist}{}.)
-\end{codedescribe}
-
-\begin{codedescribe}{\mkswitch,\addcase}
- \begin{codesyntax}%
- \tsmacro{\mkswitch}[default]{sw-name}
- \tsmacro{\addcase}{sw-name,str-case,code}
- \end{codesyntax}
- \tsmacro{mkswitch}{} will create a command, \tsmacro{\sw-name}{case}, which will behave like a switch/case in other programming languages. \tsobj[meta]{default} is the code to be executed in case a \emph{switching value} isn't defined.
- \tsmacro{\addcase}{} adds \emph{cases}, one by one, to the switch. \tsobj[meta]{str-case} can be any \tsmacro{\csname}{} valid name. \tsobj[meta]{code} is the code to be executed.
-
- \begin{codestore}[st=d.switch]
- \mkswitch[\gr@depcut]\gr@case@angle
- \addcase\gr@case@angle{}{\def\gr@ANG{0}}
- \addcase\gr@case@angle{A}{\def\gr@ANG{\gr@A}}
- %%
- %% actual use of the switch
- \gr@case@angle{A} % this will result in \def\gr@ANG{\gr@A}
- \end{codestore}
- \tscode*{d.switch}
-\end{codedescribe}
+%%%%\section{\tightul{ufrgscca-gen} Package (extended documentation)}
+%%%%Just two set of commands are defined, one is kind of a 'command factory' aimed at creating macros in a standard way, while the other helps create 'case like' commands.
+%%%%
+%%%%
+%%%%\subsection{Package Options}
+%%%%\begin{describelist}{option}
+%%%% \describe {family} { sets the family name, defaults to \tsobj[value]{tcdef}.}
+%%%% \describe {group} { sets the group name, defaults to \tsobj[value]{gen}.}
+%%%%\end{describelist}
+%%%%
+%%%%\subsection{Defined Commands}
+%%%%\begin{codedescribe}{\cmdfactory,\factory,\tcgen@cdef}
+%%%% \begin{codesyntax}%
+%%%% \tsobj[code]{\cmdfactory}{\tsobj[oarg]{fam}\tsobj[xarg]{grp}\tsobj[marg]{cmd-list}}
+%%%% \tsobj[code]{\factory}{\tsobj[oarg]{fam}\tsobj[xarg]{grp}\tsobj[marg]{cmd}}
+%%%% \tsobj[code]{\tcgen@cdef}{\tsobj[oarg]{fam}\tsobj[xarg]{grp}\tsobj[marg]{cmd}\tsobj[marg]{new-val}}
+%%%% \end{codesyntax}
+%%%% \tsmacro{\cmdfactory}{} is the actual command meant to be used (the other two are just auxiliary ones). \tsobj[meta]{cmd-lst} is a csv list of commands. \tsobj[meta]{fam} is the command \emph{family} (defaults to \emph{tcdef}) and \tsobj[meta]{grp} is the family group (defaults to \emph{gen}).
+%%%%
+%%%% The newly created commands will be based on \tsmacro{\tcgen@cdef}{} (the actual assigment command) having the form \tsmacro{\cmd}{new-val}, accepting a single mandatory value. Internally \tsobj[meta]{new-val} will be stored in a macro likely named \tsmacro{\fam@grp@cmd}{}.
+%%%%
+%%%% \tsmacro{\factory}{} is basically the same as \tsmacro{\cmdfactory}{}, whilst to create just one new command (it is the command called by \tsmacro{\cmdfactory}{} via \tsmacro{\forcsvlist}{}.)
+%%%%\end{codedescribe}
+%%%%
+%%%%\begin{codedescribe}{\mkswitch,\addcase}
+%%%% \begin{codesyntax}%
+%%%% \tsmacro{\mkswitch}[default]{sw-name}
+%%%% \tsmacro{\addcase}{sw-name,str-case,code}
+%%%% \end{codesyntax}
+%%%% \tsmacro{mkswitch}{} will create a command, \tsmacro{\sw-name}{case}, which will behave like a switch/case in other programming languages. \tsobj[meta]{default} is the code to be executed in case a \emph{switching value} isn't defined.
+%%%% \tsmacro{\addcase}{} adds \emph{cases}, one by one, to the switch. \tsobj[meta]{str-case} can be any \tsmacro{\csname}{} valid name. \tsobj[meta]{code} is the code to be executed.
+%%%%
+%%%% \begin{codestore}[st=d.switch]
+%%%% \mkswitch[\gr@depcut]\gr@case@angle
+%%%% \addcase\gr@case@angle{}{\def\gr@ANG{0}}
+%%%% \addcase\gr@case@angle{A}{\def\gr@ANG{\gr@A}}
+%%%% %%
+%%%% %% actual use of the switch
+%%%% \gr@case@angle{A} % this will result in \def\gr@ANG{\gr@A}
+%%%% \end{codestore}
+%%%% \tscode*{d.switch}
+%%%%\end{codedescribe}
\fi
\iffulldoc
\section{\tightul{ufrgscca-coord} Package (extended documentation)}
This package defines a set of auxiliary commands meant to support the Professor coordinating students work.
-it will always pre-load the \tsobj[pkg]{longtable} and \tsobj[pkg]{ufrgscca-forms} packages. One can select the reports/forms to be generated using the package options or the command \tsmacro{\setreports}{keys}
+it will always pre-load the \tsobj[pkg]{longtable} and \tsobj[pkg]{ufrgscca-forms} packages.
N.B. It might be also useful to use the commands defined at \autonameref{forms.commands}.
-\subsection{Package/Report Options}\label{ufrgscca-coord.options}
-\begin{describelist}{option}
- \describe {calendar} { Calendar for the period.}
- \describe {checklist} { a students check list.}
- \describe {report} { a student control report.}
- \describe {reportxinfo} { report additional info.}
- \describe {boards} { exam board dates.}
- \describe {boarddates} { exam board dates with highlighted dates.}
- \describe {studentlist} { a simple student list.}
- \describe {revforms} { per student reviews forms.}
- \describe {referral} { per student referral letters.}
- \describe {cocertificate} { per student coadvisor certificate letter (if any).}
-\end{describelist}
-
-\subsection{Defined Commands}
-The \emph{report document} to be created is composed of 2 main parts:
+A \emph{report document} is composed of 2 main parts:
\begin{enumerate}[tcc,arabic,miditemsep]
\item A global preamble, where one sets
\begin{enumerate}[tcc,alpha*,noitemsep]
@@ -800,25 +988,28 @@ The \emph{report document} to be created is composed of 2 main parts:
\item A 'final part' whereas one set which reports are to be generated.
\end{enumerate}
-\subsubsection{Global Commands I}
-One can (should) use the commands listed at \autonameref{core-commands}, and these below:
+One can (should) use the commands listed at \autonameref{core-commands}[], and these below:
-\begin{codedescribe}{\checkdef}%,\checklist}
+\paragraph{Check List}
+\begin{codedescribe}[code,update=2023/11/18]{\checkdef,\checklist}%,\checklist}
\begin{codesyntax}%
- \tsmacro{\checkdef}{checkLC,check-item,check-text}
+ \tsmacro{\checkdef}{LxCy,check-item,check-text}
+ \tsmacro{\checklist}{check-items-list}
\end{codesyntax}
-Whereas one has a '4x5 alphabetic matrix', lines A to D, columns A to E. \tsobj[meta]{checkLC} being one element of that matrix (from checkAA up to checkDE), \tsobj[meta]{chek-item} is a free identifier (to be used with the \tsmacro{\checklist}{}), and \tsobj[meta]{check-text} the text to appear in the 'check list report'. So, for instance:
+Whereas one has a '4x5 matrix' (\tsobj[meta]{checkLC} being one of L1C1...L1C5, ... , L4C1...L4C5). \tsobj[meta]{chek-item} is a free identifier (to be used with the \tsmacro{\checklist}{}), and \tsobj[meta]{check-text} the text to appear in the 'check list report'. Note this is a list \textbf{per activity} (the current one being set).
+
+\tsmacro{\checklist}{} set's those items for the current student. \tsobj[marg]{check-items-list} is a comma separated list of \tsobj[marg]{check-item}.
\begin{codestore}[st=d.check]
- \checkdef{checkAA}{tcc-part}{Rel. Parcial} % this creates the 'check item' tcc-part and associates it with the AA position (first line, first column), display text 'Rel. Parcial'
- \checkdef{checkBA}{partOK}{Aprov. Rel. Parcial} % this creates 'partOK' and associates it with BA position
+ \checkdef{L1C1}{tcc-part}{Rel. Parcial} % this creates the 'check item' tcc-part and associates it with the L1C1 position (first line, first column), display text 'Rel. Parcial'
+ \checkdef{L2C1}{partOK}{Aprov. Rel. Parcial} % this creates 'partOK' and associates it with L2C1 position
- \checkdef{checkAB}{board}{Banca def.} %
- \checkdef{checkBB}{board-date}{Data defesa} % 'board-date' is associated with the BB position
+ \checkdef{L1C2}{board}{Banca def.} %
+ \checkdef{L2C2}{board-date}{Data defesa} % 'board-date' is associated with the L2C2 position
- \checkdef{checkAE}{tcc-final}{TCC final} %
- \checkdef{checkBE}{approval}{Aprovação Correções} %
- \checkdef{checkDE}{exam}{Em Exame} % 'exam' (display 'Em Exame') is associated with the DE position
+ \checkdef{L1C5}{tcc-final}{TCC final} %
+ \checkdef{L2C5}{approval}{Aprovação Correções} %
+ \checkdef{L4C5}{exam}{Em Exame} % 'exam' (display 'Em Exame') is associated with the L4C5 position
%%
%%
%% later on, one can use (inside a \NewStudent command)
@@ -828,129 +1019,141 @@ Whereas one has a '4x5 alphabetic matrix', lines A to D, columns A to E. \tsobj[
\tscode*[emph={{tcc-part},partOK,board,board-date,{tcc-final},approval,exam}]{d.check}
-Be aware that, \tsmacro{\checkdef}{} can and should be only used at the preamble, whereas \tsmacro{\checklist}{} can only be used at the 'student data definition' context (meaning, inside the \tsmacro{\NewStudent}{} command).
\end{codedescribe}\\
-\paragraph{Final Work Specific}
+\paragraph{Auxiliary / Report Specific}
-\begin{codedescribe}{\boardstitleB,\boardsOBS,\TCCperiod}
+\begin{codedescribe}[code,new=2023/11/18]{\ActivitySetNewEvent,\ActivitySetEventDay}
\begin{codesyntax}%
- \tsmacro{\boardstitleB}{titleB}
- \tsmacro{\boardsOBS}{obs}
- \tsmacro{\TCCperiod}{semester}
+ \tsmacro{\ActivitySetNewEvent}[act-hash]{event-hash,event-desc}
+ \tsmacro{\ActivitySetEventDay}[act-hash]{event-hash,day,week}
\end{codesyntax}
- \tsmacro{boardstitleB}{} sets a 2nd title line for the 'boards schedule report'. \tsmacro{\boardsOBS}{} allows to add an observation (\tsobj[meta]{obs}) for the 'boards schedule report', finally, \tsmacro{\TCCperiod} sets the current semester value.
+An activity may have a calendar/set of associated events. \tsobj[meta]{event-hash} is just a hash to reference it (\tsobj[pack]{starray} hash). \tsobj[meta]{event-desc} is the text associated with it. \tsobj[meta]{day,week} the associated date.
\end{codedescribe}
-\begin{codedescribe}[code,update=2023/05/29]{\tcccalendarreset,\tcccalendarevent,\tcccalendareventdate}
+
+\begin{codedescribe}[code,new=2023/11/18]{\studentremark,\studentnewpage,\distinctboard}
\begin{codesyntax}%
- \tsmacro{\tcccalendarreset}{}
- \tsmacro{\tcccalendarevent}{week,description}
- \tsmacro{\tcccalendareventdate}{date}
+ \tsmacro{\studentremark}{remarks}
+ \tsmacro{\studentnewpage}[student-hash]{}
+ \tsmacro{\distinctboard}{}
\end{codesyntax}
-With \tsobj{\tcccalendarevent} one defines the many calendar events. \tsobj[marg]{week} defines the event's week, and \tsobj[marg]{description} the associated text. Furthermore \tsobj{\tcccalendareventdate} defines the associated \tsobj[marg]{date}. \tsobj{\tcccalendarevent} is, normally, pre-set in the \emph{ufrgscca-ptBR-coord.def} file, but can be redefined using first \tsobj{\tcccalendarreset}.
+Those commands are only of use when using \tsobj[pkg]{ufrgscca-coord}. \tsmacro{\studentremark}{} sets a free remark text (notes about). Whilst, \tsobj{\distinctboard,\studentnewpage} set the \tsobj[key]{flag-distinctboard,flag-newpage} flags..
\end{codedescribe}
-\begin{codedescribe}{\tcceventAweek,\tcceventBweek,.,.,.,.,\tcceventJweek}
- \begin{codesyntax}%
- \tsmacro{\tcceventAweek}{week num.}
- \tsmacro{\tcceventBweek}{week num.}
- \ensuremath{\cdots}
- \tsmacro{\tcceventJweek}{week num.}
- \end{codesyntax}
- Those macros allow to change the default week value for the calendar's events.
-\end{codedescribe}
-
-\paragraph{Internship Specific}
-
-\begin{codedescribe}{\intershipcommitdates}
- \begin{codesyntax}%
- \tsmacro{\intershipcommitdates}{date I}{date II}
- \end{codesyntax}
- Use \tsmacro{\intershipcommitdates}{} to set the semester deadlines. Both dates must be given in the dd/mm/yyyy format.
- \tsobj[meta]{date I} is the deadline for a given report still be fully evaluated. After \tsobj[meta]{date I} the given internship will be in “exam”. If the student report isn't submitted until \tsobj[meta]{date II} the student will fail with an “FF” grade.
+\begin{codedescribe}[code,new=2023/11/18]{\studentCase,\studentCoadvCase,\studentDismissCase,\studentNewPageCase,\studentDistinctBoardCase}
+ \begin{codesyntax}%
+ \tsmacro{\studentCase}{if-A-B-C,if-D,if-Exam-C,if-Exam-D,if-FF}
+ \tsmacro{\studentCoadvCase}{if-defined,if-not}
+ \tsmacro{\studentDismissCase}{if-dismiss,if-not}
+ \tsmacro{\studentNewPageCase}{if-new,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.
\end{codedescribe}
-\subsubsection{Global Commands II}\label{new-student}
-
-\begin{codedescribe}{\NewStudent}
+\begin{codedescribe}[code,new=2023/11/18]{\boardtitle,\boardobs,\semester}
\begin{codesyntax}%
- \tsmacro{\NewStudent}{studentname,code}
+ \tsmacro{\boardtitle}{title}
+ \tsmacro{\boardobs}{obs}
+ \tsmacro{\semester}{semester}
\end{codesyntax}
- This is the main command describing each \tsobj[meta]{student} associated work, advisor and exam board. In \tsobj[meta]{code} one should use the commands defined in \autonameref{core-specific-commands}, and \autonameref{student-specific-commands} (although one can use any valid \LaTeXe~ preamble code, keep in mind those will be executed BEFORE \tsmacro{\begin{document}}{}), to describe a student work.
-\end{codedescribe}
- So, for instance:
- \begin{codestore}[st=d.newstudent]
-\NewStudent{Artur}{
- \student{last}{first}[m]
-
- \studentinfo[]{243716}{email@somewhere}
- \TCCtitle{work title}
- \advisor{de Amorin}{Heraldo José}[m]
- \coadvisor{Camargo Nardelli}{Vítor}[m]
- \examinergrades{9.2}{8.5}{9.2}
- \examiner{Götz}{Marcelo}[m]
- \examinergrades{10}{9.5}{9.5}
- \examiner{Comparsi Laranja}{Rafael Antônio}
- \examinergrades{8.5}{8.5}{8}
- \altexaminer{Ventura Bayan Henriques}{Renato}
- %%
- %%
- \timeslot[Teams]{12/11}{15:30}
-
- \studentFate[Dismiss] %% FF or Dismiss ??
-}
-\end{codestore}
-
-\tscode*{d.newstudent}
-
-\begin{tsremark}[N.B.:]
-Internally, \tsmacro{\NewStudent}{} will create a command named \tsmacro{\studentname}{}, with a \emph{hook} named \tsmacro{\studentname.hook}{} (the dot is part of the hook's name).
-\end{tsremark}
-
-
-\begin{codedescribe}{\NewInternshipStudent}
- \begin{codesyntax}%
- \tsmacro{\NewInternshipStudent}{studentname,code}
- \end{codesyntax}
- This is the main command describing each \tsobj[meta]{student} associated internship, tutor and advisor. In \tsobj[meta]{code} one should use the commands defined in \autonameref{core-specific-commands}, and \autonameref{student-specific-commands} (although one can use any valid \LaTeXe~ preamble code, keep in mind those will be executed BEFORE \tsmacro{\begin{document}}{}), to describe a student internship.
- \end{codedescribe}
- So, for instance:
- \begin{codestore}[st=d.newstudentB]
- \NewStudent{Artur}{
- \student{last}{first}[m]
- \studentinfo[]{243716}{email@somewhere}
- \internship{Empresa I}{P\&D}{10/10/22}{20/12/22}{2 Meses}
-
- \supervisor[Eng. I]{do Supervisor}{Nome}[m]
- \supervisorinfo{crea I}{posição/cargo}{email}{ramal}
-
- \internshipsupervisorgrades{4}{4}{4}{4}{5}
- \internshipsupervisorgrades{4}{4}{4}{4}{5}
- \internshiptutorgrades{90}
- \internshipcoordgrades{90}
-
- \tutor[Prof.~Dr.]{do Tutor I}{Nome}[m]
- \tutorinfo{UFRGS}{Instituição I-- Cidade, País}{email}{ramal}
-
- \studentFate[Dismiss] %% FF or Dismiss ??
- }
-\end{codestore}
-
- \tscode*{d.newstudentB}
-\begin{tsremark}[N.B.:]
- Internally, \tsmacro{\NewInternshipStudent}{} will create a command named \tsmacro{\studentname}{}, with a \emph{hook} named \tsmacro{\studentname.hook}{} (the dot is part of the hook's name).
-\end{tsremark}
-
-
-\subsubsection{Student Specific Commands}\label{student-specific-commands}
-\begin{codedescribe}{\studentFate}
+ \tsmacro{\boardobs}{} allows to add an observation (\tsobj[meta]{obs}) for the 'boards schedule report', and \tsmacro{\semester} sets the current semester value.
+\end{codedescribe}
+
+
+%%%%\paragraph{Internship Specific}
+%%%%
+%%%%\begin{codedescribe}{\intershipcommitdates}
+%%%% \begin{codesyntax}%
+%%%% \tsmacro{\intershipcommitdates}{date I}{date II}
+%%%% \end{codesyntax}
+%%%% Use \tsmacro{\intershipcommitdates}{} to set the semester deadlines. Both dates must be given in the dd/mm/yyyy format.
+%%%% \tsobj[meta]{date I} is the deadline for a given report still be fully evaluated. After \tsobj[meta]{date I} the given internship will be in “exam”. If the student report isn't submitted until \tsobj[meta]{date II} the student will fail with an “FF” grade.
+%%%%\end{codedescribe}
+
+
+
+%%\subsubsection{Global Commands II}\label{new-student}
+
+%%%%\begin{codedescribe}{\NewStudent}
+%%%% \begin{codesyntax}%
+%%%% \tsmacro{\NewStudent}{studentname,code}
+%%%% \end{codesyntax}
+%%%% This is the main command describing each \tsobj[meta]{student} associated work, advisor and exam board. In \tsobj[meta]{code} one should use the commands defined in \autonameref{core-specific-commands}, and \autonameref{student-specific-commands} (although one can use any valid \LaTeXe~ preamble code, keep in mind those will be executed BEFORE \tsmacro{\begin{document}}{}), to describe a student work.
+%%%%\end{codedescribe}
+%%%% So, for instance:
+%%%% \begin{codestore}[st=d.newstudent]
+%%%%\NewStudent{Artur}{
+%%%% \student{last}{first}[m]
+%%%%
+%%%% \studentinfo[]{243716}{email@somewhere}
+%%%% \TCCtitle{work title}
+%%%% \advisor{de Amorin}{Heraldo José}[m]
+%%%% \coadvisor{Camargo Nardelli}{Vítor}[m]
+%%%% \examinergrades{9.2}{8.5}{9.2}
+%%%% \examiner{Götz}{Marcelo}[m]
+%%%% \examinergrades{10}{9.5}{9.5}
+%%%% \examiner{Comparsi Laranja}{Rafael Antônio}
+%%%% \examinergrades{8.5}{8.5}{8}
+%%%% \altexaminer{Ventura Bayan Henriques}{Renato}
+%%%% %%
+%%%% %%
+%%%% \timeslot[Teams]{12/11}{15:30}
+%%%%
+%%%% \studentFate[Dismiss] %% FF or Dismiss ??
+%%%%}
+%%%%\end{codestore}
+%%%%
+%%%%\tscode*{d.newstudent}
+%%%%
+%%%%\begin{tsremark}[N.B.:]
+%%%%Internally, \tsmacro{\NewStudent}{} will create a command named \tsmacro{\studentname}{}, with a \emph{hook} named \tsmacro{\studentname.hook}{} (the dot is part of the hook's name).
+%%%%\end{tsremark}
+%%%%
+%%%%
+%%%%\begin{codedescribe}{\NewInternshipStudent}
+%%%% \begin{codesyntax}%
+%%%% \tsmacro{\NewInternshipStudent}{studentname,code}
+%%%% \end{codesyntax}
+%%%% This is the main command describing each \tsobj[meta]{student} associated internship, tutor and advisor. In \tsobj[meta]{code} one should use the commands defined in \autonameref{core-specific-commands}, and \autonameref{student-specific-commands} (although one can use any valid \LaTeXe~ preamble code, keep in mind those will be executed BEFORE \tsmacro{\begin{document}}{}), to describe a student internship.
+%%%% \end{codedescribe}
+%%%% So, for instance:
+%%%% \begin{codestore}[st=d.newstudentB]
+%%%% \NewStudent{Artur}{
+%%%% \student{last}{first}[m]
+%%%% \studentinfo[]{243716}{email@somewhere}
+%%%% \internship{Empresa I}{P\&D}{10/10/22}{20/12/22}{2 Meses}
+%%%%
+%%%% \supervisor[Eng. I]{do Supervisor}{Nome}[m]
+%%%% \supervisorinfo{crea I}{posição/cargo}{email}{ramal}
+%%%%
+%%%% \internshipsupervisorgrades{4}{4}{4}{4}{5}
+%%%% \internshipsupervisorgrades{4}{4}{4}{4}{5}
+%%%% \internshiptutorgrades{90}
+%%%% \internshipcoordgrades{90}
+%%%%
+%%%% \tutor[Prof.~Dr.]{do Tutor I}{Nome}[m]
+%%%% \tutorinfo{UFRGS}{Instituição I-- Cidade, País}{email}{ramal}
+%%%%
+%%%% \studentFate[Dismiss] %% FF or Dismiss ??
+%%%% }
+%%%%\end{codestore}
+%%%%
+%%%% \tscode*{d.newstudentB}
+%%%%\begin{tsremark}[N.B.:]
+%%%% Internally, \tsmacro{\NewInternshipStudent}{} will create a command named \tsmacro{\studentname}{}, with a \emph{hook} named \tsmacro{\studentname.hook}{} (the dot is part of the hook's name).
+%%%%\end{tsremark}
+%%%%
+
+\paragraph{Student Specific Commands}\label{student-specific-commands}
+\begin{codedescribe}[code,update=2023/11/18]{\studentfate}
\begin{codesyntax}%
- \tsmacro{\studentFate}[fate]{}
+ \tsmacro{\studentfate}[fate]{}
\end{codesyntax}
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}
@@ -963,107 +1166,60 @@ This assigns the \tsobj[meta]{fate} of a student, for those cases that one canno
\end{codedescribe}
-\paragraph{Final Student Work Specific ones}
-
-\begin{codedescribe}{\studenttimeslot,\timeslot}
+\begin{codedescribe}[code,update=2023/11/18]{\timeslot}
\begin{codesyntax}%
- \tsmacro{\studenttimeslot}[local]{date,time}
\tsmacro{\timeslot}[local]{date,time}
\end{codesyntax}
-\tsmacro{\timeslot}{} is just an alias of \tsmacro{\studenttimeslot}{}. They set, for the Boards Report, the \tsobj[meta]{local}, \tsobj[meta]{date} and \tsobj[meta]{time} in which a student will have its work presented. Those commands are meant to be used 'inside' a \tsmacro{\NewStudent}{} command.
+To set, for the Boards Report, the \tsobj[meta]{local}, \tsobj[meta]{date} and \tsobj[meta]{time} of a student's presentation work.
\end{codedescribe}
-\begin{codedescribe}{\studentTCCtitle,\TCCtitle,\studentremark}
+\begin{codedescribe}[code,update=2023/11/18]{\worktitle,\studentremark}
\begin{codesyntax}%
- \tsmacro{\studentTCCtitle}{title}
- \tsmacro{\TCCtitle}{title}
+ \tsmacro{\worktitle}{title}
\tsmacro{\studentremark}{remark}
\end{codesyntax}
\end{codedescribe}
-\tsmacro{\TCCtitle}{} is also just an alias to \tsmacro{\studentTCCtitle}{} which just 'defines' the current student “work's title”. \tsmacro{\studentremark}{} just inserts a \tsobj[meta]{remark}, which will appear in the \emph{report}'s report (\ldots report option).
+\tsmacro{\worktitle}{} sets the current student “work's title”. \tsmacro{\studentremark}{} just inserts a \tsobj[meta]{remark}, which will appear in the \emph{report}'s report.
-\begin{codedescribe}{\DistinctBoard,\DefaultBoard}
+\begin{codedescribe}[code,update=2023/11/18]{\distinctboard}
\begin{codesyntax}%
- \tsmacro{\DistinctBoard}{}
- \tsmacro{\DefaultBoard}{}
+ \tsmacro{\distinctboard}{}
\end{codesyntax}
-Normally, the default, it's assumed that the student's advisor will also be a member of the student's exam board. For the ones in which this doesn't holds true, one should use the \tsmacro{\DistinctBoard}{} after informing a student's name (via \tsmacro{\student}{}) and before informing its advisor name (via \tsmacro{\advisor}{}).
+Normally, the default, it's assumed that the student's advisor will also be a member of the student's exam board. For the ones in which this doesn't holds true, one should use the \tsmacro{\DistinctBoard}{} after setting a student's name (via \tsmacro{\student}{}) and before setting its advisor name (via \tsmacro{\advisor}{}).
\end{codedescribe}
For example:
\begin{codestore}[st=d.distinct]
- \NewStudent{Artur}{
- \student{last}{first}[m]
+
+ \student[Arthur]{last}{first}[m]
\studentinfo[]{243716}{email@somewhere}
- \TCCtitle{work title}
- \DistinctBoard
+ \worktitle{work title}
+ \distinctboard
\advisor{de Amorin}{Heraldo José}[m]
\examiner{Götz}{Marcelo}[m] % He will be the 1st examiner
\examiner{Comparsi Laranja}{Rafael Antônio} % the 2nd
\examiner{Ventura Bayan Henriques}{Renato} % the 3rd
- }
\end{codestore}
-\tscode*[emph={DistinctBoard}]{d.distinct}
+\tscode*[emph={distinctboard}]{d.distinct}
-\begin{codedescribe}{\examinergrades}
+\begin{codedescribe}[code,update=2023/11/18]{\examinergrades}
\begin{codesyntax}%
- \tsmacro{\examinersgrades}{N1,N2,N3}
+ \tsmacro{\examinersgrades}{N1,N2,N3}\tsargs[oarg]{N4}
\end{codesyntax}
-Quite obvious, this set the grades given by an examiner (the one defined by the 'last' \tsmacro{\examiner}{} before this.).
-\end{codedescribe}
-
-\paragraph{Internship Specific Ones}
-
-\begin{codedescribe}{\studentturnindate}
- \begin{codesyntax}%
- \tsmacro{\studentturnindate}{date}
- \end{codesyntax}
- The date, in which, the student submitted the Internship Report. Beware, the date must be in the day/month/year format.
-\end{codedescribe}
-
-\begin{codedescribe}{\internshipsupervisorgrades}
- \begin{codesyntax}
- \tsmacro{\internshipsupervisor}{N1,N2,N3,N4,N5}
- \end{codesyntax}
- Quite obvious, this set the grades given by the supervisor, it's meant to be used twice for the two 'grades blocks'.
+Quite obvious, this set the grades given by an examiner (the one defined by the 'last' \tsmacro{\examiner}{} before this.). In case \tsobj[oarg]{N4} is given it's assumed the TCC-I case, otherwise TCC-II.
\end{codedescribe}
-\begin{codedescribe}{\internshiptutorgrades}
- \begin{codesyntax}%
- \tsmacro{\internshipgrades}{N1}
- \end{codesyntax}
- Quite obvious, this set the grade given by the student tutor.
-\end{codedescribe}
-\begin{codedescribe}{\internshipcoordgrades}
- \begin{codesyntax}%
- \tsmacro{\internshipcoordgrades}{N1}
- \end{codesyntax}
- Quite obvious, this set the grade given by the Internship Coordinator.
-\end{codedescribe}
+\paragraph{Reports Command}
-\paragraph{Setting Commands}
-\begin{codedescribe}{\addtostudent}
- \begin{codesyntax}%
- \tsmacro{\addtostudent}{student,code}
- \end{codesyntax}
-\tsobj[meta]{code} will be appended to the command created with \tsmacro{\NewStudent}{}. \tsobj[meta]{student} must be an already defined one, whilst \tsobj[meta]{code} can be anything valid in the context of a \tsmacro{\NewStudent}{} as described in \autonameref{new-student}.
-\end{codedescribe}
-
-\begin{codedescribe}{\setreports}
- \begin{codesyntax}%
- \tsmacro{\setreports}{rep-list}
- \end{codesyntax}
- \tsobj[meta]{rep-list} is a csv list of keys as defined at \autonameref{ufrgscca-coord.options}.
-\end{codedescribe}
\begin{codedescribe}{\setstudentlist}
\begin{codesyntax}%
@@ -1076,19 +1232,29 @@ This command will define/create a list named \tsobj[meta]{listID} composed of a
\begin{codesyntax}%
\tsmacro{\tcreports}[rep-list]{listID}
\end{codesyntax}
- This is the main command (final work reports), to be used only once, at the end of the file. It will typeset the reports, as set by \tsmacro{\setreports}{}, using the student list identified by \tsobj[meta]{listID}.
- \tsobj[meta]{rep-list} is a csv list of keys as defined at \autonameref{ufrgscca-coord.options}.
+ 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:
\end{codedescribe}
-\begin{codedescribe}{\internshipreports}
- \begin{codesyntax}%
- \tsmacro{\internshipreports}[rep-list]{listID}
- \end{codesyntax}
- This is the main command (internship reports), to be used only once, at the end of the file. It will typeset the reports, as set by \tsmacro{\setreports}{}, using the student list identified by \tsobj[meta]{listID}.
- \tsobj[meta]{rep-list} is a csv list of keys as defined at \autonameref{ufrgscca-coord.options}.
-\end{codedescribe}
+\begin{describelist}{option}
+ \describe {calendar-I} { Calendar for the period, TCC-I.}
+ \describe {report-I} { a student control report, for TCC-I.}
+ \describe {checklist-I} { a student check list, for TCC-I.}
+ \describe {revforms-I} { per student reviews forms, TCC-I.}
+ \describe {referral-I} { per student referral letters, TCC-I.}
+ \describe {calendar-II} { Calendar for the period, TCC-II.}
+ \describe {report-II} { a student control report, for TCC-II.}
+ \describe {checklist-II} { a student check list, for TCC-II.}
+ \describe {revforms-II} { per student reviews forms, TCC-II.}
+ \describe {referral-II} { per student referral letters, TCC-II.}
+ \describe {boards} { exam board dates, TCC-II.}
+ \describe {studentlist} { a simple student list.}
+ \describe {cocertificate} { per student coadvisor certificate letter (if any).}
+% \describe {checklist} { a students check list.}
+\end{describelist}
-\section{\tightul{ufrgscca-ppc} Package (beta) (extended documentation)}
+
+\section{\tightul{ufrgscca-ppc} Package (extended documentation)}
This contains a set of auxiliary commands to keep track of many \emph{indicators} whilst writing a \emph{PPC document} (which is going to be evaluated based on said \emph{indicators}, though the track of those \emph{indicators} themselves shall not appear in the final version of it). Keep in mind, when considering the use of it: “it works as is” but it hasn't being properly debugged, and it might change “as needed locally”.
The packages \tsobj[pkg]{longtable}, \tsobj[pkg]{pdfcomment}, \tsobj[pkg]{mdframed} and \tsobj[pkg]{ufrgscca-curr} will always be pre-loaded.
@@ -1101,12 +1267,6 @@ The packages \tsobj[pkg]{longtable}, \tsobj[pkg]{pdfcomment}, \tsobj[pkg]{mdfram
\end{describelist}
\subsection{Defined Commands}
-\begin{codedescribe}{\maketitle}
- \begin{codesyntax}%
- \tsmacro{\maketitle}{}
- \end{codesyntax}
-The command \tsmacro{\maketitle}{} is redefined for the specifics of a \emph{PPC document}.
-\end{codedescribe}
The next few commands use a finite set of \tsobj[meta]{status} which are a pre-defined list of:
\begin{describelist*}{value}
@@ -1124,11 +1284,11 @@ The next few commands use a finite set of \tsobj[meta]{status} which are a pre-d
\begin{codedescribe}{\declareindicator, \indicatorDesc, \indicatorText}
\begin{codesyntax}%
- \tsmacro{\declareindicator}<*+>[status]{fam,ID,text}
+ \tsobj{\declareindicator}\tsverb{*+}\tsargs[oarg]{status}\tsargs[marg]{fam,ID,text}
\tsmacro{\indicatorDesc}{longdesc,extra}
\tsmacro{\indicatorText}{text}
\end{codesyntax}
-\tsmacro{\declareindicator}{} is the command to create/define a given “indicator”. \tsobj[meta]{fam} set's its \emph{family} group, \tsobj[meta]{ID} is the particular ID/term used to reference it (in a family of indicators), \tsobj[meta]{text} is a short text describing it (it is the text displayed when using the \tsmacro{\indref}{} below.). \tsmacro{\indicatorDesc}{} adds a \tsobj[meta]{longdesc} (long description) and \tsobj[meta]{extra} (extra long description) to a defined \tsmacro{\declareindicator}{} (it will add those text fields to the “last declared one”). \tsobj[meta]{longdesc} will also be displayed when using the \tsmacro{\indref}{} commands, but only if the \tsobj[option]{indlong} option was used. The \tsobj[meta]{extra} will only be used/displayed with the \tsmacro{\PrintIndicators}{} command. Finally, \tsmacro{indicatorText}{} adds a remark \tsobj[meta]{text}, which will be also printed out when using \tsmacro{\lstind}{} (akin of an explanation/remark field.)
+\tsmacro{\declareindicator}{} is the command to create/define a given “indicator”. \tsobj[meta]{fam} set's its \emph{family} group, \tsobj[meta]{ID} is the particular ID/term used to reference it (in a family of indicators), \tsobj[meta]{text} is a short text describing it (it is the text displayed when using the \tsmacro{\indref}{} below.). \tsmacro{\indicatorDesc}{} adds a \tsobj[meta]{longdesc} (long description) and \tsobj[meta]{extra} (extra long description) to a defined \tsmacro{\declareindicator}{} (it will add those text fields to the “last declared one”). \tsobj[meta]{longdesc} will also be displayed when using the \tsmacro{\indref}{} commands, but only if the \tsobj[option]{indlong} option was used. The \tsobj[meta]{extra} will only be used/displayed with the \tsmacro{\PrintIndicators}{} command. Finally, \tsmacro{\indicatorText}{} adds a remark \tsobj[meta]{text}, which will be also printed out when using \tsmacro{\lstind}{} (akin of an explanation/remark field.)
\end{codedescribe}
\begin{codedescribe}{\indsetstatus, \indsetview, \indsethide}
@@ -1233,14 +1393,51 @@ Those are yet another acronym hack. \tsmacro{\acrodef}{} “creates” an acrony
\end{codedescribe}
This is just a tailored “quote” environment, using almost all page width, just in a smaller font size.
-\section{\tightul{ufrgscca-curr} Package (beta) (extended documentation)}
-This package is mostly in beta state, some parts of it should be identified as alpha state. Those are mostly rushed out adaptations of other “solutions at hand”. Literally, try to use it at your own peril.
+\section{\tightul{ufrgscca-curr} Package (extended documentation)}
+The background of it: To have the ability to “describe” (store the information in a “structured way”) an University Course Curricula and have the possibility, later, to presented that same information in many different ways (including a dependence graph). All data is captured/stored in a set of 3 \tsobj[pkg]{starrays}:
+
+
+\begin{codestore}[st=topicsdef]
+ {
+ self = , name = , color = , class lst = , %list (sequence) of classes
+ }
+\end{codestore}
-The background of it: To have the ability to “describe” (store the information in a “structured way”) an University Course Curricula and have the possibility, later, to presented that same information in many different ways (including a dependence graph). To an extended, most of it is done (and working), but hopeless lacking more testing and debugging.
+\tscode*[codeprefix={topics' Structure Definition:},basicstyle={\scriptsize\ttfamily}]{topicsdef}\label{topics-def}
+
+
+\begin{codestore}[st=classdef]
+ {
+ cred = , self = , name = , summary = , topic = , remark = ,
+ bib seq = , bib basic seq = , bib compl seq = ,
+ ref . struct = {
+ curr = , sem = , kind = ,
+ } ,
+ }
+\end{codestore}
+
+\tscode*[codeprefix={Classes' Structure Definition:},basicstyle={\scriptsize\ttfamily}]{classdef}\label{class-def}
+
+\begin{codestore}[st=curriculadef]
+ {
+ self = , name = , text = ,
+ sem.struct = {
+ pos = , self = , name = ,
+ class . struct = {
+ name = , kind = , obs = , pos = , color = ,
+ prereqset . struct = {
+ prereq . struct = {
+ starred = , name = , ang = ,
+ }
+ } ,
+ } ,
+ } ,
+ }
+\end{codestore}
+
+\tscode*[codeprefix={Curricula's Structure Definition:},basicstyle={\scriptsize\ttfamily}]{curriculadef}\label{curricula-def}
-Why is it included in the bundle? Well, it is needed, in part for completeness, by \tsobj[pkg]{ufrgscca-ppc}, which is “locally important”.
-\subsection{Commands Creating the many lists}
The following commands “describe” a curricula, whereas one is a sequence of semesters \tsobj[meta]{semID}, each semester is composed by a list of classes, \tsobj[meta]{classID}, and each class has a list of dependencies, \tsobj[meta]{classID} as \tsmacro{\depdef}{}. All those lists are stored as csv lists, so “processing them” can be systematized.
\begin{codedescribe}{\topicdef,\defaulttopic}
@@ -1252,83 +1449,66 @@ The following commands “describe” a curricula, whereas one is a sequence of
\end{codedescribe}
-\begin{codedescribe}{\semdef}
+\begin{codedescribe}[code,update=2023/11/18]{\classdef,\classset}
\begin{codesyntax}%
- \tsobj[code]{\semdef}{\tsobj[oarg]{pos}\tsobj[xarg]{cod}\tsobj[marg]{semID}}
+ \tsmacro{\classdef}[topicID]{classID,cred,name}
+ \tsmacro{\classset}{classID}
\end{codesyntax}
-This “defines” a semester, \tsobj[meta]{semID}, and associates with it a \tsobj[meta]{cod} (for reference) and a \tsobj[meta]{pos} (to be used by, for instance, \tsobj[pkg]{ufrgscca-curr-graph}.)
-\end{codedescribe}
+\tsmacro{\classdef}{} defines a class \tsobj[meta]{classID} (with a given \tsobj[marg]{name} and number of \tsobj[marg]{name}) associated with a given \tsobj[meta]{topicID}. \tsmacro{\classset}{} sets the current class.
+The following commands always refer to the “last defined” \tsmacro{\classdef}{} unless \tsmacro{\setclass}{} is used, which changes the “current class” for the following commands.
+\end{codedescribe}
-\begin{codedescribe}{\classdef,\setclass,\classremark}
+\begin{codedescribe}[code,new=2023/11/18]{\csummary,\classremark,\bibdef}
\begin{codesyntax}%
- \tsobj[code]{\classdef}{\tsobj[oarg]{topicID}\tsobj[xarg]{pos}\tsobj[marg]{classID}\tsobj[marg]{cred}\tsobj[marg]{typ}\tsobj[marg]{name}\tsobj[marg]{desc}}
- \tsmacro{\setclass}{classID}
+ \tsmacro{\csummary}{desc}
\tsmacro{\classremark}{remark}
+ \tsmacro{\bibdef}[type]{text}
\end{codesyntax}
-\tsmacro{\classdef}{} defines a class, associating with a \tsobj[meta]{topicID}, \tsobj[meta]{pos} (for \tsobj[pkg]{ufrgscca-curr-graph}), \tsobj[meta]{classID}, number and type, \tsobj[meta]{typ}, of credits, \tsobj[meta]{cred}, a long name, \tsobj[meta]{name} and description, \tsobj[meta]{desc}. \tsmacro{\classremark}{} adds an extra remark to it.
-
-The following commands always refer to the “last defined” \tsmacro{\classdef}{} unless \tsmacro{\setclass}{} is used, which changes the “current class” for the following commands.
+ \tsobj{\csummary} sets a class summary, whilst \tsobj{\classremark} annotates a 'note/remark'. \tsobj{\bibdef}
+ is used to set a list of bibliographies, one per issued command. The default \tsobj[meta]{type} value is \tsobj[key]{main}, other possible values \tsobj[key]{basic} and \tsobj[key]{compl}.
\end{codedescribe}
-\begin{codedescribe}{\depdef,\altdef}
- \begin{codesyntax}%
- \tsobj[code]{\depdef}{\tsobj[oarg]{topicID}\tsobj[xarg]{pos}\tsobj[marg]{classID}}
- \tsmacro{\altdef}{}
- \end{codesyntax}
-\tsmacro{\depdef}{} inserts/creates a “class dependency” list. The highlight color (if used) is usually defined by the current class topic (informing \tsobj[meta]{topicID} changes the highlight color). \tsobj[meta]{pos} is used by \tsobj[pkg]{ufrgscca-curr-graph} to determine the incident line angle.
-\tsmacro{\altdef}{} defines/start and alternate dependency list.
-\end{codedescribe}
-\begin{codedescribe}{\bibdef}
+\begin{codedescribe}[code,update=2023/11/18]{\currdef,\semdef}
\begin{codesyntax}%
- \tsmacro{\bibdef}[type]{text}
+ \tsmacro{\currdef}{curr-ID,short name,long name}
+ \tsmacro{\semdef}{semID,name,pos}
\end{codesyntax}
-This is used to set a list of bibliographies, one per issued command. The default \tsobj[meta]{type} value is just \emph{bib}, possible values (as understood by \tsobj[pkg]{ufrgscca-curr-tab}) are \emph{bib}, \emph{basic} and \emph{comp}.
+\tsobj{\currdef} creates a curricula (with a set of semesters defined as following).
+\tsobj{\semdef} creates a semester, \tsobj[meta]{semID}, \tsobj[meta]{pos} being a position 'hint' when creating a dependency graph (see below).
\end{codedescribe}
-\subsection{List Processing Commands}
-Those are the main loop commands that go through the lists.
-\begin{codedescribe}{\LstClass,\LstDep,\LstTopic}
- \begin{codesyntax}
- \tsmacro{\LstClass}[cmd]{semID}
- \tsobj[code]{\LstDep}{\tsobj[oarg]{cmd}\tsobj[xarg]{ang}\tsobj[marg]{classID}}
- \tsmacro{\LstTopic}[cmd]{topicID}
- \end{codesyntax}
-\tsobj[meta]{cmd} can be any command accepting a single argument. It will, in fact, be the one defining the way the data will, effectively, be presented.
-
-\tsmacro{\LstClass}{} will process \tsobj[meta]{cmd} over all classes associated with \tsobj[meta]{semID}.
-
-\tsmacro{\LstDep}{} will process \tsobj[meta]{cmd} over all dependency classes associated with \tsobj[meta]{classID}.
-\tsmacro{\LstTopic}{} will process \tsobj[meta]{cmd} over all classes associated with \tsobj[meta]{topicID}.
+\begin{codedescribe}[code,update=2023/11/18]{\depdef,\altdep}
+ \begin{codesyntax}%
+ \tsobj[code]{\depdef}\tsverb[oarg]{*}\tsargs[xarg]{pos}\tsargs[marg]{classID}
+ \tsmacro{\altdep}{}
+ \end{codesyntax}
+\tsmacro{\depdef}{} inserts/creates a “class dependency” list. \tsobj[meta]{pos} is used as a 'hint' for the incident (dependency) line angle. The starred version is meant to be used when the 'dependency' isn't another class but rather, for instance, a number of credits.
+\tsmacro{\altdep}{} defines/start and alternate dependency list.
\end{codedescribe}
-\section{\tightul{ufrgscca-curr-tab} Package (beta) (ex\-tend\-ed documentation)}
-This is truly a work in progress (based on some old ideas), not really tested. It shall be revised and, mostly sure, it will be changed (no compatibility guaranties). It always pre-load \tsobj[pkg]{ufrgscca-curr} and \tsobj[pkg]{longtable}.
-\subsection{Tabular Presentation Commands}
-\begin{codedescribe}{\TabEtp,\TabTopic}
+\begin{codedescribe}[code,update=2023/11/18]{\TabEtp,\TabTopic}
\begin{codesyntax}%
- \tsobj[code]{\TabEtp}{\tsobj[xarg]{type}\tsobj[oarg]{sectioning}c\tsobj[marg]{semID}}
- \tsmacro{\TabTopic}[type]{topicID}
+ \tsobj[code]{\TabEtp}\tsverb[oarg]{*}\tsargs[oarg]{sectioning}\tsargs[marg]{semID}\tsargs[oarg]{font-fmt}
+ \tsmacro{\TabTopic}{topicID}
\end{codesyntax}
-\tsmacro{\TabEtp}{} will construct a longtable with all classes associated with \tsobj[meta]{semID} (including it's dependencies and bibliography).
+\tsmacro{\TabEtp}{} will construct a longtable with all classes associated with \tsobj[meta]{semID}. The default 'font size', \tsobj[oarg]{font-fmt}, is \tsobj{\footnotesize}.
+The default \tsobj[oarg]{sectioning} is \tsobj{\notoc\section}.
+The non-star version includes the bibliography lists as well.
-\tsmacro{\TabTopic}{} will construct a longtable with all classes associated with \tsobj[meta]{topicID}.
+\tsmacro{\TabTopic}{} will construct a longtable with all classes associated with a \tsobj[meta]{topicID}.
\end{codedescribe}
-\section{\tightul{ufrgscca-curr-graph} Package (beta) (extended documentation)}
-
-\subsection{Graph Presentation Command}
-Ironically, this is the “oldest” of the \tsobj[pkg]{-curr-} packages, but it is the less tested one, and the one whose code is more prone to fail in unexpected ways, be advised: do not try to use it, unless you know the internal code well. It always pre-load \tsobj[pkg]{ufrgscca-curr} (N.B. it also depends on \tsobj[pkg]{tikz}).
-\begin{codedescribe}{\GraphSem}
+\begin{codedescribe}[code,update=2023/11/18]{\GraphEtp}
\begin{codesyntax}%
- \tsmacro{\GraphSem}[type]{semID}
+ \tsmacro{\GraphEtp}{semID}
\end{codesyntax}
It will create a dependency graph for a given \tsobj[meta]{semId}. N.B. to start with, it is highly dependent on the semester sequence, one shall start with first semester and go from there.
\end{codedescribe}
diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-abnt.sty b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-abnt.sty
index 5077416b1a2..eba4667270b 100644
--- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-abnt.sty
+++ b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-abnt.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version 1.12 (2023/09/23)
+%% This is version {2.0} {2023/11/23}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -23,73 +23,127 @@
%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym)
%%%==============================================================================
\NeedsTeXFormat{LaTeX2e}[2022/06/01]
-\def\tc@tmp@packname{ufrgscca-abnt}
-\def\tc@tmp@altpackname{ufrgsccaabnt}
-\def\tc@tmp@packdesc{UFRGS/CCA ABNT layout}
-\def\tc@tmp@packdate{2023/09/23}
-\def\tc@tmp@packversion{1.12}
-\let\@exp\expandafter
-\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion}
-\@exp\@exp\@exp\ProvidesPackage\@exp\@exp\@exp{\@exp\tc@tmp@packname\@exp}\@exp[\tc@tmp@packdate\space v\tc@tmp@packversion\space\tc@tmp@packdesc]
-
-\def\tc@tocdepth{3} % Table of Contents depth
-\def\tc@secdepth{4} % Sectioning numbers depth (3 -> subsubsection)
-
-\DeclareKeys[ufrgscca-abnt]{
- strict-abnt.usage = load,
- strict-abnt.if = tcif@strictabnt,
-
- pretextontoc.usage = load,
- pretextontoc.if = tcif@pretextontoc,
-
- yearsonly.usage = load,
- yearsonly.if = tcif@yearsonly,
-
-
- chapternopagenum.usage = load,
- chapternopagenum.if = tcif@chapternopagenum,
-
- english.usage = load,
- english.if = tcif@english,
- relnum.usage = load,
- relnum.if = tcif@relnum,
- repeatfields.usage = load,
- repeatfields.if = tcif@repeatfields,
-
- showframes.usage = load,
- showframes.if = tcif@showframes,
- showlabels.usage = load,
- showlabels.if = tcif@showlabels,
-
- tocdepth.usage = load,
- tocdepth.store = \tc@tocdepth,
- secdepth.usage = load,
- secdepth.store = \tc@secdepth,
-
- nomicrotype.usage = load,
- nomicrotype.if = tcif@nomicrotype,
-
- article.usage = load,
- article.if = tcif@article,
-}
-\ProcessKeyOptions[ufrgscca-abnt]\relax
+
+\ProvidesExplPackage
+ {ufrgscca-abnt}
+ {2023/11/23}
+ {2.0}
+ {UFRGS/CCA ABNT layout}
+
+
+%%%%%%%
+%%%
+%%% Just an attempt of having my packages info in a regular way
+%%% Idea being: { <pck-name> / pkg info } for each and all.
+%%%
+%%%%%%%
+\keys_define:nn { ufrgscca-abnt / pkg info}
+ {
+ name .code:n = {ufrgscca-abnt} ,
+ prefix .code:n = {ufrgscca} ,
+ date .code:n = {2023/11/23},
+ version .code:n = {2.0} ,
+ description .code:n = {UFRGS/CCA~ abnt~layout}
+ }
+\cs_if_exist:NF \__codedesc_pkg_info:nn
+ {
+ \cs_new_protected:Npn \__codedesc_pkg_info:nn #1#2
+ { \keys_set:nn {#1 / pkg info}{#2} }
+ }
+\cs_if_exist:NF \PkgInfo
+ { \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} } }
+\cs_if_exist:NF \PkgDescription
+ {
+ \NewDocumentCommand \PkgDescription {m}
+ {
+ \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par
+ }
+ }
+%%%%%%%
+%%% End of cut-n-paste
+%%%%%%%
+
+
+
+\keys_define:nn { ufrgscca.abnt }
+ {
+ strict-abnt .usage:n = load ,
+ strict-abnt .bool_set:N = \l__ufrgscca_strictabnt_bool ,
+
+ pretextontoc .usage:n = load ,
+ pretextontoc .bool_set:N = \l__ufrgscca_pretextontoc_bool ,
+
+ yearsonly .usage:n = load ,
+ yearsonly .bool_set:N = \l__ufrgscca_yearsonly_bool ,
+
+ chapternopagenum .usage:n = load ,
+ chapternopagenum .bool_set:N = \l__ufrgscca_chapternopagenum_bool ,
+
+% english .usage:n = load ,
+% english .bool_set:N = \l__ufrgscca_english_bool ,
+
+ relnum .usage:n = load ,
+ relnum .bool_set:N = \l__ufrgscca_relnum_bool ,
+
+ repeatfields .usage:n = load ,
+ repeatfields .bool_set:N = \l__ufrgscca_repeatfields_bool ,
+
+ showframes .usage:n = load ,
+ showframes .bool_set:N = \l__ufrgscca_showframes_bool ,
+
+ showlabels .usage:n = load ,
+ showlabels .bool_set:N = \l__ufrgscca_showlabels_bool ,
+
+ tocdepth .usage:n = load ,
+ tocdepth .tl_set:N = \l__ufrgscca_tocdepth_tl ,
+
+ secdepth .usage:n = load ,
+ secdepth .tl_set:N = \l__ufrgscca_secdepth_tl ,
+
+ nomicrotype .usage:n = load ,
+ nomicrotype .bool_set:N = \l__ufrgscca_nomicrotype_bool ,
+
+ article .usage:n = load ,
+ article .bool_set:N = \l__ufrgscca_article_bool ,
+ }
+
+\tl_set:Nn \l__ufrgscca_tocdepth_tl {3}
+\tl_set:Nn \l__ufrgscca_secdepth_tl {4}
+
+\ProcessKeyOptions[ufrgscca.abnt]\relax
+
+
+
%%%%%%%%%%%%%%%%%%%%%
%%% Packages Loading
%%%%%%%%%%%%%%%%%%%%%
-\RequirePackage[english,brazilian]{babel}% see ufrgscca.cls in case of newtx* being loaded!
+\bool_if:NTF \l__ufrgscca_english_bool
+ {
+ \RequirePackage[brazilian,english]{babel}% see ufrgscca.cls in case of newtx* being loaded!
+ %\addto\extraenglish{\input{ufrgscca-base-en.def}}
+ \AtBeginDocument{\selectlanguage{english}\input{ufrgscca-base-en.def}}%
+ }
+ {
+ \RequirePackage[english,brazilian]{babel}% see ufrgscca.cls in case of newtx* being loaded!
+ %\addto\extrabrazilian{\input{ufrgscca-base-ptBR.def}}
+ \AtBeginDocument{\selectlanguage{brazilian}\input{ufrgscca-base-ptBR.def}}%
+ }
+
+
\RequirePackage{csquotes}%
-\iftcif@strictabnt
- \RequirePackage[a4paper,inner=2cm,outer=3cm,top=3cm,bottom=2cm,twoside]{geometry}
-\else
- \iftcif@nogeometry
-% \RequirePackage[a4paper,margin=5cm,right=2cm,marginparwidth=3.75cm,asymmetric,top=2.5cm,bottom=1.5cm]{geometry}
- \else
- \RequirePackage[a4paper,inner=2.5cm,outer=2.5cm,top=3cm,bottom=2cm,twoside]{geometry}
- \fi
-\fi
+\bool_if:NTF \l__ufrgscca_strictabnt_bool
+ {
+ \RequirePackage[a4paper,inner=2cm,outer=3cm,top=3cm,bottom=2cm,twoside]{geometry}
+ }
+ {
+ \bool_if:NF \l__ufrgscca_nogeometry_bool
+ {
+ \RequirePackage[a4paper,inner=2.5cm,outer=2.5cm,top=3cm,bottom=2cm,twoside]{geometry}
+ }
+ }
\RequirePackage[toc,page,title]{appendix}
\RequirePackage[pagestyles,clearempty]{titlesec}
@@ -98,9 +152,16 @@
\RequirePackage{chngcntr}
-\def\tc@captionwidth{0.75\textwidth}
-\def\tc@notewidth{0.635\textwidth} %% 0.84666667\tc@captionwidth
-\RequirePackage[position=above,font=small,labelfont=bf,textfont=md,textfont+=sl,width=\tc@captionwidth]{caption}%
+
+%
+% using Expl3
+\SetConsts{%
+ caption.width = 0.75\textwidth ,
+ note.width = 0.635\textwidth ,
+}
+
+\RequirePackage[position=above,font=small,labelfont=bf,textfont=md,textfont+=sl,width=\UseConst{caption.width}]{caption}%
+
%%%
%%% commands for 'floats'
%%%
@@ -108,7 +169,19 @@
\NewDocumentCommand{\sourcecitation}{m}{{\small{\sourcename\ #1}}}%
%
\newlength{\noteindent}%%auxiliary length
-\NewDocumentCommand{\note}{O{}+m}{{\footnotesize\settowidth{\noteindent}{\notename#1:}\addtolength{\noteindent}{3pt}\begin{center}\begin{minipage}{\tc@notewidth}{\parindent=-\the\noteindent\notename#1:\hspace{2.9pt}#2}\end{minipage}\end{center}}}%%
+\NewDocumentCommand{\note}{O{}+m}
+ {
+ {
+ \footnotesize
+ \settowidth{\noteindent}{\notename#1:}
+ \addtolength{\noteindent}{3pt}
+ \begin{center}
+ \begin{minipage}{\UseConst{note.width}}
+ { \parindent=-\the\noteindent\notename#1:\hspace{2.9pt}#2 }
+ \end{minipage}
+ \end{center}
+ }
+ }%%
%
%
@@ -133,32 +206,32 @@
%%%%%%%%%%%%%%%%%%%%%
\WarningFilter{biblatex}{File 'brazilian-abnt-abnt.lbx'}%
\WarningFilter{biblatex}{Conflicting options}%
-\iftcif@repeatfields%
- \RequirePackage[backend=biber,style=abnt,pretty,giveninits,extrayear,repeatfields]{biblatex}%
-\else%
- \RequirePackage[backend=biber,style=abnt,pretty,giveninits,extrayear]{biblatex}%
-\fi%
+
+\bool_if:NTF \l__ufrgscca_repeatfields_bool
+ {
+ \RequirePackage[backend=biber,style=abnt,pretty,giveninits,extrayear,repeatfields]{biblatex}%
+ }
+ {
+ \RequirePackage[backend=biber,style=abnt,pretty,giveninits,extrayear]{biblatex}%
+ }
+
+
%%
-%%%
-%%% Language selection {package babel}
-%%%
-\iftcif@english%%
- \selectlanguage{english}%
- \AtBeginDocument{\selectlanguage{english}}%
-\else
- \selectlanguage{brazilian}%
- \AtBeginDocument{\selectlanguage{brazilian}}%
-\fi%
+
%%%
%%% typeset adjusting {package microtype}
%%%
-\iftcif@timesroman\else%
-\iftcif@nomicrotype\else\RequirePackage[tracking,kerning,spacing,babel]{microtype}\fi%
-\fi
-%\iftcif@nomicrotype\else\RequirePackage[babel]{microtype}\fi%
-%
+\bool_if:NF \l__ufrgscca_timesroman_bool
+ {
+ \bool_if:NF \l__ufrgscca_nomicrotype_bool
+ {
+ \RequirePackage[tracking,kerning,spacing,babel]{microtype}
+ }
+ }
+
+
% pdftex native protruding
%
\pdfprotrudechars=2
@@ -171,51 +244,71 @@
\RequirePackage{soul}
-\iftcif@showframes%
- \RequirePackage{showframe}%%
-\fi
-%%
-\iftcif@showlabels%
- \RequirePackage{showlabels}%%
- \showlabels{cite}%%
- \showlabels{textcite}%%
- \RenewDocumentCommand{\showlabelfont}{}{\tiny\ttfamily\color{blue}}%%
-\fi%%
+\bool_if:NT \l__ufrgscca_showframes_bool
+ {
+ \RequirePackage{showframe}
+ }
+\bool_if:NT \l__ufrgscca_showlabels_bool
+ {
+ \RequirePackage{showlabels}
+ \showlabels{cite}
+ \showlabels{textcite}
+ \RenewDocumentCommand{\showlabelfont}{}{\tiny\ttfamily\color{blue}}
+ }
+
+
%%%
%%% ToC and Headings format. {package titlesec/titletoc/titleps}
%%%
-\setcounter{tocdepth}{\tc@tocdepth} % Table of Contents depth
-\setcounter{secnumdepth}{\tc@secdepth} % Sectioning numbers depth (3 -> subsubsection)
-
-\NewDocumentEnvironment{tocless}{}%
- {\setcounter{secnumdepth}{-1}\addtocontents{toc}{\protect\setcounter{tocdepth}{-1}\ignorespaces}}%
- {\setcounter{secnumdepth}{\tc@secdepth}\addtocontents{toc}{\protect\setcounter{tocdepth}{\tc@tocdepth}\ignorespaces}}%
+\setcounter{tocdepth}{\l__ufrgscca_tocdepth_tl} % Table of Contents depth
+\setcounter{secnumdepth}{\l__ufrgscca_secdepth_tl} % Sectioning numbers depth (3 -> subsubsection)
+
+\NewDocumentEnvironment{tocless}{}
+ {
+ \setcounter{secnumdepth}{-1}
+ \addtocontents{toc}{\protect\setcounter{tocdepth}{-1}\ignorespaces}
+ }
+ {
+ \setcounter{secnumdepth}{\l__ufrgscca_secdepth_tl}
+ \addtocontents{toc}{\protect\setcounter{tocdepth}{\l__ufrgscca_tocdepth_tl}\ignorespaces}
+ }
+
\def\notoc#1#2{\begin{tocless}#1{#2}\end{tocless}}
-\NewDocumentEnvironment{numberless}{}{\setcounter{secnumdepth}{-1}}{\setcounter{secnumdepth}{\tc@secdepth}}
+
+\NewDocumentEnvironment{numberless}{}
+ {
+ \setcounter{secnumdepth}{-1}
+ }
+ {
+ \setcounter{secnumdepth}{\l__ufrgscca_secdepth_tl}
+ }
+
\def\nonum#1#2{\begin{numberless}#1{#2}\end{numberless}}
+
+
%%%
%%% Relative/Absolute numbering... argh !!!
%%%
- \def\tc@chapterspc{\vspace{2.5mm}}
- \def\tc@sectionspc{\vspace{0.75mm}}
-\iftcif@article
-\else
-\iftcif@relnum%
-% \def\tc@chapterspc{\vspace{2.5mm}}
-% \def\tc@sectionspc{\vspace{0.75mm}}
-\else%
-% \def\tc@chapterspc{}
-% \def\tc@sectionspc{}
- \patchcmd{\@chapter}{\addtocontents{lof}{\protect\addvspace{10\p@}}}{}{}{{PATCH FAILED}}% LoF ... to supress extra space (figures of diverse chapters)
- \patchcmd{\@chapter}{\addtocontents{lot}{\protect\addvspace{10\p@}}}{}{}{{PATCH FAILED}}% LoT
-\fi
-\fi
+ \def\l__ufrgscca_chapter_spacing_tl{\vspace{2.5mm}}
+ \def\l__ufrgscca_section_spacing_tl{\vspace{0.75mm}}
+
+
+\makeatletter
+\bool_if:NF \l__ufrgscca_article_bool
+ {
+ \bool_if:NF \l__ufrgscca_relnum_bool
+ {
+ \patchcmd{\@chapter}{\addtocontents{lof}{\protect\addvspace{10\p@}}}{}{}{{PATCH ~FAILED}}% LoF ... to supress extra space (figures of diverse chapters)
+ \patchcmd{\@chapter}{\addtocontents{lot}{\protect\addvspace{10\p@}}}{}{}{{PATCH ~FAILED}}% LoT
+ }
+ }
+
%%%
@@ -224,120 +317,277 @@
\def\tc@lblmargin{22mm}
\contentsmargin{2.2em}
\def\tc@dotspacing{0.5pc}
-\titlecontents{chapter}[\tc@lblmargin]{\tc@chapterspc\normalfont\scshape\selectfont}{\contentslabel{\tc@lblmargin}}{\hspace{-\tc@lblmargin}}{\titlerule*[\tc@dotspacing]{.}\normalsize\normalfont\contentspage}
-\titlecontents{section}[\tc@lblmargin]{\tc@sectionspc}{\contentslabel{\tc@lblmargin}}{\hspace{-\tc@lblmargin}}{\titlerule*[\tc@dotspacing]{.}\contentspage}
-\dottedcontents{subsection}[\tc@lblmargin]{}{\tc@lblmargin}{\tc@dotspacing}
+%%%\def\tc@lblmargin{22mm}
+%%%\contentsmargin{2.2em}
+%%%\def\tc@dotspacing{0.5pc}
+
+
+\titlecontents{chapter}[\tc@lblmargin]
+ {\l__ufrgscca_chapter_spacing_tl\normalfont\scshape\selectfont}
+ {\contentslabel{\tc@lblmargin}}
+ {\hspace{-\tc@lblmargin}}
+ {\titlerule*[\tc@dotspacing]{.}\normalsize\normalfont\contentspage}
+
+\titlecontents{section}[\tc@lblmargin]
+ {\l__ufrgscca_section_spacing_tl}
+ {\contentslabel{\tc@lblmargin}}
+ {\hspace{-\tc@lblmargin}}
+ {\titlerule*[\tc@dotspacing]{.}\contentspage}
+
+\dottedcontents{subsection}[\tc@lblmargin]
+ {}
+ {\tc@lblmargin}
+ {\tc@dotspacing}
+
+\dottedcontents{subsubsection}[\tc@lblmargin]
+ {}
+ {\tc@lblmargin}
+ {\tc@dotspacing}
+
+\dottedcontents{figure}[\tc@lblmargin]
+ {}
+ {\tc@lblmargin}
+ {\tc@dotspacing}
+
+\dottedcontents{table}[\tc@lblmargin]
+ {}
+ {\tc@lblmargin}
+ {\tc@dotspacing}
+
+
-\dottedcontents{subsubsection}[\tc@lblmargin]{}{\tc@lblmargin}{\tc@dotspacing}
-\dottedcontents{figure}[\tc@lblmargin]{}{\tc@lblmargin}{\tc@dotspacing}
-\dottedcontents{table}[\tc@lblmargin]{}{\tc@lblmargin}{\tc@dotspacing}
\renewcommand{\restoreapp}{} % to reset appendix counters each time (from appendix doc)
-\RenewDocumentEnvironment{appendix}{O{\defappendixpagename}O{\defappendixname}}{%
- \titleformat{\chapter}{\bfseries\Large\sffamily}{#2 \thechapter\hspace{1.5ex}-}{2ex}{\MakeUppercase}%
- \titlecontents{chapter}[\tc@lblmargin]{\vspace{3mm}\sc}{\hspace{-\tc@lblmargin}{#2~\thecontentslabel\ -\enspace}}{\hspace{-\tc@lblmargin}}{\titlerule*[\tc@dotspacing]{.}\normalsize\normalfont\contentspage}
- \def\appendixname{#2}%
- \def\appendixpagename{#1}%
- \def\appendixtocname{#1}%
+\RenewDocumentEnvironment{appendix}{O{\defappendixpagename}O{\defappendixname}}
+ {
+ \titleformat{\chapter}
+ {\bfseries\Large\sffamily}
+ {#2~ \thechapter\hspace{1.5ex}-}
+ {2ex}
+ {\MakeUppercase}%
+ \titlecontents{chapter}[\tc@lblmargin]
+ {\vspace{3mm}\sc}
+ {\hspace{-\tc@lblmargin}{#2\ ~\thecontentslabel\ ~ -\enspace}}
+ {\hspace{-\tc@lblmargin}}
+ {\titlerule*[\tc@dotspacing]{.}\normalsize\normalfont\contentspage}
+ \def\appendixname{#2}%
+ \def\appendixpagename{#1}%
+ \def\appendixtocname{#1}%
\begin{appendices}%
- \let\tc@appendixautorefname@tmp\appendixautorefname
- \def\appendixautorefname{#2}
- }%
- {\let\appendixautorefname\tc@appendixautorefname@tmp\end{appendices}}
-
-\NewDocumentEnvironment{annex}{O{\defannexpagename}O{\defannexname}}{\begin{appendix}[#1][#2]}{\end{appendix}}
+ \let\tc@appendixautorefname@tmp\appendixautorefname
+ \def\appendixautorefname{#2}
+ }
+ {
+ \let\appendixautorefname\tc@appendixautorefname@tmp
+ \end{appendices}
+ }
-%%%
-%%% Headings definitions {package titlesec}
-%%%
-%\RenewDocumentCommand{\thechapter}{}{\arabic{chapter}}
-\titleformat{\chapter}{\sffamily\bfseries\selectfont\Large}{\thechapter}{2ex}{\MakeUppercase}
-\titleformat{name=\chapter,numberless}{\sffamily\bfseries\selectfont\Large\center}{}{0pt}{\MakeUppercase}
-\titlespacing{\chapter}{0pt}{\tc@chapbefore}{\tc@chapafter}
+\NewDocumentEnvironment{annex}{O{\defannexpagename}O{\defannexname}}
+ {\begin{appendix}[#1][#2]}
+ {\end{appendix}}
-%\def\tc@chapbefore{18pt plus 3pt minus 6pt}
-%\def\tc@chapafter{9pt plus 3pt minus 3pt}
-%\def\tc@secbefore{12pt plus 6pt minus 3pt}
-%\def\tc@secafter{6pt plus 2pt minus 2pt}
-\def\tc@chapbefore{70pt plus 12pt minus 8pt}
-\def\tc@chapafter{36pt plus 8pt minus 8pt}
-\def\tc@secbefore{27pt plus 6pt minus 6pt}
-\def\tc@secafter{18pt plus 4pt minus 4pt}
+\makeatother
-\titleformat{\section}[hang]{\normalfont\scshape\selectfont\large}{\thesection}{.5em}{}
-\titlespacing{\section}{0pt}{\tc@secbefore}{\tc@secafter}
-\titleformat{name=\section,numberless}[hang]{\normalfont\large\bfseries\scshape\selectfont\center}{}{0pt}{}
-\titlespacing{name=\section,numberless}{0pt}{\tc@secbefore}{\tc@secafter}
-\titleformat{\subsection}[hang]{\normalfont\sffamily\bfseries\slshape\selectfont}{\thesubsection}{.5em}{}
-\titlespacing{\subsection}{0pt}{\tc@secbefore}{\tc@secafter}
+%%%
+%%% Headings definitions {package titlesec}
+%%%
+%%%%\def\tc@chapbefore{70pt plus 12pt minus 8pt}
+%%%%\def\tc@chapafter{36pt plus 8pt minus 8pt}
+%%%%\def\tc@secbefore{27pt plus 6pt minus 6pt}
+%%%%\def\tc@secafter{18pt plus 4pt minus 4pt}
-\titleformat{\subsubsection}[hang]{\normalfont\sffamily\slshape\selectfont}{\thesubsubsection}{.5em}{}
-\titlespacing{\subsubsection}{0pt}{\tc@secbefore}{\tc@secafter}
+\def\l__ufrgscca_chapter_before_skip{70pt plus 12pt minus 8pt}
+\def\l__ufrgscca_chapter_after_skip{36pt plus 8pt minus 8pt}
+\def\l__ufrgscca_section_before_skip{27pt plus 6pt minus 6pt}
+\def\l__ufrgscca_section_after_skip{18pt plus 4pt minus 4pt}
-\titleformat{\paragraph}[hang]{\normalfont\sffamily\selectfont}{\theparagraph}{.5em}{\tightul}
-\titlespacing{\paragraph}{0pt}{\tc@secbefore}{\tc@secafter}
-\titleformat{\subparagraph}[hang]{\normalfont\sffamily\selectfont}{\thesubparagraph}{.5em}{\tightul}
-\titlespacing{\subparagraph}{0pt}{\tc@secbefore}{\tc@secafter}
+%\RenewDocumentCommand{\thechapter}{}{\arabic{chapter}}
+\titleformat{\chapter}
+ {\sffamily\bfseries\selectfont\Large}
+ {\thechapter}
+ {2ex}
+ {\MakeUppercase}
+
+\titleformat{name=\chapter,numberless}
+ {\sffamily\bfseries\selectfont\Large\center}
+ {}
+ {0pt}
+ {\MakeUppercase}
+
+\titlespacing{\chapter}
+ {0pt}
+ {\l__ufrgscca_chapter_before_skip}
+ {\l__ufrgscca_chapter_after_skip}
+
+%\def\l__ufrgscca_chapter_before_skip{18pt plus 3pt minus 6pt}
+%\def\l__ufrgscca_chapter_after_skip{9pt plus 3pt minus 3pt}
+%\def\l__ufrgscca_section_before_skip{12pt plus 6pt minus 3pt}
+%\def\l__ufrgscca_section_after_skip{6pt plus 2pt minus 2pt}
+
+
+\titleformat{\section}[hang]
+ {\normalfont\scshape\selectfont\large}
+ {\thesection}
+ {.5em}
+ {}
+
+\titlespacing{\section}
+ {0pt}
+ {\l__ufrgscca_section_before_skip}
+ {\l__ufrgscca_section_after_skip}
+
+\titleformat{name=\section,numberless}[hang]
+ {\normalfont\large\bfseries\scshape\selectfont\center}
+ {}
+ {0pt}
+ {}
+
+\titlespacing{name=\section,numberless}
+ {0pt}
+ {\l__ufrgscca_section_before_skip}
+ {\l__ufrgscca_section_after_skip}
+
+\titleformat{\subsection}[hang]
+ {\normalfont\sffamily\bfseries\slshape\selectfont}
+ {\thesubsection}
+ {.5em}
+ {}
+
+\titlespacing{\subsection}
+ {0pt}
+ {\l__ufrgscca_section_before_skip}
+ {\l__ufrgscca_section_after_skip}
+
+\titleformat{\subsubsection}[hang]
+ {\normalfont\sffamily\slshape\selectfont}
+ {\thesubsubsection}
+ {.5em}
+ {}
+
+\titlespacing{\subsubsection}
+ {0pt}
+ {\l__ufrgscca_section_before_skip}
+ {\l__ufrgscca_section_after_skip}
+
+\titleformat{\paragraph}[hang]
+ {\normalfont\sffamily\selectfont}
+ {\theparagraph}
+ {.5em}
+ {\tightul}
+
+\titlespacing{\paragraph}
+ {0pt}
+ {\l__ufrgscca_section_before_skip}
+ {\l__ufrgscca_section_after_skip}
+
+\titleformat{\subparagraph}[hang]
+ {\normalfont\sffamily\selectfont}
+ {\thesubparagraph}
+ {.5em}
+ {\tightul}
+
+\titlespacing{\subparagraph}
+ {0pt}
+ {\l__ufrgscca_section_before_skip}
+ {\l__ufrgscca_section_after_skip}
%%%
%%% Relative/Absolute counters... {package chngcntr}
%%%
-\iftcif@article
-\else
-\iftcif@relnum%
- \counterwithin{figure}{chapter}%
- \counterwithin{table}{chapter}%
- \counterwithin{equation}{chapter}%
-\else%
- \counterwithout{figure}{chapter}%
- \counterwithout{table}{chapter}%
- \counterwithout{equation}{chapter}%
- %\meaning\@chapter
- %\patchcmd{\@chapter}{\addtocontents{lof}{\protect\addvspace{10\p@}}}{}{}{{PATCH FAILED}}% LoF
- %\patchcmd{\@chapter}{\addtocontents{lot}{\protect\addvspace{10\p@}}}{}{}{{PATCH FAILED}}% LoT
-\fi
-\fi
+\bool_if:NF \l__ufrgscca_article_bool
+ {
+ \bool_if:NTF \l__ufrgscca_relnum_bool
+ {
+ \counterwithin{figure}{chapter}
+ \counterwithin{table}{chapter}
+ \counterwithin{equation}{chapter}
+ }
+ {
+ \counterwithout{figure}{chapter}
+ \counterwithout{table}{chapter}
+ \counterwithout{equation}{chapter}
+ }
+ }
+
+
+
%%%
%%% Page Heading format {titlesec/titleps}
%%%
-\renewpagestyle{plain}{\sethead[\ifthechapter{\sffamily\thepage}{}][][]{}{}{\ifthechapter{\sffamily\thepage}{}}}
-\newpagestyle{main}{\sethead[\ifthechapter{\sffamily\thepage}{}][][]{}{}{\ifthechapter{\sffamily\thepage}{}}}
-\newpagestyle{bibliography}{\sethead[\sffamily\thepage][][]{}{}{\sffamily\thepage}}
+\renewpagestyle{plain}
+ {
+ \sethead[\ifthechapter{\sffamily\thepage}{}] [] []
+ {}
+ {}
+ {
+ \ifthechapter{\sffamily\thepage}
+ {}
+ }
+ }
+
+\newpagestyle{main}
+ {
+ \sethead[\ifthechapter{\sffamily\thepage}{}] [] []
+ {}
+ {}
+ {
+ \ifthechapter{\sffamily\thepage}
+ {}
+ }
+ }
+
+\newpagestyle{bibliography}
+ {
+ \sethead[\sffamily\thepage] [] []
+ {}
+ {}
+ {
+ \sffamily\thepage
+ }
+ }
+
\pagestyle{main}
-\iftcif@chapternopagenum\renewpagestyle{plain}{\sethead[][][]{}{}{}}\fi
-\let\tc@temp@printbibliography\printbibliography
+\bool_if:NF \l__ufrgscca_chapternopagenum_bool
+ {
+ \renewpagestyle{plain}{\sethead[][][]{}{}{}}
+ }
+
+%%\iftcif@chapternopagenum\renewpagestyle{plain}{\sethead[][][]{}{}{}}\fi
+
+%% ????
+%\let\tc@temp@printbibliography\printbibliography
\defbibheading{bibliography}[\refname]{\nonum\chapter{#1}\pagestyle{bibliography}}
-\iftcif@pretextontoc
- \let\tc@temp@listoffigures\listoffigures
- \def\listoffigures{\tc@temp@listoffigures\addcontentsline{toc}{chapter}{\textsc\listfigurename}}
-%%
- \let\tc@temp@listoftables\listoftables
- \def\listoftables{\tc@temp@listoftables\addcontentsline{toc}{chapter}{\textsc\listtablename}}
-\fi
-%%
+\bool_if:NT \l__ufrgscca_pretextontoc_bool
+ {
+ \gappto{\listoffigures}{\addcontentsline{toc}{chapter}{\textsc\listfigurename}}
+ \gappto{\listoftables}{\addcontentsline{toc}{chapter}{\textsc\listtablename}}
+ }
-\newlength{\tc@lblwidth}
+
+\newlength{\l__ufrgscca_label_width_dim}
\NewDocumentCommand{\NewChapListEnv}{mm}{
\NewDocumentEnvironment{#1}{O{}m}{%
- \settowidth{\tc@lblwidth}{##2***}%
- \iftcif@pretextontoc
- \nonum\chapter{\textsc{#2}}%
- \else
- \notoc\chapter{\textsc{#2}}%
- \fi
- \begin{description}[tcc,noindent,leftmargin=\tc@lblwidth,labelwidth=!,##1]%
+ \settowidth{\l__ufrgscca_label_width_dim}{##2***}%
+ \bool_if:NTF \l__ufrgscca_pretextontoc_bool
+ {
+ \nonum\chapter{\textsc{#2}}
+ }
+ {
+ \notoc\chapter{\textsc{#2}}
+ }
+ \begin{description}[tcc,noindent,leftmargin=\l__ufrgscca_label_width_dim,labelwidth=!,##1]%
}{\end{description}}
}
@@ -349,25 +599,32 @@
%%% lists formating {package enumitem}
%%%
-\def\tc@enumbase{6mm}
-\def\tc@enummarging{12mm}
-\def\tc@enummargingB{18mm}
-\def\tc@enumlabelsep{2.5mm}
-\setlength{\parindent}{\tc@enummarging}
+
+\def\l__ufrgscca_enum_base_dim{6mm}
+\def\l__ufrgscca_enum_margin_dim{12mm}
+\def\l__ufrgscca_enum_margin_dimB{18mm}
+\def\l__ufrgscca_enum_label_sep_dim{2.5mm}
+\setlength{\parindent}{\l__ufrgscca_enum_margin_dim}
\SetEnumitemValue{label}{arabic}{\arabic*.}
\SetEnumitemValue{label}{roman}{\roman*.}
\SetEnumitemValue{label}{alpha}{\alph*.}
\SetEnumitemValue{label}{bullet}{\hfill\textopenbullet}
-\SetEnumitemKey{ppc}{leftmargin=\tc@enummarging,labelindent=\tc@enumbase,labelsep=\tc@enumlabelsep,labelwidth=!,style=nextline}
-\SetEnumitemKey{tcc}{leftmargin=\tc@enummarging,labelindent=\tc@enumbase,labelsep=\tc@enumlabelsep,labelwidth=!,style=nextline}
+\SetEnumitemKey{ppc}
+ {leftmargin=\l__ufrgscca_enum_margin_dim,labelindent=\l__ufrgscca_enum_base_dim,labelsep=\l__ufrgscca_enum_label_sep_dim,labelwidth=!,style=nextline}
+\SetEnumitemKey{tcc}
+ {leftmargin=\l__ufrgscca_enum_margin_dim,labelindent=\l__ufrgscca_enum_base_dim,labelsep=\l__ufrgscca_enum_label_sep_dim,labelwidth=!,style=nextline}
%
-\SetEnumitemKey{parindent}{leftmargin=\tc@enummargingB,labelindent=\tc@enummarging,labelwidth=!}
-\SetEnumitemKey{noindent}{labelindent=0pt,labelwidth=!}
-\SetEnumitemKey{tight}{leftmargin=0pt,listparindent=5mm,labelwidth=5mm}
+\SetEnumitemKey{parindent}
+ {leftmargin=\l__ufrgscca_enum_margin_dimB,labelindent=\l__ufrgscca_enum_margin_dim,labelwidth=!}
+\SetEnumitemKey{noindent}
+ {labelindent=0pt,labelwidth=!}
+\SetEnumitemKey{tight}
+ {leftmargin=0pt,listparindent=5mm,labelwidth=5mm}
%
-\SetEnumitemKey{miditemsep}{parsep=0ex,itemsep=0.4ex}
+\SetEnumitemKey{miditemsep}
+ {parsep=0ex,itemsep=0.4ex}
%\SetEnumitemKey{ppctight}{leftmargin=0pt,listparindent=5mm,labelwidth=5mm}
@@ -414,98 +671,157 @@
%%%
%%% keyword command definition (for abstract)
%%%
-\newcounter{tc@kwcounter}%
-\NewDocumentCommand{\keyword}{m}{%%
- \stepcounter{tc@kwcounter}%%
- \expandafter\gdef\csname keyw\alph{tc@kwcounter}\endcsname{#1}%%
-}%
-\NewDocumentCommand{\tcabnt@abstractkw}{}{%%
- \@ifundefined{keywa}{}{\expandafter\MakeUppercase\keywa}%%
- \@ifundefined{keywb}{}{, \keywb}%%
- \@ifundefined{keywc}{}{, \keywc}%%
- \@ifundefined{keywd}{}{, \keywd}%
- \@ifundefined{keywe}{}{, \keywe}%
- \@ifundefined{keywf}{}{, \keywf}%
- \@ifundefined{keywg}{}{, \keywg}%
- \@ifundefined{keywh}{}{, \keywh}%
- \@ifundefined{keywi}{}{, \keywi}%
- \@ifundefined{keywj}{}{, \keywj}%
-}%
-\let\tc@org@abstract\abstract
-\let\tc@org@endabstract\endabstract
+\seq_new:N \l__ufrgscca_keywords_seq
+\seq_new:N \l__ufrgscca_other_keywords_seq
+\seq_new:N \l__ufrgscca_keywords_tmpa_seq
+\seq_new:N \l__ufrgscca_keywords_tmpb_seq
+
+\NewDocumentCommand{\mainkeywords}{m}
+ {
+ \seq_set_from_clist:Nn \l__ufrgscca_keywords_tmpa_seq {#1}
+ \seq_set_eq:NN \l__ufrgscca_keywords_tmpb_seq \l__ufrgscca_keywords_seq
+ \seq_gconcat:NNN \l__ufrgscca_keywords_seq \l__ufrgscca_keywords_tmpb_seq \l__ufrgscca_keywords_tmpa_seq
+ }
+\let\keyword\mainkeywords
+
+\NewDocumentCommand{\lstkeywords}{O{,~ }}
+ {
+ \seq_sort:Nn \l__ufrgscca_keywords_seq
+ {
+ \str_compare:nNnTF { ##1 } > { ##2 }
+ { \sort_return_swapped: }
+ { \sort_return_same: }
+ }
+ \seq_use:Nn \l__ufrgscca_keywords_seq {#1}
+ }
+
+\NewDocumentCommand{\otherkeywords}{m}
+ {
+ \seq_set_from_clist:Nn \l__ufrgscca_keywords_tmpa_seq {#1}
+ \seq_set_eq:NN \l__ufrgscca_keywords_tmpb_seq \l__ufrgscca_other_keywords_seq
+ \seq_gconcat:NNN \l__ufrgscca_other_keywords_seq \l__ufrgscca_keywords_tmpb_seq \l__ufrgscca_keywords_tmpa_seq
+ }
+
+\NewDocumentCommand{\lstotherkeywords}{O{,~ }}
+ {
+ \seq_sort:Nn \l__ufrgscca_other_keywords_seq
+ {
+ \str_compare:nNnTF { ##1 } > { ##2 }
+ { \sort_return_swapped: }
+ { \sort_return_same: }
+ }
+ \seq_use:Nn \l__ufrgscca_other_keywords_seq {#1}
+ }
+
+
+\bool_if:NTF \l__ufrgscca_oldrenews_bool
+ {
+ \RenewDocumentEnvironment{abstract}{}
+ {
+ \notoc\chapter{\abstractname}
+ }
+ {
+ \par\vspace{2ex}
+ \noindent\textbf{\keywordsname :\ ~} \lstkeywords
+ }
+ }
+ {
+ \NewDocumentEnvironment{mainabstract}{}
+ {
+ \notoc\chapter{\abstractname}
+ }
+ {
+ \par\vspace{2ex}
+ \noindent\textbf{\keywordsname :\ ~} \lstkeywords
+ }
+ }
+
+\NewDocumentEnvironment{otherabstract}{O{english}}
+ {
+ \begin{otherlanguage}{#1}
+ \notoc\chapter{\abstractname}
+ }
+ {
+ \par\vspace{2ex}
+ \noindent\textbf{\keywordsname :\ ~} \lstotherkeywords
+ \end{otherlanguage}%
+ }
-\RenewDocumentEnvironment{abstract}{}{%%
- \notoc\chapter{\abstractname}%
-}{%%
- \par\vspace{2ex} %\vfill%
- \noindent\textbf{\keywordsname:} \tcabnt@abstractkw.%
-}%
-\NewDocumentEnvironment{otherabstract}{O{english}m}{%%
- \gdef\tc@otherkeywords{#2}%%
- \begin{otherlanguage}{#1}%
- \notoc\chapter{\abstractname}%
-}{%
- \par\vspace{2ex} %\vfill%
- \noindent\textbf{\keywordsname:} \tc@otherkeywords.%
- \end{otherlanguage}%
-}%
+%%
+%% if needed to be, double side.
+%%
+\cs_new_protected:Npn \__ufrgscca_clearpage:
+ {
+ \if@openright
+ \cleardoublepage
+ \else
+ \clearpage
+ \fi
+ }
+%
+\bool_if:NTF \l__ufrgscca_yearsonly_bool
+ {
+ \SetConsts
+ {
+ publ.date = {\UseConst{publ.year}} ,
+ publ.monthyear = {\UseConst{publ.month} ~ - ~ \UseConst{publ.year}} ,
+ }
+ }
+ {
+ \SetConsts
+ {
+ publ.date = {\UseConst{publ.month} ~ - ~ \UseConst{publ.year}} ,
+ publ.monthyear = {\UseConst{publ.month} ~ - ~ \UseConst{publ.year}} ,
+ }
+ }
%==============================================================================%
% date redefinition (separated month and year)
%==============================================================================%
\RenewDocumentCommand{\date}{O{\number\day}mm}{%
- \gdef\tc@publmonth{#2}%
- \gdef\tc@publyear{#3}%
- \gdef\tc@publday{\ifnum #1<10 0\fi #1}%
+ \int_compare:nNnTF {#1} < {10}
+ {
+ \SetConsts{%
+ publ.month = {#2} ,
+ publ.year = {#3} ,
+ publ.day = {0#1} ,
+ }
+ }
+ {
+ \SetConsts{%
+ publ.month = {#2} ,
+ publ.year = {#3} ,
+ publ.day = {#1} ,
+ }
+ }
}%
\date{\monthname}{\number\year}%
-%for english%
-\@namedef{captionsenglish}{%%
- \input{ufrgscca-en-base.def}%%
-}%
-\@namedef{dateenglish}{%%
- \def\today{\monthname\space\number\day,\space\number\year}%%
- \def\monthname{%%
- \ifcase\month\or%%
- January\or February\or March\or April\or%%
- May\or June\or July\or August\or September\or%%
- October\or November\or December%%
- \fi%%
- }%%
- \iftcif@yearsonly
- \def\tc@date{\tc@publyear}%%
- \else
- \def\tc@date{\tc@publmonth~\tc@publyear}%%
- \fi
-}%
-%
-%para portugues%
-\@namedef{captionsbrazilian}{%%
- \input{ufrgscca-ptBR-base.def}%%
-}%
-\@namedef{datebrazilian}{%%
- \def\today{\number\day\space de\space\monthname\space de\space\number\year}%%
- \def\monthname{%%
- \ifcase\month\or%%
- Janeiro\or Fevereiro\or Março\or Abril\or%%
- Maio\or Junho\or Julho\or Agosto\or Setembro\or%%
- Outubro\or Novembro\or Dezembro%%
- \fi%%
- }%%
- \iftcif@yearsonly
- \def\tc@date{\tc@publyear}%%
- \else
- \def\tc@date{\tc@publmonth~\tc@publyear}%%
- \fi
-}%
-%
-\def\tc@monthyeardate{\tc@publmonth~\tc@publyear}
-%
-% Mainly for 'cover pages'
-\def\tc@pagebreak{\if@openright\cleardoublepage\else\clearpage\fi}
+
+\bool_if:NTF \l__ufrgscca_english_bool
+ {
+ \def\today{\monthname\space\number\day,\space\number\year}
+ \def\monthname{
+ \ifcase\month\or
+ January\or February\or March\or April\or
+ May\or June\or July\or August\or September\or
+ October\or November\or December
+ \fi
+ }
+ }
+ {
+ \def\today{\number\day\space de\space\monthname\space de\space\number\year}
+ \def\monthname{
+ \ifcase\month\or
+ Janeiro\or Fevereiro\or Março\or Abril\or
+ Maio\or Junho\or Julho\or Agosto\or Setembro\or
+ Outubro\or Novembro\or Dezembro
+ \fi
+ }
+ }
+
diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-en-base.def b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-base-en.def
index ce18bafac42..014860c78f8 100644
--- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-en-base.def
+++ b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-base-en.def
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version 1.12 (2023/09/23)
+%% This is version {2.0} {2023/11/23}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -22,14 +22,7 @@
%% EE stands for "Engineering School"
%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym)
%%%==============================================================================
-\makeatletter
-\def\tc@tmp@packname{ufrgscca-en-base}
-\def\tc@tmp@altpackname{ufrgsccaenbase}
-\def\tc@tmp@packdesc{UFRGS/CCA English base defs}
-\def\tc@tmp@packdate{2023/09/23}
-\def\tc@tmp@packversion{1.12}
-\let\@exp\expandafter
-\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion}
+
%%%%%
%%
@@ -39,6 +32,8 @@
% \def\bibname{References}% deprecated by biber
% \def\refname{\bibname}
+% \setlocalecaption{english}{refname}{References}
+ \defbibheading{bibliography}[References]{\nonum\chapter{#1}\pagestyle{bibliography}}
\def\abstractname{Abstract}%
\def\englishabstractname{Abstract}%
\def\contentsname{Contents}%
diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-ptBR-base.def b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-base-ptBR.def
index 54ac2f8eddf..8854c1ded8e 100644
--- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-ptBR-base.def
+++ b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-base-ptBR.def
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version 1.12 (2023/09/23)
+%% This is version {2.0} {2023/11/23}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -22,14 +22,7 @@
%% EE stands for "Engineering School"
%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym)
%%%==============================================================================
-\makeatletter
-\def\tc@tmp@packname{ufrgscca-ptBR-base}
-\def\tc@tmp@altpackname{ufrgsccaptbrbase}
-\def\tc@tmp@packdesc{UFRGS/CCA Portuguese base defs}
-\def\tc@tmp@packdate{2023/09/23}
-\def\tc@tmp@packversion{1.12}
-\let\@exp\expandafter
-\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion}
+
%%%
%%
diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-coord.sty b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-coord.sty
index 55e754d97ec..ffb88727a47 100644
--- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-coord.sty
+++ b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-coord.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version 1.12 (2023/09/23)
+%% This is version {2.0} {2023/11/23}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -23,1186 +23,593 @@
%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym)
%%%==============================================================================
\NeedsTeXFormat{LaTeX2e}[2022/06/01]
-\def\tc@tmp@packname{ufrgscca-coord}
-\def\tc@tmp@altpackname{ufrgsccacoord}
-\def\tc@tmp@packdesc{UFRGS/CCA coord commands}
-\def\tc@tmp@packdate{2023/09/23}
-\def\tc@tmp@packversion{1.12}
-\let\@exp\expandafter
-\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion}
-\@exp\@exp\@exp\ProvidesPackage\@exp\@exp\@exp{\@exp\tc@tmp@packname\@exp}\@exp[\tc@tmp@packdate\space v\tc@tmp@packversion\space\tc@tmp@packdesc]
-
-\newif\iftcif@coord@emptyforms\tcif@coord@emptyformsfalse
-\DeclareKeys[ufrgscca-coord]{
- calendar-I.usage = general,
- calendar-I.if = tcif@coord@calendarI,
- calendar-II.usage = general,
- calendar-II.if = tcif@coord@calendarII,
- checklist.usage = general,
- checklist.if = tcif@coord@checklist,
- report.usage = general,
- report.if = tcif@coord@report,
- report-II.usage = general,
- report-II.if = tcif@coord@report,
- report-I.usage = general,
- report-I.if = tcif@coord@reportI,
- reportxinfo.usage = general,
- reportxinfo.if = tcif@coord@reportxinfo,
- boards.usage = general,
- boards.if = tcif@coord@boards,
- boarddates.usage = general,
- boarddates.if = tcif@coord@boarddates,
- studentlist.usage = general,
- studentlist.if = tcif@coord@studentlist,
- revforms.usage = general,
- revforms.if = tcif@coord@forms@revforms,
- referral-I.usage = general,
- referral-I.if = tcif@coord@forms@referralI,
- referral-II.usage = general,
- referral-II.if = tcif@coord@forms@referralII,
- referral.usage = general,
- referral.if = tcif@coord@forms@referralII,
- cocertificate.usage = general,
- cocertificate.if = tcif@coord@forms@cocertificate,
-}
-\ProcessKeyOptions[ufrgscca-coord]\relax
-\NewDocumentCommand{\setreports}{m}{\SetKeys[ufrgscca-coord]{#1}}
+\ProvidesExplPackage
+ {ufrgscca-coord}
+ {2023/11/23}
+ {2.0}
+ {UFRGS/CCA coord commands}
+
+
+%%%%%%%
+%%%
+%%% Just an attempt of having my packages info in a regular way
+%%% Idea being: { <pck-name> / pkg info } for each and all.
+%%%
+%%%%%%%
+\keys_define:nn { ufrgscca-coord / pkg info}
+ {
+ name .code:n = {ufrgscca-coord} ,
+ prefix .code:n = {ufrgscca} ,
+ date .code:n = {2023/11/23},
+ version .code:n = {2.0} ,
+ description .code:n = {UFRGS/CCA~ coordination~ report~ commands}
+ }
+\cs_if_exist:NF \__codedesc_pkg_info:nn
+ {
+ \cs_new_protected:Npn \__codedesc_pkg_info:nn #1#2
+ { \keys_set:nn {#1 / pkg info}{#2} }
+ }
+\cs_if_exist:NF \PkgInfo
+ { \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} } }
+\cs_if_exist:NF \PkgDescription
+ {
+ \NewDocumentCommand \PkgDescription {m}
+ {
+ \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par
+ }
+ }
+%%%%%%%
+%%% End of cut-n-paste
+%%%%%%%
+
+
+
+
+\cs_generate_variant:Nn \tl_set:Nn {Ne}
+
+\keys_define:nn { ufrgscca / coord }
+ {
+ calendar-I. bool_set:N = \l__ufrgscca_calendarI_bool ,
+ calendar-I. usage:n = general ,
+
+ calendar-II. bool_set:N = \l__ufrgscca_calendarII_bool ,
+ calendar-II. usage:n = general ,
+
+ report-I. bool_set:N = \l__ufrgscca_reportI_bool ,
+ report-I. usage:n = general ,
+
+ report-II. bool_set:N = \l__ufrgscca_reportII_bool ,
+ report-II. usage:n = general ,
+
+ checklist-I. bool_set:N = \l__ufrgscca_checklistI_bool ,
+ checklist-I. usage:n = general ,
+
+ checklist-II. bool_set:N = \l__ufrgscca_checklistII_bool ,
+ checklist-II. usage:n = general ,
+
+ boards. bool_set:N = \l__ufrgscca_boards_bool ,
+ boards. usage:n = general ,
+
+ revforms-I. bool_set:N = \l__ufrgscca_revformsI_bool ,
+ revforms-I. usage:n = general ,
+
+ revforms-II. bool_set:N = \l__ufrgscca_revformsII_bool ,
+ revforms-II. usage:n = general ,
+
+ referral-I. bool_set:N = \l__ufrgscca_referralI_bool ,
+ referral-I. usage:n = general ,
+
+ referral-II. bool_set:N = \l__ufrgscca_referralII_bool ,
+ referral-II. usage:n = general ,
+
+ cocertificate. bool_set:N = \l__ufrgscca_cocertificate_bool ,
+ cocertificate. usage:n = general ,
+ }
+
+\cs_new_protected:Npn \__ufrgscca_set_reports:n #1
+ { \keys_set:nn { ufrgscca / coord }{#1} }
+
\def\c@one#1:#2:{\csname #1\endcsname}
\def\c@two#1:#2:{\csname #1\endcsname[newpage]}
\def\tccoord@split#1:#2:#3#4#5,{#4#1:#2:}
\NewDocumentCommand{\tccoord@student@exec}{m}{\tccoord@split#1::\c@two\c@one\empty,}
\RequirePackage{longtable}
-\RequirePackage{ufrgscca-gen}
+\RequirePackage{multirow}
+
\RequirePackage{ufrgscca-core}
\RequirePackage{ufrgscca-forms}
-\RequirePackage{pgfcalendar}
-
-%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%
-\cmdfactory<coord>{boardstitle}
-\cmdfactory<coord>{boardsworklabel}
-\cmdfactory<coord>{TCCgradesNlabel,TCCgradesClabel}%
-
-\cmdfactory<coord>{calendartitle,tcccalendardesc}%
-\cmdfactory<coord>{tccreporttitle,tccreportopening,tccreportdesc,tccreportabsents,tccreportdismiss}%
-\cmdfactory<coord>{tccreferralopening}
-\cmdfactory<coord>{referralfailed,referralapproved}
-\cmdfactory<coord>{referralfailFF}
-\cmdfactory<coord>{referralexamapprovedtext,referralexamfailtext,referralfatetext}%
-\cmdfactory<coord>{referralexamapprovedtextTR,referralexamfailtextTR,referralfatetextTR}%
-\cmdfactory<coord>{boardlabel,cocertificatetitle,cocertificateopenning,cocertificatetext}%
-\cmdfactory<coord>{TCCperiod,boardstitleB,boardsOBS}%
-\cmdfactory<coord>{studentlistformtitle,studentlistactivity,studentlistdate}%
-
-\cmdfactory<coord>{advisornamegen,advisornameplural}
-\cmdfactory<coord>{tcceventAweek,tcceventBweek,tcceventCweek,tcceventDweek}
-\cmdfactory<coord>{tcceventEweek,tcceventFweek,tcceventGweek,tcceventHweek}
-\cmdfactory<coord>{tcceventIweek,tcceventJweek,tcceventKweek,tcceventLweek}
-
-
-\cmdfactory<coord>{internshipreferralopening,internshipreferralfatetext,internshipgrades,internshipreferralfailFF}
-\cmdfactory<coord>{internshipreferralexamapprovedtext,internshipreferralexamfailtext}
-\cmdfactory<coord>{internshipreferralexamhardapprovedtext,internshipreferralexamhardfailtext}
-
-
-%%% this should go to ufrgscca-coord !!!!
-
-\NewDocumentCommand{\grades}{mmmmm}{%
- \gdef\tc@TCCgradeA{#1}%
- \gdef\tc@TCCgradeB{#2}%
- \gdef\tc@TCCgradeC{#3}%
- \gdef\tc@TCCgradeD{#4}%
- \gdef\tc@TCCgradeFF{#5}%
- \gdef\tc@gradeA{#1}%
- \gdef\tc@gradeB{#2}%
- \gdef\tc@gradeC{#3}%
- \gdef\tc@gradeD{#4}%
- \gdef\tc@gradeFF{#5}%
-}%
-\let\TCCgrades\grades%
-%%% this should go to ufrgscca-coord !!!!
-
-\NewDocumentCommand{\gradesN}{mmm}{%
- \gdef\tc@TCCgradeAN{#1}%
- \gdef\tc@TCCgradeBN{#2}%
- \gdef\tc@TCCgradeCN{#3}%
- \gdef\tc@gradeAN{#1}%
- \gdef\tc@gradeBN{#2}%
- \gdef\tc@gradeCN{#3}%
-}%
-\let\TCCgradesN\gradesN
+%\RequirePackage{pgfcalendar}
+%
+
+\NewDocumentCommand{\ActivitySetNewEvent}{O{}mm}{
+ \tl_if_blank:nTF {#1}
+ {
+ \starray_new_term:nn {activity.calendar}{#2}
+ \starray_gset_prop:nnn {activity.calendar}{event}{#3}
+ }
+ {
+ \starray_new_term:nn {activity[#1].calendar}{#2}
+ \starray_gset_prop:nnn {activity[#1].calendar}{event}{#3}
+ }
+}
+
+\NewDocumentCommand{\ActivitySetEventDay}{O{}mmm}{
+ \tl_if_blank:nTF {#1}
+ {
+ \starray_gset_from_keyval:nn {activity.calendar[#2]}
+ {
+ date = {#3} ,
+ week = {#4} ,
+ }
+ }
+ {
+ \starray_gset_from_keyval:nn {activity[#1].calendar[#2]}
+ {
+ date = {#3} ,
+ week = {#4} ,
+ }
+ }
+}
-%%%%%%%%%
-%%%%%%%%% ufrgscca-coord !!!
-%%%%%%%%%
-\NewDocumentCommand{\tccoord@studentExam}{m}{%
- \expandafter\gdef\csname tc@student\Alph{tc@studentcount}Exam\endcsname{#1}%
-}%
-\NewDocumentCommand{\tccoord@studentFF}{}{%
- \expandafter\gdef\csname tc@student\Alph{tc@studentcount}FF\endcsname{1}%
- \gdef\tc@TCCff@flag{1}%
- \gdef\tc@ff@flag{1}%
-}%
-\NewDocumentCommand{\tccoord@studentDismiss}{}{%
- \expandafter\gdef\csname tc@student\Alph{tc@studentcount}Dismiss\endcsname{1}%
- \gdef\tc@TCCdismiss@flag{1}%
- \gdef\tc@dismiss@flag{1}%
-}%
-\NewDocumentCommand{\studentFate}{O{}}{%%
- \ifthenelse{\equal{#1}{C}}{%%
- \tccoord@studentExam{C}%%
- }{%%
- \ifthenelse{\equal{#1}{D}}{%%
- \tccoord@studentExam{D}%%
- }{%%
- \ifthenelse{\equal{#1}{FF}}{%%
- \tccoord@studentFF%%
- }{%%
- \ifthenelse{\equal{#1}{Dismiss}}{%%
- \tccoord@studentDismiss%%
- }{%%
- }%%
- }%%
- }%%
- }%%
-}%%
%
+\NewDocumentCommand{\studentfate}{O{}}{%%
+ \str_case:nnF {#1}
+ {
+ {C}
+ {
+ \starray_gset_from_keyval:nn {student}
+ {
+ grade = C ,
+ flag-exam = \c_true_bool ,
+ flag-graded = \c_true_bool ,
+ flag-approved = \c_true_bool ,
+ }
+ }
+ {D}
+ {
+ \starray_gset_from_keyval:nn {student}
+ {
+ grade = D ,
+ flag-exam = \c_true_bool ,
+ flag-graded = \c_true_bool ,
+ }
+ }
+ {FF}
+ {
+ \starray_gset_from_keyval:nn {student}
+ {
+ grade = FF ,
+ flag-ff = \c_true_bool ,
+ flag-graded = \c_true_bool ,
+ }
+ }
+ {dismiss}
+ {
+ \starray_gset_from_keyval:nn {student}
+ {
+ flag-dismiss = \c_true_bool ,
+ flag-graded = \c_true_bool ,
+ }
+ }
+ {none}
+ {
+ \starray_gset_from_keyval:nn {student}
+ {
+ flag-dismiss = \c_true_bool ,
+ flag-graded = \c_true_bool ,
+ }
+ }
+ }
+ { %% in case of none of above...
+ \__ufrgscca_studentgrade:
+ }
+}%%
%
-\NewDocumentCommand{\studenttimeslot}{O{}mm}{%%
- \expandafter\gdef\csname tc@student\Alph{tc@studentcount}date\endcsname{#2}%
- \expandafter\gdef\csname tc@student\Alph{tc@studentcount}time\endcsname{#3}%
- \expandafter\gdef\csname tc@student\Alph{tc@studentcount}local\endcsname{#1}%
-}%
-\let\timeslot\studenttimeslot%
+\tl_new:N \l__ufrgscca_tmpa_tl
+\tl_new:N \l__ufrgscca_tmpb_tl
+\tl_new:N \l__ufrgscca_tmpc_tl
+\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}}
+ {
+ {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}
+ }
+ {
+ \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}
+ \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}
+ }
%
-\NewDocumentCommand{\tccdate}{mm}{%%
- \expandafter\gdef\csname date:#1\endcsname{#2}%
+\NewDocumentCommand{\timeslot}{O{}mm}{%%
+ \starray_gset_from_keyval:nn {student}
+ {
+ board-local = #1 ,
+ board-date = #2 ,
+ board-time = #3 ,
+ }
}%
%
-%\def\c@one#1:#2:{\csname #1\endcsname}
-%\def\c@two#1:#2:{\csname #1\endcsname[newpage]}
-\NewDocumentCommand{\studentturnindate}{m}{\tccoord@studentdatesplit#1,}
-%23/12/2022
-\def\tccoord@studentdatesplit#1/#2/#3,{
- \pgfcalendarifdate{#3-#2-#1}{at least=\tc@internshipcommitB+1}{\tccoord@studentFF}{}
- \pgfcalendarifdate{#3-#2-#1}{between=\tc@internshipcommitA+1 and \tc@internshipcommitB}{\tccoord@studentExam{X}}{}
- \expandafter\gdef\csname tc@student\Alph{tc@studentcount}date\endcsname{#1/#2/#3}%
+\NewDocumentCommand{\studentCase}{mmmmm}{
+ \starray_term_syntax:n{student}
+ \bool_case:nF
+ {
+ {\starray_parsed_get_prop:n{flag-ff}}
+ {#5}
+ {\starray_parsed_get_prop:n{flag-exam}}
+ {
+ \bool_if:nTF{\starray_parsed_get_prop:n{flag-approved}}
+ {#3}
+ {#4}
+ }
+ }
+ {
+ \bool_if:nTF{\starray_parsed_get_prop:n{flag-approved}}
+ {#1}
+ {#2}
+ }
}
-\NewDocumentCommand{\intershipcommitdates}{mm}{%
- \tccoord@commitdatesplit#1,A,%
- \tccoord@commitdatesplit#2,B,%
-}
-\def\tccoord@commitdatesplit#1/#2/#3,#4,{
- \expandafter\xdef\csname tc@internshipcommit#4\endcsname{#3-#2-#1}%
- \expandafter\xdef\csname tc@internshipcommit#4#4\endcsname{#1/#2/#3}%
+\NewDocumentCommand{\studentDismissCase}{mm}{
+ \starray_term_syntax:n{student}
+ \bool_if:nTF {\starray_parsed_get_prop:n{flag-dismiss}}
+ {#1}
+ {#2}
}
-%%%%%%%%%
-%%%%%%%%% ufrgscca-coord !?!!
-%%%%%%%%%
-\NewDocumentCommand{\studentTCCtitle}{m}{%%
- \expandafter\gdef\csname tc@student\Alph{tc@studentcount}title\endcsname{#1}%
-}%
-\let\TCCtitle\studentTCCtitle%
-%
-%%%%%%%%%
-%%%%%%%%% ufrgscca-coord !!!
-%%%%%%%%%
-\NewDocumentCommand{\studentremark}{m}{%%
- \expandafter\gdef\csname tc@student\Alph{tc@studentcount}remark\endcsname{#1}%
-}%
-%
-
+\NewDocumentCommand{\studentremark}{m}{
+ \starray_gset_prop:nnn {student}{remarks}{#1}
+}
-%
-\NewDocumentCommand{\tccoord@checklist}{m}{\expandafter\gdef\csname tc@student\Alph{tc@studentcount}:#1\endcsname{}}%
-\NewDocumentCommand{\checklist}{m}{\forcsvlist{\tccoord@checklist}{#1}}%
-%
-\NewDocumentCommand{\addtostudent}{mm}{\@ifundefined{#1}{}{\csappto{#1.hook}{#2}}}
-%
-\NewDocumentCommand{\checkedbox}{}{\ooalign{$\square$\cr\hidewidth\raise.3ex\hbox{$\checkmark\mkern-7mu$}\hidewidth\cr}}%
-\NewDocumentCommand{\uncheckedbox}{}{$\square$}%
-\NewDocumentCommand{\tccoord@@check}{mm}{\@ifundefined{tc@student#1:#2}{\uncheckedbox}{\checkedbox}}%
-\NewDocumentCommand{\tccoord@check}{mm}{\@ifundefined{#2}{}{\tccoord@@check{#1}{\csname #2\endcsname} \csname @\csname #2\endcsname\endcsname}}%
-\NewDocumentCommand{\checkdef}{mmm}{\expandafter\gdef\csname #1\endcsname{#2}\expandafter\gdef\csname @#2\endcsname{#3}}%
-%\chekmark%
-
-%%%%%
-%%%%% ufrgscca-coord !!!!
-%%%%%
-\NewDocumentCommand{\tccoord@studentboardsnewpage}{}{% %%% see ufrgscca-core for counters...
- \expandafter\gdef\csname tc@student\Alph{tc@studentcount}BoardsNP\endcsname{1}%
-}%
-
-\NewDocumentCommand{\NewStudent}{m+m}{%%
- \expandafter\NewDocumentCommand\csname #1\endcsname{O{}}{%%
- #2%
- \csname #1.hook\endcsname%
- \@ifundefined{tccoord@studentboards##1}{}{\csname tccoord@studentboards##1\endcsname}%%
- \iftcif@coord@forms@revforms%
- \tcforms@examinersForms%
- \fi%
- \iftcif@coord@forms@referralII%
- \tccoord@TCCreferralletter%
- \fi%
- \iftcif@coord@forms@referralI%
- \tccoord@TCCIreferralletter%
- \fi%
- \iftcif@coord@forms@cocertificate%
- \tccoord@TCCcocertificateletter%
- \fi%
-%
- \@defaultboard%
- }%%
- \expandafter\NewDocumentCommand\csname #1.hook\endcsname{}{}%
-}%
+\NewDocumentCommand{\studentNewPageCase}{mm}
+ {
+ \starray_term_syntax:n{student}
+ \bool_if:nTF {\starray_parsed_get_prop:n{flag-newpage}}
+ {#1}
+ {#2}
+ }
-\NewDocumentCommand{\NewInternshipStudent}{m+m}{%%
- \expandafter\NewDocumentCommand\csname #1\endcsname{O{}}{%%
- #2%
- \csname #1.hook\endcsname%
- \iftcif@coord@forms@referralII%
- \tccoord@internshipreferalletter%
- \fi%
- }%%
- \expandafter\NewDocumentCommand\csname #1.hook\endcsname{}{}%
+\NewDocumentCommand{\studentnewpage}{O{}}{
+ \tl_if_blank:nTF {#1}
+ { \starray_gset_prop:nnn {student}{flag-newpage}{\c_true_bool} }
+ { \starray_gset_prop:nnn {student[#1]}{flag-newpage}{\c_true_bool} }
}%
-\NewDocumentCommand{\@distinctboard}{}{\def\tc@nBoard{}}%
-\NewDocumentCommand{\@defaultboard}{}{\let\tc@nBoard\undefined}%
-%
-%
-\newcounter{tc@calendareventcount}%
-\NewDocumentCommand{\tcccalendarevent}{mm}{%%
- \stepcounter{tc@calendareventcount}%%
- \expandafter\gdef\csname tc@tcccalendarevent\Alph{tc@calendareventcount}week\endcsname{#1}%%
- \expandafter\gdef\csname tc@tcccalendarevent\Alph{tc@calendareventcount}desc\endcsname{#2}%%
-}%
-\NewDocumentCommand{\tcccalendarhead}{mmm}{\gdef\tc@tcccalendarhead{#1 & #2 & #3\\}}%
-%
-\newcounter{tc@calendareventdatecount}%
-\NewDocumentCommand{\tcccalendareventdate}{m}{%%
- \stepcounter{tc@calendareventdatecount}%%
- \expandafter\gdef\csname tc@tcccalendarevent\Alph{tc@calendareventdatecount}date\endcsname{#1}%%
+\NewDocumentCommand{\boardtitle}{m}{%%
+ \SetTerms{%
+ board.title = {#1} ,
+ }
}%
-%
-\NewDocumentCommand{\tccoord@calendarlinereset}{m}{\@ifundefined{tc@tcccalendarevent#1week}{}{\csundef{tc@tcccalendarevent#1week}}}%
-%
-\NewDocumentCommand{\tcccalendarreset}{}{
- \forcsvlist{\tccoord@calendarlinereset}{A,B,C,D,E,F,G,H,I,J,K,L,M,N,O}%
- \setcounter{tc@calendareventcount}{0}%%
- \setcounter{tc@calendareventdatecount}{0}%
-}
-%
-\NewDocumentCommand{\examinergrades}{mmmO{0}}{%%
- \ifthenelse{\equal{#1}{}}{%%
- \expandafter\def\csname tc@student\Alph{tc@studentcount}@examiner\Alph{tc@examinercount}grade\endcsname{0}%
- \expandafter\def\csname tc@student\Alph{tc@studentcount}@examiner\Alph{tc@examinercount}gradeI\endcsname{0}%
- }{%
- \ifthenelse{\equal{#4}{0}}{%
- \expandafter\def\csname tc@student\Alph{tc@studentcount}@examiner\Alph{tc@examinercount}pointA\endcsname{#1}%%
- \expandafter\def\csname tc@student\Alph{tc@studentcount}@examiner\Alph{tc@examinercount}pointB\endcsname{#2}%%
- \expandafter\def\csname tc@student\Alph{tc@studentcount}@examiner\Alph{tc@examinercount}pointC\endcsname{#3}%%
- \expandafter\def\csname tc@student\Alph{tc@studentcount}@examiner\Alph{tc@examinercount}pointD\endcsname{#4}%%
- \expandafter\edef\csname tc@student\Alph{tc@studentcount}@examiner\Alph{tc@examinercount}grade\endcsname{\fpeval{round((\tc@TCCpointAweight * #1 + \tc@TCCpointBweight * #2 + \tc@TCCpointCweight * #3) / (\tc@TCCpointAweight + \tc@TCCpointBweight + \tc@TCCpointCweight),2,1)} }%
- \expandafter\edef\csname tc@student\Alph{tc@studentcount}@examiner\Alph{tc@examinercount}gradeI\endcsname{0}%
- }{%
- \expandafter\def\csname tc@student\Alph{tc@studentcount}@examiner\Alph{tc@examinercount}pointA\endcsname{\fpeval{#1}}%% * \tc@TCCIpointscale}}%%
- \expandafter\def\csname tc@student\Alph{tc@studentcount}@examiner\Alph{tc@examinercount}pointB\endcsname{\fpeval{#2}}%% * \tc@TCCIpointscale}}%%
- \expandafter\def\csname tc@student\Alph{tc@studentcount}@examiner\Alph{tc@examinercount}pointC\endcsname{\fpeval{#3}}%% * \tc@TCCIpointscale}}%%
- \expandafter\def\csname tc@student\Alph{tc@studentcount}@examiner\Alph{tc@examinercount}pointD\endcsname{\fpeval{#4}}%% * \tc@TCCIpointscale}}%%
- \expandafter\edef\csname tc@student\Alph{tc@studentcount}@examiner\Alph{tc@examinercount}grade\endcsname{0}%
- \expandafter\edef\csname tc@student\Alph{tc@studentcount}@examiner\Alph{tc@examinercount}gradeI\endcsname{\fpeval{round((\tc@TCCIpointAweight * #1 + \tc@TCCIpointBweight * #2 + \tc@TCCIpointCweight * #3 + \tc@TCCIpointDweight * #4) / (\tc@TCCIpointAweight + \tc@TCCIpointBweight + \tc@TCCIpointCweight + \tc@TCCIpointDweight),2,1)} }%
-% \expandafter\edef\csname tc@student\Alph{tc@studentcount}@examiner\Alph{tc@examinercount}gradeI\endcsname{\fpeval{round((\tc@TCCIpointAweight * #1 + \tc@TCCIpointBweight * #2 + \tc@TCCIpointCweight * #3 + \tc@TCCIpointDweight * #4) * \tc@TCCIpointscale / (\tc@TCCIpointAweight + \tc@TCCIpointBweight + \tc@TCCIpointCweight + \tc@TCCIpointDweight),2,1)} }%
- }%
- }%
-}%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% TCC calendar%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\tc@calendartab{11.5cm}%
-\NewDocumentCommand{\tccoord@TCCcalendarline}{m}{\@ifundefined{tc@tcccalendarevent#1week}{}{\textbf{\csname tc@tcccalendarevent#1date\endcsname} & \csname tc@tcccalendarevent#1week\endcsname & \csname tc@tcccalendarevent#1desc\endcsname\\\hline}}%
-%%%
-%%
-%%%
-\NewDocumentCommand{\tccoord@TCCcalendarI}{}{%
- \tc@formtopbox{\tcdef@forms@formstitleTR}{\tcdef@coord@calendartitle}%
-%
- { \footnotesize%
- \begin{center}
-%
- \resizebox{\textwidth}{!}{%%
- \begin{tabular}{ccp{\tc@calendartab}}%
- \tc@tcccalendarhead\hline%
- \forcsvlist{\tccoord@TCCcalendarline}{A,B,C,D,E,F,G,H,I,J,K,L,M,N,O}%
- \end{tabular}}%
-%
- \end{center}%
- %\if@lmodern
- \tiny
- %\fi
- \tcdef@coord@tcccalendardesc%
- }%
- \vfill%
-%
- \pagebreak%
-}%
-%
-\NewDocumentCommand{\tccoord@TCCcalendarII}{}{%
- \tc@formtopbox{\tcdef@forms@formstitle}{\tcdef@coord@calendartitle}%
-%
- { \footnotesize%
- \begin{center}
-%
- \resizebox{\textwidth}{!}{%%
- \begin{tabular}{ccp{\tc@calendartab}}%
- \tc@tcccalendarhead\hline%
- \forcsvlist{\tccoord@TCCcalendarline}{A,B,C,D,E,F,G,H,I,J,K,L,M,N,O}%
- \end{tabular}}%
-%
- \end{center}%
- %\if@lmodern
- \tiny
- %\fi
- \tcdef@coord@tcccalendardesc%
- }%
- \vfill%
-%
- \pagebreak%
-}%
-%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% Student list form%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\tc@stlistrule{65mm}%
-\def\tc@stlisttab{70mm}%
-%%%
-%%
-%%%
-\NewDocumentCommand{\tccoord@studentlistrow}{m}{%%
- \@ifundefined{tc@student#1}{\rule{\tc@stlistrule}{.1pt}}{\csname tc@student#1\endcsname}\hrulefill & \rule{\tc@stlistrule}{.1pt}\\%
+\NewDocumentCommand{\boardobs}{m}{%%
+ \SetTerms{%
+ board.obs = {#1} ,
+ }
}%
-%
-\NewDocumentCommand{\tccoord@studentlistform}{}{%
- \stepcounter{tc@studentcount}%
- \tc@formtopbox{\tcdef@forms@formstitle}{\tcdef@coord@studentlistformtitle}%
- \vspace{20mm}%
-%
- {\small%
- \begin{tabular}{p{\tc@stlisttab}@{ }p{\tc@stlisttab}}%
- \tcdef@forms@formsstudentlabelgen & \tcdef@forms@studentsignaturegen\\\hline\\[2mm]%
-%
- \forcsvlist{\tccoord@studentlistrow}{A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y}
- \end{tabular}}%
- \vfill%
-%
- \pagebreak%
-}%
-%
-%%%
-%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% student info row (for reports and referral letters)%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\tc@BoardTabA{38mm}%
-\def\tc@BoardTabB{38mm}%
-\def\tc@BoardTabC{60mm}%
-\def\tc@BoardTabD{13mm}%
-%%%
-%%
-%%%
-\NewDocumentCommand{\tccoord@studentboardrow}{m}{%%
- \@ifundefined{tc@student#1}{}{%
- \@ifundefined{tc@student#1Dismiss}{%%
- \@ifundefined{tc@student#1FF}{%%
- \@ifundefined{tc@student#1time}{}{%%
- \multirow{4}{\tc@BoardTabA}{\textbf{\csname tc@student#1\endcsname}} & \multirow{4}{\tc@BoardTabB}{{\hspace{-0.4em}\csname tc@student#1@advisor\endcsname}\ifcsdef{tc@student#1@coadvisor}{\break\csname tc@student#1@coadvisor\endcsname}{}} & \break\csname tc@student#1@examinerA\endcsname & \multirow{5}{\tc@BoardTabD}{\iftcif@coord@boarddates\else\csname tc@student#1date\endcsname\\\fi
- \csname tc@student#1time\endcsname\\[1mm]\csname tc@student#1local\endcsname
- }\\*%
- & & \csname tc@student#1@examinerB\endcsname & \\*%
- & & \csname tc@student#1@examinerC\endcsname & \\*%
- & & (\csname tc@student#1@altexaminerA\endcsname\ ) & \\*%
- \multicolumn{3}{l}{\textsc{\tcdef@coord@boardsworklabel:} \begin{minipage}{0.90\textwidth}\textit{\csname tc@student#1title\endcsname}\end{minipage}} & \\[2mm]\hline%
- }%
- }{}%
- }{}%
- }%
-}%
-%
-\NewDocumentCommand{\tccoord@testdaterow}{mm}{%%
-% \@ifundefined{tcif@coord@boarddates}{}{%%
- \iftcif@coord@boarddates%
- \@ifundefined{tc@student#2}{}{%%
- \@ifundefined{tc@student#2Dismiss}{%%
- \@ifundefined{tc@student#2FF}{%%
- \@ifundefined{tc@student#2BoardsNP}{%%
- \tccoord@@testdaterow{\csname tc@student#1date\endcsname}{\csname tc@student#2date\endcsname}%%
- }{\kill\pagebreak\tccoord@daterow{#2}}%%
- }{}%%
- }{}%%
- }%%
- \fi
- %}%%@boarddates
-}%%
-%
-\NewDocumentCommand{\tccoord@@testdaterow}{mm}{\ifthenelse{\equal{#1}{#2}}{\\[-4.35mm]\hline\\[-4mm]}{\tccoord@@daterow{#2}}}%
-\NewDocumentCommand{\tccoord@daterow}{m}{\gdef\tc@date{\csname tc@student#1date\endcsname}\tccoord@@daterow{\tc@date}}%
-\NewDocumentCommand{\tccoord@@daterow}{m}{& & \multicolumn{2}{r}{\textsc{\textbf{\csname date:#1\endcsname\ --- #1}}} \\*%
- \textsc{\tcdef@forms@formsstudentlabelgen} & \textsc{\tcdef@forms@formsadvisorlabelgen} & \textsc{\tcdef@forms@formsboardtitle} & \textsc{\tcdef@forms@formstimelabel}\\*\hline}%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% TCC Boards announce table%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newcounter{tccoord@@auxA}%
-\newcounter{tccoord@@auxB}%
-\NewDocumentCommand{\tccoord@@studenttestrow}{m}{%
- \setcounter{tccoord@@auxA}{#1}\setcounter{tccoord@@auxB}{#1}\stepcounter{tccoord@@auxB} \tccoord@studentboardrow{\Alph{tccoord@@auxA}}\tccoord@testdaterow{\Alph{tccoord@@auxA}}{\Alph{tccoord@@auxB}}%
-}%
-\NewDocumentCommand{\tccoord@TCCboards}{}{%
- \stepcounter{tc@studentcount}%
- \tc@formtopbox{\tcdef@forms@formstitle}{\tcdef@coord@TCCperiod}%
-%
- {%%
- \footnotesize\gdef\tc@date{\csname tc@studentAdate\endcsname}%
- \setlength\LTleft{-8mm} \begin{center}%
- {%%
- \begin{longtable}{p{\tc@BoardTabA}p{\tc@BoardTabB}p{\tc@BoardTabC}p{\tc@BoardTabD}}%
- \multicolumn{4}{c}{\textbf{\textsc{\tcdef@coord@boardstitle}}}\\\hline%
- \iftcif@coord@boarddates\else\textsc{\tcdef@forms@formsstudentlabelgen} & \textsc{\tcdef@forms@formsadvisorlabelgen} & \textsc{\tcdef@forms@formsboardtitle} & \textsc{\tcdef@forms@formstimelabel}\\\hline\fi%
- \endhead%
- \tccoord@testdaterow{T}{A}%
- \forcsvlist{\tccoord@@studenttestrow}{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}
- \tccoord@studentboardrow{T}% letter 'T' is 20 !
-%
- \end{longtable}%
- }%
- \end{center}%
- {\bf \tcdef@coord@boardsOBS}%
- }%
- \vfill%
- \pagebreak%
-}%
-%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% \tccoord@fate => A,B,C,D as a function of student grade%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\tccoord@fate}{m}{%
- \ifthenelse{1 = \fpeval{#1 < \tc@TCCgradeCN}}%
- {\tc@TCCgradeD}%
- {
- \ifthenelse{1 = \fpeval{#1 < \tc@TCCgradeBN}}%
- {\tc@TCCgradeC}%
- {
- \ifthenelse{1 = \fpeval{#1 < \tc@TCCgradeAN}}%
- {\tc@TCCgradeB}%
- {\tc@TCCgradeA}%
- }%
- }%
-}
-\NewDocumentCommand{\tccoord@@fate}{m}{\tccoord@fate{\csname tc@student#1Temp\endcsname}}%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% \tc@student grade => average of the 3 examiners grade%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\tccoord@studentgrade}{m}{%%
- \@ifundefined{tc@student#1}{}{%
- \expandafter\edef\csname tc@student#1Temp\endcsname{%%
-\fpeval{round((\csname tc@student#1@examinerAgrade\endcsname + \csname tc@student#1@examinerBgrade\endcsname + \csname tc@student#1@examinerCgrade\endcsname )/3,2,1)}%
- }%
- }%
-}%
-%
-%%
-% TCC-I
-% \tc@student grade => average of the 2 examiners grade%
-%%
-\NewDocumentCommand{\tccoord@studentgradeI}{m}{%%
- \@ifundefined{tc@student#1}{}{%
- \expandafter\edef\csname tc@student#1Temp\endcsname{%%
-\fpeval{round((\csname tc@student#1@examinerBgradeI\endcsname + \csname tc@student#1@examinerCgradeI\endcsname )/2,2,1)}%
- }%
- }%
-}%
-%
-\NewDocumentCommand{\tccoord@internshipstudentgrade}{m}{%
- \@ifundefined{tc@student#1}{}{%
- \expandafter\edef\csname tc@student#1Temp\endcsname{%%
- \fpeval{round((2 * (\csname tc@student#1@supervisorgradeA\endcsname + \csname tc@student#1@supervisorgradeB\endcsname) + \csname tc@student#1@tutorgrade\endcsname + \csname tc@student#1@internshipcoordgrade\endcsname )/28,2,1)}%
- }%
- }%
-}
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% examiners info (grades) for report/referral letters%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\tccoord@examinersline}{mm}{%%
-& \hspace{-0.4em}\csname tc@student#1@examiner#2\endcsname & \csname tc@student#1@examiner#2pointA\endcsname & \csname tc@student#1@examiner#2pointB\endcsname & \csname tc@student#1@examiner#2pointC\endcsname & \csname tc@student#1@examiner#2grade\endcsname &%
-}%
-%
-%%
-% TCC-I
-% examiners info (grades) for report/referral letters%
-%%
-\NewDocumentCommand{\tccoord@examinerslineI}{mm}{%%
-& \hspace{-0.4em}\csname tc@student#1@examiner#2\endcsname & \csname tc@student#1@examiner#2pointA\endcsname & \csname tc@student#1@examiner#2pointB\endcsname & \csname tc@student#1@examiner#2pointC\endcsname & \csname tc@student#1@examiner#2pointD\endcsname & \csname tc@student#1@examiner#2gradeI\endcsname &%
-}%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% student extra info (process number, ID, email) for report%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\tccoord@studentextrainfo}{m}{%%
- (\csname tc@student#1Nproc\endcsname )\ \ \csname tc@student#1ID\endcsname\ / \csname tc@student#1email\endcsname%%
-}%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% student info (all examiners, advisor, etc.) for report and referral letters.%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\tccoord@@studentrow}{m}{%
- \setcounter{tc@studentcount}{#1}%
- \tccoord@studentrow[tc@studentextrainfo]{\Alph{tc@studentcount}}%
-}%
-\NewDocumentCommand{\tccoord@studentrow}{O{}m}{%%
- \@ifundefined{tc@student#2}{}{%%
- \@ifundefined{tc@student#2FF}{%%
- \@ifundefined{tc@student#2Dismiss}{%%
- \multirow{4}{\tc@ReportTabA}{\csname tc@student#2\endcsname} %%
- \tccoord@examinersline{#2}{A}\\*%%
- \tccoord@examinersline{#2}{B}\\*%%
- \tccoord@examinersline{#2}{C}\\*%%
- & \multicolumn{4}{c}{\ifcsdef{tc@student#2@coadvisor}{\tcdef@coord@advisornameplural}{\tcdef@cover@advisorname} : \csname tc@student#2@advisor\endcsname \ifcsdef{tc@student#2@coadvisor}{ /\csname tc@student#2@coadvisor\endcsname}}{} & \textbf{\csname tc@student#2Temp\endcsname} & %%
- \textbf{\tccoord@@fate{#2}}%%
- \ifblank{#1}{\\}{\\*%%
- \multicolumn{7}{l}{\tcdef@coord@boardsworklabel: \csname tc@student#2title\endcsname}\\*%%
- \iftcif@coord@reportxinfo%
- \multicolumn{7}{l}{\tccoord@studentextrainfo{#2}}\\*%
- \ifcsdef{tc@student#2remark}{\multicolumn{6}{c}{{\bf \csname tc@student#2remark\endcsname}}\\}{}%
- \fi%
- }%%
- \hline%%
- }{%%
- }%%
- }{%%
- }%%
- }%%
-}%
-%
-%
-%%
-% TCC-I
-% student info (all examiners, advisor, etc.) for report and referral letters.%
-%%
-\NewDocumentCommand{\tccoord@@studentrowI}{m}{%
- \setcounter{tc@studentcount}{#1}%
- \tccoord@studentrowI[tc@studentextrainfo]{\Alph{tc@studentcount}}%
-}%
-\NewDocumentCommand{\tccoord@studentrowI}{O{}m}{%%
- \@ifundefined{tc@student#2}{}{%%
- \@ifundefined{tc@student#2FF}{%%
- \@ifundefined{tc@student#2Dismiss}{%%
- \multirow{3}{\tc@ReportTabA}{\csname tc@student#2\endcsname} %%
- \tccoord@examinerslineI{#2}{B}\\*%%
- \tccoord@examinerslineI{#2}{C}\\*%%
- & \multicolumn{5}{c}{\ifcsdef{tc@student#2@coadvisor}{\tcdef@coord@advisornameplural}{\tcdef@cover@advisorname} : \csname tc@student#2@advisor\endcsname \ifcsdef{tc@student#2@coadvisor}{ /\csname tc@student#2@coadvisor\endcsname}}{} & \textbf{\csname tc@student#2Temp\endcsname} & %%
- \textbf{\tccoord@@fate{#2}}%%
- \ifblank{#1}{\\}{\\*%%
- \multicolumn{8}{l}{\tcdef@coord@boardsworklabel: \csname tc@student#2title\endcsname}\\*%%
- \iftcif@coord@reportxinfo%
- \multicolumn{8}{l}{\tccoord@studentextrainfo{#2}}\\*%
- \ifcsdef{tc@student#2remark}{\multicolumn{6}{c}{{\bf \csname tc@student#2remark\endcsname}}\\}{}%
- \fi%
- }%%
- \hline%%
- }{%%
- }%%
- }{%%
- }%%
- }%%
-}%
-%
-%
-%
-\NewDocumentCommand{\tccoord@studentxinforow}{m}{%
- \multicolumn{7}{l}{\tccoord@studentextrainfo{#1}}\\*%
- \ifcsdef{tc@student#1remark}{\multicolumn{6}{c}{{\bf \csname tc@student#1remark\endcsname}}\\}{}%
-}%
-%
-%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% student FF info (report)%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\tccoord@@studentFFrow}{m}{%%
- \setcounter{tc@studentcount}{#1}%
- \tccoord@studentFFrow{\Alph{tc@studentcount}}%
-}%
-\NewDocumentCommand{\tccoord@studentFFrow}{m}{%%
- \@ifundefined{tc@student#1}{}{%%
- \@ifundefined{tc@student#1Dismiss}{%%
- \@ifundefined{tc@student#1FF}{%%
- }{\\*%%
- \multicolumn{6}{l}{\csname tc@student#1\endcsname } & \tc@TCCgradeFF\\*%%
- \iftcif@coord@reportxinfo%
- \multicolumn{6}{l}{\tccoord@studentextrainfo{#1}}\\*%
- \ifcsdef{tc@student#1remark}{\multicolumn{6}{c}{{\bf \csname tc@student#1remark\endcsname}}\\}{}%
- \fi%
- \multicolumn{6}{l}{\ifcsdef{tc@student#1@coadvisor}{\tcdef@coord@advisornameplural}{\tcdef@cover@advisorname} : \csname tc@student#1@advisor\endcsname\ifcsdef{tc@student#1@coadvisor}{ /\csname tc@student#1@coadvisor\endcsname}{}} & \\\hline%%
- }%%
- }{}%%
- }%%
-}%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% student info (report), dimiss case%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\tccoord@@studentDismissrow}{m}{%%
- \setcounter{tc@studentcount}{#1}%
- \tccoord@studentDismissrow{\Alph{tc@studentcount}}%
-}%
-\NewDocumentCommand{\tccoord@studentDismissrow}{mO{}}{%%
- \@ifundefined{tc@student#1}{}{%%
- \@ifundefined{tc@student#1FF}{%%
- \@ifundefined{tc@student#1Dismiss}{%%
- }{\ifblank{#2}{}{\setcounter{tc@studentcount}{#2}}\\*%%
- \multicolumn{6}{l}{\csname tc@student#1\endcsname} & \\*%%
- \iftcif@coord@reportxinfo%
- \multicolumn{6}{l}{\tccoord@studentextrainfo{#1}}\\*%
- \ifcsdef{tc@student#1remark}{\multicolumn{6}{c}{{\bf \csname tc@student#1remark\endcsname}}\\}{}%
- \fi%
- \multicolumn{6}{l}{\ifcsdef{tc@student#1@coadvisor}{\tcdef@coord@advisornameplural}{\tcdef@cover@advisorname} : \csname tc@student#1@advisor\endcsname\ifcsdef{tc@student#1@coadvisor}{ /\csname tc@student#1@coadvisor\endcsname}{}} & \\\hline%%
- }%%
- }{}%%
- }%%
-}%
-%
-%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% TCC report (student grades, FF, dismiss)%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\tc@ReportTabA{32mm}%
-\def\tc@ReportTabB{42mm}%
-\def\tc@ReportTabC{15mm}%
-\def\tc@ReportTabD{15mm}%
-\def\tc@ReportTabE{15mm}%
-\def\tc@ReportTabEx{15mm}%
-\def\tc@ReportTabF{8mm}%
-\def\tc@ReportTabG{12mm}%
-%%%%
-%%
-%%%%
-\NewDocumentCommand{\tccoord@TCCreport}{}{%
- \stepcounter{tc@studentcount}%
- \tc@formtopbox{\tcdef@forms@formstitle}{\tcdef@coord@tccreporttitle\ - \tcdef@coord@TCCperiod}%
- {%%
-% \footnotesize%
- \tiny%
- \forcsvlist{\tccoord@studentgrade}{A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,X,Y}%
- \begin{center}%
- \begin{longtable}{p{\tc@ReportTabA}@{\ }p{\tc@ReportTabB}@{\ }p{\tc@ReportTabC}@{\ }p{\tc@ReportTabD}@{\ }p{\tc@ReportTabE}@{\ }p{\tc@ReportTabF}@{\ }p{\tc@ReportTabG}}%
- \multicolumn{7}{c}{\tcdef@forms@formstitle\ \tcdef@coord@TCCperiod}\\\hline%
- & \tcdef@coord@boardlabel & \tc@TCCpointAlabel & \tc@TCCpointBlabel & \tc@TCCpointClabel &%
- \tcdef@coord@TCCgradesNlabel & \tcdef@coord@TCCgradesClabel\\\hline%
- \endhead%
- \forcsvlist{\tccoord@@studentrow}{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25}
- \@ifundefined{tc@TCCff@flag}{}{%
- & & & & & & \\%
- & & & & & & \\%
- \multicolumn{6}{l}{{\bf \tcdef@coord@tccreportabsents}}\\\hline%
- \forcsvlist{\tccoord@@studentFFrow}{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25}%
- }%
- \@ifundefined{tc@TCCdismiss@flag}{}{%
- & & & & & & \\%
- & & & & & & \\%
- \multicolumn{6}{l}{{\bf \tcdef@coord@tccreportdismiss}}\\\hline%
- \forcsvlist{\tccoord@@studentDismissrow}{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25}
- }%%
- \end{longtable}%%
- \end{center}%%
- } %end of footnotesize%
-
- \vfill%
- \pagebreak%
-}%
-%
-%%%%
-\NewDocumentCommand{\tccoord@TCCIreport}{}{%
- \stepcounter{tc@studentcount}%
- \tc@formtopbox{\tcdef@forms@formstitleTR}{\tcdef@coord@tccreporttitle\ - \tcdef@coord@TCCperiod}%
- {%%
-% \footnotesize%
- \tiny%
- \forcsvlist{\tccoord@studentgradeI}{A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,X,Y}%
- \begin{center}%
- \begin{longtable}{p{\tc@ReportTabA}@{\ }p{\tc@ReportTabB}@{\ }p{\tc@ReportTabC}@{\ }p{\tc@ReportTabD}@{\ }p{\tc@ReportTabE}@{\ }p{\tc@ReportTabEx}@{\ }p{\tc@ReportTabF}@{\ }p{\tc@ReportTabG}}%
- \multicolumn{7}{c}{\tcdef@forms@formstitleTR\ \tcdef@coord@TCCperiod}\\\hline%
- & \tcdef@coord@boardlabel & \tc@TCCIpointAlabel & \tc@TCCIpointBlabel & \tc@TCCIpointClabel & \tc@TCCIpointDlabel &%
- \tcdef@coord@TCCgradesNlabel & \tcdef@coord@TCCgradesClabel\\\hline%
- \endhead%
- \forcsvlist{\tccoord@@studentrowI}{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25}
- \@ifundefined{tc@TCCff@flag}{}{%
- & & & & & & \\%
- & & & & & & \\%
- \multicolumn{6}{l}{{\bf \tcdef@coord@tccreportabsents}}\\\hline%
- \forcsvlist{\tccoord@@studentFFrow}{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25}%
- }%
- \@ifundefined{tc@TCCdismiss@flag}{}{%
- & & & & & & \\%
- & & & & & & \\%
- \multicolumn{6}{l}{{\bf \tcdef@coord@tccreportdismiss}}\\\hline%
- \forcsvlist{\tccoord@@studentDismissrow}{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25}
- }%%
- \end{longtable}%%
- \end{center}%%
- } %end of footnotesize%
-
- \vfill%
- \pagebreak%
-}%
-%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% student check list row%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\tccoord@@LCcheck}{mmm}{%
- & \tccoord@check{#1}{check#2#3}%
-}%
-\NewDocumentCommand{\tccoord@@Lcheck}{mm}{%
- \forcsvlist{\tccoord@@LCcheck{#1}{#2}}{A,B,C,D,E}\\*%
-}%
-\NewDocumentCommand{\tccoord@studentcheckrow}{m}{%%
- \@ifundefined{tc@student#1}{}{%%
- \@ifundefined{tc@student#1FF}{%%
- \@ifundefined{tc@student#1Dismiss}{\\[-2ex]%%
- \multirow{4}{\tc@ReportTabA}{\csname tc@student#1\endcsname} %
- \forcsvlist{\tccoord@@Lcheck{#1}}{A,B,C,D}\hline%%
- }{}%%
- }{}%%
- }%%
+\NewDocumentCommand{\boarddate}{mm}{%%
+ \SetConsts{%
+ date:#1 = {#2} ,
+ }
}%
%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% TCC check list%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\tccoord@TCCchecklist}{}{%
- \stepcounter{tc@studentcount}%
- \tc@formtopbox{\tcdef@forms@formstitle}{Check List - \tcdef@coord@TCCperiod}%
- {%%
-% \footnotesize%
- \scriptsize%
- \setlength\LTleft{-10mm}%
- \begin{center}%
- \begin{longtable}{p{\tc@ReportTabA}lllll}%
- \\\hline%
- \endhead%
- \forcsvlist{\tccoord@studentcheckrow}{A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,X,Y}%
- \end{longtable}%%
- \end{center}%%
- } %end of footnotesize%
-
- \vfill%
- \pagebreak%
+\NewDocumentCommand{\semester}{m}{%%
+ \SetTerms{%
+ semester = {#1} ,
+ }
}%
%
-%
-%
-%
-%
-%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%
-%
-%
-%
-%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% TCC referral letters :: approved/failed/FF%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\tccoord@TCCcocertificateletter}{}{% tc@student\Alph{tc@studentcount}@#1
- \@ifundefined{tc@student\Alph{tc@studentcount}@coadvisor}{}{%
- \tc@formtopbox{\tcdef@forms@formstitle}{\tcdef@coord@cocertificatetitle}%
-
- \noindent \tcdef@coord@cocertificateopenning%
- \vfill%
-\begin{center}
-{\sc \csname tc@student\Alph{tc@studentcount}@coadvisor\endcsname}
-\end{center}
-
-\vfill
-
-\tcdef@coord@cocertificatetext
+%%%%%%\NewDocumentCommand{\studentturnindate}{m}{\tccoord@studentdatesplit#1,}
+%%%%%%%23/12/2022
+%%%%%%
+%%%%%%\def\tccoord@studentdatesplit#1/#2/#3,{
+%%%%%% \pgfcalendarifdate{#3-#2-#1}{at least=\tc@internshipcommitB+1}{\tccoord@studentFF}{}
+%%%%%% \pgfcalendarifdate{#3-#2-#1}{between=\tc@internshipcommitA+1 and \tc@internshipcommitB}{\tccoord@studentExam{X}}{}
+%%%%%% \expandafter\gdef\csname tc@student\Alph{tc@studentcount}date\endcsname{#1/#2/#3}%
+%%%%%%}
+%%%%%%
+%%%%%%\NewDocumentCommand{\intershipcommitdates}{mm}{%
+%%%%%% \tccoord@commitdatesplit#1,A,%
+%%%%%% \tccoord@commitdatesplit#2,B,%
+%%%%%%}
+%%%%%%
+%%%%%%\def\tccoord@commitdatesplit#1/#2/#3,#4,{
+%%%%%% \expandafter\xdef\csname tc@internshipcommit#4\endcsname{#3-#2-#1}%
+%%%%%% \expandafter\xdef\csname tc@internshipcommit#4#4\endcsname{#1/#2/#3}%
+%%%%%%}
- \vfill%
- \begin{flushright}%
- \tc@city, \tc@publday\ de \tc@publmonth\ de \tc@publyear .%
- \vfill %
-% \vfill%
+\cs_new_protected:Npn \__ufrgscca_checkedbox:
+ { $\checkmark$ }
- $\overline{\text{\tcdef@core@TCCcoord}}$\\%
- \tcdef@core@TCCcoordtitle%
- \vfill
- $\overline{\text{\tcdef@core@coursecoord}}$\\%
- \tcdef@core@coursecoordtitle\\%
- \tcdef@cover@course%
-
- \end{flushright}%
- \vfill%
- \pagebreak%
- }{}%
-}%
-%
-%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% referral fate :: failed or approved as per student grade%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\tccoord@referralfate}{m}{\ifthenelse{1 = \fpeval{#1 <= \tc@TCCgradeCN}}{\tcdef@coord@referralfailed}{\tcdef@coord@referralapproved}}%
-%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% TCC referral letters :: approved/failed/FF%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\tccoord@TCCreferralletter}{}{%
- \@ifundefined{tc@student\Alph{tc@studentcount}Dismiss}{%
- \tc@formtopbox{\tcdef@forms@formstitle}{\tcdef@coord@TCCperiod}%
-
- \noindent\tcdef@coord@tccreferralopening%
- \vfill%
-
- \@ifundefined{tc@student\Alph{tc@studentcount}FF}{%
- \@ifundefined{tc@student\Alph{tc@studentcount}Exam}{%
- \tccoord@studentgrade{\Alph{tc@studentcount}}%
- \tcdef@coord@referralfatetext%
-
- \vfill%
-
- {\footnotesize%
- \begin{center}%
- \resizebox{\textwidth}{!}{%
- \begin{tabular}{p{\tc@ReportTabA}@{\ }p{\tc@ReportTabB}@{\ }c@{\ }c@{\ }c@{\ }c@{\ }c}%\hline%
- & \tcdef@coord@boardlabel & \tc@TCCpointAlabel & \tc@TCCpointBlabel & \tc@TCCpointClabel &%
- \tcdef@coord@TCCgradesNlabel & \tcdef@coord@TCCgradesClabel\\\hline%
- \tccoord@studentrow{\Alph{tc@studentcount}}%
- \end{tabular}%
- }%
- \end{center}%
- }%
- }{%
- \ifthenelse{\equal{\csname tc@student\Alph{tc@studentcount}Exam\endcsname}{D}}{%
- \tcdef@coord@referralexamfailtext%
- \vfill%
- }{%
- \tcdef@coord@referralexamapprovedtext%
- \vfill%
- }%
- {%%
- \footnotesize%
- \begin{center}%
- \begin{tabular}{p{\tc@ReportTabA}@{\ }p{\tc@ReportTabB}@{\ }c}%\hline%
- & \tcdef@coord@boardlabel \\\hline%
- \multirow{3}{\tc@ReportTabA}{\csname tc@student\Alph{tc@studentcount}\endcsname} %
- &\csname tc@student\Alph{tc@studentcount}@examinerA\endcsname\\%
- &\csname tc@student\Alph{tc@studentcount}@examinerB\endcsname\\%
- &\csname tc@student\Alph{tc@studentcount}@examinerC\endcsname\\%
- \multicolumn{2}{l}{\tcdef@forms@formsadvisorlabel : \csname tc@student\Alph{tc@studentcount}@advisor\endcsname} \\\hline%
- \end{tabular}%
- \end{center}%
- }%
- }%
- }{%
- \tcdef@coord@referralfailFF%
- }%
-
- \vfill%
- \begin{flushright}%
- \tc@city, \tc@publday\ de \tc@publmonth\ de \tc@publyear .%
- \vfill %
-
- \tcdef@core@TCCcoordtitle%
- \vfill%
-
- $\overline{\text{\tcdef@core@TCCcoord}}$%
- \end{flushright}%
- \vfill%
- \pagebreak%
- }{}%
-}%
-%
+\cs_new_protected:Npn \__ufrgscca_uncheckedbox:
+ { $\square$ }
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% TCC-I referral letters :: approved/failed/FF%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\tccoord@TCCIreferralletter}{}{%
- \@ifundefined{tc@student\Alph{tc@studentcount}Dismiss}{%
- \tc@formtopbox{\tcdef@forms@formstitleTR}{\tcdef@coord@TCCperiod}%
-
- \noindent\tcdef@coord@tccreferralopening%
- \vfill%
-
- \@ifundefined{tc@student\Alph{tc@studentcount}FF}{%
- \@ifundefined{tc@student\Alph{tc@studentcount}Exam}{%
- \tccoord@studentgradeI{\Alph{tc@studentcount}}%
- \tcdef@coord@referralfatetextTR%
-
- \vfill%
-
- {\footnotesize%
- \begin{center}%
- \resizebox{\textwidth}{!}{%
- \begin{tabular}{p{\tc@ReportTabA}@{\ }p{\tc@ReportTabB}@{\ }c@{\ }c@{\ }c@{\ }c@{\ }c@{\ }c}%\hline%
- & \tcdef@coord@boardlabel & \tc@TCCIpointAlabel & \tc@TCCIpointBlabel & \tc@TCCIpointClabel & \tc@TCCIpointDlabel &%
- \tcdef@coord@TCCgradesNlabel & \tcdef@coord@TCCgradesClabel\\\hline%
- \tccoord@studentrowI{\Alph{tc@studentcount}}%
- \end{tabular}%
- }%
- \end{center}%
- }%
- }{%
- \ifthenelse{\equal{\csname tc@student\Alph{tc@studentcount}Exam\endcsname}{D}}{%
- \tcdef@coord@referralexamfailtextTR%
- \vfill%
- }{%
- \tcdef@coord@referralexamapprovedtextTR%
- \vfill%
- }%
- {%%
- \footnotesize%
- \begin{center}%
- \begin{tabular}{p{\tc@ReportTabA}@{\ }p{\tc@ReportTabB}@{\ }c}%\hline%
- & \tcdef@coord@boardlabel \\\hline%
- \multirow{3}{\tc@ReportTabA}{\csname tc@student\Alph{tc@studentcount}\endcsname} %
- &\csname tc@student\Alph{tc@studentcount}@examinerB\endcsname\\%
- &\csname tc@student\Alph{tc@studentcount}@examinerC\endcsname\\%
- \multicolumn{2}{l}{\tcdef@forms@formsadvisorlabel : \csname tc@student\Alph{tc@studentcount}@advisor\endcsname} \\\hline%
- \end{tabular}%
- \end{center}%
- }%
- }%
- }{%
- \tcdef@coord@referralfailFF%
- }%
-
- \vfill%
- \begin{flushright}%
- \tc@city, \tc@publday\ de \tc@publmonth\ de \tc@publyear .%
- \vfill %
-
- \tcdef@core@TCCIcoordtitle%
- \vfill%
-
- $\overline{\text{\tcdef@core@TCCcoord}}$%
- \end{flushright}%
- \vfill%
- \pagebreak%
- }{}%
-}%
-%
+\cs_generate_variant:Nn \starray_gset_prop:nnn {nne}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% Internship referal letter%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\tccoord@internshipreferalletter}{}{%
- \@ifundefined{tc@student\Alph{tc@studentcount}Dismiss}{%
- \tc@formtopbox{\tcdef@forms@formsinternshiptitle}{}%
-
- \noindent\tcdef@coord@internshipreferralopening%
- \vfill%
- \tccoord@internshipstudentgrade{\Alph{tc@studentcount}}
-
- \@ifundefined{tc@student\Alph{tc@studentcount}FF}{%
- \@ifundefined{tc@student\Alph{tc@studentcount}Exam}{%
- \tcdef@coord@internshipreferralfatetext
-
- \vfill%
- \tcdef@coord@internshipgrades%
- }{
- %%% in Exam...
- \ifthenelse{\equal{\csname tc@student\Alph{tc@studentcount}Exam\endcsname}{X}}{%..report past due date
- \ifthenelse{1 = \fpeval{\tccore@@ref{student}{Temp} < \tc@TCCgradeCN}}{%
- \tccoord@studentExam{D}%
- \tcdef@coord@internshipreferralexamfailtext
- \vfill%
- \tcdef@coord@internshipgrades%
- \vfill%
- }{%
- \tccoord@studentExam{C}%
- \tcdef@coord@internshipreferralexamapprovedtext
- \vfill%
- \tcdef@coord@internshipgrades%
- \vfill%
+\NewDocumentCommand{\examinergrades}{mmmO{}}{
+ \tl_if_blank:nTF {#1}
+ { \starray_gset_prop:nnn {student.reviewer}{grade}{0} }
+ {
+ \tl_if_blank:nTF {#4}
+ { %% 3 grades, TCC II
+ \starray_gset_from_keyval:nn {student.reviewer}
+ {
+ pointA = #1 ,
+ pointB = #2 ,
+ pointC = #3 ,
+ gradetype = 2 ,
+ }
+ \starray_gset_prop:nne {student.reviewer}{grade}
+ {%
+ \fpeval{round((#1 * \UseConst{TCC-II.weightA} + #2 * \UseConst{TCC-II.weightB} + #3 * \UseConst{TCC-II.weightC}) / ( \UseConst{TCC-II.weightA} + \UseConst{TCC-II.weightB} + \UseConst{TCC-II.weightC}) , 2 , 1) }
+ }
+ }
+ { %% 4 grades, TCC I
+ \starray_gset_from_keyval:nn {student.reviewer}
+ {
+ pointA = #1 ,
+ pointB = #2 ,
+ pointC = #3 ,
+ pointD = #4 ,
+ gradetype = 1 ,
+ }
+ \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) }
+ }
+
}
- }{%%... in Exam due 'report form'
- \ifthenelse{\equal{\csname tc@student\Alph{tc@studentcount}Exam\endcsname}{D}}{%
- \tcdef@coord@internshipreferralexamhardfailtext
- \vfill%
- \tcdef@coord@internshipgrades%
- \vfill%
- }{%
- \tcdef@coord@internshipreferralexamhardapprovedtext
- \vfill%
- \tcdef@coord@internshipgrades%
- \vfill%
- }%
- }
}
- }{
- %%% FF... failed/report not delivered.
- \tcdef@coord@internshipreferralfailFF
- }
+
+}
- \vfill%
+\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}
+
+ \seq_gset_from_clist:cn {l__ufrgscca_#2_seq}{#3}
+ \str_case:nn {#1}
+ {
+ {tcc}
+ {
+ \seq_map_tokens:cn {l__ufrgscca_#2_seq} {\__ufrgscca_grade:n}
+ \seq_map_tokens:cn {l__ufrgscca_#2_seq} {\__ufrgscca_listclassify:nn {#2}}
+ }
+ {tccI}
+ {
+ \seq_map_tokens:cn {l__ufrgscca_#2_seq} {\__ufrgscca_grade:n}
+ \seq_map_tokens:cn {l__ufrgscca_#2_seq} {\__ufrgscca_listclassify:nn {#2}}
+ }
+ {tccII}
+ {
+ \seq_map_tokens:cn {l__ufrgscca_#2_seq} {\__ufrgscca_grade:n}
+ \seq_map_tokens:cn {l__ufrgscca_#2_seq} {\__ufrgscca_listclassify:nn {#2}}
+ }
+ {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}}
+ }
+ }
+}
- \vfill%
-\begin{flushright}%
- \tc@city, \tc@publday\ de \tc@publmonth\ de \tc@publyear .%
- \vfill %
+\cs_new_protected:Npn \__ufrgscca_grade:n #1
+ {
+ \starray_set_iter_from_hash:nn {student}{#1}
+ \starray_term_syntax:n {student[#1]}
+ \bool_if:nF {\starray_parsed_get_prop:n {flag-graded}}
+ { \__ufrgscca_studentgrade: }
+ }
- \tcdef@core@internshipcoordtitle%
- \vfill%
- $\overline{\text{\tcdef@core@internshipcoord}}$%
-\end{flushright}%
-\vfill%
+\cs_new_protected:Npn \__ufrgscca_listclassify:nn #1#2
+ {
+ \starray_set_iter_from_hash:nn {student}{#2}
+ \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}}
+ }
+ {\seq_gput_right:cn {l__ufrgscca_#1_graded_seq}{#2}}
+
+ }
-\pagebreak%
-}{}
+\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:NT \l__ufrgscca_calendarI_bool
+ { \MakeForm{calendar-I} }
+ \bool_if:NT \l__ufrgscca_calendarII_bool
+ { \MakeForm{calendar-II} }
+ \bool_if:NT \l__ufrgscca_reportI_bool
+ { \MakeForm{report-I} }
+ \bool_if:NT \l__ufrgscca_reportII_bool
+ { \MakeForm{report-II} }
+ \bool_if:NT \l__ufrgscca_checklistI_bool
+ { \MakeForm{checklist-I} }
+ \bool_if:NT \l__ufrgscca_checklistII_bool
+ { \MakeForm{checklist-II} }
+ \bool_if:NT \l__ufrgscca_boards_bool
+ { \MakeForm{boards} }
+ \seq_map_inline:cn {l__ufrgscca_baselist_seq}
+ {
+ \studentselect{##1}
+ \bool_if:NT \l__ufrgscca_cocertificate_bool
+ {
+ \studentCoadvCase
+ {\MakeForm{cocertificate}}
+ {}
+ }
+ \bool_if:NT \l__ufrgscca_referralI_bool
+ {
+ \studentDismissCase
+ {}
+ { \MakeForm{referral-I} }
+ }
+ \bool_if:NT \l__ufrgscca_revformsI_bool
+ {
+ \SetReviewer{2}
+ \MakeForm{examinersform-I}
+ \SetReviewer{3}
+ \MakeForm{examinersform-I}
+ \MakeForm{rectifyapproval-I}
+ }
+ \bool_if:NT \l__ufrgscca_referralII_bool
+ {
+ \MakeForm{referral-II}
+ }
+ \bool_if:NT \l__ufrgscca_revformsII_bool
+ {
+ \SetReviewer{1}
+ \MakeForm{examinersform-II}
+ \MakeForm{correctionsform-II}
+ \SetReviewer{2}
+ \MakeForm{examinersform-II}
+ \MakeForm{correctionsform-II}
+ \SetReviewer{3}
+ \MakeForm{examinersform-II}
+ \MakeForm{correctionsform-II}
+ \MakeForm{rectifyapproval-II}
+ }
+ }
+ }
}
-%
-%
-%
+\prop_new:N \l__ufrgscca_check_prop
+\prop_new:N \l__ufrgscca_checkA_prop
+\prop_new:N \l__ufrgscca_checkB_prop
+\prop_new:N \l__ufrgscca_checkref_prop
+\NewDocumentCommand{\checkdef}{mmm}{
+ \starray_get_prop:nnN {activity}{chkmarked}\l__ufrgscca_check_prop
+ \prop_gput:Nnn \l__ufrgscca_check_prop {#1}{\__ufrgscca_checkedbox:~\ #3}
+ \starray_gset_prop:nnV {activity}{chkmarked}\l__ufrgscca_check_prop
-\NewDocumentCommand{\tccoord@calendarfill}{}{%
-%
- \@ifundefined{tc@tcccalendareventdateh}{\tcccalendareventdate{---}}{}%
- \@ifundefined{tc@tcccalendareventdateh}{\tcccalendareventdate{---}}{}%
- \@ifundefined{tc@tcccalendareventdateh}{\tcccalendareventdate{---}}{}%
- \@ifundefined{tc@tcccalendareventdateh}{\tcccalendareventdate{---}}{}%
- \@ifundefined{tc@tcccalendareventdateh}{\tcccalendareventdate{---}}{}%
- \@ifundefined{tc@tcccalendareventdateh}{\tcccalendareventdate{---}}{}%
- \@ifundefined{tc@tcccalendareventdateh}{\tcccalendareventdate{---}}{}%
- \@ifundefined{tc@tcccalendareventdateh}{\tcccalendareventdate{---}}{}%
+ \starray_get_prop:nnN {activity}{chkunmarked}\l__ufrgscca_check_prop
+ \prop_gput:Nnn \l__ufrgscca_check_prop {#1}{\__ufrgscca_uncheckedbox:~\ #3}
+ \starray_gset_prop:nnV {activity}{chkunmarked}\l__ufrgscca_check_prop
+
+ \starray_get_prop:nnN {activity}{chkref}\l__ufrgscca_check_prop
+ \prop_gput:Nnn \l__ufrgscca_check_prop {#2}{#1}
+ \starray_gset_prop:nnV {activity}{chkref}\l__ufrgscca_check_prop
}
+\cs_generate_variant:Nn \prop_gput:Nnn {Nee}
-\NewDocumentCommand{\setstudentlist}{mm}{\tcgen@cdef<coord>{list#1}{#2}}
-\NewDocumentCommand{\tcreports}{O{}m}{%%
- \setreports{#1}
- \tccoord@calendarfill%
- \iftcif@coord@calendarI%
- \tccoord@TCCcalendarI%
- \fi%
- \iftcif@coord@calendarII%
- \tccoord@TCCcalendarII%
- \fi%
- \@ifundefined{tcdef@coord@list#2}{}{%
- \expandafter\expandafter\expandafter\forcsvlist\expandafter\expandafter\expandafter\tccoord@student@exec\expandafter\expandafter\expandafter{\csname tcdef@coord@list#2\endcsname}
- }
- \iftcif@coord@checklist%
- \tccoord@TCCchecklist%
- \fi%
- \iftcif@coord@reportI%
- \tccoord@TCCIreport%
- \fi%
- \iftcif@coord@report%
- \tccoord@TCCreport%
- \fi%
- \iftcif@coord@boards%
- \tccoord@TCCboards%
- \fi%
- \iftcif@coord@studentlist%
- \tccoord@studentlistform%
- \fi%
-}%%
-
-
-\NewDocumentCommand{\internshipreports}{O{}m}{%%
- \setreports{#1}
- \@ifundefined{tcdef@coord@list#2}{}{%
- \expandafter\expandafter\expandafter\forcsvlist\expandafter\expandafter\expandafter\tccoord@student@exec\expandafter\expandafter\expandafter{\csname tcdef@coord@list#2\endcsname}
+\tl_new:N \l__ufrgscca_checkB_tl
+\tl_new:N \l__ufrgscca_checkref_tl
+\NewDocumentCommand{\checklist}{O{}m}{
+ \tl_if_blank:nF {#1}
+ { \starray_set_iter_from_hash:nn {activity}{#1} }
+ \starray_get_prop:nnN {student}{checklist}\l__ufrgscca_check_prop
+ \starray_get_prop:nnN {activity}{chkmarked}\l__ufrgscca_checkB_prop
+ \starray_get_prop:nnN {activity}{chkref}\l__ufrgscca_checkref_prop
+ \clist_map_inline:nn {#2}
+ {
+ \prop_get:NnNT \l__ufrgscca_checkref_prop {##1} \l__ufrgscca_checkref_tl
+ {
+ \prop_get:NeN \l__ufrgscca_checkB_prop {\l__ufrgscca_checkref_tl} \l__ufrgscca_checkB_tl
+ \prop_gput:Nee \l__ufrgscca_check_prop {\l__ufrgscca_checkref_tl} {\l__ufrgscca_checkB_tl}
+ }
}
- \iftcif@coord@checklist%
- \tccoord@TCCchecklist%
- \fi%
- \iftcif@coord@report%
- \tccoord@TCCreport%
- \fi%
-}%%
-
+ \starray_gset_prop:nnV {student}{checklist}{\l__ufrgscca_check_prop}
+}
-%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%
-%
-\iftcif@english%
-\input{ufrgscca-en-coord.def}%
-\else%
-\input{ufrgscca-ptBR-coord.def}%
-\fi%
+\prop_new:N \l__ufrgscca_check_list_prop
+\tl_new:N \l__ufrgscca_tmpx_tl
+\tl_new:N \l__ufrgscca_tmpy_tl
+\tl_new:N \l__ufrgscca_table_tl
+
+
+\cs_new_protected:Npn \__ufrgscca_checktable_lines:nn #1#2 {
+ \starray_get_prop:nnN {activity} {chkunmarked} \l__ufrgscca_checkA_prop
+ \starray_get_prop:nnN {student}{checklist}\l__ufrgscca_check_prop
+
+ \prop_map_inline:Nn \l__ufrgscca_check_prop
+ { \prop_gput:Nnn \l__ufrgscca_checkA_prop {##1}{##2} }
+
+ \tl_gclear:N \l__ufrgscca_table_tl
+ \clist_map_inline:nn {#1}
+ {
+ \tl_gclear:N \l_tmpa_tl
+ \clist_map_inline:nn {#2}
+ {
+ \tl_gset:Nn \l__ufrgscca_tmpx_tl {##1####1}
+ \prop_get:NeNTF \l__ufrgscca_checkA_prop {\l__ufrgscca_tmpx_tl} \l__ufrgscca_tmpy_tl
+ {\tl_gput_right:Ne \l__ufrgscca_table_tl {\l_tmpa_tl~ \l__ufrgscca_tmpy_tl}}
+ {\tl_gput_right:Ne \l__ufrgscca_table_tl {\l_tmpa_tl~ }}
+ \tl_gset:Nn \l_tmpa_tl {~&~}
+ }
+ \tl_put_right:Nn \l__ufrgscca_table_tl {\\*}
+ }
+ \l__ufrgscca_table_tl
+}
diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-core.sty b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-core.sty
index 43aed0aedea..1972c1d2501 100644
--- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-core.sty
+++ b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-core.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version 1.12 (2023/09/23)
+%% This is version {2.0} {2023/11/23}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -23,288 +23,573 @@
%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym)
%%%==============================================================================
\NeedsTeXFormat{LaTeX2e}[2022/06/01]
-\def\tc@tmp@packname{ufrgscca-core}
-\def\tc@tmp@altpackname{ufrgsccacore}
-\def\tc@tmp@packdesc{UFRGS/CCA core commands}
-\def\tc@tmp@packdate{2023/09/23}
-\def\tc@tmp@packversion{1.12}
-\let\@exp\expandafter
-\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion}
-\@exp\@exp\@exp\ProvidesPackage\@exp\@exp\@exp{\@exp\tc@tmp@packname\@exp}\@exp[\tc@tmp@packdate\space v\tc@tmp@packversion\space\tc@tmp@packdesc]
+
+
+\ProvidesExplPackage
+ {ufrgscca-core}
+ {2023/11/23}
+ {2.0}
+ {UFRGS/CCA core commands}
+
+
+%%%%%%%
+%%%
+%%% Just an attempt of having my packages info in a regular way
+%%% Idea being: { <pck-name> / pkg info } for each and all.
+%%%
+%%%%%%%
+\keys_define:nn { ufrgscca-core / pkg info}
+ {
+ name .code:n = {ufrgscca-core} ,
+ prefix .code:n = {ufrgscca} ,
+ date .code:n = {2023/11/23},
+ version .code:n = {2.0} ,
+ description .code:n = {UFRGS/CCA~core~commands/data}
+ }
+\cs_if_exist:NF \__codedesc_pkg_info:nn
+ {
+ \cs_new_protected:Npn \__codedesc_pkg_info:nn #1#2
+ { \keys_set:nn {#1 / pkg info}{#2} }
+ }
+\cs_if_exist:NF \PkgInfo
+ { \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} } }
+\cs_if_exist:NF \PkgDescription
+ {
+ \NewDocumentCommand \PkgDescription {m}
+ {
+ \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par
+ }
+ }
+%%%%%%%
+%%% End of cut-n-paste
+%%%%%%%
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
-% student commands%
+% starray based student commands%
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%
-\NewDocumentCommand{\tccore@articledefx}{mmmmm}{%
- \expandafter\gdef\csname #1article\endcsname{#2}%
- \expandafter\gdef\csname #1narticle\endcsname{#3}%
- \expandafter\gdef\csname #1Article\endcsname{#4}%
- \expandafter\gdef\csname #1Narticle\endcsname{#5}%
-}%
-\NewDocumentCommand{\tccore@articledefn}{m}{%
- \tccore@articledefx{#1}{o(a)}{(a)}{O(A)}{(A)}%
-}%
-\NewDocumentCommand{\tccore@articledefm}{m}{%
- \tccore@articledefx{#1}{o}{}{O}{}%
-}%
-\NewDocumentCommand{\tccore@articledeff}{m}{%
- \tccore@articledefx{#1}{a}{a}{A}{A}%
-}%
-\NewDocumentCommand{\tccore@articledef}{mm}{%
- \ifthenelse{\equal{#2}{m}}{%%
- \tccore@articledefm{#1}%%
- }{%%
- \ifthenelse{\equal{#2}{f}}{%%
- \tccore@articledeff{#1}%%
- }{%%
- \tccore@articledefn{#1}%%
- }%%
- }%%
-}%
+%%%%\def\tc@IDrule{30mm}%
+%%%%\def\tc@emailrule{40mm}%
+%%%%\def\tc@namerule{50mm}%
+%%%%\def\tc@titlerule{40mm}%
+%%%%\def\tc@phonerule{20mm}%
+%%%%\def\tc@agreerule{25mm}%
+%%%%\def\tc@daterule{15mm}%
-%
-% Exception:: those are only used at ufrgscca-forms, but, it make sense to be used at 'local.tex'
-%
-\cmdfactory<core>{formlocal}
-\cmdfactory<core>{tccbrief,tcccoadvisorbrief,tccadvisorsreview}
-\cmdfactory<core>{tccArgument}
-
-\cmdfactory<core>{TCCcoordtitle,TCCIcoordtitle}
-\NewDocumentCommand{\TCCcoord}{mO{}}{%
- \tcgen@cdef<core>{TCCcoord}{#1}%
- \tccore@articledef{tcdef@core@TCCcoord}{#2}%%
+\dim_new:N \l__ufrgscca_ID_rule_dim
+\dim_new:N \l__ufrgscca_email_rule_dim
+\dim_new:N \l__ufrgscca_name_rule_dim
+\dim_new:N \l__ufrgscca_title_rule_dim
+\dim_new:N \l__ufrgscca_worktitle_rule_dim
+\dim_new:N \l__ufrgscca_phone_rule_dim
+\dim_new:N \l__ufrgscca_agree_rule_dim
+\dim_new:N \l__ufrgscca_date_rule_dim
+\dim_new:N \l__ufrgscca_register_rule_dim
+\dim_new:N \l__ufrgscca_office_rule_dim
+\dim_new:N \l__ufrgscca_field_rule_dim
+
+\dim_set:Nn \l__ufrgscca_ID_rule_dim {30mm}
+\dim_set:Nn \l__ufrgscca_email_rule_dim {40mm}
+\dim_set:Nn \l__ufrgscca_name_rule_dim {50mm}
+\dim_set:Nn \l__ufrgscca_title_rule_dim {30mm}
+\dim_set:Nn \l__ufrgscca_worktitle_rule_dim {60mm}
+\dim_set:Nn \l__ufrgscca_phone_rule_dim {20mm}
+\dim_set:Nn \l__ufrgscca_agree_rule_dim {25mm}
+\dim_set:Nn \l__ufrgscca_date_rule_dim {15mm}
+\dim_set:Nn \l__ufrgscca_register_rule_dim {20mm}
+\dim_set:Nn \l__ufrgscca_office_rule_dim {25mm}
+\dim_set:Nn \l__ufrgscca_field_rule_dim {30mm}
+
+
+
+
+\starray_new:n {student}
+\starray_def_from_keyval:nn {student}
+ {
+ first = ,
+ last = ,
+ name = \rule{\l__ufrgscca_name_rule_dim}{.1pt} ,
+ Nproc = \rule{\l__ufrgscca_ID_rule_dim}{.1pt} ,
+ ID = \rule{\l__ufrgscca_ID_rule_dim}{.1pt} ,
+ email = \rule{\l__ufrgscca_email_rule_dim}{.1pt} ,
+ worktitle = \rule{\l__ufrgscca_worktitle_rule_dim}{.1pt} ,
+ article = o(a) ,
+ Article = O(A) ,
+ narticle = (a) ,
+ Narticle = (A) ,
+ carticle = ao(à) ,
+ Carticle = Ao(À) ,
+ remarks = ,
+ 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} ,
+ gradeavrg = 0,
+ grade = ,
+ flag-graded = \c_false_bool , %%% IF gradeavrg AND finalgrade already calculated (or defined)
+ flag-exam = \c_false_bool ,
+ flag-ff = \c_false_bool ,
+ flag-dismiss = \c_false_bool , %%% IF it was the 1st semester.
+ flag-newpage = \c_false_bool , %% if it should go in a new page (board)
+ flag-distinctboard = \c_false_bool , %% if advisor isn't in the board
+ flag-approved = \c_false_bool ,
+ flag-coadvisor = \c_false_bool ,
+ advisor . struct = {
+ first = ,
+ last = ,
+ name = \rule{\l__ufrgscca_name_rule_dim}{.1pt},
+ institution = \rule{\l__ufrgscca_name_rule_dim}{.1pt},
+ title = \rule{\l__ufrgscca_title_rule_dim}{.1pt} ,
+ email = \rule{\l__ufrgscca_email_rule_dim}{.1pt} ,
+ phone = \rule{\l__ufrgscca_phone_rule_dim}{.1pt} ,
+ article = o(a) ,
+ Article = O(A) ,
+ narticle = (a) ,
+ Narticle = (A) ,
+ carticle = ao(à) ,
+ Carticle = Ao(À) ,
+ assessment = \BlankLines{6}
+ } ,
+ coadvisor . struct = {
+ first = ,
+ last = ,
+ name = \rule{\l__ufrgscca_name_rule_dim}{.1pt},
+ institution = \rule{\l__ufrgscca_name_rule_dim}{.1pt},
+ title = \rule{\l__ufrgscca_title_rule_dim}{.1pt} ,
+ email = \rule{\l__ufrgscca_email_rule_dim}{.1pt} ,
+ phone = \rule{\l__ufrgscca_phone_rule_dim}{.1pt} ,
+ article = o(a) ,
+ Article = O(A) ,
+ narticle = (a) ,
+ Narticle = (A) ,
+ carticle = ao(à) ,
+ Carticle = Ao(À) ,
+ reason = \BlankLines{6}
+ } ,
+ reviewer . struct = {
+ first = ,
+ last = ,
+ name = \rule{\l__ufrgscca_name_rule_dim}{.1pt},
+ institution = \rule{\l__ufrgscca_name_rule_dim}{.1pt},
+ title = \rule{\l__ufrgscca_title_rule_dim}{.1pt} ,
+ email = \rule{\l__ufrgscca_email_rule_dim}{.1pt} ,
+ phone = \rule{\l__ufrgscca_phone_rule_dim}{.1pt} ,
+ article = o(a) ,
+ Article = O(A) ,
+ narticle = (a) ,
+ Narticle = (A) ,
+ carticle = ao(à) ,
+ Carticle = Ao(À) ,
+ pointA = ,
+ pointB = ,
+ pointC = ,
+ pointD = ,
+ grade = 0 ,
+ gradetype = ,
+ } ,
+ altreviewer . struct = {
+ first = ,
+ last = ,
+ name = \rule{\l__ufrgscca_name_rule_dim}{.1pt},
+ institution = \rule{\l__ufrgscca_name_rule_dim}{.1pt},
+ title = \rule{\l__ufrgscca_title_rule_dim}{.1pt} ,
+ email = \rule{\l__ufrgscca_email_rule_dim}{.1pt} ,
+ phone = \rule{\l__ufrgscca_phone_rule_dim}{.1pt} ,
+ article = o(a) ,
+ Article = O(A) ,
+ narticle = (a) ,
+ Narticle = (A) ,
+ carticle = ao(à) ,
+ Carticle = Ao(À)
+ } ,
+ internship . struct = {
+ company = \rule{\l__ufrgscca_name_rule_dim}{.1pt},
+ field = \rule{\l__ufrgscca_field_rule_dim}{.1pt},
+ start = \rule{\l__ufrgscca_date_rule_dim}{.1pt},
+ end = \rule{\l__ufrgscca_date_rule_dim}{.1pt},
+ length = \rule{\l__ufrgscca_date_rule_dim}{.1pt},
+ } ,
+ tutor . struct = {
+ first = ,
+ last = ,
+ name = \rule{\l__ufrgscca_name_rule_dim}{.1pt},
+ title = \rule{\l__ufrgscca_title_rule_dim}{.1pt} ,
+ email = \rule{\l__ufrgscca_email_rule_dim}{.1pt} ,
+ phone = \rule{\l__ufrgscca_phone_rule_dim}{.1pt} ,
+ article = o(a) ,
+ Article = O(A) ,
+ narticle = (a) ,
+ Narticle = (A) ,
+ carticle = ao(à) ,
+ Carticle = Ao(À)
+ } ,
+ supervisor . struct = {
+ first = ,
+ last = ,
+ name = \rule{\l__ufrgscca_name_rule_dim}{.1pt},
+ register = \rule{\l__ufrgscca_name_rule_dim}{.1pt},
+ title = \rule{\l__ufrgscca_title_rule_dim}{.1pt} ,
+ office = \rule{\l__ufrgscca_office_rule_dim}{.1pt} ,
+ email = \rule{\l__ufrgscca_email_rule_dim}{.1pt} ,
+ phone = \rule{\l__ufrgscca_phone_rule_dim}{.1pt} ,
+ article = o(a) ,
+ Article = O(A) ,
+ narticle = (a) ,
+ Narticle = (A) ,
+ carticle = ao(à) ,
+ Carticle = Ao(À)
+ } ,
+ }
+
+
+\prop_new:N \l__ufrgscca_forms_prop
+\starray_new:n {activity}
+\starray_def_from_keyval:nn {activity}
+ {
+ name = Nome~ da~ Atividade ,
+ acronym = ACRO ,
+ coord . struct =
+ {
+ name = Nome~ do(a)~ Coordenador(a) ,
+ title = Coordenador(a)~ de ,
+ article = o(a) ,
+ Article = O(A) ,
+ narticle = (a) ,
+ Narticle = (A) ,
+ carticle = ao(à) ,
+ Carticle = Ao(À)
+ } ,
+ calendar . struct =
+ {
+ date = {-Dia-} ,
+ week = {-semana-} ,
+ event = {-Descrição-} ,
+ } ,
+ chkmarked = , %%% This shall be a prop list of marked itens
+ chkunmarked = , %%% This shall be a prop list of unmarked itens
+ chkref = , %%% This shall be a prop list of ref itens
+ }
+
+\NewDocumentCommand{\NewActivity}{m} {
+ \starray_new_term:nn {activity}{#1}
+ \starray_new_term:nn {activity.coord}{}
+ \starray_gset_prop:nnV {activity}{checkmarked}\c_empty_prop
+ \starray_gset_prop:nnV {activity}{checkunmarked}\c_empty_prop
+ \starray_gset_prop:nnV {activity}{checkref}\c_empty_prop
}
-\cmdfactory<core>{internshipcoordtitle}
-\NewDocumentCommand{\internshipcoord}{mO{}}{%
- \tcgen@cdef<core>{internshipcoord}{#1}%
- \tccore@articledef{tcdef@core@internshipcoord}{#2}%%
+
+\NewDocumentCommand{\ActivitySet}{O{}mm} {
+ \tl_if_blank:nTF {#1}
+ {
+ \starray_set_prop:nnn {activity}{name}{#3}
+ \starray_set_prop:nnn {activity}{acronym}{#2}
+ }
+ {
+ \starray_set_prop:nnn {activity[#1]}{name}{#3}
+ \starray_set_prop:nnn {activity[#1]}{acronym}{#2}
+ }
+}
+
+\NewDocumentCommand{\ActivitySetCoordTitle}{O{}m} {
+ \tl_if_blank:nTF {#1}
+ { \starray_set_prop:nnn {activity.coord}{title}{#2} }
+ { \starray_set_prop:nnn {activity[#1].coord}{title}{#2} }
}
-\cmdfactory<core>{coursecoordtitle}%
-\NewDocumentCommand{\coursecoord}{mO{}}{%
- \tcgen@cdef<core>{coursecoord}{#1}%
- \tccore@articledef{tcdef@core@coursecoord}{#2}%%
+\NewDocumentCommand{\ActivitySetCoord}{O{}mO{}}{
+ \tl_if_blank:nTF {#1}
+ {
+ \starray_gset_prop:nnn {activity.coord}{name}{#2}
+ \__ufrgscca_setgender:nn {activity.coord}{#3}
+ }
+ {
+ \starray_gset_prop:nnn {activity[#1].coord}{name}{#2}
+ \__ufrgscca_setgender:nn {activity[#1].coord}{#3}
+ }
}
+
+\NewDocumentCommand{\ActivitySelect}{m}{ \starray_set_iter_from_hash:nn {activity}{#1} }
+
+
+\NewDocumentCommand{\Activity}{O{}m}{
+ \tl_if_blank:nTF {#1}
+ { \starray_get_prop:nn {activity}{#2} }
+ { \starray_get_prop:nn {activity[#1]}{#2} }
+}
+\NewDocumentCommand{\ActivityCoord}{O{}m}{
+ \tl_if_blank:nTF {#1}
+ { \starray_get_prop:nn {activity.coord}{#2} }
+ { \starray_get_prop:nn {activity[#1].coord}{#2} }
+}
+
+
+\NewDocumentCommand{\ActivityCalLine}{O{}m}{
+ \tl_if_blank:nF {#1}
+ {\starray_set_iter_from_hash:nn {activity}{#1}}
+ \starray_set_iter_from_hash:nn {activity.calendar}{#2}
+ \starray_get_prop:nn {activity.calendar}{date} & \starray_get_prop:nn {activity.calendar}{week} & \starray_get_prop:nn {activity.calendar}{event}
+}
+
+
%
-%
-\def\tccore@ref@advisor{tc@student\Alph{tc@studentcount}@advisor}
-\def\tccore@ref@coadvisor{tc@student\Alph{tc@studentcount}@coadvisor}
-\def\tccore@ref@tutor{tc@student\Alph{tc@studentcount}@tutor}
-\def\tccore@ref@supervisor{tc@student\Alph{tc@studentcount}@supervisor}
-\def\tccore@ref@internship{tc@student\Alph{tc@studentcount}@internship}
-
-\NewDocumentCommand{\tccore@examiners}{m}{\def\tc@@examiners{tc@student\Alph{tc@studentcount}@#1}}%
-\def\tccore@ref@examiner{\tc@@examiners}
-\def\tccore@ref@student{tc@student\Alph{tc@studentcount}}
-\def\tccore@ref@coursecoord{tcdef@core@coursecoord}
-\def\tccore@ref@TCCcoord{tcdef@core@TCCcoord}
-\def\tccore@ref@internshipcoord{tcdef@core@internshipcoord}
-
-\NewDocumentCommand{\tccore@@ref}{mm}{\expandafter\csname\csname tccore@ref@#1\endcsname#2\endcsname}%
-%
-%
-\let\tc@org@author\author
-%
-\newcounter{tc@studentcount}%
-\RenewDocumentCommand{\author}{mmO{}}{%
- \stepcounter{tc@studentcount}%
- \expandafter\gdef\csname tc@student\Alph{tc@studentcount}last\endcsname{#1}%
- \expandafter\gdef\csname tc@student\Alph{tc@studentcount}first\endcsname{#2}%
- \expandafter\gdef\csname tc@student\Alph{tc@studentcount}\endcsname{#2 #1}%
- \tccore@articledef{tc@student\Alph{tc@studentcount}}{#3}%%
-}%
-%
-\NewDocumentCommand{\authorinfo}{O{}mm}{%
- \expandafter\gdef\csname tc@student\Alph{tc@studentcount}Nproc\endcsname{#1}%
- \expandafter\gdef\csname tc@student\Alph{tc@studentcount}ID\endcsname{#2}%
- \expandafter\gdef\csname tc@student\Alph{tc@studentcount}email\endcsname{#3}%
-}%
-\NewDocumentCommand{\student}{mmO{}}{\author{#1}{#2}[#3]}%
-\NewDocumentCommand{\studentinfo}{O{}mm}{\authorinfo[#1]{#2}{#3}}%
-%----------
-%----------
-%
-\NewDocumentCommand{\tccore@ProfFields}{mmmmm}{%%
- \expandafter\gdef\csname tc@student\Alph{tc@studentcount}@#1last\endcsname{#3}%%
- \expandafter\gdef\csname tc@student\Alph{tc@studentcount}@#1first\endcsname{#4}%%
- \expandafter\gdef\csname tc@student\Alph{tc@studentcount}@#1\endcsname{#2~#4 #3}%%
- \tccore@articledef{tc@student\Alph{tc@studentcount}@#1}{#5}%
+\cs_new_protected:Npn \__ufrgscca_setgender:nn #1#2
+ {
+ \str_if_eq:nnT {#2}{m}
+ {
+ \starray_gset_from_keyval:nn {#1}
+ {
+ article = o ,
+ Article = O ,
+ narticle = ,
+ Narticle = ,
+ carticle = ao ,
+ Carticle = Ao
+ }
+ }
+ \str_if_eq:nnT {#2}{f}
+ {
+ \starray_gset_from_keyval:nn {#1}
+ {
+ article = a ,
+ Article = A ,
+ narticle = a ,
+ Narticle = A ,
+ carticle = à ,
+ Carticle = À
+ }
+ }
+ }
+
+
+\NewDocumentCommand{\student}{O{}mmO{}}{%
+ \tl_if_blank:nTF {#1}
+ {\starray_new_term:nn {student}{}}
+ {\starray_new_term:nn {student}{#1}}
+ \starray_gset_from_keyval:nn {student}
+ {
+ first = {#3} ,
+ last = {#2} ,
+ name = {#3~ #2} ,
+ }
+ \__ufrgscca_setgender:nn {student}{#4}
+ \starray_gset_prop:nnV {student}{checklist}\c_empty_prop
}%
-\NewDocumentCommand{\tccore@ProfInfo}{mmmmm}{%%
- \expandafter\gdef\csname tc@student\Alph{tc@studentcount}@#1institution\endcsname{#2}%%
- \expandafter\gdef\csname tc@student\Alph{tc@studentcount}@#1titleinfo\endcsname{#3}%%
- \expandafter\gdef\csname tc@student\Alph{tc@studentcount}@#1email\endcsname{#4}%%
- \expandafter\gdef\csname tc@student\Alph{tc@studentcount}@#1phone\endcsname{#5}%%
+ %
+\NewDocumentCommand{\eDataSet}{m}{
+ \starray_term_syntax:n{#1}
+}
+
+\cs_new:Npn \eDataFields #1
+ { \starray_parsed_get_prop:n{#1} }
+
+
+\NewDocumentCommand{\DataFields}{mm}{
+ \starray_get_prop:nn{#1}{#2}
+}
+\NewDocumentCommand{\SetReviewer}{m}{
+ \starray_set_iter:nn {student.reviewer}{#1}
+}
+ %
+
+\NewDocumentCommand{\studentCoadvCase}{mm}{
+ \starray_term_syntax:n{student}
+ \bool_if:nTF {\starray_parsed_get_prop:n{flag-coadvisor}}
+ {#1}
+ {#2}
+}
+
+
+
+\NewDocumentCommand{\distinctboard}{}{
+ \starray_gset_prop:nnn {student}{flag-distinctboard}{\c_true_bool}
+}
+
+\NewDocumentCommand{\studentDistinctBoardCase}{mm}
+ {
+ \starray_term_syntax:n{student}
+ \bool_if:nTF {\starray_parsed_get_prop:n{flag-distinctboard}}
+ {#1}
+ {#2}
+ }
+
+
+\NewDocumentCommand{\studentiterate}{m}{
+ \starray_iterate_over:nn{student}{#1}
+}
+
+
+\NewDocumentCommand{\worktitle}{m}{%%
+ \starray_gset_prop:nnn {student}{worktitle}{#1}
+}
+
+\NewDocumentCommand{\workbrief}{m}{
+ \starray_gset_prop:nnn {student}{brief}{#1}
+}
+
+\NewDocumentCommand{\workchange}{m}{
+ \starray_gset_prop:nnn {student}{reason}{#1}
+}
+
+\NewDocumentCommand{\advisorreview}{m}{
+ \starray_gset_prop:nnn {student.advisor}{assessment}{#1}
+}
+
+\NewDocumentCommand{\coadvisorreason}{m}{
+ \starray_gset_prop:nnn {student.coadvisor}{reason}{#1}
+}
+
+
+
+\NewDocumentCommand{\studentinfo}{O{}mm}{%
+ \starray_gset_from_keyval:nn {student}
+ {
+ Nproc = {#1} ,
+ ID = {#2} ,
+ email = {#3} ,
+ }
}%
-%
-%
-%
-\newcounter{tc@examinercount}[tc@studentcount]%
-%
+
+
+\bool_if:NT \l__ufrgscca_oldrenews_bool
+ {
+ \RenewDocumentCommand{\author}{O{}mmO{}}{\student[#1]{#2}{#3}[#4]}%
+ \NewDocumentCommand{\authorinfo}{O{}mm}{\studentinfo[#1]{#2}{#3}}%
+ \NewDocumentCommand{\title}{m}{\worktitle{#1}}%
+ }
+
+
+\NewDocumentCommand{\studentselect}{m}{ \starray_set_iter_from_hash:nn {student}{#1} }
+
+\cs_new_protected:Npn \__ufrgscca_set_prof:nnnnn #1#2#3#4#5
+ {
+ \starray_gset_from_keyval:nn {student.#1}
+ {
+ last = {#3} ,
+ first = {#4} ,
+ name = {#2~#4~ #3} ,
+ }
+ \__ufrgscca_setgender:nn {student.#1}{#5}
+ }
+
+
+\cs_new_protected:Npn \__ufrgscca_set_prof_info:nnnnn #1#2#3#4#5
+ {
+ \starray_gset_from_keyval:nn {student.#1}
+ {
+ institution = {#2} ,
+ title = {#3} ,
+ email = {#4} ,
+ phone = {#5} ,
+ }
+ }
+
+
\NewDocumentCommand{\advisor}{O{}mmO{}}{%%
- \tccore@ProfFields{advisor}{#1}{#2}{#3}{#4}%%
-%%% the advisor is also the first examiner if not @nBoard%
- \@ifundefined{tc@nBoard}{\examiner[#1]{#2}{#3}[#4]}{}%%
-}%
+ \starray_new_term:nn {student.advisor}{}
+ \__ufrgscca_set_prof:nnnnn {advisor}{#1}{#2}{#3}{#4}
+ \starray_term_syntax:n{student}
+ \bool_if:nF {\starray_parsed_get_prop:n{flag-distinctboard}}
+ { \examiner[#1]{#2}{#3}[#4] }
+}
+
\NewDocumentCommand{\advisorinfo}{mmmm}{%%
- \tccore@ProfInfo{advisor}{#1}{#2}{#3}{#4}%%
-%%% the advisor is also the first examiner if not @nBoard%
- \@ifundefined{tc@nBoard}{\examinerinfo{#1}{#2}{#3}{#4}}{}%%
+ \__ufrgscca_set_prof_info:nnnnn {advisor}{#1}{#2}{#3}{#4}
+ \starray_term_syntax:n{student}
+ \bool_if:nF {\starray_parsed_get_prop:n{flag-distinctboard}}
+ { \examinerinfo{#1}{#2}{#3}{#4} }
}%
-%
+
+
\NewDocumentCommand{\coadvisor}{O{}mmO{}}{%%
- \tccore@ProfFields{coadvisor}{#1}{#2}{#3}{#4}%%
+ \starray_new_term:nn {student.coadvisor}{}
+ \__ufrgscca_set_prof:nnnnn {coadvisor}{#1}{#2}{#3}{#4}
+ \starray_set_prop:nnn {student}{flag-coadvisor}{\c_true_bool}
}%
+
\NewDocumentCommand{\coadvisorinfo}{mmmm}{%%
- \tccore@ProfInfo{coadvisor}{#1}{#2}{#3}{#4}%%
+ \__ufrgscca_set_prof_info:nnnnn {coadvisor}{#1}{#2}{#3}{#4}
}%
-%
-%
+
+
+\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{}}{%%
- \tccore@ProfFields{tutor}{#1}{#2}{#3}{#4}%%
+ \starray_new_term:nn {student.tutor}{}
+ \__ufrgscca_set_prof:nnnnn {tutor}{#1}{#2}{#3}{#4}
}%
+
\NewDocumentCommand{\tutorinfo}{mmmm}{%%
- \tccore@ProfInfo{tutor}{#1}{#2}{#3}{#4}%%
+ \__ufrgscca_set_prof_info:nnnnn {tutor}{#1}{#2}{#3}{#4}
}%
-%
-%
+
\NewDocumentCommand{\supervisor}{O{}mmO{}}{%%
- \tccore@ProfFields{supervisor}{#1}{#2}{#3}{#4}%%
+ \starray_new_term:nn {student.supervisor}{}
+ \__ufrgscca_set_prof:nnnnn {supervisor}{#1}{#2}{#3}{#4}
}%
\NewDocumentCommand{\supervisorinfo}{mmmm}{%%
- \expandafter\gdef\csname tc@student\Alph{tc@studentcount}@supervisorregister\endcsname{#1}%%
- \expandafter\gdef\csname tc@student\Alph{tc@studentcount}@supervisoroffice\endcsname{#2}%%
- \expandafter\gdef\csname tc@student\Alph{tc@studentcount}@supervisoremail\endcsname{#3}%%
- \expandafter\gdef\csname tc@student\Alph{tc@studentcount}@supervisorphone\endcsname{#4}%%
+ \starray_gset_from_keyval:nn {student.supervisor}
+ {
+ register = {#1} ,
+ office = {#2} ,
+ email = {#3} ,
+ phone = {#4} ,
+ }
}%
\NewDocumentCommand{\internship}{mmmmm}{%%
- \expandafter\gdef\csname tc@student\Alph{tc@studentcount}@internshipcompany\endcsname{#1}%%
- \expandafter\gdef\csname tc@student\Alph{tc@studentcount}@internshipfield\endcsname{#2}%%
- \expandafter\gdef\csname tc@student\Alph{tc@studentcount}@internshipstart\endcsname{#3}%%
- \expandafter\gdef\csname tc@student\Alph{tc@studentcount}@internshipend\endcsname{#4}%%
- \expandafter\gdef\csname tc@student\Alph{tc@studentcount}@internshiplength\endcsname{#5}%%
+ \starray_new_term:nn {student.internship}{}
+ \starray_gset_from_keyval:nn {student.internship}
+ {
+ company = {#1} ,
+ field = {#2} ,
+ start = {#3} ,
+ end = {#4} ,
+ length = {#5} ,
+ }
}%
-%
-%
+
\NewDocumentCommand{\examiner}{O{}mmO{}}{%%
- \stepcounter{tc@examinercount}%%
- \tccore@ProfFields{examiner\Alph{tc@examinercount}}{#1}{#2}{#3}{#4}%%
+ \starray_new_term:nn {student.reviewer}{}
+ \__ufrgscca_set_prof:nnnnn {reviewer}{#1}{#2}{#3}{#4}
}%
\NewDocumentCommand{\examinerinfo}{mmmm}{%%
- \tccore@ProfInfo{examiner\Alph{tc@examinercount}}{#1}{#2}{#3}{#4}%%
+ \__ufrgscca_set_prof_info:nnnnn {reviewer}{#1}{#2}{#3}{#4}
}%
-%
-\newcounter{tc@altexaminercount}[tc@studentcount]%
+
\NewDocumentCommand{\altexaminer}{O{}mmO{}}{%%
- \stepcounter{tc@altexaminercount}%%
- \tccore@ProfFields{altexaminer\Alph{tc@altexaminercount}}{#1}{#2}{#3}{#4}%%
+ \starray_new_term:nn {student.altreviewer}{}
+ \__ufrgscca_set_prof:nnnnn {altreviewer}{#1}{#2}{#3}{#4}
}%
\NewDocumentCommand{\altexaminerinfo}{mmmm}{%%
- \tccore@ProfInfo{altexaminer\Alph{tc@altexaminercount}}{#1}{#2}{#3}{#4}%%
-}%
-%
-%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%
-%
-%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-%% assure that student/advisor/examiners... commands are defined with underlines (if not already defined)%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\tc@IDrule{30mm}%
-\def\tc@emailrule{40mm}%
-\def\tc@namerule{50mm}%
-\def\tc@titlerule{40mm}%
-\def\tc@phonerule{20mm}%
-\def\tc@agreerule{25mm}%
-\def\tc@daterule{15mm}%
-%%%
-%%
-%%%
-\NewDocumentCommand{\tccore@emptyfields}{}{%
-
- \@ifundefined{tc@studentA}{%
- \student{\rule{\tc@namerule}{.1pt}}{}%
- \studentinfo{\rule{\tc@IDrule}{.1pt}}{\rule{\tc@emailrule}{.1pt}}%
- }{}%
- \@ifundefined{tc@studentA@advisor}{%
- \advisor{\rule{\tc@namerule}{.1pt}}{}%
- \advisorinfo{}{\rule{\tc@titlerule}{.1pt}}{\rule{\tc@emailrule}{.1pt}}{\rule{\tc@phonerule}{.1pt}}%
- }{}%
-%
- \@ifundefined{tc@studentA@examinerC}{%
- \examiner{\rule{\tc@namerule}{.1pt}}{}%
- \examinerinfo{}{\rule{\tc@titlerule}{.1pt}}{\rule{\tc@emailrule}{.1pt}}{\rule{\tc@phonerule}{.1pt}}%
- }{}%
- \@ifundefined{tc@studentA@examinerC}{%
- \examiner{\rule{\tc@namerule}{.1pt}}{}%
- \examinerinfo{}{\rule{\tc@titlerule}{.1pt}}{\rule{\tc@emailrule}{.1pt}}{\rule{\tc@phonerule}{.1pt}}%
- }{}%
- \@ifundefined{tc@studentA@examinerC}{%
- \examiner{\rule{\tc@namerule}{.1pt}}{}%
- \examinerinfo{}{\rule{\tc@titlerule}{.1pt}}{\rule{\tc@emailrule}{.1pt}}{\rule{\tc@phonerule}{.1pt}}%
- }{}%
- \@ifundefined{tc@studentA@altexaminerA}{%
- \altexaminer{\rule{\tc@namerule}{.1pt}}{}%
- \altexaminerinfo{}{\rule{\tc@titlerule}{.1pt}}{\rule{\tc@emailrule}{.1pt}}{\rule{\tc@phonerule}{.1pt}}%
- }{}%
- %
- \@ifundefined{tc@studentA@supervisor}{%
- \supervisor{\rule{\tc@namerule}{.1pt}}{}%
- \supervisorinfo{\rule{\tc@phonerule}{.1pt}}{\rule{\tc@titlerule}{.1pt}}{\rule{\tc@emailrule}{.1pt}}{\rule{\tc@phonerule}{.1pt}}%
- }{}%
- %
- \@ifundefined{tc@studentA@tutor}{%
- \tutor{\rule{\tc@namerule}{.1pt}}{}%
- \tutorinfo{}{\rule{\tc@titlerule}{.1pt}}{\rule{\tc@emailrule}{.1pt}}{\rule{\tc@phonerule}{.1pt}}%
- }{}%
- %
- %
- \@ifundefined{tc@studentA@internshipcompany}{%
- \internship{\rule{\tc@namerule}{.1pt}}{\rule{\tc@titlerule}{.1pt}}{\rule{\tc@daterule}{.1pt}}{\rule{\tc@daterule}{.1pt}}{\rule{\tc@daterule}{.1pt}}%
- }{}%
-
- %
- % add an \iftcif@forms !!!
- %
- \@ifundefined{tcdef@core@tccbrief}{%
- \tccbrief{\tcdef@core@formsblanklines}%
- }{}%
- \@ifundefined{tcdef@core@tccArgument}{%
- \tccArgument{\tcdef@core@formsblanklines}%
- }{}%
- \@ifundefined{tcdef@core@tcccoadvisorbrief}{%
- \tcccoadvisorbrief{\tcdef@core@formsblanklines}%
- }{}%
- \@ifundefined{tcdef@core@tccadvisorsreview}{%
- \tccadvisorsreview{\tcdef@core@formsblanklines}%
- }{}%
+ \__ufrgscca_set_prof_info:nnnnn {altreviewer}{#1}{#2}{#3}{#4}
}%
-\NewDocumentCommand{\tccore@resetfields}{}{%
- \setcounter{tc@studentcount}{0}
- \csundef{tc@studentA}
- \csundef{tc@studentA@advisor}
- \csundef{tc@studentA@coadvisor}
- \csundef{tc@studentA@examinerC}
- \csundef{tc@studentA@altexaminerA}
- \csundef{tc@studentA@supervisor}
- \csundef{tc@studentA@tutor}
- \csundef{tc@studentA@internshipcompany}
-% \csundef{tc@studentA@internshipfield}
-% \csundef{tc@studentA@internshipstart}
-% \csundef{tc@studentA@internshipend}
-% \csundef{tc@studentA@internshiplength}
- \csundef{tcdef@core@tccbrief}
- \csundef{tcdef@core@tccArgument}
- \csundef{tcdef@core@tcccoadvisorbrief}
- \csundef{tcdef@core@tccadvisorsreview}
-}
+
+\cs_new_protected:Npn \__ufrgscca_emptyfields:
+ {
+ \starray_new_term:nn {student}{empty}
+ \starray_new_term:nn {student.advisor}{}
+ \starray_new_term:nn {student.coadvisor}{}
+ \starray_new_term:nn {student.reviewer}{}
+ \starray_new_term:nn {student.reviewer}{}
+ \starray_new_term:nn {student.reviewer}{}
+ \starray_new_term:nn {student.altreviewer}{}
+ \starray_new_term:nn {student.supervisor}{}
+ \starray_new_term:nn {student.tutor}{}
+ \starray_new_term:nn {student.internship}{}
+ }
+
+\def\emptybox{\framebox[3em]{\color{white}W}}
+
diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-cover.sty b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-cover.sty
index e433c3021bc..9cfd99a620a 100644
--- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-cover.sty
+++ b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-cover.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version 1.12 (2023/09/23)
+%% This is version {2.0} {2023/11/23}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -23,382 +23,217 @@
%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym)
%%%==============================================================================
\NeedsTeXFormat{LaTeX2e}[2022/06/01]
-\def\tc@tmp@packname{ufrgscca-cover}
-\def\tc@tmp@altpackname{ufrgsccacover}
-\def\tc@tmp@packdesc{UFRGS/CCA cover commands}
-\def\tc@tmp@packdate{2023/09/23}
-\def\tc@tmp@packversion{1.12}
-\let\@exp\expandafter
-\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion}
-\@exp\@exp\@exp\ProvidesPackage\@exp\@exp\@exp{\@exp\tc@tmp@packname\@exp}\@exp[\tc@tmp@packdate\space v\tc@tmp@packversion\space\tc@tmp@packdesc]
-
-\DeclareKeys[ufrgscca-cover]{
- report.usage = load,
- report.if = tcif@report,
- internship.usage = load,
- internship.if = tcif@internship,
- nonrequired.usage = load,
- nonrequired.if = tcif@nonrequired,
-}
-\ProcessKeyOptions[ufrgscca-cover]\relax
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% student commands%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\cmdfactory<cover>{course}
-\cmdfactory<cover>{courseacronym}%
-\cmdfactory<cover>{graduationtitle}
-\cmdfactory<cover>{university,universityacronym,universitydivision}
-\cmdfactory<cover>{divisiongradcouncil}%
-\cmdfactory<cover>{department,classcode,classname,subject}%
-\cmdfactory<cover>{secretaryacronym,secdivisionacronym}%
-\cmdfactory<cover>{advisorname,coadvisorname}
-\cmdfactory<cover>{examinername}%
-\cmdfactory<cover>{reportspecificinfo,approvalspecificinfo}%
-\cmdfactory<cover>{advisorwidth}
-\cmdfactory<cover>{profname,coprofname}%
-\cmdfactory<cover>{tutorname,supervisorname}%
-\cmdfactory<cover>{internshiptitle}%
-\cmdfactory<cover>{internshipinfo}%
-%
-\advisorwidth{0.55\textwidth}%
-%
-\NewDocumentCommand{\class}{mm}{\classcode{#1}\classname{#2}}%
-%
-
-
-%%%%%%%%%%%%%%%%%%%%%%%
-%%%%
-%%% cover pages and related macros%
-%%%%
-%%%%%%%%%%%%%%%%%%%%%%%
-\newlength{\tc@formwinvoffset}%
-\setlength{\tc@formwinvoffset}{24mm}%
-\NewDocumentCommand\tc@formtopbox{O{}+m+m}{%%
- \begin{center}%%
- \noindent%%
- \parbox[t]{\textwidth}{%%
- \centering%%
- \vbox to \tc@formwinvoffset{%%
- \tccover@covertopinfo%%
- {\sc #2}%
- }%%
- }%
-
- {\bf #3}\@ifundefined{#1}{}{\footnote[1]{\csname #1\endcsname}}%%
- \end{center}%%
-}%
-
-
-%
-\NewDocumentCommand{\tccover@covertopinfo}{}{%%
- \@ifundefined{tcdef@cover@university}{}{\MakeUppercase{\tcdef@cover@university}\\}%
- \@ifundefined{tcdef@cover@universitydivision}{}{\MakeUppercase{\tcdef@cover@universitydivision}\\}%
- \@ifundefined{tcdef@cover@course}{}{\MakeUppercase{\tcdef@cover@course}\\}%
- \@ifundefined{tcdef@cover@department}{}{\MakeUppercase{\tcdef@cover@department}\\}%%
- \@ifundefined{tcdef@cover@classname}{}{\MakeUppercase{\tcdef@cover@classcode\ --\ \tcdef@cover@classname}\\}%
- \@ifundefined{tcdef@cover@subject}{}{\MakeUppercase{\tcdef@cover@subject}}%
-}%
-
-
-\NewDocumentCommand{\tccover@coveradvisorinfo}{}{%%
- \@ifundefined{tc@studentA@advisor}{}{\vfill{\scshape\tcdef@cover@advisorname}:\\\null\hfill\tc@studentA@advisor}%
- \@ifundefined{tc@studentA@coadvisor}{}{\\[6ex]{\scshape\tcdef@cover@coadvisorname}:\\\null\hfill\tc@studentA@coadvisor}%
-}%
-%
-\NewDocumentCommand{\tccover@reportadvisorinfo}{}{%%
- \@ifundefined{tc@studentA@advisor}{}{\vfill{\scshape\iftcif@internship\tcdef@cover@advisorname\else\tcdef@cover@profname\fi}:\\\null\hfill\tc@studentA@advisor}%
- \@ifundefined{tc@studentA@coadvisor}{}{\\[6ex]{\scshape\iftcif@internship\tcdef@cover@coadvisorname\else\tcdef@cover@coprofname\fi}:\\\null\hfill\tc@studentA@coadvisor}%
-}%
-%
-%%%%%%%%%%%%%%%%%%%
-\let\tc@org@maketitle\maketitle
-\RenewDocumentCommand{\maketitle}{}{\coverpages}%
+\ProvidesExplPackage
+ {ufrgscca-cover}
+ {2023/11/23}
+ {2.0}
+ {UFRGS/CCA cover commands}
-\NewDocumentCommand{\coverpages}{}{%%
- \thecoverpage%that´s the first page%
- \thetitlepage%that´s the second page (for tcc)%
- \tccapprovalpage%that´s the third page (for tcc)%
-}%
-
-\iftcif@report
- \RenewDocumentCommand{\coverpages}{}{%%
- \thecoverpage%that´s the first page%
- }%
-\fi
-
-\iftcif@internship
- \AtBeginDocument{\title{\tcdef@cover@internshiptitle}}
- \RenewDocumentCommand{\coverpages}{}{%%
- \thecoverpage%that´s the first page%
- \internapprovalpage%that´s the second page (for internship)%
- }%
-\fi
-
-%
-%%%%%%%%%
+%%%%%%%
%%%
-%% 1st cover page%
+%%% Just an attempt of having my packages info in a regular way
+%%% Idea being: { <pck-name> / pkg info } for each and all.
%%%
-%%%%%%%%%
-%%
-\newlength{\tc@coverwinwidth}\setlength{\tc@coverwinwidth}{95mm}%%
-\newlength{\tc@coverwinheight}\setlength{\tc@coverwinheight}{64mm}%%
-\newlength{\tc@coverwinvoffset}\setlength{\tc@coverwinvoffset}{112mm}%%
+%%%%%%%
+\keys_define:nn { ufrgscca-cover / pkg info}
+ {
+ name .code:n = {ufrgscca-cover} ,
+ prefix .code:n = {ufrgscca} ,
+ date .code:n = {2023/11/23},
+ version .code:n = {2.0} ,
+ description .code:n = {UFRGS/CCA~ cover~pages}
+ }
+\cs_if_exist:NF \__codedesc_pkg_info:nn
+ {
+ \cs_new_protected:Npn \__codedesc_pkg_info:nn #1#2
+ { \keys_set:nn {#1 / pkg info}{#2} }
+ }
+\cs_if_exist:NF \PkgInfo
+ { \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} } }
+\cs_if_exist:NF \PkgDescription
+ {
+ \NewDocumentCommand \PkgDescription {m}
+ {
+ \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par
+ }
+ }
+%%%%%%%
+%%% End of cut-n-paste
+%%%%%%%
+
+
+\NewDocumentCommand{\class}{mm}{%
+ \SetHeadings{%
+ class.code = {#1} ,
+ class.name = {#2} ,
+ }
+}%
+%
+
+\cs_generate_variant:Nn \text_uppercase:n {e}
+
\NewDocumentCommand{\location}{mm}{%%
- \gdef\tc@city{#1}%%
- \gdef\tc@state{#2}%%
+ \SetConsts{%
+ publ.city = {#1} ,
+ publ.state = {#2} ,
+ }
}%%
-\NewDocumentCommand{\thecoverpage}{}{%%
- \begin{titlepage}%
- \noindent\tc@covertopbox%
- \vfill%
- \iftcif@report{%%
- \@ifundefined{tc@studentA@advisor}{}{%%
- \hspace*{\fill}\parbox[b]{\tcdef@cover@advisorwidth}{\tccover@reportadvisorinfo}%
- \vfill%
- }%%
- }%%
- \else\fi
- \centerline{\tc@city}%
- \centerline{\tc@date}%
- \end{titlepage}%%
- \tc@pagebreak
-}%
-%
-%
-%%%%%%%%%
-%%%
-%% 2nd cover page (title page)%
-%%%
-%%%%%%%%%
-\NewDocumentCommand{\thetitlepage}{}{%%
- \begin{titlepage}%
- \noindent\tc@covertopbox%
- \vfill%
- \@ifundefined{tcdef@cover@reportspecificinfo}{}{%
- \hspace*{\fill}\makebox[.55\textwidth][l]{%%
- \parbox[b]{8.5cm}{\tcdef@cover@reportspecificinfo}%%
- }%
- \vfill%
- }%
- \@ifundefined{tc@studentA@advisor}{}{%
- \hspace*{\fill}\parbox[b]{\tcdef@cover@advisorwidth}{%%
- \tccover@coveradvisorinfo%
- }%
- \vfill%
- }%
- \centerline{\tc@city}%
- \centerline{\tc@date}%
- \end{titlepage}%
- \tc@pagebreak
-}%
-%
-%
-%
-\NewDocumentCommand{\tccover@studentdesc}{m}{\@ifundefined{#1}{}{\MakeUppercase{\textbf{\csname #1\endcsname\ - \csname #1ID\endcsname}}\\}}
-%
-
-
-\NewDocumentCommand\tc@covertopbox{}{%%
- \parbox[t]{\textwidth}{%%
- \centering%%
- \vbox to \tc@coverwinvoffset{%%
- \tccover@covertopinfo\vfill\tc@winbox%
- }%
- }%
-}%
+\prop_new:N \l__ufrgscca_coverpages_prop
- \NewDocumentCommand\tc@winbox{}{%%
- %\fbox{%
- \parbox[b]{\tc@coverwinwidth}{%%
- \centering\vbox to \tc@coverwinheight{%%
- \vspace*{\fill}%
- \iftcif@report%
- \tccover@studentdesc{tc@studentA}%
- \tccover@studentdesc{tc@studentB}%
- \tccover@studentdesc{tc@studentC}%
- \tccover@studentdesc{tc@studentD}%%
- \else%
- \tccover@studentdesc{tc@studentA}%%
- \fi%
- \vspace{\stretch{4}}%
- {\large\MakeUppercase{\textbf{\@title}}\par}%
- \vfill%
- }%%
- %}%%
- }%%
- }%
-
-
-
-%
-%%%%%%%%%
-%%%
-%% 3rd cover page (approval page)%
-%%%
-%%%%%%%%%
-\NewDocumentCommand{\tccapprovalpage}{}{%%
- \begin{center}%
- \noindent\tc@covertopbox%
- \vfill%
- \@ifundefined{tcdef@cover@approvalspecificinfo}{}{%
- \hspace*{\fill}\makebox[.55\textwidth][l]{%%
- \parbox[b]{8.5cm}{\tcdef@cover@approvalspecificinfo}%%
- }%
- \vfill%
- }%
- \@ifundefined{tc@studentA@advisor}{}{%
- \hspace*{\fill}\parbox[b]{.70\textwidth}{%%
- \tccover@approvalpageadvisorinfo%
- }%
- \vfill%
- }%
- \@ifundefined{tc@studentA@examinerA}{}{%
- \hspace*{\fill}\parbox[b]{1.0\textwidth}{\tcdef@cover@examinername:}%
- \vfill%
- \hspace*{\fill}\parbox[b]{.90\textwidth}{%%
- \tccover@approvalpageexaminerinfo%
- }%
- \vfill%
- }%
- \@ifundefined{tcdef@core@coursecoord}{}{%
- \hspace*{\fill}\parbox[b]{.70\textwidth}{%%
- \tccover@approvalpagecoordinfo%
- }%
- \vfill%
- }%
- \vfill%
- \hfill\tc@city, \tc@monthyeardate
- \end{center}%
- \tc@pagebreak
-}%
-%
-%
-%
-%
-%
-%%%%%%%%%
-%%%
-%% 2nd cover page (internship, approval page)%
-%%%
-%%%%%%%%%
-\NewDocumentCommand{\internapprovalpage}{}{%%
- \begin{center}%
- \noindent\tc@covertopbox%
- \vfill%
- \@ifundefined{tcdef@cover@internshipinfo}{}{%
- \hspace*{\fill}\makebox[.55\textwidth][l]{%%
- \parbox[b]{8.5cm}{\tcdef@cover@internshipinfo}%%
- }%
- \vfill%
- }%
- \@ifundefined{tc@studentA@tutor}{}{%
- \hspace*{\fill}\parbox[b]{.70\textwidth}{%%
- \tccover@approvalpagetutorinfo%
- }%
- \vfill%
- }%
- \@ifundefined{tc@studentA@supervisor}{}{%
- \vfill%
- \hspace*{\fill}\parbox[b]{.70\textwidth}{%%
- \tccover@approvalpagesupervisorinfo%
- }%
- \vfill%
- }%
- \iftcif@nonrequired
- \else
- \@ifundefined{tcdef@core@coursecoord}{}{%
- \hspace*{\fill}\parbox[b]{.70\textwidth}{%%
- \tccover@approvalpageinternshipcoordinfo%
- }%
- \vfill%
- }%
- \fi
- \vfill%
- \hfill\tc@city, \tc@monthyeardate
- \end{center}%
- \tc@pagebreak
-}%
-%
-%
-%
-%
-%
-\NewDocumentCommand{\tccover@approvalpageadvisorinfo}{}{%%
- \@ifundefined{tc@studentA@advisor}{}{%%
- \vfill%
- \tcdef@cover@advisorname: \hrulefill\\%
- \tc@studentA@advisor, \tc@studentA@advisorinstitution\\%
- \tc@studentA@advisortitleinfo %
- }%
-}%
-\NewDocumentCommand{\tccover@approvalpagetutorinfo}{}{%%
- \@ifundefined{tc@studentA@tutor}{}{%%
- \vfill%
- \tcdef@cover@tutorname: \hrulefill\\%
- \tc@studentA@tutor, \tc@studentA@tutorinstitution\\%
- \tc@studentA@tutortitleinfo %
- }%
-}%
-
-\NewDocumentCommand{\tccover@@aprovalexaminerinfo}{m}{
- \@ifundefined{#1}{}{%%
- \csname #1\endcsname, \csname #1institution\endcsname\\%
- \csname #1titleinfo\endcsname\\%
- }%
-}%
-\NewDocumentCommand{\tccover@approvalpageexaminerinfo}{}{%%
- \vfill%
- \tccover@@aprovalexaminerinfo{tc@studentA@examinerA}%
-
- \tccover@@aprovalexaminerinfo{tc@studentA@examinerB}%
-
- \tccover@@aprovalexaminerinfo{tc@studentA@examinerC}%
-
- \tccover@@aprovalexaminerinfo{tc@studentA@examinerD}%
-
- \tccover@@aprovalexaminerinfo{tc@studentA@examinerE}%
-}%
-%
-\NewDocumentCommand{\tccover@approvalpagesupervisorinfo}{}{%%
- \vfill%
- \@ifundefined{tc@studentA@supervisor}{}{%%
- \tcdef@cover@supervisorname: \hrulefill\\%
- \tc@studentA@supervisor, \tc@studentA@supervisorregister\\%
- \tc@studentA@supervisoroffice\\%
- }%
-}%
-%
-
-
-\NewDocumentCommand{\tccover@approvalpagecoordinfo}{}{%%
- \@ifundefined{tcdef@core@coursecoord}{}{%%
- \vfill%
- \hrulefill\\%
- \tcdef@core@coursecoord\\%
- \tcdef@core@coursecoordtitle\\%
- \tcdef@cover@course%
- }%
-}%
-%
-\NewDocumentCommand{\tccover@approvalpageinternshipcoordinfo}{}{%%
- \@ifundefined{tcdef@core@internshipcoord}{}{%%
- \vfill%
- \hrulefill\\%
- \tcdef@core@internshipcoord\\%
- \tcdef@core@internshipcoordtitle\\%
- \tcdef@cover@course%
- }%
-}%
-
+\NewDocumentCommand{\SetCoverFields}{mm+m}{
+ \prop_put:Nnn \l__ufrgscca_coverpages_prop {#1.#2}{#3}
+}
+\NewDocumentCommand{\MakeCoverPages}{m}
+ {
+ \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
+ {
+ \keys_set:nn { ufrgscca / layout }{##1 = #1}
+ }
+
+ }
+
+
+\keys_define:nn { ufrgscca / layout }
+ {
+ cover .usage:n = general,
+ cover .code:n = {\__ufrgscca_cover_page:n{#1}},
+ desc .usage:n = general,
+ desc .code:n = {\__ufrgscca_desc_page:n{#1}},
+ approval .usage:n = general,
+ approval .code:n = {\__ufrgscca_approval_page:n{#1}},
+ }
+
+\cs_generate_variant:Nn \seq_map_inline:Nn {Ne}
+\cs_generate_variant:Nn \seq_set_from_clist:Nn {Ne}
+
+\coffin_new:N \l__ufrgscca_top_coffin
+\coffin_new:N \l__ufrgscca_student_coffin
+\coffin_new:N \l__ufrgscca_title_coffin
+\coffin_new:N \l__ufrgscca_desc_coffin
+\coffin_new:N \l__ufrgscca_adv_coffin
+\coffin_new:N \l__ufrgscca_board_coffin
+\coffin_new:N \l__ufrgscca_coord_coffin
+
+\dim_new:N \l__ufrgscca_top_ht_dim
+
+\dim_new:N \l__ufrgscca_student_voffset_dim
+\dim_new:N \l__ufrgscca_student_ht_dim
+
+\dim_new:N \l__ufrgscca_title_voffset_dim
+\dim_new:N \l__ufrgscca_title_wd_dim
+\dim_new:N \l__ufrgscca_title_ht_dim
+
+\dim_new:N \l__ufrgscca_desc_wd_dim
+\dim_new:N \l__ufrgscca_desc_ht_dim
+\dim_new:N \l__ufrgscca_desc_voffset_dim
+
+\dim_new:N \l__ufrgscca_adv_wd_dim
+\dim_new:N \l__ufrgscca_adv_ht_dim
+\dim_new:N \l__ufrgscca_adv_voffset_dim
+
+
+\cs_new_protected:Npn \__ufrgscca_cover_page_base:n #1
+ {
+ \dim_gset:Nn \l__ufrgscca_title_wd_dim {0.6\textwidth}% {95mm}
+ \dim_gset:Nn \l__ufrgscca_desc_wd_dim {0.6\textwidth}% {95mm}
+ \dim_gset:Nn \l__ufrgscca_adv_wd_dim {0.68\textwidth}% {95mm}
+
+ \vcoffin_gset:Nnn \l__ufrgscca_top_coffin {\textwidth}
+ { \prop_item:Nn \l__ufrgscca_coverpages_prop {#1.top} }
+
+ \vcoffin_gset:Nnn \l__ufrgscca_student_coffin {\l__ufrgscca_title_wd_dim}
+ { \prop_item:Nn \l__ufrgscca_coverpages_prop {#1.students} }
+
+ \vcoffin_gset:Nnn \l__ufrgscca_title_coffin {\l__ufrgscca_title_wd_dim}
+ { \prop_item:Nn \l__ufrgscca_coverpages_prop {#1.title} }
+
+ \dim_gset:Nn \l__ufrgscca_student_ht_dim {\coffin_ht:N \l__ufrgscca_student_coffin}
+ \dim_gset:Nn \l__ufrgscca_top_ht_dim {\coffin_ht:N \l__ufrgscca_top_coffin}
+ \dim_gset:Nn \l__ufrgscca_title_voffset_dim {0.29\textheight} %%{0.3\textheight}
+ \dim_gset:Nn \l__ufrgscca_desc_voffset_dim {0.42\textheight} %%{0.45\textheight}
+ \dim_gset:Nn \l__ufrgscca_adv_voffset_dim {0.54\textheight}
+ \dim_gset:Nn \l__ufrgscca_student_voffset_dim {(\l__ufrgscca_title_voffset_dim + \l__ufrgscca_top_ht_dim - \l__ufrgscca_student_ht_dim)/2}
+
+ \coffin_gjoin:NnnNnnnn \l__ufrgscca_top_coffin {hc}{t} \l__ufrgscca_student_coffin {hc}{t} {0pt} {-\l__ufrgscca_student_voffset_dim}
+ \coffin_gjoin:NnnNnnnn \l__ufrgscca_top_coffin {hc}{t} \l__ufrgscca_title_coffin {hc}{t} {0pt} {-\l__ufrgscca_title_voffset_dim}
+ }
+
+
+
+
+\cs_new_protected:Npn \__ufrgscca_cover_page:n #1
+ {
+ \__ufrgscca_cover_page_base:n{#1}
+
+ \noindent\coffin_typeset:Nnnnn \l__ufrgscca_top_coffin {l}{b} {0pt}{0pt}
+
+ \vfill
+ { \prop_item:Nn \l__ufrgscca_coverpages_prop {#1.bottom} }
+ %\newpage
+ \__ufrgscca_clearpage:
+ }
+
+\cs_new_protected:Npn \__ufrgscca_desc_page:n #1
+ {
+ \__ufrgscca_cover_page_base:n{#1}
+
+ \vcoffin_gset:Nnn \l__ufrgscca_desc_coffin {\l__ufrgscca_desc_wd_dim}
+ { \prop_item:Nn \l__ufrgscca_coverpages_prop {#1.text-descpage} }
+
+ \vcoffin_gset:Nnn \l__ufrgscca_adv_coffin {\l__ufrgscca_adv_wd_dim}
+ { \prop_item:Nn \l__ufrgscca_coverpages_prop {#1.advisor-descpage} }
+
+ \coffin_join:NnnNnnnn \l__ufrgscca_top_coffin {r}{t} \l__ufrgscca_desc_coffin {r}{t} {0pt} {-\l__ufrgscca_desc_voffset_dim}
+
+ %\coffin_join:NnnNnnnn \l__ufrgscca_top_coffin {r}{b} \l__ufrgscca_adv_coffin {r}{t} {0pt} {-3\parsep}
+ \coffin_join:NnnNnnnn \l__ufrgscca_top_coffin {r}{t} \l__ufrgscca_adv_coffin {r}{t} {0pt} {-\l__ufrgscca_adv_voffset_dim}
+
+ \noindent\coffin_typeset:Nnnnn \l__ufrgscca_top_coffin {l}{b} {0pt}{0pt}
+
+ \vfill
+ { \prop_item:Nn \l__ufrgscca_coverpages_prop {#1.bottom-descpage} }
+ %\newpage
+ \__ufrgscca_clearpage:
+ }
+
+
+\cs_new_protected:Npn \__ufrgscca_approval_page:n #1
+ {
+ \__ufrgscca_cover_page_base:n{#1}
+ \vcoffin_gset:Nnn \l__ufrgscca_desc_coffin {\l__ufrgscca_desc_wd_dim}
+ { \prop_item:Nn \l__ufrgscca_coverpages_prop {#1.text-approvalpage} }
+
+ \vcoffin_gset:Nnn \l__ufrgscca_adv_coffin {\l__ufrgscca_adv_wd_dim}
+ { \prop_item:Nn \l__ufrgscca_coverpages_prop {#1.advisor-approvalpage} }
+
+ \vcoffin_gset:Nnn \l__ufrgscca_board_coffin {\textwidth}
+ { \prop_item:Nn \l__ufrgscca_coverpages_prop {#1.board} }
+
+ \vcoffin_gset:Nnn \l__ufrgscca_coord_coffin {\l__ufrgscca_adv_wd_dim}
+ { \prop_item:Nn \l__ufrgscca_coverpages_prop {#1.coord} }
+
+ \coffin_join:NnnNnnnn \l__ufrgscca_top_coffin {r}{t} \l__ufrgscca_desc_coffin {r}{t} {0pt} {-\l__ufrgscca_desc_voffset_dim}
+
+ %\coffin_join:NnnNnnnn \l__ufrgscca_top_coffin {r}{b} \l__ufrgscca_adv_coffin {r}{t} {0pt} {-3\parsep}
+ \coffin_join:NnnNnnnn \l__ufrgscca_top_coffin {r}{t} \l__ufrgscca_adv_coffin {r}{t} {0pt} {-\l__ufrgscca_adv_voffset_dim}
+
+ \coffin_join:NnnNnnnn \l__ufrgscca_top_coffin {l}{b} \l__ufrgscca_board_coffin {l}{t} {0pt} {-3\parsep}
+ \coffin_join:NnnNnnnn \l__ufrgscca_top_coffin {r}{b} \l__ufrgscca_coord_coffin {r}{t} {0pt} {-3\parsep}
+
+ \noindent\coffin_typeset:Nnnnn \l__ufrgscca_top_coffin {l}{b} {0pt}{0pt}
+
+ \vfill
+ { \prop_item:Nn \l__ufrgscca_coverpages_prop {#1.bottom-approvalpage} }
+ %\newpage
+ \__ufrgscca_clearpage:
+ }
diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-curr-graph.sty b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-curr-graph.sty
deleted file mode 100644
index ccd5247bb63..00000000000
--- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-curr-graph.sty
+++ /dev/null
@@ -1,101 +0,0 @@
-%%%==============================================================================
-%% Copyright 2022-23 by Alceu Frigeri
-%%
-%% This work may be distributed and/or modified under the conditions of
-%%
-%% * The [LaTeX Project Public License](http://www.latex-project.org/lppl.txt),
-%% version 1.3c (or later), and/or
-%% * The [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html),
-%% version 3 (or later)
-%%
-%% This work has the LPPL maintenance status *maintained*.
-%%
-%% The Current Maintainer of this work is Alceu Frigeri
-%%
-%% This is version 1.12 (2023/09/23)
-%%
-%% The list of files that compose this work can be found in the README.md file at
-%% https://ctan.org/pkg/ufrgscca
-%%
-%%%==============================================================================
-%% UFRGS stands for "Federal University of Rio Grande do Sul" in south Brazil
-%% EE stands for "Engineering School"
-%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym)
-%%%==============================================================================
-\NeedsTeXFormat{LaTeX2e}[2022/06/01]
-\def\tc@tmp@packname{ufrgscca-curr-graph}
-\def\tc@tmp@altpackname{tccurrgraph}
-\def\tc@tmp@packdesc{UFRGS/CCA graph curricula commands}
-\def\tc@tmp@packdate{2023/09/23}
-\def\tc@tmp@packversion{1.12beta}
-\let\@exp\expandafter
-\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion}
-\@exp\@exp\@exp\ProvidesPackage\@exp\@exp\@exp{\@exp\tc@tmp@packname\@exp}\@exp[\tc@tmp@packdate\space v\tc@tmp@packversion\space\tc@tmp@packdesc]
-
-
-\RequirePackage{ufrgscca-curr}
-
-
-%%%%%%%%%%%
-%%%%%%%%%%%
-%%%%%%%%%%%
-
-\NewDocumentEnvironment{tikzGraphSem}{O{4.2:2.1}D<>{11.5:-18.5}}{%
- \StrCut{#1}{:}{\gr@dX}{\gr@dY}
- \StrCut{#2}{:}{\gr@xX}{\gr@yY}
- \def\gr@Xa{0}\def\gr@Xb{\gr@xX*\gr@dX}
- \def\gr@Ya{0}\def\gr@Yb{\gr@yY*\gr@dY}
- \begin{tikzpicture}[%
- disc/.style={%
- ellipse split, double, draw, line width=2pt,%
- every text node part/.style={font=\small\bfseries},%
- every lower node part/.style={font=\large\bfseries,color=blue}},%
- dep/.style={->,dotted,line width=3pt}]%
- \begin{scope}\clip(\gr@Xa,\gr@Ya) -- (\gr@Xa,\gr@Yb) -- (\gr@Xb,\gr@Yb) -- (\gr@Xb,\gr@Ya);%
- \filldraw[color=red](0.5*\gr@xX*\gr@dX,-0.25*\gr@dY)node{\Huge\textbf{\GraphTitle}};%
-}{%
- \end{scope}%
- \end{tikzpicture}%
-}
-
-\NewDocumentCommand\GraphSem{O{ob}m}{%
- \LstClass[\GraphClass]{#2}%
- \draw (\csname gr@etidx:\csname gr@et:\gr@sem.idx\endcsname.pos\endcsname*\gr@dX-0.5*\gr@dX,-\gr@dY) node[disc](Et. #2){Etapa #2 \nodepart{lower} \arabic{gr@cred#1},#1};%
-}
-
-\NewDocumentCommand\GraphClass{m}{%
- \edef\gr@topic{\csname gr@class:#1.topic\endcsname}%
- \edef\gr@color{\csname gr@topic:\gr@topic.color\endcsname}%
- \draw[\gr@color] (\csname gr@etidx:\csname gr@et:\gr@sem.idx\endcsname.pos\endcsname*\gr@dX-0.5*\gr@dX,\csname gr@class:#1.pos\endcsname*\gr@dY-1.25*\gr@dY) node[disc](#1){#1 \nodepart{lower} \csname gr@class:#1.cred\endcsname,\csname gr@class:#1.typ\endcsname};%
- \LstDep[\GraphDep]{#1}%
-}
-
-\NewDocumentCommand\GraphDep{m}{%
- \edef\gr@topic{\csname gr@class:\gr@disc.dep\gr@depSeq:#1.topic\endcsname}%
- \xdef\gr@DepColor{\csname gr@topic:\gr@topic.color\endcsname}%
- %\xdef\gr@DepColor{\csname gr@class:\gr@disc.dep\gr@depSeq:#1.topic\endcsname}%
- \def\gr@angOUT{\gr@ANG} \def\gr@angIN{180-\gr@ANG}%
- \xdef\gr@deppos{\csname gr@class:\gr@disc.dep\gr@depSeq:#1.pos\endcsname}%
- \def\gr@depcut{\StrCut{\gr@deppos}{:}{\gr@angOUT}{\gr@ANG}}%
- \gr@case@angle{\gr@deppos}%
- \path[dep,\gr@DepColor] (#1)edge[out=\gr@angOUT,in=\gr@angIN] (\gr@disc);%
-}
-
-\def\gr@Z{0} \def\gr@A{30} \def\gr@B{60} \def\gr@C{80}
-
-\mkswitch[\gr@depcut]\gr@case@angle
-\addcase\gr@case@angle{}{\def\gr@ANG{0}}
-\addcase\gr@case@angle{A}{\def\gr@ANG{\gr@A}}
-\addcase\gr@case@angle{B}{\def\gr@ANG{\gr@B}}
-\addcase\gr@case@angle{C}{\def\gr@ANG{\gr@C}}
-\addcase\gr@case@angle{-A}{\def\gr@ANG{-\gr@A}}
-\addcase\gr@case@angle{-B}{\def\gr@ANG{-\gr@B}}
-\addcase\gr@case@angle{-C}{\def\gr@ANG{-\gr@C}}
-\addcase\gr@case@angle{A*}{\def\gr@ANG{\gr@A}\def\gr@angIN{180+\gr@ANG}}
-\addcase\gr@case@angle{B*}{\def\gr@ANG{\gr@B}\def\gr@angIN{180+\gr@ANG}}
-\addcase\gr@case@angle{C*}{\def\gr@ANG{\gr@C}\def\gr@angIN{180+\gr@ANG}}
-\addcase\gr@case@angle{-A*}{\def\gr@ANG{-\gr@A}\def\gr@angIN{180+\gr@ANG}}
-\addcase\gr@case@angle{-B*}{\def\gr@ANG{-\gr@B}\def\gr@angIN{180+\gr@ANG}}
-\addcase\gr@case@angle{-C*}{\def\gr@ANG{-\gr@C}\def\gr@angIN{180+\gr@ANG}}
-
-
diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-curr-tab.sty b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-curr-tab.sty
deleted file mode 100644
index 660837626e5..00000000000
--- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-curr-tab.sty
+++ /dev/null
@@ -1,163 +0,0 @@
-%%%==============================================================================
-%% Copyright 2022-23 by Alceu Frigeri
-%%
-%% This work may be distributed and/or modified under the conditions of
-%%
-%% * The [LaTeX Project Public License](http://www.latex-project.org/lppl.txt),
-%% version 1.3c (or later), and/or
-%% * The [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html),
-%% version 3 (or later)
-%%
-%% This work has the LPPL maintenance status *maintained*.
-%%
-%% The Current Maintainer of this work is Alceu Frigeri
-%%
-%% This is version 1.12 (2023/09/23)
-%%
-%% The list of files that compose this work can be found in the README.md file at
-%% https://ctan.org/pkg/ufrgscca
-%%
-%%%==============================================================================
-%% UFRGS stands for "Federal University of Rio Grande do Sul" in south Brazil
-%% EE stands for "Engineering School"
-%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym)
-%%%==============================================================================
-\NeedsTeXFormat{LaTeX2e}[2022/06/01]
-\def\tc@tmp@packname{ufrgscca-curr-tab}
-\def\tc@tmp@altpackname{ufrgsccacurrtab}
-\def\tc@tmp@packdesc{UFRGS/CCA curricula tabular commands}
-\def\tc@tmp@packdate{2023/09/23}
-\def\tc@tmp@packversion{1.12beta}
-\let\@exp\expandafter
-\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion}
-\@exp\@exp\@exp\ProvidesPackage\@exp\@exp\@exp{\@exp\tc@tmp@packname\@exp}\@exp[\tc@tmp@packdate\space v\tc@tmp@packversion\space\tc@tmp@packdesc]
-
-\RequirePackage{longtable}
-\RequirePackage{ufrgscca-curr}
-
-\NewDocumentCommand\TabClass{m}{%
- & #1 & \csname gr@class:#1.cred\endcsname & \csname gr@class:#1.typ\endcsname & \multicolumn{2}{J{11cm}}{\csname gr@class:#1.nam\endcsname}\\*%
- \edef\gr@disc{#1}%
- \ifcsdef{gr@class:#1.depA}{%
- & & & & %
- & \def\gr@tab{\ }%
- \LstDep[\TabDepX]<A>{#1}\\*%
- }{}%
- \ifcsdef{gr@class:#1.depB}{%
- & & & & OU\\*%
- & & & & %
- & \def\gr@tab{\ }%
- \LstDep[\TabDepX]<B>{#1}\\*%
- }{}%
- \ifcsdef{gr@class:#1.depC}{%
- & & & & OU\\*%
- & & & & %
- & \def\gr@tab{\ }%
- \LstDep[\TabDepX]<C>{#1}\\*%
- }{}%
- \ifshowind{\ifcsundef{gr@class:#1.remark}%
- {}{& & & & \multicolumn{2}{l}{{\larger[2]{\color{red} \csname gr@class:#1.remark\endcsname}}}\\*}}{}%
-\xdef\gr@topic{\csname gr@class:#1.topic\endcsname}%
-& & & & \multicolumn{2}{J{11cm}}{{\sc\color{\csname gr@topic:\gr@topic.color\endcsname} \csname gr@topic:\gr@topic.txt\endcsname}}\\*
-& & & & \multicolumn{2}{l}{{\smaller{\sc Súmula: }}}\\*%
-& & & & & {{\smaller\csname gr@class:#1.desc\endcsname}}\\ %
-\ifcsundef{gr@class:#1.bibA}{}{& & & & \multicolumn{2}{l}{{\smaller{\sc Bibliografia Básica Essencial: }}}\\* & & & & &{\smaller \textopenbullet\ \csname gr@class:#1.bibA\endcsname}\\*}%
-\ifcsundef{gr@class:#1.bibB}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.bibB\endcsname}\\}%
-\ifcsundef{gr@class:#1.bibC}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.bibC\endcsname}\\}%
-\ifcsundef{gr@class:#1.bibD}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.bibD\endcsname}\\}%
-\ifcsundef{gr@class:#1.bibE}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.bibE\endcsname}\\}%
-\ifcsundef{gr@class:#1.bibF}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.bibF\endcsname}\\}%
-\ifcsundef{gr@class:#1.bibG}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.bibG\endcsname}\\}%
-\ifcsundef{gr@class:#1.bibH}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.bibH\endcsname}\\}%
-\ifcsundef{gr@class:#1.bibI}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.bibI\endcsname}\\}%
-\ifcsundef{gr@class:#1.bibJ}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.bibJ\endcsname}\\}%
-\ifcsundef{gr@class:#1.basicA}{}{& & & & \multicolumn{2}{l}{{\smaller{\sc Bibliografia Básica: }}}\\* & & & & &{\smaller \textopenbullet\ \csname gr@class:#1.basicA\endcsname}\\*}%
-\ifcsundef{gr@class:#1.basicB}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.basicB\endcsname}\\}%
-\ifcsundef{gr@class:#1.basicC}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.basicC\endcsname}\\}%
-\ifcsundef{gr@class:#1.basicD}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.basicD\endcsname}\\}%
-\ifcsundef{gr@class:#1.basicE}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.basicE\endcsname}\\}%
-\ifcsundef{gr@class:#1.basicF}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.basicF\endcsname}\\}%
-\ifcsundef{gr@class:#1.basicG}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.basicG\endcsname}\\}%
-\ifcsundef{gr@class:#1.basicH}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.basicH\endcsname}\\}%
-\ifcsundef{gr@class:#1.basicI}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.basicI\endcsname}\\}%
-\ifcsundef{gr@class:#1.basicJ}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.basicJ\endcsname}\\}%
-\ifcsundef{gr@class:#1.compA}{}{& & & & \multicolumn{2}{l}{{\smaller{\sc Bibliografia Complementar: }}}\\* & & & & &{\smaller \textopenbullet\ \csname gr@class:#1.compA\endcsname}\\*}%
-\ifcsundef{gr@class:#1.compB}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.compB\endcsname}\\}%
-\ifcsundef{gr@class:#1.compC}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.compC\endcsname}\\}%
-\ifcsundef{gr@class:#1.compD}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.compD\endcsname}\\}%
-\ifcsundef{gr@class:#1.compE}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.compE\endcsname}\\}%
-\ifcsundef{gr@class:#1.compF}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.compF\endcsname}\\}%
-\ifcsundef{gr@class:#1.compG}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.compG\endcsname}\\}%
-\ifcsundef{gr@class:#1.compH}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.compH\endcsname}\\}%
-\ifcsundef{gr@class:#1.compI}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.compI\endcsname}\\}%
-\ifcsundef{gr@class:#1.compJ}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.compJ\endcsname}\\}%
- \\[-1.5ex]%
-}
-
-
-%%%gr@class:\gr@disc.bib\Alph{gr@class:\gr@disc.bibcnt}
-
-\NewDocumentCommand\TabDepX{m}{%
- {
- \ifshowind{\ifcsundef{gr@class:#1.remark}{}{\color{red}\bfseries}}{}
- \gr@tab\ #1 (\csname gr@class:#1.et\endcsname) %
- }
- \def\gr@tab{E}%
-}
-
-\NewDocumentCommand\TabDep{m}{%
- & & & & & #1 - \csname gr@class:#1.nam\endcsname\ (\csname gr@class:#1.et\endcsname)\\[-0.1ex]%
-}
-
-\NewDocumentCommand\TabEtp{D<>{ob}O{\notoc\section}m}{%
- #2{Etapa #3}%
- \begin{longtable}{l@{\,}l@{\ }c@{\ }c@{\ }J{5mm}@{}J{10.7cm}}%
- \LstClass[\TabClass]{#3}%
-% & \textbf{Total} & \textbf{\arabic{gr@cred#1}} & \textbf{#1}\\%
- \end{longtable}%
-}
-
-\NewDocumentCommand\@TabTopic{m}{%
- #1 & \csname gr@class:#1.cred\endcsname & \csname gr@class:#1.typ\endcsname & \csname gr@class:#1.nam\endcsname & (\csname gr@class:#1.et\endcsname)\\%
-}
-
-\NewDocumentCommand\TabTopic{O{ob}m}{%
-
-\noindent\csname gr@topic:#2.txt\endcsname
-\@ifundefined{gr@topic:#2}{\\\textbf{--No Classes Associated--}}{
- \begin{longtable}{l@{\,}l@{\ }c@{\ }J{11.2cm}@{\,}l}\smaller%
- \LstTopic[\@TabTopic]{#2}%
- \end{longtable}%
- }
-}
-
-
-\NewDocumentCommand\TabClassCompact{m}{%
- & #1 & \csname gr@class:#1.cred\endcsname & \csname gr@class:#1.typ\endcsname & \multicolumn{2}{J{11cm}}{\csname gr@class:#1.nam\endcsname}\\*%
- \edef\gr@disc{#1}%
- \ifcsdef{gr@class:#1.depA}{%
- \LstDep[\TabDep]<A>{#1}%
- }{}%
- \ifcsdef{gr@class:#1.depB}{%
- & & & & OU\\*%
- & & & & %
- & \def\gr@tab{\ }%
- \LstDep[\TabDepX]<B>{#1}%
- }{}%
- \ifcsdef{gr@class:#1.depC}{%
- & & & & OU\\*%
- & & & & %
- & \def\gr@tab{\ }%
- \LstDep[\TabDepX]<C>{#1}%
- }{}%
-}
-
-\NewDocumentCommand\TabEtpCompact{D<>{ob}O{}m}{%
- %#2{Etapa #3}%
- \begin{tabular}{l@{\,}l@{\ }c@{\ }c@{\ }J{4mm}@{}J{10cm}}%
- &{\larger\textbf{Etapa #3}}\\
- \LstClass[\TabClassCompact]{#3}%
-% & \textbf{Total} & \textbf{\arabic{gr@cred#1}} & \textbf{#1}\\%
- \end{tabular}%
-}
-
diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-curr.sty b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-curr.sty
index c13ef1509a6..51dd5a43efa 100644
--- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-curr.sty
+++ b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-curr.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version 1.12 (2023/09/23)
+%% This is version {2.0} {2023/11/23}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -23,128 +23,659 @@
%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym)
%%%==============================================================================
\NeedsTeXFormat{LaTeX2e}[2022/06/01]
-\def\tc@tmp@packname{ufrgscca-curr}
-\def\tc@tmp@altpackname{ufrgsccacurr}
-\def\tc@tmp@packdesc{UFRGS/CCA curricula commands}
-\def\tc@tmp@packdate{2023/09/23}
-\def\tc@tmp@packversion{1.12beta}
-\let\@exp\expandafter
-\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion}
-\@exp\@exp\@exp\ProvidesPackage\@exp\@exp\@exp{\@exp\tc@tmp@packname\@exp}\@exp[\tc@tmp@packdate\space v\tc@tmp@packversion\space\tc@tmp@packdesc]
-
-
-\newcounter{gr@credob}
-\newcounter{gr@credel}
-\newcounter{gr@credalt}
-\newcounter{gr@credad}
-\NewDocumentCommand{\gr@setcred}{}{\setcounter{gr@credob}{0}\setcounter{gr@credel}{0}\setcounter{gr@credalt}{0}}
-\NewDocumentCommand{\gr@addclasscred}{m}{\addtocounter{gr@cred\csname gr@class:#1.typ\endcsname}{\csname gr@class:#1.cred\endcsname}}
-
-\let\@ex\expandafter
-
-%%%%%%%%%%%
-%%%%%%%%%%%
-%%%%%%%%%%%
-
-\NewDocumentCommand\topicdef{O{black}mm}{
- \expandafter\gdef\csname gr@topic:#2.txt\endcsname{#3}%
- \expandafter\gdef\csname gr@topic:#2.color\endcsname{#1}%
-}
-\NewDocumentCommand\defaulttopic{m}{\xdef\gr@defaulttopic{#1}}
-%%%%%%%%%%%
-%%%%%%%%%%%
-%%%%%%%%%%%
+\ProvidesExplPackage
+ {ufrgscca-curr}
+ {2023/11/23}
+ {2.0}
+ {UFRGS/CCA curricula commands}
-\NewDocumentCommand\semdef{O{#3}D<>{#3}m}{%
- \expandafter\gdef\csname gr@et:#3.idx\endcsname{x#3}%
- \expandafter\gdef\csname gr@etidx:x#3.cod\endcsname{#2}%
- \expandafter\gdef\csname gr@etidx:x#3.nam\endcsname{#3}%
- \expandafter\gdef\csname gr@etidx:x#3.pos\endcsname{#1}%
- \gdef\gr@sem{#3}%
- \gdef\gr@semcod{#2}%
-}
-%%%%%%%%%%%
-%%%%%%%%%%%
-%%%%%%%%%%%
-
-\NewDocumentCommand\classdef{O{\gr@defaulttopic}D<>{}mmmmm}{%
- \@ifundefined{gr@topic:#1.txt}%
- {\expandafter\gdef\csname gr@class:#3.topic\endcsname{\gr@defaulttopic}}%
- {\expandafter\gdef\csname gr@class:#3.topic\endcsname{#1}}%
- \expandafter\gdef\csname gr@class:#3.pos\endcsname{#2}%
- \expandafter\gdef\csname gr@class:#3.cred\endcsname{#4}%
- \expandafter\gdef\csname gr@class:#3.typ\endcsname{#5}%
- \expandafter\gdef\csname gr@class:#3.nam\endcsname{#6}%
- \expandafter\gdef\csname gr@class:#3.desc\endcsname{#7}%
- \expandafter\xdef\csname gr@class:#3.et\endcsname{\gr@semcod}%
- \gdef\gr@disc{#3}
- \newcounter{gr@class:#3.bibcnt}
- \newcounter{gr@class:#3.basiccnt}
- \newcounter{gr@class:#3.compcnt}
- \newcounter{gr@class:#3.dep}
- \stepcounter{gr@class:#3.dep}
- \ifcsundef{gr@et:\gr@sem}{\csgdef{gr@et:\gr@sem}{#3}}{\csgappto{gr@et:\gr@sem}{,#3}}
- \ifcsundef{gr@topic:#1}{\csgdef{gr@topic:#1}{#3}}{\csgappto{gr@topic:#1}{,#3}}
-}
-\NewDocumentCommand{\setclass}{m}{\ifcsundef{gr@class:#1.et}{{\color{red} #1 undef\\}}{\gdef\gr@disc{#1}}}
+%%%%%%%
+%%%
+%%% Just an attempt of having my packages info in a regular way
+%%% Idea being: { <pck-name> / pkg info } for each and all.
+%%%
+%%%%%%%
+\keys_define:nn { ufrgscca-curr / pkg info}
+ {
+ name .code:n = {ufrgscca-curr} ,
+ prefix .code:n = {ufrgscca} ,
+ date .code:n = {2023/11/23},
+ version .code:n = {2.0} ,
+ description .code:n = {UFRGS/CCA~ curricula~ commands}
+ }
+\cs_if_exist:NF \__codedesc_pkg_info:nn
+ {
+ \cs_new_protected:Npn \__codedesc_pkg_info:nn #1#2
+ { \keys_set:nn {#1 / pkg info}{#2} }
+ }
+\cs_if_exist:NF \PkgInfo
+ { \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} } }
+\cs_if_exist:NF \PkgDescription
+ {
+ \NewDocumentCommand \PkgDescription {m}
+ {
+ \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par
+ }
+ }
+%%%%%%%
+%%% End of cut-n-paste
+%%%%%%%
-\NewDocumentCommand{\classremark}{m}{%
- \expandafter\gdef\csname gr@class:\gr@disc.remark\endcsname{#1}%
-}
-%%%%%%%%%%%
-%%%%%%%%%%%
-%%%%%%%%%%%
+\starray_new:n {topics}
+\starray_new:n {classes}
+\starray_new:n {curricula}
-\NewDocumentCommand\depdef{O{\csname gr@class:\gr@disc.topic\endcsname}D<>{}m}{%
- \ifcsundef{gr@class:\gr@disc.dep\Alph{gr@class:\gr@disc.dep}}{\csgdef{gr@class:\gr@disc.dep\Alph{gr@class:\gr@disc.dep}}{#3}}{\csgappto{gr@class:\gr@disc.dep\Alph{gr@class:\gr@disc.dep}}{,#3}}
- \expandafter\gdef\csname gr@class:\gr@disc.dep\Alph{gr@class:\gr@disc.dep}:#3.topic\endcsname{#1}%
- \expandafter\gdef\csname gr@class:\gr@disc.dep\Alph{gr@class:\gr@disc.dep}:#3.pos\endcsname{#2}%
-}
+\starray_def_from_keyval:nn {topics}
+ {
+ self = ,
+ name = ,
+ color = ,
+ class lst = , %list (sequence) of classes
+ }
-%%%%%%%%%%%
-%%%%%%%%%%%
-%%%%%%%%%%%
+\starray_def_from_keyval:nn {classes}
+ {
+ cred = ,
+ self = ,
+ name = ,
+ summary = ,
+ topic = ,
+ remark = ,
+ bib seq = ,
+ bib basic seq = ,
+ bib compl seq = ,
+ ref . struct = {
+ curr = ,
+ sem = ,
+ kind = ,
+ } ,
+ }
-\NewDocumentCommand\bibdef{O{bib}m}{%
- \stepcounter{gr@class:\gr@disc.#1cnt}%
- \expandafter\gdef\csname gr@class:\gr@disc.#1\Alph{gr@class:\gr@disc.#1cnt}\endcsname{#2}%
-}
+\starray_def_from_keyval:nn {curricula}
+ {
+ self = ,
+ name = ,
+ text = ,
+ sem.struct = {
+ pos = ,
+ self = ,
+ name = ,
+ class . struct = {
+ name = ,
+ kind = ,
+ obs = ,
+ pos = ,
+ color = ,
+ prereqset . struct = {
+ prereq . struct = {
+ starred = ,
+ name = ,
+ ang = ,
+ }
+ } ,
+ } ,
+ } ,
+ }
+\NewDocumentCommand{\currdef}{mmm}
+ {
+ \starray_new_term:nn {curricula}{#1}
+ \starray_set_from_keyval:nn {curricula}
+ {
+ self = {#1} ,
+ name = {#2} ,
+ text = {#3} ,
+ }
+ }
-%%%%%%%%%%%
-%%%%%%%%%%%
-%%%%%%%%%%%
+\NewDocumentCommand{\semdef}{mmm}
+ {
+ \starray_new_term:nn {curricula.sem}{#1}
+ \starray_set_from_keyval:nn {curricula.sem}
+ {
+ self = {#1} ,
+ name = {#2} ,
+ pos = {#3} ,
+ }
+ }
+\NewDocumentCommand{\addclass}{O{}D<>{}mmO{}}
+ {
+ \starray_new_term:nn {curricula.sem.class}{#3}
+ \starray_set_from_keyval:nn {curricula.sem.class}
+ {
+ color = {#1} ,
+ pos = {#2} ,
+ name = {#3} ,
+ kind = {#4} ,
+ obs = {#5} ,
+ }
+ \starray_new_term:nn {curricula.sem.class.prereqset}{}
+ \starray_set_iter_from_hash:nn {classes}{#3}
-\NewDocumentCommand\altdef{}{%
- \stepcounter{gr@class:\gr@disc.dep}%
-}
+ \starray_new_term:nn {classes.ref}{}
+ \starray_get_prop:nnN {curricula}{self} \l_tmpa_tl
+ \starray_set_prop:nnV {classes.ref}{curr} \l_tmpa_tl
+ \starray_get_prop:nnN {curricula.sem}{self} \l_tmpa_tl
+ \starray_set_prop:nnV {classes.ref}{sem} \l_tmpa_tl
+ \starray_set_prop:nnn {classes.ref}{kind}{#4}
+ }
-%%%%%%%%%%%
-%%%%%%%%%%%
-%%%%%%%%%%%
+\NewDocumentCommand{\depdef}{sD<>{}m}
+ {
+ \starray_new_term:nn {curricula.sem.class.prereqset.prereq}{#3}
+ \starray_set_from_keyval:nn {curricula.sem.class.prereqset.prereq}
+ {
+ starred = {#1} ,
+ name = {#3} ,
+ ang = {#2}
+ }
+ }
-\NewDocumentCommand\goo{m}{}
-\NewDocumentCommand\gooble{m}{}
+\NewDocumentCommand{\altdep}{}
+ {
+ \starray_new_term:nn {curricula.sem.class.prereqset}{}
+ }
-\NewDocumentCommand\LstDep{O{\goo}D<>{A}m}{%
- \xdef\gr@disc{#3}%
- \xdef\gr@depSeq{#2}%
- \ifcsdef{gr@class:#3.dep#2}{\@ex\@ex\@ex\forcsvlist\@ex\@ex\@ex#1\@ex\@ex\@ex{\csname gr@class:#3.dep#2\endcsname}}{}
-}
-\NewDocumentCommand\LstClass{O{\gooble}m}{%
-\xdef\gr@sem{#2}%
-\gr@setcred%
-\@ex\@ex\@ex\forcsvlist\@ex\@ex\@ex\gr@addclasscred\@ex\@ex\@ex{\csname gr@et:#2\endcsname}%
-\@ex\@ex\@ex\forcsvlist\@ex\@ex\@ex#1\@ex\@ex\@ex{\csname gr@et:#2\endcsname}%
+
+
+\NewDocumentCommand\topicdef{O{}mm}
+ {
+ \starray_new_term:nn {topics}{#2}
+ \starray_set_from_keyval:nn {topics}
+ {
+ self = {#2} ,
+ name = {#3} ,
+ color = {#1} ,
+ }
+% \seq_clear:N \l_tmpa_seq
+ \starray_set_prop:nnV {topics}{class lst} \c_empty_seq
+ }
+
+\tl_new:N \l__ufrgscca_default_topic_tl
+\NewDocumentCommand\defaulttopic{m}
+ { \tl_set:Ne \l__ufrgscca_default_topic_tl{#1} }
+
+
+\NewDocumentCommand{\classdef}{O{\l__ufrgscca_default_topic_tl}mmm}
+ {
+ \starray_new_term:nn {classes}{#2}
+ \starray_set_from_keyval:nn {classes}
+ {
+ self = {#2} ,
+ cred = {#3} ,
+ name = {#4} ,
+ topic = {#1} ,
+ }
+% \seq_clear:N \l_tmpa_seq
+ \starray_set_prop:nnV {classes}{bib seq} \c_empty_seq
+ \starray_set_prop:nnV {classes}{bib basic seq} \c_empty_seq
+ \starray_set_prop:nnV {classes}{bib compl seq} \c_empty_seq
+
+ \starray_set_iter_from_hash:nn {topics}{#1}
+ \starray_get_prop:nnN {topics}{class lst} \l_tmpa_seq
+ \seq_put_right:Nn \l_tmpa_seq{#2}
+ \starray_set_prop:nnV {topics}{class lst} \l_tmpa_seq
+ }
+\NewDocumentCommand{\csummary}{m}
+ {
+ \starray_set_prop:nnn {classes}{summary}{#1}
+ }
+
+
+\NewDocumentCommand{\classremark}{m}
+ {
+ \starray_set_prop:nnn {classes}{remark}{#1}
+ }
+
+\NewDocumentCommand{\bibdef}{O{main}m}
+ {
+ \str_case:nnF {#1}
+ {
+ {main}
+ {
+ \starray_get_prop:nnN {classes}{bib seq} \l_tmpa_seq
+ \seq_put_right:Nn \l_tmpa_seq {#2}
+ \starray_set_prop:nnV {classes}{bib seq} \l_tmpa_seq
+ }
+ {basic}%{ \starray_get_prop:nnN {classes}{bib basic seq} \l_tmpa_seq }
+ {
+ \starray_get_prop:nnN {classes}{bib basic seq} \l_tmpa_seq
+ \seq_put_right:Nn \l_tmpa_seq {#2}
+ \starray_set_prop:nnV {classes}{bib basic seq} \l_tmpa_seq
+ }
+ {compl}%{ \starray_get_prop:nnN {classes}{bib compl seq} \l_tmpa_seq }
+ {
+ \starray_get_prop:nnN {classes}{bib compl seq} \l_tmpa_seq
+ \seq_put_right:Nn \l_tmpa_seq {#2}
+ \starray_set_prop:nnV {classes}{bib compl seq} \l_tmpa_seq
+ }
+ }
+ {
+ \starray_get_prop:nnN {classes}{bib seq} \l_tmpa_seq
+ \seq_put_right:Nn \l_tmpa_seq {#2}
+ \starray_set_prop:nnV {classes}{bib seq} \l_tmpa_seq
+ }
+ }
+
+\NewDocumentCommand{\classset}{m}
+ {
+ \starray_set_iter_from_hash:nn {classes}{#1}
+ }
+\let\setclass\classset
+
+%\NewDocumentCommand\xTabEtp{O{\notoc\section}m}{%
+
+\cs_generate_variant:Nn \starray_set_iter_from_hash:nn {ne}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%
+%%%
+%%%
+%%%
+%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\tl_new:N \l__ufrgscca_tmp_class_tl
+\tl_new:N \l__ufrgscca_tmp_name_tl
+\tl_new:N \l__ufrgscca_tmp_obs_tl
+\tl_new:N \l__ufrgscca_tmp_kind_tl
+\tl_new:N \l__ufrgscca_tmp_cred_tl
+\tl_new:N \l__ufrgscca_tmp_topic_tl
+\tl_new:N \l__ufrgscca_tmp_color_tl
+\tl_new:N \l__ufrgscca_tmp_summary_tl
+\tl_new:N \l__ufrgscca_tmp_OR_tl
+\seq_new:N \l__ufrgscca_tmp_bib_seq
+\seq_new:N \l__ufrgscca_tmp_bibB_seq
+\seq_new:N \l__ufrgscca_tmp_prereq_seq
+\bool_new:N \l__ufrgscca_tmp_second_bool
+
+\NewDocumentCommand\TabEtp{sO{\notoc\section}mO{\footnotesize}}{%
+ \starray_set_iter_from_hash:nn {curricula.sem}{#3}
+ \bool_if:nTF {#1}
+ {
+ #4
+ \begin{tabular}{l@{\,}l@{\ }c@{\ }c@{\ }J{5mm}@{}J{10.2cm}}%
+ \starray_get_prop:nnN {curricula.sem}{name} \l__ufrgscca_tmp_name_tl
+ \use:e { & \exp_not:N \multicolumn{5}{J{11cm}}{\exp_not:N \textbf{\l__ufrgscca_tmp_name_tl}}}\\*
+ }
+ {
+ \starray_term_syntax:n {curricula.sem}
+ #2{\starray_parsed_get_prop:n {name}}
+ #4
+ \begin{longtable}{l@{\,}l@{\ }c@{\ }c@{\ }J{5mm}@{}J{10.2cm}}%
+ }
+
+ \starray_iterate_over:nn {curricula.sem.class}
+ {
+ \starray_get_prop:nnN {curricula.sem.class}{name} \l__ufrgscca_tmp_class_tl
+ \starray_get_prop:nnN {curricula.sem.class}{kind} \l__ufrgscca_tmp_kind_tl
+ \starray_get_prop:nnN {curricula.sem.class}{color} \l__ufrgscca_tmp_color_tl
+ \starray_set_iter_from_hash:ne {classes}{\l__ufrgscca_tmp_class_tl}
+ \starray_get_prop:nnN {classes}{name} \l__ufrgscca_tmp_name_tl
+ \starray_get_prop:nnN {classes}{cred} \l__ufrgscca_tmp_cred_tl
+ \tl_if_empty:NT \l__ufrgscca_tmp_color_tl
+ {
+ \tl_set:Nn \l__ufrgscca_tmp_color_tl {black}
+ }
+
+ %% class identification
+ \bool_if:NTF \l__ufrgscca_showind_bool
+ {
+ \use:e { & \l__ufrgscca_tmp_class_tl
+ & \l__ufrgscca_tmp_cred_tl
+ & \l__ufrgscca_tmp_kind_tl
+ & \exp_not:N \multicolumn{2}{J{10.5cm}}{\exp_not:N \textcolor{\l__ufrgscca_tmp_color_tl}{\l__ufrgscca_tmp_name_tl}}\\*
+ }
+ }
+ {
+ \use:e { & \l__ufrgscca_tmp_class_tl
+ & \l__ufrgscca_tmp_cred_tl
+ & \l__ufrgscca_tmp_kind_tl
+ & \exp_not:N \multicolumn{2}{J{10.5cm}}{\l__ufrgscca_tmp_name_tl}\\*
+ }
+ }
+
+ %% Pre-reqs
+ \bool_gset_false:N \l__ufrgscca_tmp_second_bool
+ \starray_iterate_over:nn {curricula.sem.class.prereqset}
+ {
+ \seq_gclear:N \l__ufrgscca_tmp_prereq_seq
+ \starray_iterate_over:nn {curricula.sem.class.prereqset.prereq}
+ {
+ \starray_get_prop:nnN {curricula.sem.class.prereqset.prereq}{name} \l_tmpa_tl
+ \seq_gput_right:Ne \l__ufrgscca_tmp_prereq_seq {\l_tmpa_tl}
+ }
+ \seq_if_empty:NF \l__ufrgscca_tmp_prereq_seq
+ {
+ \bool_if:NTF \l__ufrgscca_tmp_second_bool
+ {
+ & & & & \multicolumn{2}{J{11cm}}{\smaller\makebox[10mm][l]{~\ ~OU}\seq_use:Nn \l__ufrgscca_tmp_prereq_seq {~E~} }\\*
+ }
+ {
+ & & & & \multicolumn{2}{J{11cm}}{\smaller\makebox[10mm][l]{}\seq_use:Nn \l__ufrgscca_tmp_prereq_seq {~E~} }\\*
+ \bool_gset_true:N \l__ufrgscca_tmp_second_bool
+ }
+ }
+ }
+ \starray_get_prop:nnN {curricula.sem.class}{obs} \l__ufrgscca_tmp_obs_tl
+ \tl_if_empty:NF \l__ufrgscca_tmp_obs_tl
+ {
+ \use:e { & & & & & {\exp_not:N \scriptsize{\exp_not:N \emph{\l__ufrgscca_tmp_obs_tl}}}\\* }
+ }
+ \bool_if:nF {#1}
+ {
+ %% Topic
+ \starray_get_prop:nnN {classes}{topic} \l__ufrgscca_tmp_topic_tl
+ \starray_set_iter_from_hash:ne {topics}{\l__ufrgscca_tmp_topic_tl}
+ \starray_get_prop:nnN {topics}{name} \l__ufrgscca_tmp_topic_tl
+ \starray_get_prop:nnN {topics}{color} \l__ufrgscca_tmp_color_tl
+ \tl_if_empty:NT \l__ufrgscca_tmp_color_tl
+ {
+ \tl_set:Nn \l__ufrgscca_tmp_color_tl {black}
+ }
+
+ \use:e { & & & & \exp_not:N \multicolumn{2}{J{11cm}}{\exp_not:N \smaller \exp_not:N \scshape\exp_not:N \textcolor{\l__ufrgscca_tmp_color_tl}{\l__ufrgscca_tmp_topic_tl}}\\* }
+
+ %% class summary
+ & & & & \multicolumn{2}{J{11cm}}{\smaller\scshape Súmula}\\*
+
+ \starray_get_prop:nnN {classes}{summary} \l__ufrgscca_tmp_summary_tl
+ \use:e { & & & & & \exp_not:N \smaller \l__ufrgscca_tmp_summary_tl\\*}
+
+ %% bibliography I
+ \starray_get_prop:nnN {classes}{bib seq} \l__ufrgscca_tmp_bib_seq
+ \seq_gset_eq:NN \l__ufrgscca_tmp_bibB_seq \l__ufrgscca_tmp_bib_seq
+ \seq_if_empty:NF \l__ufrgscca_tmp_bibB_seq
+ {
+ & & & & \multicolumn{2}{J{11cm}}{\smaller\scshape Bibliografia~ Básica~ Essencial}\\*
+ \seq_map_inline:Nn \l__ufrgscca_tmp_bibB_seq
+ {
+ & & & & & \smaller\textopenbullet ~\ ~ ##1\\
+ }
+ }
+
+ %% bibliography II
+ \starray_get_prop:nnN {classes}{bib basic seq} \l__ufrgscca_tmp_bib_seq
+ \seq_gset_eq:NN \l__ufrgscca_tmp_bibB_seq \l__ufrgscca_tmp_bib_seq
+ \seq_if_empty:NF \l__ufrgscca_tmp_bibB_seq
+ {
+ & & & & \multicolumn{2}{J{11cm}}{\smaller\scshape Bibliografia~ Básica}\\*
+ \seq_map_inline:Nn \l__ufrgscca_tmp_bibB_seq
+ {
+ & & & & & \smaller\textopenbullet ~\ ~ ##1\\
+ }
+ }
+
+ %% bibliography III
+ \starray_get_prop:nnN {classes}{bib compl seq} \l__ufrgscca_tmp_bib_seq
+ \seq_gset_eq:NN \l__ufrgscca_tmp_bibB_seq \l__ufrgscca_tmp_bib_seq
+ \seq_if_empty:NF \l__ufrgscca_tmp_bibB_seq
+ {
+ & & & & \multicolumn{2}{J{11cm}}{\smaller\scshape Bibliografia~ Complementar}\\*
+ \seq_map_inline:Nn \l__ufrgscca_tmp_bibB_seq
+ {
+ & & & & & \smaller\textopenbullet ~\ ~ ##1\\
+ }
+ }
+ \\[-1.5mm]
+ }
+ }
+ \bool_if:nTF {#1}
+ {
+ \end{tabular}
+ }
+ {
+ \end{longtable}
+ }
}
-\NewDocumentCommand\LstTopic{O{\goo}m}{%
-\xdef\gr@topic{#2}%
-\@ex\@ex\@ex\forcsvlist\@ex\@ex\@ex#1\@ex\@ex\@ex{\csname gr@topic:#2\endcsname}%
+
+\seq_new:N \l__ufrgscca_tmp_classlst_seq
+
+\NewDocumentCommand{\TabTopic}{m}
+ {
+ \starray_set_iter_from_hash:nnTF {topics}{#1}
+ {
+ \begin{tabular}{l@{\,}l@{\ -\ }J{11.5cm}}
+ \starray_get_prop:nnN {topics}{name} \l__ufrgscca_tmp_name_tl
+ \starray_get_prop:nnN {topics}{color} \l__ufrgscca_tmp_color_tl
+ \tl_if_empty:NF \l__ufrgscca_tmp_color_tl
+ {
+ \tl_set:Nn \l__ufrgscca_tmp_color_tl {black}
+ }
+ \use:e { & \exp_not:N \multicolumn{2}{J{11cm}}{\exp_not:N \textcolor{\l__ufrgscca_tmp_color_tl}{\exp_not:N \textbf{\l__ufrgscca_tmp_name_tl} }}}\\\hline
+ \starray_get_prop:nnN {topics}{class lst} \l__ufrgscca_tmp_classlst_seq
+ \seq_map_inline:Nn \l__ufrgscca_tmp_classlst_seq
+ {
+ \starray_set_iter_from_hash:nn {classes}{##1}
+ \starray_get_prop:nnN {classes}{name} \l__ufrgscca_tmp_name_tl
+ \use:e { & ##1 & \l__ufrgscca_tmp_name_tl\\}
+
+ }
+ \end{tabular}
+ }
+ {
+ \textbf{--Topic #1 non existant--}
+ }
+ }
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%
+%%%
+%%%
+%%%
+%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\bool_new:N \l__ufrgscca_colors_topic_bool
+\bool_new:N \l__ufrgscca_colors_class_bool
+
+\keys_define:nn { ufrgscca / curr graph}
+ {
+ deltaX .usage:n = general,
+ deltaX .fp_set:N = \l__ufrgscca_graph_deltaX_fp,
+ deltaX .value_required:n = true,
+ deltaX .initial:n = {4.2},
+
+ deltaY .usage:n = general,
+ deltaY .fp_set:N = \l__ufrgscca_graph_deltaY_fp,
+ deltaY .value_required:n = true,
+ deltaY .initial:n = {2.1},
+
+ clipminX .usage:n = general,
+ clipminX .fp_set:N = \l__ufrgscca_graph_clip_minX_fp,
+ clipminX .value_required:n = true,
+ clipminX .initial:n = {0},
+
+ maxX .usage:n = general,
+ maxX .fp_set:N = \l__ufrgscca_graph_maxX_fp,
+ maxX .value_required:n = true,
+ maxX .initial:n = {11.5},
+
+ clipminY .usage:n = general,
+ clipminY .fp_set:N = \l__ufrgscca_graph_clip_minY_fp,
+ clipminY .value_required:n = true,
+ clipminY .initial:n = {0},
+
+ maxY .usage:n = general,
+ maxY .fp_set:N = \l__ufrgscca_graph_maxY_fp,
+ maxY .value_required:n = true,
+ maxY .initial:n = {-18.5},
+
+ graph~ title .usage:n = general,
+ graph~ title .tl_set:N = \l__ufrgscca_graph_title_tl,
+ graph~ title .value_required:n = true,
+ graph~ title .initial:n = {Graph Title},
+
+ default~ color .usage:n = general,
+ default~ color .tl_set:N = \l__ufrgscca_graph_default_color_tl,
+ default~ color .value_required:n = true,
+ default~ color .initial:n = {black},
+
+ colors .usage:n = general,
+ colors .choice: ,
+ colors / none .code:n = {
+ \bool_set_false:N \l__ufrgscca_colors_topic_bool
+ \bool_set_false:N \l__ufrgscca_colors_class_bool
+ } ,
+ colors / topic .code:n = {
+ \bool_set_true:N \l__ufrgscca_colors_topic_bool
+ \bool_set_false:N \l__ufrgscca_colors_class_bool
+ } ,
+ colors / class .code:n = {
+ \bool_set_false:N \l__ufrgscca_colors_topic_bool
+ \bool_set_true:N \l__ufrgscca_colors_class_bool
+ } ,
+ colors / both .code:n = {
+ \bool_set_true:N \l__ufrgscca_colors_topic_bool
+ \bool_set_true:N \l__ufrgscca_colors_class_bool
+ } ,
+ colors / unknown .code:n = {
+ \bool_set_false:N \l__ufrgscca_colors_topic_bool
+ \bool_set_false:N \l__ufrgscca_colors_class_bool
+ } ,
+ }
+
+\keys_define:nn { ufrgscca / graph angles}
+ {
+ }
+
+\NewDocumentEnvironment{tikzGraphSem}{O{}}{%
+ \bool_set_false:N \l__ufrgscca_colors_topic_bool
+ \bool_set_false:N \l__ufrgscca_colors_class_bool
+
+ \keys_set:nn {ufrgscca / curr graph}{#1}
+ \fp_set:Nn \l__ufrgscca_graph_clip_maxX_fp {\l__ufrgscca_graph_maxX_fp * \l__ufrgscca_graph_deltaX_fp }
+ \fp_set:Nn \l__ufrgscca_graph_clip_maxY_fp {\l__ufrgscca_graph_maxY_fp * \l__ufrgscca_graph_deltaY_fp }
+ \begin{tikzpicture}[%
+ disc/.style={%
+ ellipse~ split, double, draw, line~ width=2pt,%
+ every~ text~ node part/.style={font=\small\bfseries},%
+ every~ lower~ node part/.style={font=\large\bfseries,color=blue}},%
+ dep/.style={->,dotted,line~ width=3pt}]%
+ \begin{scope}
+ \clip ( \fp_use:N \l__ufrgscca_graph_clip_minX_fp , \fp_use:N \l__ufrgscca_graph_clip_minY_fp )
+ -- ( \fp_use:N \l__ufrgscca_graph_clip_minX_fp , \fp_use:N \l__ufrgscca_graph_clip_maxY_fp )
+ -- ( \fp_use:N \l__ufrgscca_graph_clip_maxX_fp , \fp_use:N \l__ufrgscca_graph_clip_maxY_fp )
+ -- ( \fp_use:N \l__ufrgscca_graph_clip_maxX_fp , \fp_use:N \l__ufrgscca_graph_clip_minY_fp );
+ \filldraw[color=red]
+ ( \fp_eval:n {0.5*\l__ufrgscca_graph_clip_maxX_fp} , \fp_eval:n {-0.25*\l__ufrgscca_graph_deltaY_fp} ) node{\Huge\textbf{\l__ufrgscca_graph_title_tl}};%
+}{%
+ \end{scope}%
+ \end{tikzpicture}%
}
+
+
+\fp_new:N \l__ufrgscca_tmp_posX_fp
+\bool_new:N \l__ufrgscca_tmp_starred_bool
+\tl_new:N \l__ufrgscca_tmp_prereq_name_tl
+\tl_new:N \l__ufrgscca_graph_color_tl
+
+\NewDocumentCommand{\GraphEtp}{m}
+ {
+ \starray_set_iter_from_hash:nn {curricula.sem}{#1}
+ \starray_get_prop:nnN {curricula.sem}{pos} \l__ufrgscca_tmp_pos_tl
+ \starray_get_prop:nnN {curricula.sem}{name} \l__ufrgscca_tmp_name_tl
+ \fp_set:Nn \l__ufrgscca_tmp_posX_fp {\l__ufrgscca_tmp_pos_tl * \l__ufrgscca_graph_deltaX_fp - 0.5*\l__ufrgscca_graph_deltaX_fp}
+ \draw
+ ( \fp_use:N \l__ufrgscca_tmp_posX_fp , \fp_eval:n {-\l__ufrgscca_graph_deltaY_fp} )
+ node[disc](#1) {\l__ufrgscca_tmp_name_tl };
+ \starray_iterate_over:nn {curricula.sem.class}
+ {
+ \starray_get_prop:nnN {curricula.sem.class}{pos} \l__ufrgscca_tmp_pos_tl
+ \starray_get_prop:nnN {curricula.sem.class}{name} \l__ufrgscca_tmp_name_tl
+ \starray_set_iter_from_hash:ne {classes}{\l__ufrgscca_tmp_name_tl}
+ \starray_get_prop:nnN {classes}{cred} \l__ufrgscca_tmp_cred_tl
+ \starray_get_prop:nnN {classes}{topic} \l__ufrgscca_tmp_topic_tl
+ \tl_set:Ne \l__ufrgscca_graph_color_tl {\l__ufrgscca_graph_default_color_tl}
+ \bool_if:NT \l__ufrgscca_colors_topic_bool
+ {
+ \starray_set_iter_from_hash:ne {topics}{\l__ufrgscca_tmp_topic_tl}
+ \starray_get_prop:nnN {topics}{color} \l__ufrgscca_tmp_color_tl
+ \tl_if_empty:NF \l__ufrgscca_tmp_color_tl
+ {
+ \tl_set:Ne \l__ufrgscca_graph_color_tl {\l__ufrgscca_tmp_color_tl}
+ }
+ }
+ \bool_if:NT \l__ufrgscca_colors_class_bool
+ {
+ \starray_get_prop:nnN {curricula.sem.class}{color} \l__ufrgscca_tmp_color_tl
+ \tl_if_empty:NF \l__ufrgscca_tmp_color_tl
+ {
+ \tl_set:Ne \l__ufrgscca_graph_color_tl {\l__ufrgscca_tmp_color_tl}
+ }
+ }
+
+ \draw
+ ( \fp_use:N \l__ufrgscca_tmp_posX_fp , \fp_eval:n {\l__ufrgscca_tmp_pos_tl * \l__ufrgscca_graph_deltaY_fp - 1.25 * \l__ufrgscca_graph_deltaY_fp} )
+ node[disc,\l__ufrgscca_graph_color_tl](\l__ufrgscca_tmp_name_tl) {\l__ufrgscca_tmp_name_tl \nodepart{lower} \l__ufrgscca_tmp_cred_tl ~\ ~créd.};%
+ \starray_iterate_over:nn {curricula.sem.class.prereqset}
+ {
+ \starray_iterate_over:nn {curricula.sem.class.prereqset.prereq}
+ {
+ \starray_get_prop:nnN {curricula.sem.class.prereqset.prereq}{starred} \l__ufrgscca_tmp_starred_bool
+ \bool_if:NF \l__ufrgscca_tmp_starred_bool
+ {
+ \starray_get_prop:nnN {curricula.sem.class.prereqset.prereq}{name} \l__ufrgscca_tmp_prereq_name_tl
+ \starray_get_prop:nnN {curricula.sem.class.prereqset.prereq}{ang} \l__ufrgscca_tmp_ang_tl
+ \StrCut{\l__ufrgscca_tmp_ang_tl}{:}{\l__ufrgscca_partA_tl}{\l__ufrgscca_partB_tl}
+ \tl_if_empty:NTF \l__ufrgscca_partB_tl
+ {
+ \str_case:NnF \l__ufrgscca_partA_tl
+ {
+ {A} { \tl_set:Nn \l__ufrgscca_angOUT_tl {30}
+ \tl_set:Nn \l__ufrgscca_angIN_tl {180-30} }
+ {B} { \tl_set:Nn \l__ufrgscca_angOUT_tl {60}
+ \tl_set:Nn \l__ufrgscca_angIN_tl {180-60} }
+ {C} { \tl_set:Nn \l__ufrgscca_angOUT_tl {80}
+ \tl_set:Nn \l__ufrgscca_angIN_tl {180-80} }
+ {-A} { \tl_set:Nn \l__ufrgscca_angOUT_tl {-30}
+ \tl_set:Nn \l__ufrgscca_angIN_tl {180+30} }
+ {-B} { \tl_set:Nn \l__ufrgscca_angOUT_tl {-60}
+ \tl_set:Nn \l__ufrgscca_angIN_tl {180+60} }
+ {-C} { \tl_set:Nn \l__ufrgscca_angOUT_tl {-80}
+ \tl_set:Nn \l__ufrgscca_angIN_tl {180+80} }
+ {A*} { \tl_set:Nn \l__ufrgscca_angOUT_tl {30}
+ \tl_set:Nn \l__ufrgscca_angIN_tl {180+30} }
+ {B*} { \tl_set:Nn \l__ufrgscca_angOUT_tl {60}
+ \tl_set:Nn \l__ufrgscca_angIN_tl {180+60} }
+ {C*} { \tl_set:Nn \l__ufrgscca_angOUT_tl {80}
+ \tl_set:Nn \l__ufrgscca_angIN_tl {180+80} }
+ {-A*} { \tl_set:Nn \l__ufrgscca_angOUT_tl {-30}
+ \tl_set:Nn \l__ufrgscca_angIN_tl {180-30} }
+ {-B*} { \tl_set:Nn \l__ufrgscca_angOUT_tl {60}
+ \tl_set:Nn \l__ufrgscca_angIN_tl {180-60} }
+ {-C*} { \tl_set:Nn \l__ufrgscca_angOUT_tl {80}
+ \tl_set:Nn \l__ufrgscca_angIN_tl {180-80} }
+ }
+ {
+ \tl_set:Nn \l__ufrgscca_angOUT_tl {0}
+ \tl_set:Nn \l__ufrgscca_angIN_tl {180}
+ }%didn't match
+ }
+ {
+ \tl_set:Nn \l__ufrgscca_angOUT_tl {\l__ufrgscca_partA_tl}
+ \tl_set:Nn \l__ufrgscca_angIN_tl {180-\l__ufrgscca_partB_tl}
+ }
+ \path[dep,\l__ufrgscca_graph_color_tl] (\l__ufrgscca_tmp_prereq_name_tl)edge[out=\l__ufrgscca_angOUT_tl,in=\l__ufrgscca_angIN_tl] (\l__ufrgscca_tmp_name_tl);
+ }
+ }
+ }
+
+ }
+
+ }
+
diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-en-coord.def b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-en-coord.def
deleted file mode 100644
index 65d0ef93520..00000000000
--- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-en-coord.def
+++ /dev/null
@@ -1,101 +0,0 @@
-%%%==============================================================================
-%% Copyright 2022-23 by Alceu Frigeri
-%%
-%% This work may be distributed and/or modified under the conditions of
-%%
-%% * The [LaTeX Project Public License](http://www.latex-project.org/lppl.txt),
-%% version 1.3c (or later), and/or
-%% * The [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html),
-%% version 3 (or later)
-%%
-%% This work has the LPPL maintenance status *maintained*.
-%%
-%% The Current Maintainer of this work is Alceu Frigeri
-%%
-%% This is version 1.12 (2023/09/23)
-%%
-%% The list of files that compose this work can be found in the README.md file at
-%% https://ctan.org/pkg/ufrgscca
-%%
-%%%==============================================================================
-%% UFRGS stands for "Federal University of Rio Grande do Sul" in south Brazil
-%% EE stands for "Engineering School"
-%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym)
-%%%==============================================================================
-\makeatletter
-\def\tc@tmp@packname{ufrgscca-en-coord}
-\def\tc@tmp@altpackname{ufrgsccaencoord}
-\def\tc@tmp@packdesc{UFRGS/CCA English coord defs}
-\def\tc@tmp@packdate{2023/09/23}
-\def\tc@tmp@packversion{1.12}
-\let\@exp\expandafter
-\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion}
-
-
-\calendartitle{Calendário – \tcdef@coord@TCCperiod}
-
-\tcccalendarhead{Data/Período}{Semana Letiva}{Evento}
-\tcccalendarevent{01}{Apresentação da disciplina. Informações gerais. Reunião presencial com início às 18:30h, no Salão de Eventos do DELET.\newline {\bf Presença obrigatória.}}
-\tcccalendarevent{02}{Requerimento de matrícula. O(A) aluno(a) deve preencher o \emph{Formulário de Requerimento de Matrícula}, já com o resumo do trabalho, e encaminhá-lo ao setor de protocolos da UFRGS para abertura de processo. Posteriormente, o número do processo deve ser encaminhado por e-mail para \tccore@@ref{TCCcoord}{article} coordenador\tccore@@ref{TCCcoord}{narticle} da atividade. \newline{\bf Obs.~1}}
-%\tcccalendarevent{03}{Entrega do \emph{Formulário de Inscrição}, juntamente com o resumo do trabalho, no \tcdef@cover@secdivisionacronym .}
-\tcccalendarevent{09}{Encontro presencial: Como redigir um TCC, melhores práticas. Início às 18:30h, no Salão de Eventos do DELET.}% \newline {\bf Presença obrigatória.}}
-\tcccalendarevent{09}{Entrega VIA MOODLE do \emph{Relatório Parcial}, juntamente com o \emph{Formulário de Aprovação do Relatório Parcial e Banca Examinadora} assinado pelo orientador. \newline{\bf Obs.~2}}
-\tcccalendarevent{15}{Entrega de uma cópia impressa (ou eletrônica) do Trabalho de Conclusão a cada membro da banca, juntamente com os \emph{Formulários de Avaliação} e \emph{Formulários de correções} do trabalho. Entrega VIA MOODLE de uma cópia eletrônica do trabalho juntamente com o \emph{Formulário de Aprovação para Apresentação} e os recibos de recebimento assinados e datados pelos membros das bancas.}
-\tcccalendarevent{16}{Encontro presencial: Como apresentar um TCC, melhores técnicas. Início às 18:30h, no Salão de Eventos do DELET.}% \newline {\bf Presença obrigatória.}}
-\tcccalendarevent{17}{Apresentações dos Trabalhos de Conclusão de Curso. \newline{\bf Obs.~3}}
-\tcccalendarevent{17}{Entrega VIA MOODLE dos \emph{Formulários de correções} dos membros da banca.}
-\tcccalendarevent{18}{Entrega VIA MOODLE da versão final corrigida do trabalho e o \emph{Formulário de Aprovação das Correções}. Entrega do formulário de autorização para publicação (biblioteca) assinado na secretaria do DELAE. \newline{\bf Obs.~4}}
-\tcccalendarevent{19}{Para os TCCs em RECUPERAÇÃO, entrega VIA MOODLE da versão final corrigida do trabalho e o \emph{Formulário de Aprovação das Correções}. Entrega do formulário de autorização para publicação (biblioteca) assinado na secretaria do DELAE. \newline{\bf Obs.~5}}
-
-
-\tcccalendardesc{\begin{description}
-\item[Obs. 1]: Caso o aluno(a) já tenha um processo aberto de TCC, reusar o mesmo apenas anexando o novo requerimento de matrícula, caso necessário.
-\item[Obs. 2]: O relatório deve conter as declarações de concordância em participar da banca da parte dos professores convidados.
-\item[Obs. 3]: As bancas serão marcadas após a entrega do relatório parcial, de acordo com a disponibilidade dos professores convidados.
-\item[Obs. 4]: O \emph{Formulário de Aprovação das Correções} deve estar assinado pelo(a) orientador(a). Para relatórios em que o campo “Revisarei o trabalho depois de corrigido” tiver sido assinalado por algum membro da banca, a assinatura do(a) mesmo(a) também deverá constar no \emph{Formulário de Aprovação das Correções}.
-\item[Obs. 5]: Trabalho em RECUPERAÇÃO é aquele cuja nota final quando da defesa é insuficiente para aprovação OU aquele em que o campo “Reescrever tudo” do formulário de correções foi marcado por algum membro da banca. Neste caso, o \emph{Formulário de Aprovação das Correções} deve estar assinado tanto pelo(a) orientador(a) como pelo(s) membro(s) da banca designado(s) para reavaliar o trabalho, incluindo obrigatoriamente aqueles que tiverem marcado o campo “Revisarei o trabalho depois de corrigido”.\\\hrule
-\item[IMPORTANTE]: O(A) aluno(a) estará {\bf REPROVADO(A)} \emph{se falhar na entrega de qualquer um dos documentos aqui citados dentro dos prazos estipulados}.
-\end{description}}
-
-
-\studentlistformtitle{Lista de presença, \tcdef@coord@studentlistactivity, dia \tcdef@coord@studentlistdate}
-\studentlistactivity{apresentação da atividade de TCC}
-\studentlistdate{\number\day/\number\month}
-
-\tccreporttitle{Relatório parcial/final}
-\tccreportopening{Para registro}
-\tccreportdesc{Relatório parcial/final referente aos alunos matriculados na atividade de ensino de \tcdef@forms@formstitle\ semestre \tcdef@coord@TCCperiod .}
-
-\tccreportabsents{Desistentes com conceito (segundo semestre)}
-\tccreportdismiss{Desistentes sem conceito (primeiro semestre)}
-\tccreferralopening{Ao\\ \tcdef@cover@secretaryacronym\ da \tcdef@cover@universitydivision}
-
-\referralfailed{{REPROVAD\tccore@@ref{student}{Article}}}
-\referralapproved{{APROVAD\tccore@@ref{student}{Article}}}
-
-\referralexamapprovedtext{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \emph{\tccore@@ref{student}{}}\ apresentou o trabalho intitulado \emph{\tccore@@ref{student}{title}}\ no dia \tccore@@ref{student}{date}, n\~{a}o tendo sido considerad\tccore@@ref{student}{article} apt\tccore@@ref{student}{article} pela banca listada abaixo. Posto em exame, \tccore@@ref{student}{article} mesm\tccore@@ref{student}{article} foi \tcdef@coord@referralapproved\ com conceito final \tc@TCCgradeC .}
-
-\referralexamfailtext{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \emph{\tccore@@ref{student}{}}\ apresentou o trabalho intitulado \emph{\tccore@@ref{student}{title}}\ no dia \tccore@@ref{student}{date}, n\~{a}o tendo sido considerad\tccore@@ref{student}{article} apt\tccore@@ref{student}{article} pela banca listada abaixo. Posto em exame, \tccore@@ref{student}{article} mesm\tccore@@ref{student}{article} foi \tcdef@coord@referralfailed\ com conceito final \tc@TCCgradeD .}
-
-\referralfatetext{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \emph{\tccore@@ref{student}{}}\ apresentou o trabalho intitulado \emph{\tccore@@ref{student}{title}}\ no dia \tccore@@ref{student}{date}, tendo sido \tccoord@referralfate{\tccore@@ref{student}{Temp}} com conceito final \textbf{\tccoord@@fate{\Alph{tc@studentcount}}}, conforme quadro de notas abaixo. }
-
-\referralfailFF{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \emph{\tccore@@ref{student}{}}\ n\~{a}o concluiu o trabalho de conclus\~{a}o de Curso tendo sido \tcdef@coord@referralfailed\ com conceito final \textbf{FF}.}
-
-\boardlabel{Banca Examinadora}
-\boardstitle{Apresentações TCC em \tcdef@cover@course\ \tcdef@coord@TCCperiod\ \tcdef@coord@boardstitleB\ }
-\boardsworklabel{Título}
-\TCCgradesNlabel{Nota}
-\TCCgradesClabel{Conceito}
-\TCCgrades{A}{B}{C}{D}{FF}
-\TCCgradesN{9}{7.5}{6}
-
-\cocertificatetitle{CERTIFICADO}
-\cocertificateopenning{\`{A} quem interessar possa,\\ certificamos que}
-\cocertificatetext{atuou como co-orientador\tccore@@ref{coadvisor}{narticle} d\tccore@@ref{student}{article} alun\tccore@@ref{student}{article}\ \emph{\tccore@@ref{student}{}}\ no trabalho de conclus\~{a}o de curso intitulado \emph{\tccore@@ref{student}{title}}\ no semestre \tcdef@coord@TCCperiod.}
-
-\TCCcoordtitle{Coordenador\tccore@@ref{TCCcoord}{narticle} da atividade de ensino de\\ \tcdef@forms@formstitle\ }
-
-
-
-\advisornamegen{Orientador(a)}
-\advisornameplural{Orientadores}
diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-en-core.def b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-en-core.def
deleted file mode 100644
index 5ad00626f58..00000000000
--- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-en-core.def
+++ /dev/null
@@ -1,68 +0,0 @@
-%%%==============================================================================
-%% Copyright 2022-23 by Alceu Frigeri
-%%
-%% This work may be distributed and/or modified under the conditions of
-%%
-%% * The [LaTeX Project Public License](http://www.latex-project.org/lppl.txt),
-%% version 1.3c (or later), and/or
-%% * The [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html),
-%% version 3 (or later)
-%%
-%% This work has the LPPL maintenance status *maintained*.
-%%
-%% The Current Maintainer of this work is Alceu Frigeri
-%%
-%% This is version 1.12 (2023/09/23)
-%%
-%% The list of files that compose this work can be found in the README.md file at
-%% https://ctan.org/pkg/ufrgscca
-%%
-%%%==============================================================================
-%% UFRGS stands for "Federal University of Rio Grande do Sul" in south Brazil
-%% EE stands for "Engineering School"
-%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym)
-%%%==============================================================================
-\makeatletter
-\def\tc@tmp@packname{ufrgscca-en-core}
-\def\tc@tmp@altpackname{ufrgsccaencore}
-\def\tc@tmp@packdesc{UFRGS/CCA English core defs}
-\def\tc@tmp@packdate{2023/09/23}
-\def\tc@tmp@packversion{1.12}
-\let\@exp\expandafter
-\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion}
-
-
-\location{Porto~Alegre}{RS}
-
-\university{Federal University of Rio Grande do Sul}
-\universityacronym{UFRGS}
-\universitydivision{Engineering School}
-\divisiongradcouncil{\tcdef@cover@universitydivision Undergraduate Council}
-
-\secretaryacronym{SACAD}
-\secdivisionacronym{\tcdef@cover@secretaryacronym/EE}
-\graduationtitle{Control and Automation Engineering}
-\course{Control and Automation Engineering}
-\courseacronym{CCA}
-\coursecoord{current course coordinator}
-\coursecoordtitle{Course Coordinator}
-\advisorname{Advisor}%
-\coadvisorname{Coadvisor}%
-\examinername{Exam Committee}%
-
-\reportspecificinfo{%
- Graduation Project presented to COMGRAD-\tcdef@cover@courseacronym\ of \tcdef@cover@university\
- in partial fulfillment of the requirements for the
- degree of \emph{\tcdef@cover@graduationtitle }.
-}%
-
-\approvalspecificinfo{%
- This Project was considered adequate for obtaining the
- credits of the course TCC (Diplom Project) of \emph{\tcdef@cover@course }
- and approved in its final form by the Advisor and the Examination Committee.
-}%
-
-\profname{Professor}
-\coprofname{Professor}
-
-
diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-en-forms.def b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-en-forms.def
deleted file mode 100644
index 65d5bcd3b3d..00000000000
--- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-en-forms.def
+++ /dev/null
@@ -1,183 +0,0 @@
-%%%==============================================================================
-%% Copyright 2022-23 by Alceu Frigeri
-%%
-%% This work may be distributed and/or modified under the conditions of
-%%
-%% * The [LaTeX Project Public License](http://www.latex-project.org/lppl.txt),
-%% version 1.3c (or later), and/or
-%% * The [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html),
-%% version 3 (or later)
-%%
-%% This work has the LPPL maintenance status *maintained*.
-%%
-%% The Current Maintainer of this work is Alceu Frigeri
-%%
-%% This is version 1.12 (2023/09/23)
-%%
-%% The list of files that compose this work can be found in the README.md file at
-%% https://ctan.org/pkg/ufrgscca
-%%
-%%%==============================================================================
-%% UFRGS stands for "Federal University of Rio Grande do Sul" in south Brazil
-%% EE stands for "Engineering School"
-%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym)
-%%%==============================================================================
-\makeatletter
-\def\tc@tmp@packname{ufrgscca-en-forms}
-\def\tc@tmp@altpackname{ufrgsccaenforms}
-\def\tc@tmp@packdesc{UFRGS/CCA English forms defs}
-\def\tc@tmp@packdate{2023/09/23}
-\def\tc@tmp@packversion{1.12}
-\let\@exp\expandafter
-\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion}
-
-
-%%%%%%
-%%%%%%
-%%%%%% forms
-%%%%%%
-%%%%%%
-%%%%%%
-
-\formlocal{\tc@city,\hspace{4mm} de \hspace{1.2cm} de 20\hspace{4mm}.}
-
-\formssignaturelabel{Assinatura}
-\examinersignature{Assinatura\ \ d\tccore@@ref{examiner}{article}\ \ Avaliador\tccore@@ref{examiner}{narticle}}
-\boardsignature{Assinatura\ \ do\ \ Membro\ \ da\ \ Banca}
-\advisorsignature{Assinatura\ \ d\tccore@@ref{advisor}{article}\ \ Orientador\tccore@@ref{advisor}{narticle}}
-\coadvisorsignature{Assinatura\ \ d\tccore@@ref{coadvisor}{article}\ \ Co-orientador\tccore@@ref{coadvisor}{narticle}}
-\studentsignature{Assinatura\ \ d\tccore@@ref{student}{article}\ \ Alun\tccore@@ref{student}{article}}
-\studentsignaturegen{Assinatura\ \ do(a)\ \ Aluno(a)}
-\formsstudentlabel{Alun\tccore@@ref{student}{article}}
-\formsstudentlabelgen{Aluno(a)}
-\formproflabel{Professor(a)}
-\profname{Professor\tccore@@ref{advisor}{narticle}}
-\coprofname{Professor\tccore@@ref{coadvisor}{narticle}}
-\formsboardlabel{Membro da Banca}
-\formsadvisorlabel{Orientador\tccore@@ref{advisor}{narticle}}
-\formsadvisorlabelgen{Orientador(a)}
-\formscoadvisorlabel{Co-orientador\tccore@@ref{advisor}{narticle}}
-\formsexaminerlabel{Avaliador\tccore@@ref{examiner}{narticle}}
-\formsaltexaminerlabel{Suplente}
-\formstimelabel{Horário}
-
-
-%\formstopicAlabel{Conteúdo}
-%\formstopicBlabel{Trabalho Escrito}
-%\formstopicClabel{Apresentação}
-\formsworktitlelabel{Título do Trabalho}
-\formstemptitlelabel{Título Provisório}
-\formsstudentIDlabel{Cartão}
-\formsemaillabel{e-mail}
-\formsphonelabel{ramal}
-\agreelabel{De Acordo}
-
-\continuelabel{Continua...}
-
-\formsdatelabel{Data}
-\formstitle{Trabalho de Conclusão de Curso em \tcdef@cover@course}
-\formsfootnote{Entregar a cada membro da banca juntamente com a cópia do trabalho.}
-
-
-
-\renewreqformtitle{Formulário de Renovação da Inscrição na Atividade de Ensino Trabalho de Conclusão em \tcdef@cover@course}
-
-\renewreqformnotes{O resumo deve ser curto, i.e., não deve exceder este espaço. O texto deve ser escrito em parágrafo único, e por se tratar de proposta, poderá utilizar tempo futuro e não necessita ter motivação ou justificativa.\\
-Deve conter:
-\begin{enumerate*}[alpha)]
-\item O QUE será feito - descrição e objetivos.
-\item COMO será feito - metodologia.
-\item Resultados esperados.
-\end{enumerate*}
-}
-
-\reqformtitle{Formul\'{a}rio de Requerimento de Matr\'{i}cula}
-\reqformopening{Ilm\tccore@@ref{coursecoord}{article}. Sr\tccore@@ref{coursecoord}{narticle}.\par
-Coordenador\tccore@@ref{coursecoord}{narticle} da Comissão de Graduação do Curso em \tcdef@cover@course {da \tcdef@cover@universityacronym\ }}
-%\reqformopening{algo}
-
-\reqformdesc{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \tc@studentA , REGULARMENTE MATRICULAD\tccore@@ref{student}{Article} neste período letivo no curso \emph{\tcdef@cover@course\ }, desta universidade, portador\tccore@@ref{student}{narticle} do cartão de identificação n$^o$ \tc@studentAID\ vem por meio desta solicitar matrícula na atividade de ensino de \tcdef@forms@formstitle}
-
-\coadvisorformtitle{Requerimento de Autorização de Co-Orientação}
-\coadvisorformdesc{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \tc@studentA , REGULARMENTE MATRICULAD\tccore@@ref{student}{Article} na atividade de TCC neste período letivo, vem por meio desta solicitar autorização para registro de co-orientador de TCC, conforme justificativa abaixo.}
-
-\formsbrieflabel{Resumo}
-
-\formsstudentemaillabel{Email d\tccore@@ref{student}{article} Alun\tccore@@ref{student}{article}}
-
-\formsadvisoremaillabel{Email d\tccore@@ref{advisor}{article} Orientador\tccore@@ref{advisor}{narticle}}
-
-\formsreasonlabel{Justificativa}
-
-
-\examformtitle{Formul\'{a}rio de Avalia\c{c}\~{a}o}
-
-\examformdesc{A nota (variando de zero a dez) atribuída por cada membro da banca examinadora será dada considerando o desempenho d\tccore@@ref{student}{article} alun\tccore@@ref{student}{article} nos 3 pontos apresentados na tabela abaixo.}
-
-\examformnoteslabel{Observações}
-
-\examformnotes{\ \\Posteriormente, \tccore@@ref{TCCcoord}{article} professor\tccore@@ref{TCCcoord}{narticle} coordenador\tccore@@ref{TCCcoord}{narticle} calculará a nota final atribuída por cada membro da banca examinadora, de acordo com a seguinte ponderação:\\[2mm] {\bf Nota Final Banca = \tc@TCCpointAweight\ x \tc@TCCpointAlabel\ + \tc@TCCpointBweight\ x \tc@TCCpointBlabel\ + \tc@TCCpointCweight\ x \tc@TCCpointClabel\ } \\[2mm] A média final da atividade será dada pela média das notas finais (calculadas com a expressão acima) atribuidas por cada um dos membros da banca examinadora.}
-
-\examboardformtitle{Formulário de Aprovação do Relatório Parcial e Banca Examinadora}
-
-\examboardformdesc{Aprovo o Relatório Parcial e nominata da Banca Examinadora acima relacionada.}
-
-\formsboardtitle{Banca Examinadora}
-
-\advisorapprovalformtitle{Formulário de Aprovação para Apresentação}
-
-\advisorapprovalformdesc{{\bf Parecer d\tccore@@ref{advisor}{article} Orientador\tccore@@ref{advisor}{narticle}}\footnote{Preenchimento Obrigatório}}
-
-\advisorapprovalformdescB{Aprovo a versão final do trabalho submetido pel\tccore@@ref{student}{article} alun\tccore@@ref{student}{article} e considero \tccore@@ref{student}{article} mesm\tccore@@ref{student}{article} apt\tccore@@ref{student}{article} para apresentação.}
-
-\rectifyapprovalformtitle{Formulário de Aprovação das Correções}
-
-\rectifyapprovalformdesc{\begin{description}
-\item[Observação 1:] A nota final será a já atribuída pela Banca Examinadora no momento da Defesa. Caso a versão final corrigida do trabalho mais este formulário não sejam entregues até a data estipulada, o conceito do aluno passará a ser {\bf D}.
-\item[Observação 2:] A assinatura d\tccore@@ref{advisor}{article} orientador\tccore@@ref{advisor}{narticle} é obrigatória, entretanto a assinatura dos membros da banca só é necessária caso o(a) mesmo(a) tenha marcado a opção "$\Box$ Revisarei o trabalho depois de corrigido" no \emph{Formulário de Correções}.
-\end{description}}
-
-\receiptformtitle{Recibo de entrega de cópia da versão final do Trabalho de Conclusão}
-
-\receiptformfootnote{Entregar a cada membro da banca juntamente com a cópia do trabalho final e após encaminhar ao \tcdef@cover@secretaryacronym .}
-
-\receiptformdesc{Declaro que encontra-se em minha posse cópia da versão final do Trabalho de Conclusão de Curso em \tcdef@cover@course\ d\tccore@@ref{student}{article} alun\tccore@@ref{student}{article} }
-
-
-\reviewformtitle{Formulário de Correções}
-\reviewformdesc{Correções: \parbox[t]{.8\textwidth}{
-\begin{description}[tcc,noitemsep]
-\item[$\Box$] Nenhuma
-\item[$\Box$] Ortográfica
-\item[$\Box$] Regras de Escrita
-\item[$\Box$] Equações
-\item[$\Box$] Resumo
-\item[$\Box$] Abstract
-\item[$\Box$] Índice
-\item[$\Box$] Introdução
-\item[$\Box$] Conclusões
-\item[$\Box$] Corpo do Trabalho
-\item[$\Box$] Resultados
-\item[$\Box$] Adicionar mais exemplos
-\item[$\Box$] Figuras
-\item[$\Box$] Tabelas
-\item[$\Box$] {\bf Reescrever tudo}\footnotemark[2]
-\item[$\Box$] Outras: \\
-\begin{tabular}{p{0.7\textwidth}}
-~\\\hline
-~\\\hline
-~\\\hline
-~\\\hline
-\end{tabular}\\[-1mm]
-\item[$\Box$] {\bf Revisarei o trabalho depois de corrigido}%\footnotemark[2]
-\end{description}}
-}
-
-\reviewformfootnoteB{Neste caso \tccore@@ref{student}{article} alun\tccore@@ref{student}{article} estará em EXAME e receberá conceito final C ou D, conforme revisão final do texto.}
-
-\reviewformfootnote{\tcdef@forms@formsfootnote\ Após a apresentação, retornar este à coordenação do TCC.}
-
-\formsrectifyOKdesc{Correções satisfatórias: \hspace*{1cm}$\Box$\ sim\hspace*{2cm}$\Box$\ não}
-
-\TCCpointsweight{0.35}{0.35}{0.3}
-\TCCpointslabel{Conteúdo}{Trab. Escrito}{Apresentação}
diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-forms.sty b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-forms.sty
index 8ccebc5f24b..c5f3afe8e9b 100644
--- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-forms.sty
+++ b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-forms.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version 1.12 (2023/09/23)
+%% This is version {2.0} {2023/11/23}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -23,716 +23,225 @@
%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym)
%%%==============================================================================
\NeedsTeXFormat{LaTeX2e}[2022/06/01]
-\def\tc@tmp@packname{ufrgscca-forms}
-\def\tc@tmp@altpackname{ufrgsccaforms}
-\def\tc@tmp@packdesc{UFRGS/CCA forms commands}
-\def\tc@tmp@packdate{2023/09/23}
-\def\tc@tmp@packversion{1.12}
-\let\@exp\expandafter
-\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion}
-\@exp\@exp\@exp\ProvidesPackage\@exp\@exp\@exp{\@exp\tc@tmp@packname\@exp}\@exp[\tc@tmp@packdate\space v\tc@tmp@packversion\space\tc@tmp@packdesc]
-\RequirePackage{amsfonts}
-
-
-%% local for tc@formsigdate {ufrgscca-forms}
-
-\cmdfactory<forms>{formssignaturelabel,examinersignature,boardsignature,advisorsignature,coadvisorsignature}
-\cmdfactory<forms>{studentsignature,studentsignaturegen}%
-\cmdfactory<forms>{formsstudentlabel,formsstudentlabelgen,formproflabel}%
-\cmdfactory<forms>{formsboardlabel,formsadvisorlabel,formsadvisorlabelgen}%
-\cmdfactory<forms>{formscoadvisorlabel,formsexaminerlabel,formsaltexaminerlabel}
-\cmdfactory<forms>{formstimelabel,formsworktitlelabel,formstemptitlelabel}
-\cmdfactory<forms>{formsstudentIDlabel,formsemaillabel,formsphonelabel}
-\cmdfactory<forms>{agreelabel,continuelabel}
-\cmdfactory<forms>{formsdatelabel,formstitle,formstitleTR,formsfootnote}
-\cmdfactory<forms>{renewreqformtitle,renewreqformnotes,reqformtitle,reqformopening,reqformdesc}%
-\cmdfactory<forms>{reqformdescTR}%
-\cmdfactory<forms>{coadvisorformtitle,coadvisorformdesc}
-\cmdfactory<forms>{formsbrieflabel,formsstudentemaillabel,formsadvisoremaillabel,formscoadvisoremaillabel}
-\cmdfactory<forms>{formsreasonlabel}
-\cmdfactory<forms>{examformtitle,examformdesc,examformnoteslabel}
-\cmdfactory<forms>{examformnotes,examboardformtitle,examboardformdesc}%
-\cmdfactory<forms>{examboardformtitleTMP,examboardformdescTMP}%
-\cmdfactory<forms>{formsboardtitle,advisorapprovalformtitle,advisorapprovalformdesc,advisorapprovalformdescB}
-\cmdfactory<forms>{rectifyapprovalformtitle,rectifyapprovalformdesc}%
-\cmdfactory<forms>{rectifyapprovalTRformdesc}%
-\cmdfactory<forms>{receiptformtitle,receiptformfootnote,receiptformdesc}%
-\cmdfactory<forms>{reviewformtitle,reviewformdesc,reviewformfootnoteB,reviewformfootnote}
-\cmdfactory<forms>{formsTRtitle,TRformfootnote}
-\cmdfactory<forms>{TRboardformtitle,TRformfootnote}
-\cmdfactory<forms>{reqArgument}
-
-\cmdfactory<forms>{formsrectifyOKdesc}
-
-\cmdfactory<forms>{reqformdescgen}
-\cmdfactory<forms>{formsinternshiptitle,reqforminternshipdesc,internshipreqformnotes}
-\cmdfactory<forms>{formstutorlabel,formstutoremaillabel}
-\cmdfactory<forms>{formssupervisorlabel,formssupervisoremaillabel}
-\cmdfactory<forms>{formsinternshipstartlabel,formsinternshipendlabel,formsinternshiplengthlabel,formsinternshipregisterlabel}
-\cmdfactory<forms>{reqforminternshipinfo}
-\cmdfactory<forms>{supervisorsignature,tutorsignature,internshipcoordsignature}
-\cmdfactory<forms>{formssupervisorlabel}
-\cmdfactory<forms>{supervisorformtitle}
-\cmdfactory<forms>{tutorformtitle}
-\cmdfactory<forms>{internshipstudentinfo,internshipsupervisorinfo,internshiptutorinfo,internshipcompanyinfo,internshipperiod}
-\cmdfactory<forms>{internshipcoordinfo}
-
-\cmdfactory<forms>{internsupervisorgradesform,internsupervisornote,internsupervisorcomments}
-\cmdfactory<forms>{internshiptutorcomments,internshipcoordcomments}
-\cmdfactory<forms>{interntutorgrade,interncoordgrade}
-
-\NewDocumentCommand{\TCCpointsweight}{mmm}{%
- \gdef\tc@TCCpointAweight{#1}%
- \gdef\tc@TCCpointBweight{#2}%
- \gdef\tc@TCCpointCweight{#3}%
-}%
-
-\NewDocumentCommand{\TCCpointslabel}{mmm}{%
- \gdef\tc@TCCpointAlabel{#1}%
- \gdef\tc@TCCpointBlabel{#2}%
- \gdef\tc@TCCpointClabel{#3}%
-}%
-%
-\NewDocumentCommand{\TCCIpointsweight}{mmmm}{%
- \gdef\tc@TCCIpointAweight{#1}%
- \gdef\tc@TCCIpointBweight{#2}%
- \gdef\tc@TCCIpointCweight{#3}%
- \gdef\tc@TCCIpointDweight{#4}%
-%% \gdef\tc@TCCIpointscale{#5}%
-}%
-
-\NewDocumentCommand{\TCCIpointslabel}{mmmm}{%
- \gdef\tc@TCCIpointAlabel{#1}%
- \gdef\tc@TCCIpointBlabel{#2}%
- \gdef\tc@TCCIpointClabel{#3}%
- \gdef\tc@TCCIpointDlabel{#4}%
-}%
-
-
-
-
-\iftcif@english%
-\input{ufrgscca-en-forms.def}%
-\else%
-\input{ufrgscca-ptBR-forms.def}%
-\fi%
-
-\input{ufrgscca-formsTR.sty}
-\input{ufrgscca-formsintern.sty}
-
-
-
-
-
-
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-%% Examiners forms%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\tcforms@examinersForms}{}{%
- \tccore@examiners{examinerA}%
- \tcforms@examinersform{examinerA}%
- \tcforms@reviewform{examinerA}%
- \tccore@examiners{examinerB}%
- \tcforms@examinersform{examinerB}%
- \tcforms@reviewform{examinerB}%
- \tccore@examiners{examinerC}%
- \tcforms@examinersform{examinerC}%
- \tcforms@reviewform{examinerC}%
- \tccore@examiners{altexaminerA}%
- \tcforms@examinersform{altexaminerA}%
- \tcforms@reviewform{altexaminerA}%
-}%
-%
-\NewDocumentCommand{\tcforms@examinerforms}{m}{%
- \tcforms@examinersform{#1}%
- \tcforms@reviewform{#1}%
-}%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% Board receipt forms%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\tcforms@receiptforms}{}{%
- \tcforms@receiptform{examinerA}%
- \tcforms@receiptform{examinerB}%
- \tcforms@receiptform{examinerC}%
- \tcforms@receiptform{altexaminerA}%
-}%
-%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% Aux commands%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\tcforms@formsigdate}{m}{%%
- \begin{flushright} \tcdef@core@formlocal %
- ~\vspace*{6mm}\\%
-%
- $\overline{#1}$%%
- \end{flushright}%
-}%
-%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% examiners description (for Board approval forms)%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\tcforms@examinerdesc}{O{\tcdef@forms@formsexaminerlabel}mm}{%%
- \tccore@examiners{#3}%
- \@ifundefined{tc@#2@#3}{--}{#1: {\bf \csname tc@#2@#3\endcsname}%
-
- \hfill \tcdef@forms@formsemaillabel: {\bf \csname tc@#2@#3email\endcsname} ~\tcdef@forms@formsphonelabel: {\bf \csname tc@#2@#3phone\endcsname} ~\tcdef@forms@agreelabel: \rule{\tc@agreerule}{.1pt}\\}%
-}%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% TCC description (for many forms)%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%\NewDocumentCommand{\tcforms@tccdesc}{}{%%
-% \noindent\tcdef@forms@formsstudentlabel : {\bf \tc@studentA} \hfill \tcdef@forms@formsstudentIDlabel : {\bf \tc@studentAID}%
-%
-% \noindent\tcdef@forms@formsworktitlelabel : {\bf \@title}\\[-4mm]%
-%
-% \noindent\tcdef@forms@formsadvisorlabel : {\bf \tc@studentA@advisor}\\%
-%}%
-%
-\NewDocumentCommand{\tcforms@tccdesc}{}{%%
- \tcforms@studentIDheader
-
- \tcforms@advisorIDheader
-}%
+\ProvidesExplPackage
+ {ufrgscca-forms}
+ {2023/11/23}
+ {2.0}
+ {UFRGS/CCA forms commands}
+
+
+%%%%%%%
+%%%
+%%% Just an attempt of having my packages info in a regular way
+%%% Idea being: { <pck-name> / pkg info } for each and all.
+%%%
+%%%%%%%
+\keys_define:nn { ufrgscca-forms / pkg info}
+ {
+ name .code:n = {ufrgscca-forms} ,
+ prefix .code:n = {ufrgscca} ,
+ date .code:n = {2023/11/23},
+ version .code:n = {2.0} ,
+ description .code:n = {UFRGS/CCA~ forms~commands}
+ }
+\cs_if_exist:NF \__codedesc_pkg_info:nn
+ {
+ \cs_new_protected:Npn \__codedesc_pkg_info:nn #1#2
+ { \keys_set:nn {#1 / pkg info}{#2} }
+ }
+\cs_if_exist:NF \PkgInfo
+ { \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} } }
+\cs_if_exist:NF \PkgDescription
+ {
+ \NewDocumentCommand \PkgDescription {m}
+ {
+ \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par
+ }
+ }
+%%%%%%%
+%%% End of cut-n-paste
+%%%%%%%
+
+
+
+
+\RequirePackage{starray}
+\RequirePackage{amsfonts}
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% TCC (new) generic form %
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% parameters:
-% #1 : footnote for 'form title'
-% #2 : form 'heading title' (TCC I, for instance)
-% #3 : 'form title'
-% #4 : form oppening
-% #5 : form body
-% #6 : form closing
-%
-\NewDocumentCommand{\tcforms@genform}{O{}mmmmm}{%
- \tc@formtopbox[tcdef@forms@formsfootnote]{\tcdef@forms@formstitle}{\tcdef@forms@examformtitle}%
-%
- \vfill%
- #4
- \vfill%
- #5
- \vfill%
- #6
- \pagebreak
-}
+\cs_generate_variant:Nn \tl_gset:Nn {Ne}
-\NewDocumentCommand{\tcforms@studentIDheader}{}{
- \noindent\tcdef@forms@formsstudentlabel : {\bf \csname tc@student\Alph{tc@studentcount}\endcsname}\hfill \tcdef@forms@formsstudentIDlabel : {\bf \tc@studentAID}\\%
- \noindent\tcdef@forms@formsworktitlelabel : \@ifundefined{tc@student\Alph{tc@studentcount}title}{\textsl{\@title}}{\textsl{\csname tc@student\Alph{tc@studentcount}title\endcsname}}\\
+\DeclareKeys[forms]{
+ internreqform.usage = general,
+ internreqform.code = {
+ \MakeForm{internshiprequest}
+ },
+ internsupervisorform.usage = general,
+ internsupervisorform.code = {
+ \MakeForm{internshipsupervisorform}
+ },
+ interntutorform.usage = general,
+ interntutorform.code = {
+ \MakeForm{internshiptutorform}
+ },
+ reqform-I.usage = general,
+ reqform-I.code = {
+ \MakeForm{request-I}
+ },
+ reqform-II.usage = general,
+ reqform-II.code = {
+ \MakeForm{request-II}
+ },
+ coadvisor-I.usage = general,
+ coadvisor-I.code = {
+ \MakeForm{coadvisor-I}
+ },
+ coadvisor-II.usage = general,
+ coadvisor-II.code = {
+ \MakeForm{coadvisor-II}
+ },
+ boardapproval-I.usage = general,
+ boardapproval-I.code = {
+ \MakeForm{boardapproval-I}
+ },
+ boardapproval-II.usage = general,
+ boardapproval-II.code = {
+ \MakeForm{boardapproval-II}
+ },
+ advisorsapproval-I.usage = general,
+ advisorsapproval-I.code = {
+ \MakeForm{advisorsapproval-I}
+ },
+ advisorsapproval-II.usage = general,
+ advisorsapproval-II.code = {
+ \MakeForm{advisorsapproval-II}
+ },
+ receipts-I.usage = general,
+ receipts-I.code = {
+ \MakeForm{receipts-II}
+ },
+ receipts-II.usage = general,
+ receipts-II.code = {
+ \MakeForm{receipts-II}
+ },
+ examinersforms-I.usage = general,
+ examinersforms-I.code = {
+ \SetReviewer{2}
+ \MakeForm{examinersform-I}
+ \SetReviewer{3}
+ \MakeForm{examinersform-I}
+ },
+ examinersforms-II.usage = general,
+ examinersforms-II.code = {
+ \SetReviewer{1}
+ \MakeForm{receipts-II}
+ \MakeForm{examinersform-II}
+ \MakeForm{correctionsform-II}
+ \SetReviewer{2}
+ \MakeForm{receipts-II}
+ \MakeForm{examinersform-II}
+ \MakeForm{correctionsform-II}
+ \SetReviewer{3}
+ \MakeForm{receipts-II}
+ \MakeForm{examinersform-II}
+ \MakeForm{correctionsform-II}
+ },
+ rectifyapproval-I.usage = general,
+ rectifyapproval-I.code = {
+ \MakeForm{rectifyapproval-I}
+ },
+ rectifyapproval-II.usage = general,
+ rectifyapproval-II.code = {
+ \MakeForm{rectifyapproval-II}
+ },
}
-\NewDocumentCommand{\tcforms@examinerIDheader}{m}{
- %\tccore@examiners{#1}
- \noindent\tcdef@forms@formsexaminerlabel : \textbf{\csname tc@student\Alph{tc@studentcount}@#1\endcsname}%
-}
-\NewDocumentCommand{\tcforms@advisorIDheader}{}{
- \noindent\tcdef@forms@formsadvisorlabel : \textbf{\csname tc@student\Alph{tc@studentcount}@advisor\endcsname}%
+\NewDocumentCommand{\tcforms}{m}{%
+ \SetKeys[forms]{#1}%
}
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% TCC examiner form (grades)%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\tcforms@examinersform}{m}{%
- \tc@formtopbox[tcdef@forms@formsfootnote]{\tcdef@forms@formstitle}{\tcdef@forms@examformtitle}%
-%
- \vfill%
-% \tcdef@forms@formsstudentlabel : {\bf \csname tc@student\Alph{tc@studentcount}\endcsname}\\%
-% \tcdef@forms@formsexaminerlabel : \csname tc@student\Alph{tc@studentcount}@#1\endcsname%
- \tcforms@studentIDheader
-
- \tcforms@examinerIDheader{#1}
- \vfill%
- \tcdef@forms@examformdesc%
- \vfill%
-
- \begin{center}
- \begin{tabular}{|c|c|c|}%
- \hline%
- \tc@TCCpointAlabel & \tc@TCCpointBlabel & \tc@TCCpointClabel \\\hline%
- & & \\\hline
- \end{tabular}%
- \end{center}%
-
- \vfill%
-
- \tcforms@formsigdate{\tcdef@forms@examinersignature}%
- \vfill%
- \begin{description}
- \item[\tcdef@forms@examformnoteslabel:] \tcdef@forms@examformnotes
- \end{description}%
-
- \vfill%
- \pagebreak%
-}%
-%
-%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% TCC examiners reviewer form (corrections)%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\tcforms@reviewform}{m}{%
- \tc@formtopbox[tcdef@forms@reviewformfootnote]{\tcdef@forms@formstitle}{\tcdef@forms@reviewformtitle}%
-
- \vfill%
-% \tcdef@forms@formsstudentlabel : {\bf \expandafter\csname tc@student\Alph{tc@studentcount}\endcsname}\\%
-% \tcdef@forms@formsexaminerlabel : \expandafter\csname tc@student\Alph{tc@studentcount}@#1\endcsname%
- \tcforms@studentIDheader
-
- \tcforms@examinerIDheader{#1}
- \vfill%
- \resizebox{0.9\textwidth}{!}{%%
- \tcdef@forms@reviewformdesc%
- }%
- \footnotetext[2]{\tcdef@forms@reviewformfootnoteB}%
- \vfill%
-
- \tcforms@formsigdate{\tcdef@forms@examinersignature}%
- \vfill%
- \pagebreak%
-}%
-%
-
-
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% TCC requirement form (TCC register)%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\tcforms@reqform}{}{%
- \tc@formtopbox{\tcdef@forms@formstitle}{\tcdef@forms@reqformtitle}%
-
- \vfill%
-
- \tcdef@forms@reqformopening%
- \vfill%
-
- \tcdef@forms@reqformdesc%
- \vfill%
-
- \tcdef@forms@formstemptitlelabel : \@title %
-
- \tcdef@forms@formsstudentemaillabel : {\bf \tc@studentAemail} %
-
- \tcdef@forms@formsadvisorlabel : \tc@studentA@advisor%
-
- \tcdef@forms@formsadvisoremaillabel : {\bf \tc@studentA@advisoremail}%
- \hfill \tcdef@forms@formsphonelabel : {\bf \tc@studentA@advisorphone}%
-
-
- \@ifundefined{tc@studentA@coadvisor}{%
- \tcdef@forms@formscoadvisorlabel : \rule{\tc@namerule}{.1pt}%
-
- \tcdef@forms@formscoadvisoremaillabel : {\bf \rule{\tc@emailrule}{.1pt}}%
- \hfill \tcdef@forms@formsphonelabel : {\bf \rule{\tc@phonerule}{.1pt}}%
- }
+\NewDocumentCommand{\tcemptyforms}{m}
{
- \tcdef@forms@formscoadvisorlabel : \tc@studentA@coadvisor%
-
- \tcdef@forms@formscoadvisoremaillabel : {\bf \tc@studentA@coadvisoremail}%
- \hfill \tcdef@forms@formsphonelabel : {\bf \tc@studentA@coadvisorphone}%
- }%
-
- %{\bf \tcdef@forms@formsbrieflabel}:\footnote[1]{\tcdef@forms@renewreqformnotes}%
-
- \vfill%
- \tcdef@forms@reqArgument
-
-
- \tcdef@core@tccArgument%
-
- \vfill
- \parbox[t]{.45\textwidth}{\tcforms@formsigdate{\tcdef@forms@studentsignature}}\hfill%
- \parbox[t]{.45\textwidth}{\tcforms@formsigdate{\tcdef@forms@advisorsignature}}%
- \pagebreak%
-}%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% TCC co-advisor requirement form (TCC register)%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\tcforms@coadvisorform}{}{%
- \@ifundefined{tc@studentA@coadvisor}{%
- \coadvisor{\rule{\tc@namerule}{.1pt}}{}%
- \coadvisorinfo{}{\rule{\tc@titlerule}{.1pt}}{\rule{\tc@emailrule}{.1pt}}{\rule{\tc@phonerule}{.1pt}}%
- }{}%
- \tc@formtopbox{\tcdef@forms@formstitle}{\tcdef@forms@coadvisorformtitle}%
-
- \vfill%
-
- \tcdef@forms@reqformopening%
- \vfill%
-
- \tcdef@forms@coadvisorformdesc%
- \vfill%
-
- \tcdef@forms@formstemptitlelabel : \@title %
-
- \tcdef@forms@formsadvisorlabel: \tc@studentA@advisor
-
- \tcdef@forms@formscoadvisorlabel: \tc@studentA@coadvisor%
-
- \tcdef@forms@formscoadvisoremaillabel : {\bf \tc@studentA@coadvisoremail}%
- \hfill \tcdef@forms@formsphonelabel : {\bf \tc@studentA@coadvisorphone}%
-
-
- \vfill%
- {\bf \tcdef@forms@formsreasonlabel}:%
-
- \tcdef@core@tcccoadvisorbrief% !!!! What a Hell ?!?!?!
-
- \tcforms@formsigdate{\tcdef@forms@studentsignature}%
-
- \parbox[t]{.45\textwidth}{\tcforms@formsigdate{\tcdef@forms@advisorsignature}}\hfill%
- \parbox[t]{.45\textwidth}{\tcforms@formsigdate{\tcdef@forms@coadvisorsignature}}%
- \pagebreak%
-}%
-%
-%
-%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% TCC renew requirement form (TCC register)%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\tcforms@renewreqform}{}{%
- \tc@formtopbox{\tcdef@forms@formstitle}{\tcdef@forms@renewreqformtitle}%
-
- \vfill%
- \tcforms@tccdesc%
-
- \tcdef@forms@formsstudentemaillabel : {\bf \tc@studentAemail} %
-
- \hfill \tcdef@forms@formsadvisoremaillabel : {\bf \tc@studentA@advisoremail}%
-
- \hfill \tcdef@forms@formsphonelabel : {\bf \tc@studentA@advisorphone}%
- \vfill%
- {\bf \tcdef@forms@formsbrieflabel}:\footnote[1]{\tcdef@forms@renewreqformnotes}%
-
- \tcdef@core@tccbrief%
- \vfill%
- \tcforms@formsigdate{\tcdef@forms@studentsignature}%
- \vfill%
-
- \tcforms@formsigdate{\tcdef@forms@advisorsignature}%
- \vfill%
- \pagebreak%
-}%
-%
-%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% TCC Board approval form%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\tcforms@examboardform}{}{%
- \tc@formtopbox{\tcdef@forms@formstitle}{\tcdef@forms@examboardformtitle}%
-
- \vfill%
-
- \tcforms@tccdesc%
-
- \vfill%
- \begin{center}
- \tcdef@forms@formsboardtitle
- \end{center}%
-
- \tcforms@examinerdesc{studentA}{examinerA}%
-
- \tcforms@examinerdesc{studentA}{examinerB}%
-
- \tcforms@examinerdesc{studentA}{examinerC}%
-
- \tcforms@examinerdesc[\tcdef@forms@formsaltexaminerlabel]{studentA}{altexaminerA}%
-
- \vfill%
+ \__ufrgscca_emptyfields:
+ \SetKeys[forms]{#1}%
+ }
- \tcdef@forms@examboardformdesc%
- \vfill%
- \tcforms@formsigdate{\tcdef@forms@advisorsignature}%
- \vfill%
- \pagebreak%
-}%
-%
-%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% TCC Board approval form%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\tcforms@examboardformTMP}{}{%
- \tc@formtopbox{\tcdef@forms@formstitle}{\tcdef@forms@examboardformtitleTMP}%
+\int_new:N \l__ufrgscca_a_int
+\int_new:N \l__ufrgscca_b_int
+\NewDocumentCommand{\BlankLines}{m}{
+ \int_zero:N \l__ufrgscca_a_int
+ \int_set:Nn \l__ufrgscca_b_int {#1}
+ \int_do_until:nNnn {\l__ufrgscca_a_int} {=} {\l__ufrgscca_b_int}
+ {
+ \int_incr:N \l__ufrgscca_a_int
+ \hrulefill\\\par%
- \vfill%
+ }
+}
- \tcforms@tccdesc%
+\NewDocumentCommand{\SetForm}{mm+m}{
+ \prop_put:Nnn \l__ufrgscca_forms_prop {#1.#2}{#3}
+}
- \vfill%
+\NewDocumentCommand{\MakeForm}{m} {
\begin{center}
- \tcdef@forms@formsboardtitle
- \end{center}%
-
- \tcforms@examinerdesc{studentA}{examinerA}%
-
- \tcforms@examinerdesc{studentA}{examinerB}%
-
- \tcforms@examinerdesc{studentA}{examinerC}%
-
- \tcforms@examinerdesc[\tcdef@forms@formsaltexaminerlabel]{studentA}{altexaminerA}%
-
- \vfill%
-
- \tcdef@forms@examboardformdescTMP%
- \vfill%
-
- \tcforms@formsigdate{\tcdef@forms@advisorsignature}%
- \vfill%
-
- \pagebreak%
-}%
-%
-%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% TCC Board receipts form%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\tcforms@receiptform}{m}{%
- \tc@formtopbox[tcdef@forms@receiptformfootnote]{\tcdef@forms@formstitle}{\tcdef@forms@receiptformtitle}%
-
- \vfill%
-
- \tcforms@tccdesc\\%
-
- \noindent\tcdef@forms@formsboardlabel : {\bf \csname tc@student\Alph{tc@studentcount}@#1\endcsname }%
-
- \vfill%
- \tcdef@forms@receiptformdesc {\bf \tc@studentA},\ \ \ \tcdef@forms@formsstudentIDlabel : {\bf \tc@studentAID}.%
-
- \vfill%
-
- \tcforms@formsigdate{\tcdef@forms@boardsignature}%
- \vfill%
- \pagebreak%
-}%
-%
-%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% examiners approval/not signature (for rectify approval form)%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\tcforms@approvalsigdate}{mm}{%%
- \tcdef@forms@formsrectifyOKdesc%
- \hfill\tcdef@forms@formsdatelabel:\rule{\tc@daterule}{.1pt}\\[3mm]%
- #1: #2 \hfill \tcdef@forms@formssignaturelabel:\rule{\tc@namerule}{.1pt}%
-}%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% TCC Board rectify approval form%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\tcforms@rectifyexaminersig}{O{\tcdef@forms@formsexaminerlabel}m}{\@ifundefined{#2}{}{\tcforms@approvalsigdate{#1}{\csname #2\endcsname}}\\[3mm]}%
-%
-\NewDocumentCommand{\tcforms@rectifyapprovalform}{}{%
- \tc@formtopbox{\tcdef@forms@formstitle}{\tcdef@forms@rectifyapprovalformtitle}%
-
- \vfill%
-
- \tcforms@tccdesc%
-
- \vfill%
- \tcdef@forms@rectifyapprovalformdesc%
-
- \vfill%
-
- \tcforms@rectifyexaminersig[\tcdef@forms@formsadvisorlabel]{tc@studentA@advisor}%
-
- \vfill%
-
- \@ifundefined{tc@nBoard}{}{%
- \tcforms@rectifyexaminersig{tc@studentA@examinerA}%
- }%
-
- \tcforms@rectifyexaminersig{tc@studentA@examinerB}%
-
- \tcforms@rectifyexaminersig{tc@studentA@examinerC}%
-
- \tcforms@rectifyexaminersig{tc@studentA@altexaminerA}%
- \vfill%
- \pagebreak%
-}%
-%
+ \noindent
+ \parbox[t]{\textwidth}
+ {
+ \centering
+ {
+ \UseTerm{cover.topbase}\\
+ {\sc \prop_item:Nn \l__ufrgscca_forms_prop {#1.heading}}
+ }
+ }\\[7mm]
+ {\bf \prop_item:Nn \l__ufrgscca_forms_prop {#1.title}}
+ \prop_if_in:NnTF \l__ufrgscca_forms_prop {#1.footnote}
+ {\footnote[1]{\prop_item:Nn \l__ufrgscca_forms_prop {#1.footnote}}}
+ {}\\
+ \end{center}
%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% TCC Advisor approval form%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\tcforms@advisorapprovalform}{}{%
- \tc@formtopbox{\tcdef@forms@formstitle}{\tcdef@forms@advisorapprovalformtitle}%
-
- \vfill%
-
- \tcforms@tccdesc%
-
- \vfill%
- \tcdef@forms@advisorapprovalformdesc%
-
- \vfill%
-
- \tcdef@core@tccadvisorsreview%
-
- \vfill%
- \tcdef@forms@advisorapprovalformdescB%
-
- \tcforms@formsigdate{\tcdef@forms@advisorsignature}%
- \vfill%
-
- \tcforms@formsigdate{\tcdef@forms@studentsignature}%
- \vfill%
- \pagebreak%
-}%
-%
-%
-%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%
-%
-
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% set of blank lines%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\cmdfactory<core>{formsblanklines,formsblanklinesB}
-\formsblanklines{\hrulefill\\%
-
-\hrulefill\\%
-
-\hrulefill\\%
-
-\hrulefill\\%
-
-\hrulefill\\%
-
-\hrulefill\\%
-
-\hrulefill%
-}%
-%
-\formsblanklinesB{\hrulefill\\%
-
- \hrulefill\\%
-
- \hrulefill\\%
+ \vfill
+ \prop_item:Nn \l__ufrgscca_forms_prop {#1.opening}
+ \vfill
+ \prop_item:Nn \l__ufrgscca_forms_prop {#1.body}
+ \vfill
+ \prop_item:Nn \l__ufrgscca_forms_prop {#1.closing}
+ \pagebreak
+ }
- \hrulefill\\%
- \hrulefill\\%
-}%
+\NewDocumentCommand{\SignatureDate}{m}{
+ \begin{flushright} \UseTerm{localdate}%
+ ~\vspace*{6mm}\\
%
+ $\overline{\text{\emph{#1}}}$
+ \end{flushright}
+}
-
-\DeclareKeys[forms]{
- internreqform.usage = general,
- internreqform.code = {\tcforms@internreqform},
- internsupervisorform.usage = general,
- internsupervisorform.code = {\tcforms@internsupervisorform},
- interntutorform.usage = general,
- interntutorform.code = {\tcforms@interntutorform},
- reqform.usage = general,
- reqform.code = {\tcforms@reqform},
- reqform-II.usage = general,
- reqform-II.code = {\tcforms@reqform},
- coadvisor.usage = general,
- coadvisor.code = {\tcforms@coadvisorform},
- coadvisor-II.usage = general,
- coadvisor-II.code = {\tcforms@coadvisorform},
- boardapproval.usage = general,
- boardapproval.code = {\tcforms@examboardform},
- boardapproval-II.usage = general,
- boardapproval-II.code = {\tcforms@examboardform},
- boardapproval-IIb.usage = general,
- boardapproval-IIb.code = {\tcforms@examboardformTMP},
- advisorsapproval.usage = general,
- advisorsapproval.code = {\tcforms@advisorapprovalform},
- advisorsapproval-II.usage = general,
- advisorsapproval-II.code = {\tcforms@advisorapprovalform},
- receipts.usage = general,
- receipts.code = {\tcforms@receiptforms},
- receipts-II.usage = general,
- receipts-II.code = {\tcforms@receiptforms},
- examinersforms.usage = general,
- examinersforms.code = {\tcforms@examinersForms},
- examinersforms-II.usage = general,
- examinersforms-II.code = {\tcforms@examinersForms},
- rectifyapproval.usage = general,
- rectifyapproval.code = {\tcforms@rectifyapprovalform},
- rectifyapproval-II.usage = general,
- rectifyapproval-II.code = {\tcforms@rectifyapprovalform},
- reqform-I.usage = general,
- reqform-I.code = {\tcforms@reqTRform},
- coadvisor-I.usage = general,
- coadvisor-I.code = {\tcforms@coadvisorTRform},
- examinersforms-I.usage = general,
- examinersforms-I.code = {\tcforms@examinersTRforms},
- advisorsapproval-I.usage = general,
- advisorsapproval-I.code = {\tcforms@advisorTRapprovalform},
- boardapproval-I.usage = general,
- boardapproval-I.code = {\tcforms@advisorTRboardform},
- rectifyapproval-I.usage = general,
- rectifyapproval-I.code = {\tcforms@rectifyTRapprovalform},
- }
+\NewDocumentCommand{\BoardDescSignature}{mm}{
+ #1:~ \textbf{\DataFields{#2}{name}}\vspace{-2ex}
+ \begin{flushright}%~ \hfill
+ \UseLabel{email}:~ \textbf{\DataFields{#2}{email}}~
+ \UseLabel{phone}:~ \textbf{\DataFields{#2}{phone}}~
+ \UseLabel{agree}:~ \rule{\l__ufrgscca_agree_rule_dim}{.1pt}
+ \end{flushright}
+}
-\NewDocumentCommand{\tcforms}{m}{%
- \SetKeys[forms]{#1}%
-}
+%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%
+%%%
+%%% loading defaults
+%%%
+%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%
+\ExplSyntaxOff
+ \input{ufrgscca-forms.tex}
+\ExplSyntaxOn
-\NewDocumentCommand{\tcemptyforms}{m}{%
- \tccore@resetfields%
- \title{\rule{\tc@namerule}{.1pt}}%
- \tccore@emptyfields%
- \SetKeys[forms]{#1}%
-}
diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-formsTR.sty b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-formsTR.sty
deleted file mode 100644
index 12596a69fee..00000000000
--- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-formsTR.sty
+++ /dev/null
@@ -1,313 +0,0 @@
-%%%==============================================================================
-%% Copyright 2022-23 by Alceu Frigeri
-%%
-%% This work may be distributed and/or modified under the conditions of
-%%
-%% * The [LaTeX Project Public License](http://www.latex-project.org/lppl.txt),
-%% version 1.3c (or later), and/or
-%% * The [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html),
-%% version 3 (or later)
-%%
-%% This work has the LPPL maintenance status *maintained*.
-%%
-%% The Current Maintainer of this work is Alceu Frigeri
-%%
-%% This is version 1.12 (2023/09/23)
-%%
-%% The list of files that compose this work can be found in the README.md file at
-%% https://ctan.org/pkg/ufrgscca
-%%
-%%%==============================================================================
-%% UFRGS stands for "Federal University of Rio Grande do Sul" in south Brazil
-%% EE stands for "Engineering School"
-%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym)
-%%%==============================================================================
-
-%
-\NewDocumentCommand{\tcforms@examinersTRforms}{}{%
- \tccore@examiners{examinerB}%
- \tcforms@reviewTRform{examinerB}%
- \tccore@examiners{examinerC}%
- \tcforms@reviewTRform{examinerC}%
-}%
-%
-
-
-
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% TCC examiner form (grades)%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\tcforms@examinersTRform}{m}{%
- \tc@formtopbox[tcdef@forms@formsfootnote]{\tcdef@forms@formstitleTR}{\tcdef@forms@examformtitle}%
-%
- \vfill%
- \tcdef@forms@formsstudentlabel : {\bf \csname tc@student\Alph{tc@studentcount}\endcsname}\\%
- \tcdef@forms@formsexaminerlabel : \csname tc@student\Alph{tc@studentcount}@#1\endcsname%
- \vfill%
- \tcdef@forms@examformdesc%
-
- \vfill%
-
- \begin{center}
- \begin{tabular}{|c|c|c|}%
- \hline%
- \tc@TCCpointAlabel & \tc@TCCpointBlabel & \tc@TCCpointClabel \\\hline%
- & & \\\hline
- \end{tabular}%
- \end{center}%
-
- \vfill%
-
- \tcforms@formsigdate{\tcdef@forms@examinersignature}%
- \vfill%
- \begin{description}
- \item[\tcdef@forms@examformnoteslabel:] \tcdef@forms@examformnotes
- \end{description}%
-
- \vfill%
- \pagebreak%
-}%
-%
-
-%\def\emptybox{\framebox[3em]{\color{white}W}}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% TCC I reviewer form (corrections)%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\tcforms@reviewTRform}{m}{%
- \tc@formtopbox[tcdef@forms@TRformfootnote]{\tcdef@forms@formstitleTR}{\tcdef@forms@formsTRtitle}%
-
- \vfill%
- \tcdef@forms@formsstudentlabel : {\bf \expandafter\csname tc@student\Alph{tc@studentcount}\endcsname}\\[-4mm]%
-
- \tcdef@forms@formsworktitlelabel : {\bf \@title}\\%
-
- \tcdef@forms@formsexaminerlabel : \expandafter\csname tc@student\Alph{tc@studentcount}@#1\endcsname\\[-4mm]%
-
- {\scriptsize {\textsl{(favor retornar este diretamente à coordenação de TCC.)}}}
- \vfill%
-% \resizebox{0.9\textwidth}{!}{%%
- O trabalho submetido\footnotemark[2]:
-
- \begin{enumerate}[tcc,nosep]
- \item \emptybox\ \textbf{Enquadramento do Tema}. {\footnotesize(peso:2)}\\ {\footnotesize Quão bem o mesmo se enquadra no perfil de um formando em Eng. de Controle e Automação.}
- \item \emptybox\ \textbf{Revisão Bibliográfica}. {\footnotesize(peso:2)}\\ {\footnotesize A revisão apresentada é adequada, suficiente, para o tema do trabalho?}
- \item \emptybox\ \textbf{Abordagem/Plano de Trabalho Proposto}. {\footnotesize(peso:2)}\\ {\footnotesize Considerar se a abordagem, plano de trabalho proposto, é adequada e factivel.}
- \item \emptybox\ \textbf{Redação}. {\footnotesize(peso:1)}\\ {\footnotesize Considerar a qualidade do trabalho escrito apresentado.}
- \item { O Trabalho Submetido}
- \begin{itemize}[tcc,nosep]
- \item[$\Box$] Está adequado, dispensando correções do texto.
- \item[$\Box$] Está adequado, sendo necessário correções, conforme anotações anexas.
- \item[$\Box$] Necessita ser revisto/re-escrito,\footnotemark[3] e:
- \begin{itemize}
- \item[$\Box$] basta a revisão final do texto pelo orientador,
- \item[$\Box$] revisarei o trabalho depois de corrigido.
- \end{itemize}
- \end{itemize}
- \end{enumerate}
-
-Outras considerações, parecer (se necessário): \\
-
- \begin{tabular}{p{0.9\textwidth}}
- ~\\\hline
- ~\\\hline
- ~\\\hline
- ~\\\hline
- ~\\\hline
- ~\\\hline
- \end{tabular}\\[-1mm]
- % }%
- \footnotetext[2]{Use a escala 0-10: \begin{enumerate*}\item[0.] Péssimo \item[3.] Deficitário \item[6.] Bom \item[8.] Muito Bom \item[10.] Excelente \end{enumerate*}}
- \footnotetext[3]{\tcdef@forms@reviewformfootnoteB}%
- \vfill%
-
- \tcforms@formsigdate{\tcdef@forms@examinersignature}%
- \vfill%
- \pagebreak%
-}%
-%
-% TODO: THIS ONE, as the reference for 'work submission a board approaval'
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% TCC Board approval form%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% TCC Advisor approval form%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\tcforms@advisorTRapprovalform}{}{%
- \tc@formtopbox{\tcdef@forms@formstitleTR}{Formulário de Aprovação para Avaliação}%
-
- \vfill%
-
- \tcforms@tccdesc%
-
- \vfill%
- \tcdef@forms@advisorapprovalformdesc%
-
- \vfill%
-
- \tcdef@core@tccadvisorsreview%
-
- \vfill%
- %Aprovo a versão final do trabalho submetido pel\tccore@@ref{student}{article} alun\tccore@@ref{student}{article} e
- %considero \tccore@@ref{student}{article} mesm\tccore@@ref{student}{article} apt\tccore@@ref{student}{article} para avaliação pela Banca Examinadora.%
-
- \tcforms@formsigdate{\tcdef@forms@advisorsignature}%
- \vfill%
-
- \tcforms@formsigdate{\tcdef@forms@studentsignature}%
- \vfill%
- \pagebreak%
-}%
-%
-\NewDocumentCommand{\tcforms@advisorTRboardform}{}{%
- \tc@formtopbox{\tcdef@forms@formstitleTR}{Formulário de Aprovação de Banca Examinadora}%
-
- \vfill%
-
- \tcforms@tccdesc%
-
- \vfill%
- \begin{center}
- \tcdef@forms@formsboardtitle
- \end{center}%
-
- \tcforms@examinerdesc{studentA}{examinerB}%
-
- \tcforms@examinerdesc{studentA}{examinerC}%
-
-
- \vfill%
-
- Aprovo a Banca Examinadora acima relacionada.%
- \vfill%
-
- \tcforms@formsigdate{\tcdef@forms@advisorsignature}%
- \vfill%
-
- \pagebreak%
-}%
-%
-
-
-
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% TCC requirement form (TCC register)%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\tcforms@reqTRform}{}{%
- \tc@formtopbox{\tcdef@forms@formstitleTR}{\tcdef@forms@reqformtitle}%
-
- \vfill%
-
- \tcdef@forms@reqformopening%
- \vfill%
-
- \tcdef@forms@reqformdescTR%
- \vfill%
-
- \tcdef@forms@formstemptitlelabel : \@title %
-
- \tcdef@forms@formsstudentemaillabel : {\bf \tc@studentAemail} %
-
- \tcdef@forms@formsadvisorlabel : \tc@studentA@advisor%
-
- \tcdef@forms@formsadvisoremaillabel : {\bf \tc@studentA@advisoremail}%
- \hfill \tcdef@forms@formsphonelabel : {\bf \tc@studentA@advisorphone}%
-
-
- {\bf \tcdef@forms@formsbrieflabel}:\footnote[1]{\tcdef@forms@renewreqformnotes}%
-
- \vfill%
- \tcdef@core@tccbrief%
-
- \parbox[t]{.45\textwidth}{\tcforms@formsigdate{\tcdef@forms@studentsignature}}\hfill%
- \parbox[t]{.45\textwidth}{\tcforms@formsigdate{\tcdef@forms@advisorsignature}}%
- \pagebreak%
-}%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% TCC co-advisor requirement form (TCC register)%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\tcforms@coadvisorTRform}{}{%
- \@ifundefined{tc@studentA@coadvisor}{%
- \coadvisor{\rule{\tc@namerule}{.1pt}}{}%
- \coadvisorinfo{}{\rule{\tc@titlerule}{.1pt}}{\rule{\tc@emailrule}{.1pt}}{\rule{\tc@phonerule}{.1pt}}%
- }{}%
- \tc@formtopbox{\tcdef@forms@formstitleTR}{\tcdef@forms@coadvisorformtitle}%
-
- \vfill%
-
- \tcdef@forms@reqformopening%
- \vfill%
-
- \tcdef@forms@coadvisorformdesc%
- \vfill%
-
- \tcdef@forms@formstemptitlelabel : \@title %
-
- \tcdef@forms@formsadvisorlabel: \tc@studentA@advisor
-
- \tcdef@forms@formscoadvisorlabel: \tc@studentA@coadvisor%
-
- \tcdef@forms@formscoadvisoremaillabel : {\bf \tc@studentA@coadvisoremail}%
- \hfill \tcdef@forms@formsphonelabel : {\bf \tc@studentA@coadvisorphone}%
-
-
- \vfill%
- {\bf \tcdef@forms@formsreasonlabel}:%
-
- \tcdef@core@tcccoadvisorbrief% !!!! What a Hell ?!?!?!
-
- \tcforms@formsigdate{\tcdef@forms@studentsignature}%
-
- \parbox[t]{.45\textwidth}{\tcforms@formsigdate{\tcdef@forms@advisorsignature}}\hfill%
- \parbox[t]{.45\textwidth}{\tcforms@formsigdate{\tcdef@forms@coadvisorsignature}}%
- \pagebreak%
-}%
-%
-%
-
-
-\NewDocumentCommand{\tcforms@rectifyTRapprovalform}{}{%
- \tc@formtopbox{\tcdef@forms@formstitleTR}{\tcdef@forms@rectifyapprovalformtitle}%
-
- \vfill%
-
- \tcforms@tccdesc%
-
- \vfill%
- \tcdef@forms@rectifyapprovalTRformdesc%
-
- \vfill%
-
- \tcforms@rectifyexaminersig[\tcdef@forms@formsadvisorlabel]{tc@studentA@advisor}%
-
- \vfill%
-
- \@ifundefined{tc@nBoard}{}{%
- \tcforms@rectifyexaminersig{tc@studentA@examinerA}%
- }%
-
- \tcforms@rectifyexaminersig{tc@studentA@examinerB}%
-
- \tcforms@rectifyexaminersig{tc@studentA@examinerC}%
- \vfill%
- \pagebreak%
-}%
-%
-%
-%
diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-formsintern.sty b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-formsintern.sty
deleted file mode 100644
index 9565156edad..00000000000
--- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-formsintern.sty
+++ /dev/null
@@ -1,148 +0,0 @@
-%%%==============================================================================
-%% Copyright 2022-23 by Alceu Frigeri
-%%
-%% This work may be distributed and/or modified under the conditions of
-%%
-%% * The [LaTeX Project Public License](http://www.latex-project.org/lppl.txt),
-%% version 1.3c (or later), and/or
-%% * The [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html),
-%% version 3 (or later)
-%%
-%% This work has the LPPL maintenance status *maintained*.
-%%
-%% The Current Maintainer of this work is Alceu Frigeri
-%%
-%% This is version 1.12 (2023/09/23)
-%%
-%% The list of files that compose this work can be found in the README.md file at
-%% https://ctan.org/pkg/ufrgscca
-%%
-%%%==============================================================================
-%% UFRGS stands for "Federal University of Rio Grande do Sul" in south Brazil
-%% EE stands for "Engineering School"
-%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym)
-%%%==============================================================================
-
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% Internship requirement form%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\tcforms@internreqform}{}{%
- \tc@formtopbox[tcdef@forms@internshipreqformnotes]{\tcdef@forms@formsinternshiptitle}{\tcdef@forms@reqformtitle}%
-
- \vfill%
-
- \tcdef@forms@reqformopening%
- \vfill%
-
- \tcdef@forms@reqforminternshipdesc%
- \vfill%
-
- \tcdef@forms@reqforminternshipinfo%
-
-
- % {\bf \tcdef@forms@formsbrieflabel}:%\footnote[1]{\tcdef@forms@renewreqformnotes}%
-
- \vfill%
-% \tcdef@core@tccbrief%
-
- \parbox[t]{.45\textwidth}{\tcforms@formsigdate{\tcdef@forms@supervisorsignature}}\hfill%
- \parbox[t]{.45\textwidth}{\tcforms@formsigdate{\tcdef@forms@tutorsignature}}%
-
- \hfill%
- \parbox[t]{.45\textwidth}{\tcforms@formsigdate{\tcdef@forms@studentsignature}}%
- \pagebreak%
-}%
-%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% Internship Supervisor's form (grades)%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\tcforms@internsupervisorform}{}{%
- \tc@formtopbox[tcdef@forms@internsupervisornote]{\tcdef@forms@formsinternshiptitle}{\tcdef@forms@supervisorformtitle}%
- %
- \vfill%
- \tcdef@forms@internshipstudentinfo\\%
- \tcdef@forms@internshipsupervisorinfo\\%
- \tcdef@forms@internshipperiod
- \vfill%
- \tcdef@forms@internsupervisorgradesform%
-
- \vfill%
-
- \tcdef@forms@internsupervisorcomments \tcdef@core@formsblanklinesB
-
- \vfill%
-
- \tcforms@formsigdate{\tcdef@forms@supervisorsignature}%
-
- \pagebreak%
-}%
-%
-%
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% Internship tutor's form (grades)%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NewDocumentCommand{\tcforms@interntutorform}{}{%
- \tc@formtopbox{\tcdef@forms@formsinternshiptitle}{\tcdef@forms@tutorformtitle}%
- %
- \vfill%
- \tcdef@forms@internshipstudentinfo\\%
- \tcdef@forms@internshiptutorinfo\\%
- \tcdef@forms@internshipperiod
- \vfill%
- \tcdef@forms@interntutorgrade%
-
- \vfill%
-
- \tcdef@forms@internshiptutorcomments \tcdef@core@formsblanklinesB
-
- \vfill%
-
- \tcforms@formsigdate{\tcdef@forms@tutorsignature}%
- % \hline
- \vfill%
-
- \tcdef@forms@interncoordgrade%
- \vfill
-
- \tcdef@forms@internshipcoordcomments \tcdef@core@formsblanklinesB
- \vfill%
-
- \tcforms@formsigdate{\tcdef@forms@internshipcoordsignature}%
-
- \pagebreak%
-}%
-%
-%
-%
-\newcounter{tc@supervisorgradecount}[tc@studentcount]%
-\NewDocumentCommand{\internshipsupervisorgrades}{mmmmm}{%%
- \stepcounter{tc@supervisorgradecount}%
- \expandafter\def\csname tc@student\Alph{tc@studentcount}@supervisorpoint\Alph{tc@supervisorgradecount}A\endcsname{#1}%%
- \expandafter\def\csname tc@student\Alph{tc@studentcount}@supervisorpoint\Alph{tc@supervisorgradecount}B\endcsname{#2}%%
- \expandafter\def\csname tc@student\Alph{tc@studentcount}@supervisorpoint\Alph{tc@supervisorgradecount}C\endcsname{#3}%%
- \expandafter\def\csname tc@student\Alph{tc@studentcount}@supervisorpoint\Alph{tc@supervisorgradecount}D\endcsname{#4}%%
- \expandafter\def\csname tc@student\Alph{tc@studentcount}@supervisorpoint\Alph{tc@supervisorgradecount}E\endcsname{#5}%%
- \ifthenelse{\equal{#1}{}}{%%
- \expandafter\def\csname tc@student\Alph{tc@studentcount}@supervisorgrade\Alph{tc@supervisorgradecount}\endcsname{0}%
- }{%%
- \expandafter\edef\csname tc@student\Alph{tc@studentcount}@supervisorgrade\Alph{tc@supervisorgradecount}\endcsname{\fpeval{ #1 + #2 + #3 + #4 + #5} }%
- }%
-}%
-
-\NewDocumentCommand{\internshiptutorgrades}{m}{%%
- \expandafter\def\csname tc@student\Alph{tc@studentcount}@tutorgrade\endcsname{#1}%%
-}%
-\NewDocumentCommand{\internshipcoordgrades}{m}{%%
- \expandafter\def\csname tc@student\Alph{tc@studentcount}@internshipcoordgrade\endcsname{#1}%%
-}%
-
diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-gen.sty b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-gen.sty
deleted file mode 100644
index c3506014033..00000000000
--- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-gen.sty
+++ /dev/null
@@ -1,120 +0,0 @@
-%%%==============================================================================
-%% Copyright 2022-23 by Alceu Frigeri
-%%
-%% This work may be distributed and/or modified under the conditions of
-%%
-%% * The [LaTeX Project Public License](http://www.latex-project.org/lppl.txt),
-%% version 1.3c (or later), and/or
-%% * The [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html),
-%% version 3 (or later)
-%%
-%% This work has the LPPL maintenance status *maintained*.
-%%
-%% The Current Maintainer of this work is Alceu Frigeri
-%%
-%% This is version 1.12 (2023/09/23)
-%%
-%% The list of files that compose this work can be found in the README.md file at
-%% https://ctan.org/pkg/ufrgscca
-%%
-%%%==============================================================================
-%% UFRGS stands for "Federal University of Rio Grande do Sul" in south Brazil
-%% EE stands for "Engineering School"
-%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym)
-%%%==============================================================================
-\NeedsTeXFormat{LaTeX2e}[2022/06/01]
-\def\tc@tmp@packname{ufrgscca-gen}
-\def\tc@tmp@altpackname{ufrgsccagen}
-\def\tc@tmp@packdesc{UFRGS/CCA generic/miscellany commands}
-\def\tc@tmp@packdate{2023/09/23}
-\def\tc@tmp@packversion{1.12}
-\let\@exp\expandafter
-\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion}
-\@exp\@exp\@exp\ProvidesPackage\@exp\@exp\@exp{\@exp\tc@tmp@packname\@exp}\@exp[\tc@tmp@packdate\space v\tc@tmp@packversion\space\tc@tmp@packdesc]
-
-\def\tcgen@fam{tcdef}
-\def\tcgen@factgrp{gen}%
-%
-
-\DeclareKeys[ufrgscca-gen]{
- family.usage = load,
- family.store = \tcgen@fam,
-
- group.usage = load,
- group.store = \tcgen@factgrp,
-}
-\ProcessKeyOptions[ufrgscca-gen]\relax
-
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% \tcgen@cdef[fam]{#1}{#2} => \gdef\<fam>@#1{#2}%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-\NewDocumentCommand{\tcgen@cdef}{O{\tcgen@fam}D<>{\tcgen@factgrp} m +m}{%
- \expandafter\gdef\csname #1@#2@#3\endcsname{#4}%
-}%
-%
-\NewDocumentCommand{\factory}{O{\tcgen@fam}D<>{\tcgen@factgrp}m}{%
- \expandafter\long\expandafter\xdef\csname #3\endcsname##1{\noexpand\tcgen@cdef[#1]<#2>{#3}{##1}}%
- %\csname #3\endcsname{-default-}
- \expandafter\def\csname #3.fam\endcsname{#1}%
- \@ifundefined{#3undef}{}{\expandafter\gdef\csname tc@factdup@#3\endcsname{}}
- \expandafter\def\csname #3undef\endcsname{\expandafter\let\csname #1@#2@#3\endcsname\undefined}%
-}%
-\NewDocumentCommand{\cmdfactory}{O{\tcgen@fam}D<>{\tcgen@factgrp}m}{%
- \forcsvlist{\factory[#1]<#2>}{#3}%
- \ifcsundef{tc@factgrplist@#2}{%
- \ifcsundef{tc@factgrplist}{\csgdef{tc@factgrplist}{#2}}{\csgappto{tc@factgrplist}{,#2}}%
- \csgdef{tc@factgrplist@#2}{#3}%
- }{\csgappto{tc@factgrplist@#2}{,#3}}%
-}%
-%
-%
-% 'debug' auxiliary commands (mainly to find out dups, defined/undefined ones)
-%
-%
-\NewDocumentCommand{\tcgen@factcmd@prt}{m}{\@ifundefined{tc@factdup@#1}{#1}{#1 (dup)}
-\expandafter\@ifundefined\expandafter{\csname #1.fam\endcsname @#1}{\textbf{ NOT Defined} \\}{ {\csname\csname #1.fam\endcsname @#1\endcsname} \\}}
-\NewDocumentCommand{\tcgen@factcmd@def}{m}{\csname #1.fam\endcsname @\@ifundefined{tc@factdup@#1}{#1}{#1 (dup)} %
- \expandafter\@ifundefined\expandafter{\csname #1.fam\endcsname @#1}{\textbf{ NOT Defined} \\}{ {\slshape Defined} \\} }
-%\NewDocumentCommand{\tcgen@factcmd@prt}{m}{{#1} \\}
-%\NewDocumentCommand{\tcgen@factcmd@def}{m}{{#1} :: \@ifundefined{tc@#1}{-- \textbf{NOT Defined} --\\}{Defined \\} }
-\NewDocumentCommand{\tcgen@factgrp@prt}{m}{\tightul{#1} \\%
- \expandafter\expandafter\expandafter\forcsvlist\expandafter\expandafter\expandafter\tcgen@do\expandafter\expandafter\expandafter{\csname tc@factgrplist@#1\endcsname}%
-}
-\NewDocumentCommand{\listfactorycmds}{sO{}}{%
- \IfBooleanTF{#1}{\def\tcgen@do##1{\tcgen@factcmd@def{##1}}}{\def\tcgen@do##1{\tcgen@factcmd@prt{##1}}}
- \ifblank{#2}{%
- \ifcsundef{tc@factgrplist}{Factories Groups: \textbf{empty list}\\ }{%
- Factories: \\ %
- \expandafter\expandafter\expandafter\forcsvlist\expandafter\expandafter\expandafter\tcgen@factgrp@prt\expandafter\expandafter\expandafter{\csname tc@factgrplist\endcsname}%
- %
- }
- }{%
- }%
-}
-
-
-%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%
-%
-% \mkswitch creates a switch (somewhat 'like' a programming switch)
-% a 'default case' is associated with the switch when creating it
-% one can add many 'cases' later on.
-% one can have any code associated with a 'switch/case'
-%
-%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%
-
-
-\NewDocumentCommand\mkswitch{O{}m}{%
- \NewDocumentCommand{#2}{m}{%
- \ifcsname\string#2@case@##1\endcsname\csname\string#2@case@##1\endcsname\else#1\fi%
- }%
-}%
-\NewDocumentCommand{\addcase}{mmm}{\expandafter\def\csname\string#1@case@#2\endcsname{#3}}%
-\let\addswitchcase\addcase
-
diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-lists.sty b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-lists.sty
index d8ac23595f5..3d34c7c927b 100644
--- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-lists.sty
+++ b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-lists.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version 1.12 (2023/09/23)
+%% This is version {2.0} {2023/11/23}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -23,64 +23,105 @@
%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym)
%%%==============================================================================
\NeedsTeXFormat{LaTeX2e}[2022/06/01]
-\def\tc@tmp@packname{ufrgscca-lists}
-\def\tc@tmp@altpackname{ufrgsccalists}
-\def\tc@tmp@packdesc{UFRGS/CCA auxiliary lists commands}
-\def\tc@tmp@packdate{2023/09/23}
-\def\tc@tmp@packversion{1.12}
-\let\@exp\expandafter
-\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion}
-\@exp\@exp\@exp\ProvidesPackage\@exp\@exp\@exp{\@exp\tc@tmp@packname\@exp}\@exp[\tc@tmp@packdate\space v\tc@tmp@packversion\space\tc@tmp@packdesc]
-
-
-\DeclareKeys[ufrgscca-lst]{
- relnum.usage = load,
- relnum.if = tcif@relnum,
-}
-\ProcessKeyOptions[ufrgscca-lst]\relax
+
+
+\ProvidesExplPackage
+ {ufrgscca-lists}
+ {2023/11/23}
+ {2.0}
+ {UFRGS/CCA auxiliary lists commands}
+
+
+%%%%%%%
+%%%
+%%% Just an attempt of having my packages info in a regular way
+%%% Idea being: { <pck-name> / pkg info } for each and all.
+%%%
+%%%%%%%
+\keys_define:nn { ufrgscca-lists / pkg info}
+ {
+ name .code:n = {ufrgscca-lists} ,
+ prefix .code:n = {ufrgscca} ,
+ date .code:n = {2023/11/23} ,
+ version .code:n = {2.0} ,
+ description .code:n = {UFRGS/CCA~Auxiliary~ lists~ commands}
+ }
+\cs_if_exist:NF \__codedesc_pkg_info:nn
+ {
+ \cs_new_protected:Npn \__codedesc_pkg_info:nn #1#2
+ { \keys_set:nn {#1 / pkg info}{#2} }
+ }
+\cs_if_exist:NF \PkgInfo
+ { \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} } }
+\cs_if_exist:NF \PkgDescription
+ {
+ \NewDocumentCommand \PkgDescription {m}
+ {
+ \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par
+ }
+ }
+%%%%%%%
+%%% End of cut-n-paste
+%%%%%%%
+
+
+
+%==============================================================================
+% Declaração de opções
+%==============================================================================
+\keys_define:nn { ufrgscca / lists}
+ {
+ relnum .usage:n = load ,
+ relnum .bool_set:N = \l__ufrgscca_relnum_bool ,
+ }
+
+\ProcessKeyOptions[ufrgscca / lists]\relax
+
%%%%%%%%%%%%%%%%%%%%%
%%% Packages Loading
%%%%%%%%%%%%%%%%%%%%%
\RequirePackage{newfloat}
-\RequirePackage{listings}%
-\RequirePackage{xcolor}%
+\RequirePackage{listings}
+\RequirePackage{xcolor}
%%%
%%% command to declare a new 'list of ...' things {package newfloat}
%%%
-\NewDocumentCommand{\DeclareNewFloat}{mmmm}{%
- \DeclareFloatingEnvironment[%
- fileext={#2},%
- listname={#4},%
- name={#3},%
- placement=htb,%
- chapterlistsgaps=off]{#1} %
- \iftcif@relnum\SetupFloatingEnvironment{#1}{within=chapter}%
- \else\SetupFloatingEnvironment{#1}{within=none}%
- \fi %
-}%
+\NewDocumentCommand{\DeclareNewFloat}{mmmm}{
+ \DeclareFloatingEnvironment[
+ fileext={#2},
+ listname={#4},
+ name={#3},
+ placement=htb,
+ chapterlistsgaps=off]{#1}
+ \bool_if:NTF \l__ufrgscca_relnum_bool
+ { \SetupFloatingEnvironment{#1}{within=chapter} }
+ { \SetupFloatingEnvironment{#1}{within=none} }
+}
%
%%%%\def\listoflistings{\lstlistoflistings}%
-\definecolor{lstgray}{rgb}{0.965,0.965,0.965}%
-\lstset{basicstyle=\ttfamily\small,%
- columns=fullflexible,%
- keepspaces=true,%
- frame=tb,%
- inputencoding=latin1,%
-% inputencoding=utf8,%
- extendedchars=true,%
- backgroundcolor=\color{lstgray},%
- breaklines=true,%
-% xleftmargin=7pt,%
-% xrightmargin=7pt%
-}%
-%
-\def\listingname{Listing}%
-\def\listlistingname{List of Listings}%
-\DeclareNewFloat{codelist}{lox}{\listingname}{\listlistingname}%%
+\definecolor{lstgray}{rgb}{0.965,0.965,0.965}
+\lstset{basicstyle=\ttfamily\small,
+ columns=fullflexible,
+ keepspaces=true,
+ frame=tb,
+ inputencoding=latin1,
+% inputencoding=utf8,
+ extendedchars=true,
+ backgroundcolor=\color{lstgray},
+ breaklines=true,
+% xleftmargin=7pt,
+% xrightmargin=7pt
+}
+
+
+\def\listingname{Listing}
+\def\listlistingname{List~ of~ Listings}
+\DeclareNewFloat{codelist}{lox}{\listingname}{\listlistingname}
+
diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-ppc.sty b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-ppc.sty
index fe05fe23f3b..34939ff17e0 100644
--- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-ppc.sty
+++ b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-ppc.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version 1.12 (2023/09/23)
+%% This is version {2.0} {2023/11/23}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -23,34 +23,67 @@
%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym)
%%%==============================================================================
\NeedsTeXFormat{LaTeX2e}[2022/06/01]
-\def\tc@tmp@packname{ufrgscca-ppc}
-\def\tc@tmp@altpackname{ufrgsccappc}
-\def\tc@tmp@packdesc{UFRGS/CCA PPC commands}
-\def\tc@tmp@packdate{2023/09/23}
-\def\tc@tmp@packversion{1.12}
-\let\@exp\expandafter
-\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion}
-\@exp\@exp\@exp\ProvidesPackage\@exp\@exp\@exp{\@exp\tc@tmp@packname\@exp}\@exp[\tc@tmp@packdate\space v\tc@tmp@packversion\space\tc@tmp@packdesc]
-
-
-\DeclareKeys[ufrgscca-ppc]{
- showind.usage = load,
- showind.if = @showindicators,
-
- indlong.usage = load,
- indlong.if = @indlongtext,
- nocomments.usage = load,
- nocomments.if = @indnocomments,
-}
-\ProcessKeyOptions[ufrgscca-ppc]\relax
+
+
+\ProvidesExplPackage
+ {ufrgscca-ppc}
+ {2023/11/23}
+ {2.0}
+ {UFRGS/CCA PPC commands}
+
+%%%%%%%
+%%%
+%%% Just an attempt of having my packages info in a regular way
+%%% Idea being: { <pck-name> / pkg info } for each and all.
+%%%
+%%%%%%%
+\keys_define:nn { ufrgscca-ppc / pkg info}
+ {
+ name .code:n = {ufrgscca-ppc} ,
+ prefix .code:n = {ufrgscca} ,
+ date .code:n = {2023/11/23},
+ version .code:n = {2.0} ,
+ description .code:n = {UFRGS/CCA~ auxiliary~ PPC-related~ (indicators)~ commands}
+ }
+\cs_if_exist:NF \__codedesc_pkg_info:nn
+ {
+ \cs_new_protected:Npn \__codedesc_pkg_info:nn #1#2
+ { \keys_set:nn {#1 / pkg info}{#2} }
+ }
+\cs_if_exist:NF \PkgInfo
+ { \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} } }
+\cs_if_exist:NF \PkgDescription
+ {
+ \NewDocumentCommand \PkgDescription {m}
+ {
+ \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par
+ }
+ }
+%%%%%%%
+%%% End of cut-n-paste
+%%%%%%%
+
+
+
+\keys_define:nn { ufrgscca / ppc}
+ {
+ showind .usage:n = load,
+ showind .bool_set:N = \l__ufrgscca_showind_bool,
+ indlong .usage:n = load,
+ indlong .bool_set:N = \l__ufrgscca_indlong_bool,
+ nocomments .usage:n = load,
+ nocomments .bool_set:N = \l__ufrgscca_nocomments_bool,
+ }
+\ProcessKeyOptions[ufrgscca / ppc]\relax
+
\RequirePackage{longtable}
\RequirePackage{pdfcomment}
-\WarningFilter{latex}{name}%
-\RequirePackage[tikz]{mdframed}%
+\WarningFilter{latex}{name}
+\RequirePackage[tikz]{mdframed}
\RequirePackage{ufrgscca-abnt}
-%\RequirePackage{ufrgscca-curr}
-\RequirePackage{ufrgscca-curr-tab}
+\RequirePackage{ufrgscca-curr}
+\RequirePackage{codedescribe}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
@@ -69,363 +102,579 @@
% * (undefined, copy text)
%%
%%%%%%%%%%%%%%%%%%%
-%\iftc@ppc
- \RenewDocumentCommand{\maketitle}{}{\tcppc@PPCcoverpages}%
-%\fi
-%
-\NewDocumentCommand{\tcppc@PPCcoverpages}{}{
- \begin{titlepage}%
- \noindent\tc@covertopbox%
- \vfill%
- \centerline{\tc@city}%
- \centerline{\tc@publyear}%
- \end{titlepage}%%
- \if@openright\cleardoublepage\else\clearpage\fi%%
-}%
- \RenewDocumentCommand\tc@winbox{}{%%
- \parbox[b]{\tc@coverwinwidth}{%%
- \centering\vbox to \tc@coverwinheight{%%
- \vspace*{\fill}%
- {\large\MakeUppercase{\textbf{\@title}}\par}%
- \vfill%
- }%%
- }%%
-}%
-%
-%
-\NewDocumentCommand{\set@statuscolor}{m}{%%
- \@ifundefined{#1@txtcolor}{%
- \gdef\ind@txtcolor{\csname default@txtcolor\endcsname}%%
- \gdef\ind@bgcolor{\csname default@bgcolor\endcsname}%%
- }{%
- \gdef\ind@txtcolor{\csname #1@txtcolor\endcsname}%%
- \gdef\ind@bgcolor{\csname #1@bgcolor\endcsname}%%
- }%
-}%
-%
-%
-\newcounter{@indcounter}%
-%
-\NewDocumentCommand{\declareindicator}{st+O{noref}mmm}{%
-%#3: status #4:org #5:mark #6:short text #7:long text #8:extra text #9:'clarification text'(for inep/mec)
- \stepcounter{@indcounter}%
- \IfBooleanTF{#1}{\expandafter\gdef\csname @indicator#4#5star\endcsname{#1}\ifcsundef{@indicator#4lst}{\csgdef{@indicator#4lst}{#5}}{\csgappto{@indicator#4lst}{,#5}}}{}
- \IfBooleanTF{#2}{\ifcsundef{@indicator#4lst}{\csgdef{@indicator#4lst}{#5}}{\csgappto{@indicator#4lst}{,#5}}}{}
- \expandafter\gdef\csname @indicator#4#5status\endcsname{#3}%
- \expandafter\gdef\csname @indicator#4#5short\endcsname{#6}%
- \expandafter\gdef\csname @indicator#4#5long\endcsname{}%
- \expandafter\gdef\csname @indicator#4#5extra\endcsname{}%
- \expandafter\gdef\csname @indicator#4#5text\endcsname{}%
- \expandafter\gdef\csname @indrefA\arabic{@indcounter}\endcsname{#4}%
- \expandafter\gdef\csname @indrefB\arabic{@indcounter}\endcsname{#5}%
- \newcounter{@indcount#4#5}%
- \@ifundefined{iftcppc@indset#4view}{\expandafter\newif\csname iftcppc@indset#4view\endcsname\csname tcppc@indset#4viewtrue\endcsname}{}
- \gdef\tcppc@indindex{#4#5}
-}%
-\NewDocumentCommand{\indicatorDesc}{+m+m}{%
- \expandafter\gdef\csname @indicator\tcppc@indindex long\endcsname{#1}
- \expandafter\gdef\csname @indicator\tcppc@indindex extra\endcsname{#2}
-}
-\NewDocumentCommand{\indicatorText}{+m}{%
- \expandafter\gdef\csname @indicator\tcppc@indindex text\endcsname{#1}
-}
-\NewDocumentCommand{\lstind}{O{\section}O{\subsection}m}{%
- \def\doit##1{\ifcsundef{@indicator#3##1star}{#2{\csname @indicator#3##1short\endcsname}}{#1{\csname @indicator#3##1short\endcsname}} \csname @indicator#3##1text\endcsname\par}%
-\expandafter\expandafter\expandafter\forcsvlist\expandafter\expandafter\expandafter\doit\expandafter\expandafter\expandafter{\csname @indicator#3lst\endcsname}
-}
+\starray_new:n {indicator}
+\starray_def_from_keyval:nn {indicator}
+ {
+ self = ,
+ view = \c_true_bool ,
+ has_lst = \c_false_bool ,
+ seqlst = , %this is going to be a sequence of 'ind'
+ ind.struct =
+ {
+ self = ,
+ short = ,
+ long = ,
+ extra = , %some extra long text, monstly unused
+ desc = , %expanded text for 'MEC' (inep questionaire)
+ status = ,
+ is_section = \c_false_bool ,
+ is_subsection = \c_false_bool ,
+ cnt = 0 , %auxiliar 'counter' (num of references)
+ seqlst = , %auxiliar list (references' list)
+ labelref = , %this will contain the 'hyperref label' (at doc's end) to be used.
+ ref.struct =
+ {
+ reflabel = , %this will contain the 'hyperref label' (in doc) to be used.
+ } ,
+ } ,
+ }
-%
-%\newcommand{\indsetstatus}[3][attention]{\expandafter\gdef\csname @indicator#2#3status\endcsname{#1}}
-\NewDocumentCommand{\indsetstatus}{O{attention}mm}{%
- \gdef\tcppc@indsetstatus##1{\expandafter\gdef\csname @indicator#2##1status\endcsname{#1}}%
- \expandafter\forcsvlist\expandafter\tcppc@indsetstatus\expandafter{#3}%
+\starray_new:n {status}
+\starray_def_from_keyval:nn {status}
+ {
+ bgcolor = ,
+ txtcolor = ,
+ self = ,
+ text = ,
+ view = \c_false_bool ,
+ refcnt = 0 , % 'counter'
+ }
+
+\starray_new:n {acrolist}
+\starray_def_from_keyval:nn {acrolist}
+ {
+ acronym = ,
+ long = ,
+ }
+
+
+\NewDocumentCommand{\declareindicator}{st+O{noref}mmm}
+ {
+ %#3: status #4:org #5:mark #6:short text
+ \starray_set_iter_from_hash:nnF {indicator}{#4}
+ {
+ \starray_new_term:nn {indicator}{#4}
+ \seq_clear:N \l_tmpa_seq
+ \starray_set_prop:nnV {indicator}{seqlst}{\l_tmpa_seq}
+ %\seq_new:c {l__ufrgscca_ind_ #4 _seq}
+ \starray_set_prop:nnn {indicator}{self}{#4}
+ }
+ \starray_new_term:nn {indicator.ind}{@#5}
+ \starray_set_from_keyval:nn {indicator.ind}
+ {
+ short = {#6} ,
+ status = {#3} ,
+ self = {#5} ,
+ labelref = {@ufrgscca@ #4 @ #5} , %% to be issued when "printing the indicators' list"
+ %seqlst = {l__ufrgscca_ind_ #4 _ #5 _seq} ,
+ %cnt = {l__ufrgscca_ind_ #4 _ #5 _cnt_int} ,
+ }
+ \seq_clear:N \l_tmpa_seq
+ \starray_set_prop:nnV {indicator.ind}{seqlst}{\l_tmpa_seq}
+ %\seq_new:c {l__ufrgscca_ind_ #4 _ #5 _seq}
+ %\int_new:c {l__ufrgscca_ind_ #4 _ #5 _cnt_int}
+ \IfBooleanTF{#1}
+ {
+ \starray_get_prop:nnN {indicator}{seqlst}\l_tmpa_seq
+ \seq_put_right:Nn \l_tmpa_seq {@#5}
+ \starray_set_prop:nnV {indicator}{seqlst}\l_tmpa_seq
+ %\seq_put_right:cn {l__ufrgscca_ind_ #4 _seq}{@#5}
+ \starray_set_prop:nnn {indicator.ind}{is_section}{\c_true_bool}
+ \starray_set_prop:nnn {indicator}{has_lst}{\c_true_bool}
+ }
+ {}
+ \IfBooleanTF{#2}
+ {
+ \starray_get_prop:nnN {indicator}{seqlst}\l_tmpa_seq
+ \seq_put_right:Nn \l_tmpa_seq {@#5}
+ \starray_set_prop:nnV {indicator}{seqlst}\l_tmpa_seq
+ %\seq_put_right:cn {l__ufrgscca_ind_ #4 _seq}{@#5}
+ \starray_set_prop:nnn {indicator.ind}{is_subsection}{\c_true_bool}
+ \starray_set_prop:nnn {indicator}{has_lst}{\c_true_bool}
+ }
+ {}
+
+
+ }
+
+
+\NewDocumentCommand{\indicatorDesc}{+m+m}
+ {
+ \starray_set_from_keyval:nn {indicator.ind}
+ {
+ long = {#1} ,
+ extra = {#2} ,
+ }
+ }
+
+\NewDocumentCommand{\indicatorText}{+m}
+ {
+ \starray_set_prop:nnn {indicator.ind}{text}{#1}
+ }
+
+
+\NewDocumentCommand{\lstind}{O{\section}O{\subsection}m}
+ {
+ \starray_set_iter_from_hash:nnT {indicator}{#3}
+ {
+ \starray_get_prop:nnN {indicator}{seqlst}\l_tmpa_seq
+ \seq_map_inline:Nn \l_tmpa_seq
+ {
+ \starray_set_iter_from_hash:nn {indicator.ind}{##1}
+ \starray_term_syntax:n {indicator.ind}
+ \bool_if:nTF {\starray_parsed_get_prop:n{is_section}}
+ { #1 {\starray_parsed_get_prop:n{short}} }
+ { #2 {\starray_parsed_get_prop:n{short}} }
+ \starray_parsed_get_prop:n{text}
+ }
+ }
+ }
+
+
+\NewDocumentCommand{\indsetstatus}{O{attention}mm}
+ {
+ \starray_set_iter_from_hash:nn {indicator}{#2}
+ \seq_set_from_clist:Nn \l_tmpa_seq {#3}
+ \seq_map_inline:Nn \l_tmpa_seq
+ {
+ \starray_set_iter_from_hash:nn {indicator.ind}{@##1}
+ \starray_gset_prop:nnn {indicator.ind}{status}{#1}
+ }
+ }
+
+\NewDocumentCommand{\indsetview}{m}
+ {
+ \starray_set_iter_from_hash:nn {indicator}{#1}
+ \starray_gset_prop:nnn {indicator}{view}{\c_true_bool}
+
+ }
+
+\NewDocumentCommand{\indsethide}{m}
+ {
+ \starray_set_iter_from_hash:nn {indicator}{#1}
+ \starray_gset_prop:nnn {indicator}{view}{\c_false_bool}
+ }
+
+
+
+\NewDocumentEnvironment{listofindicators}{m}
+ {
+ \begin{list}{\textbf{??}}
+ {
+ \settowidth{\labelwidth}{#1}
+ \setlength{\labelsep}{1em}
+ \setlength{\itemindent}{0mm}
+ \setlength{\leftmargin}{\labelwidth}
+ \addtolength{\leftmargin}{\labelsep}
+ \setlength{\rightmargin}{0mm}
+ \setlength{\itemsep}{.1\baselineskip}
+ \renewcommand{\makelabel}[1]{\makebox[\labelwidth][l]{##1}}
+ }
+ }
+ {
+ \end{list}
+ }
+
+
+\NewDocumentCommand{\helpindicators}{}
+ {
+ \bool_if:NT \l__ufrgscca_showind_bool
+ {
+ \begin{itemize}[nosep,label=,leftmargin=0mm]
+ \item \tsmacro{\indsethide}{set} ~-~ Hide~ an~ indicator's~ set
+ \item \tsmacro{\comment}[status]{title,comment} ~-~ Just~ a~ comment
+ \item \tsmacro{\indref}[status]{set,ref,comment} ~-~ Single~ indicator's~ reference
+ \item \tsmacro{\indref*}[status]{set,ref,comment} ~-~ (Short~ text~ only)
+ \item \tsmacro{\indsetstatus}[status]{set,ref's-clist} ~-~ Set~ the~ status~ of~ a~(comma~separated)~ list~ of~ indicators.
+ \end{itemize}
+ where~ status:\newline
+ \starray_iterate_over:nn {status}
+ {
+ \starray_term_syntax:n {status}
+ \makebox[5mm]{} \makebox[17mm][r]{\textbf{\starray_parsed_get_prop:n{self}}}\ \ \starray_parsed_get_prop:n{text}\newline
+ }
+ }
+ }
+
+
+\NewDocumentCommand{\ifshowind}{+m+m}
+ {
+ \bool_if:NTF \l__ufrgscca_showind_bool
+ {#1}
+ {#2}
+ }
+
+
+
+\cs_new:Npn \__ufrgscca_status_refincr:n #1
+ {
+ \int_incr:c {#1}
+ }
+\cs_generate_variant:Nn \__ufrgscca_status_refincr:n {e}
+
+\cs_generate_variant:Nn \starray_get_prop:nnN {enN}
+\bool_new:N \l__ufrgscca_statuslst_bool
+\seq_new:N \l__ufrgscca_statuslst_seq
+
+\cs_new_protected:Npn \__ufrgscca_hypertarget:nn #1#2
+ {
+ \hypertarget{#1}{#2}
+ }
+\cs_generate_variant:Nn \__ufrgscca_hypertarget:nn {ee , en}
+
+\cs_new_protected:Npn \__ufrgscca_hyperlink:nn #1#2
+ {
+ \hyperlink{#1}{#2}
+ }
+\cs_generate_variant:Nn \__ufrgscca_hyperlink:nn {ee , en}
+
+\NewDocumentCommand{\PrintIndicators}{O{}}
+{
+ \bool_if:NT \l__ufrgscca_showind_bool
+ {
+ {
+ \footnotesize
+ \if@openright\cleardoublepage\else\clearpage\fi%%% TO BE CONVERTED Expl3
+
+ \phantomsection
+ \chapter*{Indicadores #1}
+ \begin{listofindicators}{EMPTY LIST . . .}
+ \tl_if_empty:nTF {#1}
+ {
+ \bool_set_false:N \l__ufrgscca_statuslst_bool
+ \__ufrgscca_set_statuscolor:n{attention}
+ }
+ {
+ \bool_set_true:N \l__ufrgscca_statuslst_bool
+ \seq_set_from_clist:Nn \l__ufrgscca_statuslst_seq {#1}
+ \seq_map_inline:Nn \l__ufrgscca_statuslst_seq
+ {
+ \starray_set_prop:nnn {status[##1]}{view}{\c_true_bool}
+ }
+ }
+ \starray_iterate_over:nn {indicator}
+ {
+ \starray_term_syntax:n {indicator}
+ \bool_if:nT {\starray_parsed_get_prop:n {view}}
+ {
+ \starray_iterate_over:nn {indicator.ind}
+ {
+ \starray_term_syntax:n{indicator.ind}
+ \starray_get_prop:enN {status[\starray_parsed_get_prop:n{status}]}{view} \l_tmpb_tl
+ \bool_if:nT {!\l__ufrgscca_statuslst_bool || \l_tmpb_tl}
+ {
+ \starray_term_syntax:n{indicator.ind}
+ \__ufrgscca_set_statuscolor:e{\starray_parsed_get_prop:n{status}}
+
+ \starray_get_prop:nnN {status}{refcnt}\l_tmpa_int
+ \int_set:Nn \l_tmpb_int {\l_tmpa_int + 1}
+ \starray_set_prop:nnV {status}{refcnt}\l_tmpb_int
+
+ \starray_term_syntax:n {indicator.ind}
+ \item[
+ \textbf{
+ \color{\l__ufrgscca_txtcolor_tl}
+ \__ufrgscca_hypertarget:en
+ {\starray_parsed_get_prop:n{labelref}}
+ {\starray_get_prop:nn {indicator}{self}:~\starray_get_prop:nn {indicator.ind}{self}}
+ }]
+ {\color{\l__ufrgscca_txtcolor_tl}\starray_get_prop:nn {indicator.ind}{short} \dotfill \normalsize\starray_get_prop:nn {indicator.ind}{status}}
+
+ \newline \starray_get_prop:nn {indicator.ind}{long} \starray_get_prop:nn {indicator.ind}{extra}
+ \starray_get_prop:nnN {indicator.ind}{seqlst} \l_tmpa_seq
+ \seq_if_empty:NF \l_tmpa_seq
+ {
+ \newline
+ \tl_set:Nn \l_tmpa_tl {} .\dotfill
+ \seq_map_inline:Nn \l_tmpa_seq
+ {
+ \l_tmpa_tl \ref{##1} ~(\pageref{##1})
+ \tl_set:Nn \l_tmpa_tl {,~}
+ }
+ }
+ }
+ }
+
+ }
+ }
+ \starray_iterate_over:nn {status}
+ {
+ \starray_term_syntax:n {status}
+ \item[\textbf{\starray_parsed_get_prop:n{self}}] \starray_parsed_get_prop:n {refcnt}
+ }
+ \end{listofindicators}
+ }
+ }
}
-%
-\NewDocumentCommand{\indsetview}{m}{\csname tcppc@indset#1viewtrue\endcsname}%
-%
-\NewDocumentCommand{\indsethide}{m}{\csname tcppc@indset#1viewfalse\endcsname}%
-%
-\NewDocumentEnvironment{listofindicators}{m}{%
- \begin{list}{\textbf{??}}{%
- \settowidth{\labelwidth}{#1}%
- \setlength{\labelsep}{1em}%
- \setlength{\itemindent}{0mm}%
- \setlength{\leftmargin}{\labelwidth}%
- \addtolength{\leftmargin}{\labelsep}%
- \setlength{\rightmargin}{0mm}%
- \setlength{\itemsep}{.1\baselineskip}%
- \renewcommand{\makelabel}[1]{\makebox[\labelwidth][l]{##1}}%
- }%
-}{%
- \end{list}%
-}%
-%
-\NewDocumentCommand{\tcppc@indrefitem}{O{, }m}{%
- \@ifundefined{r@@indlabel\tcppc@indA\tcppc@indB:#2}{}{#1 \ref{@indlabel\tcppc@indA\tcppc@indB:#2} (\pageref{@indlabel\tcppc@indA\tcppc@indB:#2})}%
-}%
-%
-\newif\iftcppc@itemdisp%
-\NewDocumentCommand{\tcppc@indicatorsitem}{m}{%%
- \@ifundefined{@indrefA#1}{}{%%
- \gdef\tcppc@indA{\csname @indrefA#1\endcsname}%%
- \gdef\tcppc@indB{\csname @indrefB#1\endcsname}%%
- \csname iftcppc@indset\tcppc@indA view\endcsname%
- \gdef\tcppc@status{\csname @indicator\tcppc@indA\tcppc@indB status\endcsname}%%
- \iftcppc@ind@filter\expandafter\tcppc@ind@filtercase\expandafter{\tcppc@status}\else\tcppc@itemdisptrue\fi%
- \iftcppc@itemdisp%
- \set@statuscolor{\tcppc@status}%%
- \@ifundefined{theind@\tcppc@status @count}{\stepcounter{ind@default@count}}{\stepcounter{ind@\tcppc@status @count}}%%
- \item[\textbf{\color{\ind@txtcolor}\hypertarget{@indlabel\tcppc@indA\tcppc@indB\tcppc@ind@filterstatus}{\tcppc@indA: \tcppc@indB}}]%
- {\color{\ind@txtcolor}\emph{\csname @indicator\tcppc@indA\tcppc@indB short\endcsname}} \dotfill %
- {\normalsize\color{\ind@txtcolor}\textbf{\csname @indicator\tcppc@indA\tcppc@indB status\endcsname}} %
- \ifthenelse{\equal{\csname @indicator\tcppc@indA\tcppc@indB long\endcsname}{}}{\break}{\newline\csname @indicator\tcppc@indA\tcppc@indB long\endcsname \csname @indicator\tcppc@indA\tcppc@indB extra\endcsname\hfill\break}%%
- \tcppc@indrefitem[.\dotfill]{1}%%
- \forcsvlist\tcppc@indrefitem{2,3,4,5,6,7,8,9,10,11,12,13}%
- \fi%
- \fi%
- }%%
-}%
-%
-\NewDocumentCommand{\tcppc@indicatorsbatch}{m}{\forcsvlist\tcppc@indicatorsitem{#10,#11,#12,#13,#14,#15,#16,#17,#18,#19}}%
-%
-\NewDocumentCommand{\tcppc@indicatorsBatch}{m}{\forcsvlist\tcppc@indicatorsbatch{#10,#11,#12,#13,#14,#15,#16,#17,#18,#19}}%
-%
-%
-\NewDocumentCommand{\tcppc@helpstatus}{+m}{\makebox[5mm]{}\makebox[17mm][r]{\textbf{#1}}\ \ \csname #1@text\endcsname\newline}%
-%
-\NewDocumentCommand{\tcppc@helpbf}{+m}{\textbf{\color{black}\textbackslash #1}$\,\,$}%
-\NewDocumentCommand{\tcppc@helpO}{+m}{{\color{darkteal}\textbf{[}<status>#1\textbf{]}}$\,\,$}%
-\NewDocumentCommand{\tcppc@helpM}{+m}{{\color{darkblue}\textbf{\{}#1\textbf{\}}}$\,\,$}%
-%
-\NewDocumentCommand{\helpindicators}{}{{\footnotesize%
- \if@showindicators%
- \begin{itemize}[nosep,label=,leftmargin=0mm]%
- \item \tcppc@helpbf{indsethide}\tcppc@helpM{<set>} - Hide an indicator's set%
- \item \tcppc@helpbf{comment}\tcppc@helpO{}\tcppc@helpM{<title>}\tcppc@helpM{<comment>} - Just a comment%
- \item \tcppc@helpbf{indref}\tcppc@helpO{}\tcppc@helpM{<set>}\tcppc@helpM{<ref>}\tcppc@helpM{<comment>} - Single indicator's reference%
- \item \tcppc@helpbf{indref*}\tcppc@helpO{}\tcppc@helpM{<set>}\tcppc@helpM{<ref>}\tcppc@helpM{<comment>} - (Short text only)%
- \item \tcppc@helpbf{indreflst}\tcppc@helpO{}\tcppc@helpM{<set>}\tcppc@helpM{\tcppc@helpO{:}<ref> , \tcppc@helpO{:}<ref> , ...}\tcppc@helpM{<comment>} - Referece list %
- \item \tcppc@helpbf{indreflst*}\tcppc@helpO{}\tcppc@helpM{<set>}\tcppc@helpM{\tcppc@helpO{:}<ref> , \tcppc@helpO{:}<ref> , ...}\tcppc@helpM{<comment>} - (Single box)%
- \item \tcppc@helpbf{indsetstatus}\tcppc@helpO{}\tcppc@helpM{<set>}\tcppc@helpM{<ref> , <ref> , ...} - Set the status of a list of indicators.%
- \end{itemize}%
- where status:\newline%
- \expandafter\forcsvlist\expandafter\tcppc@helpstatus\expandafter{\ind@statuslst}%
- \fi%
-}}%
-%
-\NewDocumentCommand{\tcppc@printcount}{+m}{\item[ ] {\color{\attention@txtcolor}\large\textbf{\makebox[15mm][r]{#1 :} \csname theind@#1@count\endcsname}}%
-}%
-%
-%
-%
-%\NewDocumentCommand{\ifshowindicators}{m}{\if@showindicators#1\fi}
-%\NewDocumentCommand{\ifthenelseshowindicators}{+m+m}{\if@showindicators#1\else#2\fi}
-\NewDocumentCommand{\ifshowind}{+m+m}{\if@showindicators#1\else#2\fi}
-%
-%
-\newif\iftcppc@ind@filter%
-\mkswitch[\tcppc@itemdispfalse]\tcppc@ind@filtercase%
-\NewDocumentCommand{\tcppc@ind@filteraux}{+m}{\addcase\tcppc@ind@filtercase{#1}{\tcppc@itemdisptrue}}%
-\NewDocumentCommand{\PrintIndicators}{O{}}{\footnotesize%
- \if@showindicators%%
- \def\tcppc@ind@filterstatus{#1}%
- \ifthenelse{\equal{#1}{}}{\tcppc@ind@filterfalse}{\tcppc@ind@filtertrue\expandafter\forcsvlist\expandafter\tcppc@ind@filteraux\expandafter{#1}}%
- \if@openright\cleardoublepage\else\clearpage\fi%%%
- \phantomsection%%
- \chapter*{Indicadores #1}%\newpage%%
- \begin{listofindicators}{EMPTY LIST . . .}%%
- \iftcppc@ind@filter\else\item[ ] {\color{\attention@txtcolor}\large\textbf{\the@indcounter}\ Indicadores.}\fi%%
- \tcppc@indicatorsbatch{}%
- \tcppc@indicatorsBatch{}%
- \forcsvlist\tcppc@indicatorsBatch{1,2,3,4,5,6,7,8,9}%
- \iftcppc@ind@filter\else\expandafter\forcsvlist\expandafter\tcppc@printcount\expandafter{\ind@statuslst}\fi%
- \end{listofindicators}%
- \fi%
-}%
-%
-%
-\NewDocumentCommand{\textmark}{O{attention}m}{\set@statuscolor{#1}{\color\ind@txtcolor {\textbf{!! #2 !!}}}}
-
-
-\NewDocumentCommand{\comment}{O{attention}m+m}{%
- \if@showindicators%
- \if@indnocomments\else%
- \set@statuscolor{#1}%
- \ \hfill\parbox{0.9\textwidth}{\small%
- \begin{mdframed}[style=indicatorsTikZ,frametitle=\tikztitle{#2}]%
- {\footnotesize #3\par}%
- \hfill\emph{status: }\textbf{\color{\ind@txtcolor}#1}%
- \end{mdframed}%
- }\\[-2.7mm]%
- \fi%
- \fi%
-}%
+
+
+\NewDocumentCommand{\textmark}{O{attention}m}
+ {
+ \bool_if:NT \l__ufrgscca_showind_bool
+ {
+ {
+ \__ufrgscca_set_statuscolor:n {#1}
+ \color{\l__ufrgscca_txtcolor_tl}
+ \textbf{!!~ #2~ !!}
+ }
+ }
+ }
+
+
+\NewDocumentCommand{\comment}{O{attention}m+m}
+ {
+ \bool_if:NT \l__ufrgscca_showind_bool
+ {
+ \bool_if:NF \l__ufrgscca_nocomments_bool
+ {
+ \__ufrgscca_set_statuscolor:n {#1}
+ \ \hfill\parbox{0.9\textwidth}{\small
+ \begin{mdframed}[style=NEWindicatorsTikZ,frametitle=\__ufrgscca_tikz_title:n{#2}]
+ {\footnotesize #3\par}
+ \hfill\emph{status:~}\textbf{\color{\l__ufrgscca_txtcolor_tl}#1}
+ \end{mdframed}
+ }\\[-2.7mm]
+ }
+ }
+ }
+
+
+
\let\remark\comment
-%
-\NewDocumentCommand{\indtext}{mm}{\csname @indicator#1#2short\endcsname}
-%
-\NewDocumentCommand{\tcppc@indhack}{smm+m}{%
- \csname iftcppc@indset#2view\endcsname%
- \set@statuscolor{\tcppc@status}%
- \ \hfill\parbox{0.9\textwidth}{\small%%
- \begin{mdframed}[style=indicatorsTikZ,frametitle=\tikztitle{\hyperlink{@indlabel#2#3}{#2 : #3}}]%%
- \pdftooltip{\emph{\csname @indicator#2#3short\endcsname}}{\csname @indicator#2#3long\endcsname}\par%%
- \if@indlongtext%%
- \IfBooleanF{#1}{%%
- \ifthenelse{\equal{\csname @indicator#2#3long\endcsname}{}}{}{\enquote{\footnotesize\csname @indicator#2#3long\endcsname}\par}%%
- }%
- \fi%%
- \if@indnocomments\else\ifthenelse{\equal{#4}{}}{}{{\emph{\color{\comments@txtcolor}{#4}}}\par}\fi%%
- \hfill\emph{status: }\textbf{\color{\ind@txtcolor}\tcppc@status}%%
- \end{mdframed}%%
- }\\[-2.7mm]%%
- \fi%
+
+\NewDocumentCommand{\indtext}{mm}
+ {
+ \bool_if:NT \l__ufrgscca_showind_bool
+ {
+ \starray_get_prop:nn {#1}{#2}{short}
+ }
+ }
+
+
+%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%
+%%%
+%%%
+%%%
+%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%
+
+
+\tl_new:N \l__ufrgscca_tmp_indref_tl
+\NewDocumentCommand{\indref}{sO{}mm+m}
+ {
+ \bool_if:NT \l__ufrgscca_showind_bool
+ {
+ \starray_set_iter_from_hash:nn {indicator}{#3}
+ \starray_set_iter_from_hash:nn {indicator.ind}{@#4}
+ \tl_if_empty:nF {#2}
+ {
+ \starray_gset_prop:nnn {indicator.ind}{status}{#2}
+ }
+ \starray_get_prop:nnN {indicator.ind}{seqlst} \l_tmpa_seq
+ \starray_get_prop:nnN {indicator.ind}{cnt} \l_tmpb_tl
+ \int_set:Nn \l_tmpa_int {\l_tmpb_tl + 1}
+ \starray_set_prop:nnV {indicator.ind}{cnt} \l_tmpa_int
+ \tl_set:Ne \l__ufrgscca_tmp_indref_tl {@indlabel@ #3 @ #4 - \int_use:N \l_tmpa_int }
+ \seq_put_right:Ne \l_tmpa_seq{\l__ufrgscca_tmp_indref_tl}
+ \starray_set_prop:nnV {indicator.ind}{seqlst} \l_tmpa_seq
+ \label{\l__ufrgscca_tmp_indref_tl}
+ \starray_term_syntax:n {indicator}
+ \bool_if:nT {\starray_parsed_get_prop:n {view}}
+ {
+ \starray_term_syntax:n {indicator.ind}
+ \__ufrgscca_set_statuscolor:e {\starray_parsed_get_prop:n {status}}
+ \starray_term_syntax:n {indicator.ind}
+ \ \hfill
+ \parbox{0.9\textwidth}
+ {
+ \small
+ \begin{mdframed}[style=NEWindicatorsTikZ,frametitle=\__ufrgscca_tikz_title:n{\__ufrgscca_hyperlink:en{\starray_parsed_get_prop:n {labelref}}{#3 ~:~ #4}}]
+ \pdftooltip{\emph{\starray_parsed_get_prop:n {short}}}{\starray_parsed_get_prop:n {long}}\par
+ \bool_if:NT \l__ufrgscca_indlong_bool
+ {
+ \IfBooleanF{#1}{
+ \ifthenelse{\equal{\starray_parsed_get_prop:n {long}}{}}{}{\enquote{\footnotesize\starray_parsed_get_prop:n {long}}\par}
+ }
+ }
+ \bool_if:NF \l__ufrgscca_nocomments_bool
+ {
+ \ifthenelse{\equal{#5}{}}{}{{\emph{\color{\l__ufrgscca_comment_color_tl}{#5}}}\par}
+ }
+ \hfill\emph{status: }\textbf{\color{\l__ufrgscca_txtcolor_tl}\starray_parsed_get_prop:n {status}}
+ \end{mdframed}
+ }\\[-2.7mm]
+ }
+ }
+ }
+
+\definecolor{grayblack}{rgb}{0.8,0.8,0.8}
+
+
+\tl_new:N \l__ufrgscca_txtcolor_tl
+\tl_new:N \l__ufrgscca_bgcolor_tl
+\tl_new:N \l__ufrgscca_comment_color_tl
+\tl_set:Nn \l__ufrgscca_comment_color_tl {darkblue}
+
+\cs_new_protected:Npn \__ufrgscca_set_statuscolor:n #1
+ {
+ \starray_set_iter_from_hash:nnF {status}{#1}
+ { \starray_set_iter_from_hash:nn {status}{default} }
+ \starray_get_prop:nnN {status}{txtcolor}\l__ufrgscca_txtcolor_tl
+ \starray_get_prop:nnN {status}{bgcolor}\l__ufrgscca_bgcolor_tl
+ }
+
+\cs_generate_variant:Nn \__ufrgscca_set_statuscolor:n {e}
+
+
+\cs_new_protected:Npn \__ufrgscca_set_txtcolor:n #1
+ {
+ \starray_set_iter_from_hash:nnF {status}{#1}
+ {
+ \starray_set_iter_from_hash:nn {status}{default}
+ }
+ \starray_term_syntax:n{status}
+ \color{\starray_parsed_get_prop:n{txtcolor}}
+ }
+
+\NewDocumentCommand{\SetStatusColor}{m}
+ {
+ \__ufrgscca_set_txtcolor:n {#1}
+ }
+
+\cs_new:Npn \__ufrgscca_def_colorpair:n #1
+ {
+ \colorlet{light#1}{white!85!#1}
+ \colorlet{dark#1}{#1!70!black!100}
+ }
+
+\cs_new:Npn \__ufrgscca_def_status:nnn #1#2#3
+ {
+ \starray_new_term:nn {status}{#1}
+ \starray_set_from_keyval:nn {status}
+ {
+ txtcolor = {dark#2} ,
+ bgcolor = {light#2} ,
+ text = {#3~ (#2)} ,
+ self = {#1} ,
+ }
+ \__ufrgscca_def_colorpair:n {#2}
+ }
+
+\__ufrgscca_def_status:nnn{tbd}{gray}{To~ Be~ Done}
+\__ufrgscca_def_status:nnn{done}{green}{Done}
+\__ufrgscca_def_status:nnn{review}{yellow}{to~ be~ reviewed}
+\__ufrgscca_def_status:nnn{attention}{red}{needs~ Attention}
+\__ufrgscca_def_status:nnn{NSA}{brown}{NSA}
+\__ufrgscca_def_status:nnn{noref}{magenta}{no~ references}
+\__ufrgscca_def_status:nnn{EAD}{violet}{EAD}
+\__ufrgscca_def_status:nnn{MDi}{teal}{(courseware)...}
+\__ufrgscca_def_status:nnn{DOCs}{blue}{other~ DOCs}
+\__ufrgscca_def_status:nnn{default}{cyan}{everything~ else}
+\__ufrgscca_def_status:nnn{comment}{blue}{a~ comment}
+
+
+
+\mdfdefinestyle{NEWindicatorsTikZ}{
+ linecolor=grayblack,
+ linewidth=0.4pt,
+% skipabove=0.65\baselineskip,
+% skipbelow=0.5\baselineskip,
+ skipabove=0pt,
+ skipbelow=0pt,
+ leftmargin =-3.5pt,
+ rightmargin=-3.5pt,
+ innerleftmargin=3pt,
+ innerrightmargin=3pt,
+ needspace=3\baselineskip,
+ backgroundcolor=\l__ufrgscca_bgcolor_tl,
+ usetwoside=false,
+% innertopmargin = 3pt,
+% innerbottommargin = 2pt,
+ innertopmargin = 2pt,
+ innerbottommargin = 2pt,
+ roundcorner = 4pt,
+ frametitle={\__ufrgscca_tikz_title:n{TITLE}},
+ frametitleaboveskip=-0.6\baselineskip,
+ frametitlebelowskip=0pt,
+ frametitlealignment = \raggedleft,
+ leftline = true,
+ rightline = true,
+ nobreak = true,
}
-\NewDocumentCommand{\indref}{sO{}mm+m}{%%
- \ifthenelse{\equal{#2}{}}{}{\expandafter\gdef\csname @indicator#3#4status\endcsname{#2}}%%
- \expandafter\gdef\expandafter\tcppc@status{\csname @indicator#3#4status\endcsname}%
- \stepcounter{@indcount#3#4}\label{@indlabel#3#4:\csname the@indcount#3#4\endcsname}%%
- \if@showindicators%%
- \IfBooleanTF{#1}{\tcppc@indhack*{#3}{#4}{#5}}{\tcppc@indhack{#3}{#4}{#5}}
- \fi% %
-}%
-%
-%
-%\newcommand{\tcppc@indreflstitem}[4][]{%
-\NewDocumentCommand{\tcppc@indreflstitem}{O{}mmm}{%
- \ifthenelse{\equal{#1}{}}{}{\expandafter\gdef\csname @indicator#2#3status\endcsname{#1}}%
- \expandafter\gdef\expandafter\tcppc@status{\csname @indicator#2#3status\endcsname}%
- \stepcounter{@indcount#2#3}\label{@indlabel#2#3:\csname the@indcount#2#3\endcsname}%%
- \set@statuscolor{\tcppc@status}%
- \hyperlink{@indlabel#2#3}{\textbf{#3 :}}\pdftooltip{\emph{\csname @indicator#2#3short\endcsname}}{\csname @indicator#2#3long\endcsname}\par%%
- \if@indlongtext%%
- \ifthenelse{\equal{\csname @indicator#2#3long\endcsname}{}}{}{\enquote{\footnotesize\csname @indicator#2#3long\endcsname}\par}%%
- \fi%%
- \hfill\emph{status: }\textbf{\color{\ind@txtcolor}\tcppc@status\break}%%
-}%
-
-\NewDocumentCommand{\indreflst}{sO{}mmm}{%
- \IfBooleanTF{#1}{%
- \gdef\tcppc@indreflst##1{\StrCut{##1}{:}\tcppc@parA\tcppc@parB\IfStrEq{\tcppc@parB}{}{\tcppc@indreflstitem{#3}{\tcppc@parA}{#5}}{\expandafter\tcppc@indreflstitem\expandafter[\tcppc@parA]{#3}{\tcppc@parB}{#5}}}%
- \if@showindicators%
- \csname iftcppc@indset#3view\endcsname%
- \ \hfill\parbox{0.9\textwidth}{\small%
- \begin{mdframed}[style=indicatorsTikZ,frametitle=\tikztitle{#3}]%%
- \expandafter\forcsvlist\expandafter\tcppc@indreflst\expandafter{#4}%
- \if@indnocomments\else\ifthenelse{\equal{#5}{}}{}{{\emph{\color{\comments@txtcolor}{#5}}}\par}\fi%%
- \set@statuscolor{#2}%
- \end{mdframed}%
- }%
- \fi%
- \fi%
- }{%
- \gdef\tcppc@indreflst##1{\StrCut{##1}{:}\tcppc@parA\tcppc@parB\IfStrEq{\tcppc@parB}{}{\indref{#3}{\tcppc@parA}{}}{\indref[\tcppc@parA]{#3}{\tcppc@parB}{}}}%
- \expandafter\forcsvlist\expandafter\tcppc@indreflst\expandafter{#4}%
- \comment[#2]{comment}{#5}%
- }%
-}%
-%
-% other default colors (xcolor pack): lime, olive, orange, pink, purple.
-%
-\def\tcppc@defcolorpair#1{\colorlet{light#1}{white!85!#1}\colorlet{dark#1}{#1!70!black!100}}
-%
-%
-\definecolor{grayblack}{rgb}{0.8,0.8,0.8}%
-%
-%
-\NewDocumentCommand{\ind@defstatus}{mmm}{%
- \newcounter{ind@#1@count}%
- \tcppc@defcolorpair{#2}%
- \expandafter\gdef\csname #1@txtcolor\endcsname{dark#2}%
- \expandafter\gdef\csname #1@bgcolor\endcsname{light#2}%
- \expandafter\gdef\csname #1@text\endcsname{#3 (#2)}%
- \@ifundefined{ind@statuslst}{\gdef\ind@statuslst{#1}}{\edef\ind@statuslst{\ind@statuslst,#1}}%
-}%
-%
-\ind@defstatus{tbd}{gray}{To Be Done}%
-\ind@defstatus{done}{green}{Done}%
-\ind@defstatus{review}{yellow}{to be reviewed}%
-\ind@defstatus{attention}{red}{needs Attention}%
-\ind@defstatus{NSA}{brown}{NSA}%
-\ind@defstatus{noref}{magenta}{no references}%
-\ind@defstatus{EAD}{violet}{EAD}%
-\ind@defstatus{MDi}{teal}{(courseware)...}%
-\ind@defstatus{DOCs}{blue}{other DOCs}%
-\ind@defstatus{default}{cyan}{everything else}%
-%
-\def\comments@txtcolor{darkblue}%
-%
-%
-\def\ind@TikZpos{0.44}%
-\NewDocumentCommand{\tikztitle}{m}{\tikz[baseline=(current bounding box.east),outer sep=0pt,xshift=1cm,thin,color=grayblack] \draw (0,0) (\ind@TikZpos,0) node[anchor=west,rectangle,rounded corners,fill=white,draw] at (\ind@TikZpos,0) {#1} node[anchor=west,rectangle,rounded corners,color=black] at (\ind@TikZpos,0) {#1};}%%
-%
-%
-\mdfdefinestyle{indicatorsTikZ}{%
- linecolor=grayblack,%%
- linewidth=0.4pt,%
-% skipabove=0.65\baselineskip,%
-% skipbelow=0.5\baselineskip,%
- skipabove=0pt,%
- skipbelow=0pt,%
- leftmargin =-3.5pt,%
- rightmargin=-3.5pt,%
- innerleftmargin=3pt,%
- innerrightmargin=3pt,%
- needspace=3\baselineskip,%
- backgroundcolor=\ind@bgcolor,%
- usetwoside=false,%
-% innertopmargin = 3pt,%
-% innerbottommargin = 2pt,%
- innertopmargin = 2pt,%
- innerbottommargin = 2pt,%
- roundcorner = 4pt,%
- frametitle={\tikztitle{TITLE}},%
- frametitleaboveskip=-0.6\baselineskip,%
- frametitlebelowskip=0pt,%
- frametitlealignment = \raggedleft,%
- leftline = true,%
- rightline = true,%
- nobreak = true,%
-}%
-
-\NewDocumentCommand{\fancyquote}{O{-2\topsep-2\parsep-2\partopsep-2\parskip}+mmm}{%
- \vspace{#1}{%
- \ \hfill\begin{minipage}{0.5\textwidth}\noindent\scriptsize\emph{''#2''}%
- {\vspace{-\parsep}\begin{flushright}\footnotesize#3\\\sc #4\end{flushright}} \end{minipage}\\
- }}
+\tl_new:N \l__ufrgscca_TikZ_pos_tl
+\tl_set:Nn \l__ufrgscca_TikZ_pos_tl {0.44}
+\cs_new_protected:Npn \__ufrgscca_tikz_title:n #1
+ {
+ \tikz[baseline=(current~ bounding~ box.east),outer~ sep=0pt,xshift=1cm,thin,color=grayblack]
+ \draw (0,0) (\l__ufrgscca_TikZ_pos_tl,0)
+ node[anchor=west,rectangle,rounded~ corners,fill=white,draw] at (\l__ufrgscca_TikZ_pos_tl,0) {#1}
+ node[anchor=west,rectangle,rounded~ corners,color=black] at (\l__ufrgscca_TikZ_pos_tl,0) {#1};
+ }
+
+
+
+
+\NewDocumentCommand{\fancyquote}{O{-2\topsep-2\parsep-2\partopsep-2\parskip}+mmm}
+ {
+ \vspace{#1}
+ {
+ \ \hfill
+ \begin{minipage}{0.5\textwidth}
+ \noindent\scriptsize\emph{''#2''}
+ { \vspace{-\parsep}
+ \begin{flushright}
+ \footnotesize
+ #3\\
+ \sc #4
+ \end{flushright}
+ }
+ \end{minipage}\\
+ }
+ }
\NewDocumentEnvironment{ppc.quote}{}{\begin{displayquote}\begin{itshape}\smaller}{\end{itshape}\end{displayquote}}
%\preto\displayquote{\begingroup\setlength{\leftmargini}{0mm}}
%\appto\enddisplayquote{\endgroup}
-\RenewDocumentEnvironment{quote}{}{%
- \list{}{\leftmargin20mm\rightmargin0mm}%
- \item\relax%
-}{\endlist}
+\RenewDocumentEnvironment{quote}{}
+ {
+ \list{}{\leftmargin20mm\rightmargin0mm}
+ \item\relax
+ }
+ { \endlist }
%
\NewDocumentCommand{\labelhack}{m}{\def\@currentlabelname{#1}}
-\NewDocumentCommand{\acrolist}{}{}
-\NewDocumentCommand{\acrodef}{mmm}{%
- %\expandafter\DeclareFixedFootnote\expandafter{\csname #1\endcsname}{#3}%
- \expandafter\def\csname #1\endcsname{\footnote{#3}}%
- \expandafter\def\csname acrolsti:#1\endcsname{\item[#2] #3}%
- \appto\acrolist{\item[#2] #3}%
- \expandafter\def\csname acroS:#1\endcsname{#2}%
- \expandafter\def\csname acroL:#1\endcsname{#3}%
+
+
+\NewDocumentCommand{\acrodef}{mmm}
+ {
+ \starray_new_term:nn {acrolist}{#1}
+ \starray_set_from_keyval:nn {acrolist}
+ {
+ short = {#2} ,
+ long = {#3}
+ }
+ }
+
+\NewDocumentCommand{\acro}{m}{\starray_get_prop:nn{acrolist[#1]}{short}}
+\NewDocumentCommand{\acrol}{m}{\starray_get_prop:nn{acrolist[#1]}{long}}
+\NewDocumentCommand{\acrols}{m}{\starray_get_prop:nn{acrolist[#1]}{long}, \starray_get_prop:nn{acrolist[#1]}{short}}
+\NewDocumentCommand{\acrosl}{m}{\starray_get_prop:nn{acrolist[#1]}{short}, \starray_get_prop:nn{acrolist[#1]}{long}}
+\NewDocumentCommand{\acrofoot}{m}{\starray_get_prop:nn{acrolist[#1]}{short}\footnote{\starray_get_prop:nn{acrolist[#1]}{long}}}
+\NewDocumentCommand{\printacrolist}{O{}m}{
+ \begin{listofabbrv}[#1]{#2}
+ \starray_iterate_over:nn {acrolist}
+ { \item[\starray_get_prop:nn{acrolist}{short}] \starray_get_prop:nn{acrolist}{long} }
+ \end{listofabbrv}
}
-\NewDocumentCommand{\acroitem}{m}{\csname acrolsti:#1\endcsname}
-\NewDocumentCommand{\printacrolist}{O{}m}{\begin{listofabbrv}[#1]{#2}\acrolist\end{listofabbrv}}
-\NewDocumentCommand{\acro}{m}{\csname acroS:#1\endcsname}
-\NewDocumentCommand{\acrol}{m}{\csname acroL:#1\endcsname}
-\NewDocumentCommand{\acrols}{m}{\csname acroL:#1\endcsname, \csname acroS:#1\endcsname}
-\NewDocumentCommand{\acrosl}{m}{\csname acroS:#1\endcsname, \csname acroL:#1\endcsname}
-\NewDocumentCommand{\acrofoot}{m}{\csname acroS:#1\endcsname\csname #1\endcsname}
+
\RenewDocumentCommand{\subparagraph}{m}{}
diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-ptBR-coord.def b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-ptBR-coord.def
deleted file mode 100644
index 8265a5e16de..00000000000
--- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-ptBR-coord.def
+++ /dev/null
@@ -1,167 +0,0 @@
-%%%==============================================================================
-%% Copyright 2022-23 by Alceu Frigeri
-%%
-%% This work may be distributed and/or modified under the conditions of
-%%
-%% * The [LaTeX Project Public License](http://www.latex-project.org/lppl.txt),
-%% version 1.3c (or later), and/or
-%% * The [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html),
-%% version 3 (or later)
-%%
-%% This work has the LPPL maintenance status *maintained*.
-%%
-%% The Current Maintainer of this work is Alceu Frigeri
-%%
-%% This is version 1.12 (2023/09/23)
-%%
-%% The list of files that compose this work can be found in the README.md file at
-%% https://ctan.org/pkg/ufrgscca
-%%
-%%%==============================================================================
-%% UFRGS stands for "Federal University of Rio Grande do Sul" in south Brazil
-%% EE stands for "Engineering School"
-%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym)
-%%%==============================================================================
-\makeatletter
-\def\tc@tmp@packname{ufrgscca-ptBR-coord}
-\def\tc@tmp@altpackname{ufrgsccaptbrcoord}
-\def\tc@tmp@packdesc{UFRGS/CCA Portuguese coord defs}
-\def\tc@tmp@packdate{2023/09/23}
-\def\tc@tmp@packversion{1.12}
-\let\@exp\expandafter
-\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion}
-
-
-\calendartitle{Calendário – \tcdef@coord@TCCperiod}
-
-\tcccalendarhead{Data/Período}{Semana Letiva}{Evento}
-\tcceventAweek{01}
-\tcccalendarevent{\tcdef@coord@tcceventAweek}{Apresentação da disciplina. Informações gerais. Reunião presencial com início às 18:30h, no Salão de Eventos do DELET.\newline {\bf Presença obrigatória.}}
-\tcceventBweek{02}
-\tcccalendarevent{\tcdef@coord@tcceventBweek}{Requerimento de matrícula. O(A) aluno(a) deve abrir processo/petição de matrícula em TCC no porta TuaUFRGS, adicionando ao mesmo o \emph{Formulário de Requerimento de Matrícula}, já com o resumo do trabalho, a ser encaminhado a\tccore@@ref{TCCcoord}{article} coordenador\tccore@@ref{TCCcoord}{narticle} da atividade. \newline{\bf Obs.~1}}
-%\tcccalendarevent{03}{Entrega do \emph{Formulário de Inscrição}, juntamente com o resumo do trabalho, no \tcdef@cover@secdivisionacronym .}
-\tcceventCweek{07}
-\tcccalendarevent{\tcdef@coord@tcceventCweek}{Encontro presencial: Como redigir um TCC, melhores práticas. Início às 18:30h, no Salão de Eventos do DELET.}% \newline {\bf Presença obrigatória.}}
-\tcceventDweek{09}
-\tcccalendarevent{\tcdef@coord@tcceventDweek}{Entrega VIA MOODLE do \emph{Relatório Parcial}, juntamente com o \emph{Formulário de Aprovação do Relatório Parcial e Banca Examinadora} assinado pelo orientador. \newline{\bf Obs.~2}}
-\tcceventEweek{15}
-\tcccalendarevent{\tcdef@coord@tcceventEweek}{Entrega de uma cópia impressa (ou eletrônica) do Trabalho de Conclusão a cada membro da banca, juntamente com os \emph{Formulários de Avaliação} e \emph{Formulários de correções} do trabalho. Entrega VIA MOODLE de uma cópia eletrônica do trabalho juntamente com o \emph{Formulário de Aprovação para Apresentação} e os recibos de recebimento assinados e datados pelos membros das bancas.}
-\tcceventFweek{16}
-\tcccalendarevent{\tcdef@coord@tcceventFweek}{Encontro presencial: Como apresentar um TCC, melhores técnicas. Início às 18:30h, no Salão de Eventos do DELET.}% \newline {\bf Presença obrigatória.}}
-\tcceventGweek{17}
-\tcccalendarevent{\tcdef@coord@tcceventGweek}{Apresentações dos Trabalhos de Conclusão de Curso. \newline{\bf Obs.~3}}
-\tcceventHweek{17}
-\tcccalendarevent{\tcdef@coord@tcceventHweek}{Entrega VIA MOODLE dos \emph{Formulários de correções} dos membros da banca.}
-\tcceventIweek{18}
-\tcccalendarevent{\tcdef@coord@tcceventIweek}{Entrega VIA MOODLE da versão final corrigida do trabalho e o \emph{Formulário de Aprovação das Correções}. Entrega do formulário de autorização para publicação (biblioteca) assinado na secretaria do DELAE. \newline{\bf Obs.~4}}
-\tcceventJweek{19}
-\tcccalendarevent{\tcdef@coord@tcceventJweek}{Para os TCCs em RECUPERAÇÃO, entrega VIA MOODLE da versão final corrigida do trabalho e o \emph{Formulário de Aprovação das Correções}. Entrega do formulário de autorização para publicação (biblioteca) assinado na secretaria do DELAE. \newline{\bf Obs.~5}}
-
-
-\tcccalendardesc{\begin{description}
-\item[Obs. 1]: Caso o aluno(a) já tenha um processo aberto de TCC, reusar o mesmo apenas anexando o novo requerimento de matrícula, caso necessário.
-\item[Obs. 2]: O relatório deve conter as declarações de concordância em participar da banca da parte dos professores convidados.
-\item[Obs. 3]: As bancas serão marcadas após a entrega do relatório parcial, de acordo com a disponibilidade dos professores convidados.
-\item[Obs. 4]: O \emph{Formulário de Aprovação das Correções} deve estar assinado pelo(a) orientador(a). Para relatórios em que o campo “Revisarei o trabalho depois de corrigido” tiver sido assinalado por algum membro da banca, a assinatura do(a) mesmo(a) também deverá constar no \emph{Formulário de Aprovação das Correções}.
-\item[Obs. 5]: Trabalho em RECUPERAÇÃO é aquele cuja nota final quando da defesa é insuficiente para aprovação OU aquele em que o campo “Reescrever tudo” do formulário de correções foi marcado por algum membro da banca. Neste caso, o \emph{Formulário de Aprovação das Correções} deve estar assinado tanto pelo(a) orientador(a) como pelo(s) membro(s) da banca designado(s) para reavaliar o trabalho, incluindo obrigatoriamente aqueles que tiverem marcado o campo “Revisarei o trabalho depois de corrigido”.\\\hrule
-\item[IMPORTANTE]: O(A) aluno(a) estará {\bf REPROVADO(A)} \emph{se falhar na entrega de qualquer um dos documentos aqui citados dentro dos prazos estipulados}.
-\end{description}}
-
-
-\studentlistformtitle{Lista de presença, \tcdef@coord@studentlistactivity, dia \tcdef@coord@studentlistdate}
-\studentlistactivity{apresentação da atividade de TCC}
-\studentlistdate{\number\day/\number\month}
-
-\tccreporttitle{Relatório parcial/final}
-\tccreportopening{Para registro}
-\tccreportdesc{Relatório parcial/final referente aos alunos matriculados na atividade de ensino de \tcdef@forms@formstitle\ semestre \tcdef@coord@TCCperiod .}
-
-\tccreportabsents{Desistentes com conceito (segundo semestre)}
-\tccreportdismiss{Desistentes sem conceito (primeiro semestre)}
-\tccreferralopening{Ao\\ \tcdef@cover@secretaryacronym\ da \tcdef@cover@universitydivision}
-
-\internshipreferralopening{Ao\\ \tcdef@cover@secretaryacronym\ da \tcdef@cover@universitydivision}
-
-
-\internshipgrades{%
- \noindent\tcdef@forms@internshipsupervisorinfo\\%
- \noindent Avaliação do Supervisor:
- {\small\begin{center} \begin{tabular}{rcrcrc}
- Qualidade do Trabalho: & \textbf{\tccore@@ref{supervisor}{pointAA}} & Engenhosidade: &\textbf{\tccore@@ref{supervisor}{pointAB}} & Conhecimentos: & \textbf{\tccore@@ref{supervisor}{pointAC}} \\
- Cumprimento de Tarefas: & \textbf{\tccore@@ref{supervisor}{pointAD}} &
- Iniciativa: & \textbf{\tccore@@ref{supervisor}{pointAE}} & \textsc{Total I:} & \textbf{\tccore@@ref{supervisor}{gradeA}}\\\hline
- Assiduidade: & \textbf{\tccore@@ref{supervisor}{pointBA}} & Disciplina: & \textbf{\tccore@@ref{supervisor}{pointBB}} & Sociabilidade: & \textbf{\tccore@@ref{supervisor}{pointBC}} \\ Cooperação: & \textbf{\tccore@@ref{supervisor}{pointBD}} & Responsabilidade: & \textbf{\tccore@@ref{supervisor}{pointBE}} & \textsc{Total II:} & \textbf{\tccore@@ref{supervisor}{gradeB}}
- \end{tabular}\end{center}}
- \noindent\tcdef@forms@internshiptutorinfo\\%
- \noindent Avaliação do Tutor: \textbf{\tccore@@ref{tutor}{grade}}\\%
-
- \noindent Coordenador: \textbf{\tcdef@core@internshipcoord}\\%
- \noindent Avaliação do Coordenador: \textbf{\tccore@@ref{internship}{coordgrade}}\\[5mm]%
- \noindent \textsc{Nota Final:} \textbf{\tccore@@ref{student}{Temp}}\\%
- \noindent {\footnotesize $\frac{2 * (Total~I + Total~II) + Tutor + Coord.}{28}$}\\%
-}
-
-\internshipreferralfailFF{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \emph{\tccore@@ref{student}{}}\ n\~{a}o entregou o Relatório de Estágio Supervisionado Obrigatório até a data limite de \tc@internshipcommitBB\ sendo, portanto, considerado \tcdef@coord@referralfailed\ com conceito final \textbf{FF}.}
-
-
-\referralfailed{{REPROVAD\tccore@@ref{student}{Article}}}
-\referralapproved{{APROVAD\tccore@@ref{student}{Article}}}
-
-\referralexamapprovedtext{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \emph{\tccore@@ref{student}{}}\ apresentou o trabalho intitulado \emph{\tccore@@ref{student}{title}}\ no dia \tccore@@ref{student}{date}, n\~{a}o tendo sido considerad\tccore@@ref{student}{article} apt\tccore@@ref{student}{article} pela banca listada abaixo. Posto em exame, \tccore@@ref{student}{article} mesm\tccore@@ref{student}{article} foi \tcdef@coord@referralapproved\ com conceito final \tc@TCCgradeC .}
-
-\referralexamfailtext{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \emph{\tccore@@ref{student}{}}\ apresentou o trabalho intitulado \emph{\tccore@@ref{student}{title}}\ no dia \tccore@@ref{student}{date}, n\~{a}o tendo sido considerad\tccore@@ref{student}{article} apt\tccore@@ref{student}{article} pela banca listada abaixo. Posto em exame, \tccore@@ref{student}{article} mesm\tccore@@ref{student}{article} foi \tcdef@coord@referralfailed\ com conceito final \tc@TCCgradeD .}
-
-\referralfatetext{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \emph{\tccore@@ref{student}{}}\ apresentou o trabalho intitulado \emph{\tccore@@ref{student}{title}}\ no dia \tccore@@ref{student}{date}, tendo sido \tccoord@referralfate{\tccore@@ref{student}{Temp}} com conceito final \textbf{\tccoord@@fate{\Alph{tc@studentcount}}}, conforme quadro de notas abaixo. }
-
-\referralfailFF{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \emph{\tccore@@ref{student}{}}\ n\~{a}o concluiu o trabalho de conclus\~{a}o de Curso tendo sido \tcdef@coord@referralfailed\ com conceito final \textbf{FF}.}
-
-
-%%% for TCC-I
-\referralexamapprovedtextTR{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \emph{\tccore@@ref{student}{}}\ submeteu o trabalho intitulado \emph{\tccore@@ref{student}{title}}, n\~{a}o tendo sido considerad\tccore@@ref{student}{article} apt\tccore@@ref{student}{article} pela banca listada abaixo. Posto em exame, \tccore@@ref{student}{article} mesm\tccore@@ref{student}{article} foi \tcdef@coord@referralapproved\ com conceito final \tc@TCCgradeC .}
-
-\referralexamfailtextTR{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \emph{\tccore@@ref{student}{}}\ submeteu o trabalho intitulado \emph{\tccore@@ref{student}{title}}, n\~{a}o tendo sido considerad\tccore@@ref{student}{article} apt\tccore@@ref{student}{article} pela banca listada abaixo. Posto em exame, \tccore@@ref{student}{article} mesm\tccore@@ref{student}{article} foi \tcdef@coord@referralfailed\ com conceito final \tc@TCCgradeD .}
-
-\referralfatetextTR{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \emph{\tccore@@ref{student}{}}\ submeteu o trabalho intitulado \emph{\tccore@@ref{student}{title}}, tendo sido \tccoord@referralfate{\tccore@@ref{student}{Temp}} com conceito final \textbf{\tccoord@@fate{\Alph{tc@studentcount}}}, conforme quadro de notas abaixo. }
-
-%%\referralfailFF{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \emph{\tccore@@ref{student}{}}\ n\~{a}o concluiu o trabalho de conclus\~{a}o de Curso tendo sido \tcdef@coord@referralfailed\ com conceito final \textbf{FF}.}
-
-
-
-
-
-
-\internshipreferralfatetext{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \tccore@@ref{student}{}, cartão No. \tccore@@ref{student}{ID}, Matriculado na Atividade de Estágio Supervisionado Obrigatório, estagiou na Empresa \tccore@@ref{internship}{company}, no período de \tccore@@ref{internship}{start} até \tccore@@ref{internship}{end}, tendo entregue o Relatório de Estágio Supervisionado Obrigatório em
-\tccore@@ref{student}{date}, tendo sido considerado \tccoord@referralfate{\tccore@@ref{student}{Temp}} com conceito final \textbf{\tccoord@@fate{\Alph{tc@studentcount}}}, conforme notas abaixo.}
-
-
-\internshipreferralexamapprovedtext{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \emph{\tccore@@ref{student}{}}, cartão No. \tccore@@ref{student}{ID}, matriculado na Atividade de Estágio Supervisionado Obrigatório, estagiou na Empresa \tccore@@ref{internship}{company}, no período de \tccore@@ref{internship}{start} até \tccore@@ref{internship}{end}, tendo entregue o relatório de Estágio Supervisionado Obrigatório
-em data posterior a data limite de \tc@internshipcommitAA, estando em Exame. Conforme notas abaixo o mesmo foi considerado \tcdef@coord@referralapproved\ com conceito final \textbf{\tc@TCCgradeC}.}
-
-\internshipreferralexamfailtext{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \emph{\tccore@@ref{student}{}}, cartão No. \tccore@@ref{student}{ID}, matriculado na Atividade de Estágio Supervisionado Obrigatório, estagiou na Empresa \tccore@@ref{internship}{company}, no período de \tccore@@ref{internship}{start} até \tccore@@ref{internship}{end}, tendo entregue o relatório de Estágio Supervisionado Obrigatório em
-em data posterior a data limite de \tc@internshipcommitAA, estando em Exame. Conforme notas abaixo o mesmo foi considerado \tcdef@coord@referralfailed\ com conceito final \textbf{\tc@TCCgradeD}.}
-
-\internshipreferralexamhardapprovedtext{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \emph{\tccore@@ref{student}{}}, cartão No. \tccore@@ref{student}{ID}, matriculado na Atividade de Estágio Supervisionado Obrigatório, estagiou na Empresa \tccore@@ref{internship}{company}, no período de \tccore@@ref{internship}{start} até \tccore@@ref{internship}{end}. O mesmo foi posto em Exame pois o relatório de Estágio Supervisionado Obrigatório
-inicialmente submetido apresentava diversos problemas formais, tendo re-submetido o mesmo em \tccore@@ref{student}{date}. Conforme notas abaixo o mesmo foi considerado \tcdef@coord@referralapproved\ com conceito final \textbf{\tc@TCCgradeC}.}
-
-\internshipreferralexamhardfailtext{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \emph{\tccore@@ref{student}{}}, cartão No. \tccore@@ref{student}{ID}, matriculado na Atividade de Estágio Supervisionado Obrigatório, estagiou na Empresa \tccore@@ref{internship}{company}, no período de \tccore@@ref{internship}{start} até \tccore@@ref{internship}{end}. O mesmo foi posto em Exame pois o relatório de Estágio Supervisionado Obrigatório
-inicialmente submetido apresentava diversos problemas formais, tendo re-submetido o mesmo em \tccore@@ref{student}{date}. Conforme notas abaixo o mesmo foi considerado \tcdef@coord@referralfailed\ com conceito final \textbf{\tc@TCCgradeD}.}
-
-
-\boardlabel{Banca Examinadora}
-\boardstitle{Apresentações TCC em \tcdef@cover@course\ \tcdef@coord@TCCperiod\ \tcdef@coord@boardstitleB\ }
-\boardsworklabel{Título}
-\TCCgradesNlabel{Nota}
-\TCCgradesClabel{Conceito}
-\TCCgrades{A}{B}{C}{D}{FF}
-\TCCgradesN{9}{7.5}{6}
-
-\cocertificatetitle{CERTIFICADO}
-\cocertificateopenning{\`{A} quem interessar possa,\\ certificamos que}
-\cocertificatetext{atuou como co-orientador\tccore@@ref{coadvisor}{narticle} d\tccore@@ref{student}{article} alun\tccore@@ref{student}{article}\ \emph{\tccore@@ref{student}{}}\ no trabalho de conclus\~{a}o de curso intitulado \emph{\tccore@@ref{student}{title}}\ no semestre \tcdef@coord@TCCperiod.}
-
-\TCCcoordtitle{Coordenador\tccore@@ref{TCCcoord}{narticle} da atividade de ensino de\\ \tcdef@forms@formstitle\ }
-\TCCIcoordtitle{Coordenador\tccore@@ref{TCCcoord}{narticle} da atividade de ensino de\\ \tcdef@forms@formstitleTR\ }
-
-
-\advisornamegen{Orientador(a)}
-\advisornameplural{Orientadores}
diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-ptBR-core.def b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-ptBR-core.def
deleted file mode 100644
index ae3ef710779..00000000000
--- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-ptBR-core.def
+++ /dev/null
@@ -1,95 +0,0 @@
-%%%==============================================================================
-%% Copyright 2022-23 by Alceu Frigeri
-%%
-%% This work may be distributed and/or modified under the conditions of
-%%
-%% * The [LaTeX Project Public License](http://www.latex-project.org/lppl.txt),
-%% version 1.3c (or later), and/or
-%% * The [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html),
-%% version 3 (or later)
-%%
-%% This work has the LPPL maintenance status *maintained*.
-%%
-%% The Current Maintainer of this work is Alceu Frigeri
-%%
-%% This is version 1.12 (2023/09/23)
-%%
-%% The list of files that compose this work can be found in the README.md file at
-%% https://ctan.org/pkg/ufrgscca
-%%
-%%%==============================================================================
-%% UFRGS stands for "Federal University of Rio Grande do Sul" in south Brazil
-%% EE stands for "Engineering School"
-%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym)
-%%%==============================================================================
-\makeatletter
-\def\tc@tmp@packname{ufrgscca-ptBR-core}
-\def\tc@tmp@altpackname{ufrgsccaptbrcore}
-\def\tc@tmp@packdesc{UFRGS/CCA Portuguese core defs}
-\def\tc@tmp@packdate{2023/09/23}
-\def\tc@tmp@packversion{1.12}
-\let\@exp\expandafter
-\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion}
-
-
-\location{Porto~Alegre}{RS}
-
-\university{Universidade Federal do Rio Grande do Sul}
-\universityacronym{UFRGS}
-\universitydivision{Escola de Engenharia}
-\divisiongradcouncil{Conselho de Graduação da \tcdef@cover@universitydivision}
-
-\secretaryacronym{SACAD}
-\secdivisionacronym{\tcdef@cover@secretaryacronym/EE}
-\graduationtitle{Bacharel em Eng. de Controle e Automa\c{c}\~{a}o}
-\course{Eng. de Controle e Automa\c{c}\~{a}o}
-\courseacronym{CCA}
-\coursecoord{Atual Coordenador(a) do Curso}
-\coursecoordtitle{Coordenador\tccore@@ref{coursecoord}{narticle} de curso}
-\advisorname{Orientador\tccore@@ref{advisor}{narticle}}%
-\coadvisorname{Co-orientador\tccore@@ref{coadvisor}{narticle}}%
-
-\iftcif@nonrequired
- \internshiptitle{Relatório de Estágio Não Obrigatório}
-\else
- \internshiptitle{Relatório de Estágio Supervisionado Obrigatório em \tcdef@cover@course}
-\fi
-
-\internshipcoord{Atual Coordenador(a) de Estágios}
-\internshipcoordtitle{Coord\tccore@@ref{internshipcoord}{narticle}. da Atividade de Estágio Supervisionado Obrigatório}
-
-\iftcif@nonrequired
- \internshipinfo{%
- Este Relatório foi julgado adequado para a \textsl{Atividade de Estágio Não Obrigatório}
- em \emph{\tcdef@cover@course\ } e aprovado em sua forma final pel\tccore@@ref{tutor}{article} Tutor\tccore@@ref{tutor}{narticle} e
- Supervisor\tccore@@ref{supervisor}{narticle}.
-}%
-\else
- \internshipinfo{%
- Este Relatório foi julgado adequado para a obtenção do conceito final na \textsl{Atividade de Estágio Supervisionado Obrigatório}
- em \emph{\tcdef@cover@course\ } e aprovado em sua forma final pel\tccore@@ref{tutor}{article} Tutor\tccore@@ref{tutor}{narticle},
- Supervisor\tccore@@ref{supervisor}{narticle} e Coordenador\tccore@@ref{internshipcoord}{narticle} da Atividade.
- }%
-\fi
-
-
-\examinername{Banca Examinadora}%
-
-\reportspecificinfo{%
- Trabalho de Conclus\~{a}o de Curso (TCC-\tcdef@cover@courseacronym ) apresentado \`{a}
- COMGRAD-\tcdef@cover@courseacronym\ da \tcdef@cover@university\ como parte dos requisitos para a
- obten{\c{c}}{\~a}o do t\'{\i}tulo de \emph{\tcdef@cover@graduationtitle\ }.
-}%
-
-\approvalspecificinfo{%
- Este Trabalho de Conclus\~{a}o de Curso foi julgado adequado para a
- obten\c{c}\~ao dos cr\'editos da Disciplina de TCC do curso \emph{\tcdef@cover@course\ } e aprovado em sua forma final pel\tccore@@ref{advisor}{article}
- Orientador\tccore@@ref{advisor}{narticle} e pela Banca Examinadora.
-}%
-
-\profname{Professor\tccore@@ref{advisor}{narticle}}
-\coprofname{Professor\tccore@@ref{coadvisor}{narticle}}
-\tutorname{Tutor\tccore@@ref{tutor}{narticle}}
-\supervisorname{Supervisor\tccore@@ref{supervisor}{narticle}}
-
-
diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-ptBR-forms.def b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-ptBR-forms.def
deleted file mode 100644
index 9f35ed41e25..00000000000
--- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca-ptBR-forms.def
+++ /dev/null
@@ -1,319 +0,0 @@
-%%%==============================================================================
-%% Copyright 2022-23 by Alceu Frigeri
-%%
-%% This work may be distributed and/or modified under the conditions of
-%%
-%% * The [LaTeX Project Public License](http://www.latex-project.org/lppl.txt),
-%% version 1.3c (or later), and/or
-%% * The [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html),
-%% version 3 (or later)
-%%
-%% This work has the LPPL maintenance status *maintained*.
-%%
-%% The Current Maintainer of this work is Alceu Frigeri
-%%
-%% This is version 1.12 (2023/09/23)
-%%
-%% The list of files that compose this work can be found in the README.md file at
-%% https://ctan.org/pkg/ufrgscca
-%%
-%%%==============================================================================
-%% UFRGS stands for "Federal University of Rio Grande do Sul" in south Brazil
-%% EE stands for "Engineering School"
-%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym)
-%%%==============================================================================
-\makeatletter
-\def\tc@tmp@packname{ufrgscca-ptBR-forms}
-\def\tc@tmp@altpackname{ufrgsccaptbrforms}
-\def\tc@tmp@packdesc{UFRGS/CCA Portuguese forms defs}
-\def\tc@tmp@packdate{2023/09/23}
-\def\tc@tmp@packversion{1.12}
-\let\@exp\expandafter
-\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion}
-
-
-%%%%%%
-%%%%%%
-%%%%%% forms
-%%%%%%
-%%%%%%
-%%%%%%
-
-\formlocal{\tc@city,\hspace{4mm} de \hspace{1.2cm} de 20\hspace{4mm}.}
-
-\formssignaturelabel{Assinatura}
-\examinersignature{Assinatura\ \ d\tccore@@ref{examiner}{article}\ \ Avaliador\tccore@@ref{examiner}{narticle}}
-\boardsignature{Assinatura\ \ do\ \ Membro\ \ da\ \ Banca}
-\advisorsignature{Assinatura\ \ d\tccore@@ref{advisor}{article}\ \ Orientador\tccore@@ref{advisor}{narticle}}
-\coadvisorsignature{Assinatura\ \ d\tccore@@ref{coadvisor}{article}\ \ Co-orientador\tccore@@ref{coadvisor}{narticle}}
-\studentsignature{Assinatura\ \ d\tccore@@ref{student}{article}\ \ Alun\tccore@@ref{student}{article}}
-\studentsignaturegen{Assinatura\ \ do(a)\ \ Aluno(a)}
-\formsstudentlabel{Alun\tccore@@ref{student}{article}}
-\formsstudentlabelgen{Aluno(a)}
-\formproflabel{Professor(a)}
-\profname{Professor\tccore@@ref{advisor}{narticle}}
-\coprofname{Professor\tccore@@ref{coadvisor}{narticle}}
-\formsboardlabel{Membro da Banca}
-\formsadvisorlabel{Orientador\tccore@@ref{advisor}{narticle}}
-\formsadvisorlabelgen{Orientador(a)}
-\formscoadvisorlabel{Co-orientador\tccore@@ref{advisor}{narticle}}
-\formsexaminerlabel{Avaliador\tccore@@ref{examiner}{narticle}}
-\formsaltexaminerlabel{Suplente}
-\formstimelabel{Horário}
-
-\formssupervisorlabel{Supervisor\tccore@@ref{supervisor}{narticle}}
-
-
-%\formstopicAlabel{Conteúdo}
-%\formstopicBlabel{Trabalho Escrito}
-%\formstopicClabel{Apresentação}
-\formsworktitlelabel{Título do Trabalho}
-\formstemptitlelabel{Título Provisório}
-\formsstudentIDlabel{Cartão}
-\formsemaillabel{e-mail}
-\formsphonelabel{ramal}
-\agreelabel{De Acordo}
-
-\continuelabel{Continua...}
-
-\formsdatelabel{Data}
-\formstitle{Trabalho de Conclusão de Curso II}% em \tcdef@cover@course}
-\formstitleTR{Trabalho de Conclusão de Curso I}% em \tcdef@cover@course}
-\formsfootnote{Entregar a cada membro da banca juntamente com a cópia do trabalho.}
-
-
-\renewreqformtitle{Formulário de Renovação da Inscrição na Atividade de Ensino Trabalho de Conclusão em \tcdef@cover@course}
-
-\reqArgument{ \noindent O Tema do Trabalho e Orientador (Co-orientador) seguem sendo os mesmos de TCC I ?
-\begin{itemize}[tcc,noitemsep]
- \item[$\Box$] SIM
- \item[$\Box$] NÃO, neste caso \textbf{justifique} a mudança no espaço a seguir:
- \end{itemize}}
-
-\renewreqformnotes{O resumo deve ser curto, i.e., não deve exceder este espaço. O texto deve ser escrito em parágrafo único, e por se tratar de proposta, poderá utilizar tempo futuro e não necessita ter motivação ou justificativa.\\
-Deve conter:
-\begin{enumerate*}[alpha)]
- \item O QUE será feito - descrição e objetivos.
- \item COMO será feito - metodologia.
- \item Resultados esperados.
-\end{enumerate*}
-}
-
-\reqformtitle{Formul\'{a}rio de Requerimento de Matr\'{i}cula}
-\reqformopening{Ilm\tccore@@ref{coursecoord}{article}. Sr\tccore@@ref{coursecoord}{narticle}.\par
- Coordenador\tccore@@ref{coursecoord}{narticle} da Comissão de Graduação do Curso em \tcdef@cover@course\ {da \tcdef@cover@universityacronym\ }}
-%\reqformopening{algo}
-
-\reqformdescgen{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \tc@studentA , REGULARMENTE MATRICULAD\tccore@@ref{student}{Article} neste período letivo no curso \emph{\tcdef@cover@course\ }, desta universidade, portador\tccore@@ref{student}{narticle} do cartão de identificação n$^o$ \tc@studentAID\ vem por meio deste solicitar matrícula na atividade de ensino}
-
-
-\reqformdesc{\tcdef@forms@reqformdescgen\ \tcdef@forms@formstitle}
-
-\reqformdescTR{\tcdef@forms@reqformdescgen\ \tcdef@forms@formstitleTR}
-
-\formsinternshiptitle{Estágio Supervisionado Obrigatório}% em \tcdef@cover@course}
-
-\reqforminternshipdesc{\tcdef@forms@reqformdescgen\ \tcdef@forms@formsinternshiptitle}
-
-\supervisorsignature{Assinatura\ \ d\tccore@@ref{supervisor}{article}\ \ Supervisor\tccore@@ref{supervisor}{narticle}}
-\tutorsignature{Assinatura\ \ d\tccore@@ref{tutor}{article}\ \ Tutor\tccore@@ref{tutor}{narticle}}
-\internshipcoordsignature{Assinatura\ \ d\tccore@@ref{internshipcoord}{article}\ \ Coordenador\tccore@@ref{internshipcoord}{narticle}}
-
-\supervisorformtitle{Formulário de Avaliação do Supervisor (Pela Empresa)}
-\tutorformtitle{Formulário de Avaliação do Tutor e Coordenador}
-
-\interntutorgrade{Avaliação d\tccore@@ref{tutor}{article} Prof\tccore@@ref{tutor}{narticle}. Tutor\tccore@@ref{tutor}{narticle}:\emptybox}
-
-\interncoordgrade{Avaliação d\tccore@@ref{internshipcoord}{article} Prof\tccore@@ref{internshipcoord}{narticle}. Coordenador\tccore@@ref{internshipcoord}{narticle}:\emptybox}
-
-
-\reqforminternshipinfo{%
- \tcdef@forms@formsstudentemaillabel : {\bf \tc@studentAemail} %
-\vspace{2mm}
-
-Tutor : \tc@studentA@tutor%
-
-Email do Tutor: {\bf \tccore@@ref{tutor}{email}}%
-\hfill Ramal: {\bf \tccore@@ref{tutor}{phone}}%
-\vspace{2mm}
-
-
-Empresa: {\bf \tccore@@ref{internship}{company}}%
-
-Área de Atividade: {\bf \tccore@@ref{internship}{field}}%
-\vspace{2mm}
-
-Supervisor\tccore@@ref{supervisor}{narticle}: {\bf \tccore@@ref{supervisor}{}} \hfill CREA: {\bf \tccore@@ref{supervisor}{register}}
-
-Cargo: {\bf \tccore@@ref{supervisor}{office}}\hfill Email: {\bf \tccore@@ref{supervisor}{email}} \hfill Fone: {\bf \tccore@@ref{supervisor}{phone}} %
-\vspace{2mm}
-
-Data de Início: {\bf \tccore@@ref{internship}{start}}\hfill Previsão de Término: {\bf \tccore@@ref{internship}{end}}\hfill Duração: {\bf \tccore@@ref{internship}{length}}
-}
-
-\internshipreqformnotes{O prazo final de entrega do relatório é até 21 dias antes do término do período letivo posterior à inscrição na atividade. Relatórios não entregues até esta data serão considerados \textbf{\emph{Em Exame}}. Relatórios não entregues até 14 dias antes do término do período letivo considerado implicam a atribuição de \textbf{\emph{conceito FF}}, com o consequente encerramento do processo.}
-
-\internshipstudentinfo{
- Aluno: \textbf{\tccore@@ref{student}{}}\hfill Cartão:\textbf{\tccore@@ref{student}{ID}}%
-}
-\internshipcompanyinfo{%
- Empresa: {\bf \tccore@@ref{internship}{company}}\\%
-Área de Atividade: {\bf \tccore@@ref{internship}{field}}%
-}
-\internshipsupervisorinfo{
- Supervisor: \textbf{\tccore@@ref{supervisor}{}} \hfill crea:\textbf{\tccore@@ref{supervisor}{register}}%
-}
-\internshiptutorinfo{
-Tutor: \textbf{\tccore@@ref{tutor}{}}%
-}
-\internshipcoordinfo{
-Coordenador da Atividade: \textbf{\tccore@@ref{internshipcoord}{}}%
-}
-
-
-\internshipperiod{
- Período do Estágio de: {\bf \tccore@@ref{internship}{start}} até: {\bf \tccore@@ref{internship}{end}}
-}
-
-\def\emptybox{\framebox[3em]{\color{white}W}}
-
-\internsupervisorgradesform{
-\begin{itemize}[tcc,nosep]
- \item Grupo I - Aspectos Profissionais
- \begin{enumerate}[tcc,nosep]
- \item \textbf{Qualidade do Trabalho}:\emptybox\\ {\footnotesize considerar a qualidade do trabalho tendo em vista o que seria desejável}
- \item \textbf{Engenhosidade}:\emptybox\\ {\footnotesize capacidade de sugerir, projetar ou executar modificações ou inovações.}
- \item \textbf{Conhecimentos}:\emptybox\\ {\footnotesize conhecimento demonstrado no desenvolvimento das atividades programadas.}
- \item \textbf{Cumprimentos das Tarefas}:\emptybox\\ {\footnotesize considerar o volume de atividades cumpridas dentro de um padrão razoável.}
- \item \textbf{Iniciativa}:\emptybox\\ {\footnotesize iniciativa para desenvolver suas atividades sem dependências de outros.}
- \end{enumerate}
- \item Grupo II - Aspectos Humanos
- \begin{enumerate}[tcc,nosep]
- \item \textbf{Assiduidade}:\emptybox\\ {\footnotesize cumprimento do horário do estágio e ausência de falhas}
-\item \textbf{Disciplina}:\emptybox\\ {\footnotesize observância das normas e regulamentos internos da empresa.}
-\item \textbf{Sociabilidade}:\emptybox\\ {\footnotesize facilidade de se integrar com colegas e ambiente de trabalho.}
-\item \textbf{Cooperação}:\emptybox\\ {\footnotesize disposição para cooperar com colegas e para atender a atividades..}
-\item \textbf{Senso de Responsabilidade}:\emptybox\\ {\footnotesize zelo pelo material, equipamentos e bens da empresa.}
- \end{enumerate}
-\end{itemize}
-}
-
-\internsupervisorcomments{Considerações Complementares:}
-\internshiptutorcomments{Considerações do Prof. Tutor sobre o Estágio:}
-\internshipcoordcomments{Considerações Finais do Prof. Coordenador sobre o Estágio:}
-
-\internsupervisornote{Favor utilizar a seguinte grade discreta: \begin{enumerate*}[start=0]\item Sofrível \item Regular \item Bom \item Muito Bom \item Excelente \end{enumerate*}
-}
-\coadvisorformtitle{Requerimento de Autorização de Co-Orientação}
-\coadvisorformdesc{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \tc@studentA , REGULARMENTE MATRICULAD\tccore@@ref{student}{Article} na atividade de TCC neste período letivo, vem por meio deste solicitar autorização para registro de co-orientação de TCC, conforme justificativa abaixo.}
-
-\formsbrieflabel{Resumo}
-
-\formsstudentemaillabel{Email d\tccore@@ref{student}{article} Alun\tccore@@ref{student}{article}}
-
-\formsadvisoremaillabel{Email d\tccore@@ref{advisor}{article} Orientador\tccore@@ref{advisor}{narticle}}
-
-\formscoadvisoremaillabel{Email d\tccore@@ref{coadvisor}{article} Co-Orientador\tccore@@ref{coadvisor}{narticle}}
-
-\formsreasonlabel{Justificativa}
-
-
-\examformtitle{Formul\'{a}rio de Avalia\c{c}\~{a}o}
-
-\examformdesc{A nota (variando de zero a dez) atribuída por cada membro da banca examinadora será dada considerando o desempenho d\tccore@@ref{student}{article} alun\tccore@@ref{student}{article} nos 3 pontos apresentados na tabela abaixo.}
-
-\examformnoteslabel{Observações}
-
-\examformnotes{\ \\Posteriormente, \tccore@@ref{TCCcoord}{article} professor\tccore@@ref{TCCcoord}{narticle} coordenador\tccore@@ref{TCCcoord}{narticle} calculará a nota final atribuída por cada membro da banca examinadora, de acordo com a seguinte ponderação:\\[2mm] {\bf Nota Final Banca = \tc@TCCpointAweight\ x \tc@TCCpointAlabel\ + \tc@TCCpointBweight\ x \tc@TCCpointBlabel\ + \tc@TCCpointCweight\ x \tc@TCCpointClabel\ } \\[2mm] A média final da atividade será dada pela média das notas finais (calculadas com a expressão acima) atribuidas por cada um dos membros da banca examinadora.}
-
-\examboardformtitle{Formulário de Aprovação da Banca Examinadora}
-
-\examboardformtitleTMP{Formulário de Aprovação do Relatório Parcial e Banca Examinadora}
-
-\examboardformdescTMP{Aprovo o Relatório Parcial e nominata da Banca Examinadora acima relacionada.}
-
-\examboardformdesc{Aprovo a nominata da Banca Examinadora acima relacionada.}
-
-\formsboardtitle{Banca Examinadora}
-
-\advisorapprovalformtitle{Formulário de Aprovação para Apresentação}
-
-\advisorapprovalformdesc{{\bf Parecer d\tccore@@ref{advisor}{article} Orientador\tccore@@ref{advisor}{narticle}}\footnote{Preenchimento Obrigatório}}
-
-%\advisorapprovalformdescB{Aprovo a versão final do trabalho submetido pel\tccore@@ref{student}{article} alun\tccore@@ref{student}{article} e considero \tccore@@ref{student}{article} mesm\tccore@@ref{student}{article} apt\tccore@@ref{student}{article} para apresentação.}
-\advisorapprovalformdescB{}
-
-\rectifyapprovalformtitle{Formulário de Aprovação das Correções}
-
-\rectifyapprovalformdesc{\begin{description}
-\item[Observação 1:] A nota final será a já atribuída pela Banca Examinadora no momento da Defesa. Caso a versão final corrigida do trabalho mais este formulário não sejam entregues até a data estipulada, o conceito do aluno passará a ser {\bf D}.
-\item[Observação 2:] A assinatura d\tccore@@ref{advisor}{article} orientador\tccore@@ref{advisor}{narticle} é obrigatória, entretanto a assinatura dos membros da banca só é necessária caso o(a) mesmo(a) tenha marcado a opção ''$\Box$ Revisarei o trabalho depois de corrigido'' no \emph{Formulário de Correções}.
-\end{description}}
-
-\rectifyapprovalTRformdesc{\begin{description}
-\item[Observação 1:] A nota final será a já atribuída pela Banca Examinadora via o \emph{\tcdef@forms@formsTRtitle}.
-Caso a versão final corrigida do trabalho mais este formulário não sejam entregues até a data estipulada, o conceito do aluno passará a ser {\bf D}.
-\item[Observação 2:] A assinatura d\tccore@@ref{advisor}{article} orientador\tccore@@ref{advisor}{narticle} é obrigatória,
-entretanto a assinatura dos membros da banca só é necessária caso o(a) mesmo(a) tenha marcado a opção ''$\Box$ Revisarei o trabalho depois de corrigido'' no \emph{\tcdef@forms@formsTRtitle}.
-\end{description}}
-
-
-\receiptformtitle{Recibo de entrega de cópia da versão final do Trabalho de Conclusão}
-
-\receiptformfootnote{Entregar a cada membro da banca juntamente com a cópia do trabalho final e após encaminhar ao \tcdef@cover@secretaryacronym .}
-
-\receiptformdesc{Declaro que encontra-se em minha posse cópia da versão final do Trabalho de Conclusão de Curso em \tcdef@cover@course\ d\tccore@@ref{student}{article} alun\tccore@@ref{student}{article} }
-
-
-\reviewformtitle{Formulário de Correções}
-\reviewformdesc{O texto submetido:
- \parbox[t]{.75\textwidth}{
- \begin{itemize}[tcc,nosep]
- \item[$\Box$] Está adequado, dispensando correções do texto.
- \item[$\Box$] Está adequado, sendo necessário correções, conforme a
- seguir (e anotações anexas).
- \begin{description}[tcc,noitemsep]
- \item[$\Box$] Ortográfica
- \item[$\Box$] Regras de Escrita
- \item[$\Box$] Equações
- \item[$\Box$] Resumo
- \item[$\Box$] Abstract
- \item[$\Box$] Índice
- \item[$\Box$] Introdução
- \item[$\Box$] Conclusões
- \item[$\Box$] Corpo do Trabalho
- \item[$\Box$] Resultados
- \item[$\Box$] Adicionar mais exemplos
- \item[$\Box$] Figuras
- \item[$\Box$] Tabelas
- \end{description}
- \item[$\Box$] Necessita ser revisto/re-escrito,\footnotemark[2] e:
- \begin{itemize}
- \item[$\Box$] basta a revisão final do texto pelo orientador,
- \item[$\Box$] revisarei o trabalho depois de corrigido.
- \end{itemize}
- \item[$\Box$] Outras considerações (se necessário): \\
- \begin{tabular}{p{0.7\textwidth}}
- ~\\\hline
- ~\\\hline
- ~\\\hline
- ~\\\hline
- \end{tabular}\\[-1mm]
- \end{itemize}}
-}
-
-
-\formsTRtitle{Formulário de Avaliação do Trabalho}
-\TRformfootnote{Entregar a cada revisor do texto, juntamente com uma cópia do trabalho.}
-
-\reviewformfootnoteB{Neste caso \tccore@@ref{student}{article} alun\tccore@@ref{student}{article} estará em EXAME e receberá conceito final C ou D, conforme revisão final do texto.}
-
-\reviewformfootnote{\tcdef@forms@formsfootnote\ Após a apresentação, retornar este à coordenação do TCC.}
-
-\formsrectifyOKdesc{Correções satisfatórias: \hspace*{1cm}$\Box$\ sim\hspace*{2cm}$\Box$\ não}
-
-\TCCpointsweight{0.35}{0.35}{0.3}
-\TCCpointslabel{Conteúdo}{Trab. Escrito}{Apresentação}
-
-\TCCIpointsweight{2.0}{2.0}{2.0}{1.0}
-\TCCIpointslabel{Tema}{Biblio.}{Plano Trab.}{Texto}
diff --git a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca.cls b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca.cls
index 53c6d334477..dd87d1ea352 100644
--- a/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca.cls
+++ b/Master/texmf-dist/tex/latex/ufrgscca/ufrgscca.cls
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version 1.12 (2023/09/23)
+%% This is version {2.0} {2023/11/23}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -23,15 +23,49 @@
%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym)
%%%==============================================================================
\NeedsTeXFormat{LaTeX2e}[2022/06/01]
-\RequirePackage{expl3}
-\def\tc@tmp@packname{ufrgscca}
-\def\tc@tmp@altpackname{ufrgscca}
-\def\tc@tmp@packdesc{UFRGS/CCA class}
-\def\tc@tmp@packdate{2023/09/23}
-\def\tc@tmp@packversion{1.12}
-\let\@exp\expandafter
-\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion}
-\@exp\@exp\@exp\ProvidesPackage\@exp\@exp\@exp{\@exp\tc@tmp@packname\@exp}\@exp[\tc@tmp@packdate\space v\tc@tmp@packversion\space\tc@tmp@packdesc]
+
+
+\ProvidesExplClass
+ {ufrgscca}
+ {2023/11/23}
+ {2.0}
+ {UFRGS/CCA class}
+
+
+%%%%%%%
+%%%
+%%% Just an attempt of having my packages info in a regular way
+%%% Idea being: { <pck-name> / pkg info } for each and all.
+%%%
+%%%%%%%
+\keys_define:nn { ufrgscca / pkg info}
+ {
+ name .code:n = {ufrgscca} ,
+ prefix .code:n = {ufrgscca} ,
+ date .code:n = {2023/11/23},
+ version .code:n = {2.0} ,
+ description .code:n = {UFRGS/CCA~a~report~based~class~bundle}
+ }
+\cs_if_exist:NF \__codedesc_pkg_info:nn
+ {
+ \cs_new_protected:Npn \__codedesc_pkg_info:nn #1#2
+ { \keys_set:nn {#1 / pkg info}{#2} }
+ }
+\cs_if_exist:NF \PkgInfo
+ { \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} } }
+\cs_if_exist:NF \PkgDescription
+ {
+ \NewDocumentCommand \PkgDescription {m}
+ {
+ \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par
+ }
+ }
+%%%%%%%
+%%% End of cut-n-paste
+%%%%%%%
+
+
+
\RequirePackage{etex}
@@ -40,137 +74,226 @@
\RequirePackage[T1]{fontenc}
\RequirePackage[utf8]{inputenc}
+%%%%%%%%%%%%%%%%%%%%%%
+%%%
+%%% TODO: to be decided, where to leave that !!
+%%% general purpose _propeties !!
+%%%
+%%%%%%%%%%%%%%%%%%%%%%
+
+\prop_new:N \l__ufrgscca_terms_prop
+
+\NewDocumentCommand{\SetHeadings}{m}
+ {
+ \prop_put_from_keyval:Nn \l__ufrgscca_terms_prop {#1}
+ }
+
+ %%
+ %% No protection, so it can be used in a fully expandable context (like \MakeUppercase)
+\cs_new:Npn \UseHeading #1
+ { \prop_item:Nn \l__ufrgscca_terms_prop {#1} }
+
+
+%\prop_new:N \l__ufrgscca_terms_prop
+
+\NewDocumentCommand{\SetTerms}{+m}
+ {
+ \prop_put_from_keyval:Nn \l__ufrgscca_terms_prop {#1}
+ }
+
+ %%
+ %% No protection, so it can be used in a fully expandable context (like \MakeUppercase)
+\cs_new:Npn \UseTerm #1
+ { \prop_item:Nn \l__ufrgscca_terms_prop {#1} }
+
+\cs_new_protected:Npn \TermCase #1#2#3
+ {
+ \prop_if_in:NnTF \l__ufrgscca_terms_prop {#1} {#2} {#3}
+ }
+
+%\prop_new:N \l__ufrgscca_labels_prop
+
+
+
+\NewDocumentCommand{\SetLabels}{m}
+ {
+ \prop_put_from_keyval:Nn \l__ufrgscca_terms_prop {#1}
+ }
+
+ %%
+ %% No protection, so it can be used in a fully expandable context (like \MakeUppercase)
+\cs_new:Npn \UseLabel #1
+ { \prop_item:Nn \l__ufrgscca_terms_prop {#1} }
+
+
+\prop_new:N \l__ufrgscca_const_prop
+
+\NewDocumentCommand{\SetConsts}{m}
+ {
+ \prop_put_from_keyval:Nn \l__ufrgscca_const_prop {#1}
+ }
+
+\cs_generate_variant:Nn \prop_item:Nn {Ne}
+ %%
+ %% No protection, so it can be used in a fully expandable context (like \MakeUppercase)
+\cs_new:Npn \UseConst #1
+ { \prop_item:Ne \l__ufrgscca_const_prop {#1} }
+
+
+\bool_new:N \l__ufrgscca_repeatfields_bool
+\bool_new:N \l__ufrgscca_timesroman_bool
+\bool_new:N \l__ufrgscca_nolocal_bool
%==============================================================================
% Declaração de opções
%==============================================================================
-\DeclareKeys[tc]{
- tocdepth.usage = load,
- tocdepth.code = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}},
- secdepth.usage = load,
- secdepth.code = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}},
-
- english.usage = load,
- english.code = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}\OptionNotUsed},
- relnum.usage = load,
- relnum.code = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}\PassOptionsToPackage{\CurrentOption}{ufrgscca-lists}\OptionNotUsed},
-
- pretextontoc.usage = load,
- pretextontoc.code = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}},
- timesroman.usage = load,
- timesroman.if = tcif@timesroman,
- yearsonly.usage = load,
- yearsonly.code = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}},
-
- oneside.usage = load,
- oneside.code = {\AtEndOfClass{\@twosidefalse}\OptionNotUsed},
- strict-abnt.usage = load,
- strict-abnt.code = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}},
- repeatfields.usage = load,
- repeatfields.code = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}},
- chapternopagenum.usage = load,
- chapternopagenum.code = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}},
-
- nomicrotype.usage = load,
- nomicrotype.code = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}},
-
- showframes.usage = load,
- showframes.code = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}},
- showlabes.usage = load,
- showlabes.code = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}},
-
- xlists.usage = load,
- xlists.if = tc@xlists,
- xpacks.usage = load,
- xpacks.if = tc@xpacks,
-
- nolocal.usage = load,
- nolocal.if = tcif@nolocal,
-
- nofontwarning.usage = load,
- nofontwarning.if = @nofontwarning,
-
- report.usage = load,
- report.code = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-cover}},
- internship.usage = load,
- internship.code = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-cover}},
- nonrequired.usage = load,
- nonrequired.code = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-cover}},
-
- texlive.usage = load,
- texlive.if = tcif@texlive,
- overleaf.usage = load,
- overleaf.if = tcif@overleaf,
- miktex.usage = load,
- miktex.if = tcif@miktex,
-
- article.usage = load,
- article.if = tcif@article,
-
- nogeometry.usage = load,
- nogeometry.if = tcif@nogeometry,
-}
-
-\DeclareUnknownKeyHandler[tc]{\PassOptionsToClass{\CurrentOption}{report}}
-\ProcessKeyOptions[tc]\relax
-
-\iftcif@timesroman
- \RequirePackage[english,brazilian]{babel}% babel has to be loaded BEFORE newtx*
+\keys_define:nn { ufrgscca }
+ {
+ tocdepth .usage:n = load,
+ tocdepth .code:n = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}},
+ secdepth .usage:n = load,
+ secdepth .code:n = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}},
+
+% english .usage:n = load,
+% english .code:n = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}\OptionNotUsed},
+
+ english .usage:n = load ,
+ english .bool_set:N = \l__ufrgscca_english_bool ,
+
+ relnum .usage:n = load,
+ relnum .code:n = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}\PassOptionsToPackage{\CurrentOption}{ufrgscca-lists}\OptionNotUsed},
+
+ pretextontoc .usage:n = load,
+ pretextontoc .code:n = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}},
+ timesroman .usage:n = load,
+ timesroman .bool_set:N = \l__ufrgscca_timesroman_bool,
+ yearsonly .usage:n = load,
+ yearsonly .code:n = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}},
+
+ oneside .usage:n = load,
+ oneside .code:n = {\AtEndOfClass{\@twosidefalse}\OptionNotUsed},
+ strict-abnt .usage:n = load,
+ strict-abnt .code:n = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}},
+ repeatfields .usage:n = load,
+ repeatfields .code:n = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}},
+ chapternopagenum .usage:n = load,
+ chapternopagenum .code:n = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}},
+
+ nomicrotype .usage:n = load,
+ nomicrotype .code:n = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}},
+
+ showframes .usage:n = load,
+ showframes .code:n = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}},
+ showlabes .usage:n = load,
+ showlabes .code:n = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}},
+
+ xlists .usage:n = load,
+ xlists .bool_set:N = \l__ufrgscca_xlists_bool,
+ xpacks .usage:n = load,
+ xpacks .bool_set:N = \l__ufrgscca_xpacks_bool,
+
+ nolocal .usage:n = load,
+ nolocal .bool_set:N = \l__ufrgscca_nolocal_bool,
+
+ nofontwarning .usage:n = load,
+ nofontwarning .bool_set:N = \l__ufrgscca_nofontwarning_bool,
+
+ report .usage:n = load,
+ report .code:n = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-cover}},
+ internship .usage:n = load,
+ internship .code:n = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-cover}},
+ nonrequired .usage:n = load,
+ nonrequired .code:n = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-cover}},
+
+ texlive .usage:n = load,
+ texlive .bool_set:N = \l__ufrgscca_texlive_bool,
+ overleaf .usage:n = load,
+ overleaf .bool_set:N = \l__ufrgscca_overleaf_bool,
+ miktex .usage:n = load,
+ miktex .bool_set:N = \l__ufrgscca_miktex_bool,
+
+ article .usage:n = load,
+ article .bool_set:N = \l__ufrgscca_article_bool,
+
+ nogeometry .usage:n = load,
+ nogeometry .bool_set:N = \l__ufrgscca_nogeometry_bool,
+
+ oldrenews .usage:n = load,
+ oldrenews .bool_set:N = \l__ufrgscca_oldrenews_bool,
+
+ unknown .code:n = {\PassOptionsToClass{\CurrentOption}{report}},
+ }
+\ProcessKeyOptions[ufrgscca]\relax
+
+
+
+\bool_if:NTF \l__ufrgscca_timesroman_bool
+ {
+ \bool_if:NTF \l__ufrgscca_english_bool
+ {
+ \RequirePackage[brazilian,english]{babel}% babel has to be loaded BEFORE newtx*
+ }
+ {
+ \RequirePackage[english,brazilian]{babel}% babel has to be loaded BEFORE newtx*
+ }
\RequirePackage{mathptmx}
-% \RequirePackage[scale=1.05,looser]{newtxtext}%
-% \RequirePackage[scale=1.05]{newtxmath}%
-% \PackageWarning{ufrgscca}{Fonts newtxtext and newtxmath loaded. Those are free 'implementantion/interpletation' of the proprietary Times Roman (by Adobe) and Times New Roman (by Microsoft)}
-% \PackageWarning{ufrgscca}{newtxtext and newtxmath are based on URW Nimbus Roman with some extra math support. Again, those are not real Times Roman nor Times New Roman}
\PackageWarning{ufrgscca}{(obsolete) package mathptmx loaded. It loads a free 'implementantion/interpletation' of the proprietary Times Roman (by Adobe) and Times New Roman (by Microsoft)}
\PackageWarning{ufrgscca}{package microtype is suppressed, resulting in a subpar layout. Again, the “Roman” font used isn't a true Times Roman nor Times New Roman}
-
-\else
+ }
+ {
\RequirePackage{lmodern}%
-\fi
-
-\iftcif@article
+ }
+\bool_if:NTF \l__ufrgscca_article_bool
+ {
\LoadClass[12pt]{article}
-\else
+ }
+ {
\LoadClass[12pt,twoside,openright]{report}
-% \LoadClass[12pt]{report}
-\fi
-
-\iftcif@miktex
-% \def\BabelCaseHack{}
- \ifcsdef{miktexHack}{\miktexHack}{}
-\fi
-
-\iftcif@overleaf
- \ifcsdef{overleafHack}{\overleafHack}{}
-\fi
-
-\iftcif@texlive
- \ifcsdef{texliveHack}{\texliveHack}{}
-\fi
+ }
+
+\bool_if:NT \l__ufrgscca_miktex_bool
+ {
+ \ifcsdef{miktexHack}{\miktexHack}{}
+ }
+\bool_if:NT \l__ufrgscca_overleaf_bool
+ {
+ \ifcsdef{overleafHack}{\overleafHack}{}
+ }
+\bool_if:NT \l__ufrgscca_texlive_bool
+ {
+ \ifcsdef{texliveHack}{\texliveHack}{}
+ }
%%%%%%%%%%%%%%%%%%%%%
%%% Packages Loading
%%%%%%%%%%%%%%%%%%%%%
\RequirePackage{silence}%
-\if@nofontwarning%
+
+\bool_if:NT \l__ufrgscca_nofontwarning_bool
+ {
\WarningFilter{latexfont}{Font shape}%
\WarningFilter{latexfont}{Size substitutions with differences}%
\WarningFilter{latexfont}{Some font shapes were not available}%
-\fi%
+ }
\RequirePackage{ufrgscca-abnt}
-\iftc@xlists\RequirePackage{ufrgscca-lists}\fi
+\bool_if:NT \l__ufrgscca_xlists_bool
+ {
+ \RequirePackage{ufrgscca-lists}
+ }
+
-\RequirePackage{ufrgscca-gen}
\RequirePackage{ufrgscca-cover}
\RequirePackage{ufrgscca-core}
-\iftc@xpacks
+\bool_if:NT \l__ufrgscca_xpacks_bool
+ {
+ \ExplSyntaxOff
\RequirePackage{relsize}
\RequirePackage{keyval,graphicx}
\RequirePackage{mathtools}
@@ -193,31 +316,54 @@
\usetikzlibrary{shadows}%
\usetikzlibrary{babel}
\RequirePackage{steinmetz}%
-\fi
+ \ExplSyntaxOn
+ }
+
+
+
\WarningFilter{hyperref}{Option `pdftex' has already}
-\RequirePackage[hidelinks,hypertexnames=false]{hyperref}%
+\RequirePackage[hidelinks,hypertexnames=false]{hyperref}
+
%%
%% A few (hyperref related) commands
%%
-\NewDocumentCommand{\autonameref}{O{, }mO{\space}}{\autoref{#2}#1\nameref{#2}#3}
+\NewDocumentCommand{\autonameref}{O{,\space}mO{}}{\autoref{#2}#1\nameref{#2}#3}
\gdef\annexref#1{\hyperref[#1]{\defannexname\ \ref*{#1}}}
-\NewDocumentCommand{\autoannexref}{O{, }mO{\space}}{\annexref{#2}#1\nameref{#2}#3}
+\NewDocumentCommand{\autoannexref}{O{,~ }mO{}}{\annexref{#2}#1\nameref{#2}#3}
+
+
+\NewActivity{course} % yeah, CCA as an activity...
+\NewActivity{tccI}
+\NewActivity{tccII}
+\NewActivity{internship}
+\NewActivity{internship-opt}
+
+
+
+\ExplSyntaxOff
+ \input{ufrgscca-terms-ptBR.tex}
+ \input{ufrgscca-cover-ptBR.tex}
+\ExplSyntaxOn
+
+
+\bool_if:NT \l__ufrgscca_english_bool
+ {
+ \AtBeginDocument{\input{ufrgscca-terms-en.tex}}
+ }
-\iftcif@english%
- \input{ufrgscca-en-core.def}%
-\else%
- \input{ufrgscca-ptBR-core.def}%
-\fi%
+\bool_if:NF \l__ufrgscca_nolocal_bool
+ {
+ \ExplSyntaxOff
+ \IfFileExists{local.tex}
+ { \AtBeginDocument{ \input{local.tex} } }
+ {}%
+ \ExplSyntaxOn
+ }
-\iftcif@nolocal%
-\else%
- \IfFileExists{local.tex}{\input{local.tex}}{}%
- \tccore@emptyfields%
-\fi