summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/ufrgscca/latex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/ufrgscca/latex')
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-abnt.sty494
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-coord.sty1006
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-core.sty279
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty340
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-curr-graph.sty127
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-curr-tab.sty166
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-curr.sty181
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-en-base.def97
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-en-coord.def129
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-en-core.def101
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-en-forms.def215
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.sty561
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-gen.sty152
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-lists.sty118
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-ppc.sty501
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-base.def95
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-coord.def129
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-core.def101
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-forms.def215
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca.cls211
20 files changed, 5218 insertions, 0 deletions
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-abnt.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-abnt.sty
new file mode 100644
index 0000000000..f3cc97e63a
--- /dev/null
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-abnt.sty
@@ -0,0 +1,494 @@
+%%%==============================================================================
+%% Copyright 2022 by Alceu Frigeri
+%%
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status “maintained”.
+%%
+%% The Current Maintainer of this work is Alceu Frigeri
+%%
+%% This is version 1.0 (2022/09/01)
+%%
+%%
+%% This work consists of the files
+%%
+%% ufrgscca.cls main class (bundle)
+%%
+%% ufrgscca-abnt.sty abnt page geometry, and chapter/sectioning/etc. settings
+%% ufrgscca-core.sty core macros (students related data, advisor, work title, etc.)
+%% ufrgscca-cover.sty cover pages macros
+%% ufrgscca-lists.sty New float environments (for code listing, for instance)
+%% ufrgscca-gen.sty a switch/case macro construct and
+%% 'macro factory', for instance to create commands used in the .def files.
+%% ufrgscca-forms.sty forms creation macros (course specific)
+%% ufrgscca-coord.sty student work coordenation related macros (course specific)
+%% ufrgscca-ppc.sty ppc specific macros (ppc stands for Course Pedagogic Project)
+%% ufrgscca-curr.sty curricula specific macros (as a set of semesters and class dependency lists)
+%% ufrgscca-curr-tab.sty curricula tabular macros (to display the curricula as tables)
+%% ufrgscca-curr-graph.sty curricula graph macros (to display the curricula as a dependency graph)
+%%
+%% ufrgscca-en-base.def locale, English, base def's (for babel)
+%% ufrgscca-en-core.def locale, English, for -core.sty
+%% ufrgscca-en-forms.def locale, English, for -forms.sty
+%% ufrgscca-en-coord.def locale, English, for -coord.sty
+%%
+%% ufrgscca-ptBR-base.def locale, Portuguese, base def`s (for babel)
+%% ufrgscca-ptBR-core.def locale, Portuguese, for -core.sty
+%% ufrgscca-ptBR-forms.def locale, Portuguese, for -forms.sty
+%% ufrgscca-ptBR-coord.def locale, Portuguese, for -coord.sty
+%%
+%% README.md quick introduction
+%%
+%% ufrgscca.tex LaTeX documentation
+%% ufrgscca.pdf documentation in PDF form
+%%
+%% 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-abnt}
+\def\tc@tmp@altpackname{ufrgsccaabnt}
+\def\tc@tmp@packdesc{UFRGS/CCA ABNT layout}
+\def\tc@tmp@packdate{2022/09/01}
+\def\tc@tmp@packversion{1.0}
+\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,
+
+ 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,
+
+
+ dctools.usage = load,
+ dctools.if = tcif@dctools,
+}
+
+\ProcessKeyOptions[ufrgscca-abnt]\relax
+
+%%%%%%%%%%%%%%%%%%%%%
+%%% Packages Loading
+%%%%%%%%%%%%%%%%%%%%%
+\RequirePackage[english,brazilian]{babel}%
+\RequirePackage{csquotes}%
+
+\iftcif@strictabnt
+ \RequirePackage[a4paper,inner=2cm,outer=3cm,top=3cm,bottom=2cm,twoside]{geometry}
+\else
+ \iftcif@dctools
+ \RequirePackage[a4paper,margin=5cm,right=2cm,marginparwidth=4.5cm,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
+
+\RequirePackage[toc,page,title]{appendix}
+\RequirePackage[pagestyles,clearempty]{titlesec}
+\RequirePackage{titletoc}
+\RequirePackage[inline]{enumitem}
+
+\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}%
+%%%
+%%% commands for 'floats'
+%%%
+%
+\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}}}%%
+%
+%
+
+
+%%%%%%%%%%%%%%%%%%%%%
+%%% Packages Loading
+%%%%%%%%%%%%%%%%%%%%%
+\RequirePackage{array}
+\RequirePackage{nicematrix}
+\NiceMatrixOptions{cell-space-limits = 1pt}
+
+\newcolumntype{P}[1]{>{\raggedleft\arraybackslash}p{#1}}
+\newcolumntype{B}[1]{>{\raggedleft\arraybackslash\bfseries}p{#1}}
+\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
+\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}p{#1}}
+\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
+\newcolumntype{J}[1]{>{\arraybackslash}p{#1}}
+
+
+%%%%%%%%%%%%%%%%%%%%%
+%%% Packages Loading
+%%%%%%%%%%%%%%%%%%%%%
+\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%
+%%
+%%%
+%%% Language selection {package babel}
+%%%
+\iftcif@english%%
+ \selectlanguage{english}%
+ \AtBeginDocument{\selectlanguage{english}}%
+\else
+ \selectlanguage{brazilian}%
+ \AtBeginDocument{\selectlanguage{brazilian}}%
+\fi%
+
+
+%%%
+%%% typeset adjusting {package microtype}
+%%%
+\iftcif@nomicrotype\else\RequirePackage[tracking,kerning,spacing,babel]{microtype}\fi%
+%
+% pdftex native protruding
+%
+\pdfprotrudechars=2
+\pdfadjustspacing=2
+
+%%%
+%%% \so \ul command {package soul}... contour is just to make a fancy underline
+%%%
+\RequirePackage{contour}
+\RequirePackage{soul}
+
+
+\iftcif@showframes%
+ \RequirePackage{showframe}%%
+\fi
+%%
+\iftcif@showlabels%
+ \RequirePackage{showlabels}%%
+ \showlabels{cite}%%
+ \showlabels{textcite}%%
+ \RenewDocumentCommand{\showlabelfont}{}{\tiny\ttfamily\color{blue}}%%
+\fi%%
+
+
+%%%
+%%% 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}}%
+\def\notoc#1#2{\begin{tocless}#1{#2}\end{tocless}}
+
+\NewDocumentEnvironment{numberless}{}{\setcounter{secnumdepth}{-1}}{\setcounter{secnumdepth}{\tc@secdepth}}
+\def\nonum#1#2{\begin{numberless}#1{#2}\end{numberless}}
+
+
+
+%%%
+%%% ToC definitions {package titletoc}
+%%%
+\def\tc@lblmargin{22mm}
+\contentsmargin{2.2em}
+\def\tc@dotspacing{0.5pc}
+\titlecontents{chapter}[\tc@lblmargin]{\vspace{3mm}\normalfont\scshape\selectfont}{\contentslabel{\tc@lblmargin}}{\hspace{-\tc@lblmargin}}{\titlerule*[\tc@dotspacing]{.}\normalsize\normalfont\contentspage}
+\titlecontents{section}[\tc@lblmargin]{\vspace{1mm}}{\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}
+
+\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}}
+
+%%%
+%%% 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}
+
+%\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}
+
+\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}
+
+\titleformat{\subsubsection}[hang]{\normalfont\sffamily\slshape\selectfont}{\thesubsubsection}{.5em}{}
+\titlespacing{\subsubsection}{0pt}{\tc@secbefore}{\tc@secafter}
+
+\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}
+
+%%%
+%%% Relative/Absolute counters... {package chngcntr}
+%%%
+\iftcif@dctools
+\else
+\iftcif@relnum%
+ \counterwithin{figure}{chapter}%
+ \counterwithin{table}{chapter}%
+\else%
+ \counterwithout{figure}{chapter}%
+ \counterwithout{table}{chapter}%
+\fi
+\fi
+%%%
+%%% 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}}
+\pagestyle{main}
+
+\iftcif@chapternopagenum\renewpagestyle{plain}{\sethead[][][]{}{}{}}\fi
+
+\let\tc@temp@printbibliography\printbibliography
+
+\defbibheading{bibliography}[\refname]{\nonum\chapter{#1}\pagestyle{bibliography}}
+
+\let\tc@temp@listoffigures\listoffigures
+\def\listoffigures{\tc@temp@listoffigures\addcontentsline{toc}{chapter}{\MakeUppercase\listfigurename}}
+%%
+\let\tc@temp@listoftables\listoftables
+\def\listoftables{\tc@temp@listoftables\addcontentsline{toc}{chapter}{\MakeUppercase\listtablename}}
+%%
+
+
+\newlength{\tc@lblwidth}
+\NewDocumentCommand{\NewChapListEnv}{mm}{
+ \NewDocumentEnvironment{#1}{O{}m}{%
+ \settowidth{\tc@lblwidth}{##2***}%
+ \nonum\chapter{\MakeUppercase{#2}}%
+ \begin{description}[tcc,noindent,leftmargin=\tc@lblwidth,labelwidth=!,##1]%
+ }{\end{description}}
+}
+
+\NewChapListEnv{listofabbrv}{\listabbrvname}
+\NewChapListEnv{listofsymbols}{\listsymbolname}
+
+
+%%%
+%%% 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}
+
+\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{parindent}{leftmargin=\tc@enummargingB,labelindent=\tc@enummarging,labelwidth=!}
+\SetEnumitemKey{noindent}{labelindent=0pt,labelwidth=!}
+\SetEnumitemKey{tight}{leftmargin=0pt,listparindent=5mm,labelwidth=5mm}
+%
+\SetEnumitemKey{miditemsep}{parsep=0ex,itemsep=0.4ex}
+
+%\SetEnumitemKey{ppctight}{leftmargin=0pt,listparindent=5mm,labelwidth=5mm}
+
+
+\SetEnumitemKey{arabic}{label=\arabic*.}
+\SetEnumitemKey{arabic)}{label=\arabic*)}
+\SetEnumitemKey{(arabic)}{label=(\arabic*)}
+\SetEnumitemKey{arabic*}{label*=\arabic*.}
+\SetEnumitemKey{arabic*)}{label*=\arabic*)}
+\SetEnumitemKey{roman}{label=\roman*.}
+\SetEnumitemKey{roman)}{label=\roman*)}
+\SetEnumitemKey{(roman)}{label=(\roman*)}
+\SetEnumitemKey{roman*}{label*=\roman*.}
+\SetEnumitemKey{roman*)}{label*=\roman*)}
+\SetEnumitemKey{Roman}{label=\Roman*.}
+\SetEnumitemKey{Roman)}{label=\Roman*)}
+\SetEnumitemKey{(Roman)}{label=(\Roman*)}
+\SetEnumitemKey{Roman*}{label*=\Roman*.}
+\SetEnumitemKey{Roman*)}{label*=\Roman*)}
+\SetEnumitemKey{alpha}{label=\alph*.}
+\SetEnumitemKey{alpha)}{label=\alph*)}
+\SetEnumitemKey{(alpha)}{label=(\alph*)}
+\SetEnumitemKey{alpha*}{label*=\alph*.}
+\SetEnumitemKey{alpha*)}{label*=\alph*)}
+\SetEnumitemKey{Alpha}{label=\Alph*.}
+\SetEnumitemKey{Alpha)}{label=\Alph*)}
+\SetEnumitemKey{(Alpha)}{label=(\Alph*)}
+\SetEnumitemKey{Alpha*}{label*=\Alph*.}
+\SetEnumitemKey{Alpha*)}{label*=\Alph*)}
+\SetEnumitemKey{bullet}{label=\hfill\textopenbullet}
+
+%%%
+%%% tight underline {packages soul, countour}
+%%%
+\contourlength{0.17ex}%
+\contournumber{96}%
+
+\NewDocumentCommand{\tightul}{m}{%
+ \setul{0.355ex}{0.075ex}%
+ \ul{{\phantom{{#1}}}}%
+ \llap{\contour{white}{#1}}%
+}
+
+%%%
+%%% 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
+
+\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}%
+}%
+
+
+
+%==============================================================================%
+% 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}%
+}%
+\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%%
+ }%%
+ \def\tc@date{\tc@publmonth~\tc@publyear}%%
+}%
+%
+%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%%
+ }%%
+ \def\tc@date{\tc@publmonth\ de~\tc@publyear}%%
+}%
+%
+%
+% Mainly for 'cover pages'
+\def\tc@pagebreak{\if@openright\cleardoublepage\else\clearpage\fi}
+
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-coord.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-coord.sty
new file mode 100644
index 0000000000..fc83276076
--- /dev/null
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-coord.sty
@@ -0,0 +1,1006 @@
+%%%==============================================================================
+%% Copyright 2022 by Alceu Frigeri
+%%
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status “maintained”.
+%%
+%% The Current Maintainer of this work is Alceu Frigeri
+%%
+%% This is version 1.0 (2022/09/01)
+%%
+%%
+%% This work consists of the files
+%%
+%% ufrgscca.cls main class (bundle)
+%%
+%% ufrgscca-abnt.sty abnt page geometry, and chapter/sectioning/etc. settings
+%% ufrgscca-core.sty core macros (students related data, advisor, work title, etc.)
+%% ufrgscca-cover.sty cover pages macros
+%% ufrgscca-lists.sty New float environments (for code listing, for instance)
+%% ufrgscca-gen.sty a switch/case macro construct and
+%% 'macro factory', for instance to create commands used in the .def files.
+%% ufrgscca-forms.sty forms creation macros (course specific)
+%% ufrgscca-coord.sty student work coordenation related macros (course specific)
+%% ufrgscca-ppc.sty ppc specific macros (ppc stands for Course Pedagogic Project)
+%% ufrgscca-curr.sty curricula specific macros (as a set of semesters and class dependency lists)
+%% ufrgscca-curr-tab.sty curricula tabular macros (to display the curricula as tables)
+%% ufrgscca-curr-graph.sty curricula graph macros (to display the curricula as a dependency graph)
+%%
+%% ufrgscca-en-base.def locale, English, base def's (for babel)
+%% ufrgscca-en-core.def locale, English, for -core.sty
+%% ufrgscca-en-forms.def locale, English, for -forms.sty
+%% ufrgscca-en-coord.def locale, English, for -coord.sty
+%%
+%% ufrgscca-ptBR-base.def locale, Portuguese, base def`s (for babel)
+%% ufrgscca-ptBR-core.def locale, Portuguese, for -core.sty
+%% ufrgscca-ptBR-forms.def locale, Portuguese, for -forms.sty
+%% ufrgscca-ptBR-coord.def locale, Portuguese, for -coord.sty
+%%
+%% README.md quick introduction
+%%
+%% ufrgscca.tex LaTeX documentation
+%% ufrgscca.pdf documentation in PDF form
+%%
+%% 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-coord}
+\def\tc@tmp@altpackname{ufrgsccacoord}
+ \def\tc@tmp@packdesc{UFRGS/CCA coord commands}
+\def\tc@tmp@packdate{2022/09/01}
+\def\tc@tmp@packversion{1.0}
+ \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.usage = general,
+ calendar.if = tcif@coord@calendar,
+ checklist.usage = general,
+ checklist.if = tcif@coord@checklist,
+ report.usage = general,
+ report.if = tcif@coord@report,
+ 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.usage = general,
+ referral.if = tcif@coord@forms@referral,
+ cocertificate.usage = general,
+ cocertificate.if = tcif@coord@forms@cocertificate,
+}
+\ProcessKeyOptions[ufrgscca-coord]\relax
+\NewDocumentCommand{\setreports}{m}{\SetKeys[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-forms}
+\RequirePackage{ufrgscca-gen}
+\RequirePackage{ufrgscca-core}
+
+%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%
+\cmdfactory<coord>{boardstitle}
+\cmdfactory<coord>{boardsworklabel}
+\cmdfactory<coord>{TCCgradesNlabel,TCCgradesClabel}%
+
+\cmdfactory<coord>{calendartitle,tcccalendardesc}%
+\cmdfactory<coord>{tccreporttitle,tccreportopening,tccreportdesc,tccreportabsents,tccreportdismiss}%
+\cmdfactory<coord>{tccreferralopening,referralfailed,referralapproved,referralfailFF}
+\cmdfactory<coord>{referralexamapprovedtext,referralexamfailtext,referralfatetext}%
+\cmdfactory<coord>{boardlabel,cocertificatetitle,cocertificateopenning,cocertificatetext}%
+\cmdfactory<coord>{TCCperiod,boardstitleB,boardsOBS}%
+\cmdfactory<coord>{studentlistformtitle,studentlistactivity,studentlistdate}%
+
+
+
+%%% this should go to ufrgscca-coord !!!!
+\NewDocumentCommand{\TCCgrades}{mmmmm}{%
+ \gdef\tc@TCCgradeA{#1}%
+ \gdef\tc@TCCgradeB{#2}%
+ \gdef\tc@TCCgradeC{#3}%
+ \gdef\tc@TCCgradeD{#4}%
+ \gdef\tc@TCCgradeFF{#5}%
+}%
+%
+%%% this should go to ufrgscca-coord !!!!
+\NewDocumentCommand{\TCCgradesN}{mmm}{%
+ \gdef\tc@TCCgradeAN{#1}%
+ \gdef\tc@TCCgradeBN{#2}%
+ \gdef\tc@TCCgradeCN{#3}%
+}%
+
+
+%%%%%%%%%
+%%%%%%%%% 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}%
+}%
+\NewDocumentCommand{\tccoord@studentDismiss}{}{%
+ \expandafter\gdef\csname tc@student\Alph{tc@studentcount}Dismiss\endcsname{1}%
+ \gdef\tc@TCCdismiss@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{\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%
+%
+\NewDocumentCommand{\tccdate}{mm}{%%
+ \expandafter\gdef\csname date:#1\endcsname{#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{\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@referral
+ \tccoord@TCCreferralletter
+ \fi
+ \iftcif@coord@forms@cocertificate
+ \tccoord@TCCcocertificateletter
+ \fi
+
+ \@defaultboard%
+ }%%
+ \expandafter\NewDocumentCommand\csname #1.hook\endcsname{}{}
+}%
+
+
+
+\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{\examinergrades}{mmm}{%%
+ \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}%%
+ \ifthenelse{\equal{#1}{}}{%%
+ \expandafter\def\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}grade\endcsname{\fpeval{round((\tc@TCCpointAweight * #1 + \tc@TCCpointBweight * #2 + \tc@TCCpointCweight * #3),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@TCCcalendar}{}{%
+ \tc@formtopbox{\tcdef@forms@formstitle}{\tcdef@coord@calendartitle}%
+%
+ { \footnotesize%
+ \begin{center}
+%
+ \resizebox{\textwidth}{!}{%%
+ \begin{tabular}{ccp{\tc@calendartab}}%
+ \tc@tcccalendarhead\hline%
+ \tccoord@TCCcalendarline{A}%
+ \tccoord@TCCcalendarline{B}%
+ \tccoord@TCCcalendarline{C}%
+ \tccoord@TCCcalendarline{D}%
+ \tccoord@TCCcalendarline{E}%
+ \tccoord@TCCcalendarline{F}%
+ \tccoord@TCCcalendarline{G}%
+ \tccoord@TCCcalendarline{H}%
+ \tccoord@TCCcalendarline{I}%
+ \tccoord@TCCcalendarline{J}%
+ \tccoord@TCCcalendarline{K}%
+ \tccoord@TCCcalendarline{L}%
+ \tccoord@TCCcalendarline{M}%
+ \tccoord@TCCcalendarline{N}%
+ \tccoord@TCCcalendarline{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{\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]%
+
+%
+ \tccoord@studentlistrow{A}
+%
+ \tccoord@studentlistrow{B}%
+ \tccoord@studentlistrow{C}%
+ \tccoord@studentlistrow{D}%
+ \tccoord@studentlistrow{E}%
+%
+ \tccoord@studentlistrow{F}%
+ \tccoord@studentlistrow{G}%
+ \tccoord@studentlistrow{H}%
+ \tccoord@studentlistrow{I}%
+ \tccoord@studentlistrow{J}%
+%
+ \tccoord@studentlistrow{K}%
+ \tccoord@studentlistrow{L}%
+ \tccoord@studentlistrow{M}%
+ \tccoord@studentlistrow{N}%
+ \tccoord@studentlistrow{O}%
+%
+ \tccoord@studentlistrow{P}%
+ \tccoord@studentlistrow{Q}%
+ \tccoord@studentlistrow{R}%
+ \tccoord@studentlistrow{S}%
+ \tccoord@studentlistrow{T}%
+%
+ \tccoord@studentlistrow{U}%
+ \tccoord@studentlistrow{V}%
+ \tccoord@studentlistrow{W}%
+ \tccoord@studentlistrow{X}%
+ \tccoord@studentlistrow{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}{{\csname tc@student#1@advisor\endcsname}} & \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%
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\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}%
+ \tccoord@studentboardrow{A} \tccoord@testdaterow{A}{B}%
+ \tccoord@studentboardrow{B} \tccoord@testdaterow{B}{C}%
+ \tccoord@studentboardrow{C} \tccoord@testdaterow{C}{D}%
+ \tccoord@studentboardrow{D} \tccoord@testdaterow{D}{E}%
+ \tccoord@studentboardrow{E} \tccoord@testdaterow{E}{F}%
+%
+ \tccoord@studentboardrow{F} \tccoord@testdaterow{F}{G}%
+ \tccoord@studentboardrow{G} \tccoord@testdaterow{G}{H}%
+ \tccoord@studentboardrow{H} \tccoord@testdaterow{H}{I}%
+ \tccoord@studentboardrow{I} \tccoord@testdaterow{I}{J}%
+ \tccoord@studentboardrow{J} \tccoord@testdaterow{J}{K}%
+%
+ \tccoord@studentboardrow{K} \tccoord@testdaterow{K}{L}%
+ \tccoord@studentboardrow{L} \tccoord@testdaterow{L}{M}%
+ \tccoord@studentboardrow{M} \tccoord@testdaterow{M}{N}%
+ \tccoord@studentboardrow{N} \tccoord@testdaterow{N}{O}%
+ \tccoord@studentboardrow{O} \tccoord@testdaterow{O}{P}%
+%
+ \tccoord@studentboardrow{P} \tccoord@testdaterow{P}{Q}%
+ \tccoord@studentboardrow{Q} \tccoord@testdaterow{Q}{R}%
+ \tccoord@studentboardrow{R} \tccoord@testdaterow{R}{S}%
+ \tccoord@studentboardrow{S} \tccoord@testdaterow{S}{T}%
+ \tccoord@studentboardrow{T}%
+%
+ \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)}%
+ }%
+ }%
+}%
+%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+% examiners info (grades) for report/referral letters%
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\NewDocumentCommand{\tccoord@examinersline}{mm}{%%
+& \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 &%
+}%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+% 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}{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}{\tcdef@cover@advisorname : \csname tc@student#2@advisor\endcsname} & \textbf{\csname tc@student#2Temp\endcsname} & %%
+ \textbf{\tccoord@@fate{#2}}%%
+ \@ifundefined{#1}{\\}{\\*%%
+ \multicolumn{6}{l}{\tcdef@coord@boardsworklabel: \csname tc@student#2title\endcsname}\\*%%
+ \multicolumn{6}{l}{\tccoord@studentextrainfo{#2}}\\*%
+ \multicolumn{6}{c}{{\bf \csname tc@student#2remark\endcsname}}\\%
+ }%%
+ \hline%%
+ }{%%
+ }%%
+ }{%%
+ }%%
+ }%%
+}%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+% student FF info (report)%
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\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\\*%%
+ \multicolumn{6}{l}{\tccoord@studentextrainfo{#1} } & \\*%%
+ \multicolumn{6}{l}{\tcdef@cover@advisorname : \csname tc@student#1@advisor\endcsname} & \\\hline%%
+ }%%
+ }{}%%
+ }%%
+}%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+% student info (report), dimiss case%
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcommand{\tc@studentDismissrow}[1]{%%
+ \@ifundefined{tc@student#1}{}{%%
+ \@ifundefined{tc@student#1FF}{%%
+ \@ifundefined{tc@student#1Dismiss}{%%
+ }{%%
+ \multicolumn{6}{l}{\csname tc@student#1\endcsname} & \\*%%
+ \multicolumn{6}{l}{\tccoord@studentextrainfo{#1} } & \\*%%
+ \multicolumn{6}{l}{\tcdef@cover@advisorname : \csname tc@student#1@advisor\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@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%
+%%
+ \tccoord@studentgrade{A}%
+ \tccoord@studentgrade{B}%
+ \tccoord@studentgrade{C}%
+ \tccoord@studentgrade{D}%
+ \tccoord@studentgrade{E}%
+ \tccoord@studentgrade{F}%
+ \tccoord@studentgrade{G}%
+ \tccoord@studentgrade{H}%
+%%
+ \tccoord@studentgrade{I}%
+ \tccoord@studentgrade{J}%
+ \tccoord@studentgrade{K}%
+ \tccoord@studentgrade{L}%
+ \tccoord@studentgrade{M}%
+ \tccoord@studentgrade{N}%
+ \tccoord@studentgrade{O}%
+ \tccoord@studentgrade{P}%
+%%
+ \tccoord@studentgrade{Q}%
+ \tccoord@studentgrade{R}%
+ \tccoord@studentgrade{S}%
+ \tccoord@studentgrade{T}%
+ \tccoord@studentgrade{U}%
+ \tccoord@studentgrade{V}%
+ \tccoord@studentgrade{W}%
+ \tccoord@studentgrade{X}%
+%%
+ \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%
+ \tccoord@studentrow[tc@studentextrainfo]{A}%
+ \tccoord@studentrow[tc@studentextrainfo]{B}%
+ \tccoord@studentrow[tc@studentextrainfo]{C}%
+ \tccoord@studentrow[tc@studentextrainfo]{D}%
+ \tccoord@studentrow[tc@studentextrainfo]{E}%
+ \tccoord@studentrow[tc@studentextrainfo]{F}%
+ \tccoord@studentrow[tc@studentextrainfo]{G}%
+ \tccoord@studentrow[tc@studentextrainfo]{H}%
+%%
+ \tccoord@studentrow[tc@studentextrainfo]{I}%
+ \tccoord@studentrow[tc@studentextrainfo]{J}%
+ \tccoord@studentrow[tc@studentextrainfo]{K}%
+ \tccoord@studentrow[tc@studentextrainfo]{L}%
+ \tccoord@studentrow[tc@studentextrainfo]{M}%
+ \tccoord@studentrow[tc@studentextrainfo]{N}%
+ \tccoord@studentrow[tc@studentextrainfo]{O}%
+ \tccoord@studentrow[tc@studentextrainfo]{P}%
+%%
+ \tccoord@studentrow[tc@studentextrainfo]{Q}%
+ \tccoord@studentrow[tc@studentextrainfo]{R}%
+ \tccoord@studentrow[tc@studentextrainfo]{S}%
+ \tccoord@studentrow[tc@studentextrainfo]{T}%
+ \tccoord@studentrow[tc@studentextrainfo]{U}%
+ \tccoord@studentrow[tc@studentextrainfo]{V}%
+ \tccoord@studentrow[tc@studentextrainfo]{W}%
+ \tccoord@studentrow[tc@studentextrainfo]{X}%
+ \@ifundefined{tc@TCCff@flag}{}{%
+ & & & & & & \\%
+ & & & & & & \\%
+ \multicolumn{6}{l}{{\bf \tcdef@coord@tccreportabsents}}\\\hline%
+ \tccoord@studentFFrow{A}%
+ \tccoord@studentFFrow{B}%
+ \tccoord@studentFFrow{C}%
+ \tccoord@studentFFrow{D}%
+ \tccoord@studentFFrow{E}%
+ \tccoord@studentFFrow{F}%
+ \tccoord@studentFFrow{G}%
+ \tccoord@studentFFrow{H}%
+%%
+ \tccoord@studentFFrow{I}%
+ \tccoord@studentFFrow{J}%
+ \tccoord@studentFFrow{K}%
+ \tccoord@studentFFrow{L}%
+ \tccoord@studentFFrow{M}%
+ \tccoord@studentFFrow{N}%
+ \tccoord@studentFFrow{O}%
+ \tccoord@studentFFrow{P}%
+%%
+ \tccoord@studentFFrow{Q}%
+ \tccoord@studentFFrow{R}%
+ \tccoord@studentFFrow{S}%
+ \tccoord@studentFFrow{T}%
+ \tccoord@studentFFrow{U}%
+ \tccoord@studentFFrow{V}%
+ \tccoord@studentFFrow{W}%
+ \tccoord@studentFFrow{X}%
+ }%
+ \@ifundefined{tc@TCCdismiss@flag}{}{%
+ & & & & & & \\%
+ & & & & & & \\%
+ \multicolumn{6}{l}{{\bf \tcdef@coord@tccreportdismiss}}\\\hline%
+ \tc@studentDismissrow{A}%
+ \tc@studentDismissrow{B}%
+ \tc@studentDismissrow{C}%
+ \tc@studentDismissrow{D}%
+ \tc@studentDismissrow{E}%
+ \tc@studentDismissrow{F}%
+ \tc@studentDismissrow{G}%
+ \tc@studentDismissrow{H}%
+%%
+ \tc@studentDismissrow{I}%
+ \tc@studentDismissrow{J}%
+ \tc@studentDismissrow{K}%
+ \tc@studentDismissrow{L}%
+ \tc@studentDismissrow{M}%
+ \tc@studentDismissrow{N}%
+ \tc@studentDismissrow{O}%
+ \tc@studentDismissrow{P}%
+%%
+ \tc@studentDismissrow{Q}%
+ \tc@studentDismissrow{R}%
+ \tc@studentDismissrow{S}%
+ \tc@studentDismissrow{T}%
+ \tc@studentDismissrow{U}%
+ \tc@studentDismissrow{V}%
+ \tc@studentDismissrow{W}%
+ \tc@studentDismissrow{X}%
+ }%%
+ \end{longtable}%%
+ \end{center}%%
+ } %end of footnotesize%
+
+ \vfill%
+ \pagebreak%
+}%
+%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+% student check list row%
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\NewDocumentCommand{\tccoord@studentcheckrow}{m}{%%
+ \@ifundefined{tc@student#1}{}{%%
+ \@ifundefined{tc@student#1FF}{%%
+ \@ifundefined{tc@student#1Dismiss}{%%
+ \multirow{4}{\tc@ReportTabA}{\csname tc@student#1\endcsname} %
+ & \tccoord@check{#1}{checkAA} & \tccoord@check{#1}{checkAB} & \tccoord@check{#1}{checkAC} & \tccoord@check{#1}{checkAD} & \tccoord@check{#1}{checkAE}\\*%
+ & \tccoord@check{#1}{checkBA} & \tccoord@check{#1}{checkBB} & \tccoord@check{#1}{checkBC} & \tccoord@check{#1}{checkBD} & \tccoord@check{#1}{checkBE}\\*%
+ & \tccoord@check{#1}{checkCA} & \tccoord@check{#1}{checkCB} & \tccoord@check{#1}{checkCC} & \tccoord@check{#1}{checkCD} & \tccoord@check{#1}{checkCE}\\*%
+ & \tccoord@check{#1}{checkDA} & \tccoord@check{#1}{checkDB} & \tccoord@check{#1}{checkDC} & \tccoord@check{#1}{checkDD} & \tccoord@check{#1}{checkDE}\\\hline%%
+ }{}%%
+ }{}%%
+ }%%
+}%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+% 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%
+ \tccoord@studentcheckrow{A}%
+ \tccoord@studentcheckrow{B}%
+ \tccoord@studentcheckrow{C}%
+ \tccoord@studentcheckrow{D}%
+ \tccoord@studentcheckrow{E}%
+ \tccoord@studentcheckrow{F}%
+ \tccoord@studentcheckrow{G}%
+ \tccoord@studentcheckrow{H}%
+%%
+ \tccoord@studentcheckrow{I}%
+ \tccoord@studentcheckrow{J}%
+ \tccoord@studentcheckrow{K}%
+ \tccoord@studentcheckrow{L}%
+ \tccoord@studentcheckrow{M}%
+ \tccoord@studentcheckrow{N}%
+ \tccoord@studentcheckrow{O}%
+ \tccoord@studentcheckrow{P}%
+%%
+ \tccoord@studentcheckrow{Q}%
+ \tccoord@studentcheckrow{R}%
+ \tccoord@studentcheckrow{S}%
+ \tccoord@studentcheckrow{T}%
+ \tccoord@studentcheckrow{U}%
+ \tccoord@studentcheckrow{V}%
+ \tccoord@studentcheckrow{W}%
+ \tccoord@studentcheckrow{X}%
+ \end{longtable}%%
+ \end{center}%%
+ } %end of footnotesize%
+
+ \vfill%
+ \pagebreak%
+}%
+%
+%
+%
+%
+%
+%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%
+%
+%
+%
+%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+% 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
+
+
+
+ \vfill%
+ \begin{flushright}%
+ \tc@city, \tc@publday\ de \tc@publmonth\ de \tc@publyear .%
+ \vfill %
+
+% \vfill%
+
+ $\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%
+ }{}%
+}%
+%
+
+\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{---}}{}%
+}
+
+
+\NewDocumentCommand{\setstudentlist}{mm}{\tcgen@cdef<coord>{list#1}{#2}}
+
+\NewDocumentCommand{\tcreports}{O{}m}{%%
+ \setreports{#1}
+ \tccoord@calendarfill%
+ \iftcif@coord@calendar%
+ \tccoord@TCCcalendar%
+ \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@report%
+ \tccoord@TCCreport%
+ \fi%
+ \iftcif@coord@boards%
+ \tccoord@TCCboards%
+ \fi%
+ \iftcif@coord@studentlist%
+ \tccoord@studentlistform%
+ \fi%
+}%%
+
+%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%
+%
+\iftcif@english%
+\input{ufrgscca-en-coord.def}%
+\else%
+\input{ufrgscca-ptBR-coord.def}%
+\fi%
+
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-core.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-core.sty
new file mode 100644
index 0000000000..6d948f5f1b
--- /dev/null
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-core.sty
@@ -0,0 +1,279 @@
+%%%==============================================================================
+%% Copyright 2022 by Alceu Frigeri
+%%
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status “maintained”.
+%%
+%% The Current Maintainer of this work is Alceu Frigeri
+%%
+%% This is version 1.0 (2022/09/01)
+%%
+%%
+%% This work consists of the files
+%%
+%% ufrgscca.cls main class (bundle)
+%%
+%% ufrgscca-abnt.sty abnt page geometry, and chapter/sectioning/etc. settings
+%% ufrgscca-core.sty core macros (students related data, advisor, work title, etc.)
+%% ufrgscca-cover.sty cover pages macros
+%% ufrgscca-lists.sty New float environments (for code listing, for instance)
+%% ufrgscca-gen.sty a switch/case macro construct and
+%% 'macro factory', for instance to create commands used in the .def files.
+%% ufrgscca-forms.sty forms creation macros (course specific)
+%% ufrgscca-coord.sty student work coordenation related macros (course specific)
+%% ufrgscca-ppc.sty ppc specific macros (ppc stands for Course Pedagogic Project)
+%% ufrgscca-curr.sty curricula specific macros (as a set of semesters and class dependency lists)
+%% ufrgscca-curr-tab.sty curricula tabular macros (to display the curricula as tables)
+%% ufrgscca-curr-graph.sty curricula graph macros (to display the curricula as a dependency graph)
+%%
+%% ufrgscca-en-base.def locale, English, base def's (for babel)
+%% ufrgscca-en-core.def locale, English, for -core.sty
+%% ufrgscca-en-forms.def locale, English, for -forms.sty
+%% ufrgscca-en-coord.def locale, English, for -coord.sty
+%%
+%% ufrgscca-ptBR-base.def locale, Portuguese, base def`s (for babel)
+%% ufrgscca-ptBR-core.def locale, Portuguese, for -core.sty
+%% ufrgscca-ptBR-forms.def locale, Portuguese, for -forms.sty
+%% ufrgscca-ptBR-coord.def locale, Portuguese, for -coord.sty
+%%
+%% README.md quick introduction
+%%
+%% ufrgscca.tex LaTeX documentation
+%% ufrgscca.pdf documentation in PDF form
+%%
+%% 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-core}
+\def\tc@tmp@altpackname{ufrgsccacore}
+\def\tc@tmp@packdesc{UFRGS/CCA core commands}
+\def\tc@tmp@packdate{2022/09/01}
+\def\tc@tmp@packversion{1.0}
+\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]
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+% 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}%%
+ }%%
+ }%%
+}%
+
+%
+% 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>{TCCcoordtitle}
+\NewDocumentCommand{\TCCcoord}{mO{}}{%
+ \tcgen@cdef<core>{TCCcoord}{#1}%
+ \tccore@articledef{tcdef@core@TCCcoord}{#2}%%
+}
+
+\cmdfactory<core>{coursecoordtitle}%
+\NewDocumentCommand{\coursecoord}{mO{}}{%
+ \tcgen@cdef<core>{coursecoord}{#1}%
+ \tccore@articledef{tcdef@core@coursecoord}{#2}%%
+}
+%
+%
+\def\tccore@ref@advisor{tc@student\Alph{tc@studentcount}@advisor}
+\def\tccore@ref@coadvisor{tc@student\Alph{tc@studentcount}@coadvisor}
+
+\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}
+
+\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}%
+
+}%
+\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}%%
+}%
+%
+%
+%
+\newcounter{tc@examinercount}[tc@studentcount]%
+%
+\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]}{}%%
+}%
+\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}}{}%%
+}%
+%
+\NewDocumentCommand{\coadvisor}{O{}mmO{}}{%%
+ \tccore@ProfFields{coadvisor}{#1}{#2}{#3}{#4}%%
+}%
+\NewDocumentCommand{\coadvisorinfo}{mmmm}{%%
+ \tccore@ProfInfo{coadvisor}{#1}{#2}{#3}{#4}%%
+}%
+%
+%
+\NewDocumentCommand{\examiner}{O{}mmO{}}{%%
+ \stepcounter{tc@examinercount}%%
+ \tccore@ProfFields{examiner\Alph{tc@examinercount}}{#1}{#2}{#3}{#4}%%
+}%
+\NewDocumentCommand{\examinerinfo}{mmmm}{%%
+ \tccore@ProfInfo{examiner\Alph{tc@examinercount}}{#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}%%
+}%
+\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}}%
+ }{}%
+ %
+ % add an \iftcif@forms !!!
+ %
+ \@ifundefined{tcdef@core@tccbrief}{%
+ \tccbrief{\tcdef@core@formsblanklines}%
+ }{}%
+ \@ifundefined{tcdef@core@tcccoadvisorbrief}{%
+ \tcccoadvisorbrief{\tcdef@core@formsblanklines}%
+ }{}%
+ \@ifundefined{tcdef@core@tccadvisorsreview}{%
+ \tccadvisorsreview{\tcdef@core@formsblanklines}%
+ }{}%
+}%
+
+\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{tcdef@core@tccbrief}
+ \csundef{tcdef@core@tcccoadvisorbrief}
+ \csundef{tcdef@core@tccadvisorsreview}
+} \ No newline at end of file
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty
new file mode 100644
index 0000000000..b0578df792
--- /dev/null
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty
@@ -0,0 +1,340 @@
+%%%==============================================================================
+%% Copyright 2022 by Alceu Frigeri
+%%
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status “maintained”.
+%%
+%% The Current Maintainer of this work is Alceu Frigeri
+%%
+%% This is version 1.0 (2022/09/01)
+%%
+%%
+%% This work consists of the files
+%%
+%% ufrgscca.cls main class (bundle)
+%%
+%% ufrgscca-abnt.sty abnt page geometry, and chapter/sectioning/etc. settings
+%% ufrgscca-core.sty core macros (students related data, advisor, work title, etc.)
+%% ufrgscca-cover.sty cover pages macros
+%% ufrgscca-lists.sty New float environments (for code listing, for instance)
+%% ufrgscca-gen.sty a switch/case macro construct and
+%% 'macro factory', for instance to create commands used in the .def files.
+%% ufrgscca-forms.sty forms creation macros (course specific)
+%% ufrgscca-coord.sty student work coordenation related macros (course specific)
+%% ufrgscca-ppc.sty ppc specific macros (ppc stands for Course Pedagogic Project)
+%% ufrgscca-curr.sty curricula specific macros (as a set of semesters and class dependency lists)
+%% ufrgscca-curr-tab.sty curricula tabular macros (to display the curricula as tables)
+%% ufrgscca-curr-graph.sty curricula graph macros (to display the curricula as a dependency graph)
+%%
+%% ufrgscca-en-base.def locale, English, base def's (for babel)
+%% ufrgscca-en-core.def locale, English, for -core.sty
+%% ufrgscca-en-forms.def locale, English, for -forms.sty
+%% ufrgscca-en-coord.def locale, English, for -coord.sty
+%%
+%% ufrgscca-ptBR-base.def locale, Portuguese, base def`s (for babel)
+%% ufrgscca-ptBR-core.def locale, Portuguese, for -core.sty
+%% ufrgscca-ptBR-forms.def locale, Portuguese, for -forms.sty
+%% ufrgscca-ptBR-coord.def locale, Portuguese, for -coord.sty
+%%
+%% README.md quick introduction
+%%
+%% ufrgscca.tex LaTeX documentation
+%% ufrgscca.pdf documentation in PDF form
+%%
+%% 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-cover}
+\def\tc@tmp@altpackname{ufrgsccacover}
+\def\tc@tmp@packdesc{UFRGS/CCA cover commands}
+\def\tc@tmp@packdate{2022/09/01}
+\def\tc@tmp@packversion{1.0}
+\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
+}
+\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}%
+%
+\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@core@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@core@coadvisorname\else\tcdef@cover@coprofname\fi}:\\\null\hfill\tc@studentA@coadvisor}%
+}%
+%
+
+%%%%%%%%%%%%%%%%%%%
+\let\tc@org@maketitle\maketitle
+\RenewDocumentCommand{\maketitle}{}{\coverpages}%
+
+\NewDocumentCommand{\coverpages}{}{%%
+ \thecoverpage%that´s the first page%
+ \iftcif@report
+ \else
+ \thetitlepage%that´s the second page (for tcc)%
+ \theapprovalpage%that´s the third page (for tcc)%
+ \fi
+}%
+%
+
+%%%%%%%%%
+%%%
+%% 1st cover page%
+%%%
+%%%%%%%%%
+%%
+\newlength{\tc@coverwinwidth}\setlength{\tc@coverwinwidth}{95mm}%%
+\newlength{\tc@coverwinheight}\setlength{\tc@coverwinheight}{64mm}%%
+\newlength{\tc@coverwinvoffset}\setlength{\tc@coverwinvoffset}{112mm}%%
+\NewDocumentCommand{\location}{mm}{%%
+ \gdef\tc@city{#1}%%
+ \gdef\tc@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%
+ }%
+ }%
+}%
+
+
+ \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{\theapprovalpage}{}{%%
+ \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@date
+ \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@@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@approvalpagecoordinfo}{}{%%
+ \@ifundefined{tcdef@core@coursecoord}{}{%%
+ \vfill%
+ \hrulefill\\%
+ \tcdef@core@coursecoord\\%
+ \tcdef@core@coursecoordtitle\\%
+ \tcdef@cover@course%
+ }%
+}%
+%
+
+
+
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr-graph.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr-graph.sty
new file mode 100644
index 0000000000..3de86ce446
--- /dev/null
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr-graph.sty
@@ -0,0 +1,127 @@
+%%%==============================================================================
+%% Copyright 2022 by Alceu Frigeri
+%%
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status “maintained”.
+%%
+%% The Current Maintainer of this work is Alceu Frigeri
+%%
+%% This is version 1.0 (2022/09/01)
+%%
+%%
+%% This work consists of the files
+%%
+%% ufrgscca.cls main class (bundle)
+%%
+%% ufrgscca-abnt.sty abnt page geometry, and chapter/sectioning/etc. settings
+%% ufrgscca-core.sty core macros (students related data, advisor, work title, etc.)
+%% ufrgscca-cover.sty cover pages macros
+%% ufrgscca-lists.sty New float environments (for code listing, for instance)
+%% ufrgscca-gen.sty a switch/case macro construct and
+%% 'macro factory', for instance to create commands used in the .def files.
+%% ufrgscca-forms.sty forms creation macros (course specific)
+%% ufrgscca-coord.sty student work coordenation related macros (course specific)
+%% ufrgscca-ppc.sty ppc specific macros (ppc stands for Course Pedagogic Project)
+%% ufrgscca-curr.sty curricula specific macros (as a set of semesters and class dependency lists)
+%% ufrgscca-curr-tab.sty curricula tabular macros (to display the curricula as tables)
+%% ufrgscca-curr-graph.sty curricula graph macros (to display the curricula as a dependency graph)
+%%
+%% ufrgscca-en-base.def locale, English, base def's (for babel)
+%% ufrgscca-en-core.def locale, English, for -core.sty
+%% ufrgscca-en-forms.def locale, English, for -forms.sty
+%% ufrgscca-en-coord.def locale, English, for -coord.sty
+%%
+%% ufrgscca-ptBR-base.def locale, Portuguese, base def`s (for babel)
+%% ufrgscca-ptBR-core.def locale, Portuguese, for -core.sty
+%% ufrgscca-ptBR-forms.def locale, Portuguese, for -forms.sty
+%% ufrgscca-ptBR-coord.def locale, Portuguese, for -coord.sty
+%%
+%% README.md quick introduction
+%%
+%% ufrgscca.tex LaTeX documentation
+%% ufrgscca.pdf documentation in PDF form
+%%
+%% 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{2022/09/01}
+\def\tc@tmp@packversion{1.0alpha}
+\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](5.5*\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}}
+
+
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr-tab.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr-tab.sty
new file mode 100644
index 0000000000..1852c7c14f
--- /dev/null
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr-tab.sty
@@ -0,0 +1,166 @@
+%%%==============================================================================
+%% Copyright 2022 by Alceu Frigeri
+%%
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status “maintained”.
+%%
+%% The Current Maintainer of this work is Alceu Frigeri
+%%
+%% This is version 1.0 (2022/09/01)
+%%
+%%
+%% This work consists of the files
+%%
+%% ufrgscca.cls main class (bundle)
+%%
+%% ufrgscca-abnt.sty abnt page geometry, and chapter/sectioning/etc. settings
+%% ufrgscca-core.sty core macros (students related data, advisor, work title, etc.)
+%% ufrgscca-cover.sty cover pages macros
+%% ufrgscca-lists.sty New float environments (for code listing, for instance)
+%% ufrgscca-gen.sty a switch/case macro construct and
+%% 'macro factory', for instance to create commands used in the .def files.
+%% ufrgscca-forms.sty forms creation macros (course specific)
+%% ufrgscca-coord.sty student work coordenation related macros (course specific)
+%% ufrgscca-ppc.sty ppc specific macros (ppc stands for Course Pedagogic Project)
+%% ufrgscca-curr.sty curricula specific macros (as a set of semesters and class dependency lists)
+%% ufrgscca-curr-tab.sty curricula tabular macros (to display the curricula as tables)
+%% ufrgscca-curr-graph.sty curricula graph macros (to display the curricula as a dependency graph)
+%%
+%% ufrgscca-en-base.def locale, English, base def's (for babel)
+%% ufrgscca-en-core.def locale, English, for -core.sty
+%% ufrgscca-en-forms.def locale, English, for -forms.sty
+%% ufrgscca-en-coord.def locale, English, for -coord.sty
+%%
+%% ufrgscca-ptBR-base.def locale, Portuguese, base def`s (for babel)
+%% ufrgscca-ptBR-core.def locale, Portuguese, for -core.sty
+%% ufrgscca-ptBR-forms.def locale, Portuguese, for -forms.sty
+%% ufrgscca-ptBR-coord.def locale, Portuguese, for -coord.sty
+%%
+%% README.md quick introduction
+%%
+%% ufrgscca.tex LaTeX documentation
+%% ufrgscca.pdf documentation in PDF form
+%%
+%% 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{2022/09/01}
+\def\tc@tmp@packversion{1.0alpha}
+\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.et\endcsname)\\[-1pt]%
+}
+
+\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}%
+ }
+}
+
+
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr.sty
new file mode 100644
index 0000000000..4b365ce28b
--- /dev/null
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr.sty
@@ -0,0 +1,181 @@
+%%%==============================================================================
+%% Copyright 2022 by Alceu Frigeri
+%%
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status “maintained”.
+%%
+%% The Current Maintainer of this work is Alceu Frigeri
+%%
+%% This is version 1.0 (2022/09/01)
+%%
+%%
+%% This work consists of the files
+%%
+%% ufrgscca.cls main class (bundle)
+%%
+%% ufrgscca-abnt.sty abnt page geometry, and chapter/sectioning/etc. settings
+%% ufrgscca-core.sty core macros (students related data, advisor, work title, etc.)
+%% ufrgscca-cover.sty cover pages macros
+%% ufrgscca-lists.sty New float environments (for code listing, for instance)
+%% ufrgscca-gen.sty a switch/case macro construct and
+%% 'macro factory', for instance to create commands used in the .def files.
+%% ufrgscca-forms.sty forms creation macros (course specific)
+%% ufrgscca-coord.sty student work coordenation related macros (course specific)
+%% ufrgscca-ppc.sty ppc specific macros (ppc stands for Course Pedagogic Project)
+%% ufrgscca-curr.sty curricula specific macros (as a set of semesters and class dependency lists)
+%% ufrgscca-curr-tab.sty curricula tabular macros (to display the curricula as tables)
+%% ufrgscca-curr-graph.sty curricula graph macros (to display the curricula as a dependency graph)
+%%
+%% ufrgscca-en-base.def locale, English, base def's (for babel)
+%% ufrgscca-en-core.def locale, English, for -core.sty
+%% ufrgscca-en-forms.def locale, English, for -forms.sty
+%% ufrgscca-en-coord.def locale, English, for -coord.sty
+%%
+%% ufrgscca-ptBR-base.def locale, Portuguese, base def`s (for babel)
+%% ufrgscca-ptBR-core.def locale, Portuguese, for -core.sty
+%% ufrgscca-ptBR-forms.def locale, Portuguese, for -forms.sty
+%% ufrgscca-ptBR-coord.def locale, Portuguese, for -coord.sty
+%%
+%% README.md quick introduction
+%%
+%% ufrgscca.tex LaTeX documentation
+%% ufrgscca.pdf documentation in PDF form
+%%
+%% 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}
+\def\tc@tmp@altpackname{ufrgsccacurr}
+\def\tc@tmp@packdesc{UFRGS/CCA curricula commands}
+\def\tc@tmp@packdate{2022/09/01}
+\def\tc@tmp@packversion{1.0beta}
+\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}
+\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}}
+
+%%%%%%%%%%%
+%%%%%%%%%%%
+%%%%%%%%%%%
+
+\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}}}
+
+\NewDocumentCommand{\classremark}{m}{%
+ \expandafter\gdef\csname gr@class:\gr@disc.remark\endcsname{#1}%
+}
+
+%%%%%%%%%%%
+%%%%%%%%%%%
+%%%%%%%%%%%
+
+\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}%
+}
+
+%%%%%%%%%%%
+%%%%%%%%%%%
+%%%%%%%%%%%
+
+\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}%
+}
+
+
+%%%%%%%%%%%
+%%%%%%%%%%%
+%%%%%%%%%%%
+
+
+\NewDocumentCommand\altdef{}{%
+ \stepcounter{gr@class:\gr@disc.dep}%
+}
+
+%%%%%%%%%%%
+%%%%%%%%%%%
+%%%%%%%%%%%
+
+\NewDocumentCommand\goo{m}{}
+\NewDocumentCommand\gooble{m}{}
+
+\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\LstTopic{O{\goo}m}{%
+\xdef\gr@topic{#2}%
+\@ex\@ex\@ex\forcsvlist\@ex\@ex\@ex#1\@ex\@ex\@ex{\csname gr@topic:#2\endcsname}%
+}
+
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-en-base.def b/macros/latex/contrib/ufrgscca/latex/ufrgscca-en-base.def
new file mode 100644
index 0000000000..3b9cbc0ce7
--- /dev/null
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-en-base.def
@@ -0,0 +1,97 @@
+%%%==============================================================================
+%% Copyright 2022 by Alceu Frigeri
+%%
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status “maintained”.
+%%
+%% The Current Maintainer of this work is Alceu Frigeri
+%%
+%% This is version 1.0 (2022/09/01)
+%%
+%%
+%% This work consists of the files
+%%
+%% ufrgscca.cls main class (bundle)
+%%
+%% ufrgscca-abnt.sty abnt page geometry, and chapter/sectioning/etc. settings
+%% ufrgscca-core.sty core macros (students related data, advisor, work title, etc.)
+%% ufrgscca-cover.sty cover pages macros
+%% ufrgscca-lists.sty New float environments (for code listing, for instance)
+%% ufrgscca-gen.sty a switch/case macro construct and
+%% 'macro factory', for instance to create commands used in the .def files.
+%% ufrgscca-forms.sty forms creation macros (course specific)
+%% ufrgscca-coord.sty student work coordenation related macros (course specific)
+%% ufrgscca-ppc.sty ppc specific macros (ppc stands for Course Pedagogic Project)
+%% ufrgscca-curr.sty curricula specific macros (as a set of semesters and class dependency lists)
+%% ufrgscca-curr-tab.sty curricula tabular macros (to display the curricula as tables)
+%% ufrgscca-curr-graph.sty curricula graph macros (to display the curricula as a dependency graph)
+%%
+%% ufrgscca-en-base.def locale, English, base def's (for babel)
+%% ufrgscca-en-core.def locale, English, for -core.sty
+%% ufrgscca-en-forms.def locale, English, for -forms.sty
+%% ufrgscca-en-coord.def locale, English, for -coord.sty
+%%
+%% ufrgscca-ptBR-base.def locale, Portuguese, base def`s (for babel)
+%% ufrgscca-ptBR-core.def locale, Portuguese, for -core.sty
+%% ufrgscca-ptBR-forms.def locale, Portuguese, for -forms.sty
+%% ufrgscca-ptBR-coord.def locale, Portuguese, for -coord.sty
+%%
+%% README.md quick introduction
+%%
+%% ufrgscca.tex LaTeX documentation
+%% ufrgscca.pdf documentation in PDF form
+%%
+%% 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-base}
+\def\tc@tmp@altpackname{ufrgsccaenbase}
+\def\tc@tmp@packdesc{UFRGS/CCA English base defs}
+\def\tc@tmp@packdate{2022/09/01}
+\def\tc@tmp@packversion{1.0}
+\let\@exp\expandafter
+\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion}
+
+%%%%%
+%%
+%% those are loaded, on the fly, when selecting, or switching, to english (\@namedef{captionsenglish} vis-à-viz \begin{otherlanguage}{})
+%%
+%%%%%
+
+% \def\bibname{References}% deprecated by biber
+% \def\refname{\bibname}
+ \def\abstractname{Abstract}%
+ \def\englishabstractname{Abstract}%
+ \def\contentsname{Contents}%
+ \def\listfigurename{List of Figures}%
+ \def\listtablename{List of Tables}%
+ \def\figurename{Figure}%
+ \def\tablename{Table}%
+ \def\byname{by}%
+ \def\keywordsname{Keywords}%
+
+ \def\listabbrvname{List of Abbreviations}%
+ \def\listsymbolname{List of Symbols}%
+
+ \def\listingname{Listing}
+ \def\listlistingname{List of Listings}
+
+ \def\defappendixname{Appendix}%
+ \def\defappendixpagename{Appendices}%
+ \def\defannexname{Annex}%
+ \def\defannexpagename{Annexe}%
+ \def\sourcename{Source:}
+ \def\notename{Note}%%
+
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-en-coord.def b/macros/latex/contrib/ufrgscca/latex/ufrgscca-en-coord.def
new file mode 100644
index 0000000000..3143da0b31
--- /dev/null
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-en-coord.def
@@ -0,0 +1,129 @@
+%%%==============================================================================
+%% Copyright 2022 by Alceu Frigeri
+%%
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status “maintained”.
+%%
+%% The Current Maintainer of this work is Alceu Frigeri
+%%
+%% This is version 1.0 (2022/09/01)
+%%
+%%
+%% This work consists of the files
+%%
+%% ufrgscca.cls main class (bundle)
+%%
+%% ufrgscca-abnt.sty abnt page geometry, and chapter/sectioning/etc. settings
+%% ufrgscca-core.sty core macros (students related data, advisor, work title, etc.)
+%% ufrgscca-cover.sty cover pages macros
+%% ufrgscca-lists.sty New float environments (for code listing, for instance)
+%% ufrgscca-gen.sty a switch/case macro construct and
+%% 'macro factory', for instance to create commands used in the .def files.
+%% ufrgscca-forms.sty forms creation macros (course specific)
+%% ufrgscca-coord.sty student work coordenation related macros (course specific)
+%% ufrgscca-ppc.sty ppc specific macros (ppc stands for Course Pedagogic Project)
+%% ufrgscca-curr.sty curricula specific macros (as a set of semesters and class dependency lists)
+%% ufrgscca-curr-tab.sty curricula tabular macros (to display the curricula as tables)
+%% ufrgscca-curr-graph.sty curricula graph macros (to display the curricula as a dependency graph)
+%%
+%% ufrgscca-en-base.def locale, English, base def's (for babel)
+%% ufrgscca-en-core.def locale, English, for -core.sty
+%% ufrgscca-en-forms.def locale, English, for -forms.sty
+%% ufrgscca-en-coord.def locale, English, for -coord.sty
+%%
+%% ufrgscca-ptBR-base.def locale, Portuguese, base def`s (for babel)
+%% ufrgscca-ptBR-core.def locale, Portuguese, for -core.sty
+%% ufrgscca-ptBR-forms.def locale, Portuguese, for -forms.sty
+%% ufrgscca-ptBR-coord.def locale, Portuguese, for -coord.sty
+%%
+%% README.md quick introduction
+%%
+%% ufrgscca.tex LaTeX documentation
+%% ufrgscca.pdf documentation in PDF form
+%%
+%% 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{2022/09/01}
+\def\tc@tmp@packversion{1.0}
+\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\ }
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-en-core.def b/macros/latex/contrib/ufrgscca/latex/ufrgscca-en-core.def
new file mode 100644
index 0000000000..f96e2529d4
--- /dev/null
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-en-core.def
@@ -0,0 +1,101 @@
+%%%==============================================================================
+%% Copyright 2022 by Alceu Frigeri
+%%
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status “maintained”.
+%%
+%% The Current Maintainer of this work is Alceu Frigeri
+%%
+%% This is version 1.0 (2022/09/01)
+%%
+%%
+%% This work consists of the files
+%%
+%% ufrgscca.cls main class (bundle)
+%%
+%% ufrgscca-abnt.sty abnt page geometry, and chapter/sectioning/etc. settings
+%% ufrgscca-core.sty core macros (students related data, advisor, work title, etc.)
+%% ufrgscca-cover.sty cover pages macros
+%% ufrgscca-lists.sty New float environments (for code listing, for instance)
+%% ufrgscca-gen.sty a switch/case macro construct and
+%% 'macro factory', for instance to create commands used in the .def files.
+%% ufrgscca-forms.sty forms creation macros (course specific)
+%% ufrgscca-coord.sty student work coordenation related macros (course specific)
+%% ufrgscca-ppc.sty ppc specific macros (ppc stands for Course Pedagogic Project)
+%% ufrgscca-curr.sty curricula specific macros (as a set of semesters and class dependency lists)
+%% ufrgscca-curr-tab.sty curricula tabular macros (to display the curricula as tables)
+%% ufrgscca-curr-graph.sty curricula graph macros (to display the curricula as a dependency graph)
+%%
+%% ufrgscca-en-base.def locale, English, base def's (for babel)
+%% ufrgscca-en-core.def locale, English, for -core.sty
+%% ufrgscca-en-forms.def locale, English, for -forms.sty
+%% ufrgscca-en-coord.def locale, English, for -coord.sty
+%%
+%% ufrgscca-ptBR-base.def locale, Portuguese, base def`s (for babel)
+%% ufrgscca-ptBR-core.def locale, Portuguese, for -core.sty
+%% ufrgscca-ptBR-forms.def locale, Portuguese, for -forms.sty
+%% ufrgscca-ptBR-coord.def locale, Portuguese, for -coord.sty
+%%
+%% README.md quick introduction
+%%
+%% ufrgscca.tex LaTeX documentation
+%% ufrgscca.pdf documentation in PDF form
+%%
+%% 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{2022/09/01}
+\def\tc@tmp@packversion{1.0}
+\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
new file mode 100644
index 0000000000..7ffeefb01b
--- /dev/null
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-en-forms.def
@@ -0,0 +1,215 @@
+%%%==============================================================================
+%% Copyright 2022 by Alceu Frigeri
+%%
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status “maintained”.
+%%
+%% The Current Maintainer of this work is Alceu Frigeri
+%%
+%% This is version 1.0 (2022/09/01)
+%%
+%%
+%% This work consists of the files
+%%
+%% ufrgscca.cls main class (bundle)
+%%
+%% ufrgscca-abnt.sty abnt page geometry, and chapter/sectioning/etc. settings
+%% ufrgscca-core.sty core macros (students related data, advisor, work title, etc.)
+%% ufrgscca-cover.sty cover pages macros
+%% ufrgscca-lists.sty New float environments (for code listing, for instance)
+%% ufrgscca-gen.sty a switch/case macro construct and
+%% 'macro factory', for instance to create commands used in the .def files.
+%% ufrgscca-forms.sty forms creation macros (course specific)
+%% ufrgscca-coord.sty student work coordenation related macros (course specific)
+%% ufrgscca-ppc.sty ppc specific macros (ppc stands for Course Pedagogic Project)
+%% ufrgscca-curr.sty curricula specific macros (as a set of semesters and class dependency lists)
+%% ufrgscca-curr-tab.sty curricula tabular macros (to display the curricula as tables)
+%% ufrgscca-curr-graph.sty curricula graph macros (to display the curricula as a dependency graph)
+%%
+%% ufrgscca-en-base.def locale, English, base def's (for babel)
+%% ufrgscca-en-core.def locale, English, for -core.sty
+%% ufrgscca-en-forms.def locale, English, for -forms.sty
+%% ufrgscca-en-coord.def locale, English, for -coord.sty
+%%
+%% ufrgscca-ptBR-base.def locale, Portuguese, base def`s (for babel)
+%% ufrgscca-ptBR-core.def locale, Portuguese, for -core.sty
+%% ufrgscca-ptBR-forms.def locale, Portuguese, for -forms.sty
+%% ufrgscca-ptBR-coord.def locale, Portuguese, for -coord.sty
+%%
+%% README.md quick introduction
+%%
+%% ufrgscca.tex LaTeX documentation
+%% ufrgscca.pdf documentation in PDF form
+%%
+%% 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{2022/09/01}
+\def\tc@tmp@packversion{1.0}
+\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
new file mode 100644
index 0000000000..d2f7b26adf
--- /dev/null
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.sty
@@ -0,0 +1,561 @@
+%%%==============================================================================
+%% Copyright 2022 by Alceu Frigeri
+%%
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status “maintained”.
+%%
+%% The Current Maintainer of this work is Alceu Frigeri
+%%
+%% This is version 1.0 (2022/09/01)
+%%
+%%
+%% This work consists of the files
+%%
+%% ufrgscca.cls main class (bundle)
+%%
+%% ufrgscca-abnt.sty abnt page geometry, and chapter/sectioning/etc. settings
+%% ufrgscca-core.sty core macros (students related data, advisor, work title, etc.)
+%% ufrgscca-cover.sty cover pages macros
+%% ufrgscca-lists.sty New float environments (for code listing, for instance)
+%% ufrgscca-gen.sty a switch/case macro construct and
+%% 'macro factory', for instance to create commands used in the .def files.
+%% ufrgscca-forms.sty forms creation macros (course specific)
+%% ufrgscca-coord.sty student work coordenation related macros (course specific)
+%% ufrgscca-ppc.sty ppc specific macros (ppc stands for Course Pedagogic Project)
+%% ufrgscca-curr.sty curricula specific macros (as a set of semesters and class dependency lists)
+%% ufrgscca-curr-tab.sty curricula tabular macros (to display the curricula as tables)
+%% ufrgscca-curr-graph.sty curricula graph macros (to display the curricula as a dependency graph)
+%%
+%% ufrgscca-en-base.def locale, English, base def's (for babel)
+%% ufrgscca-en-core.def locale, English, for -core.sty
+%% ufrgscca-en-forms.def locale, English, for -forms.sty
+%% ufrgscca-en-coord.def locale, English, for -coord.sty
+%%
+%% ufrgscca-ptBR-base.def locale, Portuguese, base def`s (for babel)
+%% ufrgscca-ptBR-core.def locale, Portuguese, for -core.sty
+%% ufrgscca-ptBR-forms.def locale, Portuguese, for -forms.sty
+%% ufrgscca-ptBR-coord.def locale, Portuguese, for -coord.sty
+%%
+%% README.md quick introduction
+%%
+%% ufrgscca.tex LaTeX documentation
+%% ufrgscca.pdf documentation in PDF form
+%%
+%% 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-forms}
+\def\tc@tmp@altpackname{ufrgsccaforms}
+\def\tc@tmp@packdesc{UFRGS/CCA forms commands}
+\def\tc@tmp@packdate{2022/09/01}
+\def\tc@tmp@packversion{1.0}
+\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,formsfootnote}
+\cmdfactory<forms>{renewreqformtitle,renewreqformnotes,reqformtitle,reqformopening,reqformdesc}%
+\cmdfactory<forms>{coadvisorformtitle,coadvisorformdesc}
+\cmdfactory<forms>{formsbrieflabel,formsstudentemaillabel,formsadvisoremaillabel}
+\cmdfactory<forms>{formsreasonlabel}
+\cmdfactory<forms>{examformtitle,examformdesc,examformnoteslabel}
+\cmdfactory<forms>{examformnotes,examboardformtitle,examboardformdesc}%
+\cmdfactory<forms>{formsboardtitle,advisorapprovalformtitle,advisorapprovalformdesc,advisorapprovalformdescB}
+\cmdfactory<forms>{rectifyapprovalformtitle,rectifyapprovalformdesc}%
+\cmdfactory<forms>{receiptformtitle,receiptformfootnote,receiptformdesc}%
+\cmdfactory<forms>{reviewformtitle,reviewformdesc,reviewformfootnoteB,reviewformfootnote}
+\cmdfactory<forms>{formsrectifyOKdesc}
+
+\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}%
+}%
+%
+
+
+\iftcif@english%
+\input{ufrgscca-en-forms.def}%
+\else%
+\input{ufrgscca-ptBR-forms.def}%
+\fi%
+
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% 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}{}{%%
+ \tcdef@forms@formsstudentlabel : {\bf \tc@studentA} \hfill \tcdef@forms@formsstudentIDlabel : {\bf \tc@studentAID}%
+
+ \tcdef@forms@formsworktitlelabel : {\bf \@title}\\[-4mm]%
+
+ \tcdef@forms@formsadvisorlabel : {\bf \tc@studentA@advisor}\\%
+}%
+%
+
+
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+% 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%
+ \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%
+ \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}%
+
+ {\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@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%
+
+ \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%
+
+ \tcdef@forms@examboardformdesc%
+ \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%
+
+ \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%
+}%
+%
+%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+% 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}
+\formsblanklines{\hrulefill\\%
+
+\hrulefill\\%
+
+\hrulefill\\%
+
+\hrulefill\\%
+
+\hrulefill\\%
+
+\hrulefill\\%
+
+\hrulefill%
+}%
+%
+
+
+\DeclareKeys[forms]{
+ reqform.usage = general,
+ reqform.code = {\tcforms@reqform},
+ coadvisor.usage = general,
+ coadvisor.code = {\tcforms@coadvisorform},
+ boardsapproval.usage = general,
+ boardsapproval.code = {\tcforms@examboardform},
+ advisorsapproval.usage = general,
+ advisorsapproval.code = {\tcforms@advisorapprovalform},
+ receipts.usage = general,
+ receipts.code = {\tcforms@receiptforms},
+ examinersforms.usage = general,
+ examinersforms.code = {\tcforms@examinersForms},
+ rectifyapproval.usage = general,
+ rectifyapproval.code = {\tcforms@rectifyapprovalform},
+}
+
+
+\NewDocumentCommand{\tcforms}{m}{%
+ \SetKeys[forms]{#1}%
+}
+
+\NewDocumentCommand{\tcemptyforms}{m}{%
+ \tccore@resetfields%
+ \title{\rule{\tc@namerule}{.1pt}}%
+ \tccore@emptyfields%
+ \SetKeys[forms]{#1}%
+}
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-gen.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-gen.sty
new file mode 100644
index 0000000000..9d72af827d
--- /dev/null
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-gen.sty
@@ -0,0 +1,152 @@
+%%%==============================================================================
+%% Copyright 2022 by Alceu Frigeri
+%%
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status “maintained”.
+%%
+%% The Current Maintainer of this work is Alceu Frigeri
+%%
+%% This is version 1.0 (2022/09/01)
+%%
+%%
+%% This work consists of the files
+%%
+%% ufrgscca.cls main class (bundle)
+%%
+%% ufrgscca-abnt.sty abnt page geometry, and chapter/sectioning/etc. settings
+%% ufrgscca-core.sty core macros (students related data, advisor, work title, etc.)
+%% ufrgscca-cover.sty cover pages macros
+%% ufrgscca-lists.sty New float environments (for code listing, for instance)
+%% ufrgscca-gen.sty a switch/case macro construct and
+%% 'macro factory', for instance to create commands used in the .def files.
+%% ufrgscca-forms.sty forms creation macros (course specific)
+%% ufrgscca-coord.sty student work coordenation related macros (course specific)
+%% ufrgscca-ppc.sty ppc specific macros (ppc stands for Course Pedagogic Project)
+%% ufrgscca-curr.sty curricula specific macros (as a set of semesters and class dependency lists)
+%% ufrgscca-curr-tab.sty curricula tabular macros (to display the curricula as tables)
+%% ufrgscca-curr-graph.sty curricula graph macros (to display the curricula as a dependency graph)
+%%
+%% ufrgscca-en-base.def locale, English, base def's (for babel)
+%% ufrgscca-en-core.def locale, English, for -core.sty
+%% ufrgscca-en-forms.def locale, English, for -forms.sty
+%% ufrgscca-en-coord.def locale, English, for -coord.sty
+%%
+%% ufrgscca-ptBR-base.def locale, Portuguese, base def`s (for babel)
+%% ufrgscca-ptBR-core.def locale, Portuguese, for -core.sty
+%% ufrgscca-ptBR-forms.def locale, Portuguese, for -forms.sty
+%% ufrgscca-ptBR-coord.def locale, Portuguese, for -coord.sty
+%%
+%% README.md quick introduction
+%%
+%% ufrgscca.tex LaTeX documentation
+%% ufrgscca.pdf documentation in PDF form
+%%
+%% 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{2022/09/01}
+\def\tc@tmp@packversion{1.0}
+\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
new file mode 100644
index 0000000000..b419ea04f1
--- /dev/null
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-lists.sty
@@ -0,0 +1,118 @@
+%%%==============================================================================
+%% Copyright 2022 by Alceu Frigeri
+%%
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status “maintained”.
+%%
+%% The Current Maintainer of this work is Alceu Frigeri
+%%
+%% This is version 1.0 (2022/09/01)
+%%
+%%
+%% This work consists of the files
+%%
+%% ufrgscca.cls main class (bundle)
+%%
+%% ufrgscca-abnt.sty abnt page geometry, and chapter/sectioning/etc. settings
+%% ufrgscca-core.sty core macros (students related data, advisor, work title, etc.)
+%% ufrgscca-cover.sty cover pages macros
+%% ufrgscca-lists.sty New float environments (for code listing, for instance)
+%% ufrgscca-gen.sty a switch/case macro construct and
+%% 'macro factory', for instance to create commands used in the .def files.
+%% ufrgscca-forms.sty forms creation macros (course specific)
+%% ufrgscca-coord.sty student work coordenation related macros (course specific)
+%% ufrgscca-ppc.sty ppc specific macros (ppc stands for Course Pedagogic Project)
+%% ufrgscca-curr.sty curricula specific macros (as a set of semesters and class dependency lists)
+%% ufrgscca-curr-tab.sty curricula tabular macros (to display the curricula as tables)
+%% ufrgscca-curr-graph.sty curricula graph macros (to display the curricula as a dependency graph)
+%%
+%% ufrgscca-en-base.def locale, English, base def's (for babel)
+%% ufrgscca-en-core.def locale, English, for -core.sty
+%% ufrgscca-en-forms.def locale, English, for -forms.sty
+%% ufrgscca-en-coord.def locale, English, for -coord.sty
+%%
+%% ufrgscca-ptBR-base.def locale, Portuguese, base def`s (for babel)
+%% ufrgscca-ptBR-core.def locale, Portuguese, for -core.sty
+%% ufrgscca-ptBR-forms.def locale, Portuguese, for -forms.sty
+%% ufrgscca-ptBR-coord.def locale, Portuguese, for -coord.sty
+%%
+%% README.md quick introduction
+%%
+%% ufrgscca.tex LaTeX documentation
+%% ufrgscca.pdf documentation in PDF form
+%%
+%% 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-lists}
+\def\tc@tmp@altpackname{ufrgsccalists}
+\def\tc@tmp@packdesc{UFRGS/CCA auxiliary lists commands}
+\def\tc@tmp@packdate{2022/09/01}
+\def\tc@tmp@packversion{1.0}
+\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
+
+%%%%%%%%%%%%%%%%%%%%%
+%%% Packages Loading
+%%%%%%%%%%%%%%%%%%%%%
+
+\RequirePackage{newfloat}
+\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 %
+}%
+
+
+%
+%%%%\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}%%
+
+
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-ppc.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-ppc.sty
new file mode 100644
index 0000000000..ac25899438
--- /dev/null
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-ppc.sty
@@ -0,0 +1,501 @@
+%%%==============================================================================
+%% Copyright 2022 by Alceu Frigeri
+%%
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status “maintained”.
+%%
+%% The Current Maintainer of this work is Alceu Frigeri
+%%
+%% This is version 1.0 (2022/09/01)
+%%
+%%
+%% This work consists of the files
+%%
+%% ufrgscca.cls main class (bundle)
+%%
+%% ufrgscca-abnt.sty abnt page geometry, and chapter/sectioning/etc. settings
+%% ufrgscca-core.sty core macros (students related data, advisor, work title, etc.)
+%% ufrgscca-cover.sty cover pages macros
+%% ufrgscca-lists.sty New float environments (for code listing, for instance)
+%% ufrgscca-gen.sty a switch/case macro construct and
+%% 'macro factory', for instance to create commands used in the .def files.
+%% ufrgscca-forms.sty forms creation macros (course specific)
+%% ufrgscca-coord.sty student work coordenation related macros (course specific)
+%% ufrgscca-ppc.sty ppc specific macros (ppc stands for Course Pedagogic Project)
+%% ufrgscca-curr.sty curricula specific macros (as a set of semesters and class dependency lists)
+%% ufrgscca-curr-tab.sty curricula tabular macros (to display the curricula as tables)
+%% ufrgscca-curr-graph.sty curricula graph macros (to display the curricula as a dependency graph)
+%%
+%% ufrgscca-en-base.def locale, English, base def's (for babel)
+%% ufrgscca-en-core.def locale, English, for -core.sty
+%% ufrgscca-en-forms.def locale, English, for -forms.sty
+%% ufrgscca-en-coord.def locale, English, for -coord.sty
+%%
+%% ufrgscca-ptBR-base.def locale, Portuguese, base def`s (for babel)
+%% ufrgscca-ptBR-core.def locale, Portuguese, for -core.sty
+%% ufrgscca-ptBR-forms.def locale, Portuguese, for -forms.sty
+%% ufrgscca-ptBR-coord.def locale, Portuguese, for -coord.sty
+%%
+%% README.md quick introduction
+%%
+%% ufrgscca.tex LaTeX documentation
+%% ufrgscca.pdf documentation in PDF form
+%%
+%% 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-ppc}
+\def\tc@tmp@altpackname{ufrgsccappc}
+\def\tc@tmp@packdesc{UFRGS/CCA PPC commands}
+\def\tc@tmp@packdate{2022/09/01}
+\def\tc@tmp@packversion{1.0}
+\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
+
+\RequirePackage{longtable}
+\RequirePackage{pdfcomment}
+\WarningFilter{latex}{name}%
+\RequirePackage[tikz]{mdframed}%
+\RequirePackage{ufrgscca-abnt}
+%\RequirePackage{ufrgscca-curr}
+\RequirePackage{ufrgscca-curr-tab}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+% PPC macros
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%
+%% pre-defined status:
+% noref (default, still not in the text)
+% tbd (to be done)
+% review (in review, probably done)
+% attention (to be looked at)
+% done (done)
+% NSA (not relevant)
+% * (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}
+}
+
+%
+%\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}%
+}
+%
+\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%
+}%
+\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{\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][]{%
+ \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}\\
+ }}
+
+
+\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}
+%
+
+\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{\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}{}
+\RenewDocumentCommand{\part}{m}{}
+%
+%Se alguém é capaz de me convencer e me evidenciar que o que penso
+%ou faço não é correto, será com contentamento que me corrigirei; afinal,
+%procuro a verdade, a qual jamais causou danos a alguém. Aquele, porém,
+%que persevera no engano e na ignorância causa danos a si mesmo.
+
+%Observa com olho crítico seus princípios norteadores e os indivíduos
+%sensatos, tanto aquilo de que se esquivam como aquilo que buscam.
+
+%Prestei algum benefício à comunidade? Se o fiz, então prestei um
+%benefício a mim. Em todas as ocasiões tem isso sempre em mente e em lugar
+%algum deixes de abrigar esse pensamento.
+
+%%Caso ajas conforme a reta razão com referência ao que se coloca
+%diante de ti, com seriedade, firmeza, benevolência, não admitindo que nada
+%secundário te desvie de tua ação, mas conservando pura a divindade que
+%existe em ti, como se devesses restituí-la de imediato; caso te vincules a isso,
+%sem nada esperar nem fugir de nada, contente com tua atividade presente
+%conforme a natureza, a dizer e murmurar em todo som emitido de tua boca
+%uma verdade heroica, então viverás feliz. E não existe ninguém com o poder
+%de impedi-lo.
+
+%Se tu mesmo não consegues com teu esforço realizar algo, não penses
+%ser isso impossível para o ser humano; se, entretanto, algo é possível ao ser
+%humano e lhe é próprio, pensa que isso a ti também é acessível.
+
+
+%É indispensável ter compreensão, atentando para cada palavra, daquilo
+%que se diz, e sobre cada ação, deve-se ter compreensão do seu efeito. Nesse
+%caso, é necessário ver diretamente a relação do ponto de vista de sua meta,
+%ou melhor, a qual meta a ação se relaciona; quanto ao outro caso, é preciso
+%observar o significado das palavras.
+
+%Como és uma parte que ajuda a tornar um sistema social completo,
+%faz toda ação tua ser uma parte integrante completa da vida social. Assim,
+%qualquer ação tua que não tenha referência imediata ou remotamente ao fim
+%social produz em tua vida uma ruptura violenta, impedindo que seja íntegra,
+%e é de caráter sedicioso \ No newline at end of file
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-base.def b/macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-base.def
new file mode 100644
index 0000000000..5456330673
--- /dev/null
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-base.def
@@ -0,0 +1,95 @@
+%%%==============================================================================
+%% Copyright 2022 by Alceu Frigeri
+%%
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status “maintained”.
+%%
+%% The Current Maintainer of this work is Alceu Frigeri
+%%
+%% This is version 1.0 (2022/09/01)
+%%
+%%
+%% This work consists of the files
+%%
+%% ufrgscca.cls main class (bundle)
+%%
+%% ufrgscca-abnt.sty abnt page geometry, and chapter/sectioning/etc. settings
+%% ufrgscca-core.sty core macros (students related data, advisor, work title, etc.)
+%% ufrgscca-cover.sty cover pages macros
+%% ufrgscca-lists.sty New float environments (for code listing, for instance)
+%% ufrgscca-gen.sty a switch/case macro construct and
+%% 'macro factory', for instance to create commands used in the .def files.
+%% ufrgscca-forms.sty forms creation macros (course specific)
+%% ufrgscca-coord.sty student work coordenation related macros (course specific)
+%% ufrgscca-ppc.sty ppc specific macros (ppc stands for Course Pedagogic Project)
+%% ufrgscca-curr.sty curricula specific macros (as a set of semesters and class dependency lists)
+%% ufrgscca-curr-tab.sty curricula tabular macros (to display the curricula as tables)
+%% ufrgscca-curr-graph.sty curricula graph macros (to display the curricula as a dependency graph)
+%%
+%% ufrgscca-en-base.def locale, English, base def's (for babel)
+%% ufrgscca-en-core.def locale, English, for -core.sty
+%% ufrgscca-en-forms.def locale, English, for -forms.sty
+%% ufrgscca-en-coord.def locale, English, for -coord.sty
+%%
+%% ufrgscca-ptBR-base.def locale, Portuguese, base def`s (for babel)
+%% ufrgscca-ptBR-core.def locale, Portuguese, for -core.sty
+%% ufrgscca-ptBR-forms.def locale, Portuguese, for -forms.sty
+%% ufrgscca-ptBR-coord.def locale, Portuguese, for -coord.sty
+%%
+%% README.md quick introduction
+%%
+%% ufrgscca.tex LaTeX documentation
+%% ufrgscca.pdf documentation in PDF form
+%%
+%% 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-base}
+\def\tc@tmp@altpackname{ufrgsccaptbrbase}
+\def\tc@tmp@packdesc{UFRGS/CCA Portuguese base defs}
+\def\tc@tmp@packdate{2022/09/01}
+\def\tc@tmp@packversion{1.0}
+\let\@exp\expandafter
+\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion}
+
+%%%
+%%
+%% those are loaded, on the fly, when selecting, or switching, to portuguese (\@namedef{captionsbrazilian} vis-à-viz \begin{otherlanguage}{})
+%%
+%%%%%
+
+ \def\abstractname{Resumo}%
+ \def\englishabstractname{Abstract}%
+ \def\contentsname{Sum{\'{a}}rio}%
+ \def\listfigurename{Lista de Ilustra\c{c}\~oes}%
+ \def\listtablename{Lista de Tabelas}%
+ \def\figurename{Figura}%
+ \def\tablename{Tabela}%
+ \def\byname{por}%
+ \def\keywordsname{Palavras-chave}%
+
+ \def\listabbrvname{Lista de Abreviaturas}%
+ \def\listsymbolname{Lista de S{\'{\i}}mbolos}%
+
+ \def\listingname{Listagem}
+ \def\listlistingname{Lista de Listagens}
+
+ \def\defappendixname{Ap{\^{e}}ndice}%
+ \def\defappendixpagename{Ap{\^{e}}ndices}%
+ \def\defannexname{Anexo}%
+ \def\defannexpagename{Anexos}%
+ \def\sourcename{Fonte:}
+ \def\notename{Nota}%%
+
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-coord.def b/macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-coord.def
new file mode 100644
index 0000000000..6d27b761fa
--- /dev/null
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-coord.def
@@ -0,0 +1,129 @@
+%%%==============================================================================
+%% Copyright 2022 by Alceu Frigeri
+%%
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status “maintained”.
+%%
+%% The Current Maintainer of this work is Alceu Frigeri
+%%
+%% This is version 1.0 (2022/09/01)
+%%
+%%
+%% This work consists of the files
+%%
+%% ufrgscca.cls main class (bundle)
+%%
+%% ufrgscca-abnt.sty abnt page geometry, and chapter/sectioning/etc. settings
+%% ufrgscca-core.sty core macros (students related data, advisor, work title, etc.)
+%% ufrgscca-cover.sty cover pages macros
+%% ufrgscca-lists.sty New float environments (for code listing, for instance)
+%% ufrgscca-gen.sty a switch/case macro construct and
+%% 'macro factory', for instance to create commands used in the .def files.
+%% ufrgscca-forms.sty forms creation macros (course specific)
+%% ufrgscca-coord.sty student work coordenation related macros (course specific)
+%% ufrgscca-ppc.sty ppc specific macros (ppc stands for Course Pedagogic Project)
+%% ufrgscca-curr.sty curricula specific macros (as a set of semesters and class dependency lists)
+%% ufrgscca-curr-tab.sty curricula tabular macros (to display the curricula as tables)
+%% ufrgscca-curr-graph.sty curricula graph macros (to display the curricula as a dependency graph)
+%%
+%% ufrgscca-en-base.def locale, English, base def's (for babel)
+%% ufrgscca-en-core.def locale, English, for -core.sty
+%% ufrgscca-en-forms.def locale, English, for -forms.sty
+%% ufrgscca-en-coord.def locale, English, for -coord.sty
+%%
+%% ufrgscca-ptBR-base.def locale, Portuguese, base def`s (for babel)
+%% ufrgscca-ptBR-core.def locale, Portuguese, for -core.sty
+%% ufrgscca-ptBR-forms.def locale, Portuguese, for -forms.sty
+%% ufrgscca-ptBR-coord.def locale, Portuguese, for -coord.sty
+%%
+%% README.md quick introduction
+%%
+%% ufrgscca.tex LaTeX documentation
+%% ufrgscca.pdf documentation in PDF form
+%%
+%% 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{2022/09/01}
+\def\tc@tmp@packversion{1.0}
+\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\ }
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-core.def b/macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-core.def
new file mode 100644
index 0000000000..0ef6373d13
--- /dev/null
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-core.def
@@ -0,0 +1,101 @@
+%%%==============================================================================
+%% Copyright 2022 by Alceu Frigeri
+%%
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status “maintained”.
+%%
+%% The Current Maintainer of this work is Alceu Frigeri
+%%
+%% This is version 1.0 (2022/09/01)
+%%
+%%
+%% This work consists of the files
+%%
+%% ufrgscca.cls main class (bundle)
+%%
+%% ufrgscca-abnt.sty abnt page geometry, and chapter/sectioning/etc. settings
+%% ufrgscca-core.sty core macros (students related data, advisor, work title, etc.)
+%% ufrgscca-cover.sty cover pages macros
+%% ufrgscca-lists.sty New float environments (for code listing, for instance)
+%% ufrgscca-gen.sty a switch/case macro construct and
+%% 'macro factory', for instance to create commands used in the .def files.
+%% ufrgscca-forms.sty forms creation macros (course specific)
+%% ufrgscca-coord.sty student work coordenation related macros (course specific)
+%% ufrgscca-ppc.sty ppc specific macros (ppc stands for Course Pedagogic Project)
+%% ufrgscca-curr.sty curricula specific macros (as a set of semesters and class dependency lists)
+%% ufrgscca-curr-tab.sty curricula tabular macros (to display the curricula as tables)
+%% ufrgscca-curr-graph.sty curricula graph macros (to display the curricula as a dependency graph)
+%%
+%% ufrgscca-en-base.def locale, English, base def's (for babel)
+%% ufrgscca-en-core.def locale, English, for -core.sty
+%% ufrgscca-en-forms.def locale, English, for -forms.sty
+%% ufrgscca-en-coord.def locale, English, for -coord.sty
+%%
+%% ufrgscca-ptBR-base.def locale, Portuguese, base def`s (for babel)
+%% ufrgscca-ptBR-core.def locale, Portuguese, for -core.sty
+%% ufrgscca-ptBR-forms.def locale, Portuguese, for -forms.sty
+%% ufrgscca-ptBR-coord.def locale, Portuguese, for -coord.sty
+%%
+%% README.md quick introduction
+%%
+%% ufrgscca.tex LaTeX documentation
+%% ufrgscca.pdf documentation in PDF form
+%%
+%% 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{2022/09/01}
+\def\tc@tmp@packversion{1.0}
+\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}}%
+\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}}
+
+
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-forms.def b/macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-forms.def
new file mode 100644
index 0000000000..e8967788f0
--- /dev/null
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-forms.def
@@ -0,0 +1,215 @@
+%%%==============================================================================
+%% Copyright 2022 by Alceu Frigeri
+%%
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status “maintained”.
+%%
+%% The Current Maintainer of this work is Alceu Frigeri
+%%
+%% This is version 1.0 (2022/09/01)
+%%
+%%
+%% This work consists of the files
+%%
+%% ufrgscca.cls main class (bundle)
+%%
+%% ufrgscca-abnt.sty abnt page geometry, and chapter/sectioning/etc. settings
+%% ufrgscca-core.sty core macros (students related data, advisor, work title, etc.)
+%% ufrgscca-cover.sty cover pages macros
+%% ufrgscca-lists.sty New float environments (for code listing, for instance)
+%% ufrgscca-gen.sty a switch/case macro construct and
+%% 'macro factory', for instance to create commands used in the .def files.
+%% ufrgscca-forms.sty forms creation macros (course specific)
+%% ufrgscca-coord.sty student work coordenation related macros (course specific)
+%% ufrgscca-ppc.sty ppc specific macros (ppc stands for Course Pedagogic Project)
+%% ufrgscca-curr.sty curricula specific macros (as a set of semesters and class dependency lists)
+%% ufrgscca-curr-tab.sty curricula tabular macros (to display the curricula as tables)
+%% ufrgscca-curr-graph.sty curricula graph macros (to display the curricula as a dependency graph)
+%%
+%% ufrgscca-en-base.def locale, English, base def's (for babel)
+%% ufrgscca-en-core.def locale, English, for -core.sty
+%% ufrgscca-en-forms.def locale, English, for -forms.sty
+%% ufrgscca-en-coord.def locale, English, for -coord.sty
+%%
+%% ufrgscca-ptBR-base.def locale, Portuguese, base def`s (for babel)
+%% ufrgscca-ptBR-core.def locale, Portuguese, for -core.sty
+%% ufrgscca-ptBR-forms.def locale, Portuguese, for -forms.sty
+%% ufrgscca-ptBR-coord.def locale, Portuguese, for -coord.sty
+%%
+%% README.md quick introduction
+%%
+%% ufrgscca.tex LaTeX documentation
+%% ufrgscca.pdf documentation in PDF form
+%%
+%% 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{2022/09/01}
+\def\tc@tmp@packversion{1.0}
+\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.cls b/macros/latex/contrib/ufrgscca/latex/ufrgscca.cls
new file mode 100644
index 0000000000..5686f2fcce
--- /dev/null
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca.cls
@@ -0,0 +1,211 @@
+%%%==============================================================================
+%% Copyright 2022 by Alceu Frigeri
+%%
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status “maintained”.
+%%
+%% The Current Maintainer of this work is Alceu Frigeri
+%%
+%% This is version 1.0 (2022/09/01)
+%%
+%%
+%% This work consists of the files
+%%
+%% ufrgscca.cls main class (bundle)
+%%
+%% ufrgscca-abnt.sty abnt page geometry, and chapter/sectioning/etc. settings
+%% ufrgscca-core.sty core macros (students related data, advisor, work title, etc.)
+%% ufrgscca-cover.sty cover pages macros
+%% ufrgscca-lists.sty New float environments (for code listing, for instance)
+%% ufrgscca-gen.sty a switch/case macro construct and
+%% 'macro factory', for instance to create commands used in the .def files.
+%% ufrgscca-forms.sty forms creation macros (course specific)
+%% ufrgscca-coord.sty student work coordenation related macros (course specific)
+%% ufrgscca-ppc.sty ppc specific macros (ppc stands for Course Pedagogic Project)
+%% ufrgscca-curr.sty curricula specific macros (as a set of semesters and class dependency lists)
+%% ufrgscca-curr-tab.sty curricula tabular macros (to display the curricula as tables)
+%% ufrgscca-curr-graph.sty curricula graph macros (to display the curricula as a dependency graph)
+%%
+%% ufrgscca-en-base.def locale, English, base def's (for babel)
+%% ufrgscca-en-core.def locale, English, for -core.sty
+%% ufrgscca-en-forms.def locale, English, for -forms.sty
+%% ufrgscca-en-coord.def locale, English, for -coord.sty
+%%
+%% ufrgscca-ptBR-base.def locale, Portuguese, base def`s (for babel)
+%% ufrgscca-ptBR-core.def locale, Portuguese, for -core.sty
+%% ufrgscca-ptBR-forms.def locale, Portuguese, for -forms.sty
+%% ufrgscca-ptBR-coord.def locale, Portuguese, for -coord.sty
+%%
+%% README.md quick introduction
+%%
+%% ufrgscca.tex LaTeX documentation
+%% ufrgscca.pdf documentation in PDF form
+%%
+%% 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}
+\def\tc@tmp@altpackname{ufrgscca}
+\def\tc@tmp@packdesc{UFRGS/CCA class}
+\def\tc@tmp@packdate{2022/09/01}
+\def\tc@tmp@packversion{1.0}
+\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{etex}
+\RequirePackage{etoolbox}
+\RequirePackage{lmodern}%
+
+\RequirePackage[T1]{fontenc}
+\RequirePackage[utf8]{inputenc}
+
+%==============================================================================
+% 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},
+ 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}},
+
+ texlive.usage = load,
+ texlive.if = tcif@texlive,
+ overleaf.usage = load,
+ overleaf.if = tcif@overleaf,
+ miktex.usage = load,
+ miktex.if = tcif@miktex,
+
+ dctools.usage = load,
+ dctools.if = tcif@dctools,
+}
+
+\DeclareUnknownKeyHandler[tc]{\PassOptionsToClass{\CurrentOption}{report}}
+\ProcessKeyOptions[tc]\relax
+
+\iftcif@dctools
+ \LoadClass[12pt]{article}
+\else
+ \LoadClass[12pt,twoside,openright]{report}
+\fi
+
+%%%%%%%%%%%%%%%%%%%%%
+%%% Packages Loading
+%%%%%%%%%%%%%%%%%%%%%
+\RequirePackage{silence}%
+\if@nofontwarning%
+ \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
+
+\RequirePackage{ufrgscca-gen}
+\RequirePackage{ufrgscca-cover}
+\RequirePackage{ufrgscca-core}
+
+
+\iftc@xpacks
+ \RequirePackage{relsize}
+ \RequirePackage{keyval,graphicx}
+ \RequirePackage{mathtools}
+ \RequirePackage{empheq}
+ \RequirePackage{mathrsfs, amsfonts,amssymb}%
+ \RequirePackage{amsthm}%
+ \RequirePackage{extarrows}%
+ \RequirePackage{mathfixs}%
+ \RequirePackage{bigdelim}%
+ \RequirePackage[american,siunitx,cuteinductors,smartlabels,arrowmos,EFvoltages,betterproportions]{circuitikz}%
+ \usetikzlibrary{fit}%
+ \usetikzlibrary{math}%
+ \usetikzlibrary{calc}%
+ \usetikzlibrary{shapes.geometric} %needed for the triangle%
+ \usetikzlibrary{shapes.misc} %needed for the triangle%
+ \usetikzlibrary{shapes.multipart}
+ \usetikzlibrary{graphs}%
+ \usetikzlibrary{3d}%
+ \usetikzlibrary{positioning}%
+ \usetikzlibrary{shadows}%
+ \usetikzlibrary{babel}
+ \RequirePackage{steinmetz}%
+\fi
+
+
+\WarningFilter{hyperref}{Option `pdftex' has already}
+
+\RequirePackage[hidelinks,hypertexnames=false]{hyperref}%
+%%
+%% A few (hyperref related) commands
+%%
+\NewDocumentCommand{\autonameref}{O{, }mO{\space}}{\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}
+
+
+\iftcif@english%
+ \input{ufrgscca-en-core.def}%
+\else%
+ \input{ufrgscca-ptBR-core.def}%
+\fi%
+
+
+\iftcif@nolocal%
+\else%
+ \IfFileExists{local.tex}{\input{local.tex}}{}%
+ \tccore@emptyfields%
+\fi
+
+