summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/ufrgscca/latex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-11-25 03:03:12 +0000
committerNorbert Preining <norbert@preining.info>2023-11-25 03:03:12 +0000
commitad976e54f48605a66054bc56e945dabc425c956a (patch)
treef3905ec1ab486d1cf12b064887e311f2ea10bebf /macros/latex/contrib/ufrgscca/latex
parentac5a5e57a4c9b3c436c3bac327fe885acea28ba4 (diff)
CTAN sync 202311250303
Diffstat (limited to 'macros/latex/contrib/ufrgscca/latex')
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-abnt.sty894
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-base-en.def (renamed from macros/latex/contrib/ufrgscca/latex/ufrgscca-en-base.def)13
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-base-ptBR.def (renamed from macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-base.def)11
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-coord.sty1629
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-core.sty775
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-cover-ptBR.tex322
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty567
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-curr-graph.sty101
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-curr-tab.sty163
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-curr.sty743
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-en-coord.def101
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-en-core.def68
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-en-forms.def183
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.sty883
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.tex1277
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-formsTR.sty313
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-formsintern.sty148
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-gen.sty120
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-lists.sty133
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-ppc.sty977
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-coord.def167
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-core.def95
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-forms.def319
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-en.tex103
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-ptBR.tex267
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca.cls398
26 files changed, 5634 insertions, 5136 deletions
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-abnt.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-abnt.sty
index 5077416b1a..eba4667270 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-abnt.sty
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-abnt.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version 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/macros/latex/contrib/ufrgscca/latex/ufrgscca-en-base.def b/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-en.def
index ce18bafac4..014860c78f 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-en-base.def
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-en.def
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version 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/macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-base.def b/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-ptBR.def
index 54ac2f8edd..8854c1ded8 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-base.def
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-ptBR.def
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version 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/macros/latex/contrib/ufrgscca/latex/ufrgscca-coord.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-coord.sty
index 55e754d97e..ffb88727a4 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-coord.sty
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-coord.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version 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/macros/latex/contrib/ufrgscca/latex/ufrgscca-core.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-core.sty
index 43aed0aede..1972c1d250 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-core.sty
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-core.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version 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/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover-ptBR.tex b/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover-ptBR.tex
new file mode 100644
index 0000000000..cb385e9cc6
--- /dev/null
+++ b/macros/latex/contrib/ufrgscca/latex/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/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty
index e433c3021b..9cfd99a620 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version 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/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr-graph.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr-graph.sty
deleted file mode 100644
index ccd5247bb6..0000000000
--- a/macros/latex/contrib/ufrgscca/latex/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/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr-tab.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr-tab.sty
deleted file mode 100644
index 660837626e..0000000000
--- a/macros/latex/contrib/ufrgscca/latex/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/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr.sty
index c13ef1509a..51dd5a43ef 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr.sty
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version 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/macros/latex/contrib/ufrgscca/latex/ufrgscca-en-coord.def b/macros/latex/contrib/ufrgscca/latex/ufrgscca-en-coord.def
deleted file mode 100644
index 65d0ef9352..0000000000
--- a/macros/latex/contrib/ufrgscca/latex/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/macros/latex/contrib/ufrgscca/latex/ufrgscca-en-core.def b/macros/latex/contrib/ufrgscca/latex/ufrgscca-en-core.def
deleted file mode 100644
index 5ad00626f5..0000000000
--- a/macros/latex/contrib/ufrgscca/latex/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/macros/latex/contrib/ufrgscca/latex/ufrgscca-en-forms.def b/macros/latex/contrib/ufrgscca/latex/ufrgscca-en-forms.def
deleted file mode 100644
index 65d5bcd3b3..0000000000
--- a/macros/latex/contrib/ufrgscca/latex/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/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.sty
index 8ccebc5f24..c5f3afe8e9 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.sty
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version 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/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.tex b/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.tex
new file mode 100644
index 0000000000..9f822247c9
--- /dev/null
+++ b/macros/latex/contrib/ufrgscca/latex/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/macros/latex/contrib/ufrgscca/latex/ufrgscca-formsTR.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-formsTR.sty
deleted file mode 100644
index 12596a69fe..0000000000
--- a/macros/latex/contrib/ufrgscca/latex/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/macros/latex/contrib/ufrgscca/latex/ufrgscca-formsintern.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-formsintern.sty
deleted file mode 100644
index 9565156eda..0000000000
--- a/macros/latex/contrib/ufrgscca/latex/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/macros/latex/contrib/ufrgscca/latex/ufrgscca-gen.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-gen.sty
deleted file mode 100644
index c350601403..0000000000
--- a/macros/latex/contrib/ufrgscca/latex/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/macros/latex/contrib/ufrgscca/latex/ufrgscca-lists.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-lists.sty
index d8ac23595f..3d34c7c927 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-lists.sty
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-lists.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version 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/macros/latex/contrib/ufrgscca/latex/ufrgscca-ppc.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-ppc.sty
index fe05fe23f3..34939ff17e 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-ppc.sty
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-ppc.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version 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/macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-coord.def b/macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-coord.def
deleted file mode 100644
index 8265a5e16d..0000000000
--- a/macros/latex/contrib/ufrgscca/latex/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/macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-core.def b/macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-core.def
deleted file mode 100644
index ae3ef71077..0000000000
--- a/macros/latex/contrib/ufrgscca/latex/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/macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-forms.def b/macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-forms.def
deleted file mode 100644
index 9f35ed41e2..0000000000
--- a/macros/latex/contrib/ufrgscca/latex/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/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-en.tex b/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-en.tex
new file mode 100644
index 0000000000..04f3fa11d0
--- /dev/null
+++ b/macros/latex/contrib/ufrgscca/latex/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/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-ptBR.tex b/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-ptBR.tex
new file mode 100644
index 0000000000..187a58ebf0
--- /dev/null
+++ b/macros/latex/contrib/ufrgscca/latex/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/macros/latex/contrib/ufrgscca/latex/ufrgscca.cls b/macros/latex/contrib/ufrgscca/latex/ufrgscca.cls
index 53c6d33447..dd87d1ea35 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca.cls
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca.cls
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version 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