%%%============================================================================== %% 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{formssignaturelabel,examinersignature,boardsignature,advisorsignature,coadvisorsignature} \cmdfactory{studentsignature,studentsignaturegen}% \cmdfactory{formsstudentlabel,formsstudentlabelgen,formproflabel}% \cmdfactory{formsboardlabel,formsadvisorlabel,formsadvisorlabelgen}% \cmdfactory{formscoadvisorlabel,formsexaminerlabel,formsaltexaminerlabel} \cmdfactory{formstimelabel,formsworktitlelabel,formstemptitlelabel} \cmdfactory{formsstudentIDlabel,formsemaillabel,formsphonelabel} \cmdfactory{agreelabel,continuelabel} \cmdfactory{formsdatelabel,formstitle,formsfootnote} \cmdfactory{renewreqformtitle,renewreqformnotes,reqformtitle,reqformopening,reqformdesc}% \cmdfactory{coadvisorformtitle,coadvisorformdesc} \cmdfactory{formsbrieflabel,formsstudentemaillabel,formsadvisoremaillabel} \cmdfactory{formsreasonlabel} \cmdfactory{examformtitle,examformdesc,examformnoteslabel} \cmdfactory{examformnotes,examboardformtitle,examboardformdesc}% \cmdfactory{formsboardtitle,advisorapprovalformtitle,advisorapprovalformdesc,advisorapprovalformdescB} \cmdfactory{rectifyapprovalformtitle,rectifyapprovalformdesc}% \cmdfactory{receiptformtitle,receiptformfootnote,receiptformdesc}% \cmdfactory{reviewformtitle,reviewformdesc,reviewformfootnoteB,reviewformfootnote} \cmdfactory{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{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}% }