diff options
author | Norbert Preining <norbert@preining.info> | 2023-11-25 03:03:12 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2023-11-25 03:03:12 +0000 |
commit | ad976e54f48605a66054bc56e945dabc425c956a (patch) | |
tree | f3905ec1ab486d1cf12b064887e311f2ea10bebf /macros/latex/contrib/ufrgscca/latex | |
parent | ac5a5e57a4c9b3c436c3bac327fe885acea28ba4 (diff) |
CTAN sync 202311250303
Diffstat (limited to 'macros/latex/contrib/ufrgscca/latex')
26 files changed, 5634 insertions, 5136 deletions
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-abnt.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-abnt.sty index 5077416b1a..eba4667270 100644 --- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-abnt.sty +++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-abnt.sty @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version 1.12 (2023/09/23) +%% This is version {2.0} {2023/11/23} %% %% The list of files that compose this work can be found in the README.md file at %% https://ctan.org/pkg/ufrgscca @@ -23,73 +23,127 @@ %% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym) %%%============================================================================== \NeedsTeXFormat{LaTeX2e}[2022/06/01] -\def\tc@tmp@packname{ufrgscca-abnt} -\def\tc@tmp@altpackname{ufrgsccaabnt} -\def\tc@tmp@packdesc{UFRGS/CCA ABNT layout} -\def\tc@tmp@packdate{2023/09/23} -\def\tc@tmp@packversion{1.12} -\let\@exp\expandafter -\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion} -\@exp\@exp\@exp\ProvidesPackage\@exp\@exp\@exp{\@exp\tc@tmp@packname\@exp}\@exp[\tc@tmp@packdate\space v\tc@tmp@packversion\space\tc@tmp@packdesc] - -\def\tc@tocdepth{3} % Table of Contents depth -\def\tc@secdepth{4} % Sectioning numbers depth (3 -> subsubsection) - -\DeclareKeys[ufrgscca-abnt]{ - strict-abnt.usage = load, - strict-abnt.if = tcif@strictabnt, - - pretextontoc.usage = load, - pretextontoc.if = tcif@pretextontoc, - - yearsonly.usage = load, - yearsonly.if = tcif@yearsonly, - - - chapternopagenum.usage = load, - chapternopagenum.if = tcif@chapternopagenum, - - english.usage = load, - english.if = tcif@english, - relnum.usage = load, - relnum.if = tcif@relnum, - repeatfields.usage = load, - repeatfields.if = tcif@repeatfields, - - showframes.usage = load, - showframes.if = tcif@showframes, - showlabels.usage = load, - showlabels.if = tcif@showlabels, - - tocdepth.usage = load, - tocdepth.store = \tc@tocdepth, - secdepth.usage = load, - secdepth.store = \tc@secdepth, - - nomicrotype.usage = load, - nomicrotype.if = tcif@nomicrotype, - - article.usage = load, - article.if = tcif@article, -} -\ProcessKeyOptions[ufrgscca-abnt]\relax + +\ProvidesExplPackage + {ufrgscca-abnt} + {2023/11/23} + {2.0} + {UFRGS/CCA ABNT layout} + + +%%%%%%% +%%% +%%% Just an attempt of having my packages info in a regular way +%%% Idea being: { <pck-name> / pkg info } for each and all. +%%% +%%%%%%% +\keys_define:nn { ufrgscca-abnt / pkg info} + { + name .code:n = {ufrgscca-abnt} , + prefix .code:n = {ufrgscca} , + date .code:n = {2023/11/23}, + version .code:n = {2.0} , + description .code:n = {UFRGS/CCA~ abnt~layout} + } +\cs_if_exist:NF \__codedesc_pkg_info:nn + { + \cs_new_protected:Npn \__codedesc_pkg_info:nn #1#2 + { \keys_set:nn {#1 / pkg info}{#2} } + } +\cs_if_exist:NF \PkgInfo + { \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} } } +\cs_if_exist:NF \PkgDescription + { + \NewDocumentCommand \PkgDescription {m} + { + \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par + } + } +%%%%%%% +%%% End of cut-n-paste +%%%%%%% + + + +\keys_define:nn { ufrgscca.abnt } + { + strict-abnt .usage:n = load , + strict-abnt .bool_set:N = \l__ufrgscca_strictabnt_bool , + + pretextontoc .usage:n = load , + pretextontoc .bool_set:N = \l__ufrgscca_pretextontoc_bool , + + yearsonly .usage:n = load , + yearsonly .bool_set:N = \l__ufrgscca_yearsonly_bool , + + chapternopagenum .usage:n = load , + chapternopagenum .bool_set:N = \l__ufrgscca_chapternopagenum_bool , + +% english .usage:n = load , +% english .bool_set:N = \l__ufrgscca_english_bool , + + relnum .usage:n = load , + relnum .bool_set:N = \l__ufrgscca_relnum_bool , + + repeatfields .usage:n = load , + repeatfields .bool_set:N = \l__ufrgscca_repeatfields_bool , + + showframes .usage:n = load , + showframes .bool_set:N = \l__ufrgscca_showframes_bool , + + showlabels .usage:n = load , + showlabels .bool_set:N = \l__ufrgscca_showlabels_bool , + + tocdepth .usage:n = load , + tocdepth .tl_set:N = \l__ufrgscca_tocdepth_tl , + + secdepth .usage:n = load , + secdepth .tl_set:N = \l__ufrgscca_secdepth_tl , + + nomicrotype .usage:n = load , + nomicrotype .bool_set:N = \l__ufrgscca_nomicrotype_bool , + + article .usage:n = load , + article .bool_set:N = \l__ufrgscca_article_bool , + } + +\tl_set:Nn \l__ufrgscca_tocdepth_tl {3} +\tl_set:Nn \l__ufrgscca_secdepth_tl {4} + +\ProcessKeyOptions[ufrgscca.abnt]\relax + + + %%%%%%%%%%%%%%%%%%%%% %%% Packages Loading %%%%%%%%%%%%%%%%%%%%% -\RequirePackage[english,brazilian]{babel}% see ufrgscca.cls in case of newtx* being loaded! +\bool_if:NTF \l__ufrgscca_english_bool + { + \RequirePackage[brazilian,english]{babel}% see ufrgscca.cls in case of newtx* being loaded! + %\addto\extraenglish{\input{ufrgscca-base-en.def}} + \AtBeginDocument{\selectlanguage{english}\input{ufrgscca-base-en.def}}% + } + { + \RequirePackage[english,brazilian]{babel}% see ufrgscca.cls in case of newtx* being loaded! + %\addto\extrabrazilian{\input{ufrgscca-base-ptBR.def}} + \AtBeginDocument{\selectlanguage{brazilian}\input{ufrgscca-base-ptBR.def}}% + } + + \RequirePackage{csquotes}% -\iftcif@strictabnt - \RequirePackage[a4paper,inner=2cm,outer=3cm,top=3cm,bottom=2cm,twoside]{geometry} -\else - \iftcif@nogeometry -% \RequirePackage[a4paper,margin=5cm,right=2cm,marginparwidth=3.75cm,asymmetric,top=2.5cm,bottom=1.5cm]{geometry} - \else - \RequirePackage[a4paper,inner=2.5cm,outer=2.5cm,top=3cm,bottom=2cm,twoside]{geometry} - \fi -\fi +\bool_if:NTF \l__ufrgscca_strictabnt_bool + { + \RequirePackage[a4paper,inner=2cm,outer=3cm,top=3cm,bottom=2cm,twoside]{geometry} + } + { + \bool_if:NF \l__ufrgscca_nogeometry_bool + { + \RequirePackage[a4paper,inner=2.5cm,outer=2.5cm,top=3cm,bottom=2cm,twoside]{geometry} + } + } \RequirePackage[toc,page,title]{appendix} \RequirePackage[pagestyles,clearempty]{titlesec} @@ -98,9 +152,16 @@ \RequirePackage{chngcntr} -\def\tc@captionwidth{0.75\textwidth} -\def\tc@notewidth{0.635\textwidth} %% 0.84666667\tc@captionwidth -\RequirePackage[position=above,font=small,labelfont=bf,textfont=md,textfont+=sl,width=\tc@captionwidth]{caption}% + +% +% using Expl3 +\SetConsts{% + caption.width = 0.75\textwidth , + note.width = 0.635\textwidth , +} + +\RequirePackage[position=above,font=small,labelfont=bf,textfont=md,textfont+=sl,width=\UseConst{caption.width}]{caption}% + %%% %%% commands for 'floats' %%% @@ -108,7 +169,19 @@ \NewDocumentCommand{\sourcecitation}{m}{{\small{\sourcename\ #1}}}% % \newlength{\noteindent}%%auxiliary length -\NewDocumentCommand{\note}{O{}+m}{{\footnotesize\settowidth{\noteindent}{\notename#1:}\addtolength{\noteindent}{3pt}\begin{center}\begin{minipage}{\tc@notewidth}{\parindent=-\the\noteindent\notename#1:\hspace{2.9pt}#2}\end{minipage}\end{center}}}%% +\NewDocumentCommand{\note}{O{}+m} + { + { + \footnotesize + \settowidth{\noteindent}{\notename#1:} + \addtolength{\noteindent}{3pt} + \begin{center} + \begin{minipage}{\UseConst{note.width}} + { \parindent=-\the\noteindent\notename#1:\hspace{2.9pt}#2 } + \end{minipage} + \end{center} + } + }%% % % @@ -133,32 +206,32 @@ %%%%%%%%%%%%%%%%%%%%% \WarningFilter{biblatex}{File 'brazilian-abnt-abnt.lbx'}% \WarningFilter{biblatex}{Conflicting options}% -\iftcif@repeatfields% - \RequirePackage[backend=biber,style=abnt,pretty,giveninits,extrayear,repeatfields]{biblatex}% -\else% - \RequirePackage[backend=biber,style=abnt,pretty,giveninits,extrayear]{biblatex}% -\fi% + +\bool_if:NTF \l__ufrgscca_repeatfields_bool + { + \RequirePackage[backend=biber,style=abnt,pretty,giveninits,extrayear,repeatfields]{biblatex}% + } + { + \RequirePackage[backend=biber,style=abnt,pretty,giveninits,extrayear]{biblatex}% + } + + %% -%%% -%%% Language selection {package babel} -%%% -\iftcif@english%% - \selectlanguage{english}% - \AtBeginDocument{\selectlanguage{english}}% -\else - \selectlanguage{brazilian}% - \AtBeginDocument{\selectlanguage{brazilian}}% -\fi% + %%% %%% typeset adjusting {package microtype} %%% -\iftcif@timesroman\else% -\iftcif@nomicrotype\else\RequirePackage[tracking,kerning,spacing,babel]{microtype}\fi% -\fi -%\iftcif@nomicrotype\else\RequirePackage[babel]{microtype}\fi% -% +\bool_if:NF \l__ufrgscca_timesroman_bool + { + \bool_if:NF \l__ufrgscca_nomicrotype_bool + { + \RequirePackage[tracking,kerning,spacing,babel]{microtype} + } + } + + % pdftex native protruding % \pdfprotrudechars=2 @@ -171,51 +244,71 @@ \RequirePackage{soul} -\iftcif@showframes% - \RequirePackage{showframe}%% -\fi -%% -\iftcif@showlabels% - \RequirePackage{showlabels}%% - \showlabels{cite}%% - \showlabels{textcite}%% - \RenewDocumentCommand{\showlabelfont}{}{\tiny\ttfamily\color{blue}}%% -\fi%% +\bool_if:NT \l__ufrgscca_showframes_bool + { + \RequirePackage{showframe} + } +\bool_if:NT \l__ufrgscca_showlabels_bool + { + \RequirePackage{showlabels} + \showlabels{cite} + \showlabels{textcite} + \RenewDocumentCommand{\showlabelfont}{}{\tiny\ttfamily\color{blue}} + } + + %%% %%% ToC and Headings format. {package titlesec/titletoc/titleps} %%% -\setcounter{tocdepth}{\tc@tocdepth} % Table of Contents depth -\setcounter{secnumdepth}{\tc@secdepth} % Sectioning numbers depth (3 -> subsubsection) - -\NewDocumentEnvironment{tocless}{}% - {\setcounter{secnumdepth}{-1}\addtocontents{toc}{\protect\setcounter{tocdepth}{-1}\ignorespaces}}% - {\setcounter{secnumdepth}{\tc@secdepth}\addtocontents{toc}{\protect\setcounter{tocdepth}{\tc@tocdepth}\ignorespaces}}% +\setcounter{tocdepth}{\l__ufrgscca_tocdepth_tl} % Table of Contents depth +\setcounter{secnumdepth}{\l__ufrgscca_secdepth_tl} % Sectioning numbers depth (3 -> subsubsection) + +\NewDocumentEnvironment{tocless}{} + { + \setcounter{secnumdepth}{-1} + \addtocontents{toc}{\protect\setcounter{tocdepth}{-1}\ignorespaces} + } + { + \setcounter{secnumdepth}{\l__ufrgscca_secdepth_tl} + \addtocontents{toc}{\protect\setcounter{tocdepth}{\l__ufrgscca_tocdepth_tl}\ignorespaces} + } + \def\notoc#1#2{\begin{tocless}#1{#2}\end{tocless}} -\NewDocumentEnvironment{numberless}{}{\setcounter{secnumdepth}{-1}}{\setcounter{secnumdepth}{\tc@secdepth}} + +\NewDocumentEnvironment{numberless}{} + { + \setcounter{secnumdepth}{-1} + } + { + \setcounter{secnumdepth}{\l__ufrgscca_secdepth_tl} + } + \def\nonum#1#2{\begin{numberless}#1{#2}\end{numberless}} + + %%% %%% Relative/Absolute numbering... argh !!! %%% - \def\tc@chapterspc{\vspace{2.5mm}} - \def\tc@sectionspc{\vspace{0.75mm}} -\iftcif@article -\else -\iftcif@relnum% -% \def\tc@chapterspc{\vspace{2.5mm}} -% \def\tc@sectionspc{\vspace{0.75mm}} -\else% -% \def\tc@chapterspc{} -% \def\tc@sectionspc{} - \patchcmd{\@chapter}{\addtocontents{lof}{\protect\addvspace{10\p@}}}{}{}{{PATCH FAILED}}% LoF ... to supress extra space (figures of diverse chapters) - \patchcmd{\@chapter}{\addtocontents{lot}{\protect\addvspace{10\p@}}}{}{}{{PATCH FAILED}}% LoT -\fi -\fi + \def\l__ufrgscca_chapter_spacing_tl{\vspace{2.5mm}} + \def\l__ufrgscca_section_spacing_tl{\vspace{0.75mm}} + + +\makeatletter +\bool_if:NF \l__ufrgscca_article_bool + { + \bool_if:NF \l__ufrgscca_relnum_bool + { + \patchcmd{\@chapter}{\addtocontents{lof}{\protect\addvspace{10\p@}}}{}{}{{PATCH ~FAILED}}% LoF ... to supress extra space (figures of diverse chapters) + \patchcmd{\@chapter}{\addtocontents{lot}{\protect\addvspace{10\p@}}}{}{}{{PATCH ~FAILED}}% LoT + } + } + %%% @@ -224,120 +317,277 @@ \def\tc@lblmargin{22mm} \contentsmargin{2.2em} \def\tc@dotspacing{0.5pc} -\titlecontents{chapter}[\tc@lblmargin]{\tc@chapterspc\normalfont\scshape\selectfont}{\contentslabel{\tc@lblmargin}}{\hspace{-\tc@lblmargin}}{\titlerule*[\tc@dotspacing]{.}\normalsize\normalfont\contentspage} -\titlecontents{section}[\tc@lblmargin]{\tc@sectionspc}{\contentslabel{\tc@lblmargin}}{\hspace{-\tc@lblmargin}}{\titlerule*[\tc@dotspacing]{.}\contentspage} -\dottedcontents{subsection}[\tc@lblmargin]{}{\tc@lblmargin}{\tc@dotspacing} +%%%\def\tc@lblmargin{22mm} +%%%\contentsmargin{2.2em} +%%%\def\tc@dotspacing{0.5pc} + + +\titlecontents{chapter}[\tc@lblmargin] + {\l__ufrgscca_chapter_spacing_tl\normalfont\scshape\selectfont} + {\contentslabel{\tc@lblmargin}} + {\hspace{-\tc@lblmargin}} + {\titlerule*[\tc@dotspacing]{.}\normalsize\normalfont\contentspage} + +\titlecontents{section}[\tc@lblmargin] + {\l__ufrgscca_section_spacing_tl} + {\contentslabel{\tc@lblmargin}} + {\hspace{-\tc@lblmargin}} + {\titlerule*[\tc@dotspacing]{.}\contentspage} + +\dottedcontents{subsection}[\tc@lblmargin] + {} + {\tc@lblmargin} + {\tc@dotspacing} + +\dottedcontents{subsubsection}[\tc@lblmargin] + {} + {\tc@lblmargin} + {\tc@dotspacing} + +\dottedcontents{figure}[\tc@lblmargin] + {} + {\tc@lblmargin} + {\tc@dotspacing} + +\dottedcontents{table}[\tc@lblmargin] + {} + {\tc@lblmargin} + {\tc@dotspacing} + + -\dottedcontents{subsubsection}[\tc@lblmargin]{}{\tc@lblmargin}{\tc@dotspacing} -\dottedcontents{figure}[\tc@lblmargin]{}{\tc@lblmargin}{\tc@dotspacing} -\dottedcontents{table}[\tc@lblmargin]{}{\tc@lblmargin}{\tc@dotspacing} \renewcommand{\restoreapp}{} % to reset appendix counters each time (from appendix doc) -\RenewDocumentEnvironment{appendix}{O{\defappendixpagename}O{\defappendixname}}{% - \titleformat{\chapter}{\bfseries\Large\sffamily}{#2 \thechapter\hspace{1.5ex}-}{2ex}{\MakeUppercase}% - \titlecontents{chapter}[\tc@lblmargin]{\vspace{3mm}\sc}{\hspace{-\tc@lblmargin}{#2~\thecontentslabel\ -\enspace}}{\hspace{-\tc@lblmargin}}{\titlerule*[\tc@dotspacing]{.}\normalsize\normalfont\contentspage} - \def\appendixname{#2}% - \def\appendixpagename{#1}% - \def\appendixtocname{#1}% +\RenewDocumentEnvironment{appendix}{O{\defappendixpagename}O{\defappendixname}} + { + \titleformat{\chapter} + {\bfseries\Large\sffamily} + {#2~ \thechapter\hspace{1.5ex}-} + {2ex} + {\MakeUppercase}% + \titlecontents{chapter}[\tc@lblmargin] + {\vspace{3mm}\sc} + {\hspace{-\tc@lblmargin}{#2\ ~\thecontentslabel\ ~ -\enspace}} + {\hspace{-\tc@lblmargin}} + {\titlerule*[\tc@dotspacing]{.}\normalsize\normalfont\contentspage} + \def\appendixname{#2}% + \def\appendixpagename{#1}% + \def\appendixtocname{#1}% \begin{appendices}% - \let\tc@appendixautorefname@tmp\appendixautorefname - \def\appendixautorefname{#2} - }% - {\let\appendixautorefname\tc@appendixautorefname@tmp\end{appendices}} - -\NewDocumentEnvironment{annex}{O{\defannexpagename}O{\defannexname}}{\begin{appendix}[#1][#2]}{\end{appendix}} + \let\tc@appendixautorefname@tmp\appendixautorefname + \def\appendixautorefname{#2} + } + { + \let\appendixautorefname\tc@appendixautorefname@tmp + \end{appendices} + } -%%% -%%% Headings definitions {package titlesec} -%%% -%\RenewDocumentCommand{\thechapter}{}{\arabic{chapter}} -\titleformat{\chapter}{\sffamily\bfseries\selectfont\Large}{\thechapter}{2ex}{\MakeUppercase} -\titleformat{name=\chapter,numberless}{\sffamily\bfseries\selectfont\Large\center}{}{0pt}{\MakeUppercase} -\titlespacing{\chapter}{0pt}{\tc@chapbefore}{\tc@chapafter} +\NewDocumentEnvironment{annex}{O{\defannexpagename}O{\defannexname}} + {\begin{appendix}[#1][#2]} + {\end{appendix}} -%\def\tc@chapbefore{18pt plus 3pt minus 6pt} -%\def\tc@chapafter{9pt plus 3pt minus 3pt} -%\def\tc@secbefore{12pt plus 6pt minus 3pt} -%\def\tc@secafter{6pt plus 2pt minus 2pt} -\def\tc@chapbefore{70pt plus 12pt minus 8pt} -\def\tc@chapafter{36pt plus 8pt minus 8pt} -\def\tc@secbefore{27pt plus 6pt minus 6pt} -\def\tc@secafter{18pt plus 4pt minus 4pt} +\makeatother -\titleformat{\section}[hang]{\normalfont\scshape\selectfont\large}{\thesection}{.5em}{} -\titlespacing{\section}{0pt}{\tc@secbefore}{\tc@secafter} -\titleformat{name=\section,numberless}[hang]{\normalfont\large\bfseries\scshape\selectfont\center}{}{0pt}{} -\titlespacing{name=\section,numberless}{0pt}{\tc@secbefore}{\tc@secafter} -\titleformat{\subsection}[hang]{\normalfont\sffamily\bfseries\slshape\selectfont}{\thesubsection}{.5em}{} -\titlespacing{\subsection}{0pt}{\tc@secbefore}{\tc@secafter} +%%% +%%% Headings definitions {package titlesec} +%%% +%%%%\def\tc@chapbefore{70pt plus 12pt minus 8pt} +%%%%\def\tc@chapafter{36pt plus 8pt minus 8pt} +%%%%\def\tc@secbefore{27pt plus 6pt minus 6pt} +%%%%\def\tc@secafter{18pt plus 4pt minus 4pt} -\titleformat{\subsubsection}[hang]{\normalfont\sffamily\slshape\selectfont}{\thesubsubsection}{.5em}{} -\titlespacing{\subsubsection}{0pt}{\tc@secbefore}{\tc@secafter} +\def\l__ufrgscca_chapter_before_skip{70pt plus 12pt minus 8pt} +\def\l__ufrgscca_chapter_after_skip{36pt plus 8pt minus 8pt} +\def\l__ufrgscca_section_before_skip{27pt plus 6pt minus 6pt} +\def\l__ufrgscca_section_after_skip{18pt plus 4pt minus 4pt} -\titleformat{\paragraph}[hang]{\normalfont\sffamily\selectfont}{\theparagraph}{.5em}{\tightul} -\titlespacing{\paragraph}{0pt}{\tc@secbefore}{\tc@secafter} -\titleformat{\subparagraph}[hang]{\normalfont\sffamily\selectfont}{\thesubparagraph}{.5em}{\tightul} -\titlespacing{\subparagraph}{0pt}{\tc@secbefore}{\tc@secafter} +%\RenewDocumentCommand{\thechapter}{}{\arabic{chapter}} +\titleformat{\chapter} + {\sffamily\bfseries\selectfont\Large} + {\thechapter} + {2ex} + {\MakeUppercase} + +\titleformat{name=\chapter,numberless} + {\sffamily\bfseries\selectfont\Large\center} + {} + {0pt} + {\MakeUppercase} + +\titlespacing{\chapter} + {0pt} + {\l__ufrgscca_chapter_before_skip} + {\l__ufrgscca_chapter_after_skip} + +%\def\l__ufrgscca_chapter_before_skip{18pt plus 3pt minus 6pt} +%\def\l__ufrgscca_chapter_after_skip{9pt plus 3pt minus 3pt} +%\def\l__ufrgscca_section_before_skip{12pt plus 6pt minus 3pt} +%\def\l__ufrgscca_section_after_skip{6pt plus 2pt minus 2pt} + + +\titleformat{\section}[hang] + {\normalfont\scshape\selectfont\large} + {\thesection} + {.5em} + {} + +\titlespacing{\section} + {0pt} + {\l__ufrgscca_section_before_skip} + {\l__ufrgscca_section_after_skip} + +\titleformat{name=\section,numberless}[hang] + {\normalfont\large\bfseries\scshape\selectfont\center} + {} + {0pt} + {} + +\titlespacing{name=\section,numberless} + {0pt} + {\l__ufrgscca_section_before_skip} + {\l__ufrgscca_section_after_skip} + +\titleformat{\subsection}[hang] + {\normalfont\sffamily\bfseries\slshape\selectfont} + {\thesubsection} + {.5em} + {} + +\titlespacing{\subsection} + {0pt} + {\l__ufrgscca_section_before_skip} + {\l__ufrgscca_section_after_skip} + +\titleformat{\subsubsection}[hang] + {\normalfont\sffamily\slshape\selectfont} + {\thesubsubsection} + {.5em} + {} + +\titlespacing{\subsubsection} + {0pt} + {\l__ufrgscca_section_before_skip} + {\l__ufrgscca_section_after_skip} + +\titleformat{\paragraph}[hang] + {\normalfont\sffamily\selectfont} + {\theparagraph} + {.5em} + {\tightul} + +\titlespacing{\paragraph} + {0pt} + {\l__ufrgscca_section_before_skip} + {\l__ufrgscca_section_after_skip} + +\titleformat{\subparagraph}[hang] + {\normalfont\sffamily\selectfont} + {\thesubparagraph} + {.5em} + {\tightul} + +\titlespacing{\subparagraph} + {0pt} + {\l__ufrgscca_section_before_skip} + {\l__ufrgscca_section_after_skip} %%% %%% Relative/Absolute counters... {package chngcntr} %%% -\iftcif@article -\else -\iftcif@relnum% - \counterwithin{figure}{chapter}% - \counterwithin{table}{chapter}% - \counterwithin{equation}{chapter}% -\else% - \counterwithout{figure}{chapter}% - \counterwithout{table}{chapter}% - \counterwithout{equation}{chapter}% - %\meaning\@chapter - %\patchcmd{\@chapter}{\addtocontents{lof}{\protect\addvspace{10\p@}}}{}{}{{PATCH FAILED}}% LoF - %\patchcmd{\@chapter}{\addtocontents{lot}{\protect\addvspace{10\p@}}}{}{}{{PATCH FAILED}}% LoT -\fi -\fi +\bool_if:NF \l__ufrgscca_article_bool + { + \bool_if:NTF \l__ufrgscca_relnum_bool + { + \counterwithin{figure}{chapter} + \counterwithin{table}{chapter} + \counterwithin{equation}{chapter} + } + { + \counterwithout{figure}{chapter} + \counterwithout{table}{chapter} + \counterwithout{equation}{chapter} + } + } + + + %%% %%% Page Heading format {titlesec/titleps} %%% -\renewpagestyle{plain}{\sethead[\ifthechapter{\sffamily\thepage}{}][][]{}{}{\ifthechapter{\sffamily\thepage}{}}} -\newpagestyle{main}{\sethead[\ifthechapter{\sffamily\thepage}{}][][]{}{}{\ifthechapter{\sffamily\thepage}{}}} -\newpagestyle{bibliography}{\sethead[\sffamily\thepage][][]{}{}{\sffamily\thepage}} +\renewpagestyle{plain} + { + \sethead[\ifthechapter{\sffamily\thepage}{}] [] [] + {} + {} + { + \ifthechapter{\sffamily\thepage} + {} + } + } + +\newpagestyle{main} + { + \sethead[\ifthechapter{\sffamily\thepage}{}] [] [] + {} + {} + { + \ifthechapter{\sffamily\thepage} + {} + } + } + +\newpagestyle{bibliography} + { + \sethead[\sffamily\thepage] [] [] + {} + {} + { + \sffamily\thepage + } + } + \pagestyle{main} -\iftcif@chapternopagenum\renewpagestyle{plain}{\sethead[][][]{}{}{}}\fi -\let\tc@temp@printbibliography\printbibliography +\bool_if:NF \l__ufrgscca_chapternopagenum_bool + { + \renewpagestyle{plain}{\sethead[][][]{}{}{}} + } + +%%\iftcif@chapternopagenum\renewpagestyle{plain}{\sethead[][][]{}{}{}}\fi + +%% ???? +%\let\tc@temp@printbibliography\printbibliography \defbibheading{bibliography}[\refname]{\nonum\chapter{#1}\pagestyle{bibliography}} -\iftcif@pretextontoc - \let\tc@temp@listoffigures\listoffigures - \def\listoffigures{\tc@temp@listoffigures\addcontentsline{toc}{chapter}{\textsc\listfigurename}} -%% - \let\tc@temp@listoftables\listoftables - \def\listoftables{\tc@temp@listoftables\addcontentsline{toc}{chapter}{\textsc\listtablename}} -\fi -%% +\bool_if:NT \l__ufrgscca_pretextontoc_bool + { + \gappto{\listoffigures}{\addcontentsline{toc}{chapter}{\textsc\listfigurename}} + \gappto{\listoftables}{\addcontentsline{toc}{chapter}{\textsc\listtablename}} + } -\newlength{\tc@lblwidth} + +\newlength{\l__ufrgscca_label_width_dim} \NewDocumentCommand{\NewChapListEnv}{mm}{ \NewDocumentEnvironment{#1}{O{}m}{% - \settowidth{\tc@lblwidth}{##2***}% - \iftcif@pretextontoc - \nonum\chapter{\textsc{#2}}% - \else - \notoc\chapter{\textsc{#2}}% - \fi - \begin{description}[tcc,noindent,leftmargin=\tc@lblwidth,labelwidth=!,##1]% + \settowidth{\l__ufrgscca_label_width_dim}{##2***}% + \bool_if:NTF \l__ufrgscca_pretextontoc_bool + { + \nonum\chapter{\textsc{#2}} + } + { + \notoc\chapter{\textsc{#2}} + } + \begin{description}[tcc,noindent,leftmargin=\l__ufrgscca_label_width_dim,labelwidth=!,##1]% }{\end{description}} } @@ -349,25 +599,32 @@ %%% lists formating {package enumitem} %%% -\def\tc@enumbase{6mm} -\def\tc@enummarging{12mm} -\def\tc@enummargingB{18mm} -\def\tc@enumlabelsep{2.5mm} -\setlength{\parindent}{\tc@enummarging} + +\def\l__ufrgscca_enum_base_dim{6mm} +\def\l__ufrgscca_enum_margin_dim{12mm} +\def\l__ufrgscca_enum_margin_dimB{18mm} +\def\l__ufrgscca_enum_label_sep_dim{2.5mm} +\setlength{\parindent}{\l__ufrgscca_enum_margin_dim} \SetEnumitemValue{label}{arabic}{\arabic*.} \SetEnumitemValue{label}{roman}{\roman*.} \SetEnumitemValue{label}{alpha}{\alph*.} \SetEnumitemValue{label}{bullet}{\hfill\textopenbullet} -\SetEnumitemKey{ppc}{leftmargin=\tc@enummarging,labelindent=\tc@enumbase,labelsep=\tc@enumlabelsep,labelwidth=!,style=nextline} -\SetEnumitemKey{tcc}{leftmargin=\tc@enummarging,labelindent=\tc@enumbase,labelsep=\tc@enumlabelsep,labelwidth=!,style=nextline} +\SetEnumitemKey{ppc} + {leftmargin=\l__ufrgscca_enum_margin_dim,labelindent=\l__ufrgscca_enum_base_dim,labelsep=\l__ufrgscca_enum_label_sep_dim,labelwidth=!,style=nextline} +\SetEnumitemKey{tcc} + {leftmargin=\l__ufrgscca_enum_margin_dim,labelindent=\l__ufrgscca_enum_base_dim,labelsep=\l__ufrgscca_enum_label_sep_dim,labelwidth=!,style=nextline} % -\SetEnumitemKey{parindent}{leftmargin=\tc@enummargingB,labelindent=\tc@enummarging,labelwidth=!} -\SetEnumitemKey{noindent}{labelindent=0pt,labelwidth=!} -\SetEnumitemKey{tight}{leftmargin=0pt,listparindent=5mm,labelwidth=5mm} +\SetEnumitemKey{parindent} + {leftmargin=\l__ufrgscca_enum_margin_dimB,labelindent=\l__ufrgscca_enum_margin_dim,labelwidth=!} +\SetEnumitemKey{noindent} + {labelindent=0pt,labelwidth=!} +\SetEnumitemKey{tight} + {leftmargin=0pt,listparindent=5mm,labelwidth=5mm} % -\SetEnumitemKey{miditemsep}{parsep=0ex,itemsep=0.4ex} +\SetEnumitemKey{miditemsep} + {parsep=0ex,itemsep=0.4ex} %\SetEnumitemKey{ppctight}{leftmargin=0pt,listparindent=5mm,labelwidth=5mm} @@ -414,98 +671,157 @@ %%% %%% keyword command definition (for abstract) %%% -\newcounter{tc@kwcounter}% -\NewDocumentCommand{\keyword}{m}{%% - \stepcounter{tc@kwcounter}%% - \expandafter\gdef\csname keyw\alph{tc@kwcounter}\endcsname{#1}%% -}% -\NewDocumentCommand{\tcabnt@abstractkw}{}{%% - \@ifundefined{keywa}{}{\expandafter\MakeUppercase\keywa}%% - \@ifundefined{keywb}{}{, \keywb}%% - \@ifundefined{keywc}{}{, \keywc}%% - \@ifundefined{keywd}{}{, \keywd}% - \@ifundefined{keywe}{}{, \keywe}% - \@ifundefined{keywf}{}{, \keywf}% - \@ifundefined{keywg}{}{, \keywg}% - \@ifundefined{keywh}{}{, \keywh}% - \@ifundefined{keywi}{}{, \keywi}% - \@ifundefined{keywj}{}{, \keywj}% -}% -\let\tc@org@abstract\abstract -\let\tc@org@endabstract\endabstract +\seq_new:N \l__ufrgscca_keywords_seq +\seq_new:N \l__ufrgscca_other_keywords_seq +\seq_new:N \l__ufrgscca_keywords_tmpa_seq +\seq_new:N \l__ufrgscca_keywords_tmpb_seq + +\NewDocumentCommand{\mainkeywords}{m} + { + \seq_set_from_clist:Nn \l__ufrgscca_keywords_tmpa_seq {#1} + \seq_set_eq:NN \l__ufrgscca_keywords_tmpb_seq \l__ufrgscca_keywords_seq + \seq_gconcat:NNN \l__ufrgscca_keywords_seq \l__ufrgscca_keywords_tmpb_seq \l__ufrgscca_keywords_tmpa_seq + } +\let\keyword\mainkeywords + +\NewDocumentCommand{\lstkeywords}{O{,~ }} + { + \seq_sort:Nn \l__ufrgscca_keywords_seq + { + \str_compare:nNnTF { ##1 } > { ##2 } + { \sort_return_swapped: } + { \sort_return_same: } + } + \seq_use:Nn \l__ufrgscca_keywords_seq {#1} + } + +\NewDocumentCommand{\otherkeywords}{m} + { + \seq_set_from_clist:Nn \l__ufrgscca_keywords_tmpa_seq {#1} + \seq_set_eq:NN \l__ufrgscca_keywords_tmpb_seq \l__ufrgscca_other_keywords_seq + \seq_gconcat:NNN \l__ufrgscca_other_keywords_seq \l__ufrgscca_keywords_tmpb_seq \l__ufrgscca_keywords_tmpa_seq + } + +\NewDocumentCommand{\lstotherkeywords}{O{,~ }} + { + \seq_sort:Nn \l__ufrgscca_other_keywords_seq + { + \str_compare:nNnTF { ##1 } > { ##2 } + { \sort_return_swapped: } + { \sort_return_same: } + } + \seq_use:Nn \l__ufrgscca_other_keywords_seq {#1} + } + + +\bool_if:NTF \l__ufrgscca_oldrenews_bool + { + \RenewDocumentEnvironment{abstract}{} + { + \notoc\chapter{\abstractname} + } + { + \par\vspace{2ex} + \noindent\textbf{\keywordsname :\ ~} \lstkeywords + } + } + { + \NewDocumentEnvironment{mainabstract}{} + { + \notoc\chapter{\abstractname} + } + { + \par\vspace{2ex} + \noindent\textbf{\keywordsname :\ ~} \lstkeywords + } + } + +\NewDocumentEnvironment{otherabstract}{O{english}} + { + \begin{otherlanguage}{#1} + \notoc\chapter{\abstractname} + } + { + \par\vspace{2ex} + \noindent\textbf{\keywordsname :\ ~} \lstotherkeywords + \end{otherlanguage}% + } -\RenewDocumentEnvironment{abstract}{}{%% - \notoc\chapter{\abstractname}% -}{%% - \par\vspace{2ex} %\vfill% - \noindent\textbf{\keywordsname:} \tcabnt@abstractkw.% -}% -\NewDocumentEnvironment{otherabstract}{O{english}m}{%% - \gdef\tc@otherkeywords{#2}%% - \begin{otherlanguage}{#1}% - \notoc\chapter{\abstractname}% -}{% - \par\vspace{2ex} %\vfill% - \noindent\textbf{\keywordsname:} \tc@otherkeywords.% - \end{otherlanguage}% -}% +%% +%% if needed to be, double side. +%% +\cs_new_protected:Npn \__ufrgscca_clearpage: + { + \if@openright + \cleardoublepage + \else + \clearpage + \fi + } +% +\bool_if:NTF \l__ufrgscca_yearsonly_bool + { + \SetConsts + { + publ.date = {\UseConst{publ.year}} , + publ.monthyear = {\UseConst{publ.month} ~ - ~ \UseConst{publ.year}} , + } + } + { + \SetConsts + { + publ.date = {\UseConst{publ.month} ~ - ~ \UseConst{publ.year}} , + publ.monthyear = {\UseConst{publ.month} ~ - ~ \UseConst{publ.year}} , + } + } %==============================================================================% % date redefinition (separated month and year) %==============================================================================% \RenewDocumentCommand{\date}{O{\number\day}mm}{% - \gdef\tc@publmonth{#2}% - \gdef\tc@publyear{#3}% - \gdef\tc@publday{\ifnum #1<10 0\fi #1}% + \int_compare:nNnTF {#1} < {10} + { + \SetConsts{% + publ.month = {#2} , + publ.year = {#3} , + publ.day = {0#1} , + } + } + { + \SetConsts{% + publ.month = {#2} , + publ.year = {#3} , + publ.day = {#1} , + } + } }% \date{\monthname}{\number\year}% -%for english% -\@namedef{captionsenglish}{%% - \input{ufrgscca-en-base.def}%% -}% -\@namedef{dateenglish}{%% - \def\today{\monthname\space\number\day,\space\number\year}%% - \def\monthname{%% - \ifcase\month\or%% - January\or February\or March\or April\or%% - May\or June\or July\or August\or September\or%% - October\or November\or December%% - \fi%% - }%% - \iftcif@yearsonly - \def\tc@date{\tc@publyear}%% - \else - \def\tc@date{\tc@publmonth~\tc@publyear}%% - \fi -}% -% -%para portugues% -\@namedef{captionsbrazilian}{%% - \input{ufrgscca-ptBR-base.def}%% -}% -\@namedef{datebrazilian}{%% - \def\today{\number\day\space de\space\monthname\space de\space\number\year}%% - \def\monthname{%% - \ifcase\month\or%% - Janeiro\or Fevereiro\or Março\or Abril\or%% - Maio\or Junho\or Julho\or Agosto\or Setembro\or%% - Outubro\or Novembro\or Dezembro%% - \fi%% - }%% - \iftcif@yearsonly - \def\tc@date{\tc@publyear}%% - \else - \def\tc@date{\tc@publmonth~\tc@publyear}%% - \fi -}% -% -\def\tc@monthyeardate{\tc@publmonth~\tc@publyear} -% -% Mainly for 'cover pages' -\def\tc@pagebreak{\if@openright\cleardoublepage\else\clearpage\fi} + +\bool_if:NTF \l__ufrgscca_english_bool + { + \def\today{\monthname\space\number\day,\space\number\year} + \def\monthname{ + \ifcase\month\or + January\or February\or March\or April\or + May\or June\or July\or August\or September\or + October\or November\or December + \fi + } + } + { + \def\today{\number\day\space de\space\monthname\space de\space\number\year} + \def\monthname{ + \ifcase\month\or + Janeiro\or Fevereiro\or Março\or Abril\or + Maio\or Junho\or Julho\or Agosto\or Setembro\or + Outubro\or Novembro\or Dezembro + \fi + } + } + diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-en-base.def b/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-en.def index ce18bafac4..014860c78f 100644 --- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-en-base.def +++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-en.def @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version 1.12 (2023/09/23) +%% This is version {2.0} {2023/11/23} %% %% The list of files that compose this work can be found in the README.md file at %% https://ctan.org/pkg/ufrgscca @@ -22,14 +22,7 @@ %% EE stands for "Engineering School" %% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym) %%%============================================================================== -\makeatletter -\def\tc@tmp@packname{ufrgscca-en-base} -\def\tc@tmp@altpackname{ufrgsccaenbase} -\def\tc@tmp@packdesc{UFRGS/CCA English base defs} -\def\tc@tmp@packdate{2023/09/23} -\def\tc@tmp@packversion{1.12} -\let\@exp\expandafter -\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion} + %%%%% %% @@ -39,6 +32,8 @@ % \def\bibname{References}% deprecated by biber % \def\refname{\bibname} +% \setlocalecaption{english}{refname}{References} + \defbibheading{bibliography}[References]{\nonum\chapter{#1}\pagestyle{bibliography}} \def\abstractname{Abstract}% \def\englishabstractname{Abstract}% \def\contentsname{Contents}% diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-base.def b/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-ptBR.def index 54ac2f8edd..8854c1ded8 100644 --- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-base.def +++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-ptBR.def @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version 1.12 (2023/09/23) +%% This is version {2.0} {2023/11/23} %% %% The list of files that compose this work can be found in the README.md file at %% https://ctan.org/pkg/ufrgscca @@ -22,14 +22,7 @@ %% EE stands for "Engineering School" %% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym) %%%============================================================================== -\makeatletter -\def\tc@tmp@packname{ufrgscca-ptBR-base} -\def\tc@tmp@altpackname{ufrgsccaptbrbase} -\def\tc@tmp@packdesc{UFRGS/CCA Portuguese base defs} -\def\tc@tmp@packdate{2023/09/23} -\def\tc@tmp@packversion{1.12} -\let\@exp\expandafter -\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion} + %%% %% diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-coord.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-coord.sty index 55e754d97e..ffb88727a4 100644 --- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-coord.sty +++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-coord.sty @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version 1.12 (2023/09/23) +%% This is version {2.0} {2023/11/23} %% %% The list of files that compose this work can be found in the README.md file at %% https://ctan.org/pkg/ufrgscca @@ -23,1186 +23,593 @@ %% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym) %%%============================================================================== \NeedsTeXFormat{LaTeX2e}[2022/06/01] -\def\tc@tmp@packname{ufrgscca-coord} -\def\tc@tmp@altpackname{ufrgsccacoord} -\def\tc@tmp@packdesc{UFRGS/CCA coord commands} -\def\tc@tmp@packdate{2023/09/23} -\def\tc@tmp@packversion{1.12} -\let\@exp\expandafter -\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion} -\@exp\@exp\@exp\ProvidesPackage\@exp\@exp\@exp{\@exp\tc@tmp@packname\@exp}\@exp[\tc@tmp@packdate\space v\tc@tmp@packversion\space\tc@tmp@packdesc] - -\newif\iftcif@coord@emptyforms\tcif@coord@emptyformsfalse -\DeclareKeys[ufrgscca-coord]{ - calendar-I.usage = general, - calendar-I.if = tcif@coord@calendarI, - calendar-II.usage = general, - calendar-II.if = tcif@coord@calendarII, - checklist.usage = general, - checklist.if = tcif@coord@checklist, - report.usage = general, - report.if = tcif@coord@report, - report-II.usage = general, - report-II.if = tcif@coord@report, - report-I.usage = general, - report-I.if = tcif@coord@reportI, - reportxinfo.usage = general, - reportxinfo.if = tcif@coord@reportxinfo, - boards.usage = general, - boards.if = tcif@coord@boards, - boarddates.usage = general, - boarddates.if = tcif@coord@boarddates, - studentlist.usage = general, - studentlist.if = tcif@coord@studentlist, - revforms.usage = general, - revforms.if = tcif@coord@forms@revforms, - referral-I.usage = general, - referral-I.if = tcif@coord@forms@referralI, - referral-II.usage = general, - referral-II.if = tcif@coord@forms@referralII, - referral.usage = general, - referral.if = tcif@coord@forms@referralII, - cocertificate.usage = general, - cocertificate.if = tcif@coord@forms@cocertificate, -} -\ProcessKeyOptions[ufrgscca-coord]\relax -\NewDocumentCommand{\setreports}{m}{\SetKeys[ufrgscca-coord]{#1}} +\ProvidesExplPackage + {ufrgscca-coord} + {2023/11/23} + {2.0} + {UFRGS/CCA coord commands} + + +%%%%%%% +%%% +%%% Just an attempt of having my packages info in a regular way +%%% Idea being: { <pck-name> / pkg info } for each and all. +%%% +%%%%%%% +\keys_define:nn { ufrgscca-coord / pkg info} + { + name .code:n = {ufrgscca-coord} , + prefix .code:n = {ufrgscca} , + date .code:n = {2023/11/23}, + version .code:n = {2.0} , + description .code:n = {UFRGS/CCA~ coordination~ report~ commands} + } +\cs_if_exist:NF \__codedesc_pkg_info:nn + { + \cs_new_protected:Npn \__codedesc_pkg_info:nn #1#2 + { \keys_set:nn {#1 / pkg info}{#2} } + } +\cs_if_exist:NF \PkgInfo + { \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} } } +\cs_if_exist:NF \PkgDescription + { + \NewDocumentCommand \PkgDescription {m} + { + \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par + } + } +%%%%%%% +%%% End of cut-n-paste +%%%%%%% + + + + +\cs_generate_variant:Nn \tl_set:Nn {Ne} + +\keys_define:nn { ufrgscca / coord } + { + calendar-I. bool_set:N = \l__ufrgscca_calendarI_bool , + calendar-I. usage:n = general , + + calendar-II. bool_set:N = \l__ufrgscca_calendarII_bool , + calendar-II. usage:n = general , + + report-I. bool_set:N = \l__ufrgscca_reportI_bool , + report-I. usage:n = general , + + report-II. bool_set:N = \l__ufrgscca_reportII_bool , + report-II. usage:n = general , + + checklist-I. bool_set:N = \l__ufrgscca_checklistI_bool , + checklist-I. usage:n = general , + + checklist-II. bool_set:N = \l__ufrgscca_checklistII_bool , + checklist-II. usage:n = general , + + boards. bool_set:N = \l__ufrgscca_boards_bool , + boards. usage:n = general , + + revforms-I. bool_set:N = \l__ufrgscca_revformsI_bool , + revforms-I. usage:n = general , + + revforms-II. bool_set:N = \l__ufrgscca_revformsII_bool , + revforms-II. usage:n = general , + + referral-I. bool_set:N = \l__ufrgscca_referralI_bool , + referral-I. usage:n = general , + + referral-II. bool_set:N = \l__ufrgscca_referralII_bool , + referral-II. usage:n = general , + + cocertificate. bool_set:N = \l__ufrgscca_cocertificate_bool , + cocertificate. usage:n = general , + } + +\cs_new_protected:Npn \__ufrgscca_set_reports:n #1 + { \keys_set:nn { ufrgscca / coord }{#1} } + \def\c@one#1:#2:{\csname #1\endcsname} \def\c@two#1:#2:{\csname #1\endcsname[newpage]} \def\tccoord@split#1:#2:#3#4#5,{#4#1:#2:} \NewDocumentCommand{\tccoord@student@exec}{m}{\tccoord@split#1::\c@two\c@one\empty,} \RequirePackage{longtable} -\RequirePackage{ufrgscca-gen} +\RequirePackage{multirow} + \RequirePackage{ufrgscca-core} \RequirePackage{ufrgscca-forms} -\RequirePackage{pgfcalendar} - -%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%% -\cmdfactory<coord>{boardstitle} -\cmdfactory<coord>{boardsworklabel} -\cmdfactory<coord>{TCCgradesNlabel,TCCgradesClabel}% - -\cmdfactory<coord>{calendartitle,tcccalendardesc}% -\cmdfactory<coord>{tccreporttitle,tccreportopening,tccreportdesc,tccreportabsents,tccreportdismiss}% -\cmdfactory<coord>{tccreferralopening} -\cmdfactory<coord>{referralfailed,referralapproved} -\cmdfactory<coord>{referralfailFF} -\cmdfactory<coord>{referralexamapprovedtext,referralexamfailtext,referralfatetext}% -\cmdfactory<coord>{referralexamapprovedtextTR,referralexamfailtextTR,referralfatetextTR}% -\cmdfactory<coord>{boardlabel,cocertificatetitle,cocertificateopenning,cocertificatetext}% -\cmdfactory<coord>{TCCperiod,boardstitleB,boardsOBS}% -\cmdfactory<coord>{studentlistformtitle,studentlistactivity,studentlistdate}% - -\cmdfactory<coord>{advisornamegen,advisornameplural} -\cmdfactory<coord>{tcceventAweek,tcceventBweek,tcceventCweek,tcceventDweek} -\cmdfactory<coord>{tcceventEweek,tcceventFweek,tcceventGweek,tcceventHweek} -\cmdfactory<coord>{tcceventIweek,tcceventJweek,tcceventKweek,tcceventLweek} - - -\cmdfactory<coord>{internshipreferralopening,internshipreferralfatetext,internshipgrades,internshipreferralfailFF} -\cmdfactory<coord>{internshipreferralexamapprovedtext,internshipreferralexamfailtext} -\cmdfactory<coord>{internshipreferralexamhardapprovedtext,internshipreferralexamhardfailtext} - - -%%% this should go to ufrgscca-coord !!!! - -\NewDocumentCommand{\grades}{mmmmm}{% - \gdef\tc@TCCgradeA{#1}% - \gdef\tc@TCCgradeB{#2}% - \gdef\tc@TCCgradeC{#3}% - \gdef\tc@TCCgradeD{#4}% - \gdef\tc@TCCgradeFF{#5}% - \gdef\tc@gradeA{#1}% - \gdef\tc@gradeB{#2}% - \gdef\tc@gradeC{#3}% - \gdef\tc@gradeD{#4}% - \gdef\tc@gradeFF{#5}% -}% -\let\TCCgrades\grades% -%%% this should go to ufrgscca-coord !!!! - -\NewDocumentCommand{\gradesN}{mmm}{% - \gdef\tc@TCCgradeAN{#1}% - \gdef\tc@TCCgradeBN{#2}% - \gdef\tc@TCCgradeCN{#3}% - \gdef\tc@gradeAN{#1}% - \gdef\tc@gradeBN{#2}% - \gdef\tc@gradeCN{#3}% -}% -\let\TCCgradesN\gradesN +%\RequirePackage{pgfcalendar} +% + +\NewDocumentCommand{\ActivitySetNewEvent}{O{}mm}{ + \tl_if_blank:nTF {#1} + { + \starray_new_term:nn {activity.calendar}{#2} + \starray_gset_prop:nnn {activity.calendar}{event}{#3} + } + { + \starray_new_term:nn {activity[#1].calendar}{#2} + \starray_gset_prop:nnn {activity[#1].calendar}{event}{#3} + } +} + +\NewDocumentCommand{\ActivitySetEventDay}{O{}mmm}{ + \tl_if_blank:nTF {#1} + { + \starray_gset_from_keyval:nn {activity.calendar[#2]} + { + date = {#3} , + week = {#4} , + } + } + { + \starray_gset_from_keyval:nn {activity[#1].calendar[#2]} + { + date = {#3} , + week = {#4} , + } + } +} -%%%%%%%%% -%%%%%%%%% ufrgscca-coord !!! -%%%%%%%%% -\NewDocumentCommand{\tccoord@studentExam}{m}{% - \expandafter\gdef\csname tc@student\Alph{tc@studentcount}Exam\endcsname{#1}% -}% -\NewDocumentCommand{\tccoord@studentFF}{}{% - \expandafter\gdef\csname tc@student\Alph{tc@studentcount}FF\endcsname{1}% - \gdef\tc@TCCff@flag{1}% - \gdef\tc@ff@flag{1}% -}% -\NewDocumentCommand{\tccoord@studentDismiss}{}{% - \expandafter\gdef\csname tc@student\Alph{tc@studentcount}Dismiss\endcsname{1}% - \gdef\tc@TCCdismiss@flag{1}% - \gdef\tc@dismiss@flag{1}% -}% -\NewDocumentCommand{\studentFate}{O{}}{%% - \ifthenelse{\equal{#1}{C}}{%% - \tccoord@studentExam{C}%% - }{%% - \ifthenelse{\equal{#1}{D}}{%% - \tccoord@studentExam{D}%% - }{%% - \ifthenelse{\equal{#1}{FF}}{%% - \tccoord@studentFF%% - }{%% - \ifthenelse{\equal{#1}{Dismiss}}{%% - \tccoord@studentDismiss%% - }{%% - }%% - }%% - }%% - }%% -}%% % +\NewDocumentCommand{\studentfate}{O{}}{%% + \str_case:nnF {#1} + { + {C} + { + \starray_gset_from_keyval:nn {student} + { + grade = C , + flag-exam = \c_true_bool , + flag-graded = \c_true_bool , + flag-approved = \c_true_bool , + } + } + {D} + { + \starray_gset_from_keyval:nn {student} + { + grade = D , + flag-exam = \c_true_bool , + flag-graded = \c_true_bool , + } + } + {FF} + { + \starray_gset_from_keyval:nn {student} + { + grade = FF , + flag-ff = \c_true_bool , + flag-graded = \c_true_bool , + } + } + {dismiss} + { + \starray_gset_from_keyval:nn {student} + { + flag-dismiss = \c_true_bool , + flag-graded = \c_true_bool , + } + } + {none} + { + \starray_gset_from_keyval:nn {student} + { + flag-dismiss = \c_true_bool , + flag-graded = \c_true_bool , + } + } + } + { %% in case of none of above... + \__ufrgscca_studentgrade: + } +}%% % -\NewDocumentCommand{\studenttimeslot}{O{}mm}{%% - \expandafter\gdef\csname tc@student\Alph{tc@studentcount}date\endcsname{#2}% - \expandafter\gdef\csname tc@student\Alph{tc@studentcount}time\endcsname{#3}% - \expandafter\gdef\csname tc@student\Alph{tc@studentcount}local\endcsname{#1}% -}% -\let\timeslot\studenttimeslot% +\tl_new:N \l__ufrgscca_tmpa_tl +\tl_new:N \l__ufrgscca_tmpb_tl +\tl_new:N \l__ufrgscca_tmpc_tl +\tl_new:N \l__ufrgscca_tmpd_tl +\cs_new_protected:Npn \__ufrgscca_studentgrade: + { + %(\DataFields{student}{name})\par + \starray_term_syntax:n {student.reviewer[1]} + \tl_set:Ne \l__ufrgscca_tmpa_tl {\starray_parsed_get_prop:n {grade}} + \starray_term_syntax:n {student.reviewer[2]} + \tl_set:Ne \l__ufrgscca_tmpb_tl {\starray_parsed_get_prop:n {grade}} + \starray_term_syntax:n {student.reviewer[3]} + \tl_set:Ne \l__ufrgscca_tmpc_tl {\starray_parsed_get_prop:n {grade}} + \int_case:nn {\starray_parsed_get_prop:n {gradetype}} + { + {1} + { + \tl_set:Ne \l__ufrgscca_tmpd_tl + {\fpeval{round(((\l__ufrgscca_tmpb_tl + \l__ufrgscca_tmpc_tl)/2),2,1)}} + } + {2} + { + \tl_set:Ne \l__ufrgscca_tmpd_tl + {\fpeval{round(((\l__ufrgscca_tmpa_tl + \l__ufrgscca_tmpb_tl + \l__ufrgscca_tmpc_tl)/3),2,1)}} + } + } + \starray_gset_prop:nne {student}{gradeavrg}{\l__ufrgscca_tmpd_tl} + \fp_compare:nNnTF {\l__ufrgscca_tmpd_tl} < {\UseConst{NgradeC}} + { % D + \starray_gset_prop:nnn {student}{grade}{D} + } + { + \fp_compare:nNnTF {\l__ufrgscca_tmpd_tl} < {\UseConst{NgradeB}} + { % C + \starray_gset_prop:nnn {student}{grade}{C} + \starray_gset_prop:nnn {student}{flag-approved}{\c_true_bool} + } + { + \fp_compare:nNnTF {\l__ufrgscca_tmpd_tl} < {\UseConst{NgradeA}} + { % B + \starray_gset_prop:nnn {student}{grade}{B} + \starray_gset_prop:nnn {student}{flag-approved}{\c_true_bool} + } + { % A + \starray_gset_prop:nnn {student}{grade}{A} + \starray_gset_prop:nnn {student}{flag-approved}{\c_true_bool} + } + } + } + + \starray_gset_prop:nnn {student}{flag-graded}{\c_true_bool} + } % -\NewDocumentCommand{\tccdate}{mm}{%% - \expandafter\gdef\csname date:#1\endcsname{#2}% +\NewDocumentCommand{\timeslot}{O{}mm}{%% + \starray_gset_from_keyval:nn {student} + { + board-local = #1 , + board-date = #2 , + board-time = #3 , + } }% % -%\def\c@one#1:#2:{\csname #1\endcsname} -%\def\c@two#1:#2:{\csname #1\endcsname[newpage]} -\NewDocumentCommand{\studentturnindate}{m}{\tccoord@studentdatesplit#1,} -%23/12/2022 -\def\tccoord@studentdatesplit#1/#2/#3,{ - \pgfcalendarifdate{#3-#2-#1}{at least=\tc@internshipcommitB+1}{\tccoord@studentFF}{} - \pgfcalendarifdate{#3-#2-#1}{between=\tc@internshipcommitA+1 and \tc@internshipcommitB}{\tccoord@studentExam{X}}{} - \expandafter\gdef\csname tc@student\Alph{tc@studentcount}date\endcsname{#1/#2/#3}% +\NewDocumentCommand{\studentCase}{mmmmm}{ + \starray_term_syntax:n{student} + \bool_case:nF + { + {\starray_parsed_get_prop:n{flag-ff}} + {#5} + {\starray_parsed_get_prop:n{flag-exam}} + { + \bool_if:nTF{\starray_parsed_get_prop:n{flag-approved}} + {#3} + {#4} + } + } + { + \bool_if:nTF{\starray_parsed_get_prop:n{flag-approved}} + {#1} + {#2} + } } -\NewDocumentCommand{\intershipcommitdates}{mm}{% - \tccoord@commitdatesplit#1,A,% - \tccoord@commitdatesplit#2,B,% -} -\def\tccoord@commitdatesplit#1/#2/#3,#4,{ - \expandafter\xdef\csname tc@internshipcommit#4\endcsname{#3-#2-#1}% - \expandafter\xdef\csname tc@internshipcommit#4#4\endcsname{#1/#2/#3}% +\NewDocumentCommand{\studentDismissCase}{mm}{ + \starray_term_syntax:n{student} + \bool_if:nTF {\starray_parsed_get_prop:n{flag-dismiss}} + {#1} + {#2} } -%%%%%%%%% -%%%%%%%%% ufrgscca-coord !?!! -%%%%%%%%% -\NewDocumentCommand{\studentTCCtitle}{m}{%% - \expandafter\gdef\csname tc@student\Alph{tc@studentcount}title\endcsname{#1}% -}% -\let\TCCtitle\studentTCCtitle% -% -%%%%%%%%% -%%%%%%%%% ufrgscca-coord !!! -%%%%%%%%% -\NewDocumentCommand{\studentremark}{m}{%% - \expandafter\gdef\csname tc@student\Alph{tc@studentcount}remark\endcsname{#1}% -}% -% - +\NewDocumentCommand{\studentremark}{m}{ + \starray_gset_prop:nnn {student}{remarks}{#1} +} -% -\NewDocumentCommand{\tccoord@checklist}{m}{\expandafter\gdef\csname tc@student\Alph{tc@studentcount}:#1\endcsname{}}% -\NewDocumentCommand{\checklist}{m}{\forcsvlist{\tccoord@checklist}{#1}}% -% -\NewDocumentCommand{\addtostudent}{mm}{\@ifundefined{#1}{}{\csappto{#1.hook}{#2}}} -% -\NewDocumentCommand{\checkedbox}{}{\ooalign{$\square$\cr\hidewidth\raise.3ex\hbox{$\checkmark\mkern-7mu$}\hidewidth\cr}}% -\NewDocumentCommand{\uncheckedbox}{}{$\square$}% -\NewDocumentCommand{\tccoord@@check}{mm}{\@ifundefined{tc@student#1:#2}{\uncheckedbox}{\checkedbox}}% -\NewDocumentCommand{\tccoord@check}{mm}{\@ifundefined{#2}{}{\tccoord@@check{#1}{\csname #2\endcsname} \csname @\csname #2\endcsname\endcsname}}% -\NewDocumentCommand{\checkdef}{mmm}{\expandafter\gdef\csname #1\endcsname{#2}\expandafter\gdef\csname @#2\endcsname{#3}}% -%\chekmark% - -%%%%% -%%%%% ufrgscca-coord !!!! -%%%%% -\NewDocumentCommand{\tccoord@studentboardsnewpage}{}{% %%% see ufrgscca-core for counters... - \expandafter\gdef\csname tc@student\Alph{tc@studentcount}BoardsNP\endcsname{1}% -}% - -\NewDocumentCommand{\NewStudent}{m+m}{%% - \expandafter\NewDocumentCommand\csname #1\endcsname{O{}}{%% - #2% - \csname #1.hook\endcsname% - \@ifundefined{tccoord@studentboards##1}{}{\csname tccoord@studentboards##1\endcsname}%% - \iftcif@coord@forms@revforms% - \tcforms@examinersForms% - \fi% - \iftcif@coord@forms@referralII% - \tccoord@TCCreferralletter% - \fi% - \iftcif@coord@forms@referralI% - \tccoord@TCCIreferralletter% - \fi% - \iftcif@coord@forms@cocertificate% - \tccoord@TCCcocertificateletter% - \fi% -% - \@defaultboard% - }%% - \expandafter\NewDocumentCommand\csname #1.hook\endcsname{}{}% -}% +\NewDocumentCommand{\studentNewPageCase}{mm} + { + \starray_term_syntax:n{student} + \bool_if:nTF {\starray_parsed_get_prop:n{flag-newpage}} + {#1} + {#2} + } -\NewDocumentCommand{\NewInternshipStudent}{m+m}{%% - \expandafter\NewDocumentCommand\csname #1\endcsname{O{}}{%% - #2% - \csname #1.hook\endcsname% - \iftcif@coord@forms@referralII% - \tccoord@internshipreferalletter% - \fi% - }%% - \expandafter\NewDocumentCommand\csname #1.hook\endcsname{}{}% +\NewDocumentCommand{\studentnewpage}{O{}}{ + \tl_if_blank:nTF {#1} + { \starray_gset_prop:nnn {student}{flag-newpage}{\c_true_bool} } + { \starray_gset_prop:nnn {student[#1]}{flag-newpage}{\c_true_bool} } }% -\NewDocumentCommand{\@distinctboard}{}{\def\tc@nBoard{}}% -\NewDocumentCommand{\@defaultboard}{}{\let\tc@nBoard\undefined}% -% -% -\newcounter{tc@calendareventcount}% -\NewDocumentCommand{\tcccalendarevent}{mm}{%% - \stepcounter{tc@calendareventcount}%% - \expandafter\gdef\csname tc@tcccalendarevent\Alph{tc@calendareventcount}week\endcsname{#1}%% - \expandafter\gdef\csname tc@tcccalendarevent\Alph{tc@calendareventcount}desc\endcsname{#2}%% -}% -\NewDocumentCommand{\tcccalendarhead}{mmm}{\gdef\tc@tcccalendarhead{#1 & #2 & #3\\}}% -% -\newcounter{tc@calendareventdatecount}% -\NewDocumentCommand{\tcccalendareventdate}{m}{%% - \stepcounter{tc@calendareventdatecount}%% - \expandafter\gdef\csname tc@tcccalendarevent\Alph{tc@calendareventdatecount}date\endcsname{#1}%% +\NewDocumentCommand{\boardtitle}{m}{%% + \SetTerms{% + board.title = {#1} , + } }% -% -\NewDocumentCommand{\tccoord@calendarlinereset}{m}{\@ifundefined{tc@tcccalendarevent#1week}{}{\csundef{tc@tcccalendarevent#1week}}}% -% -\NewDocumentCommand{\tcccalendarreset}{}{ - \forcsvlist{\tccoord@calendarlinereset}{A,B,C,D,E,F,G,H,I,J,K,L,M,N,O}% - \setcounter{tc@calendareventcount}{0}%% - \setcounter{tc@calendareventdatecount}{0}% -} -% -\NewDocumentCommand{\examinergrades}{mmmO{0}}{%% - \ifthenelse{\equal{#1}{}}{%% - \expandafter\def\csname tc@student\Alph{tc@studentcount}@examiner\Alph{tc@examinercount}grade\endcsname{0}% - \expandafter\def\csname tc@student\Alph{tc@studentcount}@examiner\Alph{tc@examinercount}gradeI\endcsname{0}% - }{% - \ifthenelse{\equal{#4}{0}}{% - \expandafter\def\csname tc@student\Alph{tc@studentcount}@examiner\Alph{tc@examinercount}pointA\endcsname{#1}%% - \expandafter\def\csname tc@student\Alph{tc@studentcount}@examiner\Alph{tc@examinercount}pointB\endcsname{#2}%% - \expandafter\def\csname tc@student\Alph{tc@studentcount}@examiner\Alph{tc@examinercount}pointC\endcsname{#3}%% - \expandafter\def\csname tc@student\Alph{tc@studentcount}@examiner\Alph{tc@examinercount}pointD\endcsname{#4}%% - \expandafter\edef\csname tc@student\Alph{tc@studentcount}@examiner\Alph{tc@examinercount}grade\endcsname{\fpeval{round((\tc@TCCpointAweight * #1 + \tc@TCCpointBweight * #2 + \tc@TCCpointCweight * #3) / (\tc@TCCpointAweight + \tc@TCCpointBweight + \tc@TCCpointCweight),2,1)} }% - \expandafter\edef\csname tc@student\Alph{tc@studentcount}@examiner\Alph{tc@examinercount}gradeI\endcsname{0}% - }{% - \expandafter\def\csname tc@student\Alph{tc@studentcount}@examiner\Alph{tc@examinercount}pointA\endcsname{\fpeval{#1}}%% * \tc@TCCIpointscale}}%% - \expandafter\def\csname tc@student\Alph{tc@studentcount}@examiner\Alph{tc@examinercount}pointB\endcsname{\fpeval{#2}}%% * \tc@TCCIpointscale}}%% - \expandafter\def\csname tc@student\Alph{tc@studentcount}@examiner\Alph{tc@examinercount}pointC\endcsname{\fpeval{#3}}%% * \tc@TCCIpointscale}}%% - \expandafter\def\csname tc@student\Alph{tc@studentcount}@examiner\Alph{tc@examinercount}pointD\endcsname{\fpeval{#4}}%% * \tc@TCCIpointscale}}%% - \expandafter\edef\csname tc@student\Alph{tc@studentcount}@examiner\Alph{tc@examinercount}grade\endcsname{0}% - \expandafter\edef\csname tc@student\Alph{tc@studentcount}@examiner\Alph{tc@examinercount}gradeI\endcsname{\fpeval{round((\tc@TCCIpointAweight * #1 + \tc@TCCIpointBweight * #2 + \tc@TCCIpointCweight * #3 + \tc@TCCIpointDweight * #4) / (\tc@TCCIpointAweight + \tc@TCCIpointBweight + \tc@TCCIpointCweight + \tc@TCCIpointDweight),2,1)} }% -% \expandafter\edef\csname tc@student\Alph{tc@studentcount}@examiner\Alph{tc@examinercount}gradeI\endcsname{\fpeval{round((\tc@TCCIpointAweight * #1 + \tc@TCCIpointBweight * #2 + \tc@TCCIpointCweight * #3 + \tc@TCCIpointDweight * #4) * \tc@TCCIpointscale / (\tc@TCCIpointAweight + \tc@TCCIpointBweight + \tc@TCCIpointCweight + \tc@TCCIpointDweight),2,1)} }% - }% - }% -}% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% TCC calendar% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\def\tc@calendartab{11.5cm}% -\NewDocumentCommand{\tccoord@TCCcalendarline}{m}{\@ifundefined{tc@tcccalendarevent#1week}{}{\textbf{\csname tc@tcccalendarevent#1date\endcsname} & \csname tc@tcccalendarevent#1week\endcsname & \csname tc@tcccalendarevent#1desc\endcsname\\\hline}}% -%%% -%% -%%% -\NewDocumentCommand{\tccoord@TCCcalendarI}{}{% - \tc@formtopbox{\tcdef@forms@formstitleTR}{\tcdef@coord@calendartitle}% -% - { \footnotesize% - \begin{center} -% - \resizebox{\textwidth}{!}{%% - \begin{tabular}{ccp{\tc@calendartab}}% - \tc@tcccalendarhead\hline% - \forcsvlist{\tccoord@TCCcalendarline}{A,B,C,D,E,F,G,H,I,J,K,L,M,N,O}% - \end{tabular}}% -% - \end{center}% - %\if@lmodern - \tiny - %\fi - \tcdef@coord@tcccalendardesc% - }% - \vfill% -% - \pagebreak% -}% -% -\NewDocumentCommand{\tccoord@TCCcalendarII}{}{% - \tc@formtopbox{\tcdef@forms@formstitle}{\tcdef@coord@calendartitle}% -% - { \footnotesize% - \begin{center} -% - \resizebox{\textwidth}{!}{%% - \begin{tabular}{ccp{\tc@calendartab}}% - \tc@tcccalendarhead\hline% - \forcsvlist{\tccoord@TCCcalendarline}{A,B,C,D,E,F,G,H,I,J,K,L,M,N,O}% - \end{tabular}}% -% - \end{center}% - %\if@lmodern - \tiny - %\fi - \tcdef@coord@tcccalendardesc% - }% - \vfill% -% - \pagebreak% -}% -% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% Student list form% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\def\tc@stlistrule{65mm}% -\def\tc@stlisttab{70mm}% -%%% -%% -%%% -\NewDocumentCommand{\tccoord@studentlistrow}{m}{%% - \@ifundefined{tc@student#1}{\rule{\tc@stlistrule}{.1pt}}{\csname tc@student#1\endcsname}\hrulefill & \rule{\tc@stlistrule}{.1pt}\\% +\NewDocumentCommand{\boardobs}{m}{%% + \SetTerms{% + board.obs = {#1} , + } }% -% -\NewDocumentCommand{\tccoord@studentlistform}{}{% - \stepcounter{tc@studentcount}% - \tc@formtopbox{\tcdef@forms@formstitle}{\tcdef@coord@studentlistformtitle}% - \vspace{20mm}% -% - {\small% - \begin{tabular}{p{\tc@stlisttab}@{ }p{\tc@stlisttab}}% - \tcdef@forms@formsstudentlabelgen & \tcdef@forms@studentsignaturegen\\\hline\\[2mm]% -% - \forcsvlist{\tccoord@studentlistrow}{A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y} - \end{tabular}}% - \vfill% -% - \pagebreak% -}% -% -%%% -%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% student info row (for reports and referral letters)% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\def\tc@BoardTabA{38mm}% -\def\tc@BoardTabB{38mm}% -\def\tc@BoardTabC{60mm}% -\def\tc@BoardTabD{13mm}% -%%% -%% -%%% -\NewDocumentCommand{\tccoord@studentboardrow}{m}{%% - \@ifundefined{tc@student#1}{}{% - \@ifundefined{tc@student#1Dismiss}{%% - \@ifundefined{tc@student#1FF}{%% - \@ifundefined{tc@student#1time}{}{%% - \multirow{4}{\tc@BoardTabA}{\textbf{\csname tc@student#1\endcsname}} & \multirow{4}{\tc@BoardTabB}{{\hspace{-0.4em}\csname tc@student#1@advisor\endcsname}\ifcsdef{tc@student#1@coadvisor}{\break\csname tc@student#1@coadvisor\endcsname}{}} & \break\csname tc@student#1@examinerA\endcsname & \multirow{5}{\tc@BoardTabD}{\iftcif@coord@boarddates\else\csname tc@student#1date\endcsname\\\fi - \csname tc@student#1time\endcsname\\[1mm]\csname tc@student#1local\endcsname - }\\*% - & & \csname tc@student#1@examinerB\endcsname & \\*% - & & \csname tc@student#1@examinerC\endcsname & \\*% - & & (\csname tc@student#1@altexaminerA\endcsname\ ) & \\*% - \multicolumn{3}{l}{\textsc{\tcdef@coord@boardsworklabel:} \begin{minipage}{0.90\textwidth}\textit{\csname tc@student#1title\endcsname}\end{minipage}} & \\[2mm]\hline% - }% - }{}% - }{}% - }% -}% -% -\NewDocumentCommand{\tccoord@testdaterow}{mm}{%% -% \@ifundefined{tcif@coord@boarddates}{}{%% - \iftcif@coord@boarddates% - \@ifundefined{tc@student#2}{}{%% - \@ifundefined{tc@student#2Dismiss}{%% - \@ifundefined{tc@student#2FF}{%% - \@ifundefined{tc@student#2BoardsNP}{%% - \tccoord@@testdaterow{\csname tc@student#1date\endcsname}{\csname tc@student#2date\endcsname}%% - }{\kill\pagebreak\tccoord@daterow{#2}}%% - }{}%% - }{}%% - }%% - \fi - %}%%@boarddates -}%% -% -\NewDocumentCommand{\tccoord@@testdaterow}{mm}{\ifthenelse{\equal{#1}{#2}}{\\[-4.35mm]\hline\\[-4mm]}{\tccoord@@daterow{#2}}}% -\NewDocumentCommand{\tccoord@daterow}{m}{\gdef\tc@date{\csname tc@student#1date\endcsname}\tccoord@@daterow{\tc@date}}% -\NewDocumentCommand{\tccoord@@daterow}{m}{& & \multicolumn{2}{r}{\textsc{\textbf{\csname date:#1\endcsname\ --- #1}}} \\*% - \textsc{\tcdef@forms@formsstudentlabelgen} & \textsc{\tcdef@forms@formsadvisorlabelgen} & \textsc{\tcdef@forms@formsboardtitle} & \textsc{\tcdef@forms@formstimelabel}\\*\hline}% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% TCC Boards announce table% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcounter{tccoord@@auxA}% -\newcounter{tccoord@@auxB}% -\NewDocumentCommand{\tccoord@@studenttestrow}{m}{% - \setcounter{tccoord@@auxA}{#1}\setcounter{tccoord@@auxB}{#1}\stepcounter{tccoord@@auxB} \tccoord@studentboardrow{\Alph{tccoord@@auxA}}\tccoord@testdaterow{\Alph{tccoord@@auxA}}{\Alph{tccoord@@auxB}}% -}% -\NewDocumentCommand{\tccoord@TCCboards}{}{% - \stepcounter{tc@studentcount}% - \tc@formtopbox{\tcdef@forms@formstitle}{\tcdef@coord@TCCperiod}% -% - {%% - \footnotesize\gdef\tc@date{\csname tc@studentAdate\endcsname}% - \setlength\LTleft{-8mm} \begin{center}% - {%% - \begin{longtable}{p{\tc@BoardTabA}p{\tc@BoardTabB}p{\tc@BoardTabC}p{\tc@BoardTabD}}% - \multicolumn{4}{c}{\textbf{\textsc{\tcdef@coord@boardstitle}}}\\\hline% - \iftcif@coord@boarddates\else\textsc{\tcdef@forms@formsstudentlabelgen} & \textsc{\tcdef@forms@formsadvisorlabelgen} & \textsc{\tcdef@forms@formsboardtitle} & \textsc{\tcdef@forms@formstimelabel}\\\hline\fi% - \endhead% - \tccoord@testdaterow{T}{A}% - \forcsvlist{\tccoord@@studenttestrow}{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19} - \tccoord@studentboardrow{T}% letter 'T' is 20 ! -% - \end{longtable}% - }% - \end{center}% - {\bf \tcdef@coord@boardsOBS}% - }% - \vfill% - \pagebreak% -}% -% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% \tccoord@fate => A,B,C,D as a function of student grade% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\NewDocumentCommand{\tccoord@fate}{m}{% - \ifthenelse{1 = \fpeval{#1 < \tc@TCCgradeCN}}% - {\tc@TCCgradeD}% - { - \ifthenelse{1 = \fpeval{#1 < \tc@TCCgradeBN}}% - {\tc@TCCgradeC}% - { - \ifthenelse{1 = \fpeval{#1 < \tc@TCCgradeAN}}% - {\tc@TCCgradeB}% - {\tc@TCCgradeA}% - }% - }% -} -\NewDocumentCommand{\tccoord@@fate}{m}{\tccoord@fate{\csname tc@student#1Temp\endcsname}}% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% \tc@student grade => average of the 3 examiners grade% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\NewDocumentCommand{\tccoord@studentgrade}{m}{%% - \@ifundefined{tc@student#1}{}{% - \expandafter\edef\csname tc@student#1Temp\endcsname{%% -\fpeval{round((\csname tc@student#1@examinerAgrade\endcsname + \csname tc@student#1@examinerBgrade\endcsname + \csname tc@student#1@examinerCgrade\endcsname )/3,2,1)}% - }% - }% -}% -% -%% -% TCC-I -% \tc@student grade => average of the 2 examiners grade% -%% -\NewDocumentCommand{\tccoord@studentgradeI}{m}{%% - \@ifundefined{tc@student#1}{}{% - \expandafter\edef\csname tc@student#1Temp\endcsname{%% -\fpeval{round((\csname tc@student#1@examinerBgradeI\endcsname + \csname tc@student#1@examinerCgradeI\endcsname )/2,2,1)}% - }% - }% -}% -% -\NewDocumentCommand{\tccoord@internshipstudentgrade}{m}{% - \@ifundefined{tc@student#1}{}{% - \expandafter\edef\csname tc@student#1Temp\endcsname{%% - \fpeval{round((2 * (\csname tc@student#1@supervisorgradeA\endcsname + \csname tc@student#1@supervisorgradeB\endcsname) + \csname tc@student#1@tutorgrade\endcsname + \csname tc@student#1@internshipcoordgrade\endcsname )/28,2,1)}% - }% - }% -} -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% examiners info (grades) for report/referral letters% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\NewDocumentCommand{\tccoord@examinersline}{mm}{%% -& \hspace{-0.4em}\csname tc@student#1@examiner#2\endcsname & \csname tc@student#1@examiner#2pointA\endcsname & \csname tc@student#1@examiner#2pointB\endcsname & \csname tc@student#1@examiner#2pointC\endcsname & \csname tc@student#1@examiner#2grade\endcsname &% -}% -% -%% -% TCC-I -% examiners info (grades) for report/referral letters% -%% -\NewDocumentCommand{\tccoord@examinerslineI}{mm}{%% -& \hspace{-0.4em}\csname tc@student#1@examiner#2\endcsname & \csname tc@student#1@examiner#2pointA\endcsname & \csname tc@student#1@examiner#2pointB\endcsname & \csname tc@student#1@examiner#2pointC\endcsname & \csname tc@student#1@examiner#2pointD\endcsname & \csname tc@student#1@examiner#2gradeI\endcsname &% -}% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% student extra info (process number, ID, email) for report% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\NewDocumentCommand{\tccoord@studentextrainfo}{m}{%% - (\csname tc@student#1Nproc\endcsname )\ \ \csname tc@student#1ID\endcsname\ / \csname tc@student#1email\endcsname%% -}% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% student info (all examiners, advisor, etc.) for report and referral letters.% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\NewDocumentCommand{\tccoord@@studentrow}{m}{% - \setcounter{tc@studentcount}{#1}% - \tccoord@studentrow[tc@studentextrainfo]{\Alph{tc@studentcount}}% -}% -\NewDocumentCommand{\tccoord@studentrow}{O{}m}{%% - \@ifundefined{tc@student#2}{}{%% - \@ifundefined{tc@student#2FF}{%% - \@ifundefined{tc@student#2Dismiss}{%% - \multirow{4}{\tc@ReportTabA}{\csname tc@student#2\endcsname} %% - \tccoord@examinersline{#2}{A}\\*%% - \tccoord@examinersline{#2}{B}\\*%% - \tccoord@examinersline{#2}{C}\\*%% - & \multicolumn{4}{c}{\ifcsdef{tc@student#2@coadvisor}{\tcdef@coord@advisornameplural}{\tcdef@cover@advisorname} : \csname tc@student#2@advisor\endcsname \ifcsdef{tc@student#2@coadvisor}{ /\csname tc@student#2@coadvisor\endcsname}}{} & \textbf{\csname tc@student#2Temp\endcsname} & %% - \textbf{\tccoord@@fate{#2}}%% - \ifblank{#1}{\\}{\\*%% - \multicolumn{7}{l}{\tcdef@coord@boardsworklabel: \csname tc@student#2title\endcsname}\\*%% - \iftcif@coord@reportxinfo% - \multicolumn{7}{l}{\tccoord@studentextrainfo{#2}}\\*% - \ifcsdef{tc@student#2remark}{\multicolumn{6}{c}{{\bf \csname tc@student#2remark\endcsname}}\\}{}% - \fi% - }%% - \hline%% - }{%% - }%% - }{%% - }%% - }%% -}% -% -% -%% -% TCC-I -% student info (all examiners, advisor, etc.) for report and referral letters.% -%% -\NewDocumentCommand{\tccoord@@studentrowI}{m}{% - \setcounter{tc@studentcount}{#1}% - \tccoord@studentrowI[tc@studentextrainfo]{\Alph{tc@studentcount}}% -}% -\NewDocumentCommand{\tccoord@studentrowI}{O{}m}{%% - \@ifundefined{tc@student#2}{}{%% - \@ifundefined{tc@student#2FF}{%% - \@ifundefined{tc@student#2Dismiss}{%% - \multirow{3}{\tc@ReportTabA}{\csname tc@student#2\endcsname} %% - \tccoord@examinerslineI{#2}{B}\\*%% - \tccoord@examinerslineI{#2}{C}\\*%% - & \multicolumn{5}{c}{\ifcsdef{tc@student#2@coadvisor}{\tcdef@coord@advisornameplural}{\tcdef@cover@advisorname} : \csname tc@student#2@advisor\endcsname \ifcsdef{tc@student#2@coadvisor}{ /\csname tc@student#2@coadvisor\endcsname}}{} & \textbf{\csname tc@student#2Temp\endcsname} & %% - \textbf{\tccoord@@fate{#2}}%% - \ifblank{#1}{\\}{\\*%% - \multicolumn{8}{l}{\tcdef@coord@boardsworklabel: \csname tc@student#2title\endcsname}\\*%% - \iftcif@coord@reportxinfo% - \multicolumn{8}{l}{\tccoord@studentextrainfo{#2}}\\*% - \ifcsdef{tc@student#2remark}{\multicolumn{6}{c}{{\bf \csname tc@student#2remark\endcsname}}\\}{}% - \fi% - }%% - \hline%% - }{%% - }%% - }{%% - }%% - }%% -}% -% -% -% -\NewDocumentCommand{\tccoord@studentxinforow}{m}{% - \multicolumn{7}{l}{\tccoord@studentextrainfo{#1}}\\*% - \ifcsdef{tc@student#1remark}{\multicolumn{6}{c}{{\bf \csname tc@student#1remark\endcsname}}\\}{}% -}% -% -% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% student FF info (report)% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\NewDocumentCommand{\tccoord@@studentFFrow}{m}{%% - \setcounter{tc@studentcount}{#1}% - \tccoord@studentFFrow{\Alph{tc@studentcount}}% -}% -\NewDocumentCommand{\tccoord@studentFFrow}{m}{%% - \@ifundefined{tc@student#1}{}{%% - \@ifundefined{tc@student#1Dismiss}{%% - \@ifundefined{tc@student#1FF}{%% - }{\\*%% - \multicolumn{6}{l}{\csname tc@student#1\endcsname } & \tc@TCCgradeFF\\*%% - \iftcif@coord@reportxinfo% - \multicolumn{6}{l}{\tccoord@studentextrainfo{#1}}\\*% - \ifcsdef{tc@student#1remark}{\multicolumn{6}{c}{{\bf \csname tc@student#1remark\endcsname}}\\}{}% - \fi% - \multicolumn{6}{l}{\ifcsdef{tc@student#1@coadvisor}{\tcdef@coord@advisornameplural}{\tcdef@cover@advisorname} : \csname tc@student#1@advisor\endcsname\ifcsdef{tc@student#1@coadvisor}{ /\csname tc@student#1@coadvisor\endcsname}{}} & \\\hline%% - }%% - }{}%% - }%% -}% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% student info (report), dimiss case% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\NewDocumentCommand{\tccoord@@studentDismissrow}{m}{%% - \setcounter{tc@studentcount}{#1}% - \tccoord@studentDismissrow{\Alph{tc@studentcount}}% -}% -\NewDocumentCommand{\tccoord@studentDismissrow}{mO{}}{%% - \@ifundefined{tc@student#1}{}{%% - \@ifundefined{tc@student#1FF}{%% - \@ifundefined{tc@student#1Dismiss}{%% - }{\ifblank{#2}{}{\setcounter{tc@studentcount}{#2}}\\*%% - \multicolumn{6}{l}{\csname tc@student#1\endcsname} & \\*%% - \iftcif@coord@reportxinfo% - \multicolumn{6}{l}{\tccoord@studentextrainfo{#1}}\\*% - \ifcsdef{tc@student#1remark}{\multicolumn{6}{c}{{\bf \csname tc@student#1remark\endcsname}}\\}{}% - \fi% - \multicolumn{6}{l}{\ifcsdef{tc@student#1@coadvisor}{\tcdef@coord@advisornameplural}{\tcdef@cover@advisorname} : \csname tc@student#1@advisor\endcsname\ifcsdef{tc@student#1@coadvisor}{ /\csname tc@student#1@coadvisor\endcsname}{}} & \\\hline%% - }%% - }{}%% - }%% -}% -% -% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% TCC report (student grades, FF, dismiss)% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\def\tc@ReportTabA{32mm}% -\def\tc@ReportTabB{42mm}% -\def\tc@ReportTabC{15mm}% -\def\tc@ReportTabD{15mm}% -\def\tc@ReportTabE{15mm}% -\def\tc@ReportTabEx{15mm}% -\def\tc@ReportTabF{8mm}% -\def\tc@ReportTabG{12mm}% -%%%% -%% -%%%% -\NewDocumentCommand{\tccoord@TCCreport}{}{% - \stepcounter{tc@studentcount}% - \tc@formtopbox{\tcdef@forms@formstitle}{\tcdef@coord@tccreporttitle\ - \tcdef@coord@TCCperiod}% - {%% -% \footnotesize% - \tiny% - \forcsvlist{\tccoord@studentgrade}{A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,X,Y}% - \begin{center}% - \begin{longtable}{p{\tc@ReportTabA}@{\ }p{\tc@ReportTabB}@{\ }p{\tc@ReportTabC}@{\ }p{\tc@ReportTabD}@{\ }p{\tc@ReportTabE}@{\ }p{\tc@ReportTabF}@{\ }p{\tc@ReportTabG}}% - \multicolumn{7}{c}{\tcdef@forms@formstitle\ \tcdef@coord@TCCperiod}\\\hline% - & \tcdef@coord@boardlabel & \tc@TCCpointAlabel & \tc@TCCpointBlabel & \tc@TCCpointClabel &% - \tcdef@coord@TCCgradesNlabel & \tcdef@coord@TCCgradesClabel\\\hline% - \endhead% - \forcsvlist{\tccoord@@studentrow}{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25} - \@ifundefined{tc@TCCff@flag}{}{% - & & & & & & \\% - & & & & & & \\% - \multicolumn{6}{l}{{\bf \tcdef@coord@tccreportabsents}}\\\hline% - \forcsvlist{\tccoord@@studentFFrow}{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25}% - }% - \@ifundefined{tc@TCCdismiss@flag}{}{% - & & & & & & \\% - & & & & & & \\% - \multicolumn{6}{l}{{\bf \tcdef@coord@tccreportdismiss}}\\\hline% - \forcsvlist{\tccoord@@studentDismissrow}{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25} - }%% - \end{longtable}%% - \end{center}%% - } %end of footnotesize% - - \vfill% - \pagebreak% -}% -% -%%%% -\NewDocumentCommand{\tccoord@TCCIreport}{}{% - \stepcounter{tc@studentcount}% - \tc@formtopbox{\tcdef@forms@formstitleTR}{\tcdef@coord@tccreporttitle\ - \tcdef@coord@TCCperiod}% - {%% -% \footnotesize% - \tiny% - \forcsvlist{\tccoord@studentgradeI}{A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,X,Y}% - \begin{center}% - \begin{longtable}{p{\tc@ReportTabA}@{\ }p{\tc@ReportTabB}@{\ }p{\tc@ReportTabC}@{\ }p{\tc@ReportTabD}@{\ }p{\tc@ReportTabE}@{\ }p{\tc@ReportTabEx}@{\ }p{\tc@ReportTabF}@{\ }p{\tc@ReportTabG}}% - \multicolumn{7}{c}{\tcdef@forms@formstitleTR\ \tcdef@coord@TCCperiod}\\\hline% - & \tcdef@coord@boardlabel & \tc@TCCIpointAlabel & \tc@TCCIpointBlabel & \tc@TCCIpointClabel & \tc@TCCIpointDlabel &% - \tcdef@coord@TCCgradesNlabel & \tcdef@coord@TCCgradesClabel\\\hline% - \endhead% - \forcsvlist{\tccoord@@studentrowI}{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25} - \@ifundefined{tc@TCCff@flag}{}{% - & & & & & & \\% - & & & & & & \\% - \multicolumn{6}{l}{{\bf \tcdef@coord@tccreportabsents}}\\\hline% - \forcsvlist{\tccoord@@studentFFrow}{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25}% - }% - \@ifundefined{tc@TCCdismiss@flag}{}{% - & & & & & & \\% - & & & & & & \\% - \multicolumn{6}{l}{{\bf \tcdef@coord@tccreportdismiss}}\\\hline% - \forcsvlist{\tccoord@@studentDismissrow}{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25} - }%% - \end{longtable}%% - \end{center}%% - } %end of footnotesize% - - \vfill% - \pagebreak% -}% -% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% student check list row% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\NewDocumentCommand{\tccoord@@LCcheck}{mmm}{% - & \tccoord@check{#1}{check#2#3}% -}% -\NewDocumentCommand{\tccoord@@Lcheck}{mm}{% - \forcsvlist{\tccoord@@LCcheck{#1}{#2}}{A,B,C,D,E}\\*% -}% -\NewDocumentCommand{\tccoord@studentcheckrow}{m}{%% - \@ifundefined{tc@student#1}{}{%% - \@ifundefined{tc@student#1FF}{%% - \@ifundefined{tc@student#1Dismiss}{\\[-2ex]%% - \multirow{4}{\tc@ReportTabA}{\csname tc@student#1\endcsname} % - \forcsvlist{\tccoord@@Lcheck{#1}}{A,B,C,D}\hline%% - }{}%% - }{}%% - }%% +\NewDocumentCommand{\boarddate}{mm}{%% + \SetConsts{% + date:#1 = {#2} , + } }% % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% TCC check list% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\NewDocumentCommand{\tccoord@TCCchecklist}{}{% - \stepcounter{tc@studentcount}% - \tc@formtopbox{\tcdef@forms@formstitle}{Check List - \tcdef@coord@TCCperiod}% - {%% -% \footnotesize% - \scriptsize% - \setlength\LTleft{-10mm}% - \begin{center}% - \begin{longtable}{p{\tc@ReportTabA}lllll}% - \\\hline% - \endhead% - \forcsvlist{\tccoord@studentcheckrow}{A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,X,Y}% - \end{longtable}%% - \end{center}%% - } %end of footnotesize% - - \vfill% - \pagebreak% +\NewDocumentCommand{\semester}{m}{%% + \SetTerms{% + semester = {#1} , + } }% % -% -% -% -% -%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%% -% -% -% -% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% TCC referral letters :: approved/failed/FF% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\NewDocumentCommand{\tccoord@TCCcocertificateletter}{}{% tc@student\Alph{tc@studentcount}@#1 - \@ifundefined{tc@student\Alph{tc@studentcount}@coadvisor}{}{% - \tc@formtopbox{\tcdef@forms@formstitle}{\tcdef@coord@cocertificatetitle}% - - \noindent \tcdef@coord@cocertificateopenning% - \vfill% -\begin{center} -{\sc \csname tc@student\Alph{tc@studentcount}@coadvisor\endcsname} -\end{center} - -\vfill - -\tcdef@coord@cocertificatetext +%%%%%%\NewDocumentCommand{\studentturnindate}{m}{\tccoord@studentdatesplit#1,} +%%%%%%%23/12/2022 +%%%%%% +%%%%%%\def\tccoord@studentdatesplit#1/#2/#3,{ +%%%%%% \pgfcalendarifdate{#3-#2-#1}{at least=\tc@internshipcommitB+1}{\tccoord@studentFF}{} +%%%%%% \pgfcalendarifdate{#3-#2-#1}{between=\tc@internshipcommitA+1 and \tc@internshipcommitB}{\tccoord@studentExam{X}}{} +%%%%%% \expandafter\gdef\csname tc@student\Alph{tc@studentcount}date\endcsname{#1/#2/#3}% +%%%%%%} +%%%%%% +%%%%%%\NewDocumentCommand{\intershipcommitdates}{mm}{% +%%%%%% \tccoord@commitdatesplit#1,A,% +%%%%%% \tccoord@commitdatesplit#2,B,% +%%%%%%} +%%%%%% +%%%%%%\def\tccoord@commitdatesplit#1/#2/#3,#4,{ +%%%%%% \expandafter\xdef\csname tc@internshipcommit#4\endcsname{#3-#2-#1}% +%%%%%% \expandafter\xdef\csname tc@internshipcommit#4#4\endcsname{#1/#2/#3}% +%%%%%%} - \vfill% - \begin{flushright}% - \tc@city, \tc@publday\ de \tc@publmonth\ de \tc@publyear .% - \vfill % -% \vfill% +\cs_new_protected:Npn \__ufrgscca_checkedbox: + { $\checkmark$ } - $\overline{\text{\tcdef@core@TCCcoord}}$\\% - \tcdef@core@TCCcoordtitle% - \vfill - $\overline{\text{\tcdef@core@coursecoord}}$\\% - \tcdef@core@coursecoordtitle\\% - \tcdef@cover@course% - - \end{flushright}% - \vfill% - \pagebreak% - }{}% -}% -% -% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% referral fate :: failed or approved as per student grade% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\NewDocumentCommand{\tccoord@referralfate}{m}{\ifthenelse{1 = \fpeval{#1 <= \tc@TCCgradeCN}}{\tcdef@coord@referralfailed}{\tcdef@coord@referralapproved}}% -% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% TCC referral letters :: approved/failed/FF% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\NewDocumentCommand{\tccoord@TCCreferralletter}{}{% - \@ifundefined{tc@student\Alph{tc@studentcount}Dismiss}{% - \tc@formtopbox{\tcdef@forms@formstitle}{\tcdef@coord@TCCperiod}% - - \noindent\tcdef@coord@tccreferralopening% - \vfill% - - \@ifundefined{tc@student\Alph{tc@studentcount}FF}{% - \@ifundefined{tc@student\Alph{tc@studentcount}Exam}{% - \tccoord@studentgrade{\Alph{tc@studentcount}}% - \tcdef@coord@referralfatetext% - - \vfill% - - {\footnotesize% - \begin{center}% - \resizebox{\textwidth}{!}{% - \begin{tabular}{p{\tc@ReportTabA}@{\ }p{\tc@ReportTabB}@{\ }c@{\ }c@{\ }c@{\ }c@{\ }c}%\hline% - & \tcdef@coord@boardlabel & \tc@TCCpointAlabel & \tc@TCCpointBlabel & \tc@TCCpointClabel &% - \tcdef@coord@TCCgradesNlabel & \tcdef@coord@TCCgradesClabel\\\hline% - \tccoord@studentrow{\Alph{tc@studentcount}}% - \end{tabular}% - }% - \end{center}% - }% - }{% - \ifthenelse{\equal{\csname tc@student\Alph{tc@studentcount}Exam\endcsname}{D}}{% - \tcdef@coord@referralexamfailtext% - \vfill% - }{% - \tcdef@coord@referralexamapprovedtext% - \vfill% - }% - {%% - \footnotesize% - \begin{center}% - \begin{tabular}{p{\tc@ReportTabA}@{\ }p{\tc@ReportTabB}@{\ }c}%\hline% - & \tcdef@coord@boardlabel \\\hline% - \multirow{3}{\tc@ReportTabA}{\csname tc@student\Alph{tc@studentcount}\endcsname} % - &\csname tc@student\Alph{tc@studentcount}@examinerA\endcsname\\% - &\csname tc@student\Alph{tc@studentcount}@examinerB\endcsname\\% - &\csname tc@student\Alph{tc@studentcount}@examinerC\endcsname\\% - \multicolumn{2}{l}{\tcdef@forms@formsadvisorlabel : \csname tc@student\Alph{tc@studentcount}@advisor\endcsname} \\\hline% - \end{tabular}% - \end{center}% - }% - }% - }{% - \tcdef@coord@referralfailFF% - }% - - \vfill% - \begin{flushright}% - \tc@city, \tc@publday\ de \tc@publmonth\ de \tc@publyear .% - \vfill % - - \tcdef@core@TCCcoordtitle% - \vfill% - - $\overline{\text{\tcdef@core@TCCcoord}}$% - \end{flushright}% - \vfill% - \pagebreak% - }{}% -}% -% +\cs_new_protected:Npn \__ufrgscca_uncheckedbox: + { $\square$ } -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% TCC-I referral letters :: approved/failed/FF% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\NewDocumentCommand{\tccoord@TCCIreferralletter}{}{% - \@ifundefined{tc@student\Alph{tc@studentcount}Dismiss}{% - \tc@formtopbox{\tcdef@forms@formstitleTR}{\tcdef@coord@TCCperiod}% - - \noindent\tcdef@coord@tccreferralopening% - \vfill% - - \@ifundefined{tc@student\Alph{tc@studentcount}FF}{% - \@ifundefined{tc@student\Alph{tc@studentcount}Exam}{% - \tccoord@studentgradeI{\Alph{tc@studentcount}}% - \tcdef@coord@referralfatetextTR% - - \vfill% - - {\footnotesize% - \begin{center}% - \resizebox{\textwidth}{!}{% - \begin{tabular}{p{\tc@ReportTabA}@{\ }p{\tc@ReportTabB}@{\ }c@{\ }c@{\ }c@{\ }c@{\ }c@{\ }c}%\hline% - & \tcdef@coord@boardlabel & \tc@TCCIpointAlabel & \tc@TCCIpointBlabel & \tc@TCCIpointClabel & \tc@TCCIpointDlabel &% - \tcdef@coord@TCCgradesNlabel & \tcdef@coord@TCCgradesClabel\\\hline% - \tccoord@studentrowI{\Alph{tc@studentcount}}% - \end{tabular}% - }% - \end{center}% - }% - }{% - \ifthenelse{\equal{\csname tc@student\Alph{tc@studentcount}Exam\endcsname}{D}}{% - \tcdef@coord@referralexamfailtextTR% - \vfill% - }{% - \tcdef@coord@referralexamapprovedtextTR% - \vfill% - }% - {%% - \footnotesize% - \begin{center}% - \begin{tabular}{p{\tc@ReportTabA}@{\ }p{\tc@ReportTabB}@{\ }c}%\hline% - & \tcdef@coord@boardlabel \\\hline% - \multirow{3}{\tc@ReportTabA}{\csname tc@student\Alph{tc@studentcount}\endcsname} % - &\csname tc@student\Alph{tc@studentcount}@examinerB\endcsname\\% - &\csname tc@student\Alph{tc@studentcount}@examinerC\endcsname\\% - \multicolumn{2}{l}{\tcdef@forms@formsadvisorlabel : \csname tc@student\Alph{tc@studentcount}@advisor\endcsname} \\\hline% - \end{tabular}% - \end{center}% - }% - }% - }{% - \tcdef@coord@referralfailFF% - }% - - \vfill% - \begin{flushright}% - \tc@city, \tc@publday\ de \tc@publmonth\ de \tc@publyear .% - \vfill % - - \tcdef@core@TCCIcoordtitle% - \vfill% - - $\overline{\text{\tcdef@core@TCCcoord}}$% - \end{flushright}% - \vfill% - \pagebreak% - }{}% -}% -% +\cs_generate_variant:Nn \starray_gset_prop:nnn {nne} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% Internship referal letter% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\NewDocumentCommand{\tccoord@internshipreferalletter}{}{% - \@ifundefined{tc@student\Alph{tc@studentcount}Dismiss}{% - \tc@formtopbox{\tcdef@forms@formsinternshiptitle}{}% - - \noindent\tcdef@coord@internshipreferralopening% - \vfill% - \tccoord@internshipstudentgrade{\Alph{tc@studentcount}} - - \@ifundefined{tc@student\Alph{tc@studentcount}FF}{% - \@ifundefined{tc@student\Alph{tc@studentcount}Exam}{% - \tcdef@coord@internshipreferralfatetext - - \vfill% - \tcdef@coord@internshipgrades% - }{ - %%% in Exam... - \ifthenelse{\equal{\csname tc@student\Alph{tc@studentcount}Exam\endcsname}{X}}{%..report past due date - \ifthenelse{1 = \fpeval{\tccore@@ref{student}{Temp} < \tc@TCCgradeCN}}{% - \tccoord@studentExam{D}% - \tcdef@coord@internshipreferralexamfailtext - \vfill% - \tcdef@coord@internshipgrades% - \vfill% - }{% - \tccoord@studentExam{C}% - \tcdef@coord@internshipreferralexamapprovedtext - \vfill% - \tcdef@coord@internshipgrades% - \vfill% +\NewDocumentCommand{\examinergrades}{mmmO{}}{ + \tl_if_blank:nTF {#1} + { \starray_gset_prop:nnn {student.reviewer}{grade}{0} } + { + \tl_if_blank:nTF {#4} + { %% 3 grades, TCC II + \starray_gset_from_keyval:nn {student.reviewer} + { + pointA = #1 , + pointB = #2 , + pointC = #3 , + gradetype = 2 , + } + \starray_gset_prop:nne {student.reviewer}{grade} + {% + \fpeval{round((#1 * \UseConst{TCC-II.weightA} + #2 * \UseConst{TCC-II.weightB} + #3 * \UseConst{TCC-II.weightC}) / ( \UseConst{TCC-II.weightA} + \UseConst{TCC-II.weightB} + \UseConst{TCC-II.weightC}) , 2 , 1) } + } + } + { %% 4 grades, TCC I + \starray_gset_from_keyval:nn {student.reviewer} + { + pointA = #1 , + pointB = #2 , + pointC = #3 , + pointD = #4 , + gradetype = 1 , + } + \starray_gset_prop:nne {student.reviewer}{grade} + {% + \fpeval{round((#1 * \UseConst{TCC-I.weightA} + #2 * \UseConst{TCC-I.weightB} + #3 * \UseConst{TCC-I.weightC} + #4 * \UseConst{TCC-I.weightD}) / ( \UseConst{TCC-I.weightA} + \UseConst{TCC-I.weightB} + \UseConst{TCC-I.weightC} + \UseConst{TCC-I.weightD}) , 2 , 1) } + } + } - }{%%... in Exam due 'report form' - \ifthenelse{\equal{\csname tc@student\Alph{tc@studentcount}Exam\endcsname}{D}}{% - \tcdef@coord@internshipreferralexamhardfailtext - \vfill% - \tcdef@coord@internshipgrades% - \vfill% - }{% - \tcdef@coord@internshipreferralexamhardapprovedtext - \vfill% - \tcdef@coord@internshipgrades% - \vfill% - }% - } } - }{ - %%% FF... failed/report not delivered. - \tcdef@coord@internshipreferralfailFF - } + +} - \vfill% +\NewDocumentCommand{\setstudentlist}{O{tcc}mm}{ + \seq_new:c {l__ufrgscca_#2_seq} + \seq_new:c {l__ufrgscca_#2_ff_seq} + \seq_new:c {l__ufrgscca_#2_dismiss_seq} + \seq_new:c {l__ufrgscca_#2_graded_seq} + + \seq_gset_from_clist:cn {l__ufrgscca_#2_seq}{#3} + \str_case:nn {#1} + { + {tcc} + { + \seq_map_tokens:cn {l__ufrgscca_#2_seq} {\__ufrgscca_grade:n} + \seq_map_tokens:cn {l__ufrgscca_#2_seq} {\__ufrgscca_listclassify:nn {#2}} + } + {tccI} + { + \seq_map_tokens:cn {l__ufrgscca_#2_seq} {\__ufrgscca_grade:n} + \seq_map_tokens:cn {l__ufrgscca_#2_seq} {\__ufrgscca_listclassify:nn {#2}} + } + {tccII} + { + \seq_map_tokens:cn {l__ufrgscca_#2_seq} {\__ufrgscca_grade:n} + \seq_map_tokens:cn {l__ufrgscca_#2_seq} {\__ufrgscca_listclassify:nn {#2}} + } + {intern} + { %% TO BE IMPLEMENTED !!! + \seq_map_tokens:cn {l__ufrgscca_#2_seq} {\__ufrgscca_grade:n} + \seq_map_tokens:cn {l__ufrgscca_#2_seq} {\__ufrgscca_listclassify:nn {#2}} + } + } +} - \vfill% -\begin{flushright}% - \tc@city, \tc@publday\ de \tc@publmonth\ de \tc@publyear .% - \vfill % +\cs_new_protected:Npn \__ufrgscca_grade:n #1 + { + \starray_set_iter_from_hash:nn {student}{#1} + \starray_term_syntax:n {student[#1]} + \bool_if:nF {\starray_parsed_get_prop:n {flag-graded}} + { \__ufrgscca_studentgrade: } + } - \tcdef@core@internshipcoordtitle% - \vfill% - $\overline{\text{\tcdef@core@internshipcoord}}$% -\end{flushright}% -\vfill% +\cs_new_protected:Npn \__ufrgscca_listclassify:nn #1#2 + { + \starray_set_iter_from_hash:nn {student}{#2} + \starray_term_syntax:n {student} + \bool_case:nF + { + {\starray_parsed_get_prop:n {flag-ff}}{\seq_gput_right:cn {l__ufrgscca_#1_ff_seq}{#2}} + {\starray_parsed_get_prop:n {flag-dismiss}}{\seq_gput_right:cn {l__ufrgscca_#1_dismiss_seq}{#2}} + } + {\seq_gput_right:cn {l__ufrgscca_#1_graded_seq}{#2}} + + } -\pagebreak% -}{} +\NewDocumentCommand{\tcreports}{O{}m}{ + { + \__ufrgscca_set_reports:n {#1} + \seq_gset_eq:Nc \l__ufrgscca_baselist_seq {l__ufrgscca_#2_seq} + \seq_gset_eq:Nc \l__ufrgscca_baselist_ff_seq {l__ufrgscca_#2_ff_seq} + \seq_gset_eq:Nc \l__ufrgscca_baselist_dismiss_seq {l__ufrgscca_#2_dismiss_seq} + \seq_gset_eq:Nc \l__ufrgscca_baselist_graded_seq {l__ufrgscca_#2_graded_seq} + + \bool_if:NT \l__ufrgscca_calendarI_bool + { \MakeForm{calendar-I} } + \bool_if:NT \l__ufrgscca_calendarII_bool + { \MakeForm{calendar-II} } + \bool_if:NT \l__ufrgscca_reportI_bool + { \MakeForm{report-I} } + \bool_if:NT \l__ufrgscca_reportII_bool + { \MakeForm{report-II} } + \bool_if:NT \l__ufrgscca_checklistI_bool + { \MakeForm{checklist-I} } + \bool_if:NT \l__ufrgscca_checklistII_bool + { \MakeForm{checklist-II} } + \bool_if:NT \l__ufrgscca_boards_bool + { \MakeForm{boards} } + \seq_map_inline:cn {l__ufrgscca_baselist_seq} + { + \studentselect{##1} + \bool_if:NT \l__ufrgscca_cocertificate_bool + { + \studentCoadvCase + {\MakeForm{cocertificate}} + {} + } + \bool_if:NT \l__ufrgscca_referralI_bool + { + \studentDismissCase + {} + { \MakeForm{referral-I} } + } + \bool_if:NT \l__ufrgscca_revformsI_bool + { + \SetReviewer{2} + \MakeForm{examinersform-I} + \SetReviewer{3} + \MakeForm{examinersform-I} + \MakeForm{rectifyapproval-I} + } + \bool_if:NT \l__ufrgscca_referralII_bool + { + \MakeForm{referral-II} + } + \bool_if:NT \l__ufrgscca_revformsII_bool + { + \SetReviewer{1} + \MakeForm{examinersform-II} + \MakeForm{correctionsform-II} + \SetReviewer{2} + \MakeForm{examinersform-II} + \MakeForm{correctionsform-II} + \SetReviewer{3} + \MakeForm{examinersform-II} + \MakeForm{correctionsform-II} + \MakeForm{rectifyapproval-II} + } + } + } } -% -% -% +\prop_new:N \l__ufrgscca_check_prop +\prop_new:N \l__ufrgscca_checkA_prop +\prop_new:N \l__ufrgscca_checkB_prop +\prop_new:N \l__ufrgscca_checkref_prop +\NewDocumentCommand{\checkdef}{mmm}{ + \starray_get_prop:nnN {activity}{chkmarked}\l__ufrgscca_check_prop + \prop_gput:Nnn \l__ufrgscca_check_prop {#1}{\__ufrgscca_checkedbox:~\ #3} + \starray_gset_prop:nnV {activity}{chkmarked}\l__ufrgscca_check_prop -\NewDocumentCommand{\tccoord@calendarfill}{}{% -% - \@ifundefined{tc@tcccalendareventdateh}{\tcccalendareventdate{---}}{}% - \@ifundefined{tc@tcccalendareventdateh}{\tcccalendareventdate{---}}{}% - \@ifundefined{tc@tcccalendareventdateh}{\tcccalendareventdate{---}}{}% - \@ifundefined{tc@tcccalendareventdateh}{\tcccalendareventdate{---}}{}% - \@ifundefined{tc@tcccalendareventdateh}{\tcccalendareventdate{---}}{}% - \@ifundefined{tc@tcccalendareventdateh}{\tcccalendareventdate{---}}{}% - \@ifundefined{tc@tcccalendareventdateh}{\tcccalendareventdate{---}}{}% - \@ifundefined{tc@tcccalendareventdateh}{\tcccalendareventdate{---}}{}% + \starray_get_prop:nnN {activity}{chkunmarked}\l__ufrgscca_check_prop + \prop_gput:Nnn \l__ufrgscca_check_prop {#1}{\__ufrgscca_uncheckedbox:~\ #3} + \starray_gset_prop:nnV {activity}{chkunmarked}\l__ufrgscca_check_prop + + \starray_get_prop:nnN {activity}{chkref}\l__ufrgscca_check_prop + \prop_gput:Nnn \l__ufrgscca_check_prop {#2}{#1} + \starray_gset_prop:nnV {activity}{chkref}\l__ufrgscca_check_prop } +\cs_generate_variant:Nn \prop_gput:Nnn {Nee} -\NewDocumentCommand{\setstudentlist}{mm}{\tcgen@cdef<coord>{list#1}{#2}} -\NewDocumentCommand{\tcreports}{O{}m}{%% - \setreports{#1} - \tccoord@calendarfill% - \iftcif@coord@calendarI% - \tccoord@TCCcalendarI% - \fi% - \iftcif@coord@calendarII% - \tccoord@TCCcalendarII% - \fi% - \@ifundefined{tcdef@coord@list#2}{}{% - \expandafter\expandafter\expandafter\forcsvlist\expandafter\expandafter\expandafter\tccoord@student@exec\expandafter\expandafter\expandafter{\csname tcdef@coord@list#2\endcsname} - } - \iftcif@coord@checklist% - \tccoord@TCCchecklist% - \fi% - \iftcif@coord@reportI% - \tccoord@TCCIreport% - \fi% - \iftcif@coord@report% - \tccoord@TCCreport% - \fi% - \iftcif@coord@boards% - \tccoord@TCCboards% - \fi% - \iftcif@coord@studentlist% - \tccoord@studentlistform% - \fi% -}%% - - -\NewDocumentCommand{\internshipreports}{O{}m}{%% - \setreports{#1} - \@ifundefined{tcdef@coord@list#2}{}{% - \expandafter\expandafter\expandafter\forcsvlist\expandafter\expandafter\expandafter\tccoord@student@exec\expandafter\expandafter\expandafter{\csname tcdef@coord@list#2\endcsname} +\tl_new:N \l__ufrgscca_checkB_tl +\tl_new:N \l__ufrgscca_checkref_tl +\NewDocumentCommand{\checklist}{O{}m}{ + \tl_if_blank:nF {#1} + { \starray_set_iter_from_hash:nn {activity}{#1} } + \starray_get_prop:nnN {student}{checklist}\l__ufrgscca_check_prop + \starray_get_prop:nnN {activity}{chkmarked}\l__ufrgscca_checkB_prop + \starray_get_prop:nnN {activity}{chkref}\l__ufrgscca_checkref_prop + \clist_map_inline:nn {#2} + { + \prop_get:NnNT \l__ufrgscca_checkref_prop {##1} \l__ufrgscca_checkref_tl + { + \prop_get:NeN \l__ufrgscca_checkB_prop {\l__ufrgscca_checkref_tl} \l__ufrgscca_checkB_tl + \prop_gput:Nee \l__ufrgscca_check_prop {\l__ufrgscca_checkref_tl} {\l__ufrgscca_checkB_tl} + } } - \iftcif@coord@checklist% - \tccoord@TCCchecklist% - \fi% - \iftcif@coord@report% - \tccoord@TCCreport% - \fi% -}%% - + \starray_gset_prop:nnV {student}{checklist}{\l__ufrgscca_check_prop} +} -%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%% -% -\iftcif@english% -\input{ufrgscca-en-coord.def}% -\else% -\input{ufrgscca-ptBR-coord.def}% -\fi% +\prop_new:N \l__ufrgscca_check_list_prop +\tl_new:N \l__ufrgscca_tmpx_tl +\tl_new:N \l__ufrgscca_tmpy_tl +\tl_new:N \l__ufrgscca_table_tl + + +\cs_new_protected:Npn \__ufrgscca_checktable_lines:nn #1#2 { + \starray_get_prop:nnN {activity} {chkunmarked} \l__ufrgscca_checkA_prop + \starray_get_prop:nnN {student}{checklist}\l__ufrgscca_check_prop + + \prop_map_inline:Nn \l__ufrgscca_check_prop + { \prop_gput:Nnn \l__ufrgscca_checkA_prop {##1}{##2} } + + \tl_gclear:N \l__ufrgscca_table_tl + \clist_map_inline:nn {#1} + { + \tl_gclear:N \l_tmpa_tl + \clist_map_inline:nn {#2} + { + \tl_gset:Nn \l__ufrgscca_tmpx_tl {##1####1} + \prop_get:NeNTF \l__ufrgscca_checkA_prop {\l__ufrgscca_tmpx_tl} \l__ufrgscca_tmpy_tl + {\tl_gput_right:Ne \l__ufrgscca_table_tl {\l_tmpa_tl~ \l__ufrgscca_tmpy_tl}} + {\tl_gput_right:Ne \l__ufrgscca_table_tl {\l_tmpa_tl~ }} + \tl_gset:Nn \l_tmpa_tl {~&~} + } + \tl_put_right:Nn \l__ufrgscca_table_tl {\\*} + } + \l__ufrgscca_table_tl +} diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-core.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-core.sty index 43aed0aede..1972c1d250 100644 --- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-core.sty +++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-core.sty @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version 1.12 (2023/09/23) +%% This is version {2.0} {2023/11/23} %% %% The list of files that compose this work can be found in the README.md file at %% https://ctan.org/pkg/ufrgscca @@ -23,288 +23,573 @@ %% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym) %%%============================================================================== \NeedsTeXFormat{LaTeX2e}[2022/06/01] -\def\tc@tmp@packname{ufrgscca-core} -\def\tc@tmp@altpackname{ufrgsccacore} -\def\tc@tmp@packdesc{UFRGS/CCA core commands} -\def\tc@tmp@packdate{2023/09/23} -\def\tc@tmp@packversion{1.12} -\let\@exp\expandafter -\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion} -\@exp\@exp\@exp\ProvidesPackage\@exp\@exp\@exp{\@exp\tc@tmp@packname\@exp}\@exp[\tc@tmp@packdate\space v\tc@tmp@packversion\space\tc@tmp@packdesc] + + +\ProvidesExplPackage + {ufrgscca-core} + {2023/11/23} + {2.0} + {UFRGS/CCA core commands} + + +%%%%%%% +%%% +%%% Just an attempt of having my packages info in a regular way +%%% Idea being: { <pck-name> / pkg info } for each and all. +%%% +%%%%%%% +\keys_define:nn { ufrgscca-core / pkg info} + { + name .code:n = {ufrgscca-core} , + prefix .code:n = {ufrgscca} , + date .code:n = {2023/11/23}, + version .code:n = {2.0} , + description .code:n = {UFRGS/CCA~core~commands/data} + } +\cs_if_exist:NF \__codedesc_pkg_info:nn + { + \cs_new_protected:Npn \__codedesc_pkg_info:nn #1#2 + { \keys_set:nn {#1 / pkg info}{#2} } + } +\cs_if_exist:NF \PkgInfo + { \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} } } +\cs_if_exist:NF \PkgDescription + { + \NewDocumentCommand \PkgDescription {m} + { + \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par + } + } +%%%%%%% +%%% End of cut-n-paste +%%%%%%% + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% -% student commands% +% starray based student commands% %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% -\NewDocumentCommand{\tccore@articledefx}{mmmmm}{% - \expandafter\gdef\csname #1article\endcsname{#2}% - \expandafter\gdef\csname #1narticle\endcsname{#3}% - \expandafter\gdef\csname #1Article\endcsname{#4}% - \expandafter\gdef\csname #1Narticle\endcsname{#5}% -}% -\NewDocumentCommand{\tccore@articledefn}{m}{% - \tccore@articledefx{#1}{o(a)}{(a)}{O(A)}{(A)}% -}% -\NewDocumentCommand{\tccore@articledefm}{m}{% - \tccore@articledefx{#1}{o}{}{O}{}% -}% -\NewDocumentCommand{\tccore@articledeff}{m}{% - \tccore@articledefx{#1}{a}{a}{A}{A}% -}% -\NewDocumentCommand{\tccore@articledef}{mm}{% - \ifthenelse{\equal{#2}{m}}{%% - \tccore@articledefm{#1}%% - }{%% - \ifthenelse{\equal{#2}{f}}{%% - \tccore@articledeff{#1}%% - }{%% - \tccore@articledefn{#1}%% - }%% - }%% -}% +%%%%\def\tc@IDrule{30mm}% +%%%%\def\tc@emailrule{40mm}% +%%%%\def\tc@namerule{50mm}% +%%%%\def\tc@titlerule{40mm}% +%%%%\def\tc@phonerule{20mm}% +%%%%\def\tc@agreerule{25mm}% +%%%%\def\tc@daterule{15mm}% -% -% Exception:: those are only used at ufrgscca-forms, but, it make sense to be used at 'local.tex' -% -\cmdfactory<core>{formlocal} -\cmdfactory<core>{tccbrief,tcccoadvisorbrief,tccadvisorsreview} -\cmdfactory<core>{tccArgument} - -\cmdfactory<core>{TCCcoordtitle,TCCIcoordtitle} -\NewDocumentCommand{\TCCcoord}{mO{}}{% - \tcgen@cdef<core>{TCCcoord}{#1}% - \tccore@articledef{tcdef@core@TCCcoord}{#2}%% +\dim_new:N \l__ufrgscca_ID_rule_dim +\dim_new:N \l__ufrgscca_email_rule_dim +\dim_new:N \l__ufrgscca_name_rule_dim +\dim_new:N \l__ufrgscca_title_rule_dim +\dim_new:N \l__ufrgscca_worktitle_rule_dim +\dim_new:N \l__ufrgscca_phone_rule_dim +\dim_new:N \l__ufrgscca_agree_rule_dim +\dim_new:N \l__ufrgscca_date_rule_dim +\dim_new:N \l__ufrgscca_register_rule_dim +\dim_new:N \l__ufrgscca_office_rule_dim +\dim_new:N \l__ufrgscca_field_rule_dim + +\dim_set:Nn \l__ufrgscca_ID_rule_dim {30mm} +\dim_set:Nn \l__ufrgscca_email_rule_dim {40mm} +\dim_set:Nn \l__ufrgscca_name_rule_dim {50mm} +\dim_set:Nn \l__ufrgscca_title_rule_dim {30mm} +\dim_set:Nn \l__ufrgscca_worktitle_rule_dim {60mm} +\dim_set:Nn \l__ufrgscca_phone_rule_dim {20mm} +\dim_set:Nn \l__ufrgscca_agree_rule_dim {25mm} +\dim_set:Nn \l__ufrgscca_date_rule_dim {15mm} +\dim_set:Nn \l__ufrgscca_register_rule_dim {20mm} +\dim_set:Nn \l__ufrgscca_office_rule_dim {25mm} +\dim_set:Nn \l__ufrgscca_field_rule_dim {30mm} + + + + +\starray_new:n {student} +\starray_def_from_keyval:nn {student} + { + first = , + last = , + name = \rule{\l__ufrgscca_name_rule_dim}{.1pt} , + Nproc = \rule{\l__ufrgscca_ID_rule_dim}{.1pt} , + ID = \rule{\l__ufrgscca_ID_rule_dim}{.1pt} , + email = \rule{\l__ufrgscca_email_rule_dim}{.1pt} , + worktitle = \rule{\l__ufrgscca_worktitle_rule_dim}{.1pt} , + article = o(a) , + Article = O(A) , + narticle = (a) , + Narticle = (A) , + carticle = ao(à) , + Carticle = Ao(À) , + remarks = , + checklist = , %%% This shall be a property list of check items + brief = \BlankLines{6} , + reason = \BlankLines{6} , + board-local = {local ~da~ apresentação} , + board-date = {dia~ da~ apresentação} , + board-time = {hora~da~apresentação} , + gradeavrg = 0, + grade = , + flag-graded = \c_false_bool , %%% IF gradeavrg AND finalgrade already calculated (or defined) + flag-exam = \c_false_bool , + flag-ff = \c_false_bool , + flag-dismiss = \c_false_bool , %%% IF it was the 1st semester. + flag-newpage = \c_false_bool , %% if it should go in a new page (board) + flag-distinctboard = \c_false_bool , %% if advisor isn't in the board + flag-approved = \c_false_bool , + flag-coadvisor = \c_false_bool , + advisor . struct = { + first = , + last = , + name = \rule{\l__ufrgscca_name_rule_dim}{.1pt}, + institution = \rule{\l__ufrgscca_name_rule_dim}{.1pt}, + title = \rule{\l__ufrgscca_title_rule_dim}{.1pt} , + email = \rule{\l__ufrgscca_email_rule_dim}{.1pt} , + phone = \rule{\l__ufrgscca_phone_rule_dim}{.1pt} , + article = o(a) , + Article = O(A) , + narticle = (a) , + Narticle = (A) , + carticle = ao(à) , + Carticle = Ao(À) , + assessment = \BlankLines{6} + } , + coadvisor . struct = { + first = , + last = , + name = \rule{\l__ufrgscca_name_rule_dim}{.1pt}, + institution = \rule{\l__ufrgscca_name_rule_dim}{.1pt}, + title = \rule{\l__ufrgscca_title_rule_dim}{.1pt} , + email = \rule{\l__ufrgscca_email_rule_dim}{.1pt} , + phone = \rule{\l__ufrgscca_phone_rule_dim}{.1pt} , + article = o(a) , + Article = O(A) , + narticle = (a) , + Narticle = (A) , + carticle = ao(à) , + Carticle = Ao(À) , + reason = \BlankLines{6} + } , + reviewer . struct = { + first = , + last = , + name = \rule{\l__ufrgscca_name_rule_dim}{.1pt}, + institution = \rule{\l__ufrgscca_name_rule_dim}{.1pt}, + title = \rule{\l__ufrgscca_title_rule_dim}{.1pt} , + email = \rule{\l__ufrgscca_email_rule_dim}{.1pt} , + phone = \rule{\l__ufrgscca_phone_rule_dim}{.1pt} , + article = o(a) , + Article = O(A) , + narticle = (a) , + Narticle = (A) , + carticle = ao(à) , + Carticle = Ao(À) , + pointA = , + pointB = , + pointC = , + pointD = , + grade = 0 , + gradetype = , + } , + altreviewer . struct = { + first = , + last = , + name = \rule{\l__ufrgscca_name_rule_dim}{.1pt}, + institution = \rule{\l__ufrgscca_name_rule_dim}{.1pt}, + title = \rule{\l__ufrgscca_title_rule_dim}{.1pt} , + email = \rule{\l__ufrgscca_email_rule_dim}{.1pt} , + phone = \rule{\l__ufrgscca_phone_rule_dim}{.1pt} , + article = o(a) , + Article = O(A) , + narticle = (a) , + Narticle = (A) , + carticle = ao(à) , + Carticle = Ao(À) + } , + internship . struct = { + company = \rule{\l__ufrgscca_name_rule_dim}{.1pt}, + field = \rule{\l__ufrgscca_field_rule_dim}{.1pt}, + start = \rule{\l__ufrgscca_date_rule_dim}{.1pt}, + end = \rule{\l__ufrgscca_date_rule_dim}{.1pt}, + length = \rule{\l__ufrgscca_date_rule_dim}{.1pt}, + } , + tutor . struct = { + first = , + last = , + name = \rule{\l__ufrgscca_name_rule_dim}{.1pt}, + title = \rule{\l__ufrgscca_title_rule_dim}{.1pt} , + email = \rule{\l__ufrgscca_email_rule_dim}{.1pt} , + phone = \rule{\l__ufrgscca_phone_rule_dim}{.1pt} , + article = o(a) , + Article = O(A) , + narticle = (a) , + Narticle = (A) , + carticle = ao(à) , + Carticle = Ao(À) + } , + supervisor . struct = { + first = , + last = , + name = \rule{\l__ufrgscca_name_rule_dim}{.1pt}, + register = \rule{\l__ufrgscca_name_rule_dim}{.1pt}, + title = \rule{\l__ufrgscca_title_rule_dim}{.1pt} , + office = \rule{\l__ufrgscca_office_rule_dim}{.1pt} , + email = \rule{\l__ufrgscca_email_rule_dim}{.1pt} , + phone = \rule{\l__ufrgscca_phone_rule_dim}{.1pt} , + article = o(a) , + Article = O(A) , + narticle = (a) , + Narticle = (A) , + carticle = ao(à) , + Carticle = Ao(À) + } , + } + + +\prop_new:N \l__ufrgscca_forms_prop +\starray_new:n {activity} +\starray_def_from_keyval:nn {activity} + { + name = Nome~ da~ Atividade , + acronym = ACRO , + coord . struct = + { + name = Nome~ do(a)~ Coordenador(a) , + title = Coordenador(a)~ de , + article = o(a) , + Article = O(A) , + narticle = (a) , + Narticle = (A) , + carticle = ao(à) , + Carticle = Ao(À) + } , + calendar . struct = + { + date = {-Dia-} , + week = {-semana-} , + event = {-Descrição-} , + } , + chkmarked = , %%% This shall be a prop list of marked itens + chkunmarked = , %%% This shall be a prop list of unmarked itens + chkref = , %%% This shall be a prop list of ref itens + } + +\NewDocumentCommand{\NewActivity}{m} { + \starray_new_term:nn {activity}{#1} + \starray_new_term:nn {activity.coord}{} + \starray_gset_prop:nnV {activity}{checkmarked}\c_empty_prop + \starray_gset_prop:nnV {activity}{checkunmarked}\c_empty_prop + \starray_gset_prop:nnV {activity}{checkref}\c_empty_prop } -\cmdfactory<core>{internshipcoordtitle} -\NewDocumentCommand{\internshipcoord}{mO{}}{% - \tcgen@cdef<core>{internshipcoord}{#1}% - \tccore@articledef{tcdef@core@internshipcoord}{#2}%% + +\NewDocumentCommand{\ActivitySet}{O{}mm} { + \tl_if_blank:nTF {#1} + { + \starray_set_prop:nnn {activity}{name}{#3} + \starray_set_prop:nnn {activity}{acronym}{#2} + } + { + \starray_set_prop:nnn {activity[#1]}{name}{#3} + \starray_set_prop:nnn {activity[#1]}{acronym}{#2} + } +} + +\NewDocumentCommand{\ActivitySetCoordTitle}{O{}m} { + \tl_if_blank:nTF {#1} + { \starray_set_prop:nnn {activity.coord}{title}{#2} } + { \starray_set_prop:nnn {activity[#1].coord}{title}{#2} } } -\cmdfactory<core>{coursecoordtitle}% -\NewDocumentCommand{\coursecoord}{mO{}}{% - \tcgen@cdef<core>{coursecoord}{#1}% - \tccore@articledef{tcdef@core@coursecoord}{#2}%% +\NewDocumentCommand{\ActivitySetCoord}{O{}mO{}}{ + \tl_if_blank:nTF {#1} + { + \starray_gset_prop:nnn {activity.coord}{name}{#2} + \__ufrgscca_setgender:nn {activity.coord}{#3} + } + { + \starray_gset_prop:nnn {activity[#1].coord}{name}{#2} + \__ufrgscca_setgender:nn {activity[#1].coord}{#3} + } } + +\NewDocumentCommand{\ActivitySelect}{m}{ \starray_set_iter_from_hash:nn {activity}{#1} } + + +\NewDocumentCommand{\Activity}{O{}m}{ + \tl_if_blank:nTF {#1} + { \starray_get_prop:nn {activity}{#2} } + { \starray_get_prop:nn {activity[#1]}{#2} } +} +\NewDocumentCommand{\ActivityCoord}{O{}m}{ + \tl_if_blank:nTF {#1} + { \starray_get_prop:nn {activity.coord}{#2} } + { \starray_get_prop:nn {activity[#1].coord}{#2} } +} + + +\NewDocumentCommand{\ActivityCalLine}{O{}m}{ + \tl_if_blank:nF {#1} + {\starray_set_iter_from_hash:nn {activity}{#1}} + \starray_set_iter_from_hash:nn {activity.calendar}{#2} + \starray_get_prop:nn {activity.calendar}{date} & \starray_get_prop:nn {activity.calendar}{week} & \starray_get_prop:nn {activity.calendar}{event} +} + + % -% -\def\tccore@ref@advisor{tc@student\Alph{tc@studentcount}@advisor} -\def\tccore@ref@coadvisor{tc@student\Alph{tc@studentcount}@coadvisor} -\def\tccore@ref@tutor{tc@student\Alph{tc@studentcount}@tutor} -\def\tccore@ref@supervisor{tc@student\Alph{tc@studentcount}@supervisor} -\def\tccore@ref@internship{tc@student\Alph{tc@studentcount}@internship} - -\NewDocumentCommand{\tccore@examiners}{m}{\def\tc@@examiners{tc@student\Alph{tc@studentcount}@#1}}% -\def\tccore@ref@examiner{\tc@@examiners} -\def\tccore@ref@student{tc@student\Alph{tc@studentcount}} -\def\tccore@ref@coursecoord{tcdef@core@coursecoord} -\def\tccore@ref@TCCcoord{tcdef@core@TCCcoord} -\def\tccore@ref@internshipcoord{tcdef@core@internshipcoord} - -\NewDocumentCommand{\tccore@@ref}{mm}{\expandafter\csname\csname tccore@ref@#1\endcsname#2\endcsname}% -% -% -\let\tc@org@author\author -% -\newcounter{tc@studentcount}% -\RenewDocumentCommand{\author}{mmO{}}{% - \stepcounter{tc@studentcount}% - \expandafter\gdef\csname tc@student\Alph{tc@studentcount}last\endcsname{#1}% - \expandafter\gdef\csname tc@student\Alph{tc@studentcount}first\endcsname{#2}% - \expandafter\gdef\csname tc@student\Alph{tc@studentcount}\endcsname{#2 #1}% - \tccore@articledef{tc@student\Alph{tc@studentcount}}{#3}%% -}% -% -\NewDocumentCommand{\authorinfo}{O{}mm}{% - \expandafter\gdef\csname tc@student\Alph{tc@studentcount}Nproc\endcsname{#1}% - \expandafter\gdef\csname tc@student\Alph{tc@studentcount}ID\endcsname{#2}% - \expandafter\gdef\csname tc@student\Alph{tc@studentcount}email\endcsname{#3}% -}% -\NewDocumentCommand{\student}{mmO{}}{\author{#1}{#2}[#3]}% -\NewDocumentCommand{\studentinfo}{O{}mm}{\authorinfo[#1]{#2}{#3}}% -%---------- -%---------- -% -\NewDocumentCommand{\tccore@ProfFields}{mmmmm}{%% - \expandafter\gdef\csname tc@student\Alph{tc@studentcount}@#1last\endcsname{#3}%% - \expandafter\gdef\csname tc@student\Alph{tc@studentcount}@#1first\endcsname{#4}%% - \expandafter\gdef\csname tc@student\Alph{tc@studentcount}@#1\endcsname{#2~#4 #3}%% - \tccore@articledef{tc@student\Alph{tc@studentcount}@#1}{#5}% +\cs_new_protected:Npn \__ufrgscca_setgender:nn #1#2 + { + \str_if_eq:nnT {#2}{m} + { + \starray_gset_from_keyval:nn {#1} + { + article = o , + Article = O , + narticle = , + Narticle = , + carticle = ao , + Carticle = Ao + } + } + \str_if_eq:nnT {#2}{f} + { + \starray_gset_from_keyval:nn {#1} + { + article = a , + Article = A , + narticle = a , + Narticle = A , + carticle = à , + Carticle = À + } + } + } + + +\NewDocumentCommand{\student}{O{}mmO{}}{% + \tl_if_blank:nTF {#1} + {\starray_new_term:nn {student}{}} + {\starray_new_term:nn {student}{#1}} + \starray_gset_from_keyval:nn {student} + { + first = {#3} , + last = {#2} , + name = {#3~ #2} , + } + \__ufrgscca_setgender:nn {student}{#4} + \starray_gset_prop:nnV {student}{checklist}\c_empty_prop }% -\NewDocumentCommand{\tccore@ProfInfo}{mmmmm}{%% - \expandafter\gdef\csname tc@student\Alph{tc@studentcount}@#1institution\endcsname{#2}%% - \expandafter\gdef\csname tc@student\Alph{tc@studentcount}@#1titleinfo\endcsname{#3}%% - \expandafter\gdef\csname tc@student\Alph{tc@studentcount}@#1email\endcsname{#4}%% - \expandafter\gdef\csname tc@student\Alph{tc@studentcount}@#1phone\endcsname{#5}%% + % +\NewDocumentCommand{\eDataSet}{m}{ + \starray_term_syntax:n{#1} +} + +\cs_new:Npn \eDataFields #1 + { \starray_parsed_get_prop:n{#1} } + + +\NewDocumentCommand{\DataFields}{mm}{ + \starray_get_prop:nn{#1}{#2} +} +\NewDocumentCommand{\SetReviewer}{m}{ + \starray_set_iter:nn {student.reviewer}{#1} +} + % + +\NewDocumentCommand{\studentCoadvCase}{mm}{ + \starray_term_syntax:n{student} + \bool_if:nTF {\starray_parsed_get_prop:n{flag-coadvisor}} + {#1} + {#2} +} + + + +\NewDocumentCommand{\distinctboard}{}{ + \starray_gset_prop:nnn {student}{flag-distinctboard}{\c_true_bool} +} + +\NewDocumentCommand{\studentDistinctBoardCase}{mm} + { + \starray_term_syntax:n{student} + \bool_if:nTF {\starray_parsed_get_prop:n{flag-distinctboard}} + {#1} + {#2} + } + + +\NewDocumentCommand{\studentiterate}{m}{ + \starray_iterate_over:nn{student}{#1} +} + + +\NewDocumentCommand{\worktitle}{m}{%% + \starray_gset_prop:nnn {student}{worktitle}{#1} +} + +\NewDocumentCommand{\workbrief}{m}{ + \starray_gset_prop:nnn {student}{brief}{#1} +} + +\NewDocumentCommand{\workchange}{m}{ + \starray_gset_prop:nnn {student}{reason}{#1} +} + +\NewDocumentCommand{\advisorreview}{m}{ + \starray_gset_prop:nnn {student.advisor}{assessment}{#1} +} + +\NewDocumentCommand{\coadvisorreason}{m}{ + \starray_gset_prop:nnn {student.coadvisor}{reason}{#1} +} + + + +\NewDocumentCommand{\studentinfo}{O{}mm}{% + \starray_gset_from_keyval:nn {student} + { + Nproc = {#1} , + ID = {#2} , + email = {#3} , + } }% -% -% -% -\newcounter{tc@examinercount}[tc@studentcount]% -% + + +\bool_if:NT \l__ufrgscca_oldrenews_bool + { + \RenewDocumentCommand{\author}{O{}mmO{}}{\student[#1]{#2}{#3}[#4]}% + \NewDocumentCommand{\authorinfo}{O{}mm}{\studentinfo[#1]{#2}{#3}}% + \NewDocumentCommand{\title}{m}{\worktitle{#1}}% + } + + +\NewDocumentCommand{\studentselect}{m}{ \starray_set_iter_from_hash:nn {student}{#1} } + +\cs_new_protected:Npn \__ufrgscca_set_prof:nnnnn #1#2#3#4#5 + { + \starray_gset_from_keyval:nn {student.#1} + { + last = {#3} , + first = {#4} , + name = {#2~#4~ #3} , + } + \__ufrgscca_setgender:nn {student.#1}{#5} + } + + +\cs_new_protected:Npn \__ufrgscca_set_prof_info:nnnnn #1#2#3#4#5 + { + \starray_gset_from_keyval:nn {student.#1} + { + institution = {#2} , + title = {#3} , + email = {#4} , + phone = {#5} , + } + } + + \NewDocumentCommand{\advisor}{O{}mmO{}}{%% - \tccore@ProfFields{advisor}{#1}{#2}{#3}{#4}%% -%%% the advisor is also the first examiner if not @nBoard% - \@ifundefined{tc@nBoard}{\examiner[#1]{#2}{#3}[#4]}{}%% -}% + \starray_new_term:nn {student.advisor}{} + \__ufrgscca_set_prof:nnnnn {advisor}{#1}{#2}{#3}{#4} + \starray_term_syntax:n{student} + \bool_if:nF {\starray_parsed_get_prop:n{flag-distinctboard}} + { \examiner[#1]{#2}{#3}[#4] } +} + \NewDocumentCommand{\advisorinfo}{mmmm}{%% - \tccore@ProfInfo{advisor}{#1}{#2}{#3}{#4}%% -%%% the advisor is also the first examiner if not @nBoard% - \@ifundefined{tc@nBoard}{\examinerinfo{#1}{#2}{#3}{#4}}{}%% + \__ufrgscca_set_prof_info:nnnnn {advisor}{#1}{#2}{#3}{#4} + \starray_term_syntax:n{student} + \bool_if:nF {\starray_parsed_get_prop:n{flag-distinctboard}} + { \examinerinfo{#1}{#2}{#3}{#4} } }% -% + + \NewDocumentCommand{\coadvisor}{O{}mmO{}}{%% - \tccore@ProfFields{coadvisor}{#1}{#2}{#3}{#4}%% + \starray_new_term:nn {student.coadvisor}{} + \__ufrgscca_set_prof:nnnnn {coadvisor}{#1}{#2}{#3}{#4} + \starray_set_prop:nnn {student}{flag-coadvisor}{\c_true_bool} }% + \NewDocumentCommand{\coadvisorinfo}{mmmm}{%% - \tccore@ProfInfo{coadvisor}{#1}{#2}{#3}{#4}%% + \__ufrgscca_set_prof_info:nnnnn {coadvisor}{#1}{#2}{#3}{#4} }% -% -% + + +\NewDocumentCommand{\coadvisoremptyifnone}{}{%% + \starray_get_cnt:nN {student.coadvisor} \l_tmpa_int + \int_if_zero:nTF \l_tmpa_int + { \starray_new_term:nn {student.coadvisor}{} } + {} +}% + + \NewDocumentCommand{\tutor}{O{}mmO{}}{%% - \tccore@ProfFields{tutor}{#1}{#2}{#3}{#4}%% + \starray_new_term:nn {student.tutor}{} + \__ufrgscca_set_prof:nnnnn {tutor}{#1}{#2}{#3}{#4} }% + \NewDocumentCommand{\tutorinfo}{mmmm}{%% - \tccore@ProfInfo{tutor}{#1}{#2}{#3}{#4}%% + \__ufrgscca_set_prof_info:nnnnn {tutor}{#1}{#2}{#3}{#4} }% -% -% + \NewDocumentCommand{\supervisor}{O{}mmO{}}{%% - \tccore@ProfFields{supervisor}{#1}{#2}{#3}{#4}%% + \starray_new_term:nn {student.supervisor}{} + \__ufrgscca_set_prof:nnnnn {supervisor}{#1}{#2}{#3}{#4} }% \NewDocumentCommand{\supervisorinfo}{mmmm}{%% - \expandafter\gdef\csname tc@student\Alph{tc@studentcount}@supervisorregister\endcsname{#1}%% - \expandafter\gdef\csname tc@student\Alph{tc@studentcount}@supervisoroffice\endcsname{#2}%% - \expandafter\gdef\csname tc@student\Alph{tc@studentcount}@supervisoremail\endcsname{#3}%% - \expandafter\gdef\csname tc@student\Alph{tc@studentcount}@supervisorphone\endcsname{#4}%% + \starray_gset_from_keyval:nn {student.supervisor} + { + register = {#1} , + office = {#2} , + email = {#3} , + phone = {#4} , + } }% \NewDocumentCommand{\internship}{mmmmm}{%% - \expandafter\gdef\csname tc@student\Alph{tc@studentcount}@internshipcompany\endcsname{#1}%% - \expandafter\gdef\csname tc@student\Alph{tc@studentcount}@internshipfield\endcsname{#2}%% - \expandafter\gdef\csname tc@student\Alph{tc@studentcount}@internshipstart\endcsname{#3}%% - \expandafter\gdef\csname tc@student\Alph{tc@studentcount}@internshipend\endcsname{#4}%% - \expandafter\gdef\csname tc@student\Alph{tc@studentcount}@internshiplength\endcsname{#5}%% + \starray_new_term:nn {student.internship}{} + \starray_gset_from_keyval:nn {student.internship} + { + company = {#1} , + field = {#2} , + start = {#3} , + end = {#4} , + length = {#5} , + } }% -% -% + \NewDocumentCommand{\examiner}{O{}mmO{}}{%% - \stepcounter{tc@examinercount}%% - \tccore@ProfFields{examiner\Alph{tc@examinercount}}{#1}{#2}{#3}{#4}%% + \starray_new_term:nn {student.reviewer}{} + \__ufrgscca_set_prof:nnnnn {reviewer}{#1}{#2}{#3}{#4} }% \NewDocumentCommand{\examinerinfo}{mmmm}{%% - \tccore@ProfInfo{examiner\Alph{tc@examinercount}}{#1}{#2}{#3}{#4}%% + \__ufrgscca_set_prof_info:nnnnn {reviewer}{#1}{#2}{#3}{#4} }% -% -\newcounter{tc@altexaminercount}[tc@studentcount]% + \NewDocumentCommand{\altexaminer}{O{}mmO{}}{%% - \stepcounter{tc@altexaminercount}%% - \tccore@ProfFields{altexaminer\Alph{tc@altexaminercount}}{#1}{#2}{#3}{#4}%% + \starray_new_term:nn {student.altreviewer}{} + \__ufrgscca_set_prof:nnnnn {altreviewer}{#1}{#2}{#3}{#4} }% \NewDocumentCommand{\altexaminerinfo}{mmmm}{%% - \tccore@ProfInfo{altexaminer\Alph{tc@altexaminercount}}{#1}{#2}{#3}{#4}%% -}% -% -%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%% -% -% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -%% assure that student/advisor/examiners... commands are defined with underlines (if not already defined)% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\def\tc@IDrule{30mm}% -\def\tc@emailrule{40mm}% -\def\tc@namerule{50mm}% -\def\tc@titlerule{40mm}% -\def\tc@phonerule{20mm}% -\def\tc@agreerule{25mm}% -\def\tc@daterule{15mm}% -%%% -%% -%%% -\NewDocumentCommand{\tccore@emptyfields}{}{% - - \@ifundefined{tc@studentA}{% - \student{\rule{\tc@namerule}{.1pt}}{}% - \studentinfo{\rule{\tc@IDrule}{.1pt}}{\rule{\tc@emailrule}{.1pt}}% - }{}% - \@ifundefined{tc@studentA@advisor}{% - \advisor{\rule{\tc@namerule}{.1pt}}{}% - \advisorinfo{}{\rule{\tc@titlerule}{.1pt}}{\rule{\tc@emailrule}{.1pt}}{\rule{\tc@phonerule}{.1pt}}% - }{}% -% - \@ifundefined{tc@studentA@examinerC}{% - \examiner{\rule{\tc@namerule}{.1pt}}{}% - \examinerinfo{}{\rule{\tc@titlerule}{.1pt}}{\rule{\tc@emailrule}{.1pt}}{\rule{\tc@phonerule}{.1pt}}% - }{}% - \@ifundefined{tc@studentA@examinerC}{% - \examiner{\rule{\tc@namerule}{.1pt}}{}% - \examinerinfo{}{\rule{\tc@titlerule}{.1pt}}{\rule{\tc@emailrule}{.1pt}}{\rule{\tc@phonerule}{.1pt}}% - }{}% - \@ifundefined{tc@studentA@examinerC}{% - \examiner{\rule{\tc@namerule}{.1pt}}{}% - \examinerinfo{}{\rule{\tc@titlerule}{.1pt}}{\rule{\tc@emailrule}{.1pt}}{\rule{\tc@phonerule}{.1pt}}% - }{}% - \@ifundefined{tc@studentA@altexaminerA}{% - \altexaminer{\rule{\tc@namerule}{.1pt}}{}% - \altexaminerinfo{}{\rule{\tc@titlerule}{.1pt}}{\rule{\tc@emailrule}{.1pt}}{\rule{\tc@phonerule}{.1pt}}% - }{}% - % - \@ifundefined{tc@studentA@supervisor}{% - \supervisor{\rule{\tc@namerule}{.1pt}}{}% - \supervisorinfo{\rule{\tc@phonerule}{.1pt}}{\rule{\tc@titlerule}{.1pt}}{\rule{\tc@emailrule}{.1pt}}{\rule{\tc@phonerule}{.1pt}}% - }{}% - % - \@ifundefined{tc@studentA@tutor}{% - \tutor{\rule{\tc@namerule}{.1pt}}{}% - \tutorinfo{}{\rule{\tc@titlerule}{.1pt}}{\rule{\tc@emailrule}{.1pt}}{\rule{\tc@phonerule}{.1pt}}% - }{}% - % - % - \@ifundefined{tc@studentA@internshipcompany}{% - \internship{\rule{\tc@namerule}{.1pt}}{\rule{\tc@titlerule}{.1pt}}{\rule{\tc@daterule}{.1pt}}{\rule{\tc@daterule}{.1pt}}{\rule{\tc@daterule}{.1pt}}% - }{}% - - % - % add an \iftcif@forms !!! - % - \@ifundefined{tcdef@core@tccbrief}{% - \tccbrief{\tcdef@core@formsblanklines}% - }{}% - \@ifundefined{tcdef@core@tccArgument}{% - \tccArgument{\tcdef@core@formsblanklines}% - }{}% - \@ifundefined{tcdef@core@tcccoadvisorbrief}{% - \tcccoadvisorbrief{\tcdef@core@formsblanklines}% - }{}% - \@ifundefined{tcdef@core@tccadvisorsreview}{% - \tccadvisorsreview{\tcdef@core@formsblanklines}% - }{}% + \__ufrgscca_set_prof_info:nnnnn {altreviewer}{#1}{#2}{#3}{#4} }% -\NewDocumentCommand{\tccore@resetfields}{}{% - \setcounter{tc@studentcount}{0} - \csundef{tc@studentA} - \csundef{tc@studentA@advisor} - \csundef{tc@studentA@coadvisor} - \csundef{tc@studentA@examinerC} - \csundef{tc@studentA@altexaminerA} - \csundef{tc@studentA@supervisor} - \csundef{tc@studentA@tutor} - \csundef{tc@studentA@internshipcompany} -% \csundef{tc@studentA@internshipfield} -% \csundef{tc@studentA@internshipstart} -% \csundef{tc@studentA@internshipend} -% \csundef{tc@studentA@internshiplength} - \csundef{tcdef@core@tccbrief} - \csundef{tcdef@core@tccArgument} - \csundef{tcdef@core@tcccoadvisorbrief} - \csundef{tcdef@core@tccadvisorsreview} -} + +\cs_new_protected:Npn \__ufrgscca_emptyfields: + { + \starray_new_term:nn {student}{empty} + \starray_new_term:nn {student.advisor}{} + \starray_new_term:nn {student.coadvisor}{} + \starray_new_term:nn {student.reviewer}{} + \starray_new_term:nn {student.reviewer}{} + \starray_new_term:nn {student.reviewer}{} + \starray_new_term:nn {student.altreviewer}{} + \starray_new_term:nn {student.supervisor}{} + \starray_new_term:nn {student.tutor}{} + \starray_new_term:nn {student.internship}{} + } + +\def\emptybox{\framebox[3em]{\color{white}W}} + diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover-ptBR.tex b/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover-ptBR.tex new file mode 100644 index 0000000000..cb385e9cc6 --- /dev/null +++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover-ptBR.tex @@ -0,0 +1,322 @@ +%%%============================================================================== +%% Copyright 2022-23 by Alceu Frigeri +%% +%% This work may be distributed and/or modified under the conditions of +%% +%% * The [LaTeX Project Public License](http://www.latex-project.org/lppl.txt), +%% version 1.3c (or later), and/or +%% * The [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html), +%% version 3 (or later) +%% +%% This work has the LPPL maintenance status *maintained*. +%% +%% The Current Maintainer of this work is Alceu Frigeri +%% +%% This is version {2.0} {2023/11/23} +%% +%% The list of files that compose this work can be found in the README.md file at +%% https://ctan.org/pkg/ufrgscca +%% +%%%============================================================================== +%% UFRGS stands for "Federal University of Rio Grande do Sul" in south Brazil +%% EE stands for "Engineering School" +%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym) +%%%============================================================================== + + +%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%% + + +\SetTerms{% + advisor.descpage = % + {% + \noindent% + \studentCoadvCase{% + \UseTerm{advisors}:\\ + \DataFields{student.advisor}{name}\\[1ex] + \DataFields{student.coadvisor}{name} + }{% + \UseTerm{advisor}:\\ + \DataFields{student.advisor}{name} + } + } , + advisor.approvalpage = % + {% + \noindent% + \studentCoadvCase{% + \UseTerm{advisors}:\\ + \DataFields{student.advisor}{name}, \DataFields{student.advisor}{institution}\\ + \DataFields{student.advisor}{title}\\[1ex] + \DataFields{student.coadvisor}{name}, \DataFields{student.coadvisor}{institution}\\ + \DataFields{student.coadvisor}{title} + }{ + \UseTerm{advisor}:\\ + \DataFields{student.advisor}{name}, \DataFields{student.advisor}{institution}\\ + \DataFields{student.advisor}{title} + } + } , + internship.tutorapproval = + { ~\\ + \noindent\UseTerm{tutor}:\\ + \DataFields{student.tutor}{name}, \DataFields{student.tutor}{institution}\\ + \DataFields{student.tutor}{title}\\[1ex] + + \noindent\UseTerm{supervisor}:\\ + \DataFields{student.supervisor}{name}, \DataFields{student.supervisor}{institution}\\ + \DataFields{student.supervisor}{office}\\ + \DataFields{student.internship}{company}\\ + + + } , + cover.students = % + {% + \eDataSet{student} + \centering{\MakeUppercase{\eDataFields{name}} - \eDataFields{ID}} + } , + cover.topbase = % + {% + \centering + \MakeUppercase{\UseHeading{university}}\\ + \MakeUppercase{\UseHeading{unit}}\\ + \MakeUppercase{\UseHeading{course}} + } , + cover.title = % + {% + \eDataSet{student} + \centering\textbf{\MakeUppercase{\eDataFields{worktitle}}} + } , + cover.bottom = {% + \centering \UseConst{publ.city}\\ \UseConst{publ.date}\par + } , + ppc.top = % + {% + \centering + \MakeUppercase{\UseHeading{university}}\\ + \MakeUppercase{\UseHeading{unit}}\\ + \MakeUppercase{\UseHeading{ppc.comgrad}}\\ + \MakeUppercase{\UseHeading{ppc.nde}}\\ + \MakeUppercase{\UseHeading{ppc.course}}\\ + + } , + report.top = % + {% + \centering + \MakeUppercase{\UseHeading{university}}\\ + \MakeUppercase{\UseHeading{unit}}\\ + \MakeUppercase{\UseHeading{department}}\\ + \MakeUppercase{\UseHeading{class.code}~ -~ \UseHeading{class.name}}\\ + } , +} + +\SetTerms{ + cover.students = + { + \studentiterate + { + \eDataSet{student} + \centering{\MakeUppercase{\eDataFields{name}}~ -~ \eDataFields{ID}}\\ + } + } +} + + +%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%% +%%% +%%% TCC I +%%% +%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%% + +\SetCoverFields{tccI}{clist}{cover,desc,approval} +\SetCoverFields{tccI}{top}{ \UseTerm{cover.topbase} } +\SetCoverFields{tccI}{students}{ \UseTerm{cover.students} } +\SetCoverFields{tccI}{title}{ \UseTerm{cover.title} } +\SetCoverFields{tccI}{bottom}{\centering \UseConst{publ.city}\\ \UseConst{publ.year}\par} + +\SetCoverFields{tccI}{text-descpage}{ \UseTerm{tccI.text-descpage} } + +\SetCoverFields{tccI}{advisor-descpage}{ \UseTerm{advisor.descpage} } + +\SetCoverFields{tccI}{bottom-descpage}{\centering \UseConst{publ.city}\\ \UseConst{publ.year}\par} + +\SetCoverFields{tccI}{text-approvalpage}{ \UseTerm{tccI.text-approvalpage} } +\SetCoverFields{tccI}{advisor-approvalpage}{ \UseTerm{advisor.approvalpage} } + +\SetCoverFields{tccI}{bottom-approvalpage}{ \UseTerm{cover.bottom} } + + +\SetCoverFields{tccI}{board}{ +\noindent \UseTerm{board}:\\ +\indent \DataFields{student.reviewer[2]}{name}, \DataFields{student.reviewer[2]}{institution}\\ +\indent \DataFields{student.reviewer[2]}{title}\\ +\\ +\indent \DataFields{student.reviewer[3]}{name}, \DataFields{student.reviewer[2]}{institution}\\ +\indent \DataFields{student.reviewer[3]}{title}\\ +} + + +\SetCoverFields{tccI}{coord}{ +\noindent\hrulefill\\ +\ActivityCoord[course]{name}\\ +\ActivityCoord[course]{title}\\ +\Activity[course]{name} +} + + + +%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%% +%%% +%%% TCC II +%%% +%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%% + +\SetCoverFields{tccII}{clist}{cover,desc,approval} +\SetCoverFields{tccII}{top}{ \UseTerm{cover.topbase} } +\SetCoverFields{tccII}{students}{ \UseTerm{cover.students} } +\SetCoverFields{tccII}{title}{ \UseTerm{cover.title} } +\SetCoverFields{tccII}{bottom}{\centering \UseConst{publ.city}\\ \UseConst{publ.year}\par} + +\SetCoverFields{tccII}{text-descpage}{ \UseTerm{tccII.text-descpage} } + +\SetCoverFields{tccII}{advisor-descpage}{ \UseTerm{advisor.descpage} } + +\SetCoverFields{tccII}{bottom-descpage}{\centering \UseConst{publ.city}\\ \UseConst{publ.year}\par} + +\SetCoverFields{tccII}{text-approvalpage}{ \UseTerm{tccII.text-approvalpage} } +\SetCoverFields{tccII}{advisor-approvalpage}{ \UseTerm{advisor.approvalpage} } + +\SetCoverFields{tccII}{bottom-approvalpage}{ \UseTerm{cover.bottom} } + + +\SetCoverFields{tccII}{board}{ +\noindent \UseTerm{board}:\\ +\indent \DataFields{student.reviewer[1]}{name}, \DataFields{student.reviewer[1]}{institution}\\ +\indent \DataFields{student.reviewer[1]}{title}\\[-1ex] + +\indent \DataFields{student.reviewer[2]}{name}, \DataFields{student.reviewer[2]}{institution}\\ +\indent \DataFields{student.reviewer[2]}{title}\\[-1ex] + +\indent \DataFields{student.reviewer[3]}{name}, \DataFields{student.reviewer[2]}{institution}\\ +\indent \DataFields{student.reviewer[3]}{title}\\ +} + + +\SetCoverFields{tccII}{coord}{ +\noindent\hrulefill\\ +\ActivityCoord[course]{name}\\ +\ActivityCoord[course]{title}\\ +\Activity[course]{name} +} + + + + +\SetCoverFields{ppc}{clist}{cover} +\SetCoverFields{ppc}{top}{ \UseTerm{ppc.top} } +\SetCoverFields{ppc}{students}{ } +\SetCoverFields{ppc}{title}{ \centering PROJETO~ PEDAGÓGICO~ DO\\ +CURSO~ EM~ ENGENHARIA~ DE\\ +CONTROLE~ E~ AUTOMAÇÃO } +\SetCoverFields{ppc}{bottom}{\centering \UseConst{publ.city}\\ \UseConst{publ.year}\par} + + + +%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%% +%%% +%%% Internship +%%% +%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%% + +\SetCoverFields{internship}{clist}{cover,approval} +\SetCoverFields{internship}{top}{ \UseTerm{cover.topbase} } +\SetCoverFields{internship}{students}{ \UseTerm{cover.students} } +\SetCoverFields{internship}{title}{ \centering\textbf{ RELATÓRIO DE ESTÁGIO SUPERVISIONADO OBRIGATÓRIO EM ENG. DE CONTROLE E AUTOMAÇÃO}} +\SetCoverFields{internship}{bottom}{\centering \UseConst{publ.city}\\ \UseConst{publ.year}\par} + +\SetCoverFields{internship}{text-approvalpage}{ + Este Relatório foi julgado adequado para a obtenção do conceito final na Atividade de Estágio Supervisionado Obrigatório em Eng. de Controle + e Automação e aprovado em sua forma final pel\DataFields{student.tutor}{article} Tutor\DataFields{student.tutor}{narticle}, Supervisor\DataFields{student.supervisor}{narticle} e Coordenador\DataFields{activity[internship].coord}{narticle} da Atividade.} + +\SetCoverFields{internship}{advisor-approvalpage}{ \UseTerm{internship.tutorapproval} } + +\SetCoverFields{internship}{bottom-approvalpage}{ \centering \UseConst{publ.city}\\\UseConst{publ.month}~ \UseConst{publ.year}\par } + + +\SetCoverFields{internship}{board}{} + + +\SetCoverFields{internship}{coord}{ +\noindent\hrulefill\\ +\ActivityCoord[internship]{name}\\ +\ActivityCoord[internship]{title} +} + + + +%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%% +%%% +%%% Nonrequired / Internship-optional +%%% +%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%% + +\SetCoverFields{internship-opt}{clist}{cover,approval} +\SetCoverFields{internship-opt}{top}{ \UseTerm{cover.topbase} } +\SetCoverFields{internship-opt}{students}{ \UseTerm{cover.students} } +\SetCoverFields{internship-opt}{title}{ \centering\textbf{ RELATÓRIO DE ESTÁGIO SUPERVISIONADO NÃO OBRIGATÓRIO EM ENG. DE CONTROLE E AUTOMAÇÃO}} +\SetCoverFields{internship-opt}{bottom}{\centering \UseConst{publ.city}\\ \UseConst{publ.year}\par} + +\SetCoverFields{internship-opt}{text-approvalpage}{ + Este Relatório foi julgado adequado para uma Atividade de Estágio Supervisionado Não Obrigatório em Eng. de Controle + e Automação e aprovado em sua forma final pel\DataFields{student.tutor}{article} Tutor\DataFields{student.tutor}{narticle} e Supervisor\DataFields{student.supervisor}{narticle}.} + +\SetCoverFields{internship-opt}{advisor-approvalpage}{ \UseTerm{internship.tutorapproval} } + +\SetCoverFields{internship-opt}{bottom-approvalpage}{ \centering \UseConst{publ.city}\\\UseConst{publ.month}~ \UseConst{publ.year}\par } + + +\SetCoverFields{internship-opt}{board}{} + + +\SetCoverFields{internship-opt}{coord}{} + + + +%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%% +%%% +%%% class report +%%% +%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%% + +\SetCoverFields{class-report}{clist}{cover} +\SetCoverFields{class-report}{top}{ \UseTerm{report.top} } +\SetCoverFields{class-report}{students}{ \UseTerm{cover.students} } +\SetCoverFields{class-report}{title}{ \UseTerm{cover.title} } +\SetCoverFields{class-report}{bottom}{\centering \UseConst{publ.city}\\\UseConst{publ.month}~ \UseConst{publ.year}\par} + +\SetCoverFields{class-report}{text-approvalpage}{} + +\SetCoverFields{class-report}{advisor-approvalpage}{} + +\SetCoverFields{class-report}{bottom-approvalpage}{} + + +\SetCoverFields{class-report}{board}{} + + +\SetCoverFields{class-report}{coord}{} + + + + + + diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty index e433c3021b..9cfd99a620 100644 --- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty +++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version 1.12 (2023/09/23) +%% This is version {2.0} {2023/11/23} %% %% The list of files that compose this work can be found in the README.md file at %% https://ctan.org/pkg/ufrgscca @@ -23,382 +23,217 @@ %% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym) %%%============================================================================== \NeedsTeXFormat{LaTeX2e}[2022/06/01] -\def\tc@tmp@packname{ufrgscca-cover} -\def\tc@tmp@altpackname{ufrgsccacover} -\def\tc@tmp@packdesc{UFRGS/CCA cover commands} -\def\tc@tmp@packdate{2023/09/23} -\def\tc@tmp@packversion{1.12} -\let\@exp\expandafter -\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion} -\@exp\@exp\@exp\ProvidesPackage\@exp\@exp\@exp{\@exp\tc@tmp@packname\@exp}\@exp[\tc@tmp@packdate\space v\tc@tmp@packversion\space\tc@tmp@packdesc] - -\DeclareKeys[ufrgscca-cover]{ - report.usage = load, - report.if = tcif@report, - internship.usage = load, - internship.if = tcif@internship, - nonrequired.usage = load, - nonrequired.if = tcif@nonrequired, -} -\ProcessKeyOptions[ufrgscca-cover]\relax - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% student commands% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\cmdfactory<cover>{course} -\cmdfactory<cover>{courseacronym}% -\cmdfactory<cover>{graduationtitle} -\cmdfactory<cover>{university,universityacronym,universitydivision} -\cmdfactory<cover>{divisiongradcouncil}% -\cmdfactory<cover>{department,classcode,classname,subject}% -\cmdfactory<cover>{secretaryacronym,secdivisionacronym}% -\cmdfactory<cover>{advisorname,coadvisorname} -\cmdfactory<cover>{examinername}% -\cmdfactory<cover>{reportspecificinfo,approvalspecificinfo}% -\cmdfactory<cover>{advisorwidth} -\cmdfactory<cover>{profname,coprofname}% -\cmdfactory<cover>{tutorname,supervisorname}% -\cmdfactory<cover>{internshiptitle}% -\cmdfactory<cover>{internshipinfo}% -% -\advisorwidth{0.55\textwidth}% -% -\NewDocumentCommand{\class}{mm}{\classcode{#1}\classname{#2}}% -% - - -%%%%%%%%%%%%%%%%%%%%%%% -%%%% -%%% cover pages and related macros% -%%%% -%%%%%%%%%%%%%%%%%%%%%%% -\newlength{\tc@formwinvoffset}% -\setlength{\tc@formwinvoffset}{24mm}% -\NewDocumentCommand\tc@formtopbox{O{}+m+m}{%% - \begin{center}%% - \noindent%% - \parbox[t]{\textwidth}{%% - \centering%% - \vbox to \tc@formwinvoffset{%% - \tccover@covertopinfo%% - {\sc #2}% - }%% - }% - - {\bf #3}\@ifundefined{#1}{}{\footnote[1]{\csname #1\endcsname}}%% - \end{center}%% -}% - - -% -\NewDocumentCommand{\tccover@covertopinfo}{}{%% - \@ifundefined{tcdef@cover@university}{}{\MakeUppercase{\tcdef@cover@university}\\}% - \@ifundefined{tcdef@cover@universitydivision}{}{\MakeUppercase{\tcdef@cover@universitydivision}\\}% - \@ifundefined{tcdef@cover@course}{}{\MakeUppercase{\tcdef@cover@course}\\}% - \@ifundefined{tcdef@cover@department}{}{\MakeUppercase{\tcdef@cover@department}\\}%% - \@ifundefined{tcdef@cover@classname}{}{\MakeUppercase{\tcdef@cover@classcode\ --\ \tcdef@cover@classname}\\}% - \@ifundefined{tcdef@cover@subject}{}{\MakeUppercase{\tcdef@cover@subject}}% -}% - - -\NewDocumentCommand{\tccover@coveradvisorinfo}{}{%% - \@ifundefined{tc@studentA@advisor}{}{\vfill{\scshape\tcdef@cover@advisorname}:\\\null\hfill\tc@studentA@advisor}% - \@ifundefined{tc@studentA@coadvisor}{}{\\[6ex]{\scshape\tcdef@cover@coadvisorname}:\\\null\hfill\tc@studentA@coadvisor}% -}% -% -\NewDocumentCommand{\tccover@reportadvisorinfo}{}{%% - \@ifundefined{tc@studentA@advisor}{}{\vfill{\scshape\iftcif@internship\tcdef@cover@advisorname\else\tcdef@cover@profname\fi}:\\\null\hfill\tc@studentA@advisor}% - \@ifundefined{tc@studentA@coadvisor}{}{\\[6ex]{\scshape\iftcif@internship\tcdef@cover@coadvisorname\else\tcdef@cover@coprofname\fi}:\\\null\hfill\tc@studentA@coadvisor}% -}% -% -%%%%%%%%%%%%%%%%%%% -\let\tc@org@maketitle\maketitle -\RenewDocumentCommand{\maketitle}{}{\coverpages}% +\ProvidesExplPackage + {ufrgscca-cover} + {2023/11/23} + {2.0} + {UFRGS/CCA cover commands} -\NewDocumentCommand{\coverpages}{}{%% - \thecoverpage%that´s the first page% - \thetitlepage%that´s the second page (for tcc)% - \tccapprovalpage%that´s the third page (for tcc)% -}% - -\iftcif@report - \RenewDocumentCommand{\coverpages}{}{%% - \thecoverpage%that´s the first page% - }% -\fi - -\iftcif@internship - \AtBeginDocument{\title{\tcdef@cover@internshiptitle}} - \RenewDocumentCommand{\coverpages}{}{%% - \thecoverpage%that´s the first page% - \internapprovalpage%that´s the second page (for internship)% - }% -\fi - -% -%%%%%%%%% +%%%%%%% %%% -%% 1st cover page% +%%% Just an attempt of having my packages info in a regular way +%%% Idea being: { <pck-name> / pkg info } for each and all. %%% -%%%%%%%%% -%% -\newlength{\tc@coverwinwidth}\setlength{\tc@coverwinwidth}{95mm}%% -\newlength{\tc@coverwinheight}\setlength{\tc@coverwinheight}{64mm}%% -\newlength{\tc@coverwinvoffset}\setlength{\tc@coverwinvoffset}{112mm}%% +%%%%%%% +\keys_define:nn { ufrgscca-cover / pkg info} + { + name .code:n = {ufrgscca-cover} , + prefix .code:n = {ufrgscca} , + date .code:n = {2023/11/23}, + version .code:n = {2.0} , + description .code:n = {UFRGS/CCA~ cover~pages} + } +\cs_if_exist:NF \__codedesc_pkg_info:nn + { + \cs_new_protected:Npn \__codedesc_pkg_info:nn #1#2 + { \keys_set:nn {#1 / pkg info}{#2} } + } +\cs_if_exist:NF \PkgInfo + { \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} } } +\cs_if_exist:NF \PkgDescription + { + \NewDocumentCommand \PkgDescription {m} + { + \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par + } + } +%%%%%%% +%%% End of cut-n-paste +%%%%%%% + + +\NewDocumentCommand{\class}{mm}{% + \SetHeadings{% + class.code = {#1} , + class.name = {#2} , + } +}% +% + +\cs_generate_variant:Nn \text_uppercase:n {e} + \NewDocumentCommand{\location}{mm}{%% - \gdef\tc@city{#1}%% - \gdef\tc@state{#2}%% + \SetConsts{% + publ.city = {#1} , + publ.state = {#2} , + } }%% -\NewDocumentCommand{\thecoverpage}{}{%% - \begin{titlepage}% - \noindent\tc@covertopbox% - \vfill% - \iftcif@report{%% - \@ifundefined{tc@studentA@advisor}{}{%% - \hspace*{\fill}\parbox[b]{\tcdef@cover@advisorwidth}{\tccover@reportadvisorinfo}% - \vfill% - }%% - }%% - \else\fi - \centerline{\tc@city}% - \centerline{\tc@date}% - \end{titlepage}%% - \tc@pagebreak -}% -% -% -%%%%%%%%% -%%% -%% 2nd cover page (title page)% -%%% -%%%%%%%%% -\NewDocumentCommand{\thetitlepage}{}{%% - \begin{titlepage}% - \noindent\tc@covertopbox% - \vfill% - \@ifundefined{tcdef@cover@reportspecificinfo}{}{% - \hspace*{\fill}\makebox[.55\textwidth][l]{%% - \parbox[b]{8.5cm}{\tcdef@cover@reportspecificinfo}%% - }% - \vfill% - }% - \@ifundefined{tc@studentA@advisor}{}{% - \hspace*{\fill}\parbox[b]{\tcdef@cover@advisorwidth}{%% - \tccover@coveradvisorinfo% - }% - \vfill% - }% - \centerline{\tc@city}% - \centerline{\tc@date}% - \end{titlepage}% - \tc@pagebreak -}% -% -% -% -\NewDocumentCommand{\tccover@studentdesc}{m}{\@ifundefined{#1}{}{\MakeUppercase{\textbf{\csname #1\endcsname\ - \csname #1ID\endcsname}}\\}} -% - - -\NewDocumentCommand\tc@covertopbox{}{%% - \parbox[t]{\textwidth}{%% - \centering%% - \vbox to \tc@coverwinvoffset{%% - \tccover@covertopinfo\vfill\tc@winbox% - }% - }% -}% +\prop_new:N \l__ufrgscca_coverpages_prop - \NewDocumentCommand\tc@winbox{}{%% - %\fbox{% - \parbox[b]{\tc@coverwinwidth}{%% - \centering\vbox to \tc@coverwinheight{%% - \vspace*{\fill}% - \iftcif@report% - \tccover@studentdesc{tc@studentA}% - \tccover@studentdesc{tc@studentB}% - \tccover@studentdesc{tc@studentC}% - \tccover@studentdesc{tc@studentD}%% - \else% - \tccover@studentdesc{tc@studentA}%% - \fi% - \vspace{\stretch{4}}% - {\large\MakeUppercase{\textbf{\@title}}\par}% - \vfill% - }%% - %}%% - }%% - }% - - - -% -%%%%%%%%% -%%% -%% 3rd cover page (approval page)% -%%% -%%%%%%%%% -\NewDocumentCommand{\tccapprovalpage}{}{%% - \begin{center}% - \noindent\tc@covertopbox% - \vfill% - \@ifundefined{tcdef@cover@approvalspecificinfo}{}{% - \hspace*{\fill}\makebox[.55\textwidth][l]{%% - \parbox[b]{8.5cm}{\tcdef@cover@approvalspecificinfo}%% - }% - \vfill% - }% - \@ifundefined{tc@studentA@advisor}{}{% - \hspace*{\fill}\parbox[b]{.70\textwidth}{%% - \tccover@approvalpageadvisorinfo% - }% - \vfill% - }% - \@ifundefined{tc@studentA@examinerA}{}{% - \hspace*{\fill}\parbox[b]{1.0\textwidth}{\tcdef@cover@examinername:}% - \vfill% - \hspace*{\fill}\parbox[b]{.90\textwidth}{%% - \tccover@approvalpageexaminerinfo% - }% - \vfill% - }% - \@ifundefined{tcdef@core@coursecoord}{}{% - \hspace*{\fill}\parbox[b]{.70\textwidth}{%% - \tccover@approvalpagecoordinfo% - }% - \vfill% - }% - \vfill% - \hfill\tc@city, \tc@monthyeardate - \end{center}% - \tc@pagebreak -}% -% -% -% -% -% -%%%%%%%%% -%%% -%% 2nd cover page (internship, approval page)% -%%% -%%%%%%%%% -\NewDocumentCommand{\internapprovalpage}{}{%% - \begin{center}% - \noindent\tc@covertopbox% - \vfill% - \@ifundefined{tcdef@cover@internshipinfo}{}{% - \hspace*{\fill}\makebox[.55\textwidth][l]{%% - \parbox[b]{8.5cm}{\tcdef@cover@internshipinfo}%% - }% - \vfill% - }% - \@ifundefined{tc@studentA@tutor}{}{% - \hspace*{\fill}\parbox[b]{.70\textwidth}{%% - \tccover@approvalpagetutorinfo% - }% - \vfill% - }% - \@ifundefined{tc@studentA@supervisor}{}{% - \vfill% - \hspace*{\fill}\parbox[b]{.70\textwidth}{%% - \tccover@approvalpagesupervisorinfo% - }% - \vfill% - }% - \iftcif@nonrequired - \else - \@ifundefined{tcdef@core@coursecoord}{}{% - \hspace*{\fill}\parbox[b]{.70\textwidth}{%% - \tccover@approvalpageinternshipcoordinfo% - }% - \vfill% - }% - \fi - \vfill% - \hfill\tc@city, \tc@monthyeardate - \end{center}% - \tc@pagebreak -}% -% -% -% -% -% -\NewDocumentCommand{\tccover@approvalpageadvisorinfo}{}{%% - \@ifundefined{tc@studentA@advisor}{}{%% - \vfill% - \tcdef@cover@advisorname: \hrulefill\\% - \tc@studentA@advisor, \tc@studentA@advisorinstitution\\% - \tc@studentA@advisortitleinfo % - }% -}% -\NewDocumentCommand{\tccover@approvalpagetutorinfo}{}{%% - \@ifundefined{tc@studentA@tutor}{}{%% - \vfill% - \tcdef@cover@tutorname: \hrulefill\\% - \tc@studentA@tutor, \tc@studentA@tutorinstitution\\% - \tc@studentA@tutortitleinfo % - }% -}% - -\NewDocumentCommand{\tccover@@aprovalexaminerinfo}{m}{ - \@ifundefined{#1}{}{%% - \csname #1\endcsname, \csname #1institution\endcsname\\% - \csname #1titleinfo\endcsname\\% - }% -}% -\NewDocumentCommand{\tccover@approvalpageexaminerinfo}{}{%% - \vfill% - \tccover@@aprovalexaminerinfo{tc@studentA@examinerA}% - - \tccover@@aprovalexaminerinfo{tc@studentA@examinerB}% - - \tccover@@aprovalexaminerinfo{tc@studentA@examinerC}% - - \tccover@@aprovalexaminerinfo{tc@studentA@examinerD}% - - \tccover@@aprovalexaminerinfo{tc@studentA@examinerE}% -}% -% -\NewDocumentCommand{\tccover@approvalpagesupervisorinfo}{}{%% - \vfill% - \@ifundefined{tc@studentA@supervisor}{}{%% - \tcdef@cover@supervisorname: \hrulefill\\% - \tc@studentA@supervisor, \tc@studentA@supervisorregister\\% - \tc@studentA@supervisoroffice\\% - }% -}% -% - - -\NewDocumentCommand{\tccover@approvalpagecoordinfo}{}{%% - \@ifundefined{tcdef@core@coursecoord}{}{%% - \vfill% - \hrulefill\\% - \tcdef@core@coursecoord\\% - \tcdef@core@coursecoordtitle\\% - \tcdef@cover@course% - }% -}% -% -\NewDocumentCommand{\tccover@approvalpageinternshipcoordinfo}{}{%% - \@ifundefined{tcdef@core@internshipcoord}{}{%% - \vfill% - \hrulefill\\% - \tcdef@core@internshipcoord\\% - \tcdef@core@internshipcoordtitle\\% - \tcdef@cover@course% - }% -}% - +\NewDocumentCommand{\SetCoverFields}{mm+m}{ + \prop_put:Nnn \l__ufrgscca_coverpages_prop {#1.#2}{#3} +} +\NewDocumentCommand{\MakeCoverPages}{m} + { + \seq_set_from_clist:Ne \l__ufrgscca_tmp_seq {\prop_item:Nn \l__ufrgscca_coverpages_prop {#1.clist} } + + \seq_map_inline:Nn \l__ufrgscca_tmp_seq + { + \keys_set:nn { ufrgscca / layout }{##1 = #1} + } + + } + + +\keys_define:nn { ufrgscca / layout } + { + cover .usage:n = general, + cover .code:n = {\__ufrgscca_cover_page:n{#1}}, + desc .usage:n = general, + desc .code:n = {\__ufrgscca_desc_page:n{#1}}, + approval .usage:n = general, + approval .code:n = {\__ufrgscca_approval_page:n{#1}}, + } + +\cs_generate_variant:Nn \seq_map_inline:Nn {Ne} +\cs_generate_variant:Nn \seq_set_from_clist:Nn {Ne} + +\coffin_new:N \l__ufrgscca_top_coffin +\coffin_new:N \l__ufrgscca_student_coffin +\coffin_new:N \l__ufrgscca_title_coffin +\coffin_new:N \l__ufrgscca_desc_coffin +\coffin_new:N \l__ufrgscca_adv_coffin +\coffin_new:N \l__ufrgscca_board_coffin +\coffin_new:N \l__ufrgscca_coord_coffin + +\dim_new:N \l__ufrgscca_top_ht_dim + +\dim_new:N \l__ufrgscca_student_voffset_dim +\dim_new:N \l__ufrgscca_student_ht_dim + +\dim_new:N \l__ufrgscca_title_voffset_dim +\dim_new:N \l__ufrgscca_title_wd_dim +\dim_new:N \l__ufrgscca_title_ht_dim + +\dim_new:N \l__ufrgscca_desc_wd_dim +\dim_new:N \l__ufrgscca_desc_ht_dim +\dim_new:N \l__ufrgscca_desc_voffset_dim + +\dim_new:N \l__ufrgscca_adv_wd_dim +\dim_new:N \l__ufrgscca_adv_ht_dim +\dim_new:N \l__ufrgscca_adv_voffset_dim + + +\cs_new_protected:Npn \__ufrgscca_cover_page_base:n #1 + { + \dim_gset:Nn \l__ufrgscca_title_wd_dim {0.6\textwidth}% {95mm} + \dim_gset:Nn \l__ufrgscca_desc_wd_dim {0.6\textwidth}% {95mm} + \dim_gset:Nn \l__ufrgscca_adv_wd_dim {0.68\textwidth}% {95mm} + + \vcoffin_gset:Nnn \l__ufrgscca_top_coffin {\textwidth} + { \prop_item:Nn \l__ufrgscca_coverpages_prop {#1.top} } + + \vcoffin_gset:Nnn \l__ufrgscca_student_coffin {\l__ufrgscca_title_wd_dim} + { \prop_item:Nn \l__ufrgscca_coverpages_prop {#1.students} } + + \vcoffin_gset:Nnn \l__ufrgscca_title_coffin {\l__ufrgscca_title_wd_dim} + { \prop_item:Nn \l__ufrgscca_coverpages_prop {#1.title} } + + \dim_gset:Nn \l__ufrgscca_student_ht_dim {\coffin_ht:N \l__ufrgscca_student_coffin} + \dim_gset:Nn \l__ufrgscca_top_ht_dim {\coffin_ht:N \l__ufrgscca_top_coffin} + \dim_gset:Nn \l__ufrgscca_title_voffset_dim {0.29\textheight} %%{0.3\textheight} + \dim_gset:Nn \l__ufrgscca_desc_voffset_dim {0.42\textheight} %%{0.45\textheight} + \dim_gset:Nn \l__ufrgscca_adv_voffset_dim {0.54\textheight} + \dim_gset:Nn \l__ufrgscca_student_voffset_dim {(\l__ufrgscca_title_voffset_dim + \l__ufrgscca_top_ht_dim - \l__ufrgscca_student_ht_dim)/2} + + \coffin_gjoin:NnnNnnnn \l__ufrgscca_top_coffin {hc}{t} \l__ufrgscca_student_coffin {hc}{t} {0pt} {-\l__ufrgscca_student_voffset_dim} + \coffin_gjoin:NnnNnnnn \l__ufrgscca_top_coffin {hc}{t} \l__ufrgscca_title_coffin {hc}{t} {0pt} {-\l__ufrgscca_title_voffset_dim} + } + + + + +\cs_new_protected:Npn \__ufrgscca_cover_page:n #1 + { + \__ufrgscca_cover_page_base:n{#1} + + \noindent\coffin_typeset:Nnnnn \l__ufrgscca_top_coffin {l}{b} {0pt}{0pt} + + \vfill + { \prop_item:Nn \l__ufrgscca_coverpages_prop {#1.bottom} } + %\newpage + \__ufrgscca_clearpage: + } + +\cs_new_protected:Npn \__ufrgscca_desc_page:n #1 + { + \__ufrgscca_cover_page_base:n{#1} + + \vcoffin_gset:Nnn \l__ufrgscca_desc_coffin {\l__ufrgscca_desc_wd_dim} + { \prop_item:Nn \l__ufrgscca_coverpages_prop {#1.text-descpage} } + + \vcoffin_gset:Nnn \l__ufrgscca_adv_coffin {\l__ufrgscca_adv_wd_dim} + { \prop_item:Nn \l__ufrgscca_coverpages_prop {#1.advisor-descpage} } + + \coffin_join:NnnNnnnn \l__ufrgscca_top_coffin {r}{t} \l__ufrgscca_desc_coffin {r}{t} {0pt} {-\l__ufrgscca_desc_voffset_dim} + + %\coffin_join:NnnNnnnn \l__ufrgscca_top_coffin {r}{b} \l__ufrgscca_adv_coffin {r}{t} {0pt} {-3\parsep} + \coffin_join:NnnNnnnn \l__ufrgscca_top_coffin {r}{t} \l__ufrgscca_adv_coffin {r}{t} {0pt} {-\l__ufrgscca_adv_voffset_dim} + + \noindent\coffin_typeset:Nnnnn \l__ufrgscca_top_coffin {l}{b} {0pt}{0pt} + + \vfill + { \prop_item:Nn \l__ufrgscca_coverpages_prop {#1.bottom-descpage} } + %\newpage + \__ufrgscca_clearpage: + } + + +\cs_new_protected:Npn \__ufrgscca_approval_page:n #1 + { + \__ufrgscca_cover_page_base:n{#1} + \vcoffin_gset:Nnn \l__ufrgscca_desc_coffin {\l__ufrgscca_desc_wd_dim} + { \prop_item:Nn \l__ufrgscca_coverpages_prop {#1.text-approvalpage} } + + \vcoffin_gset:Nnn \l__ufrgscca_adv_coffin {\l__ufrgscca_adv_wd_dim} + { \prop_item:Nn \l__ufrgscca_coverpages_prop {#1.advisor-approvalpage} } + + \vcoffin_gset:Nnn \l__ufrgscca_board_coffin {\textwidth} + { \prop_item:Nn \l__ufrgscca_coverpages_prop {#1.board} } + + \vcoffin_gset:Nnn \l__ufrgscca_coord_coffin {\l__ufrgscca_adv_wd_dim} + { \prop_item:Nn \l__ufrgscca_coverpages_prop {#1.coord} } + + \coffin_join:NnnNnnnn \l__ufrgscca_top_coffin {r}{t} \l__ufrgscca_desc_coffin {r}{t} {0pt} {-\l__ufrgscca_desc_voffset_dim} + + %\coffin_join:NnnNnnnn \l__ufrgscca_top_coffin {r}{b} \l__ufrgscca_adv_coffin {r}{t} {0pt} {-3\parsep} + \coffin_join:NnnNnnnn \l__ufrgscca_top_coffin {r}{t} \l__ufrgscca_adv_coffin {r}{t} {0pt} {-\l__ufrgscca_adv_voffset_dim} + + \coffin_join:NnnNnnnn \l__ufrgscca_top_coffin {l}{b} \l__ufrgscca_board_coffin {l}{t} {0pt} {-3\parsep} + \coffin_join:NnnNnnnn \l__ufrgscca_top_coffin {r}{b} \l__ufrgscca_coord_coffin {r}{t} {0pt} {-3\parsep} + + \noindent\coffin_typeset:Nnnnn \l__ufrgscca_top_coffin {l}{b} {0pt}{0pt} + + \vfill + { \prop_item:Nn \l__ufrgscca_coverpages_prop {#1.bottom-approvalpage} } + %\newpage + \__ufrgscca_clearpage: + } diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr-graph.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr-graph.sty deleted file mode 100644 index ccd5247bb6..0000000000 --- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr-graph.sty +++ /dev/null @@ -1,101 +0,0 @@ -%%%============================================================================== -%% Copyright 2022-23 by Alceu Frigeri -%% -%% This work may be distributed and/or modified under the conditions of -%% -%% * The [LaTeX Project Public License](http://www.latex-project.org/lppl.txt), -%% version 1.3c (or later), and/or -%% * The [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html), -%% version 3 (or later) -%% -%% This work has the LPPL maintenance status *maintained*. -%% -%% The Current Maintainer of this work is Alceu Frigeri -%% -%% This is version 1.12 (2023/09/23) -%% -%% The list of files that compose this work can be found in the README.md file at -%% https://ctan.org/pkg/ufrgscca -%% -%%%============================================================================== -%% UFRGS stands for "Federal University of Rio Grande do Sul" in south Brazil -%% EE stands for "Engineering School" -%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym) -%%%============================================================================== -\NeedsTeXFormat{LaTeX2e}[2022/06/01] -\def\tc@tmp@packname{ufrgscca-curr-graph} -\def\tc@tmp@altpackname{tccurrgraph} -\def\tc@tmp@packdesc{UFRGS/CCA graph curricula commands} -\def\tc@tmp@packdate{2023/09/23} -\def\tc@tmp@packversion{1.12beta} -\let\@exp\expandafter -\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion} -\@exp\@exp\@exp\ProvidesPackage\@exp\@exp\@exp{\@exp\tc@tmp@packname\@exp}\@exp[\tc@tmp@packdate\space v\tc@tmp@packversion\space\tc@tmp@packdesc] - - -\RequirePackage{ufrgscca-curr} - - -%%%%%%%%%%% -%%%%%%%%%%% -%%%%%%%%%%% - -\NewDocumentEnvironment{tikzGraphSem}{O{4.2:2.1}D<>{11.5:-18.5}}{% - \StrCut{#1}{:}{\gr@dX}{\gr@dY} - \StrCut{#2}{:}{\gr@xX}{\gr@yY} - \def\gr@Xa{0}\def\gr@Xb{\gr@xX*\gr@dX} - \def\gr@Ya{0}\def\gr@Yb{\gr@yY*\gr@dY} - \begin{tikzpicture}[% - disc/.style={% - ellipse split, double, draw, line width=2pt,% - every text node part/.style={font=\small\bfseries},% - every lower node part/.style={font=\large\bfseries,color=blue}},% - dep/.style={->,dotted,line width=3pt}]% - \begin{scope}\clip(\gr@Xa,\gr@Ya) -- (\gr@Xa,\gr@Yb) -- (\gr@Xb,\gr@Yb) -- (\gr@Xb,\gr@Ya);% - \filldraw[color=red](0.5*\gr@xX*\gr@dX,-0.25*\gr@dY)node{\Huge\textbf{\GraphTitle}};% -}{% - \end{scope}% - \end{tikzpicture}% -} - -\NewDocumentCommand\GraphSem{O{ob}m}{% - \LstClass[\GraphClass]{#2}% - \draw (\csname gr@etidx:\csname gr@et:\gr@sem.idx\endcsname.pos\endcsname*\gr@dX-0.5*\gr@dX,-\gr@dY) node[disc](Et. #2){Etapa #2 \nodepart{lower} \arabic{gr@cred#1},#1};% -} - -\NewDocumentCommand\GraphClass{m}{% - \edef\gr@topic{\csname gr@class:#1.topic\endcsname}% - \edef\gr@color{\csname gr@topic:\gr@topic.color\endcsname}% - \draw[\gr@color] (\csname gr@etidx:\csname gr@et:\gr@sem.idx\endcsname.pos\endcsname*\gr@dX-0.5*\gr@dX,\csname gr@class:#1.pos\endcsname*\gr@dY-1.25*\gr@dY) node[disc](#1){#1 \nodepart{lower} \csname gr@class:#1.cred\endcsname,\csname gr@class:#1.typ\endcsname};% - \LstDep[\GraphDep]{#1}% -} - -\NewDocumentCommand\GraphDep{m}{% - \edef\gr@topic{\csname gr@class:\gr@disc.dep\gr@depSeq:#1.topic\endcsname}% - \xdef\gr@DepColor{\csname gr@topic:\gr@topic.color\endcsname}% - %\xdef\gr@DepColor{\csname gr@class:\gr@disc.dep\gr@depSeq:#1.topic\endcsname}% - \def\gr@angOUT{\gr@ANG} \def\gr@angIN{180-\gr@ANG}% - \xdef\gr@deppos{\csname gr@class:\gr@disc.dep\gr@depSeq:#1.pos\endcsname}% - \def\gr@depcut{\StrCut{\gr@deppos}{:}{\gr@angOUT}{\gr@ANG}}% - \gr@case@angle{\gr@deppos}% - \path[dep,\gr@DepColor] (#1)edge[out=\gr@angOUT,in=\gr@angIN] (\gr@disc);% -} - -\def\gr@Z{0} \def\gr@A{30} \def\gr@B{60} \def\gr@C{80} - -\mkswitch[\gr@depcut]\gr@case@angle -\addcase\gr@case@angle{}{\def\gr@ANG{0}} -\addcase\gr@case@angle{A}{\def\gr@ANG{\gr@A}} -\addcase\gr@case@angle{B}{\def\gr@ANG{\gr@B}} -\addcase\gr@case@angle{C}{\def\gr@ANG{\gr@C}} -\addcase\gr@case@angle{-A}{\def\gr@ANG{-\gr@A}} -\addcase\gr@case@angle{-B}{\def\gr@ANG{-\gr@B}} -\addcase\gr@case@angle{-C}{\def\gr@ANG{-\gr@C}} -\addcase\gr@case@angle{A*}{\def\gr@ANG{\gr@A}\def\gr@angIN{180+\gr@ANG}} -\addcase\gr@case@angle{B*}{\def\gr@ANG{\gr@B}\def\gr@angIN{180+\gr@ANG}} -\addcase\gr@case@angle{C*}{\def\gr@ANG{\gr@C}\def\gr@angIN{180+\gr@ANG}} -\addcase\gr@case@angle{-A*}{\def\gr@ANG{-\gr@A}\def\gr@angIN{180+\gr@ANG}} -\addcase\gr@case@angle{-B*}{\def\gr@ANG{-\gr@B}\def\gr@angIN{180+\gr@ANG}} -\addcase\gr@case@angle{-C*}{\def\gr@ANG{-\gr@C}\def\gr@angIN{180+\gr@ANG}} - - diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr-tab.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr-tab.sty deleted file mode 100644 index 660837626e..0000000000 --- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr-tab.sty +++ /dev/null @@ -1,163 +0,0 @@ -%%%============================================================================== -%% Copyright 2022-23 by Alceu Frigeri -%% -%% This work may be distributed and/or modified under the conditions of -%% -%% * The [LaTeX Project Public License](http://www.latex-project.org/lppl.txt), -%% version 1.3c (or later), and/or -%% * The [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html), -%% version 3 (or later) -%% -%% This work has the LPPL maintenance status *maintained*. -%% -%% The Current Maintainer of this work is Alceu Frigeri -%% -%% This is version 1.12 (2023/09/23) -%% -%% The list of files that compose this work can be found in the README.md file at -%% https://ctan.org/pkg/ufrgscca -%% -%%%============================================================================== -%% UFRGS stands for "Federal University of Rio Grande do Sul" in south Brazil -%% EE stands for "Engineering School" -%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym) -%%%============================================================================== -\NeedsTeXFormat{LaTeX2e}[2022/06/01] -\def\tc@tmp@packname{ufrgscca-curr-tab} -\def\tc@tmp@altpackname{ufrgsccacurrtab} -\def\tc@tmp@packdesc{UFRGS/CCA curricula tabular commands} -\def\tc@tmp@packdate{2023/09/23} -\def\tc@tmp@packversion{1.12beta} -\let\@exp\expandafter -\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion} -\@exp\@exp\@exp\ProvidesPackage\@exp\@exp\@exp{\@exp\tc@tmp@packname\@exp}\@exp[\tc@tmp@packdate\space v\tc@tmp@packversion\space\tc@tmp@packdesc] - -\RequirePackage{longtable} -\RequirePackage{ufrgscca-curr} - -\NewDocumentCommand\TabClass{m}{% - & #1 & \csname gr@class:#1.cred\endcsname & \csname gr@class:#1.typ\endcsname & \multicolumn{2}{J{11cm}}{\csname gr@class:#1.nam\endcsname}\\*% - \edef\gr@disc{#1}% - \ifcsdef{gr@class:#1.depA}{% - & & & & % - & \def\gr@tab{\ }% - \LstDep[\TabDepX]<A>{#1}\\*% - }{}% - \ifcsdef{gr@class:#1.depB}{% - & & & & OU\\*% - & & & & % - & \def\gr@tab{\ }% - \LstDep[\TabDepX]<B>{#1}\\*% - }{}% - \ifcsdef{gr@class:#1.depC}{% - & & & & OU\\*% - & & & & % - & \def\gr@tab{\ }% - \LstDep[\TabDepX]<C>{#1}\\*% - }{}% - \ifshowind{\ifcsundef{gr@class:#1.remark}% - {}{& & & & \multicolumn{2}{l}{{\larger[2]{\color{red} \csname gr@class:#1.remark\endcsname}}}\\*}}{}% -\xdef\gr@topic{\csname gr@class:#1.topic\endcsname}% -& & & & \multicolumn{2}{J{11cm}}{{\sc\color{\csname gr@topic:\gr@topic.color\endcsname} \csname gr@topic:\gr@topic.txt\endcsname}}\\* -& & & & \multicolumn{2}{l}{{\smaller{\sc Súmula: }}}\\*% -& & & & & {{\smaller\csname gr@class:#1.desc\endcsname}}\\ % -\ifcsundef{gr@class:#1.bibA}{}{& & & & \multicolumn{2}{l}{{\smaller{\sc Bibliografia Básica Essencial: }}}\\* & & & & &{\smaller \textopenbullet\ \csname gr@class:#1.bibA\endcsname}\\*}% -\ifcsundef{gr@class:#1.bibB}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.bibB\endcsname}\\}% -\ifcsundef{gr@class:#1.bibC}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.bibC\endcsname}\\}% -\ifcsundef{gr@class:#1.bibD}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.bibD\endcsname}\\}% -\ifcsundef{gr@class:#1.bibE}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.bibE\endcsname}\\}% -\ifcsundef{gr@class:#1.bibF}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.bibF\endcsname}\\}% -\ifcsundef{gr@class:#1.bibG}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.bibG\endcsname}\\}% -\ifcsundef{gr@class:#1.bibH}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.bibH\endcsname}\\}% -\ifcsundef{gr@class:#1.bibI}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.bibI\endcsname}\\}% -\ifcsundef{gr@class:#1.bibJ}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.bibJ\endcsname}\\}% -\ifcsundef{gr@class:#1.basicA}{}{& & & & \multicolumn{2}{l}{{\smaller{\sc Bibliografia Básica: }}}\\* & & & & &{\smaller \textopenbullet\ \csname gr@class:#1.basicA\endcsname}\\*}% -\ifcsundef{gr@class:#1.basicB}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.basicB\endcsname}\\}% -\ifcsundef{gr@class:#1.basicC}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.basicC\endcsname}\\}% -\ifcsundef{gr@class:#1.basicD}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.basicD\endcsname}\\}% -\ifcsundef{gr@class:#1.basicE}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.basicE\endcsname}\\}% -\ifcsundef{gr@class:#1.basicF}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.basicF\endcsname}\\}% -\ifcsundef{gr@class:#1.basicG}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.basicG\endcsname}\\}% -\ifcsundef{gr@class:#1.basicH}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.basicH\endcsname}\\}% -\ifcsundef{gr@class:#1.basicI}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.basicI\endcsname}\\}% -\ifcsundef{gr@class:#1.basicJ}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.basicJ\endcsname}\\}% -\ifcsundef{gr@class:#1.compA}{}{& & & & \multicolumn{2}{l}{{\smaller{\sc Bibliografia Complementar: }}}\\* & & & & &{\smaller \textopenbullet\ \csname gr@class:#1.compA\endcsname}\\*}% -\ifcsundef{gr@class:#1.compB}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.compB\endcsname}\\}% -\ifcsundef{gr@class:#1.compC}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.compC\endcsname}\\}% -\ifcsundef{gr@class:#1.compD}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.compD\endcsname}\\}% -\ifcsundef{gr@class:#1.compE}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.compE\endcsname}\\}% -\ifcsundef{gr@class:#1.compF}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.compF\endcsname}\\}% -\ifcsundef{gr@class:#1.compG}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.compG\endcsname}\\}% -\ifcsundef{gr@class:#1.compH}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.compH\endcsname}\\}% -\ifcsundef{gr@class:#1.compI}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.compI\endcsname}\\}% -\ifcsundef{gr@class:#1.compJ}{}{& & & & &{\smaller \textopenbullet\ \csname gr@class:#1.compJ\endcsname}\\}% - \\[-1.5ex]% -} - - -%%%gr@class:\gr@disc.bib\Alph{gr@class:\gr@disc.bibcnt} - -\NewDocumentCommand\TabDepX{m}{% - { - \ifshowind{\ifcsundef{gr@class:#1.remark}{}{\color{red}\bfseries}}{} - \gr@tab\ #1 (\csname gr@class:#1.et\endcsname) % - } - \def\gr@tab{E}% -} - -\NewDocumentCommand\TabDep{m}{% - & & & & & #1 - \csname gr@class:#1.nam\endcsname\ (\csname gr@class:#1.et\endcsname)\\[-0.1ex]% -} - -\NewDocumentCommand\TabEtp{D<>{ob}O{\notoc\section}m}{% - #2{Etapa #3}% - \begin{longtable}{l@{\,}l@{\ }c@{\ }c@{\ }J{5mm}@{}J{10.7cm}}% - \LstClass[\TabClass]{#3}% -% & \textbf{Total} & \textbf{\arabic{gr@cred#1}} & \textbf{#1}\\% - \end{longtable}% -} - -\NewDocumentCommand\@TabTopic{m}{% - #1 & \csname gr@class:#1.cred\endcsname & \csname gr@class:#1.typ\endcsname & \csname gr@class:#1.nam\endcsname & (\csname gr@class:#1.et\endcsname)\\% -} - -\NewDocumentCommand\TabTopic{O{ob}m}{% - -\noindent\csname gr@topic:#2.txt\endcsname -\@ifundefined{gr@topic:#2}{\\\textbf{--No Classes Associated--}}{ - \begin{longtable}{l@{\,}l@{\ }c@{\ }J{11.2cm}@{\,}l}\smaller% - \LstTopic[\@TabTopic]{#2}% - \end{longtable}% - } -} - - -\NewDocumentCommand\TabClassCompact{m}{% - & #1 & \csname gr@class:#1.cred\endcsname & \csname gr@class:#1.typ\endcsname & \multicolumn{2}{J{11cm}}{\csname gr@class:#1.nam\endcsname}\\*% - \edef\gr@disc{#1}% - \ifcsdef{gr@class:#1.depA}{% - \LstDep[\TabDep]<A>{#1}% - }{}% - \ifcsdef{gr@class:#1.depB}{% - & & & & OU\\*% - & & & & % - & \def\gr@tab{\ }% - \LstDep[\TabDepX]<B>{#1}% - }{}% - \ifcsdef{gr@class:#1.depC}{% - & & & & OU\\*% - & & & & % - & \def\gr@tab{\ }% - \LstDep[\TabDepX]<C>{#1}% - }{}% -} - -\NewDocumentCommand\TabEtpCompact{D<>{ob}O{}m}{% - %#2{Etapa #3}% - \begin{tabular}{l@{\,}l@{\ }c@{\ }c@{\ }J{4mm}@{}J{10cm}}% - &{\larger\textbf{Etapa #3}}\\ - \LstClass[\TabClassCompact]{#3}% -% & \textbf{Total} & \textbf{\arabic{gr@cred#1}} & \textbf{#1}\\% - \end{tabular}% -} - diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr.sty index c13ef1509a..51dd5a43ef 100644 --- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr.sty +++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr.sty @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version 1.12 (2023/09/23) +%% This is version {2.0} {2023/11/23} %% %% The list of files that compose this work can be found in the README.md file at %% https://ctan.org/pkg/ufrgscca @@ -23,128 +23,659 @@ %% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym) %%%============================================================================== \NeedsTeXFormat{LaTeX2e}[2022/06/01] -\def\tc@tmp@packname{ufrgscca-curr} -\def\tc@tmp@altpackname{ufrgsccacurr} -\def\tc@tmp@packdesc{UFRGS/CCA curricula commands} -\def\tc@tmp@packdate{2023/09/23} -\def\tc@tmp@packversion{1.12beta} -\let\@exp\expandafter -\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion} -\@exp\@exp\@exp\ProvidesPackage\@exp\@exp\@exp{\@exp\tc@tmp@packname\@exp}\@exp[\tc@tmp@packdate\space v\tc@tmp@packversion\space\tc@tmp@packdesc] - - -\newcounter{gr@credob} -\newcounter{gr@credel} -\newcounter{gr@credalt} -\newcounter{gr@credad} -\NewDocumentCommand{\gr@setcred}{}{\setcounter{gr@credob}{0}\setcounter{gr@credel}{0}\setcounter{gr@credalt}{0}} -\NewDocumentCommand{\gr@addclasscred}{m}{\addtocounter{gr@cred\csname gr@class:#1.typ\endcsname}{\csname gr@class:#1.cred\endcsname}} - -\let\@ex\expandafter - -%%%%%%%%%%% -%%%%%%%%%%% -%%%%%%%%%%% - -\NewDocumentCommand\topicdef{O{black}mm}{ - \expandafter\gdef\csname gr@topic:#2.txt\endcsname{#3}% - \expandafter\gdef\csname gr@topic:#2.color\endcsname{#1}% -} -\NewDocumentCommand\defaulttopic{m}{\xdef\gr@defaulttopic{#1}} -%%%%%%%%%%% -%%%%%%%%%%% -%%%%%%%%%%% +\ProvidesExplPackage + {ufrgscca-curr} + {2023/11/23} + {2.0} + {UFRGS/CCA curricula commands} -\NewDocumentCommand\semdef{O{#3}D<>{#3}m}{% - \expandafter\gdef\csname gr@et:#3.idx\endcsname{x#3}% - \expandafter\gdef\csname gr@etidx:x#3.cod\endcsname{#2}% - \expandafter\gdef\csname gr@etidx:x#3.nam\endcsname{#3}% - \expandafter\gdef\csname gr@etidx:x#3.pos\endcsname{#1}% - \gdef\gr@sem{#3}% - \gdef\gr@semcod{#2}% -} -%%%%%%%%%%% -%%%%%%%%%%% -%%%%%%%%%%% - -\NewDocumentCommand\classdef{O{\gr@defaulttopic}D<>{}mmmmm}{% - \@ifundefined{gr@topic:#1.txt}% - {\expandafter\gdef\csname gr@class:#3.topic\endcsname{\gr@defaulttopic}}% - {\expandafter\gdef\csname gr@class:#3.topic\endcsname{#1}}% - \expandafter\gdef\csname gr@class:#3.pos\endcsname{#2}% - \expandafter\gdef\csname gr@class:#3.cred\endcsname{#4}% - \expandafter\gdef\csname gr@class:#3.typ\endcsname{#5}% - \expandafter\gdef\csname gr@class:#3.nam\endcsname{#6}% - \expandafter\gdef\csname gr@class:#3.desc\endcsname{#7}% - \expandafter\xdef\csname gr@class:#3.et\endcsname{\gr@semcod}% - \gdef\gr@disc{#3} - \newcounter{gr@class:#3.bibcnt} - \newcounter{gr@class:#3.basiccnt} - \newcounter{gr@class:#3.compcnt} - \newcounter{gr@class:#3.dep} - \stepcounter{gr@class:#3.dep} - \ifcsundef{gr@et:\gr@sem}{\csgdef{gr@et:\gr@sem}{#3}}{\csgappto{gr@et:\gr@sem}{,#3}} - \ifcsundef{gr@topic:#1}{\csgdef{gr@topic:#1}{#3}}{\csgappto{gr@topic:#1}{,#3}} -} -\NewDocumentCommand{\setclass}{m}{\ifcsundef{gr@class:#1.et}{{\color{red} #1 undef\\}}{\gdef\gr@disc{#1}}} +%%%%%%% +%%% +%%% Just an attempt of having my packages info in a regular way +%%% Idea being: { <pck-name> / pkg info } for each and all. +%%% +%%%%%%% +\keys_define:nn { ufrgscca-curr / pkg info} + { + name .code:n = {ufrgscca-curr} , + prefix .code:n = {ufrgscca} , + date .code:n = {2023/11/23}, + version .code:n = {2.0} , + description .code:n = {UFRGS/CCA~ curricula~ commands} + } +\cs_if_exist:NF \__codedesc_pkg_info:nn + { + \cs_new_protected:Npn \__codedesc_pkg_info:nn #1#2 + { \keys_set:nn {#1 / pkg info}{#2} } + } +\cs_if_exist:NF \PkgInfo + { \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} } } +\cs_if_exist:NF \PkgDescription + { + \NewDocumentCommand \PkgDescription {m} + { + \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par + } + } +%%%%%%% +%%% End of cut-n-paste +%%%%%%% -\NewDocumentCommand{\classremark}{m}{% - \expandafter\gdef\csname gr@class:\gr@disc.remark\endcsname{#1}% -} -%%%%%%%%%%% -%%%%%%%%%%% -%%%%%%%%%%% +\starray_new:n {topics} +\starray_new:n {classes} +\starray_new:n {curricula} -\NewDocumentCommand\depdef{O{\csname gr@class:\gr@disc.topic\endcsname}D<>{}m}{% - \ifcsundef{gr@class:\gr@disc.dep\Alph{gr@class:\gr@disc.dep}}{\csgdef{gr@class:\gr@disc.dep\Alph{gr@class:\gr@disc.dep}}{#3}}{\csgappto{gr@class:\gr@disc.dep\Alph{gr@class:\gr@disc.dep}}{,#3}} - \expandafter\gdef\csname gr@class:\gr@disc.dep\Alph{gr@class:\gr@disc.dep}:#3.topic\endcsname{#1}% - \expandafter\gdef\csname gr@class:\gr@disc.dep\Alph{gr@class:\gr@disc.dep}:#3.pos\endcsname{#2}% -} +\starray_def_from_keyval:nn {topics} + { + self = , + name = , + color = , + class lst = , %list (sequence) of classes + } -%%%%%%%%%%% -%%%%%%%%%%% -%%%%%%%%%%% +\starray_def_from_keyval:nn {classes} + { + cred = , + self = , + name = , + summary = , + topic = , + remark = , + bib seq = , + bib basic seq = , + bib compl seq = , + ref . struct = { + curr = , + sem = , + kind = , + } , + } -\NewDocumentCommand\bibdef{O{bib}m}{% - \stepcounter{gr@class:\gr@disc.#1cnt}% - \expandafter\gdef\csname gr@class:\gr@disc.#1\Alph{gr@class:\gr@disc.#1cnt}\endcsname{#2}% -} +\starray_def_from_keyval:nn {curricula} + { + self = , + name = , + text = , + sem.struct = { + pos = , + self = , + name = , + class . struct = { + name = , + kind = , + obs = , + pos = , + color = , + prereqset . struct = { + prereq . struct = { + starred = , + name = , + ang = , + } + } , + } , + } , + } +\NewDocumentCommand{\currdef}{mmm} + { + \starray_new_term:nn {curricula}{#1} + \starray_set_from_keyval:nn {curricula} + { + self = {#1} , + name = {#2} , + text = {#3} , + } + } -%%%%%%%%%%% -%%%%%%%%%%% -%%%%%%%%%%% +\NewDocumentCommand{\semdef}{mmm} + { + \starray_new_term:nn {curricula.sem}{#1} + \starray_set_from_keyval:nn {curricula.sem} + { + self = {#1} , + name = {#2} , + pos = {#3} , + } + } +\NewDocumentCommand{\addclass}{O{}D<>{}mmO{}} + { + \starray_new_term:nn {curricula.sem.class}{#3} + \starray_set_from_keyval:nn {curricula.sem.class} + { + color = {#1} , + pos = {#2} , + name = {#3} , + kind = {#4} , + obs = {#5} , + } + \starray_new_term:nn {curricula.sem.class.prereqset}{} + \starray_set_iter_from_hash:nn {classes}{#3} -\NewDocumentCommand\altdef{}{% - \stepcounter{gr@class:\gr@disc.dep}% -} + \starray_new_term:nn {classes.ref}{} + \starray_get_prop:nnN {curricula}{self} \l_tmpa_tl + \starray_set_prop:nnV {classes.ref}{curr} \l_tmpa_tl + \starray_get_prop:nnN {curricula.sem}{self} \l_tmpa_tl + \starray_set_prop:nnV {classes.ref}{sem} \l_tmpa_tl + \starray_set_prop:nnn {classes.ref}{kind}{#4} + } -%%%%%%%%%%% -%%%%%%%%%%% -%%%%%%%%%%% +\NewDocumentCommand{\depdef}{sD<>{}m} + { + \starray_new_term:nn {curricula.sem.class.prereqset.prereq}{#3} + \starray_set_from_keyval:nn {curricula.sem.class.prereqset.prereq} + { + starred = {#1} , + name = {#3} , + ang = {#2} + } + } -\NewDocumentCommand\goo{m}{} -\NewDocumentCommand\gooble{m}{} +\NewDocumentCommand{\altdep}{} + { + \starray_new_term:nn {curricula.sem.class.prereqset}{} + } -\NewDocumentCommand\LstDep{O{\goo}D<>{A}m}{% - \xdef\gr@disc{#3}% - \xdef\gr@depSeq{#2}% - \ifcsdef{gr@class:#3.dep#2}{\@ex\@ex\@ex\forcsvlist\@ex\@ex\@ex#1\@ex\@ex\@ex{\csname gr@class:#3.dep#2\endcsname}}{} -} -\NewDocumentCommand\LstClass{O{\gooble}m}{% -\xdef\gr@sem{#2}% -\gr@setcred% -\@ex\@ex\@ex\forcsvlist\@ex\@ex\@ex\gr@addclasscred\@ex\@ex\@ex{\csname gr@et:#2\endcsname}% -\@ex\@ex\@ex\forcsvlist\@ex\@ex\@ex#1\@ex\@ex\@ex{\csname gr@et:#2\endcsname}% + + +\NewDocumentCommand\topicdef{O{}mm} + { + \starray_new_term:nn {topics}{#2} + \starray_set_from_keyval:nn {topics} + { + self = {#2} , + name = {#3} , + color = {#1} , + } +% \seq_clear:N \l_tmpa_seq + \starray_set_prop:nnV {topics}{class lst} \c_empty_seq + } + +\tl_new:N \l__ufrgscca_default_topic_tl +\NewDocumentCommand\defaulttopic{m} + { \tl_set:Ne \l__ufrgscca_default_topic_tl{#1} } + + +\NewDocumentCommand{\classdef}{O{\l__ufrgscca_default_topic_tl}mmm} + { + \starray_new_term:nn {classes}{#2} + \starray_set_from_keyval:nn {classes} + { + self = {#2} , + cred = {#3} , + name = {#4} , + topic = {#1} , + } +% \seq_clear:N \l_tmpa_seq + \starray_set_prop:nnV {classes}{bib seq} \c_empty_seq + \starray_set_prop:nnV {classes}{bib basic seq} \c_empty_seq + \starray_set_prop:nnV {classes}{bib compl seq} \c_empty_seq + + \starray_set_iter_from_hash:nn {topics}{#1} + \starray_get_prop:nnN {topics}{class lst} \l_tmpa_seq + \seq_put_right:Nn \l_tmpa_seq{#2} + \starray_set_prop:nnV {topics}{class lst} \l_tmpa_seq + } +\NewDocumentCommand{\csummary}{m} + { + \starray_set_prop:nnn {classes}{summary}{#1} + } + + +\NewDocumentCommand{\classremark}{m} + { + \starray_set_prop:nnn {classes}{remark}{#1} + } + +\NewDocumentCommand{\bibdef}{O{main}m} + { + \str_case:nnF {#1} + { + {main} + { + \starray_get_prop:nnN {classes}{bib seq} \l_tmpa_seq + \seq_put_right:Nn \l_tmpa_seq {#2} + \starray_set_prop:nnV {classes}{bib seq} \l_tmpa_seq + } + {basic}%{ \starray_get_prop:nnN {classes}{bib basic seq} \l_tmpa_seq } + { + \starray_get_prop:nnN {classes}{bib basic seq} \l_tmpa_seq + \seq_put_right:Nn \l_tmpa_seq {#2} + \starray_set_prop:nnV {classes}{bib basic seq} \l_tmpa_seq + } + {compl}%{ \starray_get_prop:nnN {classes}{bib compl seq} \l_tmpa_seq } + { + \starray_get_prop:nnN {classes}{bib compl seq} \l_tmpa_seq + \seq_put_right:Nn \l_tmpa_seq {#2} + \starray_set_prop:nnV {classes}{bib compl seq} \l_tmpa_seq + } + } + { + \starray_get_prop:nnN {classes}{bib seq} \l_tmpa_seq + \seq_put_right:Nn \l_tmpa_seq {#2} + \starray_set_prop:nnV {classes}{bib seq} \l_tmpa_seq + } + } + +\NewDocumentCommand{\classset}{m} + { + \starray_set_iter_from_hash:nn {classes}{#1} + } +\let\setclass\classset + +%\NewDocumentCommand\xTabEtp{O{\notoc\section}m}{% + +\cs_generate_variant:Nn \starray_set_iter_from_hash:nn {ne} + + +%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%% +%%% +%%% +%%% +%%% +%%% +%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%% + + +\tl_new:N \l__ufrgscca_tmp_class_tl +\tl_new:N \l__ufrgscca_tmp_name_tl +\tl_new:N \l__ufrgscca_tmp_obs_tl +\tl_new:N \l__ufrgscca_tmp_kind_tl +\tl_new:N \l__ufrgscca_tmp_cred_tl +\tl_new:N \l__ufrgscca_tmp_topic_tl +\tl_new:N \l__ufrgscca_tmp_color_tl +\tl_new:N \l__ufrgscca_tmp_summary_tl +\tl_new:N \l__ufrgscca_tmp_OR_tl +\seq_new:N \l__ufrgscca_tmp_bib_seq +\seq_new:N \l__ufrgscca_tmp_bibB_seq +\seq_new:N \l__ufrgscca_tmp_prereq_seq +\bool_new:N \l__ufrgscca_tmp_second_bool + +\NewDocumentCommand\TabEtp{sO{\notoc\section}mO{\footnotesize}}{% + \starray_set_iter_from_hash:nn {curricula.sem}{#3} + \bool_if:nTF {#1} + { + #4 + \begin{tabular}{l@{\,}l@{\ }c@{\ }c@{\ }J{5mm}@{}J{10.2cm}}% + \starray_get_prop:nnN {curricula.sem}{name} \l__ufrgscca_tmp_name_tl + \use:e { & \exp_not:N \multicolumn{5}{J{11cm}}{\exp_not:N \textbf{\l__ufrgscca_tmp_name_tl}}}\\* + } + { + \starray_term_syntax:n {curricula.sem} + #2{\starray_parsed_get_prop:n {name}} + #4 + \begin{longtable}{l@{\,}l@{\ }c@{\ }c@{\ }J{5mm}@{}J{10.2cm}}% + } + + \starray_iterate_over:nn {curricula.sem.class} + { + \starray_get_prop:nnN {curricula.sem.class}{name} \l__ufrgscca_tmp_class_tl + \starray_get_prop:nnN {curricula.sem.class}{kind} \l__ufrgscca_tmp_kind_tl + \starray_get_prop:nnN {curricula.sem.class}{color} \l__ufrgscca_tmp_color_tl + \starray_set_iter_from_hash:ne {classes}{\l__ufrgscca_tmp_class_tl} + \starray_get_prop:nnN {classes}{name} \l__ufrgscca_tmp_name_tl + \starray_get_prop:nnN {classes}{cred} \l__ufrgscca_tmp_cred_tl + \tl_if_empty:NT \l__ufrgscca_tmp_color_tl + { + \tl_set:Nn \l__ufrgscca_tmp_color_tl {black} + } + + %% class identification + \bool_if:NTF \l__ufrgscca_showind_bool + { + \use:e { & \l__ufrgscca_tmp_class_tl + & \l__ufrgscca_tmp_cred_tl + & \l__ufrgscca_tmp_kind_tl + & \exp_not:N \multicolumn{2}{J{10.5cm}}{\exp_not:N \textcolor{\l__ufrgscca_tmp_color_tl}{\l__ufrgscca_tmp_name_tl}}\\* + } + } + { + \use:e { & \l__ufrgscca_tmp_class_tl + & \l__ufrgscca_tmp_cred_tl + & \l__ufrgscca_tmp_kind_tl + & \exp_not:N \multicolumn{2}{J{10.5cm}}{\l__ufrgscca_tmp_name_tl}\\* + } + } + + %% Pre-reqs + \bool_gset_false:N \l__ufrgscca_tmp_second_bool + \starray_iterate_over:nn {curricula.sem.class.prereqset} + { + \seq_gclear:N \l__ufrgscca_tmp_prereq_seq + \starray_iterate_over:nn {curricula.sem.class.prereqset.prereq} + { + \starray_get_prop:nnN {curricula.sem.class.prereqset.prereq}{name} \l_tmpa_tl + \seq_gput_right:Ne \l__ufrgscca_tmp_prereq_seq {\l_tmpa_tl} + } + \seq_if_empty:NF \l__ufrgscca_tmp_prereq_seq + { + \bool_if:NTF \l__ufrgscca_tmp_second_bool + { + & & & & \multicolumn{2}{J{11cm}}{\smaller\makebox[10mm][l]{~\ ~OU}\seq_use:Nn \l__ufrgscca_tmp_prereq_seq {~E~} }\\* + } + { + & & & & \multicolumn{2}{J{11cm}}{\smaller\makebox[10mm][l]{}\seq_use:Nn \l__ufrgscca_tmp_prereq_seq {~E~} }\\* + \bool_gset_true:N \l__ufrgscca_tmp_second_bool + } + } + } + \starray_get_prop:nnN {curricula.sem.class}{obs} \l__ufrgscca_tmp_obs_tl + \tl_if_empty:NF \l__ufrgscca_tmp_obs_tl + { + \use:e { & & & & & {\exp_not:N \scriptsize{\exp_not:N \emph{\l__ufrgscca_tmp_obs_tl}}}\\* } + } + \bool_if:nF {#1} + { + %% Topic + \starray_get_prop:nnN {classes}{topic} \l__ufrgscca_tmp_topic_tl + \starray_set_iter_from_hash:ne {topics}{\l__ufrgscca_tmp_topic_tl} + \starray_get_prop:nnN {topics}{name} \l__ufrgscca_tmp_topic_tl + \starray_get_prop:nnN {topics}{color} \l__ufrgscca_tmp_color_tl + \tl_if_empty:NT \l__ufrgscca_tmp_color_tl + { + \tl_set:Nn \l__ufrgscca_tmp_color_tl {black} + } + + \use:e { & & & & \exp_not:N \multicolumn{2}{J{11cm}}{\exp_not:N \smaller \exp_not:N \scshape\exp_not:N \textcolor{\l__ufrgscca_tmp_color_tl}{\l__ufrgscca_tmp_topic_tl}}\\* } + + %% class summary + & & & & \multicolumn{2}{J{11cm}}{\smaller\scshape Súmula}\\* + + \starray_get_prop:nnN {classes}{summary} \l__ufrgscca_tmp_summary_tl + \use:e { & & & & & \exp_not:N \smaller \l__ufrgscca_tmp_summary_tl\\*} + + %% bibliography I + \starray_get_prop:nnN {classes}{bib seq} \l__ufrgscca_tmp_bib_seq + \seq_gset_eq:NN \l__ufrgscca_tmp_bibB_seq \l__ufrgscca_tmp_bib_seq + \seq_if_empty:NF \l__ufrgscca_tmp_bibB_seq + { + & & & & \multicolumn{2}{J{11cm}}{\smaller\scshape Bibliografia~ Básica~ Essencial}\\* + \seq_map_inline:Nn \l__ufrgscca_tmp_bibB_seq + { + & & & & & \smaller\textopenbullet ~\ ~ ##1\\ + } + } + + %% bibliography II + \starray_get_prop:nnN {classes}{bib basic seq} \l__ufrgscca_tmp_bib_seq + \seq_gset_eq:NN \l__ufrgscca_tmp_bibB_seq \l__ufrgscca_tmp_bib_seq + \seq_if_empty:NF \l__ufrgscca_tmp_bibB_seq + { + & & & & \multicolumn{2}{J{11cm}}{\smaller\scshape Bibliografia~ Básica}\\* + \seq_map_inline:Nn \l__ufrgscca_tmp_bibB_seq + { + & & & & & \smaller\textopenbullet ~\ ~ ##1\\ + } + } + + %% bibliography III + \starray_get_prop:nnN {classes}{bib compl seq} \l__ufrgscca_tmp_bib_seq + \seq_gset_eq:NN \l__ufrgscca_tmp_bibB_seq \l__ufrgscca_tmp_bib_seq + \seq_if_empty:NF \l__ufrgscca_tmp_bibB_seq + { + & & & & \multicolumn{2}{J{11cm}}{\smaller\scshape Bibliografia~ Complementar}\\* + \seq_map_inline:Nn \l__ufrgscca_tmp_bibB_seq + { + & & & & & \smaller\textopenbullet ~\ ~ ##1\\ + } + } + \\[-1.5mm] + } + } + \bool_if:nTF {#1} + { + \end{tabular} + } + { + \end{longtable} + } } -\NewDocumentCommand\LstTopic{O{\goo}m}{% -\xdef\gr@topic{#2}% -\@ex\@ex\@ex\forcsvlist\@ex\@ex\@ex#1\@ex\@ex\@ex{\csname gr@topic:#2\endcsname}% + +\seq_new:N \l__ufrgscca_tmp_classlst_seq + +\NewDocumentCommand{\TabTopic}{m} + { + \starray_set_iter_from_hash:nnTF {topics}{#1} + { + \begin{tabular}{l@{\,}l@{\ -\ }J{11.5cm}} + \starray_get_prop:nnN {topics}{name} \l__ufrgscca_tmp_name_tl + \starray_get_prop:nnN {topics}{color} \l__ufrgscca_tmp_color_tl + \tl_if_empty:NF \l__ufrgscca_tmp_color_tl + { + \tl_set:Nn \l__ufrgscca_tmp_color_tl {black} + } + \use:e { & \exp_not:N \multicolumn{2}{J{11cm}}{\exp_not:N \textcolor{\l__ufrgscca_tmp_color_tl}{\exp_not:N \textbf{\l__ufrgscca_tmp_name_tl} }}}\\\hline + \starray_get_prop:nnN {topics}{class lst} \l__ufrgscca_tmp_classlst_seq + \seq_map_inline:Nn \l__ufrgscca_tmp_classlst_seq + { + \starray_set_iter_from_hash:nn {classes}{##1} + \starray_get_prop:nnN {classes}{name} \l__ufrgscca_tmp_name_tl + \use:e { & ##1 & \l__ufrgscca_tmp_name_tl\\} + + } + \end{tabular} + } + { + \textbf{--Topic #1 non existant--} + } + } + + +%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%% +%%% +%%% +%%% +%%% +%%% +%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%% + +\bool_new:N \l__ufrgscca_colors_topic_bool +\bool_new:N \l__ufrgscca_colors_class_bool + +\keys_define:nn { ufrgscca / curr graph} + { + deltaX .usage:n = general, + deltaX .fp_set:N = \l__ufrgscca_graph_deltaX_fp, + deltaX .value_required:n = true, + deltaX .initial:n = {4.2}, + + deltaY .usage:n = general, + deltaY .fp_set:N = \l__ufrgscca_graph_deltaY_fp, + deltaY .value_required:n = true, + deltaY .initial:n = {2.1}, + + clipminX .usage:n = general, + clipminX .fp_set:N = \l__ufrgscca_graph_clip_minX_fp, + clipminX .value_required:n = true, + clipminX .initial:n = {0}, + + maxX .usage:n = general, + maxX .fp_set:N = \l__ufrgscca_graph_maxX_fp, + maxX .value_required:n = true, + maxX .initial:n = {11.5}, + + clipminY .usage:n = general, + clipminY .fp_set:N = \l__ufrgscca_graph_clip_minY_fp, + clipminY .value_required:n = true, + clipminY .initial:n = {0}, + + maxY .usage:n = general, + maxY .fp_set:N = \l__ufrgscca_graph_maxY_fp, + maxY .value_required:n = true, + maxY .initial:n = {-18.5}, + + graph~ title .usage:n = general, + graph~ title .tl_set:N = \l__ufrgscca_graph_title_tl, + graph~ title .value_required:n = true, + graph~ title .initial:n = {Graph Title}, + + default~ color .usage:n = general, + default~ color .tl_set:N = \l__ufrgscca_graph_default_color_tl, + default~ color .value_required:n = true, + default~ color .initial:n = {black}, + + colors .usage:n = general, + colors .choice: , + colors / none .code:n = { + \bool_set_false:N \l__ufrgscca_colors_topic_bool + \bool_set_false:N \l__ufrgscca_colors_class_bool + } , + colors / topic .code:n = { + \bool_set_true:N \l__ufrgscca_colors_topic_bool + \bool_set_false:N \l__ufrgscca_colors_class_bool + } , + colors / class .code:n = { + \bool_set_false:N \l__ufrgscca_colors_topic_bool + \bool_set_true:N \l__ufrgscca_colors_class_bool + } , + colors / both .code:n = { + \bool_set_true:N \l__ufrgscca_colors_topic_bool + \bool_set_true:N \l__ufrgscca_colors_class_bool + } , + colors / unknown .code:n = { + \bool_set_false:N \l__ufrgscca_colors_topic_bool + \bool_set_false:N \l__ufrgscca_colors_class_bool + } , + } + +\keys_define:nn { ufrgscca / graph angles} + { + } + +\NewDocumentEnvironment{tikzGraphSem}{O{}}{% + \bool_set_false:N \l__ufrgscca_colors_topic_bool + \bool_set_false:N \l__ufrgscca_colors_class_bool + + \keys_set:nn {ufrgscca / curr graph}{#1} + \fp_set:Nn \l__ufrgscca_graph_clip_maxX_fp {\l__ufrgscca_graph_maxX_fp * \l__ufrgscca_graph_deltaX_fp } + \fp_set:Nn \l__ufrgscca_graph_clip_maxY_fp {\l__ufrgscca_graph_maxY_fp * \l__ufrgscca_graph_deltaY_fp } + \begin{tikzpicture}[% + disc/.style={% + ellipse~ split, double, draw, line~ width=2pt,% + every~ text~ node part/.style={font=\small\bfseries},% + every~ lower~ node part/.style={font=\large\bfseries,color=blue}},% + dep/.style={->,dotted,line~ width=3pt}]% + \begin{scope} + \clip ( \fp_use:N \l__ufrgscca_graph_clip_minX_fp , \fp_use:N \l__ufrgscca_graph_clip_minY_fp ) + -- ( \fp_use:N \l__ufrgscca_graph_clip_minX_fp , \fp_use:N \l__ufrgscca_graph_clip_maxY_fp ) + -- ( \fp_use:N \l__ufrgscca_graph_clip_maxX_fp , \fp_use:N \l__ufrgscca_graph_clip_maxY_fp ) + -- ( \fp_use:N \l__ufrgscca_graph_clip_maxX_fp , \fp_use:N \l__ufrgscca_graph_clip_minY_fp ); + \filldraw[color=red] + ( \fp_eval:n {0.5*\l__ufrgscca_graph_clip_maxX_fp} , \fp_eval:n {-0.25*\l__ufrgscca_graph_deltaY_fp} ) node{\Huge\textbf{\l__ufrgscca_graph_title_tl}};% +}{% + \end{scope}% + \end{tikzpicture}% } + + +\fp_new:N \l__ufrgscca_tmp_posX_fp +\bool_new:N \l__ufrgscca_tmp_starred_bool +\tl_new:N \l__ufrgscca_tmp_prereq_name_tl +\tl_new:N \l__ufrgscca_graph_color_tl + +\NewDocumentCommand{\GraphEtp}{m} + { + \starray_set_iter_from_hash:nn {curricula.sem}{#1} + \starray_get_prop:nnN {curricula.sem}{pos} \l__ufrgscca_tmp_pos_tl + \starray_get_prop:nnN {curricula.sem}{name} \l__ufrgscca_tmp_name_tl + \fp_set:Nn \l__ufrgscca_tmp_posX_fp {\l__ufrgscca_tmp_pos_tl * \l__ufrgscca_graph_deltaX_fp - 0.5*\l__ufrgscca_graph_deltaX_fp} + \draw + ( \fp_use:N \l__ufrgscca_tmp_posX_fp , \fp_eval:n {-\l__ufrgscca_graph_deltaY_fp} ) + node[disc](#1) {\l__ufrgscca_tmp_name_tl }; + \starray_iterate_over:nn {curricula.sem.class} + { + \starray_get_prop:nnN {curricula.sem.class}{pos} \l__ufrgscca_tmp_pos_tl + \starray_get_prop:nnN {curricula.sem.class}{name} \l__ufrgscca_tmp_name_tl + \starray_set_iter_from_hash:ne {classes}{\l__ufrgscca_tmp_name_tl} + \starray_get_prop:nnN {classes}{cred} \l__ufrgscca_tmp_cred_tl + \starray_get_prop:nnN {classes}{topic} \l__ufrgscca_tmp_topic_tl + \tl_set:Ne \l__ufrgscca_graph_color_tl {\l__ufrgscca_graph_default_color_tl} + \bool_if:NT \l__ufrgscca_colors_topic_bool + { + \starray_set_iter_from_hash:ne {topics}{\l__ufrgscca_tmp_topic_tl} + \starray_get_prop:nnN {topics}{color} \l__ufrgscca_tmp_color_tl + \tl_if_empty:NF \l__ufrgscca_tmp_color_tl + { + \tl_set:Ne \l__ufrgscca_graph_color_tl {\l__ufrgscca_tmp_color_tl} + } + } + \bool_if:NT \l__ufrgscca_colors_class_bool + { + \starray_get_prop:nnN {curricula.sem.class}{color} \l__ufrgscca_tmp_color_tl + \tl_if_empty:NF \l__ufrgscca_tmp_color_tl + { + \tl_set:Ne \l__ufrgscca_graph_color_tl {\l__ufrgscca_tmp_color_tl} + } + } + + \draw + ( \fp_use:N \l__ufrgscca_tmp_posX_fp , \fp_eval:n {\l__ufrgscca_tmp_pos_tl * \l__ufrgscca_graph_deltaY_fp - 1.25 * \l__ufrgscca_graph_deltaY_fp} ) + node[disc,\l__ufrgscca_graph_color_tl](\l__ufrgscca_tmp_name_tl) {\l__ufrgscca_tmp_name_tl \nodepart{lower} \l__ufrgscca_tmp_cred_tl ~\ ~créd.};% + \starray_iterate_over:nn {curricula.sem.class.prereqset} + { + \starray_iterate_over:nn {curricula.sem.class.prereqset.prereq} + { + \starray_get_prop:nnN {curricula.sem.class.prereqset.prereq}{starred} \l__ufrgscca_tmp_starred_bool + \bool_if:NF \l__ufrgscca_tmp_starred_bool + { + \starray_get_prop:nnN {curricula.sem.class.prereqset.prereq}{name} \l__ufrgscca_tmp_prereq_name_tl + \starray_get_prop:nnN {curricula.sem.class.prereqset.prereq}{ang} \l__ufrgscca_tmp_ang_tl + \StrCut{\l__ufrgscca_tmp_ang_tl}{:}{\l__ufrgscca_partA_tl}{\l__ufrgscca_partB_tl} + \tl_if_empty:NTF \l__ufrgscca_partB_tl + { + \str_case:NnF \l__ufrgscca_partA_tl + { + {A} { \tl_set:Nn \l__ufrgscca_angOUT_tl {30} + \tl_set:Nn \l__ufrgscca_angIN_tl {180-30} } + {B} { \tl_set:Nn \l__ufrgscca_angOUT_tl {60} + \tl_set:Nn \l__ufrgscca_angIN_tl {180-60} } + {C} { \tl_set:Nn \l__ufrgscca_angOUT_tl {80} + \tl_set:Nn \l__ufrgscca_angIN_tl {180-80} } + {-A} { \tl_set:Nn \l__ufrgscca_angOUT_tl {-30} + \tl_set:Nn \l__ufrgscca_angIN_tl {180+30} } + {-B} { \tl_set:Nn \l__ufrgscca_angOUT_tl {-60} + \tl_set:Nn \l__ufrgscca_angIN_tl {180+60} } + {-C} { \tl_set:Nn \l__ufrgscca_angOUT_tl {-80} + \tl_set:Nn \l__ufrgscca_angIN_tl {180+80} } + {A*} { \tl_set:Nn \l__ufrgscca_angOUT_tl {30} + \tl_set:Nn \l__ufrgscca_angIN_tl {180+30} } + {B*} { \tl_set:Nn \l__ufrgscca_angOUT_tl {60} + \tl_set:Nn \l__ufrgscca_angIN_tl {180+60} } + {C*} { \tl_set:Nn \l__ufrgscca_angOUT_tl {80} + \tl_set:Nn \l__ufrgscca_angIN_tl {180+80} } + {-A*} { \tl_set:Nn \l__ufrgscca_angOUT_tl {-30} + \tl_set:Nn \l__ufrgscca_angIN_tl {180-30} } + {-B*} { \tl_set:Nn \l__ufrgscca_angOUT_tl {60} + \tl_set:Nn \l__ufrgscca_angIN_tl {180-60} } + {-C*} { \tl_set:Nn \l__ufrgscca_angOUT_tl {80} + \tl_set:Nn \l__ufrgscca_angIN_tl {180-80} } + } + { + \tl_set:Nn \l__ufrgscca_angOUT_tl {0} + \tl_set:Nn \l__ufrgscca_angIN_tl {180} + }%didn't match + } + { + \tl_set:Nn \l__ufrgscca_angOUT_tl {\l__ufrgscca_partA_tl} + \tl_set:Nn \l__ufrgscca_angIN_tl {180-\l__ufrgscca_partB_tl} + } + \path[dep,\l__ufrgscca_graph_color_tl] (\l__ufrgscca_tmp_prereq_name_tl)edge[out=\l__ufrgscca_angOUT_tl,in=\l__ufrgscca_angIN_tl] (\l__ufrgscca_tmp_name_tl); + } + } + } + + } + + } + diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-en-coord.def b/macros/latex/contrib/ufrgscca/latex/ufrgscca-en-coord.def deleted file mode 100644 index 65d0ef9352..0000000000 --- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-en-coord.def +++ /dev/null @@ -1,101 +0,0 @@ -%%%============================================================================== -%% Copyright 2022-23 by Alceu Frigeri -%% -%% This work may be distributed and/or modified under the conditions of -%% -%% * The [LaTeX Project Public License](http://www.latex-project.org/lppl.txt), -%% version 1.3c (or later), and/or -%% * The [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html), -%% version 3 (or later) -%% -%% This work has the LPPL maintenance status *maintained*. -%% -%% The Current Maintainer of this work is Alceu Frigeri -%% -%% This is version 1.12 (2023/09/23) -%% -%% The list of files that compose this work can be found in the README.md file at -%% https://ctan.org/pkg/ufrgscca -%% -%%%============================================================================== -%% UFRGS stands for "Federal University of Rio Grande do Sul" in south Brazil -%% EE stands for "Engineering School" -%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym) -%%%============================================================================== -\makeatletter -\def\tc@tmp@packname{ufrgscca-en-coord} -\def\tc@tmp@altpackname{ufrgsccaencoord} -\def\tc@tmp@packdesc{UFRGS/CCA English coord defs} -\def\tc@tmp@packdate{2023/09/23} -\def\tc@tmp@packversion{1.12} -\let\@exp\expandafter -\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion} - - -\calendartitle{Calendário – \tcdef@coord@TCCperiod} - -\tcccalendarhead{Data/Período}{Semana Letiva}{Evento} -\tcccalendarevent{01}{Apresentação da disciplina. Informações gerais. Reunião presencial com início às 18:30h, no Salão de Eventos do DELET.\newline {\bf Presença obrigatória.}} -\tcccalendarevent{02}{Requerimento de matrícula. O(A) aluno(a) deve preencher o \emph{Formulário de Requerimento de Matrícula}, já com o resumo do trabalho, e encaminhá-lo ao setor de protocolos da UFRGS para abertura de processo. Posteriormente, o número do processo deve ser encaminhado por e-mail para \tccore@@ref{TCCcoord}{article} coordenador\tccore@@ref{TCCcoord}{narticle} da atividade. \newline{\bf Obs.~1}} -%\tcccalendarevent{03}{Entrega do \emph{Formulário de Inscrição}, juntamente com o resumo do trabalho, no \tcdef@cover@secdivisionacronym .} -\tcccalendarevent{09}{Encontro presencial: Como redigir um TCC, melhores práticas. Início às 18:30h, no Salão de Eventos do DELET.}% \newline {\bf Presença obrigatória.}} -\tcccalendarevent{09}{Entrega VIA MOODLE do \emph{Relatório Parcial}, juntamente com o \emph{Formulário de Aprovação do Relatório Parcial e Banca Examinadora} assinado pelo orientador. \newline{\bf Obs.~2}} -\tcccalendarevent{15}{Entrega de uma cópia impressa (ou eletrônica) do Trabalho de Conclusão a cada membro da banca, juntamente com os \emph{Formulários de Avaliação} e \emph{Formulários de correções} do trabalho. Entrega VIA MOODLE de uma cópia eletrônica do trabalho juntamente com o \emph{Formulário de Aprovação para Apresentação} e os recibos de recebimento assinados e datados pelos membros das bancas.} -\tcccalendarevent{16}{Encontro presencial: Como apresentar um TCC, melhores técnicas. Início às 18:30h, no Salão de Eventos do DELET.}% \newline {\bf Presença obrigatória.}} -\tcccalendarevent{17}{Apresentações dos Trabalhos de Conclusão de Curso. \newline{\bf Obs.~3}} -\tcccalendarevent{17}{Entrega VIA MOODLE dos \emph{Formulários de correções} dos membros da banca.} -\tcccalendarevent{18}{Entrega VIA MOODLE da versão final corrigida do trabalho e o \emph{Formulário de Aprovação das Correções}. Entrega do formulário de autorização para publicação (biblioteca) assinado na secretaria do DELAE. \newline{\bf Obs.~4}} -\tcccalendarevent{19}{Para os TCCs em RECUPERAÇÃO, entrega VIA MOODLE da versão final corrigida do trabalho e o \emph{Formulário de Aprovação das Correções}. Entrega do formulário de autorização para publicação (biblioteca) assinado na secretaria do DELAE. \newline{\bf Obs.~5}} - - -\tcccalendardesc{\begin{description} -\item[Obs. 1]: Caso o aluno(a) já tenha um processo aberto de TCC, reusar o mesmo apenas anexando o novo requerimento de matrícula, caso necessário. -\item[Obs. 2]: O relatório deve conter as declarações de concordância em participar da banca da parte dos professores convidados. -\item[Obs. 3]: As bancas serão marcadas após a entrega do relatório parcial, de acordo com a disponibilidade dos professores convidados. -\item[Obs. 4]: O \emph{Formulário de Aprovação das Correções} deve estar assinado pelo(a) orientador(a). Para relatórios em que o campo “Revisarei o trabalho depois de corrigido” tiver sido assinalado por algum membro da banca, a assinatura do(a) mesmo(a) também deverá constar no \emph{Formulário de Aprovação das Correções}. -\item[Obs. 5]: Trabalho em RECUPERAÇÃO é aquele cuja nota final quando da defesa é insuficiente para aprovação OU aquele em que o campo “Reescrever tudo” do formulário de correções foi marcado por algum membro da banca. Neste caso, o \emph{Formulário de Aprovação das Correções} deve estar assinado tanto pelo(a) orientador(a) como pelo(s) membro(s) da banca designado(s) para reavaliar o trabalho, incluindo obrigatoriamente aqueles que tiverem marcado o campo “Revisarei o trabalho depois de corrigido”.\\\hrule -\item[IMPORTANTE]: O(A) aluno(a) estará {\bf REPROVADO(A)} \emph{se falhar na entrega de qualquer um dos documentos aqui citados dentro dos prazos estipulados}. -\end{description}} - - -\studentlistformtitle{Lista de presença, \tcdef@coord@studentlistactivity, dia \tcdef@coord@studentlistdate} -\studentlistactivity{apresentação da atividade de TCC} -\studentlistdate{\number\day/\number\month} - -\tccreporttitle{Relatório parcial/final} -\tccreportopening{Para registro} -\tccreportdesc{Relatório parcial/final referente aos alunos matriculados na atividade de ensino de \tcdef@forms@formstitle\ semestre \tcdef@coord@TCCperiod .} - -\tccreportabsents{Desistentes com conceito (segundo semestre)} -\tccreportdismiss{Desistentes sem conceito (primeiro semestre)} -\tccreferralopening{Ao\\ \tcdef@cover@secretaryacronym\ da \tcdef@cover@universitydivision} - -\referralfailed{{REPROVAD\tccore@@ref{student}{Article}}} -\referralapproved{{APROVAD\tccore@@ref{student}{Article}}} - -\referralexamapprovedtext{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \emph{\tccore@@ref{student}{}}\ apresentou o trabalho intitulado \emph{\tccore@@ref{student}{title}}\ no dia \tccore@@ref{student}{date}, n\~{a}o tendo sido considerad\tccore@@ref{student}{article} apt\tccore@@ref{student}{article} pela banca listada abaixo. Posto em exame, \tccore@@ref{student}{article} mesm\tccore@@ref{student}{article} foi \tcdef@coord@referralapproved\ com conceito final \tc@TCCgradeC .} - -\referralexamfailtext{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \emph{\tccore@@ref{student}{}}\ apresentou o trabalho intitulado \emph{\tccore@@ref{student}{title}}\ no dia \tccore@@ref{student}{date}, n\~{a}o tendo sido considerad\tccore@@ref{student}{article} apt\tccore@@ref{student}{article} pela banca listada abaixo. Posto em exame, \tccore@@ref{student}{article} mesm\tccore@@ref{student}{article} foi \tcdef@coord@referralfailed\ com conceito final \tc@TCCgradeD .} - -\referralfatetext{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \emph{\tccore@@ref{student}{}}\ apresentou o trabalho intitulado \emph{\tccore@@ref{student}{title}}\ no dia \tccore@@ref{student}{date}, tendo sido \tccoord@referralfate{\tccore@@ref{student}{Temp}} com conceito final \textbf{\tccoord@@fate{\Alph{tc@studentcount}}}, conforme quadro de notas abaixo. } - -\referralfailFF{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \emph{\tccore@@ref{student}{}}\ n\~{a}o concluiu o trabalho de conclus\~{a}o de Curso tendo sido \tcdef@coord@referralfailed\ com conceito final \textbf{FF}.} - -\boardlabel{Banca Examinadora} -\boardstitle{Apresentações TCC em \tcdef@cover@course\ \tcdef@coord@TCCperiod\ \tcdef@coord@boardstitleB\ } -\boardsworklabel{Título} -\TCCgradesNlabel{Nota} -\TCCgradesClabel{Conceito} -\TCCgrades{A}{B}{C}{D}{FF} -\TCCgradesN{9}{7.5}{6} - -\cocertificatetitle{CERTIFICADO} -\cocertificateopenning{\`{A} quem interessar possa,\\ certificamos que} -\cocertificatetext{atuou como co-orientador\tccore@@ref{coadvisor}{narticle} d\tccore@@ref{student}{article} alun\tccore@@ref{student}{article}\ \emph{\tccore@@ref{student}{}}\ no trabalho de conclus\~{a}o de curso intitulado \emph{\tccore@@ref{student}{title}}\ no semestre \tcdef@coord@TCCperiod.} - -\TCCcoordtitle{Coordenador\tccore@@ref{TCCcoord}{narticle} da atividade de ensino de\\ \tcdef@forms@formstitle\ } - - - -\advisornamegen{Orientador(a)} -\advisornameplural{Orientadores} diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-en-core.def b/macros/latex/contrib/ufrgscca/latex/ufrgscca-en-core.def deleted file mode 100644 index 5ad00626f5..0000000000 --- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-en-core.def +++ /dev/null @@ -1,68 +0,0 @@ -%%%============================================================================== -%% Copyright 2022-23 by Alceu Frigeri -%% -%% This work may be distributed and/or modified under the conditions of -%% -%% * The [LaTeX Project Public License](http://www.latex-project.org/lppl.txt), -%% version 1.3c (or later), and/or -%% * The [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html), -%% version 3 (or later) -%% -%% This work has the LPPL maintenance status *maintained*. -%% -%% The Current Maintainer of this work is Alceu Frigeri -%% -%% This is version 1.12 (2023/09/23) -%% -%% The list of files that compose this work can be found in the README.md file at -%% https://ctan.org/pkg/ufrgscca -%% -%%%============================================================================== -%% UFRGS stands for "Federal University of Rio Grande do Sul" in south Brazil -%% EE stands for "Engineering School" -%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym) -%%%============================================================================== -\makeatletter -\def\tc@tmp@packname{ufrgscca-en-core} -\def\tc@tmp@altpackname{ufrgsccaencore} -\def\tc@tmp@packdesc{UFRGS/CCA English core defs} -\def\tc@tmp@packdate{2023/09/23} -\def\tc@tmp@packversion{1.12} -\let\@exp\expandafter -\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion} - - -\location{Porto~Alegre}{RS} - -\university{Federal University of Rio Grande do Sul} -\universityacronym{UFRGS} -\universitydivision{Engineering School} -\divisiongradcouncil{\tcdef@cover@universitydivision Undergraduate Council} - -\secretaryacronym{SACAD} -\secdivisionacronym{\tcdef@cover@secretaryacronym/EE} -\graduationtitle{Control and Automation Engineering} -\course{Control and Automation Engineering} -\courseacronym{CCA} -\coursecoord{current course coordinator} -\coursecoordtitle{Course Coordinator} -\advisorname{Advisor}% -\coadvisorname{Coadvisor}% -\examinername{Exam Committee}% - -\reportspecificinfo{% - Graduation Project presented to COMGRAD-\tcdef@cover@courseacronym\ of \tcdef@cover@university\ - in partial fulfillment of the requirements for the - degree of \emph{\tcdef@cover@graduationtitle }. -}% - -\approvalspecificinfo{% - This Project was considered adequate for obtaining the - credits of the course TCC (Diplom Project) of \emph{\tcdef@cover@course } - and approved in its final form by the Advisor and the Examination Committee. -}% - -\profname{Professor} -\coprofname{Professor} - - diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-en-forms.def b/macros/latex/contrib/ufrgscca/latex/ufrgscca-en-forms.def deleted file mode 100644 index 65d5bcd3b3..0000000000 --- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-en-forms.def +++ /dev/null @@ -1,183 +0,0 @@ -%%%============================================================================== -%% Copyright 2022-23 by Alceu Frigeri -%% -%% This work may be distributed and/or modified under the conditions of -%% -%% * The [LaTeX Project Public License](http://www.latex-project.org/lppl.txt), -%% version 1.3c (or later), and/or -%% * The [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html), -%% version 3 (or later) -%% -%% This work has the LPPL maintenance status *maintained*. -%% -%% The Current Maintainer of this work is Alceu Frigeri -%% -%% This is version 1.12 (2023/09/23) -%% -%% The list of files that compose this work can be found in the README.md file at -%% https://ctan.org/pkg/ufrgscca -%% -%%%============================================================================== -%% UFRGS stands for "Federal University of Rio Grande do Sul" in south Brazil -%% EE stands for "Engineering School" -%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym) -%%%============================================================================== -\makeatletter -\def\tc@tmp@packname{ufrgscca-en-forms} -\def\tc@tmp@altpackname{ufrgsccaenforms} -\def\tc@tmp@packdesc{UFRGS/CCA English forms defs} -\def\tc@tmp@packdate{2023/09/23} -\def\tc@tmp@packversion{1.12} -\let\@exp\expandafter -\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion} - - -%%%%%% -%%%%%% -%%%%%% forms -%%%%%% -%%%%%% -%%%%%% - -\formlocal{\tc@city,\hspace{4mm} de \hspace{1.2cm} de 20\hspace{4mm}.} - -\formssignaturelabel{Assinatura} -\examinersignature{Assinatura\ \ d\tccore@@ref{examiner}{article}\ \ Avaliador\tccore@@ref{examiner}{narticle}} -\boardsignature{Assinatura\ \ do\ \ Membro\ \ da\ \ Banca} -\advisorsignature{Assinatura\ \ d\tccore@@ref{advisor}{article}\ \ Orientador\tccore@@ref{advisor}{narticle}} -\coadvisorsignature{Assinatura\ \ d\tccore@@ref{coadvisor}{article}\ \ Co-orientador\tccore@@ref{coadvisor}{narticle}} -\studentsignature{Assinatura\ \ d\tccore@@ref{student}{article}\ \ Alun\tccore@@ref{student}{article}} -\studentsignaturegen{Assinatura\ \ do(a)\ \ Aluno(a)} -\formsstudentlabel{Alun\tccore@@ref{student}{article}} -\formsstudentlabelgen{Aluno(a)} -\formproflabel{Professor(a)} -\profname{Professor\tccore@@ref{advisor}{narticle}} -\coprofname{Professor\tccore@@ref{coadvisor}{narticle}} -\formsboardlabel{Membro da Banca} -\formsadvisorlabel{Orientador\tccore@@ref{advisor}{narticle}} -\formsadvisorlabelgen{Orientador(a)} -\formscoadvisorlabel{Co-orientador\tccore@@ref{advisor}{narticle}} -\formsexaminerlabel{Avaliador\tccore@@ref{examiner}{narticle}} -\formsaltexaminerlabel{Suplente} -\formstimelabel{Horário} - - -%\formstopicAlabel{Conteúdo} -%\formstopicBlabel{Trabalho Escrito} -%\formstopicClabel{Apresentação} -\formsworktitlelabel{Título do Trabalho} -\formstemptitlelabel{Título Provisório} -\formsstudentIDlabel{Cartão} -\formsemaillabel{e-mail} -\formsphonelabel{ramal} -\agreelabel{De Acordo} - -\continuelabel{Continua...} - -\formsdatelabel{Data} -\formstitle{Trabalho de Conclusão de Curso em \tcdef@cover@course} -\formsfootnote{Entregar a cada membro da banca juntamente com a cópia do trabalho.} - - - -\renewreqformtitle{Formulário de Renovação da Inscrição na Atividade de Ensino Trabalho de Conclusão em \tcdef@cover@course} - -\renewreqformnotes{O resumo deve ser curto, i.e., não deve exceder este espaço. O texto deve ser escrito em parágrafo único, e por se tratar de proposta, poderá utilizar tempo futuro e não necessita ter motivação ou justificativa.\\ -Deve conter: -\begin{enumerate*}[alpha)] -\item O QUE será feito - descrição e objetivos. -\item COMO será feito - metodologia. -\item Resultados esperados. -\end{enumerate*} -} - -\reqformtitle{Formul\'{a}rio de Requerimento de Matr\'{i}cula} -\reqformopening{Ilm\tccore@@ref{coursecoord}{article}. Sr\tccore@@ref{coursecoord}{narticle}.\par -Coordenador\tccore@@ref{coursecoord}{narticle} da Comissão de Graduação do Curso em \tcdef@cover@course {da \tcdef@cover@universityacronym\ }} -%\reqformopening{algo} - -\reqformdesc{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \tc@studentA , REGULARMENTE MATRICULAD\tccore@@ref{student}{Article} neste período letivo no curso \emph{\tcdef@cover@course\ }, desta universidade, portador\tccore@@ref{student}{narticle} do cartão de identificação n$^o$ \tc@studentAID\ vem por meio desta solicitar matrícula na atividade de ensino de \tcdef@forms@formstitle} - -\coadvisorformtitle{Requerimento de Autorização de Co-Orientação} -\coadvisorformdesc{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \tc@studentA , REGULARMENTE MATRICULAD\tccore@@ref{student}{Article} na atividade de TCC neste período letivo, vem por meio desta solicitar autorização para registro de co-orientador de TCC, conforme justificativa abaixo.} - -\formsbrieflabel{Resumo} - -\formsstudentemaillabel{Email d\tccore@@ref{student}{article} Alun\tccore@@ref{student}{article}} - -\formsadvisoremaillabel{Email d\tccore@@ref{advisor}{article} Orientador\tccore@@ref{advisor}{narticle}} - -\formsreasonlabel{Justificativa} - - -\examformtitle{Formul\'{a}rio de Avalia\c{c}\~{a}o} - -\examformdesc{A nota (variando de zero a dez) atribuída por cada membro da banca examinadora será dada considerando o desempenho d\tccore@@ref{student}{article} alun\tccore@@ref{student}{article} nos 3 pontos apresentados na tabela abaixo.} - -\examformnoteslabel{Observações} - -\examformnotes{\ \\Posteriormente, \tccore@@ref{TCCcoord}{article} professor\tccore@@ref{TCCcoord}{narticle} coordenador\tccore@@ref{TCCcoord}{narticle} calculará a nota final atribuída por cada membro da banca examinadora, de acordo com a seguinte ponderação:\\[2mm] {\bf Nota Final Banca = \tc@TCCpointAweight\ x \tc@TCCpointAlabel\ + \tc@TCCpointBweight\ x \tc@TCCpointBlabel\ + \tc@TCCpointCweight\ x \tc@TCCpointClabel\ } \\[2mm] A média final da atividade será dada pela média das notas finais (calculadas com a expressão acima) atribuidas por cada um dos membros da banca examinadora.} - -\examboardformtitle{Formulário de Aprovação do Relatório Parcial e Banca Examinadora} - -\examboardformdesc{Aprovo o Relatório Parcial e nominata da Banca Examinadora acima relacionada.} - -\formsboardtitle{Banca Examinadora} - -\advisorapprovalformtitle{Formulário de Aprovação para Apresentação} - -\advisorapprovalformdesc{{\bf Parecer d\tccore@@ref{advisor}{article} Orientador\tccore@@ref{advisor}{narticle}}\footnote{Preenchimento Obrigatório}} - -\advisorapprovalformdescB{Aprovo a versão final do trabalho submetido pel\tccore@@ref{student}{article} alun\tccore@@ref{student}{article} e considero \tccore@@ref{student}{article} mesm\tccore@@ref{student}{article} apt\tccore@@ref{student}{article} para apresentação.} - -\rectifyapprovalformtitle{Formulário de Aprovação das Correções} - -\rectifyapprovalformdesc{\begin{description} -\item[Observação 1:] A nota final será a já atribuída pela Banca Examinadora no momento da Defesa. Caso a versão final corrigida do trabalho mais este formulário não sejam entregues até a data estipulada, o conceito do aluno passará a ser {\bf D}. -\item[Observação 2:] A assinatura d\tccore@@ref{advisor}{article} orientador\tccore@@ref{advisor}{narticle} é obrigatória, entretanto a assinatura dos membros da banca só é necessária caso o(a) mesmo(a) tenha marcado a opção "$\Box$ Revisarei o trabalho depois de corrigido" no \emph{Formulário de Correções}. -\end{description}} - -\receiptformtitle{Recibo de entrega de cópia da versão final do Trabalho de Conclusão} - -\receiptformfootnote{Entregar a cada membro da banca juntamente com a cópia do trabalho final e após encaminhar ao \tcdef@cover@secretaryacronym .} - -\receiptformdesc{Declaro que encontra-se em minha posse cópia da versão final do Trabalho de Conclusão de Curso em \tcdef@cover@course\ d\tccore@@ref{student}{article} alun\tccore@@ref{student}{article} } - - -\reviewformtitle{Formulário de Correções} -\reviewformdesc{Correções: \parbox[t]{.8\textwidth}{ -\begin{description}[tcc,noitemsep] -\item[$\Box$] Nenhuma -\item[$\Box$] Ortográfica -\item[$\Box$] Regras de Escrita -\item[$\Box$] Equações -\item[$\Box$] Resumo -\item[$\Box$] Abstract -\item[$\Box$] Índice -\item[$\Box$] Introdução -\item[$\Box$] Conclusões -\item[$\Box$] Corpo do Trabalho -\item[$\Box$] Resultados -\item[$\Box$] Adicionar mais exemplos -\item[$\Box$] Figuras -\item[$\Box$] Tabelas -\item[$\Box$] {\bf Reescrever tudo}\footnotemark[2] -\item[$\Box$] Outras: \\ -\begin{tabular}{p{0.7\textwidth}} -~\\\hline -~\\\hline -~\\\hline -~\\\hline -\end{tabular}\\[-1mm] -\item[$\Box$] {\bf Revisarei o trabalho depois de corrigido}%\footnotemark[2] -\end{description}} -} - -\reviewformfootnoteB{Neste caso \tccore@@ref{student}{article} alun\tccore@@ref{student}{article} estará em EXAME e receberá conceito final C ou D, conforme revisão final do texto.} - -\reviewformfootnote{\tcdef@forms@formsfootnote\ Após a apresentação, retornar este à coordenação do TCC.} - -\formsrectifyOKdesc{Correções satisfatórias: \hspace*{1cm}$\Box$\ sim\hspace*{2cm}$\Box$\ não} - -\TCCpointsweight{0.35}{0.35}{0.3} -\TCCpointslabel{Conteúdo}{Trab. Escrito}{Apresentação} diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.sty index 8ccebc5f24..c5f3afe8e9 100644 --- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.sty +++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.sty @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version 1.12 (2023/09/23) +%% This is version {2.0} {2023/11/23} %% %% The list of files that compose this work can be found in the README.md file at %% https://ctan.org/pkg/ufrgscca @@ -23,716 +23,225 @@ %% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym) %%%============================================================================== \NeedsTeXFormat{LaTeX2e}[2022/06/01] -\def\tc@tmp@packname{ufrgscca-forms} -\def\tc@tmp@altpackname{ufrgsccaforms} -\def\tc@tmp@packdesc{UFRGS/CCA forms commands} -\def\tc@tmp@packdate{2023/09/23} -\def\tc@tmp@packversion{1.12} -\let\@exp\expandafter -\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion} -\@exp\@exp\@exp\ProvidesPackage\@exp\@exp\@exp{\@exp\tc@tmp@packname\@exp}\@exp[\tc@tmp@packdate\space v\tc@tmp@packversion\space\tc@tmp@packdesc] -\RequirePackage{amsfonts} - - -%% local for tc@formsigdate {ufrgscca-forms} - -\cmdfactory<forms>{formssignaturelabel,examinersignature,boardsignature,advisorsignature,coadvisorsignature} -\cmdfactory<forms>{studentsignature,studentsignaturegen}% -\cmdfactory<forms>{formsstudentlabel,formsstudentlabelgen,formproflabel}% -\cmdfactory<forms>{formsboardlabel,formsadvisorlabel,formsadvisorlabelgen}% -\cmdfactory<forms>{formscoadvisorlabel,formsexaminerlabel,formsaltexaminerlabel} -\cmdfactory<forms>{formstimelabel,formsworktitlelabel,formstemptitlelabel} -\cmdfactory<forms>{formsstudentIDlabel,formsemaillabel,formsphonelabel} -\cmdfactory<forms>{agreelabel,continuelabel} -\cmdfactory<forms>{formsdatelabel,formstitle,formstitleTR,formsfootnote} -\cmdfactory<forms>{renewreqformtitle,renewreqformnotes,reqformtitle,reqformopening,reqformdesc}% -\cmdfactory<forms>{reqformdescTR}% -\cmdfactory<forms>{coadvisorformtitle,coadvisorformdesc} -\cmdfactory<forms>{formsbrieflabel,formsstudentemaillabel,formsadvisoremaillabel,formscoadvisoremaillabel} -\cmdfactory<forms>{formsreasonlabel} -\cmdfactory<forms>{examformtitle,examformdesc,examformnoteslabel} -\cmdfactory<forms>{examformnotes,examboardformtitle,examboardformdesc}% -\cmdfactory<forms>{examboardformtitleTMP,examboardformdescTMP}% -\cmdfactory<forms>{formsboardtitle,advisorapprovalformtitle,advisorapprovalformdesc,advisorapprovalformdescB} -\cmdfactory<forms>{rectifyapprovalformtitle,rectifyapprovalformdesc}% -\cmdfactory<forms>{rectifyapprovalTRformdesc}% -\cmdfactory<forms>{receiptformtitle,receiptformfootnote,receiptformdesc}% -\cmdfactory<forms>{reviewformtitle,reviewformdesc,reviewformfootnoteB,reviewformfootnote} -\cmdfactory<forms>{formsTRtitle,TRformfootnote} -\cmdfactory<forms>{TRboardformtitle,TRformfootnote} -\cmdfactory<forms>{reqArgument} - -\cmdfactory<forms>{formsrectifyOKdesc} - -\cmdfactory<forms>{reqformdescgen} -\cmdfactory<forms>{formsinternshiptitle,reqforminternshipdesc,internshipreqformnotes} -\cmdfactory<forms>{formstutorlabel,formstutoremaillabel} -\cmdfactory<forms>{formssupervisorlabel,formssupervisoremaillabel} -\cmdfactory<forms>{formsinternshipstartlabel,formsinternshipendlabel,formsinternshiplengthlabel,formsinternshipregisterlabel} -\cmdfactory<forms>{reqforminternshipinfo} -\cmdfactory<forms>{supervisorsignature,tutorsignature,internshipcoordsignature} -\cmdfactory<forms>{formssupervisorlabel} -\cmdfactory<forms>{supervisorformtitle} -\cmdfactory<forms>{tutorformtitle} -\cmdfactory<forms>{internshipstudentinfo,internshipsupervisorinfo,internshiptutorinfo,internshipcompanyinfo,internshipperiod} -\cmdfactory<forms>{internshipcoordinfo} - -\cmdfactory<forms>{internsupervisorgradesform,internsupervisornote,internsupervisorcomments} -\cmdfactory<forms>{internshiptutorcomments,internshipcoordcomments} -\cmdfactory<forms>{interntutorgrade,interncoordgrade} - -\NewDocumentCommand{\TCCpointsweight}{mmm}{% - \gdef\tc@TCCpointAweight{#1}% - \gdef\tc@TCCpointBweight{#2}% - \gdef\tc@TCCpointCweight{#3}% -}% - -\NewDocumentCommand{\TCCpointslabel}{mmm}{% - \gdef\tc@TCCpointAlabel{#1}% - \gdef\tc@TCCpointBlabel{#2}% - \gdef\tc@TCCpointClabel{#3}% -}% -% -\NewDocumentCommand{\TCCIpointsweight}{mmmm}{% - \gdef\tc@TCCIpointAweight{#1}% - \gdef\tc@TCCIpointBweight{#2}% - \gdef\tc@TCCIpointCweight{#3}% - \gdef\tc@TCCIpointDweight{#4}% -%% \gdef\tc@TCCIpointscale{#5}% -}% - -\NewDocumentCommand{\TCCIpointslabel}{mmmm}{% - \gdef\tc@TCCIpointAlabel{#1}% - \gdef\tc@TCCIpointBlabel{#2}% - \gdef\tc@TCCIpointClabel{#3}% - \gdef\tc@TCCIpointDlabel{#4}% -}% - - - - -\iftcif@english% -\input{ufrgscca-en-forms.def}% -\else% -\input{ufrgscca-ptBR-forms.def}% -\fi% - -\input{ufrgscca-formsTR.sty} -\input{ufrgscca-formsintern.sty} - - - - - - -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -%% Examiners forms% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\NewDocumentCommand{\tcforms@examinersForms}{}{% - \tccore@examiners{examinerA}% - \tcforms@examinersform{examinerA}% - \tcforms@reviewform{examinerA}% - \tccore@examiners{examinerB}% - \tcforms@examinersform{examinerB}% - \tcforms@reviewform{examinerB}% - \tccore@examiners{examinerC}% - \tcforms@examinersform{examinerC}% - \tcforms@reviewform{examinerC}% - \tccore@examiners{altexaminerA}% - \tcforms@examinersform{altexaminerA}% - \tcforms@reviewform{altexaminerA}% -}% -% -\NewDocumentCommand{\tcforms@examinerforms}{m}{% - \tcforms@examinersform{#1}% - \tcforms@reviewform{#1}% -}% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% Board receipt forms% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\NewDocumentCommand{\tcforms@receiptforms}{}{% - \tcforms@receiptform{examinerA}% - \tcforms@receiptform{examinerB}% - \tcforms@receiptform{examinerC}% - \tcforms@receiptform{altexaminerA}% -}% -% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% Aux commands% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\NewDocumentCommand{\tcforms@formsigdate}{m}{%% - \begin{flushright} \tcdef@core@formlocal % - ~\vspace*{6mm}\\% -% - $\overline{#1}$%% - \end{flushright}% -}% -% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% examiners description (for Board approval forms)% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\NewDocumentCommand{\tcforms@examinerdesc}{O{\tcdef@forms@formsexaminerlabel}mm}{%% - \tccore@examiners{#3}% - \@ifundefined{tc@#2@#3}{--}{#1: {\bf \csname tc@#2@#3\endcsname}% - - \hfill \tcdef@forms@formsemaillabel: {\bf \csname tc@#2@#3email\endcsname} ~\tcdef@forms@formsphonelabel: {\bf \csname tc@#2@#3phone\endcsname} ~\tcdef@forms@agreelabel: \rule{\tc@agreerule}{.1pt}\\}% -}% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% TCC description (for many forms)% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%\NewDocumentCommand{\tcforms@tccdesc}{}{%% -% \noindent\tcdef@forms@formsstudentlabel : {\bf \tc@studentA} \hfill \tcdef@forms@formsstudentIDlabel : {\bf \tc@studentAID}% -% -% \noindent\tcdef@forms@formsworktitlelabel : {\bf \@title}\\[-4mm]% -% -% \noindent\tcdef@forms@formsadvisorlabel : {\bf \tc@studentA@advisor}\\% -%}% -% -\NewDocumentCommand{\tcforms@tccdesc}{}{%% - \tcforms@studentIDheader - - \tcforms@advisorIDheader -}% +\ProvidesExplPackage + {ufrgscca-forms} + {2023/11/23} + {2.0} + {UFRGS/CCA forms commands} + + +%%%%%%% +%%% +%%% Just an attempt of having my packages info in a regular way +%%% Idea being: { <pck-name> / pkg info } for each and all. +%%% +%%%%%%% +\keys_define:nn { ufrgscca-forms / pkg info} + { + name .code:n = {ufrgscca-forms} , + prefix .code:n = {ufrgscca} , + date .code:n = {2023/11/23}, + version .code:n = {2.0} , + description .code:n = {UFRGS/CCA~ forms~commands} + } +\cs_if_exist:NF \__codedesc_pkg_info:nn + { + \cs_new_protected:Npn \__codedesc_pkg_info:nn #1#2 + { \keys_set:nn {#1 / pkg info}{#2} } + } +\cs_if_exist:NF \PkgInfo + { \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} } } +\cs_if_exist:NF \PkgDescription + { + \NewDocumentCommand \PkgDescription {m} + { + \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par + } + } +%%%%%%% +%%% End of cut-n-paste +%%%%%%% + + + + +\RequirePackage{starray} +\RequirePackage{amsfonts} -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% TCC (new) generic form % -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% parameters: -% #1 : footnote for 'form title' -% #2 : form 'heading title' (TCC I, for instance) -% #3 : 'form title' -% #4 : form oppening -% #5 : form body -% #6 : form closing -% -\NewDocumentCommand{\tcforms@genform}{O{}mmmmm}{% - \tc@formtopbox[tcdef@forms@formsfootnote]{\tcdef@forms@formstitle}{\tcdef@forms@examformtitle}% -% - \vfill% - #4 - \vfill% - #5 - \vfill% - #6 - \pagebreak -} +\cs_generate_variant:Nn \tl_gset:Nn {Ne} -\NewDocumentCommand{\tcforms@studentIDheader}{}{ - \noindent\tcdef@forms@formsstudentlabel : {\bf \csname tc@student\Alph{tc@studentcount}\endcsname}\hfill \tcdef@forms@formsstudentIDlabel : {\bf \tc@studentAID}\\% - \noindent\tcdef@forms@formsworktitlelabel : \@ifundefined{tc@student\Alph{tc@studentcount}title}{\textsl{\@title}}{\textsl{\csname tc@student\Alph{tc@studentcount}title\endcsname}}\\ +\DeclareKeys[forms]{ + internreqform.usage = general, + internreqform.code = { + \MakeForm{internshiprequest} + }, + internsupervisorform.usage = general, + internsupervisorform.code = { + \MakeForm{internshipsupervisorform} + }, + interntutorform.usage = general, + interntutorform.code = { + \MakeForm{internshiptutorform} + }, + reqform-I.usage = general, + reqform-I.code = { + \MakeForm{request-I} + }, + reqform-II.usage = general, + reqform-II.code = { + \MakeForm{request-II} + }, + coadvisor-I.usage = general, + coadvisor-I.code = { + \MakeForm{coadvisor-I} + }, + coadvisor-II.usage = general, + coadvisor-II.code = { + \MakeForm{coadvisor-II} + }, + boardapproval-I.usage = general, + boardapproval-I.code = { + \MakeForm{boardapproval-I} + }, + boardapproval-II.usage = general, + boardapproval-II.code = { + \MakeForm{boardapproval-II} + }, + advisorsapproval-I.usage = general, + advisorsapproval-I.code = { + \MakeForm{advisorsapproval-I} + }, + advisorsapproval-II.usage = general, + advisorsapproval-II.code = { + \MakeForm{advisorsapproval-II} + }, + receipts-I.usage = general, + receipts-I.code = { + \MakeForm{receipts-II} + }, + receipts-II.usage = general, + receipts-II.code = { + \MakeForm{receipts-II} + }, + examinersforms-I.usage = general, + examinersforms-I.code = { + \SetReviewer{2} + \MakeForm{examinersform-I} + \SetReviewer{3} + \MakeForm{examinersform-I} + }, + examinersforms-II.usage = general, + examinersforms-II.code = { + \SetReviewer{1} + \MakeForm{receipts-II} + \MakeForm{examinersform-II} + \MakeForm{correctionsform-II} + \SetReviewer{2} + \MakeForm{receipts-II} + \MakeForm{examinersform-II} + \MakeForm{correctionsform-II} + \SetReviewer{3} + \MakeForm{receipts-II} + \MakeForm{examinersform-II} + \MakeForm{correctionsform-II} + }, + rectifyapproval-I.usage = general, + rectifyapproval-I.code = { + \MakeForm{rectifyapproval-I} + }, + rectifyapproval-II.usage = general, + rectifyapproval-II.code = { + \MakeForm{rectifyapproval-II} + }, } -\NewDocumentCommand{\tcforms@examinerIDheader}{m}{ - %\tccore@examiners{#1} - \noindent\tcdef@forms@formsexaminerlabel : \textbf{\csname tc@student\Alph{tc@studentcount}@#1\endcsname}% -} -\NewDocumentCommand{\tcforms@advisorIDheader}{}{ - \noindent\tcdef@forms@formsadvisorlabel : \textbf{\csname tc@student\Alph{tc@studentcount}@advisor\endcsname}% +\NewDocumentCommand{\tcforms}{m}{% + \SetKeys[forms]{#1}% } -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% TCC examiner form (grades)% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\NewDocumentCommand{\tcforms@examinersform}{m}{% - \tc@formtopbox[tcdef@forms@formsfootnote]{\tcdef@forms@formstitle}{\tcdef@forms@examformtitle}% -% - \vfill% -% \tcdef@forms@formsstudentlabel : {\bf \csname tc@student\Alph{tc@studentcount}\endcsname}\\% -% \tcdef@forms@formsexaminerlabel : \csname tc@student\Alph{tc@studentcount}@#1\endcsname% - \tcforms@studentIDheader - - \tcforms@examinerIDheader{#1} - \vfill% - \tcdef@forms@examformdesc% - \vfill% - - \begin{center} - \begin{tabular}{|c|c|c|}% - \hline% - \tc@TCCpointAlabel & \tc@TCCpointBlabel & \tc@TCCpointClabel \\\hline% - & & \\\hline - \end{tabular}% - \end{center}% - - \vfill% - - \tcforms@formsigdate{\tcdef@forms@examinersignature}% - \vfill% - \begin{description} - \item[\tcdef@forms@examformnoteslabel:] \tcdef@forms@examformnotes - \end{description}% - - \vfill% - \pagebreak% -}% -% -% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% TCC examiners reviewer form (corrections)% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\NewDocumentCommand{\tcforms@reviewform}{m}{% - \tc@formtopbox[tcdef@forms@reviewformfootnote]{\tcdef@forms@formstitle}{\tcdef@forms@reviewformtitle}% - - \vfill% -% \tcdef@forms@formsstudentlabel : {\bf \expandafter\csname tc@student\Alph{tc@studentcount}\endcsname}\\% -% \tcdef@forms@formsexaminerlabel : \expandafter\csname tc@student\Alph{tc@studentcount}@#1\endcsname% - \tcforms@studentIDheader - - \tcforms@examinerIDheader{#1} - \vfill% - \resizebox{0.9\textwidth}{!}{%% - \tcdef@forms@reviewformdesc% - }% - \footnotetext[2]{\tcdef@forms@reviewformfootnoteB}% - \vfill% - - \tcforms@formsigdate{\tcdef@forms@examinersignature}% - \vfill% - \pagebreak% -}% -% - - -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% TCC requirement form (TCC register)% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\NewDocumentCommand{\tcforms@reqform}{}{% - \tc@formtopbox{\tcdef@forms@formstitle}{\tcdef@forms@reqformtitle}% - - \vfill% - - \tcdef@forms@reqformopening% - \vfill% - - \tcdef@forms@reqformdesc% - \vfill% - - \tcdef@forms@formstemptitlelabel : \@title % - - \tcdef@forms@formsstudentemaillabel : {\bf \tc@studentAemail} % - - \tcdef@forms@formsadvisorlabel : \tc@studentA@advisor% - - \tcdef@forms@formsadvisoremaillabel : {\bf \tc@studentA@advisoremail}% - \hfill \tcdef@forms@formsphonelabel : {\bf \tc@studentA@advisorphone}% - - - \@ifundefined{tc@studentA@coadvisor}{% - \tcdef@forms@formscoadvisorlabel : \rule{\tc@namerule}{.1pt}% - - \tcdef@forms@formscoadvisoremaillabel : {\bf \rule{\tc@emailrule}{.1pt}}% - \hfill \tcdef@forms@formsphonelabel : {\bf \rule{\tc@phonerule}{.1pt}}% - } +\NewDocumentCommand{\tcemptyforms}{m} { - \tcdef@forms@formscoadvisorlabel : \tc@studentA@coadvisor% - - \tcdef@forms@formscoadvisoremaillabel : {\bf \tc@studentA@coadvisoremail}% - \hfill \tcdef@forms@formsphonelabel : {\bf \tc@studentA@coadvisorphone}% - }% - - %{\bf \tcdef@forms@formsbrieflabel}:\footnote[1]{\tcdef@forms@renewreqformnotes}% - - \vfill% - \tcdef@forms@reqArgument - - - \tcdef@core@tccArgument% - - \vfill - \parbox[t]{.45\textwidth}{\tcforms@formsigdate{\tcdef@forms@studentsignature}}\hfill% - \parbox[t]{.45\textwidth}{\tcforms@formsigdate{\tcdef@forms@advisorsignature}}% - \pagebreak% -}% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% TCC co-advisor requirement form (TCC register)% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\NewDocumentCommand{\tcforms@coadvisorform}{}{% - \@ifundefined{tc@studentA@coadvisor}{% - \coadvisor{\rule{\tc@namerule}{.1pt}}{}% - \coadvisorinfo{}{\rule{\tc@titlerule}{.1pt}}{\rule{\tc@emailrule}{.1pt}}{\rule{\tc@phonerule}{.1pt}}% - }{}% - \tc@formtopbox{\tcdef@forms@formstitle}{\tcdef@forms@coadvisorformtitle}% - - \vfill% - - \tcdef@forms@reqformopening% - \vfill% - - \tcdef@forms@coadvisorformdesc% - \vfill% - - \tcdef@forms@formstemptitlelabel : \@title % - - \tcdef@forms@formsadvisorlabel: \tc@studentA@advisor - - \tcdef@forms@formscoadvisorlabel: \tc@studentA@coadvisor% - - \tcdef@forms@formscoadvisoremaillabel : {\bf \tc@studentA@coadvisoremail}% - \hfill \tcdef@forms@formsphonelabel : {\bf \tc@studentA@coadvisorphone}% - - - \vfill% - {\bf \tcdef@forms@formsreasonlabel}:% - - \tcdef@core@tcccoadvisorbrief% !!!! What a Hell ?!?!?! - - \tcforms@formsigdate{\tcdef@forms@studentsignature}% - - \parbox[t]{.45\textwidth}{\tcforms@formsigdate{\tcdef@forms@advisorsignature}}\hfill% - \parbox[t]{.45\textwidth}{\tcforms@formsigdate{\tcdef@forms@coadvisorsignature}}% - \pagebreak% -}% -% -% -% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% TCC renew requirement form (TCC register)% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\NewDocumentCommand{\tcforms@renewreqform}{}{% - \tc@formtopbox{\tcdef@forms@formstitle}{\tcdef@forms@renewreqformtitle}% - - \vfill% - \tcforms@tccdesc% - - \tcdef@forms@formsstudentemaillabel : {\bf \tc@studentAemail} % - - \hfill \tcdef@forms@formsadvisoremaillabel : {\bf \tc@studentA@advisoremail}% - - \hfill \tcdef@forms@formsphonelabel : {\bf \tc@studentA@advisorphone}% - \vfill% - {\bf \tcdef@forms@formsbrieflabel}:\footnote[1]{\tcdef@forms@renewreqformnotes}% - - \tcdef@core@tccbrief% - \vfill% - \tcforms@formsigdate{\tcdef@forms@studentsignature}% - \vfill% - - \tcforms@formsigdate{\tcdef@forms@advisorsignature}% - \vfill% - \pagebreak% -}% -% -% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% TCC Board approval form% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\NewDocumentCommand{\tcforms@examboardform}{}{% - \tc@formtopbox{\tcdef@forms@formstitle}{\tcdef@forms@examboardformtitle}% - - \vfill% - - \tcforms@tccdesc% - - \vfill% - \begin{center} - \tcdef@forms@formsboardtitle - \end{center}% - - \tcforms@examinerdesc{studentA}{examinerA}% - - \tcforms@examinerdesc{studentA}{examinerB}% - - \tcforms@examinerdesc{studentA}{examinerC}% - - \tcforms@examinerdesc[\tcdef@forms@formsaltexaminerlabel]{studentA}{altexaminerA}% - - \vfill% + \__ufrgscca_emptyfields: + \SetKeys[forms]{#1}% + } - \tcdef@forms@examboardformdesc% - \vfill% - \tcforms@formsigdate{\tcdef@forms@advisorsignature}% - \vfill% - \pagebreak% -}% -% -% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% TCC Board approval form% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\NewDocumentCommand{\tcforms@examboardformTMP}{}{% - \tc@formtopbox{\tcdef@forms@formstitle}{\tcdef@forms@examboardformtitleTMP}% +\int_new:N \l__ufrgscca_a_int +\int_new:N \l__ufrgscca_b_int +\NewDocumentCommand{\BlankLines}{m}{ + \int_zero:N \l__ufrgscca_a_int + \int_set:Nn \l__ufrgscca_b_int {#1} + \int_do_until:nNnn {\l__ufrgscca_a_int} {=} {\l__ufrgscca_b_int} + { + \int_incr:N \l__ufrgscca_a_int + \hrulefill\\\par% - \vfill% + } +} - \tcforms@tccdesc% +\NewDocumentCommand{\SetForm}{mm+m}{ + \prop_put:Nnn \l__ufrgscca_forms_prop {#1.#2}{#3} +} - \vfill% +\NewDocumentCommand{\MakeForm}{m} { \begin{center} - \tcdef@forms@formsboardtitle - \end{center}% - - \tcforms@examinerdesc{studentA}{examinerA}% - - \tcforms@examinerdesc{studentA}{examinerB}% - - \tcforms@examinerdesc{studentA}{examinerC}% - - \tcforms@examinerdesc[\tcdef@forms@formsaltexaminerlabel]{studentA}{altexaminerA}% - - \vfill% - - \tcdef@forms@examboardformdescTMP% - \vfill% - - \tcforms@formsigdate{\tcdef@forms@advisorsignature}% - \vfill% - - \pagebreak% -}% -% -% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% TCC Board receipts form% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\NewDocumentCommand{\tcforms@receiptform}{m}{% - \tc@formtopbox[tcdef@forms@receiptformfootnote]{\tcdef@forms@formstitle}{\tcdef@forms@receiptformtitle}% - - \vfill% - - \tcforms@tccdesc\\% - - \noindent\tcdef@forms@formsboardlabel : {\bf \csname tc@student\Alph{tc@studentcount}@#1\endcsname }% - - \vfill% - \tcdef@forms@receiptformdesc {\bf \tc@studentA},\ \ \ \tcdef@forms@formsstudentIDlabel : {\bf \tc@studentAID}.% - - \vfill% - - \tcforms@formsigdate{\tcdef@forms@boardsignature}% - \vfill% - \pagebreak% -}% -% -% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% examiners approval/not signature (for rectify approval form)% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\NewDocumentCommand{\tcforms@approvalsigdate}{mm}{%% - \tcdef@forms@formsrectifyOKdesc% - \hfill\tcdef@forms@formsdatelabel:\rule{\tc@daterule}{.1pt}\\[3mm]% - #1: #2 \hfill \tcdef@forms@formssignaturelabel:\rule{\tc@namerule}{.1pt}% -}% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% TCC Board rectify approval form% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\NewDocumentCommand{\tcforms@rectifyexaminersig}{O{\tcdef@forms@formsexaminerlabel}m}{\@ifundefined{#2}{}{\tcforms@approvalsigdate{#1}{\csname #2\endcsname}}\\[3mm]}% -% -\NewDocumentCommand{\tcforms@rectifyapprovalform}{}{% - \tc@formtopbox{\tcdef@forms@formstitle}{\tcdef@forms@rectifyapprovalformtitle}% - - \vfill% - - \tcforms@tccdesc% - - \vfill% - \tcdef@forms@rectifyapprovalformdesc% - - \vfill% - - \tcforms@rectifyexaminersig[\tcdef@forms@formsadvisorlabel]{tc@studentA@advisor}% - - \vfill% - - \@ifundefined{tc@nBoard}{}{% - \tcforms@rectifyexaminersig{tc@studentA@examinerA}% - }% - - \tcforms@rectifyexaminersig{tc@studentA@examinerB}% - - \tcforms@rectifyexaminersig{tc@studentA@examinerC}% - - \tcforms@rectifyexaminersig{tc@studentA@altexaminerA}% - \vfill% - \pagebreak% -}% -% + \noindent + \parbox[t]{\textwidth} + { + \centering + { + \UseTerm{cover.topbase}\\ + {\sc \prop_item:Nn \l__ufrgscca_forms_prop {#1.heading}} + } + }\\[7mm] + {\bf \prop_item:Nn \l__ufrgscca_forms_prop {#1.title}} + \prop_if_in:NnTF \l__ufrgscca_forms_prop {#1.footnote} + {\footnote[1]{\prop_item:Nn \l__ufrgscca_forms_prop {#1.footnote}}} + {}\\ + \end{center} % -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% TCC Advisor approval form% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\NewDocumentCommand{\tcforms@advisorapprovalform}{}{% - \tc@formtopbox{\tcdef@forms@formstitle}{\tcdef@forms@advisorapprovalformtitle}% - - \vfill% - - \tcforms@tccdesc% - - \vfill% - \tcdef@forms@advisorapprovalformdesc% - - \vfill% - - \tcdef@core@tccadvisorsreview% - - \vfill% - \tcdef@forms@advisorapprovalformdescB% - - \tcforms@formsigdate{\tcdef@forms@advisorsignature}% - \vfill% - - \tcforms@formsigdate{\tcdef@forms@studentsignature}% - \vfill% - \pagebreak% -}% -% -% -%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%% -% - -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% set of blank lines% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\cmdfactory<core>{formsblanklines,formsblanklinesB} -\formsblanklines{\hrulefill\\% - -\hrulefill\\% - -\hrulefill\\% - -\hrulefill\\% - -\hrulefill\\% - -\hrulefill\\% - -\hrulefill% -}% -% -\formsblanklinesB{\hrulefill\\% - - \hrulefill\\% - - \hrulefill\\% + \vfill + \prop_item:Nn \l__ufrgscca_forms_prop {#1.opening} + \vfill + \prop_item:Nn \l__ufrgscca_forms_prop {#1.body} + \vfill + \prop_item:Nn \l__ufrgscca_forms_prop {#1.closing} + \pagebreak + } - \hrulefill\\% - \hrulefill\\% -}% +\NewDocumentCommand{\SignatureDate}{m}{ + \begin{flushright} \UseTerm{localdate}% + ~\vspace*{6mm}\\ % + $\overline{\text{\emph{#1}}}$ + \end{flushright} +} - -\DeclareKeys[forms]{ - internreqform.usage = general, - internreqform.code = {\tcforms@internreqform}, - internsupervisorform.usage = general, - internsupervisorform.code = {\tcforms@internsupervisorform}, - interntutorform.usage = general, - interntutorform.code = {\tcforms@interntutorform}, - reqform.usage = general, - reqform.code = {\tcforms@reqform}, - reqform-II.usage = general, - reqform-II.code = {\tcforms@reqform}, - coadvisor.usage = general, - coadvisor.code = {\tcforms@coadvisorform}, - coadvisor-II.usage = general, - coadvisor-II.code = {\tcforms@coadvisorform}, - boardapproval.usage = general, - boardapproval.code = {\tcforms@examboardform}, - boardapproval-II.usage = general, - boardapproval-II.code = {\tcforms@examboardform}, - boardapproval-IIb.usage = general, - boardapproval-IIb.code = {\tcforms@examboardformTMP}, - advisorsapproval.usage = general, - advisorsapproval.code = {\tcforms@advisorapprovalform}, - advisorsapproval-II.usage = general, - advisorsapproval-II.code = {\tcforms@advisorapprovalform}, - receipts.usage = general, - receipts.code = {\tcforms@receiptforms}, - receipts-II.usage = general, - receipts-II.code = {\tcforms@receiptforms}, - examinersforms.usage = general, - examinersforms.code = {\tcforms@examinersForms}, - examinersforms-II.usage = general, - examinersforms-II.code = {\tcforms@examinersForms}, - rectifyapproval.usage = general, - rectifyapproval.code = {\tcforms@rectifyapprovalform}, - rectifyapproval-II.usage = general, - rectifyapproval-II.code = {\tcforms@rectifyapprovalform}, - reqform-I.usage = general, - reqform-I.code = {\tcforms@reqTRform}, - coadvisor-I.usage = general, - coadvisor-I.code = {\tcforms@coadvisorTRform}, - examinersforms-I.usage = general, - examinersforms-I.code = {\tcforms@examinersTRforms}, - advisorsapproval-I.usage = general, - advisorsapproval-I.code = {\tcforms@advisorTRapprovalform}, - boardapproval-I.usage = general, - boardapproval-I.code = {\tcforms@advisorTRboardform}, - rectifyapproval-I.usage = general, - rectifyapproval-I.code = {\tcforms@rectifyTRapprovalform}, - } +\NewDocumentCommand{\BoardDescSignature}{mm}{ + #1:~ \textbf{\DataFields{#2}{name}}\vspace{-2ex} + \begin{flushright}%~ \hfill + \UseLabel{email}:~ \textbf{\DataFields{#2}{email}}~ + \UseLabel{phone}:~ \textbf{\DataFields{#2}{phone}}~ + \UseLabel{agree}:~ \rule{\l__ufrgscca_agree_rule_dim}{.1pt} + \end{flushright} +} -\NewDocumentCommand{\tcforms}{m}{% - \SetKeys[forms]{#1}% -} +%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%% +%%% +%%% loading defaults +%%% +%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%% +\ExplSyntaxOff + \input{ufrgscca-forms.tex} +\ExplSyntaxOn -\NewDocumentCommand{\tcemptyforms}{m}{% - \tccore@resetfields% - \title{\rule{\tc@namerule}{.1pt}}% - \tccore@emptyfields% - \SetKeys[forms]{#1}% -} diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.tex b/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.tex new file mode 100644 index 0000000000..9f822247c9 --- /dev/null +++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.tex @@ -0,0 +1,1277 @@ +%%%============================================================================== +%% Copyright 2022-23 by Alceu Frigeri +%% +%% This work may be distributed and/or modified under the conditions of +%% +%% * The [LaTeX Project Public License](http://www.latex-project.org/lppl.txt), +%% version 1.3c (or later), and/or +%% * The [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html), +%% version 3 (or later) +%% +%% This work has the LPPL maintenance status *maintained*. +%% +%% The Current Maintainer of this work is Alceu Frigeri +%% +%% This is version {2.0} {2023/11/23} +%% +%% The list of files that compose this work can be found in the README.md file at +%% https://ctan.org/pkg/ufrgscca +%% +%%%============================================================================== +%% UFRGS stands for "Federal University of Rio Grande do Sul" in south Brazil +%% EE stands for "Engineering School" +%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym) +%%%============================================================================== + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% +%%% Internship +%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%% +%% req form - Internship +%%%%%%%%%%%%%%% +\SetForm{internshiprequest}{heading}{\UseTerm{title.internship}} +\SetForm{internshiprequest}{title}{\UseTerm{title.requestform}} + +%%% +\SetForm{internshiprequest}{opening}{ + + \UseTerm{opening.requestform}} + +%%% +\SetForm{internshiprequest}{body}{ + \UseTerm{desc.requestform} \Activity[internship]{name}. + \vfill% + \UseLabel{student.email}: {\bf \DataFields{student}{email}} % +\vspace{2mm} + +\UseLabel{tutor}: \textbf{\DataFields{student.tutor}{name}}% + +\UseLabel{tutor.email}: {\bf \DataFields{student.tutor}{email}}% +\hfill \UseLabel{phone}: {\bf \DataFields{student.tutor}{phone}}% +\vspace{2mm} + + +Empresa: {\bf \DataFields{student.internship}{company}}% + +Área de Atividade: {\bf \DataFields{student.internship}{field}}% +\vspace{2mm} + +\UseTerm{desc.supervisor} + +Cargo: {\bf \DataFields{student.supervisor}{office}}\hfill Email: {\bf \DataFields{student.supervisor}{email}} \hfill Fone: {\bf \DataFields{student.supervisor}{phone}} % +\vspace{2mm} + +Data de Início: {\bf \DataFields{student.internship}{start}}\hfill Previsão de Término: {\bf \DataFields{student.internship}{end}}\hfill Duração: {\bf \DataFields{student.internship}{length}} + +} + +%%% +\SetForm{internshiprequest}{closing}{ + \parbox[t]{.45\textwidth}{\SignatureDate{\UseLabel{signature.supervisor}}}\hfill% + \parbox[t]{.45\textwidth}{\SignatureDate{\UseLabel{signature.tutor}}}% + + \hfill% + \parbox[t]{.45\textwidth}{\SignatureDate{\UseLabel{signature.student}}} +} + + +%%%%%%%%%%%%%%% +%% supervisor`s form - Internship +%%%%%%%%%%%%%%% +\SetForm{internshipsupervisorform}{heading}{\UseTerm{title.internship}} +\SetForm{internshipsupervisorform}{title}{\UseTerm{title.internsupervisorform}} +\SetForm{internshipsupervisorform}{footnote}{\UseTerm{footnote.supervisorsform}} + +%%% +\SetForm{internshipsupervisorform}{opening}{ + \UseTerm{desc.student}\\% + \noindent\UseTerm{desc.supervisor}\\% + \UseTerm{desc.internshipperiod} +} + +%%% +\SetForm{internshipsupervisorform}{body}{ +\begin{itemize}[tcc,nosep] + \item Grupo I - Aspectos Profissionais + \begin{enumerate}[tcc,nosep] + \item \textbf{Qualidade do Trabalho}:\emptybox\\ {\footnotesize considerar a qualidade do trabalho tendo em vista o que seria desejável} + \item \textbf{Engenhosidade}:\emptybox\\ {\footnotesize capacidade de sugerir, projetar ou executar modificações ou inovações.} + \item \textbf{Conhecimentos}:\emptybox\\ {\footnotesize conhecimento demonstrado no desenvolvimento das atividades programadas.} + \item \textbf{Cumprimentos das Tarefas}:\emptybox\\ {\footnotesize considerar o volume de atividades cumpridas dentro de um padrão razoável.} + \item \textbf{Iniciativa}:\emptybox\\ {\footnotesize iniciativa para desenvolver suas atividades sem dependências de outros.} + \end{enumerate} + \item Grupo II - Aspectos Humanos + \begin{enumerate}[tcc,nosep] + \item \textbf{Assiduidade}:\emptybox\\ {\footnotesize cumprimento do horário do estágio e ausência de falhas} +\item \textbf{Disciplina}:\emptybox\\ {\footnotesize observância das normas e regulamentos internos da empresa.} +\item \textbf{Sociabilidade}:\emptybox\\ {\footnotesize facilidade de se integrar com colegas e ambiente de trabalho.} +\item \textbf{Cooperação}:\emptybox\\ {\footnotesize disposição para cooperar com colegas e para atender a atividades..} +\item \textbf{Senso de Responsabilidade}:\emptybox\\ {\footnotesize zelo pelo material, equipamentos e bens da empresa.} + \end{enumerate} +\end{itemize} + + \vfill% + + Considerações Complementares: \BlankLines{5} +} + +%%% +\SetForm{internshipsupervisorform}{closing}{ +\hfill\parbox[t]{.45\textwidth}{\SignatureDate{\UseLabel{signature.supervisor}}} +} + +%%%%%%%%%%%%%%% +%% tutor`s form - Internship +%%%%%%%%%%%%%%% +\SetForm{internshiptutorform}{heading}{\UseTerm{title.internship}} +\SetForm{internshiptutorform}{title}{\UseTerm{title.interntutorform}} + +%%% +\SetForm{internshiptutorform}{opening}{ + \UseTerm{desc.student}\\% + \UseLabel{tutor}: \textbf{\DataFields{student.tutor}{name}}\\% + \UseTerm{desc.internshipperiod} +} + +%%% +\SetForm{internshiptutorform}{body}{ + Avaliação d\DataFields{student.tutor}{article} Prof\DataFields{student.tutor}{narticle}. Tutor\DataFields{student.tutor}{narticle}:\emptybox + + \vfill% + + Considerações d\DataFields{student.tutor}{article} Prof\DataFields{student.tutor}{narticle}. Tutor\DataFields{student.tutor}{narticle} sobre o Estágio: + + \BlankLines{5}% + + \vfill% + + \hfill\parbox[t]{.45\textwidth}{\SignatureDate{\UseLabel{signature.tutor}}} + + % \hline + \vfill% + + Avaliação d\ActivityCoord[internship]{article} Prof\ActivityCoord[internship]{narticle}. Coordenador\ActivityCoord[internship]{narticle}:\emptybox% + \vfill + + Considerações d\ActivityCoord[internship]{article} Prof\ActivityCoord[internship]{narticle}. Coordenador\ActivityCoord[internship]{narticle} sobre o Estágio: + + \BlankLines{5}% + \vfill% + + \hfill\parbox[t]{.45\textwidth}{\SignatureDate{\UseLabel{signature.internshipcoord}}} +} + +%%% +\SetForm{internshiptutorform}{closing}{} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% +%%% TCCs - Calendar - EVENTS +%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%\SetActivityNewEvent{} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% +%%% TCCs - Calendar +%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\SetForm{calendar-I}{heading}{\UseTerm{title.tccI}} +\SetForm{calendar-I}{title}{\UseTerm{title.calendar}} +\SetForm{calendar-I}{opening}{} + +%%% + \ExplSyntaxOn + \bool_new:N \l__ufrgscca_tmp_bool +\SetForm{calendar-I}{body}{% + \starray_set_iter_from_hash:nn {activity}{tccI} + \starray_reset_iter:n {activity.calendar} + \bool_set_true:N \l__ufrgscca_tmp_bool + { \footnotesize% + \begin{center} +% + \resizebox{\textwidth}{!}{%% + \begin{tabular}{ccp{11.5cm}}% + Data/Período & Semana~ Letiva & Evento\\\hline + \bool_do_while:Nn \l__ufrgscca_tmp_bool + { + \textbf{\starray_get_prop:nn {activity.calendar}{date}} & \starray_get_prop:nn {activity.calendar}{week} & \starray_get_prop:nn {activity.calendar}{event}\\\hline + \starray_next_iter:nF {activity.calendar}{\bool_set_false:N \l__ufrgscca_tmp_bool} + } + \end{tabular}}% +% + \end{center}% + \scriptsize \UseTerm{notes.calendarI} + }% +} + \ExplSyntaxOff + +%%% +\SetForm{calendar-I}{closing}{\vfill}% +%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%% + +\SetForm{calendar-II}{heading}{\UseTerm{title.tccII}} +\SetForm{calendar-II}{title}{\UseTerm{title.calendar}} +\SetForm{calendar-II}{opening}{} + +%%% + \ExplSyntaxOn +% \bool_new:N \l__ufrgscca_tmp_bool +\SetForm{calendar-II}{body}{% + \starray_set_iter_from_hash:nn {activity}{tccII} + \starray_reset_iter:n {activity.calendar} + \bool_set_true:N \l__ufrgscca_tmp_bool + { \footnotesize% + \begin{center} +% + \resizebox{\textwidth}{!}{%% + \begin{tabular}{ccp{11.5cm}}% + Data/Período & Semana~ Letiva & Evento\\\hline + \bool_do_while:Nn \l__ufrgscca_tmp_bool + { + \textbf{\starray_get_prop:nn {activity.calendar}{date}} & \starray_get_prop:nn {activity.calendar}{week} & \starray_get_prop:nn {activity.calendar}{event}\\\hline + \starray_next_iter:nTF {activity.calendar}{}{\bool_set_false:N \l__ufrgscca_tmp_bool} + } + \end{tabular}}% +% + \end{center}% + \scriptsize \UseTerm{notes.calendarII} + }% +} + \ExplSyntaxOff + +%%% +\SetForm{calendar-II}{closing}{\vfill}% +%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%% + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% +%%% TCC - I +%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%% +%% req form - I +%%%%%%%%%%%%%%% +\SetForm{request-I}{heading}{\UseTerm{title.tccI}} +\SetForm{request-I}{title}{\UseTerm{title.requestform}} +\SetForm{request-I}{opening}{\UseTerm{opening.requestform}} + +%%% +\SetForm{request-I}{body}{% + \UseTerm{desc.requestform} \Activity[tccI]{name}. + \vfill% + + \UseLabel{worktitle.temp}: \DataFields{student}{worktitle}%\@title % + + \UseLabel{student.email}: {\bf \DataFields{student}{email}} % + + \UseLabel{advisor}: \DataFields{student.advisor}{name}% + + \UseLabel{advisor.email}: {\bf \DataFields{student.advisor}{email}}% + \hfill \UseLabel{phone}: {\bf \DataFields{student.advisor}{phone}}% + + {\bf Resumo}:\footnote[1]{\UseTerm{footnote.requestform}}% + + \vfill% + + \DataFields{student}{brief} +} + +%%% +\SetForm{request-I}{closing}{% + \parbox[t]{.45\textwidth}{\SignatureDate{\UseLabel{signature.student}}}\hfill% + \parbox[t]{.45\textwidth}{\SignatureDate{\UseLabel{signature.advisor}}}% +}% +%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%% +%% coadvisor - I +%%%%%%%%%%%%%%% +\SetForm{coadvisor-I}{heading}{\UseTerm{title.tccI}} +\SetForm{coadvisor-I}{title}{\UseTerm{title.coadvisorform}} +\SetForm{coadvisor-I}{opening}{% + + \UseTerm{opening.requestform} + \coadvisoremptyifnone +} + +%%% +\SetForm{coadvisor-I}{body}{% + \UseTerm{desc.coadvisorform} + \vfill% + + \UseLabel{worktitle.temp}: \DataFields{student}{worktitle}%\@title % + + \UseLabel{advisor}: \DataFields{student.advisor}{name} + + \UseLabel{coadvisor}: \DataFields{student.coadvisor}{name}% + + \UseLabel{coadvisor.email}: {\bf \DataFields{student.coadvisor}{email}}% + \hfill \UseLabel{phone}: {\bf \DataFields{student.coadvisor}{phone}}\\% + + {\bf Justificativa}:% + \vfill + + \DataFields{student.coadvisor}{reason} + +} + +%%% +\SetForm{coadvisor-I}{closing}{% + + \SignatureDate{\UseLabel{signature.student}} + + \parbox[t]{.45\textwidth}{\SignatureDate{\UseLabel{signature.advisor}}}\hfill% + \parbox[t]{.45\textwidth}{\SignatureDate{\UseLabel{signature.coadvisor}}}% +}% +%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%% +%% board approval - I +%%%%%%%%%%%%%%% +\SetForm{boardapproval-I}{heading}{\UseTerm{title.tccI}} +\SetForm{boardapproval-I}{title}{\UseTerm{title.boardapproval}} +\SetForm{boardapproval-I}{opening}{\UseTerm{desc.studentwork.full}} + +%%% +\SetForm{boardapproval-I}{body}{ \begin{center} + \UseLabel{board} + \end{center}% + +%%% TODO: That's do be done... convert it to starray!!! + + \BoardDescSignature{Avaliador\DataFields{student.reviewer[2]}{narticle}}{student.reviewer[2]} + + \BoardDescSignature{Avaliador\DataFields{student.reviewer[3]}{narticle}}{student.reviewer[3]} + + \vfill% + + Indicamos a nominata da Banca Examinadora acima relacionada.% +} + +%%% +\SetForm{boardapproval-I}{closing}{\hfill\parbox[t]{.45\textwidth}{\SignatureDate{\UseLabel{signature.advisor}}}} +%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%% +%% advisor's approval - I +%%%%%%%%%%%%%%% +\SetForm{advisorsapproval-I}{heading}{\UseTerm{title.tccI}} +\SetForm{advisorsapproval-I}{title}{\UseTerm{title.advisorsapproval-I}} +\SetForm{advisorsapproval-I}{opening}{\UseTerm{desc.studentwork.full}} + +%%% +\SetForm{advisorsapproval-I}{body}{% + {\bf Parecer d\DataFields{student.advisor}{article} Orientador\DataFields{student.advisor}{narticle}}\footnote{Preenchimento Obrigatório} + + \vfill% + + + \DataFields{student.advisor}{assessment} +} + +%%% +\SetForm{advisorsapproval-I}{closing}{ + \SignatureDate{\UseLabel{signature.advisor}}\vfill% + \SignatureDate{\UseLabel{signature.student}}% + +}% +%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%% +%% examiner's form - I +%%%%%%%%%%%%%%% +\SetForm{examinersform-I}{heading}{\UseTerm{title.tccI}} +\SetForm{examinersform-I}{title}{\UseTerm{title.reviewersform}} +\SetForm{examinersform-I}{footnote}{\UseTerm{footnote.reviewersform}} +\SetForm{examinersform-I}{opening}{% + \UseTerm{desc.studentwork}\\[2mm] + + \UseLabel{reviewer}: \textbf{\DataFields{student.reviewer}{name}}\\[-4mm]% + + {\scriptsize {\textsl{(favor retornar este diretamente à coordenação de TCC.)}}} + } + +%%% +\SetForm{examinersform-I}{body}{% + O trabalho submetido\footnotemark[2]: + + \begin{enumerate}[tcc,nosep] + \item \emptybox\ \textbf{Enquadramento do Tema}. {\footnotesize(peso:2)}\\ {\footnotesize Quão bem o mesmo se enquadra no perfil de um formando em Eng. de Controle e Automação.} + \item \emptybox\ \textbf{Revisão Bibliográfica}. {\footnotesize(peso:2)}\\ {\footnotesize A revisão apresentada é adequada, suficiente, para o tema do trabalho?} + \item \emptybox\ \textbf{Abordagem/Plano de Trabalho Proposto}. {\footnotesize(peso:2)}\\ {\footnotesize Considerar se a abordagem, plano de trabalho proposto, é adequada e factivel.} + \item \emptybox\ \textbf{Redação}. {\footnotesize(peso:1)}\\ {\footnotesize Considerar a qualidade do trabalho escrito apresentado.} + \item { O Trabalho Submetido} + \begin{itemize}[tcc,nosep] + \item[$\Box$] Está adequado, dispensando correções do texto. + \item[$\Box$] Está adequado, sendo necessário correções, conforme anotações anexas. + \item[$\Box$] Necessita ser revisto/re-escrito,\footnotemark[3] e: + \begin{itemize} + \item[$\Box$] basta a revisão final do texto pelo orientador, + \item[$\Box$] revisarei o trabalho depois de corrigido. + \end{itemize} + \end{itemize} + \end{enumerate} + +Outras considerações, parecer (se necessário): \BlankLines{6} + + \footnotetext[2]{Use a escala: \begin{enumerate*}\item[0.]Péssimo \item[3.]Deficitário \item[6.]Bom \item[8.]Muito Bom \item[10.]Excelente \end{enumerate*}}% + \footnotetext[3]{Neste caso \DataFields{student}{article} alun\DataFields{student}{article} estará em EXAME e receberá conceito final C ou D, conforme revisão final do texto.}% +} + +%%% +\SetForm{examinersform-I}{closing}{%signature.reviewer + \SignatureDate{\UseLabel{signature.reviewer}}% +} +%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%% +%% rectify approval - I +%%%%%%%%%%%%%%% +\SetForm{rectifyapproval-I}{heading}{\UseTerm{title.tccI}} +\SetForm{rectifyapproval-I}{title}{\UseTerm{title.rectifyapproval}} +\SetForm{rectifyapproval-I}{opening}{\UseTerm{desc.studentwork.full}} + +%%% +\SetForm{rectifyapproval-I}{body}{ % + \SetTerms{temp.formrefname = {Formulário de Avaliação}} + \UseTerm{desc.rectifyapproval} + + \vfill% + + \ApprovalSignature[\UseLabel{advisor}]{\DataFields{student.advisor}{name}} + +} + +%%% +\SetForm{rectifyapproval-I}{closing}{ + + \SetReviewer{2} + \ApprovalSignature{\DataFields{student.reviewer}{name}}\vfill + + \SetReviewer{3} + \ApprovalSignature{\DataFields{student.reviewer}{name}}\vfill + + } +%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%% + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% +%%% TCC - II +%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%% +%% req form - II +%%%%%%%%%%%%%%% +\SetForm{request-II}{heading}{\UseTerm{title.tccII}} +\SetForm{request-II}{title}{\UseTerm{title.requestform}} + +\SetForm{request-II}{opening}{ + +\UseTerm{opening.requestform}} + +%%% +\SetForm{request-II}{body}{ + \UseTerm{desc.requestform} \Activity[tccII]{name}. + \vfill% + + \UseLabel{worktitle.temp}: \DataFields{student}{worktitle}%\@title % + + \UseLabel{student.email}: {\bf \DataFields{student}{email}} % + + \UseLabel{advisor}: \DataFields{student.advisor}{name}% + + \UseLabel{advisor.email}: {\bf \DataFields{student.advisor}{email}}% + \hfill \UseLabel{phone}: {\bf \DataFields{student.advisor}{phone}}% + + \UseLabel{coadvisor}: \DataFields{student.coadvisor}{name}% + + \UseLabel{coadvisor.email}: {\bf \DataFields{student.coadvisor}{email}}% + \hfill \UseLabel{phone}: {\bf \DataFields{student.coadvisor}{phone}}% + + + \vfill% + O Tema do Trabalho e Orientador (Coorientador) seguem sendo os mesmos de TCC I ? +\begin{itemize}[tcc,noitemsep] + \item[$\Box$] SIM + \item[$\Box$] NÃO, neste caso \textbf{justifique} a mudança no espaço a seguir: + \end{itemize} + + + \DataFields{student}{reason} + +} + +%%% +\SetForm{request-II}{closing}{ + \parbox[t]{.45\textwidth}{\SignatureDate{\UseLabel{signature.student}}}\hfill% + \parbox[t]{.45\textwidth}{\SignatureDate{\UseLabel{signature.advisor}}}% +} +%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%% +%% coadvisor - II +%%%%%%%%%%%%%%% +\SetForm{coadvisor-II}{heading}{\UseTerm{title.tccII}} +\SetForm{coadvisor-II}{title}{\UseTerm{title.coadvisorform}} +\SetForm{coadvisor-II}{opening}{% + + \UseTerm{opening.requestform} + \coadvisoremptyifnone +} + +%%% +\SetForm{coadvisor-II}{body}{% + \UseTerm{desc.coadvisorform} + \vfill% + + \UseLabel{worktitle.temp}: \DataFields{student}{worktitle}%\@title % + + \UseLabel{advisor}: \DataFields{student.advisor}{name} + + \UseLabel{coadvisor}: \DataFields{student.coadvisor}{name}% + + \UseLabel{coadvisor.email}: {\bf \DataFields{student.coadvisor}{email}}% + \hfill \UseLabel{phone}: {\bf \DataFields{student.coadvisor}{phone}}\\% + + {\bf Justificativa}:% + \vfill + + \DataFields{student.coadvisor}{reason} +} + +%%% +\SetForm{coadvisor-II}{closing}{% + + \SignatureDate{\UseLabel{signature.student}} + + \parbox[t]{.45\textwidth}{\SignatureDate{\UseLabel{signature.advisor}}}\hfill% + \parbox[t]{.45\textwidth}{\SignatureDate{\UseLabel{signature.coadvisor}}}% +} +%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%% + + + + +%%%%%%%%%%%%%%% +%% board approval - II +%%%%%%%%%%%%%%% +\SetForm{boardapproval-II}{heading}{\UseTerm{title.tccII}} +\SetForm{boardapproval-II}{title}{\UseTerm{title.boardapproval}} +\SetForm{boardapproval-II}{opening}{\UseTerm{desc.studentwork.full}} + +%%% +\SetForm{boardapproval-II}{body}{% + \begin{center} + \UseLabel{board}% + \end{center}% + + \BoardDescSignature{Avaliador\DataFields{student.reviewer[1]}{narticle}}{student.reviewer[1]} + + \BoardDescSignature{Avaliador\DataFields{student.reviewer[2]}{narticle}}{student.reviewer[2]} + + \BoardDescSignature{Avaliador\DataFields{student.reviewer[3]}{narticle}}{student.reviewer[3]} + + \BoardDescSignature{Suplente}{student.altreviewer[1]} + + \vfill% + + Indicamos a nominata da Banca Examinadora acima relacionada.% +} + +%%% +\SetForm{boardapproval-II}{closing}{ \SignatureDate{\UseLabel{signature.advisor}}} +%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%% + + + + +%%%%%%%%%%%%%%% +%% advisor's approval - II +%%%%%%%%%%%%%%% +\SetForm{advisorsapproval-II}{heading}{\UseTerm{title.tccII}} +\SetForm{advisorsapproval-II}{title}{\UseTerm{title.advisorsapproval-II}} +\SetForm{advisorsapproval-II}{opening}{\UseTerm{desc.studentwork.full}} + +%%% +\SetForm{advisorsapproval-II}{body}{% + {\bf Parecer d\DataFields{student.advisor}{article} Orientador\DataFields{student.advisor}{narticle}}\footnote{Preenchimento Obrigatório} + + \vfill% + + \DataFields{student.advisor}{assessment} +} + +%%% +\SetForm{advisorsapproval-II}{closing}{% + \SignatureDate{\UseLabel{signature.advisor}}% + \vfill% + + \SignatureDate{\UseLabel{signature.student}}% + } +%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%% +%% receipts - II +%%%%%%%%%%%%%%% +\SetForm{receipts-II}{heading}{\UseTerm{title.tccII}} +\SetForm{receipts-II}{title}{\UseTerm{title.receipts}} +\SetForm{receipts-II}{footnote}{\UseTerm{footnote.receipts}} + +%%% +\SetForm{receipts-II}{opening}{% + \UseTerm{desc.studentwork.full}\\% + + \noindent Membro da Banca : {\bf \DataFields{student.reviewer}{name} }% +} + +%%% +\SetForm{receipts-II}{body}{ % + Declaro que encontra-se em minha posse cópia da versão final do \Activity[tccII]{name} em \Activity[course]{name} d\DataFields{student}{article} alun\DataFields{student}{article} + \textbf{\DataFields{student}{name}}. + + \vfill% + + \SignatureDate{\UseLabel{signature.board}}% + +} + +%%% +\SetForm{receipts-II}{closing}{} +%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%% +%% examiner's form - II +%%%%%%%%%%%%%%% +\SetForm{examinersform-II}{heading}{\UseTerm{title.tccII}} +\SetForm{examinersform-II}{title}{\UseTerm{title.reviewersform}} +\SetForm{examinersform-II}{footnote}{\UseTerm{footnote.reviewersform}} + +%%% +\SetForm{examinersform-II}{opening}{\UseTerm{desc.studentwork} + + \noindent\UseLabel{reviewer}: \textbf{\DataFields{student.reviewer}{name}} +} + +%%% +\SetForm{examinersform-II}{body}{ +A nota (variando de zero a dez) atribuída por cada membro da banca examinadora será dada considerando o desempenho d\DataFields{student}{article} alun\DataFields{student}{article} nos 3 pontos apresentados na tabela abaixo. + + \vfill% + + \begin{center} + \begin{tabular}{|c|c|c|}% + \hline% + \UseLabel{TCC-II.pointA} & \UseLabel{TCC-II.pointB} & \UseLabel{TCC-II.pointC} \\\hline% + & & \\\hline + \end{tabular}% + \end{center}% +} + +%%% +\SetForm{examinersform-II}{closing}{ + + \SignatureDate{\UseLabel{signature.reviewer}}% + \vfill% + \begin{description} + \item[Observações:] \ \\A nota final, de cada membro da banca examinadora, será calculada conforme:\\[2mm] {\bf Nota Final = \UseConst{TCC-II.weightA}\ x \UseLabel{TCC-II.pointA}\ + \UseConst{TCC-II.weightB}\ x \UseLabel{TCC-II.pointB}\ + \UseConst{TCC-II.weightC}\ x \UseLabel{TCC-II.pointC}\ }\\[2mm] A média final da atividade será dada pela média das notas finais atribuidas por cada um dos membros da banca examinadora. + \end{description}% +} +%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%% +%% examiner's form - II +%%%%%%%%%%%%%%% +\SetForm{correctionsform-II}{heading}{\UseTerm{title.tccII}} +\SetForm{correctionsform-II}{title}{\UseTerm{title.correctionsform}} +\SetForm{correctionsform-II}{footnote}{\UseTerm{footnote.correctionsform}} + +%%% +\SetForm{correctionsform-II}{opening}{\UseTerm{desc.studentwork} + + \noindent\UseLabel{reviewer}: \textbf{\DataFields{student.reviewer}{name}} + +} + +%%% +\SetForm{correctionsform-II}{body}{ \resizebox{0.9\textwidth}{!}{%% +O texto submetido: + \parbox[t]{.75\textwidth}{ + \begin{itemize}[tcc,nosep] + \item[$\Box$] Está adequado, dispensando correções do texto. + \item[$\Box$] Está adequado, sendo necessário correções, conforme a + seguir (e anotações anexas). + \begin{description}[tcc,noitemsep] + \item[$\Box$] Ortográfica + \item[$\Box$] Regras de Escrita + \item[$\Box$] Equações + \item[$\Box$] Resumo + \item[$\Box$] Abstract + \item[$\Box$] Índice + \item[$\Box$] Introdução + \item[$\Box$] Conclusões + \item[$\Box$] Corpo do Trabalho + \item[$\Box$] Resultados + \item[$\Box$] Adicionar mais exemplos + \item[$\Box$] Figuras + \item[$\Box$] Tabelas + \end{description} + \item[$\Box$] Necessita ser revisto/re-escrito,\footnotemark[2] e: + \begin{itemize} + \item[$\Box$] basta a revisão final do texto pelo orientador, + \item[$\Box$] revisarei o trabalho depois de corrigido. + \end{itemize} + \item[$\Box$] Outras considerações (se necessário): \\ + \begin{tabular}{p{0.7\textwidth}} + ~\\\hline + ~\\\hline + ~\\\hline + ~\\\hline + \end{tabular}\\[-1mm] + \end{itemize}} }% + \footnotetext[2]{Neste caso \DataFields{student}{article} alun\DataFields{student}{article} estará em EXAME e receberá conceito final C ou D, conforme revisão final do texto.}% +} + +%%% +\SetForm{correctionsform-II}{closing}{ \SignatureDate{\UseLabel{signature.reviewer}}% + } +%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%% + + + +%%%%%%%%%%%%%%% +%% rectify approval - II +%%%%%%%%%%%%%%% +\SetForm{rectifyapproval-II}{heading}{\UseTerm{title.tccII}} +\SetForm{rectifyapproval-II}{title}{\UseTerm{title.rectifyapproval}} +\SetForm{rectifyapproval-II}{opening}{\UseTerm{desc.studentwork.full}} + +%%% +\SetForm{rectifyapproval-II}{body}{ % + \SetTerms{temp.formrefname = {Formulário de Correções}} + \UseTerm{desc.rectifyapproval} + + \vfill% + + \ApprovalSignature[\UseLabel{advisor}]{\DataFields{student.advisor}{name}} +} + +%%% +\SetForm{rectifyapproval-II}{closing}{% + \studentDistinctBoardCase + { + \SetReviewer{1} + \ApprovalSignature{\DataFields{student.reviewer}{name}}\vfill + } + {} + + \SetReviewer{2} + \ApprovalSignature{\DataFields{student.reviewer}{name}}\vfill + + \SetReviewer{3} + \ApprovalSignature{\DataFields{student.reviewer}{name}}\vfill + + + \ApprovalSignature[\UseLabel{altreviewer.sig}]{\DataFields{student.altreviewer}{name}} +} + +%%%%%%%%%%%%%%% +%% referall letter- I +%%%%%%%%%%%%%%% +\SetForm{referral-I}{heading}{\UseTerm{title.tccI}} +\SetForm{referral-I}{title}{\UseTerm{semester}} +\SetForm{referral-I}{opening}{\UseTerm{desc.sacad}} + +%%% +\SetForm{referral-I}{body}{ % + +\studentCase% + { + \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ submeteu o trabalho intitulado \emph{\DataFields{student}{worktitle}}, tendo sido APROVAD\DataFields{student}{Article} com conceito final \textbf{\DataFields{student}{grade}}, conforme quadro de notas abaixo.\\[2em] + \studentBoardGradedI + }% + { + \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ submeteu o trabalho intitulado \emph{\DataFields{student}{worktitle}}, tendo sido REAPROVAD\DataFields{student}{Article} com conceito final \textbf{\DataFields{student}{grade}}, conforme quadro de notas abaixo.\\[2em] + \studentBoardGradedI + }% + { + \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ submeteu o trabalho intitulado \emph{\DataFields{student}{worktitle}}, não tendo sido considerad\DataFields{student}{article} apt\DataFields{student}{article} pela banca listada abaixo. Posto em exame, \DataFields{student}{article} mesm\DataFields{student}{article} foi APROVAD\DataFields{student}{Article} com conceito final \DataFields{student}{grade}.\\[2em] + \studentBoardI + }% + { + \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ submeteu o trabalho intitulado \emph{\DataFields{student}{worktitle}}, não tendo sido considerad\DataFields{student}{article} apt\DataFields{student}{article} pela banca listada abaixo. Posto em exame, \DataFields{student}{article} mesm\DataFields{student}{article} foi REPROVAD\DataFields{student}{Article} com conceito final \DataFields{student}{grade}.\\[2em] + \studentBoardI + }% + { + \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ não concluiu o trabalho de conclusão de Curso tendo sido REPROVAD\DataFields{student}{Article} com conceito final \textbf{FF}. + } +} + +%%% +\SetForm{referral-I}{closing}{% + \begin{flushright} + Porto Alegre, \UseConst{publ.day} de \UseConst{publ.month} de \UseConst{publ.year}.\\[2em] + + \ActivitySelect{tccI} + \DataFields{activity.coord}{name} + + \DataFields{activity.coord}{title} + \end{flushright} + \vfill +} + + +\NewDocumentCommand{\studentCoadvLabelCase}{}{%% + \studentCoadvCase{\UseLabel{advisors} : \DataFields{student.advisor}{name} / \DataFields{student.coadvisor}{name}}{\UseLabel{advisor} : \DataFields{student.advisor}{name}}%% +} + +\NewDocumentCommand{\studentBoardI}{}{ + {%% + \footnotesize% + \begin{center}% + \begin{tabular}{p{\UseConst{report.tabA*}}@{\ }p{\UseConst{report.tabB*}}@{\ }c}%\hline% + & \UseLabel{board} \\\hline% + \multirow{2}={\DataFields{student}{name}} % + &\DataFields{student.reviewer[2]}{name}\\% + &\DataFields{student.reviewer[3]}{name}\\% + \multicolumn{2}{l}{\ \ \studentCoadvLabelCase} \\\hline% + \end{tabular}% + \end{center}% + }% +} + +\NewDocumentCommand{\studentBoardGradedI}{}{ + {\footnotesize% + \begin{center}% + \resizebox{\textwidth}{!}{% + \begin{tabular}{p{\UseConst{report.tabA}}@{\ }p{\UseConst{report.tabB}}@{\ }c@{\ }c@{\ }c@{\ }c@{\ }c@{\ }c}%\hline% + \HeaderLineI + \studentLineI\\*\hline + \end{tabular}% + }% + \end{center}% + }% +} + + +\NewDocumentCommand{\HeaderLineI}{}{% + & \UseLabel{board} & \UseLabel{TCC-I.pointA} & \UseLabel{TCC-I.pointB} & \UseLabel{TCC-I.pointC} & \UseLabel{TCC-I.pointD} &% + \UseLabel{Ngrade} & \UseLabel{grade}\\\hline% +} +\NewDocumentCommand{\studentLineI}{}{% + \multirow{2}={\textbf{\DataFields{student}{name}}} % + \ReviewerLineI{2}\\*% + \ReviewerLineI{3}\\*% + \multicolumn{6}{l}{\ \ \ \studentCoadvLabelCase} & \textbf{\DataFields{student}{gradeavrg}} & \textbf{\DataFields{student}{grade}}%\\* \hline% +} + +\NewDocumentCommand{\ReviewerLineI}{m}{% + & \hspace{-0.4em}\DataFields{student.reviewer[#1]}{name} & \DataFields{student.reviewer[#1]}{pointA} & \DataFields{student.reviewer[#1]}{pointB} & \DataFields{student.reviewer[#1]}{pointC} & \DataFields{student.reviewer[#1]}{pointD} & \DataFields{student.reviewer[#1]}{grade} &% + } + + +\NewDocumentCommand{\studentExtLine}{m}{% + \\[-1em]% + \multicolumn{#1}{l}{\ \ \ \UseLabel{worktitle}: \DataFields{student}{worktitle}}\\* + \multicolumn{#1}{l}{\ \ \ (\UseLabel{Nproc}: \DataFields{student}{Nproc}) \UseLabel{student.ID}: \DataFields{student}{ID} / \DataFields{student}{email}}\\* + \multicolumn{#1}{l}{\ \ \ \UseLabel{remarks}: \DataFields{student}{remarks}}%\\ \hline +} + + + + + +%%%%%%%%%%%%%%% +%% referall letter- II +%%%%%%%%%%%%%%% +\SetForm{referral-II}{heading}{\UseTerm{title.tccII}} +\SetForm{referral-II}{title}{\UseTerm{semester}} +\SetForm{referral-II}{opening}{\UseTerm{desc.sacad}} + +%%% +\SetForm{referral-II}{body}{ % + +\studentCase% + { + \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ apresentou o trabalho intitulado \emph{\DataFields{student}{worktitle}}\ no dia \DataFields{student}{board-day}, tendo sido APROVAD\DataFields{student}{Article} com conceito final \textbf{\DataFields{student}{grade}}, conforme quadro de notas abaixo.\\[2em] + \studentBoardGradedII + }% + { + \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ apresentou o trabalho intitulado \emph{\DataFields{student}{worktitle}}\ no dia \DataFields{student}{board-day}, tendo sido REAPROVAD\DataFields{student}{Article} com conceito final \textbf{\DataFields{student}{grade}}, conforme quadro de notas abaixo.\\[2em] + \studentBoardGradedII + }% + { + \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ apresentou o trabalho intitulado \emph{\DataFields{student}{worktitle}}\ no dia \DataFields{student}{board-day}, não tendo sido considerad\DataFields{student}{article} apt\DataFields{student}{article} pela banca listada abaixo. Posto em exame, \DataFields{student}{article} mesm\DataFields{student}{article} foi APROVAD\DataFields{student}{Article} com conceito final \DataFields{student}{grade}.\\[2em] + \studentBoardII + }% + { + \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ apresentou o trabalho intitulado \emph{\DataFields{student}{worktitle}}\ no dia \DataFields{student}{board-day}, não tendo sido considerad\DataFields{student}{article} apt\DataFields{student}{article} pela banca listada abaixo. Posto em exame, \DataFields{student}{article} mesm\DataFields{student}{article} foi REPROVAD\DataFields{student}{Article} com conceito final \DataFields{student}{grade}.\\[2em] + \studentBoardII + }% + { + \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ não concluiu o trabalho de conclusão de Curso tendo sido REPROVAD\DataFields{student}{Article} com conceito final \textbf{FF}. + } +} + +%%% +\SetForm{referral-II}{closing}{% + \begin{flushright} + Porto Alegre, \UseConst{publ.day} de \UseConst{publ.month} de \UseConst{publ.year}.\\[2em] + + \ActivitySelect{tccII} + \DataFields{activity.coord}{name} + + \DataFields{activity.coord}{title} + \end{flushright} + \vfill +} + + + + + +\NewDocumentCommand{\studentBoardII}{}{ + {%% + \footnotesize% + \begin{center}% + \begin{tabular}{p{\UseConst{report.tabA*}}@{\ }p{\UseConst{report.tabB*}}@{\ }c}%\hline% + & \UseLabel{board} \\\hline% + \multirow{3}={\DataFields{student}{name}} % + &\DataFields{student.reviewer[1]}{name}\\% + &\DataFields{student.reviewer[2]}{name}\\% + &\DataFields{student.reviewer[3]}{name}\\% + \multicolumn{2}{l}{\ \ \studentCoadvLabelCase} \\\hline% + \end{tabular}% + \end{center}% + }% +} +\NewDocumentCommand{\studentBoardGradedII}{}{ + {% + \footnotesize% + \begin{center}% + \resizebox{\textwidth}{!}{% + \begin{tabular}{p{\UseConst{report.tabA}}@{\ }p{\UseConst{report.tabB}}@{\ }c@{\ }c@{\ }c@{\ }c@{\ }c}%\hline% + \HeaderLineII + \studentLineII\\*\hline + \end{tabular}% + }% + \end{center}% + }% +} + +\NewDocumentCommand{\HeaderLineII}{}{% + & \UseLabel{board} & \UseLabel{TCC-II.pointA} & \UseLabel{TCC-II.pointB} & \UseLabel{TCC-II.pointC} &% + \UseLabel{Ngrade} & \UseLabel{grade}\\\hline% +} +\NewDocumentCommand{\studentLineII}{}{% + \multirow{3}={\textbf{\DataFields{student}{name}}} % + \ReviewerLineII{1}\\*% + \ReviewerLineII{2}\\*% + \ReviewerLineII{3}\\*% + \multicolumn{5}{l}{\ \ \ \studentCoadvLabelCase} & \textbf{\DataFields{student}{gradeavrg}} & \textbf{\DataFields{student}{grade}}%\\ \hline% +} + +\NewDocumentCommand{\ReviewerLineII}{m}{% + & \hspace{-0.4em}\DataFields{student.reviewer[#1]}{name} & \DataFields{student.reviewer[#1]}{pointA} & \DataFields{student.reviewer[#1]}{pointB} & \DataFields{student.reviewer[#1]}{pointC} & \DataFields{student.reviewer[#1]}{grade} &% + } + + + + + + + + +%%%%%%%%%%%%%%% +%% report TCC - I +%%%%%%%%%%%%%%% +\SetForm{report-I}{heading}{\UseTerm{title.tccI}} +\SetForm{report-I}{title}{Relatório Acompanhamento - \UseTerm{semester}} +\SetForm{report-I}{opening}{} + +\ExplSyntaxOn +%%% +\SetForm{report-I}{opening}{ % + { \tiny + \begin{longtable}{p{\UseConst{report.tabA}}@{\ }p{\UseConst{report.tabB}}@{\ }p{\UseConst{report.tabC}}@{\ }p{\UseConst{report.tabD}}@{\ }p{\UseConst{report.tabE}}@{\ }p{\UseConst{report.tabEx}}@{\ }p{\UseConst{report.tabF}}@{\ }p{\UseConst{report.tabG}}}% + \HeaderLineI + \seq_map_inline:cn {l__ufrgscca_baselist_graded_seq} + { + \starray_set_iter_from_hash:nn {student} {#1} + \studentLineI\\*\hline + \studentExtLine{8}\\\hline + } + \reportMissCase{8}{\l__ufrgscca_baselist_ff_seq}{Desistentes~ com~ conceito~ (2o ~ semestre)} + \reportMissCase{8}{\l__ufrgscca_baselist_dismiss_seq}{Desistentes~ sem~ conceito~ (1o ~ semestre)}[magenta] + \end{longtable} + } +} + +%%% +\SetForm{report-I}{closing}{} + + +\NewDocumentCommand{\reportMissCase}{mmmO{red}}{ + \seq_if_empty:NF #2 + { + &\\ + \multicolumn{#1}{l}{\textbf{\color{#4}#3}}\\\hline + \seq_map_inline:Nn #2 + { + \studentselect{##1} + &\\* + \multicolumn{#1}{l}{\textbf{\color{#4}\DataFields{student}{name}}}\\* + \studentExtLine{#1}\\* + \multicolumn{#1}{l}{\studentCoadvLabelCase}\\ \hline + } + } +} + +\ExplSyntaxOff + + + +%%%%%%%%%%%%%%% +%% report TCC - II +%%%%%%%%%%%%%%% +\SetForm{report-II}{heading}{\UseTerm{title.tccII}} +\SetForm{report-II}{title}{Relatório Acompanhamento - \UseTerm{semester}} +\SetForm{report-II}{opening}{} + +\ExplSyntaxOn +%%% +\SetForm{report-II}{opening}{ % + { \tiny + \begin{longtable}{p{\UseConst{report.tabA}}@{\ }p{\UseConst{report.tabB}}@{\ }p{\UseConst{report.tabC}}@{\ }p{\UseConst{report.tabD}}@{\ }p{\UseConst{report.tabE}}@{\ }p{\UseConst{report.tabF}}@{\ }p{\UseConst{report.tabG}}}% + \HeaderLineII + \seq_map_inline:cn {l__ufrgscca_baselist_graded_seq} + { + \starray_set_iter_from_hash:nn {student} {#1} + \studentLineII\\*\hline + \studentExtLine{7}\\\hline + } + \reportMissCase{7}{\l__ufrgscca_baselist_ff_seq}{Desistentes~ com~ conceito~ (2o ~ semestre)} + \reportMissCase{7}{\l__ufrgscca_baselist_dismiss_seq}{Desistentes~ sem~ conceito~ (1o ~ semestre)}[magenta] + \end{longtable} + } +} + +%%% +\SetForm{report-II}{closing}{} + + +\NewDocumentCommand{\CheckList}{mmmO{red}}{ + \seq_if_empty:NF #2 + { + &\\ + \multicolumn{#1}{l}{\textbf{\color{#4}#3}}\\\hline + \seq_map_inline:Nn #2 + { + \studentselect{##1} + &\\[-2ex] + ~\multicolumn{#1}{l}{\textbf{\color{#4}\DataFields{student}{name}}}\\* + \__ufrgscca_checktable_lines:nn {L1,L2,L3,L4}{C1,C2,C3,C4,C5}\hline + } + } + +} + + +%%%%%%%%%%%%%%% +%% Check List TCC - I +%%%%%%%%%%%%%%% +\SetForm{checklist-I}{heading}{\UseTerm{title.tccI}} +\SetForm{checklist-I}{title}{Check~ List~ TCC~ I~ -~ \UseTerm{semester}} +\SetForm{checklist-I}{opening}{} + +%%% +\SetForm{checklist-I}{opening}{ % + \ActivitySelect{tccI} + { \scriptsize + \begin{longtable}{lllll}% + \CheckList{5}{\l__ufrgscca_baselist_graded_seq}{Alunos~Com~ Conceito}[black] + \CheckList{5}{\l__ufrgscca_baselist_ff_seq}{Desistentes~ com~ conceito~ (2o ~ semestre)}[red] + \CheckList{5}{\l__ufrgscca_baselist_dismiss_seq}{Desistentes~ sem~ conceito~ (1o ~ semestre)}[magenta] + \end{longtable} + } + ~\vfill +} + +%%% +\SetForm{checklist-I}{closing}{} + + +%%%%%%%%%%%%%%% +%% Check List TCC - II +%%%%%%%%%%%%%%% +\SetForm{checklist-II}{heading}{\UseTerm{title.tccII}} +\SetForm{checklist-II}{title}{Check~ List~ TCC~ II~ -~ \UseTerm{semester}} +\SetForm{checklist-II}{opening}{} + +%%% +\SetForm{checklist-II}{opening}{ % + \ActivitySelect{tccII} + { \scriptsize + \begin{longtable}{lllll}% + \CheckList{5}{\l__ufrgscca_baselist_graded_seq}{Alunos~Com~ Conceito}[black] + \CheckList{5}{\l__ufrgscca_baselist_ff_seq}{Desistentes~ com~ conceito~ (2o ~ semestre)}[red] + \CheckList{5}{\l__ufrgscca_baselist_dismiss_seq}{Desistentes~ sem~ conceito~ (1o ~ semestre)}[magenta] + \end{longtable} + } + ~\vfill +} + +%%% +\SetForm{checklist-II}{closing}{} + +\ExplSyntaxOff + + + + + + +%%%%%%%%%%%%%%% +%% Boards TCC - II +%%%%%%%%%%%%%%% +\SetForm{boards}{heading}{\UseTerm{title.tccII}} +\SetForm{boards}{title}{\UseTerm{board.title}} +\SetForm{boards}{opening}{} + +\ExplSyntaxOn +%%% +\SetForm{boards}{opening}{ % + {\footnotesize + \begin{longtable}{p{\UseConst{board.tabA}}p{\UseConst{board.tabB}}p{\UseConst{board.tabC}}p{\UseConst{board.tabD}}}% + %\multicolumn{4}{c}{\UseTerm{board.title}}\\\hline + \hline + \tl_gclear:N \l__ufrgscca_daytmpa_tl + \tl_gclear:N \l__ufrgscca_daytmpb_tl + \seq_map_inline:cn {l__ufrgscca_baselist_seq} + { + \starray_set_iter_from_hash:nn {student} {#1} + \starray_term_syntax:n {student} + \tl_gset:Ne \l__ufrgscca_daytmpb_tl {\starray_parsed_get_prop:n{board-date}} + \tl_gset:Ne \l__ufrgscca_daytmpc_tl {\UseConst{date:\l__ufrgscca_daytmpb_tl}} + %\tl_gset:Ne \l__ufrgscca_daytmpD_tl {date:\l__ufrgscca_daytmpb_tl} + %\tl_gset:Ne \l__ufrgscca_daytmpc_tl {\UseConst{\l__ufrgscca_daytmpD_tl}} + \studentNewPageCase + {\kill\pagebreak\tl_gset:Nn \l__ufrgscca_daytmpa_tl {}} + {} + \tl_if_eq:NNF \l__ufrgscca_daytmpa_tl \l__ufrgscca_daytmpb_tl + { + &\multicolumn{3}{r}{\textbf{\l__ufrgscca_daytmpc_tl\ ~- ~ \l__ufrgscca_daytmpb_tl}}\\* + \textsc{\UseLabel{student.gen}} & \textsc{\UseLabel{advisor.gen}} & \textsc{\UseLabel{board}} & \textsc{\UseLabel{boardtime.gen}}\\*\hline + \tl_gset:Ne \l__ufrgscca_daytmpa_tl \l__ufrgscca_daytmpb_tl + } + \multirow{4}={\textbf{\DataFields{student}{name}}} & \multirow{4}={\studentCoadvCase{\hspace{-0.6em}\DataFields{student.advisor}{name}\\[1mm]\hspace{-0.6em}\DataFields{student.coadvisor}{name}}{\hspace{-0.6em}\DataFields{student.advisor}{name}}} & \DataFields{student.reviewer[1]}{name} & \multirow{4}={\DataFields{student}{board-time}\\[1mm]\DataFields{student}{board-local}}\\* + && \DataFields{student.reviewer[2]}{name} \\* + && \DataFields{student.reviewer[3]}{name} \\* + && (\DataFields{student.altreviewer[1]}{name}) \\* + \multicolumn{4}{l}{\textsc{Título:}\ \emph{\DataFields{student}{worktitle}}}\\\hline + } + \end{longtable} + + {\scriptsize\UseTerm{board.obs}} + } +} +\ExplSyntaxOff + +%%% +\SetForm{boards}{body}{~} +\SetForm{boards}{closing}{~} + + +%%%%%%%%%%%%%%% +%% cocertificate +%%%%%%%%%%%%%%% +\SetForm{cocertificate}{heading}{\UseTerm{title.tcc}} +\SetForm{cocertificate}{title}{\UseTerm{semester}} +\SetForm{cocertificate}{opening}{À quem interessar possa,\\ certificamos que} +\SetForm{cocertificate}{body}{% + \begin{center} + \textsc{\DataFields{student.coadvisor}{name}} + \end{center} + \vfill + atuou como coorientador\DataFields{student.coadvisor}{narticle} d\DataFields{student}{article} alun\DataFields{student}{article}\ \emph{\DataFields{student}{name}}\ no Trabalho de Conclusão de Curso intitulado \emph{\DataFields{student}{worktitle}}\ no semestre \UseTerm{semester}. +} + +\SetForm{cocertificate}{closing}{% + \begin{flushright} + Porto Alegre, \UseConst{publ.day} de \UseConst{publ.month} de \UseConst{publ.year}.\\[2em] + + \ActivitySelect{tccII} + \DataFields{activity.coord}{name} + + \DataFields{activity.coord}{title} + \end{flushright} + \vfill +} + + + + +%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%% +%% +%%%%%%%%%%%%%%% +% examiners approval (or not) signature (for rectify approval form)% +%%%%%%%%%%%%%%% +\ExplSyntaxOn +\NewDocumentCommand{\ApprovalSignature}{O{\UseLabel{reviewer}}m}{%% + \UseTerm{corrections.ok} \hfill Data:\rule{\l__ufrgscca_date_rule_dim}{.1pt}\\[3mm]% + #1: #2 \hfill \UseLabel{signature.gen}:\rule{\l__ufrgscca_name_rule_dim}{.1pt}% +}% +\ExplSyntaxOff + + + diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-formsTR.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-formsTR.sty deleted file mode 100644 index 12596a69fe..0000000000 --- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-formsTR.sty +++ /dev/null @@ -1,313 +0,0 @@ -%%%============================================================================== -%% Copyright 2022-23 by Alceu Frigeri -%% -%% This work may be distributed and/or modified under the conditions of -%% -%% * The [LaTeX Project Public License](http://www.latex-project.org/lppl.txt), -%% version 1.3c (or later), and/or -%% * The [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html), -%% version 3 (or later) -%% -%% This work has the LPPL maintenance status *maintained*. -%% -%% The Current Maintainer of this work is Alceu Frigeri -%% -%% This is version 1.12 (2023/09/23) -%% -%% The list of files that compose this work can be found in the README.md file at -%% https://ctan.org/pkg/ufrgscca -%% -%%%============================================================================== -%% UFRGS stands for "Federal University of Rio Grande do Sul" in south Brazil -%% EE stands for "Engineering School" -%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym) -%%%============================================================================== - -% -\NewDocumentCommand{\tcforms@examinersTRforms}{}{% - \tccore@examiners{examinerB}% - \tcforms@reviewTRform{examinerB}% - \tccore@examiners{examinerC}% - \tcforms@reviewTRform{examinerC}% -}% -% - - - -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% TCC examiner form (grades)% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\NewDocumentCommand{\tcforms@examinersTRform}{m}{% - \tc@formtopbox[tcdef@forms@formsfootnote]{\tcdef@forms@formstitleTR}{\tcdef@forms@examformtitle}% -% - \vfill% - \tcdef@forms@formsstudentlabel : {\bf \csname tc@student\Alph{tc@studentcount}\endcsname}\\% - \tcdef@forms@formsexaminerlabel : \csname tc@student\Alph{tc@studentcount}@#1\endcsname% - \vfill% - \tcdef@forms@examformdesc% - - \vfill% - - \begin{center} - \begin{tabular}{|c|c|c|}% - \hline% - \tc@TCCpointAlabel & \tc@TCCpointBlabel & \tc@TCCpointClabel \\\hline% - & & \\\hline - \end{tabular}% - \end{center}% - - \vfill% - - \tcforms@formsigdate{\tcdef@forms@examinersignature}% - \vfill% - \begin{description} - \item[\tcdef@forms@examformnoteslabel:] \tcdef@forms@examformnotes - \end{description}% - - \vfill% - \pagebreak% -}% -% - -%\def\emptybox{\framebox[3em]{\color{white}W}} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% TCC I reviewer form (corrections)% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\NewDocumentCommand{\tcforms@reviewTRform}{m}{% - \tc@formtopbox[tcdef@forms@TRformfootnote]{\tcdef@forms@formstitleTR}{\tcdef@forms@formsTRtitle}% - - \vfill% - \tcdef@forms@formsstudentlabel : {\bf \expandafter\csname tc@student\Alph{tc@studentcount}\endcsname}\\[-4mm]% - - \tcdef@forms@formsworktitlelabel : {\bf \@title}\\% - - \tcdef@forms@formsexaminerlabel : \expandafter\csname tc@student\Alph{tc@studentcount}@#1\endcsname\\[-4mm]% - - {\scriptsize {\textsl{(favor retornar este diretamente à coordenação de TCC.)}}} - \vfill% -% \resizebox{0.9\textwidth}{!}{%% - O trabalho submetido\footnotemark[2]: - - \begin{enumerate}[tcc,nosep] - \item \emptybox\ \textbf{Enquadramento do Tema}. {\footnotesize(peso:2)}\\ {\footnotesize Quão bem o mesmo se enquadra no perfil de um formando em Eng. de Controle e Automação.} - \item \emptybox\ \textbf{Revisão Bibliográfica}. {\footnotesize(peso:2)}\\ {\footnotesize A revisão apresentada é adequada, suficiente, para o tema do trabalho?} - \item \emptybox\ \textbf{Abordagem/Plano de Trabalho Proposto}. {\footnotesize(peso:2)}\\ {\footnotesize Considerar se a abordagem, plano de trabalho proposto, é adequada e factivel.} - \item \emptybox\ \textbf{Redação}. {\footnotesize(peso:1)}\\ {\footnotesize Considerar a qualidade do trabalho escrito apresentado.} - \item { O Trabalho Submetido} - \begin{itemize}[tcc,nosep] - \item[$\Box$] Está adequado, dispensando correções do texto. - \item[$\Box$] Está adequado, sendo necessário correções, conforme anotações anexas. - \item[$\Box$] Necessita ser revisto/re-escrito,\footnotemark[3] e: - \begin{itemize} - \item[$\Box$] basta a revisão final do texto pelo orientador, - \item[$\Box$] revisarei o trabalho depois de corrigido. - \end{itemize} - \end{itemize} - \end{enumerate} - -Outras considerações, parecer (se necessário): \\ - - \begin{tabular}{p{0.9\textwidth}} - ~\\\hline - ~\\\hline - ~\\\hline - ~\\\hline - ~\\\hline - ~\\\hline - \end{tabular}\\[-1mm] - % }% - \footnotetext[2]{Use a escala 0-10: \begin{enumerate*}\item[0.] Péssimo \item[3.] Deficitário \item[6.] Bom \item[8.] Muito Bom \item[10.] Excelente \end{enumerate*}} - \footnotetext[3]{\tcdef@forms@reviewformfootnoteB}% - \vfill% - - \tcforms@formsigdate{\tcdef@forms@examinersignature}% - \vfill% - \pagebreak% -}% -% -% TODO: THIS ONE, as the reference for 'work submission a board approaval' -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% TCC Board approval form% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% TCC Advisor approval form% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\NewDocumentCommand{\tcforms@advisorTRapprovalform}{}{% - \tc@formtopbox{\tcdef@forms@formstitleTR}{Formulário de Aprovação para Avaliação}% - - \vfill% - - \tcforms@tccdesc% - - \vfill% - \tcdef@forms@advisorapprovalformdesc% - - \vfill% - - \tcdef@core@tccadvisorsreview% - - \vfill% - %Aprovo a versão final do trabalho submetido pel\tccore@@ref{student}{article} alun\tccore@@ref{student}{article} e - %considero \tccore@@ref{student}{article} mesm\tccore@@ref{student}{article} apt\tccore@@ref{student}{article} para avaliação pela Banca Examinadora.% - - \tcforms@formsigdate{\tcdef@forms@advisorsignature}% - \vfill% - - \tcforms@formsigdate{\tcdef@forms@studentsignature}% - \vfill% - \pagebreak% -}% -% -\NewDocumentCommand{\tcforms@advisorTRboardform}{}{% - \tc@formtopbox{\tcdef@forms@formstitleTR}{Formulário de Aprovação de Banca Examinadora}% - - \vfill% - - \tcforms@tccdesc% - - \vfill% - \begin{center} - \tcdef@forms@formsboardtitle - \end{center}% - - \tcforms@examinerdesc{studentA}{examinerB}% - - \tcforms@examinerdesc{studentA}{examinerC}% - - - \vfill% - - Aprovo a Banca Examinadora acima relacionada.% - \vfill% - - \tcforms@formsigdate{\tcdef@forms@advisorsignature}% - \vfill% - - \pagebreak% -}% -% - - - -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% TCC requirement form (TCC register)% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\NewDocumentCommand{\tcforms@reqTRform}{}{% - \tc@formtopbox{\tcdef@forms@formstitleTR}{\tcdef@forms@reqformtitle}% - - \vfill% - - \tcdef@forms@reqformopening% - \vfill% - - \tcdef@forms@reqformdescTR% - \vfill% - - \tcdef@forms@formstemptitlelabel : \@title % - - \tcdef@forms@formsstudentemaillabel : {\bf \tc@studentAemail} % - - \tcdef@forms@formsadvisorlabel : \tc@studentA@advisor% - - \tcdef@forms@formsadvisoremaillabel : {\bf \tc@studentA@advisoremail}% - \hfill \tcdef@forms@formsphonelabel : {\bf \tc@studentA@advisorphone}% - - - {\bf \tcdef@forms@formsbrieflabel}:\footnote[1]{\tcdef@forms@renewreqformnotes}% - - \vfill% - \tcdef@core@tccbrief% - - \parbox[t]{.45\textwidth}{\tcforms@formsigdate{\tcdef@forms@studentsignature}}\hfill% - \parbox[t]{.45\textwidth}{\tcforms@formsigdate{\tcdef@forms@advisorsignature}}% - \pagebreak% -}% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% TCC co-advisor requirement form (TCC register)% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\NewDocumentCommand{\tcforms@coadvisorTRform}{}{% - \@ifundefined{tc@studentA@coadvisor}{% - \coadvisor{\rule{\tc@namerule}{.1pt}}{}% - \coadvisorinfo{}{\rule{\tc@titlerule}{.1pt}}{\rule{\tc@emailrule}{.1pt}}{\rule{\tc@phonerule}{.1pt}}% - }{}% - \tc@formtopbox{\tcdef@forms@formstitleTR}{\tcdef@forms@coadvisorformtitle}% - - \vfill% - - \tcdef@forms@reqformopening% - \vfill% - - \tcdef@forms@coadvisorformdesc% - \vfill% - - \tcdef@forms@formstemptitlelabel : \@title % - - \tcdef@forms@formsadvisorlabel: \tc@studentA@advisor - - \tcdef@forms@formscoadvisorlabel: \tc@studentA@coadvisor% - - \tcdef@forms@formscoadvisoremaillabel : {\bf \tc@studentA@coadvisoremail}% - \hfill \tcdef@forms@formsphonelabel : {\bf \tc@studentA@coadvisorphone}% - - - \vfill% - {\bf \tcdef@forms@formsreasonlabel}:% - - \tcdef@core@tcccoadvisorbrief% !!!! What a Hell ?!?!?! - - \tcforms@formsigdate{\tcdef@forms@studentsignature}% - - \parbox[t]{.45\textwidth}{\tcforms@formsigdate{\tcdef@forms@advisorsignature}}\hfill% - \parbox[t]{.45\textwidth}{\tcforms@formsigdate{\tcdef@forms@coadvisorsignature}}% - \pagebreak% -}% -% -% - - -\NewDocumentCommand{\tcforms@rectifyTRapprovalform}{}{% - \tc@formtopbox{\tcdef@forms@formstitleTR}{\tcdef@forms@rectifyapprovalformtitle}% - - \vfill% - - \tcforms@tccdesc% - - \vfill% - \tcdef@forms@rectifyapprovalTRformdesc% - - \vfill% - - \tcforms@rectifyexaminersig[\tcdef@forms@formsadvisorlabel]{tc@studentA@advisor}% - - \vfill% - - \@ifundefined{tc@nBoard}{}{% - \tcforms@rectifyexaminersig{tc@studentA@examinerA}% - }% - - \tcforms@rectifyexaminersig{tc@studentA@examinerB}% - - \tcforms@rectifyexaminersig{tc@studentA@examinerC}% - \vfill% - \pagebreak% -}% -% -% -% diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-formsintern.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-formsintern.sty deleted file mode 100644 index 9565156eda..0000000000 --- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-formsintern.sty +++ /dev/null @@ -1,148 +0,0 @@ -%%%============================================================================== -%% Copyright 2022-23 by Alceu Frigeri -%% -%% This work may be distributed and/or modified under the conditions of -%% -%% * The [LaTeX Project Public License](http://www.latex-project.org/lppl.txt), -%% version 1.3c (or later), and/or -%% * The [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html), -%% version 3 (or later) -%% -%% This work has the LPPL maintenance status *maintained*. -%% -%% The Current Maintainer of this work is Alceu Frigeri -%% -%% This is version 1.12 (2023/09/23) -%% -%% The list of files that compose this work can be found in the README.md file at -%% https://ctan.org/pkg/ufrgscca -%% -%%%============================================================================== -%% UFRGS stands for "Federal University of Rio Grande do Sul" in south Brazil -%% EE stands for "Engineering School" -%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym) -%%%============================================================================== - - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% Internship requirement form% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\NewDocumentCommand{\tcforms@internreqform}{}{% - \tc@formtopbox[tcdef@forms@internshipreqformnotes]{\tcdef@forms@formsinternshiptitle}{\tcdef@forms@reqformtitle}% - - \vfill% - - \tcdef@forms@reqformopening% - \vfill% - - \tcdef@forms@reqforminternshipdesc% - \vfill% - - \tcdef@forms@reqforminternshipinfo% - - - % {\bf \tcdef@forms@formsbrieflabel}:%\footnote[1]{\tcdef@forms@renewreqformnotes}% - - \vfill% -% \tcdef@core@tccbrief% - - \parbox[t]{.45\textwidth}{\tcforms@formsigdate{\tcdef@forms@supervisorsignature}}\hfill% - \parbox[t]{.45\textwidth}{\tcforms@formsigdate{\tcdef@forms@tutorsignature}}% - - \hfill% - \parbox[t]{.45\textwidth}{\tcforms@formsigdate{\tcdef@forms@studentsignature}}% - \pagebreak% -}% -% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% Internship Supervisor's form (grades)% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\NewDocumentCommand{\tcforms@internsupervisorform}{}{% - \tc@formtopbox[tcdef@forms@internsupervisornote]{\tcdef@forms@formsinternshiptitle}{\tcdef@forms@supervisorformtitle}% - % - \vfill% - \tcdef@forms@internshipstudentinfo\\% - \tcdef@forms@internshipsupervisorinfo\\% - \tcdef@forms@internshipperiod - \vfill% - \tcdef@forms@internsupervisorgradesform% - - \vfill% - - \tcdef@forms@internsupervisorcomments \tcdef@core@formsblanklinesB - - \vfill% - - \tcforms@formsigdate{\tcdef@forms@supervisorsignature}% - - \pagebreak% -}% -% -% -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% Internship tutor's form (grades)% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\NewDocumentCommand{\tcforms@interntutorform}{}{% - \tc@formtopbox{\tcdef@forms@formsinternshiptitle}{\tcdef@forms@tutorformtitle}% - % - \vfill% - \tcdef@forms@internshipstudentinfo\\% - \tcdef@forms@internshiptutorinfo\\% - \tcdef@forms@internshipperiod - \vfill% - \tcdef@forms@interntutorgrade% - - \vfill% - - \tcdef@forms@internshiptutorcomments \tcdef@core@formsblanklinesB - - \vfill% - - \tcforms@formsigdate{\tcdef@forms@tutorsignature}% - % \hline - \vfill% - - \tcdef@forms@interncoordgrade% - \vfill - - \tcdef@forms@internshipcoordcomments \tcdef@core@formsblanklinesB - \vfill% - - \tcforms@formsigdate{\tcdef@forms@internshipcoordsignature}% - - \pagebreak% -}% -% -% -% -\newcounter{tc@supervisorgradecount}[tc@studentcount]% -\NewDocumentCommand{\internshipsupervisorgrades}{mmmmm}{%% - \stepcounter{tc@supervisorgradecount}% - \expandafter\def\csname tc@student\Alph{tc@studentcount}@supervisorpoint\Alph{tc@supervisorgradecount}A\endcsname{#1}%% - \expandafter\def\csname tc@student\Alph{tc@studentcount}@supervisorpoint\Alph{tc@supervisorgradecount}B\endcsname{#2}%% - \expandafter\def\csname tc@student\Alph{tc@studentcount}@supervisorpoint\Alph{tc@supervisorgradecount}C\endcsname{#3}%% - \expandafter\def\csname tc@student\Alph{tc@studentcount}@supervisorpoint\Alph{tc@supervisorgradecount}D\endcsname{#4}%% - \expandafter\def\csname tc@student\Alph{tc@studentcount}@supervisorpoint\Alph{tc@supervisorgradecount}E\endcsname{#5}%% - \ifthenelse{\equal{#1}{}}{%% - \expandafter\def\csname tc@student\Alph{tc@studentcount}@supervisorgrade\Alph{tc@supervisorgradecount}\endcsname{0}% - }{%% - \expandafter\edef\csname tc@student\Alph{tc@studentcount}@supervisorgrade\Alph{tc@supervisorgradecount}\endcsname{\fpeval{ #1 + #2 + #3 + #4 + #5} }% - }% -}% - -\NewDocumentCommand{\internshiptutorgrades}{m}{%% - \expandafter\def\csname tc@student\Alph{tc@studentcount}@tutorgrade\endcsname{#1}%% -}% -\NewDocumentCommand{\internshipcoordgrades}{m}{%% - \expandafter\def\csname tc@student\Alph{tc@studentcount}@internshipcoordgrade\endcsname{#1}%% -}% - diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-gen.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-gen.sty deleted file mode 100644 index c350601403..0000000000 --- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-gen.sty +++ /dev/null @@ -1,120 +0,0 @@ -%%%============================================================================== -%% Copyright 2022-23 by Alceu Frigeri -%% -%% This work may be distributed and/or modified under the conditions of -%% -%% * The [LaTeX Project Public License](http://www.latex-project.org/lppl.txt), -%% version 1.3c (or later), and/or -%% * The [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html), -%% version 3 (or later) -%% -%% This work has the LPPL maintenance status *maintained*. -%% -%% The Current Maintainer of this work is Alceu Frigeri -%% -%% This is version 1.12 (2023/09/23) -%% -%% The list of files that compose this work can be found in the README.md file at -%% https://ctan.org/pkg/ufrgscca -%% -%%%============================================================================== -%% UFRGS stands for "Federal University of Rio Grande do Sul" in south Brazil -%% EE stands for "Engineering School" -%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym) -%%%============================================================================== -\NeedsTeXFormat{LaTeX2e}[2022/06/01] -\def\tc@tmp@packname{ufrgscca-gen} -\def\tc@tmp@altpackname{ufrgsccagen} -\def\tc@tmp@packdesc{UFRGS/CCA generic/miscellany commands} -\def\tc@tmp@packdate{2023/09/23} -\def\tc@tmp@packversion{1.12} -\let\@exp\expandafter -\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion} -\@exp\@exp\@exp\ProvidesPackage\@exp\@exp\@exp{\@exp\tc@tmp@packname\@exp}\@exp[\tc@tmp@packdate\space v\tc@tmp@packversion\space\tc@tmp@packdesc] - -\def\tcgen@fam{tcdef} -\def\tcgen@factgrp{gen}% -% - -\DeclareKeys[ufrgscca-gen]{ - family.usage = load, - family.store = \tcgen@fam, - - group.usage = load, - group.store = \tcgen@factgrp, -} -\ProcessKeyOptions[ufrgscca-gen]\relax - - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -% \tcgen@cdef[fam]{#1}{#2} => \gdef\<fam>@#1{#2}% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -\NewDocumentCommand{\tcgen@cdef}{O{\tcgen@fam}D<>{\tcgen@factgrp} m +m}{% - \expandafter\gdef\csname #1@#2@#3\endcsname{#4}% -}% -% -\NewDocumentCommand{\factory}{O{\tcgen@fam}D<>{\tcgen@factgrp}m}{% - \expandafter\long\expandafter\xdef\csname #3\endcsname##1{\noexpand\tcgen@cdef[#1]<#2>{#3}{##1}}% - %\csname #3\endcsname{-default-} - \expandafter\def\csname #3.fam\endcsname{#1}% - \@ifundefined{#3undef}{}{\expandafter\gdef\csname tc@factdup@#3\endcsname{}} - \expandafter\def\csname #3undef\endcsname{\expandafter\let\csname #1@#2@#3\endcsname\undefined}% -}% -\NewDocumentCommand{\cmdfactory}{O{\tcgen@fam}D<>{\tcgen@factgrp}m}{% - \forcsvlist{\factory[#1]<#2>}{#3}% - \ifcsundef{tc@factgrplist@#2}{% - \ifcsundef{tc@factgrplist}{\csgdef{tc@factgrplist}{#2}}{\csgappto{tc@factgrplist}{,#2}}% - \csgdef{tc@factgrplist@#2}{#3}% - }{\csgappto{tc@factgrplist@#2}{,#3}}% -}% -% -% -% 'debug' auxiliary commands (mainly to find out dups, defined/undefined ones) -% -% -\NewDocumentCommand{\tcgen@factcmd@prt}{m}{\@ifundefined{tc@factdup@#1}{#1}{#1 (dup)} -\expandafter\@ifundefined\expandafter{\csname #1.fam\endcsname @#1}{\textbf{ NOT Defined} \\}{ {\csname\csname #1.fam\endcsname @#1\endcsname} \\}} -\NewDocumentCommand{\tcgen@factcmd@def}{m}{\csname #1.fam\endcsname @\@ifundefined{tc@factdup@#1}{#1}{#1 (dup)} % - \expandafter\@ifundefined\expandafter{\csname #1.fam\endcsname @#1}{\textbf{ NOT Defined} \\}{ {\slshape Defined} \\} } -%\NewDocumentCommand{\tcgen@factcmd@prt}{m}{{#1} \\} -%\NewDocumentCommand{\tcgen@factcmd@def}{m}{{#1} :: \@ifundefined{tc@#1}{-- \textbf{NOT Defined} --\\}{Defined \\} } -\NewDocumentCommand{\tcgen@factgrp@prt}{m}{\tightul{#1} \\% - \expandafter\expandafter\expandafter\forcsvlist\expandafter\expandafter\expandafter\tcgen@do\expandafter\expandafter\expandafter{\csname tc@factgrplist@#1\endcsname}% -} -\NewDocumentCommand{\listfactorycmds}{sO{}}{% - \IfBooleanTF{#1}{\def\tcgen@do##1{\tcgen@factcmd@def{##1}}}{\def\tcgen@do##1{\tcgen@factcmd@prt{##1}}} - \ifblank{#2}{% - \ifcsundef{tc@factgrplist}{Factories Groups: \textbf{empty list}\\ }{% - Factories: \\ % - \expandafter\expandafter\expandafter\forcsvlist\expandafter\expandafter\expandafter\tcgen@factgrp@prt\expandafter\expandafter\expandafter{\csname tc@factgrplist\endcsname}% - % - } - }{% - }% -} - - -%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%% -% -% \mkswitch creates a switch (somewhat 'like' a programming switch) -% a 'default case' is associated with the switch when creating it -% one can add many 'cases' later on. -% one can have any code associated with a 'switch/case' -% -%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%% - - -\NewDocumentCommand\mkswitch{O{}m}{% - \NewDocumentCommand{#2}{m}{% - \ifcsname\string#2@case@##1\endcsname\csname\string#2@case@##1\endcsname\else#1\fi% - }% -}% -\NewDocumentCommand{\addcase}{mmm}{\expandafter\def\csname\string#1@case@#2\endcsname{#3}}% -\let\addswitchcase\addcase - diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-lists.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-lists.sty index d8ac23595f..3d34c7c927 100644 --- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-lists.sty +++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-lists.sty @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version 1.12 (2023/09/23) +%% This is version {2.0} {2023/11/23} %% %% The list of files that compose this work can be found in the README.md file at %% https://ctan.org/pkg/ufrgscca @@ -23,64 +23,105 @@ %% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym) %%%============================================================================== \NeedsTeXFormat{LaTeX2e}[2022/06/01] -\def\tc@tmp@packname{ufrgscca-lists} -\def\tc@tmp@altpackname{ufrgsccalists} -\def\tc@tmp@packdesc{UFRGS/CCA auxiliary lists commands} -\def\tc@tmp@packdate{2023/09/23} -\def\tc@tmp@packversion{1.12} -\let\@exp\expandafter -\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion} -\@exp\@exp\@exp\ProvidesPackage\@exp\@exp\@exp{\@exp\tc@tmp@packname\@exp}\@exp[\tc@tmp@packdate\space v\tc@tmp@packversion\space\tc@tmp@packdesc] - - -\DeclareKeys[ufrgscca-lst]{ - relnum.usage = load, - relnum.if = tcif@relnum, -} -\ProcessKeyOptions[ufrgscca-lst]\relax + + +\ProvidesExplPackage + {ufrgscca-lists} + {2023/11/23} + {2.0} + {UFRGS/CCA auxiliary lists commands} + + +%%%%%%% +%%% +%%% Just an attempt of having my packages info in a regular way +%%% Idea being: { <pck-name> / pkg info } for each and all. +%%% +%%%%%%% +\keys_define:nn { ufrgscca-lists / pkg info} + { + name .code:n = {ufrgscca-lists} , + prefix .code:n = {ufrgscca} , + date .code:n = {2023/11/23} , + version .code:n = {2.0} , + description .code:n = {UFRGS/CCA~Auxiliary~ lists~ commands} + } +\cs_if_exist:NF \__codedesc_pkg_info:nn + { + \cs_new_protected:Npn \__codedesc_pkg_info:nn #1#2 + { \keys_set:nn {#1 / pkg info}{#2} } + } +\cs_if_exist:NF \PkgInfo + { \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} } } +\cs_if_exist:NF \PkgDescription + { + \NewDocumentCommand \PkgDescription {m} + { + \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par + } + } +%%%%%%% +%%% End of cut-n-paste +%%%%%%% + + + +%============================================================================== +% Declaração de opções +%============================================================================== +\keys_define:nn { ufrgscca / lists} + { + relnum .usage:n = load , + relnum .bool_set:N = \l__ufrgscca_relnum_bool , + } + +\ProcessKeyOptions[ufrgscca / lists]\relax + %%%%%%%%%%%%%%%%%%%%% %%% Packages Loading %%%%%%%%%%%%%%%%%%%%% \RequirePackage{newfloat} -\RequirePackage{listings}% -\RequirePackage{xcolor}% +\RequirePackage{listings} +\RequirePackage{xcolor} %%% %%% command to declare a new 'list of ...' things {package newfloat} %%% -\NewDocumentCommand{\DeclareNewFloat}{mmmm}{% - \DeclareFloatingEnvironment[% - fileext={#2},% - listname={#4},% - name={#3},% - placement=htb,% - chapterlistsgaps=off]{#1} % - \iftcif@relnum\SetupFloatingEnvironment{#1}{within=chapter}% - \else\SetupFloatingEnvironment{#1}{within=none}% - \fi % -}% +\NewDocumentCommand{\DeclareNewFloat}{mmmm}{ + \DeclareFloatingEnvironment[ + fileext={#2}, + listname={#4}, + name={#3}, + placement=htb, + chapterlistsgaps=off]{#1} + \bool_if:NTF \l__ufrgscca_relnum_bool + { \SetupFloatingEnvironment{#1}{within=chapter} } + { \SetupFloatingEnvironment{#1}{within=none} } +} % %%%%\def\listoflistings{\lstlistoflistings}% -\definecolor{lstgray}{rgb}{0.965,0.965,0.965}% -\lstset{basicstyle=\ttfamily\small,% - columns=fullflexible,% - keepspaces=true,% - frame=tb,% - inputencoding=latin1,% -% inputencoding=utf8,% - extendedchars=true,% - backgroundcolor=\color{lstgray},% - breaklines=true,% -% xleftmargin=7pt,% -% xrightmargin=7pt% -}% -% -\def\listingname{Listing}% -\def\listlistingname{List of Listings}% -\DeclareNewFloat{codelist}{lox}{\listingname}{\listlistingname}%% +\definecolor{lstgray}{rgb}{0.965,0.965,0.965} +\lstset{basicstyle=\ttfamily\small, + columns=fullflexible, + keepspaces=true, + frame=tb, + inputencoding=latin1, +% inputencoding=utf8, + extendedchars=true, + backgroundcolor=\color{lstgray}, + breaklines=true, +% xleftmargin=7pt, +% xrightmargin=7pt +} + + +\def\listingname{Listing} +\def\listlistingname{List~ of~ Listings} +\DeclareNewFloat{codelist}{lox}{\listingname}{\listlistingname} + diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-ppc.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-ppc.sty index fe05fe23f3..34939ff17e 100644 --- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-ppc.sty +++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-ppc.sty @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version 1.12 (2023/09/23) +%% This is version {2.0} {2023/11/23} %% %% The list of files that compose this work can be found in the README.md file at %% https://ctan.org/pkg/ufrgscca @@ -23,34 +23,67 @@ %% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym) %%%============================================================================== \NeedsTeXFormat{LaTeX2e}[2022/06/01] -\def\tc@tmp@packname{ufrgscca-ppc} -\def\tc@tmp@altpackname{ufrgsccappc} -\def\tc@tmp@packdesc{UFRGS/CCA PPC commands} -\def\tc@tmp@packdate{2023/09/23} -\def\tc@tmp@packversion{1.12} -\let\@exp\expandafter -\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion} -\@exp\@exp\@exp\ProvidesPackage\@exp\@exp\@exp{\@exp\tc@tmp@packname\@exp}\@exp[\tc@tmp@packdate\space v\tc@tmp@packversion\space\tc@tmp@packdesc] - - -\DeclareKeys[ufrgscca-ppc]{ - showind.usage = load, - showind.if = @showindicators, - - indlong.usage = load, - indlong.if = @indlongtext, - nocomments.usage = load, - nocomments.if = @indnocomments, -} -\ProcessKeyOptions[ufrgscca-ppc]\relax + + +\ProvidesExplPackage + {ufrgscca-ppc} + {2023/11/23} + {2.0} + {UFRGS/CCA PPC commands} + +%%%%%%% +%%% +%%% Just an attempt of having my packages info in a regular way +%%% Idea being: { <pck-name> / pkg info } for each and all. +%%% +%%%%%%% +\keys_define:nn { ufrgscca-ppc / pkg info} + { + name .code:n = {ufrgscca-ppc} , + prefix .code:n = {ufrgscca} , + date .code:n = {2023/11/23}, + version .code:n = {2.0} , + description .code:n = {UFRGS/CCA~ auxiliary~ PPC-related~ (indicators)~ commands} + } +\cs_if_exist:NF \__codedesc_pkg_info:nn + { + \cs_new_protected:Npn \__codedesc_pkg_info:nn #1#2 + { \keys_set:nn {#1 / pkg info}{#2} } + } +\cs_if_exist:NF \PkgInfo + { \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} } } +\cs_if_exist:NF \PkgDescription + { + \NewDocumentCommand \PkgDescription {m} + { + \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par + } + } +%%%%%%% +%%% End of cut-n-paste +%%%%%%% + + + +\keys_define:nn { ufrgscca / ppc} + { + showind .usage:n = load, + showind .bool_set:N = \l__ufrgscca_showind_bool, + indlong .usage:n = load, + indlong .bool_set:N = \l__ufrgscca_indlong_bool, + nocomments .usage:n = load, + nocomments .bool_set:N = \l__ufrgscca_nocomments_bool, + } +\ProcessKeyOptions[ufrgscca / ppc]\relax + \RequirePackage{longtable} \RequirePackage{pdfcomment} -\WarningFilter{latex}{name}% -\RequirePackage[tikz]{mdframed}% +\WarningFilter{latex}{name} +\RequirePackage[tikz]{mdframed} \RequirePackage{ufrgscca-abnt} -%\RequirePackage{ufrgscca-curr} -\RequirePackage{ufrgscca-curr-tab} +\RequirePackage{ufrgscca-curr} +\RequirePackage{codedescribe} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% @@ -69,363 +102,579 @@ % * (undefined, copy text) %% %%%%%%%%%%%%%%%%%%% -%\iftc@ppc - \RenewDocumentCommand{\maketitle}{}{\tcppc@PPCcoverpages}% -%\fi -% -\NewDocumentCommand{\tcppc@PPCcoverpages}{}{ - \begin{titlepage}% - \noindent\tc@covertopbox% - \vfill% - \centerline{\tc@city}% - \centerline{\tc@publyear}% - \end{titlepage}%% - \if@openright\cleardoublepage\else\clearpage\fi%% -}% - \RenewDocumentCommand\tc@winbox{}{%% - \parbox[b]{\tc@coverwinwidth}{%% - \centering\vbox to \tc@coverwinheight{%% - \vspace*{\fill}% - {\large\MakeUppercase{\textbf{\@title}}\par}% - \vfill% - }%% - }%% -}% -% -% -\NewDocumentCommand{\set@statuscolor}{m}{%% - \@ifundefined{#1@txtcolor}{% - \gdef\ind@txtcolor{\csname default@txtcolor\endcsname}%% - \gdef\ind@bgcolor{\csname default@bgcolor\endcsname}%% - }{% - \gdef\ind@txtcolor{\csname #1@txtcolor\endcsname}%% - \gdef\ind@bgcolor{\csname #1@bgcolor\endcsname}%% - }% -}% -% -% -\newcounter{@indcounter}% -% -\NewDocumentCommand{\declareindicator}{st+O{noref}mmm}{% -%#3: status #4:org #5:mark #6:short text #7:long text #8:extra text #9:'clarification text'(for inep/mec) - \stepcounter{@indcounter}% - \IfBooleanTF{#1}{\expandafter\gdef\csname @indicator#4#5star\endcsname{#1}\ifcsundef{@indicator#4lst}{\csgdef{@indicator#4lst}{#5}}{\csgappto{@indicator#4lst}{,#5}}}{} - \IfBooleanTF{#2}{\ifcsundef{@indicator#4lst}{\csgdef{@indicator#4lst}{#5}}{\csgappto{@indicator#4lst}{,#5}}}{} - \expandafter\gdef\csname @indicator#4#5status\endcsname{#3}% - \expandafter\gdef\csname @indicator#4#5short\endcsname{#6}% - \expandafter\gdef\csname @indicator#4#5long\endcsname{}% - \expandafter\gdef\csname @indicator#4#5extra\endcsname{}% - \expandafter\gdef\csname @indicator#4#5text\endcsname{}% - \expandafter\gdef\csname @indrefA\arabic{@indcounter}\endcsname{#4}% - \expandafter\gdef\csname @indrefB\arabic{@indcounter}\endcsname{#5}% - \newcounter{@indcount#4#5}% - \@ifundefined{iftcppc@indset#4view}{\expandafter\newif\csname iftcppc@indset#4view\endcsname\csname tcppc@indset#4viewtrue\endcsname}{} - \gdef\tcppc@indindex{#4#5} -}% -\NewDocumentCommand{\indicatorDesc}{+m+m}{% - \expandafter\gdef\csname @indicator\tcppc@indindex long\endcsname{#1} - \expandafter\gdef\csname @indicator\tcppc@indindex extra\endcsname{#2} -} -\NewDocumentCommand{\indicatorText}{+m}{% - \expandafter\gdef\csname @indicator\tcppc@indindex text\endcsname{#1} -} -\NewDocumentCommand{\lstind}{O{\section}O{\subsection}m}{% - \def\doit##1{\ifcsundef{@indicator#3##1star}{#2{\csname @indicator#3##1short\endcsname}}{#1{\csname @indicator#3##1short\endcsname}} \csname @indicator#3##1text\endcsname\par}% -\expandafter\expandafter\expandafter\forcsvlist\expandafter\expandafter\expandafter\doit\expandafter\expandafter\expandafter{\csname @indicator#3lst\endcsname} -} +\starray_new:n {indicator} +\starray_def_from_keyval:nn {indicator} + { + self = , + view = \c_true_bool , + has_lst = \c_false_bool , + seqlst = , %this is going to be a sequence of 'ind' + ind.struct = + { + self = , + short = , + long = , + extra = , %some extra long text, monstly unused + desc = , %expanded text for 'MEC' (inep questionaire) + status = , + is_section = \c_false_bool , + is_subsection = \c_false_bool , + cnt = 0 , %auxiliar 'counter' (num of references) + seqlst = , %auxiliar list (references' list) + labelref = , %this will contain the 'hyperref label' (at doc's end) to be used. + ref.struct = + { + reflabel = , %this will contain the 'hyperref label' (in doc) to be used. + } , + } , + } -% -%\newcommand{\indsetstatus}[3][attention]{\expandafter\gdef\csname @indicator#2#3status\endcsname{#1}} -\NewDocumentCommand{\indsetstatus}{O{attention}mm}{% - \gdef\tcppc@indsetstatus##1{\expandafter\gdef\csname @indicator#2##1status\endcsname{#1}}% - \expandafter\forcsvlist\expandafter\tcppc@indsetstatus\expandafter{#3}% +\starray_new:n {status} +\starray_def_from_keyval:nn {status} + { + bgcolor = , + txtcolor = , + self = , + text = , + view = \c_false_bool , + refcnt = 0 , % 'counter' + } + +\starray_new:n {acrolist} +\starray_def_from_keyval:nn {acrolist} + { + acronym = , + long = , + } + + +\NewDocumentCommand{\declareindicator}{st+O{noref}mmm} + { + %#3: status #4:org #5:mark #6:short text + \starray_set_iter_from_hash:nnF {indicator}{#4} + { + \starray_new_term:nn {indicator}{#4} + \seq_clear:N \l_tmpa_seq + \starray_set_prop:nnV {indicator}{seqlst}{\l_tmpa_seq} + %\seq_new:c {l__ufrgscca_ind_ #4 _seq} + \starray_set_prop:nnn {indicator}{self}{#4} + } + \starray_new_term:nn {indicator.ind}{@#5} + \starray_set_from_keyval:nn {indicator.ind} + { + short = {#6} , + status = {#3} , + self = {#5} , + labelref = {@ufrgscca@ #4 @ #5} , %% to be issued when "printing the indicators' list" + %seqlst = {l__ufrgscca_ind_ #4 _ #5 _seq} , + %cnt = {l__ufrgscca_ind_ #4 _ #5 _cnt_int} , + } + \seq_clear:N \l_tmpa_seq + \starray_set_prop:nnV {indicator.ind}{seqlst}{\l_tmpa_seq} + %\seq_new:c {l__ufrgscca_ind_ #4 _ #5 _seq} + %\int_new:c {l__ufrgscca_ind_ #4 _ #5 _cnt_int} + \IfBooleanTF{#1} + { + \starray_get_prop:nnN {indicator}{seqlst}\l_tmpa_seq + \seq_put_right:Nn \l_tmpa_seq {@#5} + \starray_set_prop:nnV {indicator}{seqlst}\l_tmpa_seq + %\seq_put_right:cn {l__ufrgscca_ind_ #4 _seq}{@#5} + \starray_set_prop:nnn {indicator.ind}{is_section}{\c_true_bool} + \starray_set_prop:nnn {indicator}{has_lst}{\c_true_bool} + } + {} + \IfBooleanTF{#2} + { + \starray_get_prop:nnN {indicator}{seqlst}\l_tmpa_seq + \seq_put_right:Nn \l_tmpa_seq {@#5} + \starray_set_prop:nnV {indicator}{seqlst}\l_tmpa_seq + %\seq_put_right:cn {l__ufrgscca_ind_ #4 _seq}{@#5} + \starray_set_prop:nnn {indicator.ind}{is_subsection}{\c_true_bool} + \starray_set_prop:nnn {indicator}{has_lst}{\c_true_bool} + } + {} + + + } + + +\NewDocumentCommand{\indicatorDesc}{+m+m} + { + \starray_set_from_keyval:nn {indicator.ind} + { + long = {#1} , + extra = {#2} , + } + } + +\NewDocumentCommand{\indicatorText}{+m} + { + \starray_set_prop:nnn {indicator.ind}{text}{#1} + } + + +\NewDocumentCommand{\lstind}{O{\section}O{\subsection}m} + { + \starray_set_iter_from_hash:nnT {indicator}{#3} + { + \starray_get_prop:nnN {indicator}{seqlst}\l_tmpa_seq + \seq_map_inline:Nn \l_tmpa_seq + { + \starray_set_iter_from_hash:nn {indicator.ind}{##1} + \starray_term_syntax:n {indicator.ind} + \bool_if:nTF {\starray_parsed_get_prop:n{is_section}} + { #1 {\starray_parsed_get_prop:n{short}} } + { #2 {\starray_parsed_get_prop:n{short}} } + \starray_parsed_get_prop:n{text} + } + } + } + + +\NewDocumentCommand{\indsetstatus}{O{attention}mm} + { + \starray_set_iter_from_hash:nn {indicator}{#2} + \seq_set_from_clist:Nn \l_tmpa_seq {#3} + \seq_map_inline:Nn \l_tmpa_seq + { + \starray_set_iter_from_hash:nn {indicator.ind}{@##1} + \starray_gset_prop:nnn {indicator.ind}{status}{#1} + } + } + +\NewDocumentCommand{\indsetview}{m} + { + \starray_set_iter_from_hash:nn {indicator}{#1} + \starray_gset_prop:nnn {indicator}{view}{\c_true_bool} + + } + +\NewDocumentCommand{\indsethide}{m} + { + \starray_set_iter_from_hash:nn {indicator}{#1} + \starray_gset_prop:nnn {indicator}{view}{\c_false_bool} + } + + + +\NewDocumentEnvironment{listofindicators}{m} + { + \begin{list}{\textbf{??}} + { + \settowidth{\labelwidth}{#1} + \setlength{\labelsep}{1em} + \setlength{\itemindent}{0mm} + \setlength{\leftmargin}{\labelwidth} + \addtolength{\leftmargin}{\labelsep} + \setlength{\rightmargin}{0mm} + \setlength{\itemsep}{.1\baselineskip} + \renewcommand{\makelabel}[1]{\makebox[\labelwidth][l]{##1}} + } + } + { + \end{list} + } + + +\NewDocumentCommand{\helpindicators}{} + { + \bool_if:NT \l__ufrgscca_showind_bool + { + \begin{itemize}[nosep,label=,leftmargin=0mm] + \item \tsmacro{\indsethide}{set} ~-~ Hide~ an~ indicator's~ set + \item \tsmacro{\comment}[status]{title,comment} ~-~ Just~ a~ comment + \item \tsmacro{\indref}[status]{set,ref,comment} ~-~ Single~ indicator's~ reference + \item \tsmacro{\indref*}[status]{set,ref,comment} ~-~ (Short~ text~ only) + \item \tsmacro{\indsetstatus}[status]{set,ref's-clist} ~-~ Set~ the~ status~ of~ a~(comma~separated)~ list~ of~ indicators. + \end{itemize} + where~ status:\newline + \starray_iterate_over:nn {status} + { + \starray_term_syntax:n {status} + \makebox[5mm]{} \makebox[17mm][r]{\textbf{\starray_parsed_get_prop:n{self}}}\ \ \starray_parsed_get_prop:n{text}\newline + } + } + } + + +\NewDocumentCommand{\ifshowind}{+m+m} + { + \bool_if:NTF \l__ufrgscca_showind_bool + {#1} + {#2} + } + + + +\cs_new:Npn \__ufrgscca_status_refincr:n #1 + { + \int_incr:c {#1} + } +\cs_generate_variant:Nn \__ufrgscca_status_refincr:n {e} + +\cs_generate_variant:Nn \starray_get_prop:nnN {enN} +\bool_new:N \l__ufrgscca_statuslst_bool +\seq_new:N \l__ufrgscca_statuslst_seq + +\cs_new_protected:Npn \__ufrgscca_hypertarget:nn #1#2 + { + \hypertarget{#1}{#2} + } +\cs_generate_variant:Nn \__ufrgscca_hypertarget:nn {ee , en} + +\cs_new_protected:Npn \__ufrgscca_hyperlink:nn #1#2 + { + \hyperlink{#1}{#2} + } +\cs_generate_variant:Nn \__ufrgscca_hyperlink:nn {ee , en} + +\NewDocumentCommand{\PrintIndicators}{O{}} +{ + \bool_if:NT \l__ufrgscca_showind_bool + { + { + \footnotesize + \if@openright\cleardoublepage\else\clearpage\fi%%% TO BE CONVERTED Expl3 + + \phantomsection + \chapter*{Indicadores #1} + \begin{listofindicators}{EMPTY LIST . . .} + \tl_if_empty:nTF {#1} + { + \bool_set_false:N \l__ufrgscca_statuslst_bool + \__ufrgscca_set_statuscolor:n{attention} + } + { + \bool_set_true:N \l__ufrgscca_statuslst_bool + \seq_set_from_clist:Nn \l__ufrgscca_statuslst_seq {#1} + \seq_map_inline:Nn \l__ufrgscca_statuslst_seq + { + \starray_set_prop:nnn {status[##1]}{view}{\c_true_bool} + } + } + \starray_iterate_over:nn {indicator} + { + \starray_term_syntax:n {indicator} + \bool_if:nT {\starray_parsed_get_prop:n {view}} + { + \starray_iterate_over:nn {indicator.ind} + { + \starray_term_syntax:n{indicator.ind} + \starray_get_prop:enN {status[\starray_parsed_get_prop:n{status}]}{view} \l_tmpb_tl + \bool_if:nT {!\l__ufrgscca_statuslst_bool || \l_tmpb_tl} + { + \starray_term_syntax:n{indicator.ind} + \__ufrgscca_set_statuscolor:e{\starray_parsed_get_prop:n{status}} + + \starray_get_prop:nnN {status}{refcnt}\l_tmpa_int + \int_set:Nn \l_tmpb_int {\l_tmpa_int + 1} + \starray_set_prop:nnV {status}{refcnt}\l_tmpb_int + + \starray_term_syntax:n {indicator.ind} + \item[ + \textbf{ + \color{\l__ufrgscca_txtcolor_tl} + \__ufrgscca_hypertarget:en + {\starray_parsed_get_prop:n{labelref}} + {\starray_get_prop:nn {indicator}{self}:~\starray_get_prop:nn {indicator.ind}{self}} + }] + {\color{\l__ufrgscca_txtcolor_tl}\starray_get_prop:nn {indicator.ind}{short} \dotfill \normalsize\starray_get_prop:nn {indicator.ind}{status}} + + \newline \starray_get_prop:nn {indicator.ind}{long} \starray_get_prop:nn {indicator.ind}{extra} + \starray_get_prop:nnN {indicator.ind}{seqlst} \l_tmpa_seq + \seq_if_empty:NF \l_tmpa_seq + { + \newline + \tl_set:Nn \l_tmpa_tl {} .\dotfill + \seq_map_inline:Nn \l_tmpa_seq + { + \l_tmpa_tl \ref{##1} ~(\pageref{##1}) + \tl_set:Nn \l_tmpa_tl {,~} + } + } + } + } + + } + } + \starray_iterate_over:nn {status} + { + \starray_term_syntax:n {status} + \item[\textbf{\starray_parsed_get_prop:n{self}}] \starray_parsed_get_prop:n {refcnt} + } + \end{listofindicators} + } + } } -% -\NewDocumentCommand{\indsetview}{m}{\csname tcppc@indset#1viewtrue\endcsname}% -% -\NewDocumentCommand{\indsethide}{m}{\csname tcppc@indset#1viewfalse\endcsname}% -% -\NewDocumentEnvironment{listofindicators}{m}{% - \begin{list}{\textbf{??}}{% - \settowidth{\labelwidth}{#1}% - \setlength{\labelsep}{1em}% - \setlength{\itemindent}{0mm}% - \setlength{\leftmargin}{\labelwidth}% - \addtolength{\leftmargin}{\labelsep}% - \setlength{\rightmargin}{0mm}% - \setlength{\itemsep}{.1\baselineskip}% - \renewcommand{\makelabel}[1]{\makebox[\labelwidth][l]{##1}}% - }% -}{% - \end{list}% -}% -% -\NewDocumentCommand{\tcppc@indrefitem}{O{, }m}{% - \@ifundefined{r@@indlabel\tcppc@indA\tcppc@indB:#2}{}{#1 \ref{@indlabel\tcppc@indA\tcppc@indB:#2} (\pageref{@indlabel\tcppc@indA\tcppc@indB:#2})}% -}% -% -\newif\iftcppc@itemdisp% -\NewDocumentCommand{\tcppc@indicatorsitem}{m}{%% - \@ifundefined{@indrefA#1}{}{%% - \gdef\tcppc@indA{\csname @indrefA#1\endcsname}%% - \gdef\tcppc@indB{\csname @indrefB#1\endcsname}%% - \csname iftcppc@indset\tcppc@indA view\endcsname% - \gdef\tcppc@status{\csname @indicator\tcppc@indA\tcppc@indB status\endcsname}%% - \iftcppc@ind@filter\expandafter\tcppc@ind@filtercase\expandafter{\tcppc@status}\else\tcppc@itemdisptrue\fi% - \iftcppc@itemdisp% - \set@statuscolor{\tcppc@status}%% - \@ifundefined{theind@\tcppc@status @count}{\stepcounter{ind@default@count}}{\stepcounter{ind@\tcppc@status @count}}%% - \item[\textbf{\color{\ind@txtcolor}\hypertarget{@indlabel\tcppc@indA\tcppc@indB\tcppc@ind@filterstatus}{\tcppc@indA: \tcppc@indB}}]% - {\color{\ind@txtcolor}\emph{\csname @indicator\tcppc@indA\tcppc@indB short\endcsname}} \dotfill % - {\normalsize\color{\ind@txtcolor}\textbf{\csname @indicator\tcppc@indA\tcppc@indB status\endcsname}} % - \ifthenelse{\equal{\csname @indicator\tcppc@indA\tcppc@indB long\endcsname}{}}{\break}{\newline\csname @indicator\tcppc@indA\tcppc@indB long\endcsname \csname @indicator\tcppc@indA\tcppc@indB extra\endcsname\hfill\break}%% - \tcppc@indrefitem[.\dotfill]{1}%% - \forcsvlist\tcppc@indrefitem{2,3,4,5,6,7,8,9,10,11,12,13}% - \fi% - \fi% - }%% -}% -% -\NewDocumentCommand{\tcppc@indicatorsbatch}{m}{\forcsvlist\tcppc@indicatorsitem{#10,#11,#12,#13,#14,#15,#16,#17,#18,#19}}% -% -\NewDocumentCommand{\tcppc@indicatorsBatch}{m}{\forcsvlist\tcppc@indicatorsbatch{#10,#11,#12,#13,#14,#15,#16,#17,#18,#19}}% -% -% -\NewDocumentCommand{\tcppc@helpstatus}{+m}{\makebox[5mm]{}\makebox[17mm][r]{\textbf{#1}}\ \ \csname #1@text\endcsname\newline}% -% -\NewDocumentCommand{\tcppc@helpbf}{+m}{\textbf{\color{black}\textbackslash #1}$\,\,$}% -\NewDocumentCommand{\tcppc@helpO}{+m}{{\color{darkteal}\textbf{[}<status>#1\textbf{]}}$\,\,$}% -\NewDocumentCommand{\tcppc@helpM}{+m}{{\color{darkblue}\textbf{\{}#1\textbf{\}}}$\,\,$}% -% -\NewDocumentCommand{\helpindicators}{}{{\footnotesize% - \if@showindicators% - \begin{itemize}[nosep,label=,leftmargin=0mm]% - \item \tcppc@helpbf{indsethide}\tcppc@helpM{<set>} - Hide an indicator's set% - \item \tcppc@helpbf{comment}\tcppc@helpO{}\tcppc@helpM{<title>}\tcppc@helpM{<comment>} - Just a comment% - \item \tcppc@helpbf{indref}\tcppc@helpO{}\tcppc@helpM{<set>}\tcppc@helpM{<ref>}\tcppc@helpM{<comment>} - Single indicator's reference% - \item \tcppc@helpbf{indref*}\tcppc@helpO{}\tcppc@helpM{<set>}\tcppc@helpM{<ref>}\tcppc@helpM{<comment>} - (Short text only)% - \item \tcppc@helpbf{indreflst}\tcppc@helpO{}\tcppc@helpM{<set>}\tcppc@helpM{\tcppc@helpO{:}<ref> , \tcppc@helpO{:}<ref> , ...}\tcppc@helpM{<comment>} - Referece list % - \item \tcppc@helpbf{indreflst*}\tcppc@helpO{}\tcppc@helpM{<set>}\tcppc@helpM{\tcppc@helpO{:}<ref> , \tcppc@helpO{:}<ref> , ...}\tcppc@helpM{<comment>} - (Single box)% - \item \tcppc@helpbf{indsetstatus}\tcppc@helpO{}\tcppc@helpM{<set>}\tcppc@helpM{<ref> , <ref> , ...} - Set the status of a list of indicators.% - \end{itemize}% - where status:\newline% - \expandafter\forcsvlist\expandafter\tcppc@helpstatus\expandafter{\ind@statuslst}% - \fi% -}}% -% -\NewDocumentCommand{\tcppc@printcount}{+m}{\item[ ] {\color{\attention@txtcolor}\large\textbf{\makebox[15mm][r]{#1 :} \csname theind@#1@count\endcsname}}% -}% -% -% -% -%\NewDocumentCommand{\ifshowindicators}{m}{\if@showindicators#1\fi} -%\NewDocumentCommand{\ifthenelseshowindicators}{+m+m}{\if@showindicators#1\else#2\fi} -\NewDocumentCommand{\ifshowind}{+m+m}{\if@showindicators#1\else#2\fi} -% -% -\newif\iftcppc@ind@filter% -\mkswitch[\tcppc@itemdispfalse]\tcppc@ind@filtercase% -\NewDocumentCommand{\tcppc@ind@filteraux}{+m}{\addcase\tcppc@ind@filtercase{#1}{\tcppc@itemdisptrue}}% -\NewDocumentCommand{\PrintIndicators}{O{}}{\footnotesize% - \if@showindicators%% - \def\tcppc@ind@filterstatus{#1}% - \ifthenelse{\equal{#1}{}}{\tcppc@ind@filterfalse}{\tcppc@ind@filtertrue\expandafter\forcsvlist\expandafter\tcppc@ind@filteraux\expandafter{#1}}% - \if@openright\cleardoublepage\else\clearpage\fi%%% - \phantomsection%% - \chapter*{Indicadores #1}%\newpage%% - \begin{listofindicators}{EMPTY LIST . . .}%% - \iftcppc@ind@filter\else\item[ ] {\color{\attention@txtcolor}\large\textbf{\the@indcounter}\ Indicadores.}\fi%% - \tcppc@indicatorsbatch{}% - \tcppc@indicatorsBatch{}% - \forcsvlist\tcppc@indicatorsBatch{1,2,3,4,5,6,7,8,9}% - \iftcppc@ind@filter\else\expandafter\forcsvlist\expandafter\tcppc@printcount\expandafter{\ind@statuslst}\fi% - \end{listofindicators}% - \fi% -}% -% -% -\NewDocumentCommand{\textmark}{O{attention}m}{\set@statuscolor{#1}{\color\ind@txtcolor {\textbf{!! #2 !!}}}} - - -\NewDocumentCommand{\comment}{O{attention}m+m}{% - \if@showindicators% - \if@indnocomments\else% - \set@statuscolor{#1}% - \ \hfill\parbox{0.9\textwidth}{\small% - \begin{mdframed}[style=indicatorsTikZ,frametitle=\tikztitle{#2}]% - {\footnotesize #3\par}% - \hfill\emph{status: }\textbf{\color{\ind@txtcolor}#1}% - \end{mdframed}% - }\\[-2.7mm]% - \fi% - \fi% -}% + + +\NewDocumentCommand{\textmark}{O{attention}m} + { + \bool_if:NT \l__ufrgscca_showind_bool + { + { + \__ufrgscca_set_statuscolor:n {#1} + \color{\l__ufrgscca_txtcolor_tl} + \textbf{!!~ #2~ !!} + } + } + } + + +\NewDocumentCommand{\comment}{O{attention}m+m} + { + \bool_if:NT \l__ufrgscca_showind_bool + { + \bool_if:NF \l__ufrgscca_nocomments_bool + { + \__ufrgscca_set_statuscolor:n {#1} + \ \hfill\parbox{0.9\textwidth}{\small + \begin{mdframed}[style=NEWindicatorsTikZ,frametitle=\__ufrgscca_tikz_title:n{#2}] + {\footnotesize #3\par} + \hfill\emph{status:~}\textbf{\color{\l__ufrgscca_txtcolor_tl}#1} + \end{mdframed} + }\\[-2.7mm] + } + } + } + + + \let\remark\comment -% -\NewDocumentCommand{\indtext}{mm}{\csname @indicator#1#2short\endcsname} -% -\NewDocumentCommand{\tcppc@indhack}{smm+m}{% - \csname iftcppc@indset#2view\endcsname% - \set@statuscolor{\tcppc@status}% - \ \hfill\parbox{0.9\textwidth}{\small%% - \begin{mdframed}[style=indicatorsTikZ,frametitle=\tikztitle{\hyperlink{@indlabel#2#3}{#2 : #3}}]%% - \pdftooltip{\emph{\csname @indicator#2#3short\endcsname}}{\csname @indicator#2#3long\endcsname}\par%% - \if@indlongtext%% - \IfBooleanF{#1}{%% - \ifthenelse{\equal{\csname @indicator#2#3long\endcsname}{}}{}{\enquote{\footnotesize\csname @indicator#2#3long\endcsname}\par}%% - }% - \fi%% - \if@indnocomments\else\ifthenelse{\equal{#4}{}}{}{{\emph{\color{\comments@txtcolor}{#4}}}\par}\fi%% - \hfill\emph{status: }\textbf{\color{\ind@txtcolor}\tcppc@status}%% - \end{mdframed}%% - }\\[-2.7mm]%% - \fi% + +\NewDocumentCommand{\indtext}{mm} + { + \bool_if:NT \l__ufrgscca_showind_bool + { + \starray_get_prop:nn {#1}{#2}{short} + } + } + + +%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%% +%%% +%%% +%%% +%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%% + + +\tl_new:N \l__ufrgscca_tmp_indref_tl +\NewDocumentCommand{\indref}{sO{}mm+m} + { + \bool_if:NT \l__ufrgscca_showind_bool + { + \starray_set_iter_from_hash:nn {indicator}{#3} + \starray_set_iter_from_hash:nn {indicator.ind}{@#4} + \tl_if_empty:nF {#2} + { + \starray_gset_prop:nnn {indicator.ind}{status}{#2} + } + \starray_get_prop:nnN {indicator.ind}{seqlst} \l_tmpa_seq + \starray_get_prop:nnN {indicator.ind}{cnt} \l_tmpb_tl + \int_set:Nn \l_tmpa_int {\l_tmpb_tl + 1} + \starray_set_prop:nnV {indicator.ind}{cnt} \l_tmpa_int + \tl_set:Ne \l__ufrgscca_tmp_indref_tl {@indlabel@ #3 @ #4 - \int_use:N \l_tmpa_int } + \seq_put_right:Ne \l_tmpa_seq{\l__ufrgscca_tmp_indref_tl} + \starray_set_prop:nnV {indicator.ind}{seqlst} \l_tmpa_seq + \label{\l__ufrgscca_tmp_indref_tl} + \starray_term_syntax:n {indicator} + \bool_if:nT {\starray_parsed_get_prop:n {view}} + { + \starray_term_syntax:n {indicator.ind} + \__ufrgscca_set_statuscolor:e {\starray_parsed_get_prop:n {status}} + \starray_term_syntax:n {indicator.ind} + \ \hfill + \parbox{0.9\textwidth} + { + \small + \begin{mdframed}[style=NEWindicatorsTikZ,frametitle=\__ufrgscca_tikz_title:n{\__ufrgscca_hyperlink:en{\starray_parsed_get_prop:n {labelref}}{#3 ~:~ #4}}] + \pdftooltip{\emph{\starray_parsed_get_prop:n {short}}}{\starray_parsed_get_prop:n {long}}\par + \bool_if:NT \l__ufrgscca_indlong_bool + { + \IfBooleanF{#1}{ + \ifthenelse{\equal{\starray_parsed_get_prop:n {long}}{}}{}{\enquote{\footnotesize\starray_parsed_get_prop:n {long}}\par} + } + } + \bool_if:NF \l__ufrgscca_nocomments_bool + { + \ifthenelse{\equal{#5}{}}{}{{\emph{\color{\l__ufrgscca_comment_color_tl}{#5}}}\par} + } + \hfill\emph{status: }\textbf{\color{\l__ufrgscca_txtcolor_tl}\starray_parsed_get_prop:n {status}} + \end{mdframed} + }\\[-2.7mm] + } + } + } + +\definecolor{grayblack}{rgb}{0.8,0.8,0.8} + + +\tl_new:N \l__ufrgscca_txtcolor_tl +\tl_new:N \l__ufrgscca_bgcolor_tl +\tl_new:N \l__ufrgscca_comment_color_tl +\tl_set:Nn \l__ufrgscca_comment_color_tl {darkblue} + +\cs_new_protected:Npn \__ufrgscca_set_statuscolor:n #1 + { + \starray_set_iter_from_hash:nnF {status}{#1} + { \starray_set_iter_from_hash:nn {status}{default} } + \starray_get_prop:nnN {status}{txtcolor}\l__ufrgscca_txtcolor_tl + \starray_get_prop:nnN {status}{bgcolor}\l__ufrgscca_bgcolor_tl + } + +\cs_generate_variant:Nn \__ufrgscca_set_statuscolor:n {e} + + +\cs_new_protected:Npn \__ufrgscca_set_txtcolor:n #1 + { + \starray_set_iter_from_hash:nnF {status}{#1} + { + \starray_set_iter_from_hash:nn {status}{default} + } + \starray_term_syntax:n{status} + \color{\starray_parsed_get_prop:n{txtcolor}} + } + +\NewDocumentCommand{\SetStatusColor}{m} + { + \__ufrgscca_set_txtcolor:n {#1} + } + +\cs_new:Npn \__ufrgscca_def_colorpair:n #1 + { + \colorlet{light#1}{white!85!#1} + \colorlet{dark#1}{#1!70!black!100} + } + +\cs_new:Npn \__ufrgscca_def_status:nnn #1#2#3 + { + \starray_new_term:nn {status}{#1} + \starray_set_from_keyval:nn {status} + { + txtcolor = {dark#2} , + bgcolor = {light#2} , + text = {#3~ (#2)} , + self = {#1} , + } + \__ufrgscca_def_colorpair:n {#2} + } + +\__ufrgscca_def_status:nnn{tbd}{gray}{To~ Be~ Done} +\__ufrgscca_def_status:nnn{done}{green}{Done} +\__ufrgscca_def_status:nnn{review}{yellow}{to~ be~ reviewed} +\__ufrgscca_def_status:nnn{attention}{red}{needs~ Attention} +\__ufrgscca_def_status:nnn{NSA}{brown}{NSA} +\__ufrgscca_def_status:nnn{noref}{magenta}{no~ references} +\__ufrgscca_def_status:nnn{EAD}{violet}{EAD} +\__ufrgscca_def_status:nnn{MDi}{teal}{(courseware)...} +\__ufrgscca_def_status:nnn{DOCs}{blue}{other~ DOCs} +\__ufrgscca_def_status:nnn{default}{cyan}{everything~ else} +\__ufrgscca_def_status:nnn{comment}{blue}{a~ comment} + + + +\mdfdefinestyle{NEWindicatorsTikZ}{ + linecolor=grayblack, + linewidth=0.4pt, +% skipabove=0.65\baselineskip, +% skipbelow=0.5\baselineskip, + skipabove=0pt, + skipbelow=0pt, + leftmargin =-3.5pt, + rightmargin=-3.5pt, + innerleftmargin=3pt, + innerrightmargin=3pt, + needspace=3\baselineskip, + backgroundcolor=\l__ufrgscca_bgcolor_tl, + usetwoside=false, +% innertopmargin = 3pt, +% innerbottommargin = 2pt, + innertopmargin = 2pt, + innerbottommargin = 2pt, + roundcorner = 4pt, + frametitle={\__ufrgscca_tikz_title:n{TITLE}}, + frametitleaboveskip=-0.6\baselineskip, + frametitlebelowskip=0pt, + frametitlealignment = \raggedleft, + leftline = true, + rightline = true, + nobreak = true, } -\NewDocumentCommand{\indref}{sO{}mm+m}{%% - \ifthenelse{\equal{#2}{}}{}{\expandafter\gdef\csname @indicator#3#4status\endcsname{#2}}%% - \expandafter\gdef\expandafter\tcppc@status{\csname @indicator#3#4status\endcsname}% - \stepcounter{@indcount#3#4}\label{@indlabel#3#4:\csname the@indcount#3#4\endcsname}%% - \if@showindicators%% - \IfBooleanTF{#1}{\tcppc@indhack*{#3}{#4}{#5}}{\tcppc@indhack{#3}{#4}{#5}} - \fi% % -}% -% -% -%\newcommand{\tcppc@indreflstitem}[4][]{% -\NewDocumentCommand{\tcppc@indreflstitem}{O{}mmm}{% - \ifthenelse{\equal{#1}{}}{}{\expandafter\gdef\csname @indicator#2#3status\endcsname{#1}}% - \expandafter\gdef\expandafter\tcppc@status{\csname @indicator#2#3status\endcsname}% - \stepcounter{@indcount#2#3}\label{@indlabel#2#3:\csname the@indcount#2#3\endcsname}%% - \set@statuscolor{\tcppc@status}% - \hyperlink{@indlabel#2#3}{\textbf{#3 :}}\pdftooltip{\emph{\csname @indicator#2#3short\endcsname}}{\csname @indicator#2#3long\endcsname}\par%% - \if@indlongtext%% - \ifthenelse{\equal{\csname @indicator#2#3long\endcsname}{}}{}{\enquote{\footnotesize\csname @indicator#2#3long\endcsname}\par}%% - \fi%% - \hfill\emph{status: }\textbf{\color{\ind@txtcolor}\tcppc@status\break}%% -}% - -\NewDocumentCommand{\indreflst}{sO{}mmm}{% - \IfBooleanTF{#1}{% - \gdef\tcppc@indreflst##1{\StrCut{##1}{:}\tcppc@parA\tcppc@parB\IfStrEq{\tcppc@parB}{}{\tcppc@indreflstitem{#3}{\tcppc@parA}{#5}}{\expandafter\tcppc@indreflstitem\expandafter[\tcppc@parA]{#3}{\tcppc@parB}{#5}}}% - \if@showindicators% - \csname iftcppc@indset#3view\endcsname% - \ \hfill\parbox{0.9\textwidth}{\small% - \begin{mdframed}[style=indicatorsTikZ,frametitle=\tikztitle{#3}]%% - \expandafter\forcsvlist\expandafter\tcppc@indreflst\expandafter{#4}% - \if@indnocomments\else\ifthenelse{\equal{#5}{}}{}{{\emph{\color{\comments@txtcolor}{#5}}}\par}\fi%% - \set@statuscolor{#2}% - \end{mdframed}% - }% - \fi% - \fi% - }{% - \gdef\tcppc@indreflst##1{\StrCut{##1}{:}\tcppc@parA\tcppc@parB\IfStrEq{\tcppc@parB}{}{\indref{#3}{\tcppc@parA}{}}{\indref[\tcppc@parA]{#3}{\tcppc@parB}{}}}% - \expandafter\forcsvlist\expandafter\tcppc@indreflst\expandafter{#4}% - \comment[#2]{comment}{#5}% - }% -}% -% -% other default colors (xcolor pack): lime, olive, orange, pink, purple. -% -\def\tcppc@defcolorpair#1{\colorlet{light#1}{white!85!#1}\colorlet{dark#1}{#1!70!black!100}} -% -% -\definecolor{grayblack}{rgb}{0.8,0.8,0.8}% -% -% -\NewDocumentCommand{\ind@defstatus}{mmm}{% - \newcounter{ind@#1@count}% - \tcppc@defcolorpair{#2}% - \expandafter\gdef\csname #1@txtcolor\endcsname{dark#2}% - \expandafter\gdef\csname #1@bgcolor\endcsname{light#2}% - \expandafter\gdef\csname #1@text\endcsname{#3 (#2)}% - \@ifundefined{ind@statuslst}{\gdef\ind@statuslst{#1}}{\edef\ind@statuslst{\ind@statuslst,#1}}% -}% -% -\ind@defstatus{tbd}{gray}{To Be Done}% -\ind@defstatus{done}{green}{Done}% -\ind@defstatus{review}{yellow}{to be reviewed}% -\ind@defstatus{attention}{red}{needs Attention}% -\ind@defstatus{NSA}{brown}{NSA}% -\ind@defstatus{noref}{magenta}{no references}% -\ind@defstatus{EAD}{violet}{EAD}% -\ind@defstatus{MDi}{teal}{(courseware)...}% -\ind@defstatus{DOCs}{blue}{other DOCs}% -\ind@defstatus{default}{cyan}{everything else}% -% -\def\comments@txtcolor{darkblue}% -% -% -\def\ind@TikZpos{0.44}% -\NewDocumentCommand{\tikztitle}{m}{\tikz[baseline=(current bounding box.east),outer sep=0pt,xshift=1cm,thin,color=grayblack] \draw (0,0) (\ind@TikZpos,0) node[anchor=west,rectangle,rounded corners,fill=white,draw] at (\ind@TikZpos,0) {#1} node[anchor=west,rectangle,rounded corners,color=black] at (\ind@TikZpos,0) {#1};}%% -% -% -\mdfdefinestyle{indicatorsTikZ}{% - linecolor=grayblack,%% - linewidth=0.4pt,% -% skipabove=0.65\baselineskip,% -% skipbelow=0.5\baselineskip,% - skipabove=0pt,% - skipbelow=0pt,% - leftmargin =-3.5pt,% - rightmargin=-3.5pt,% - innerleftmargin=3pt,% - innerrightmargin=3pt,% - needspace=3\baselineskip,% - backgroundcolor=\ind@bgcolor,% - usetwoside=false,% -% innertopmargin = 3pt,% -% innerbottommargin = 2pt,% - innertopmargin = 2pt,% - innerbottommargin = 2pt,% - roundcorner = 4pt,% - frametitle={\tikztitle{TITLE}},% - frametitleaboveskip=-0.6\baselineskip,% - frametitlebelowskip=0pt,% - frametitlealignment = \raggedleft,% - leftline = true,% - rightline = true,% - nobreak = true,% -}% - -\NewDocumentCommand{\fancyquote}{O{-2\topsep-2\parsep-2\partopsep-2\parskip}+mmm}{% - \vspace{#1}{% - \ \hfill\begin{minipage}{0.5\textwidth}\noindent\scriptsize\emph{''#2''}% - {\vspace{-\parsep}\begin{flushright}\footnotesize#3\\\sc #4\end{flushright}} \end{minipage}\\ - }} +\tl_new:N \l__ufrgscca_TikZ_pos_tl +\tl_set:Nn \l__ufrgscca_TikZ_pos_tl {0.44} +\cs_new_protected:Npn \__ufrgscca_tikz_title:n #1 + { + \tikz[baseline=(current~ bounding~ box.east),outer~ sep=0pt,xshift=1cm,thin,color=grayblack] + \draw (0,0) (\l__ufrgscca_TikZ_pos_tl,0) + node[anchor=west,rectangle,rounded~ corners,fill=white,draw] at (\l__ufrgscca_TikZ_pos_tl,0) {#1} + node[anchor=west,rectangle,rounded~ corners,color=black] at (\l__ufrgscca_TikZ_pos_tl,0) {#1}; + } + + + + +\NewDocumentCommand{\fancyquote}{O{-2\topsep-2\parsep-2\partopsep-2\parskip}+mmm} + { + \vspace{#1} + { + \ \hfill + \begin{minipage}{0.5\textwidth} + \noindent\scriptsize\emph{''#2''} + { \vspace{-\parsep} + \begin{flushright} + \footnotesize + #3\\ + \sc #4 + \end{flushright} + } + \end{minipage}\\ + } + } \NewDocumentEnvironment{ppc.quote}{}{\begin{displayquote}\begin{itshape}\smaller}{\end{itshape}\end{displayquote}} %\preto\displayquote{\begingroup\setlength{\leftmargini}{0mm}} %\appto\enddisplayquote{\endgroup} -\RenewDocumentEnvironment{quote}{}{% - \list{}{\leftmargin20mm\rightmargin0mm}% - \item\relax% -}{\endlist} +\RenewDocumentEnvironment{quote}{} + { + \list{}{\leftmargin20mm\rightmargin0mm} + \item\relax + } + { \endlist } % \NewDocumentCommand{\labelhack}{m}{\def\@currentlabelname{#1}} -\NewDocumentCommand{\acrolist}{}{} -\NewDocumentCommand{\acrodef}{mmm}{% - %\expandafter\DeclareFixedFootnote\expandafter{\csname #1\endcsname}{#3}% - \expandafter\def\csname #1\endcsname{\footnote{#3}}% - \expandafter\def\csname acrolsti:#1\endcsname{\item[#2] #3}% - \appto\acrolist{\item[#2] #3}% - \expandafter\def\csname acroS:#1\endcsname{#2}% - \expandafter\def\csname acroL:#1\endcsname{#3}% + + +\NewDocumentCommand{\acrodef}{mmm} + { + \starray_new_term:nn {acrolist}{#1} + \starray_set_from_keyval:nn {acrolist} + { + short = {#2} , + long = {#3} + } + } + +\NewDocumentCommand{\acro}{m}{\starray_get_prop:nn{acrolist[#1]}{short}} +\NewDocumentCommand{\acrol}{m}{\starray_get_prop:nn{acrolist[#1]}{long}} +\NewDocumentCommand{\acrols}{m}{\starray_get_prop:nn{acrolist[#1]}{long}, \starray_get_prop:nn{acrolist[#1]}{short}} +\NewDocumentCommand{\acrosl}{m}{\starray_get_prop:nn{acrolist[#1]}{short}, \starray_get_prop:nn{acrolist[#1]}{long}} +\NewDocumentCommand{\acrofoot}{m}{\starray_get_prop:nn{acrolist[#1]}{short}\footnote{\starray_get_prop:nn{acrolist[#1]}{long}}} +\NewDocumentCommand{\printacrolist}{O{}m}{ + \begin{listofabbrv}[#1]{#2} + \starray_iterate_over:nn {acrolist} + { \item[\starray_get_prop:nn{acrolist}{short}] \starray_get_prop:nn{acrolist}{long} } + \end{listofabbrv} } -\NewDocumentCommand{\acroitem}{m}{\csname acrolsti:#1\endcsname} -\NewDocumentCommand{\printacrolist}{O{}m}{\begin{listofabbrv}[#1]{#2}\acrolist\end{listofabbrv}} -\NewDocumentCommand{\acro}{m}{\csname acroS:#1\endcsname} -\NewDocumentCommand{\acrol}{m}{\csname acroL:#1\endcsname} -\NewDocumentCommand{\acrols}{m}{\csname acroL:#1\endcsname, \csname acroS:#1\endcsname} -\NewDocumentCommand{\acrosl}{m}{\csname acroS:#1\endcsname, \csname acroL:#1\endcsname} -\NewDocumentCommand{\acrofoot}{m}{\csname acroS:#1\endcsname\csname #1\endcsname} + \RenewDocumentCommand{\subparagraph}{m}{} diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-coord.def b/macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-coord.def deleted file mode 100644 index 8265a5e16d..0000000000 --- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-coord.def +++ /dev/null @@ -1,167 +0,0 @@ -%%%============================================================================== -%% Copyright 2022-23 by Alceu Frigeri -%% -%% This work may be distributed and/or modified under the conditions of -%% -%% * The [LaTeX Project Public License](http://www.latex-project.org/lppl.txt), -%% version 1.3c (or later), and/or -%% * The [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html), -%% version 3 (or later) -%% -%% This work has the LPPL maintenance status *maintained*. -%% -%% The Current Maintainer of this work is Alceu Frigeri -%% -%% This is version 1.12 (2023/09/23) -%% -%% The list of files that compose this work can be found in the README.md file at -%% https://ctan.org/pkg/ufrgscca -%% -%%%============================================================================== -%% UFRGS stands for "Federal University of Rio Grande do Sul" in south Brazil -%% EE stands for "Engineering School" -%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym) -%%%============================================================================== -\makeatletter -\def\tc@tmp@packname{ufrgscca-ptBR-coord} -\def\tc@tmp@altpackname{ufrgsccaptbrcoord} -\def\tc@tmp@packdesc{UFRGS/CCA Portuguese coord defs} -\def\tc@tmp@packdate{2023/09/23} -\def\tc@tmp@packversion{1.12} -\let\@exp\expandafter -\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion} - - -\calendartitle{Calendário – \tcdef@coord@TCCperiod} - -\tcccalendarhead{Data/Período}{Semana Letiva}{Evento} -\tcceventAweek{01} -\tcccalendarevent{\tcdef@coord@tcceventAweek}{Apresentação da disciplina. Informações gerais. Reunião presencial com início às 18:30h, no Salão de Eventos do DELET.\newline {\bf Presença obrigatória.}} -\tcceventBweek{02} -\tcccalendarevent{\tcdef@coord@tcceventBweek}{Requerimento de matrícula. O(A) aluno(a) deve abrir processo/petição de matrícula em TCC no porta TuaUFRGS, adicionando ao mesmo o \emph{Formulário de Requerimento de Matrícula}, já com o resumo do trabalho, a ser encaminhado a\tccore@@ref{TCCcoord}{article} coordenador\tccore@@ref{TCCcoord}{narticle} da atividade. \newline{\bf Obs.~1}} -%\tcccalendarevent{03}{Entrega do \emph{Formulário de Inscrição}, juntamente com o resumo do trabalho, no \tcdef@cover@secdivisionacronym .} -\tcceventCweek{07} -\tcccalendarevent{\tcdef@coord@tcceventCweek}{Encontro presencial: Como redigir um TCC, melhores práticas. Início às 18:30h, no Salão de Eventos do DELET.}% \newline {\bf Presença obrigatória.}} -\tcceventDweek{09} -\tcccalendarevent{\tcdef@coord@tcceventDweek}{Entrega VIA MOODLE do \emph{Relatório Parcial}, juntamente com o \emph{Formulário de Aprovação do Relatório Parcial e Banca Examinadora} assinado pelo orientador. \newline{\bf Obs.~2}} -\tcceventEweek{15} -\tcccalendarevent{\tcdef@coord@tcceventEweek}{Entrega de uma cópia impressa (ou eletrônica) do Trabalho de Conclusão a cada membro da banca, juntamente com os \emph{Formulários de Avaliação} e \emph{Formulários de correções} do trabalho. Entrega VIA MOODLE de uma cópia eletrônica do trabalho juntamente com o \emph{Formulário de Aprovação para Apresentação} e os recibos de recebimento assinados e datados pelos membros das bancas.} -\tcceventFweek{16} -\tcccalendarevent{\tcdef@coord@tcceventFweek}{Encontro presencial: Como apresentar um TCC, melhores técnicas. Início às 18:30h, no Salão de Eventos do DELET.}% \newline {\bf Presença obrigatória.}} -\tcceventGweek{17} -\tcccalendarevent{\tcdef@coord@tcceventGweek}{Apresentações dos Trabalhos de Conclusão de Curso. \newline{\bf Obs.~3}} -\tcceventHweek{17} -\tcccalendarevent{\tcdef@coord@tcceventHweek}{Entrega VIA MOODLE dos \emph{Formulários de correções} dos membros da banca.} -\tcceventIweek{18} -\tcccalendarevent{\tcdef@coord@tcceventIweek}{Entrega VIA MOODLE da versão final corrigida do trabalho e o \emph{Formulário de Aprovação das Correções}. Entrega do formulário de autorização para publicação (biblioteca) assinado na secretaria do DELAE. \newline{\bf Obs.~4}} -\tcceventJweek{19} -\tcccalendarevent{\tcdef@coord@tcceventJweek}{Para os TCCs em RECUPERAÇÃO, entrega VIA MOODLE da versão final corrigida do trabalho e o \emph{Formulário de Aprovação das Correções}. Entrega do formulário de autorização para publicação (biblioteca) assinado na secretaria do DELAE. \newline{\bf Obs.~5}} - - -\tcccalendardesc{\begin{description} -\item[Obs. 1]: Caso o aluno(a) já tenha um processo aberto de TCC, reusar o mesmo apenas anexando o novo requerimento de matrícula, caso necessário. -\item[Obs. 2]: O relatório deve conter as declarações de concordância em participar da banca da parte dos professores convidados. -\item[Obs. 3]: As bancas serão marcadas após a entrega do relatório parcial, de acordo com a disponibilidade dos professores convidados. -\item[Obs. 4]: O \emph{Formulário de Aprovação das Correções} deve estar assinado pelo(a) orientador(a). Para relatórios em que o campo “Revisarei o trabalho depois de corrigido” tiver sido assinalado por algum membro da banca, a assinatura do(a) mesmo(a) também deverá constar no \emph{Formulário de Aprovação das Correções}. -\item[Obs. 5]: Trabalho em RECUPERAÇÃO é aquele cuja nota final quando da defesa é insuficiente para aprovação OU aquele em que o campo “Reescrever tudo” do formulário de correções foi marcado por algum membro da banca. Neste caso, o \emph{Formulário de Aprovação das Correções} deve estar assinado tanto pelo(a) orientador(a) como pelo(s) membro(s) da banca designado(s) para reavaliar o trabalho, incluindo obrigatoriamente aqueles que tiverem marcado o campo “Revisarei o trabalho depois de corrigido”.\\\hrule -\item[IMPORTANTE]: O(A) aluno(a) estará {\bf REPROVADO(A)} \emph{se falhar na entrega de qualquer um dos documentos aqui citados dentro dos prazos estipulados}. -\end{description}} - - -\studentlistformtitle{Lista de presença, \tcdef@coord@studentlistactivity, dia \tcdef@coord@studentlistdate} -\studentlistactivity{apresentação da atividade de TCC} -\studentlistdate{\number\day/\number\month} - -\tccreporttitle{Relatório parcial/final} -\tccreportopening{Para registro} -\tccreportdesc{Relatório parcial/final referente aos alunos matriculados na atividade de ensino de \tcdef@forms@formstitle\ semestre \tcdef@coord@TCCperiod .} - -\tccreportabsents{Desistentes com conceito (segundo semestre)} -\tccreportdismiss{Desistentes sem conceito (primeiro semestre)} -\tccreferralopening{Ao\\ \tcdef@cover@secretaryacronym\ da \tcdef@cover@universitydivision} - -\internshipreferralopening{Ao\\ \tcdef@cover@secretaryacronym\ da \tcdef@cover@universitydivision} - - -\internshipgrades{% - \noindent\tcdef@forms@internshipsupervisorinfo\\% - \noindent Avaliação do Supervisor: - {\small\begin{center} \begin{tabular}{rcrcrc} - Qualidade do Trabalho: & \textbf{\tccore@@ref{supervisor}{pointAA}} & Engenhosidade: &\textbf{\tccore@@ref{supervisor}{pointAB}} & Conhecimentos: & \textbf{\tccore@@ref{supervisor}{pointAC}} \\ - Cumprimento de Tarefas: & \textbf{\tccore@@ref{supervisor}{pointAD}} & - Iniciativa: & \textbf{\tccore@@ref{supervisor}{pointAE}} & \textsc{Total I:} & \textbf{\tccore@@ref{supervisor}{gradeA}}\\\hline - Assiduidade: & \textbf{\tccore@@ref{supervisor}{pointBA}} & Disciplina: & \textbf{\tccore@@ref{supervisor}{pointBB}} & Sociabilidade: & \textbf{\tccore@@ref{supervisor}{pointBC}} \\ Cooperação: & \textbf{\tccore@@ref{supervisor}{pointBD}} & Responsabilidade: & \textbf{\tccore@@ref{supervisor}{pointBE}} & \textsc{Total II:} & \textbf{\tccore@@ref{supervisor}{gradeB}} - \end{tabular}\end{center}} - \noindent\tcdef@forms@internshiptutorinfo\\% - \noindent Avaliação do Tutor: \textbf{\tccore@@ref{tutor}{grade}}\\% - - \noindent Coordenador: \textbf{\tcdef@core@internshipcoord}\\% - \noindent Avaliação do Coordenador: \textbf{\tccore@@ref{internship}{coordgrade}}\\[5mm]% - \noindent \textsc{Nota Final:} \textbf{\tccore@@ref{student}{Temp}}\\% - \noindent {\footnotesize $\frac{2 * (Total~I + Total~II) + Tutor + Coord.}{28}$}\\% -} - -\internshipreferralfailFF{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \emph{\tccore@@ref{student}{}}\ n\~{a}o entregou o Relatório de Estágio Supervisionado Obrigatório até a data limite de \tc@internshipcommitBB\ sendo, portanto, considerado \tcdef@coord@referralfailed\ com conceito final \textbf{FF}.} - - -\referralfailed{{REPROVAD\tccore@@ref{student}{Article}}} -\referralapproved{{APROVAD\tccore@@ref{student}{Article}}} - -\referralexamapprovedtext{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \emph{\tccore@@ref{student}{}}\ apresentou o trabalho intitulado \emph{\tccore@@ref{student}{title}}\ no dia \tccore@@ref{student}{date}, n\~{a}o tendo sido considerad\tccore@@ref{student}{article} apt\tccore@@ref{student}{article} pela banca listada abaixo. Posto em exame, \tccore@@ref{student}{article} mesm\tccore@@ref{student}{article} foi \tcdef@coord@referralapproved\ com conceito final \tc@TCCgradeC .} - -\referralexamfailtext{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \emph{\tccore@@ref{student}{}}\ apresentou o trabalho intitulado \emph{\tccore@@ref{student}{title}}\ no dia \tccore@@ref{student}{date}, n\~{a}o tendo sido considerad\tccore@@ref{student}{article} apt\tccore@@ref{student}{article} pela banca listada abaixo. Posto em exame, \tccore@@ref{student}{article} mesm\tccore@@ref{student}{article} foi \tcdef@coord@referralfailed\ com conceito final \tc@TCCgradeD .} - -\referralfatetext{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \emph{\tccore@@ref{student}{}}\ apresentou o trabalho intitulado \emph{\tccore@@ref{student}{title}}\ no dia \tccore@@ref{student}{date}, tendo sido \tccoord@referralfate{\tccore@@ref{student}{Temp}} com conceito final \textbf{\tccoord@@fate{\Alph{tc@studentcount}}}, conforme quadro de notas abaixo. } - -\referralfailFF{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \emph{\tccore@@ref{student}{}}\ n\~{a}o concluiu o trabalho de conclus\~{a}o de Curso tendo sido \tcdef@coord@referralfailed\ com conceito final \textbf{FF}.} - - -%%% for TCC-I -\referralexamapprovedtextTR{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \emph{\tccore@@ref{student}{}}\ submeteu o trabalho intitulado \emph{\tccore@@ref{student}{title}}, n\~{a}o tendo sido considerad\tccore@@ref{student}{article} apt\tccore@@ref{student}{article} pela banca listada abaixo. Posto em exame, \tccore@@ref{student}{article} mesm\tccore@@ref{student}{article} foi \tcdef@coord@referralapproved\ com conceito final \tc@TCCgradeC .} - -\referralexamfailtextTR{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \emph{\tccore@@ref{student}{}}\ submeteu o trabalho intitulado \emph{\tccore@@ref{student}{title}}, n\~{a}o tendo sido considerad\tccore@@ref{student}{article} apt\tccore@@ref{student}{article} pela banca listada abaixo. Posto em exame, \tccore@@ref{student}{article} mesm\tccore@@ref{student}{article} foi \tcdef@coord@referralfailed\ com conceito final \tc@TCCgradeD .} - -\referralfatetextTR{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \emph{\tccore@@ref{student}{}}\ submeteu o trabalho intitulado \emph{\tccore@@ref{student}{title}}, tendo sido \tccoord@referralfate{\tccore@@ref{student}{Temp}} com conceito final \textbf{\tccoord@@fate{\Alph{tc@studentcount}}}, conforme quadro de notas abaixo. } - -%%\referralfailFF{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \emph{\tccore@@ref{student}{}}\ n\~{a}o concluiu o trabalho de conclus\~{a}o de Curso tendo sido \tcdef@coord@referralfailed\ com conceito final \textbf{FF}.} - - - - - - -\internshipreferralfatetext{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \tccore@@ref{student}{}, cartão No. \tccore@@ref{student}{ID}, Matriculado na Atividade de Estágio Supervisionado Obrigatório, estagiou na Empresa \tccore@@ref{internship}{company}, no período de \tccore@@ref{internship}{start} até \tccore@@ref{internship}{end}, tendo entregue o Relatório de Estágio Supervisionado Obrigatório em -\tccore@@ref{student}{date}, tendo sido considerado \tccoord@referralfate{\tccore@@ref{student}{Temp}} com conceito final \textbf{\tccoord@@fate{\Alph{tc@studentcount}}}, conforme notas abaixo.} - - -\internshipreferralexamapprovedtext{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \emph{\tccore@@ref{student}{}}, cartão No. \tccore@@ref{student}{ID}, matriculado na Atividade de Estágio Supervisionado Obrigatório, estagiou na Empresa \tccore@@ref{internship}{company}, no período de \tccore@@ref{internship}{start} até \tccore@@ref{internship}{end}, tendo entregue o relatório de Estágio Supervisionado Obrigatório -em data posterior a data limite de \tc@internshipcommitAA, estando em Exame. Conforme notas abaixo o mesmo foi considerado \tcdef@coord@referralapproved\ com conceito final \textbf{\tc@TCCgradeC}.} - -\internshipreferralexamfailtext{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \emph{\tccore@@ref{student}{}}, cartão No. \tccore@@ref{student}{ID}, matriculado na Atividade de Estágio Supervisionado Obrigatório, estagiou na Empresa \tccore@@ref{internship}{company}, no período de \tccore@@ref{internship}{start} até \tccore@@ref{internship}{end}, tendo entregue o relatório de Estágio Supervisionado Obrigatório em -em data posterior a data limite de \tc@internshipcommitAA, estando em Exame. Conforme notas abaixo o mesmo foi considerado \tcdef@coord@referralfailed\ com conceito final \textbf{\tc@TCCgradeD}.} - -\internshipreferralexamhardapprovedtext{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \emph{\tccore@@ref{student}{}}, cartão No. \tccore@@ref{student}{ID}, matriculado na Atividade de Estágio Supervisionado Obrigatório, estagiou na Empresa \tccore@@ref{internship}{company}, no período de \tccore@@ref{internship}{start} até \tccore@@ref{internship}{end}. O mesmo foi posto em Exame pois o relatório de Estágio Supervisionado Obrigatório -inicialmente submetido apresentava diversos problemas formais, tendo re-submetido o mesmo em \tccore@@ref{student}{date}. Conforme notas abaixo o mesmo foi considerado \tcdef@coord@referralapproved\ com conceito final \textbf{\tc@TCCgradeC}.} - -\internshipreferralexamhardfailtext{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \emph{\tccore@@ref{student}{}}, cartão No. \tccore@@ref{student}{ID}, matriculado na Atividade de Estágio Supervisionado Obrigatório, estagiou na Empresa \tccore@@ref{internship}{company}, no período de \tccore@@ref{internship}{start} até \tccore@@ref{internship}{end}. O mesmo foi posto em Exame pois o relatório de Estágio Supervisionado Obrigatório -inicialmente submetido apresentava diversos problemas formais, tendo re-submetido o mesmo em \tccore@@ref{student}{date}. Conforme notas abaixo o mesmo foi considerado \tcdef@coord@referralfailed\ com conceito final \textbf{\tc@TCCgradeD}.} - - -\boardlabel{Banca Examinadora} -\boardstitle{Apresentações TCC em \tcdef@cover@course\ \tcdef@coord@TCCperiod\ \tcdef@coord@boardstitleB\ } -\boardsworklabel{Título} -\TCCgradesNlabel{Nota} -\TCCgradesClabel{Conceito} -\TCCgrades{A}{B}{C}{D}{FF} -\TCCgradesN{9}{7.5}{6} - -\cocertificatetitle{CERTIFICADO} -\cocertificateopenning{\`{A} quem interessar possa,\\ certificamos que} -\cocertificatetext{atuou como co-orientador\tccore@@ref{coadvisor}{narticle} d\tccore@@ref{student}{article} alun\tccore@@ref{student}{article}\ \emph{\tccore@@ref{student}{}}\ no trabalho de conclus\~{a}o de curso intitulado \emph{\tccore@@ref{student}{title}}\ no semestre \tcdef@coord@TCCperiod.} - -\TCCcoordtitle{Coordenador\tccore@@ref{TCCcoord}{narticle} da atividade de ensino de\\ \tcdef@forms@formstitle\ } -\TCCIcoordtitle{Coordenador\tccore@@ref{TCCcoord}{narticle} da atividade de ensino de\\ \tcdef@forms@formstitleTR\ } - - -\advisornamegen{Orientador(a)} -\advisornameplural{Orientadores} diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-core.def b/macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-core.def deleted file mode 100644 index ae3ef71077..0000000000 --- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-core.def +++ /dev/null @@ -1,95 +0,0 @@ -%%%============================================================================== -%% Copyright 2022-23 by Alceu Frigeri -%% -%% This work may be distributed and/or modified under the conditions of -%% -%% * The [LaTeX Project Public License](http://www.latex-project.org/lppl.txt), -%% version 1.3c (or later), and/or -%% * The [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html), -%% version 3 (or later) -%% -%% This work has the LPPL maintenance status *maintained*. -%% -%% The Current Maintainer of this work is Alceu Frigeri -%% -%% This is version 1.12 (2023/09/23) -%% -%% The list of files that compose this work can be found in the README.md file at -%% https://ctan.org/pkg/ufrgscca -%% -%%%============================================================================== -%% UFRGS stands for "Federal University of Rio Grande do Sul" in south Brazil -%% EE stands for "Engineering School" -%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym) -%%%============================================================================== -\makeatletter -\def\tc@tmp@packname{ufrgscca-ptBR-core} -\def\tc@tmp@altpackname{ufrgsccaptbrcore} -\def\tc@tmp@packdesc{UFRGS/CCA Portuguese core defs} -\def\tc@tmp@packdate{2023/09/23} -\def\tc@tmp@packversion{1.12} -\let\@exp\expandafter -\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion} - - -\location{Porto~Alegre}{RS} - -\university{Universidade Federal do Rio Grande do Sul} -\universityacronym{UFRGS} -\universitydivision{Escola de Engenharia} -\divisiongradcouncil{Conselho de Graduação da \tcdef@cover@universitydivision} - -\secretaryacronym{SACAD} -\secdivisionacronym{\tcdef@cover@secretaryacronym/EE} -\graduationtitle{Bacharel em Eng. de Controle e Automa\c{c}\~{a}o} -\course{Eng. de Controle e Automa\c{c}\~{a}o} -\courseacronym{CCA} -\coursecoord{Atual Coordenador(a) do Curso} -\coursecoordtitle{Coordenador\tccore@@ref{coursecoord}{narticle} de curso} -\advisorname{Orientador\tccore@@ref{advisor}{narticle}}% -\coadvisorname{Co-orientador\tccore@@ref{coadvisor}{narticle}}% - -\iftcif@nonrequired - \internshiptitle{Relatório de Estágio Não Obrigatório} -\else - \internshiptitle{Relatório de Estágio Supervisionado Obrigatório em \tcdef@cover@course} -\fi - -\internshipcoord{Atual Coordenador(a) de Estágios} -\internshipcoordtitle{Coord\tccore@@ref{internshipcoord}{narticle}. da Atividade de Estágio Supervisionado Obrigatório} - -\iftcif@nonrequired - \internshipinfo{% - Este Relatório foi julgado adequado para a \textsl{Atividade de Estágio Não Obrigatório} - em \emph{\tcdef@cover@course\ } e aprovado em sua forma final pel\tccore@@ref{tutor}{article} Tutor\tccore@@ref{tutor}{narticle} e - Supervisor\tccore@@ref{supervisor}{narticle}. -}% -\else - \internshipinfo{% - Este Relatório foi julgado adequado para a obtenção do conceito final na \textsl{Atividade de Estágio Supervisionado Obrigatório} - em \emph{\tcdef@cover@course\ } e aprovado em sua forma final pel\tccore@@ref{tutor}{article} Tutor\tccore@@ref{tutor}{narticle}, - Supervisor\tccore@@ref{supervisor}{narticle} e Coordenador\tccore@@ref{internshipcoord}{narticle} da Atividade. - }% -\fi - - -\examinername{Banca Examinadora}% - -\reportspecificinfo{% - Trabalho de Conclus\~{a}o de Curso (TCC-\tcdef@cover@courseacronym ) apresentado \`{a} - COMGRAD-\tcdef@cover@courseacronym\ da \tcdef@cover@university\ como parte dos requisitos para a - obten{\c{c}}{\~a}o do t\'{\i}tulo de \emph{\tcdef@cover@graduationtitle\ }. -}% - -\approvalspecificinfo{% - Este Trabalho de Conclus\~{a}o de Curso foi julgado adequado para a - obten\c{c}\~ao dos cr\'editos da Disciplina de TCC do curso \emph{\tcdef@cover@course\ } e aprovado em sua forma final pel\tccore@@ref{advisor}{article} - Orientador\tccore@@ref{advisor}{narticle} e pela Banca Examinadora. -}% - -\profname{Professor\tccore@@ref{advisor}{narticle}} -\coprofname{Professor\tccore@@ref{coadvisor}{narticle}} -\tutorname{Tutor\tccore@@ref{tutor}{narticle}} -\supervisorname{Supervisor\tccore@@ref{supervisor}{narticle}} - - diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-forms.def b/macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-forms.def deleted file mode 100644 index 9f35ed41e2..0000000000 --- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-ptBR-forms.def +++ /dev/null @@ -1,319 +0,0 @@ -%%%============================================================================== -%% Copyright 2022-23 by Alceu Frigeri -%% -%% This work may be distributed and/or modified under the conditions of -%% -%% * The [LaTeX Project Public License](http://www.latex-project.org/lppl.txt), -%% version 1.3c (or later), and/or -%% * The [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html), -%% version 3 (or later) -%% -%% This work has the LPPL maintenance status *maintained*. -%% -%% The Current Maintainer of this work is Alceu Frigeri -%% -%% This is version 1.12 (2023/09/23) -%% -%% The list of files that compose this work can be found in the README.md file at -%% https://ctan.org/pkg/ufrgscca -%% -%%%============================================================================== -%% UFRGS stands for "Federal University of Rio Grande do Sul" in south Brazil -%% EE stands for "Engineering School" -%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym) -%%%============================================================================== -\makeatletter -\def\tc@tmp@packname{ufrgscca-ptBR-forms} -\def\tc@tmp@altpackname{ufrgsccaptbrforms} -\def\tc@tmp@packdesc{UFRGS/CCA Portuguese forms defs} -\def\tc@tmp@packdate{2023/09/23} -\def\tc@tmp@packversion{1.12} -\let\@exp\expandafter -\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion} - - -%%%%%% -%%%%%% -%%%%%% forms -%%%%%% -%%%%%% -%%%%%% - -\formlocal{\tc@city,\hspace{4mm} de \hspace{1.2cm} de 20\hspace{4mm}.} - -\formssignaturelabel{Assinatura} -\examinersignature{Assinatura\ \ d\tccore@@ref{examiner}{article}\ \ Avaliador\tccore@@ref{examiner}{narticle}} -\boardsignature{Assinatura\ \ do\ \ Membro\ \ da\ \ Banca} -\advisorsignature{Assinatura\ \ d\tccore@@ref{advisor}{article}\ \ Orientador\tccore@@ref{advisor}{narticle}} -\coadvisorsignature{Assinatura\ \ d\tccore@@ref{coadvisor}{article}\ \ Co-orientador\tccore@@ref{coadvisor}{narticle}} -\studentsignature{Assinatura\ \ d\tccore@@ref{student}{article}\ \ Alun\tccore@@ref{student}{article}} -\studentsignaturegen{Assinatura\ \ do(a)\ \ Aluno(a)} -\formsstudentlabel{Alun\tccore@@ref{student}{article}} -\formsstudentlabelgen{Aluno(a)} -\formproflabel{Professor(a)} -\profname{Professor\tccore@@ref{advisor}{narticle}} -\coprofname{Professor\tccore@@ref{coadvisor}{narticle}} -\formsboardlabel{Membro da Banca} -\formsadvisorlabel{Orientador\tccore@@ref{advisor}{narticle}} -\formsadvisorlabelgen{Orientador(a)} -\formscoadvisorlabel{Co-orientador\tccore@@ref{advisor}{narticle}} -\formsexaminerlabel{Avaliador\tccore@@ref{examiner}{narticle}} -\formsaltexaminerlabel{Suplente} -\formstimelabel{Horário} - -\formssupervisorlabel{Supervisor\tccore@@ref{supervisor}{narticle}} - - -%\formstopicAlabel{Conteúdo} -%\formstopicBlabel{Trabalho Escrito} -%\formstopicClabel{Apresentação} -\formsworktitlelabel{Título do Trabalho} -\formstemptitlelabel{Título Provisório} -\formsstudentIDlabel{Cartão} -\formsemaillabel{e-mail} -\formsphonelabel{ramal} -\agreelabel{De Acordo} - -\continuelabel{Continua...} - -\formsdatelabel{Data} -\formstitle{Trabalho de Conclusão de Curso II}% em \tcdef@cover@course} -\formstitleTR{Trabalho de Conclusão de Curso I}% em \tcdef@cover@course} -\formsfootnote{Entregar a cada membro da banca juntamente com a cópia do trabalho.} - - -\renewreqformtitle{Formulário de Renovação da Inscrição na Atividade de Ensino Trabalho de Conclusão em \tcdef@cover@course} - -\reqArgument{ \noindent O Tema do Trabalho e Orientador (Co-orientador) seguem sendo os mesmos de TCC I ? -\begin{itemize}[tcc,noitemsep] - \item[$\Box$] SIM - \item[$\Box$] NÃO, neste caso \textbf{justifique} a mudança no espaço a seguir: - \end{itemize}} - -\renewreqformnotes{O resumo deve ser curto, i.e., não deve exceder este espaço. O texto deve ser escrito em parágrafo único, e por se tratar de proposta, poderá utilizar tempo futuro e não necessita ter motivação ou justificativa.\\ -Deve conter: -\begin{enumerate*}[alpha)] - \item O QUE será feito - descrição e objetivos. - \item COMO será feito - metodologia. - \item Resultados esperados. -\end{enumerate*} -} - -\reqformtitle{Formul\'{a}rio de Requerimento de Matr\'{i}cula} -\reqformopening{Ilm\tccore@@ref{coursecoord}{article}. Sr\tccore@@ref{coursecoord}{narticle}.\par - Coordenador\tccore@@ref{coursecoord}{narticle} da Comissão de Graduação do Curso em \tcdef@cover@course\ {da \tcdef@cover@universityacronym\ }} -%\reqformopening{algo} - -\reqformdescgen{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \tc@studentA , REGULARMENTE MATRICULAD\tccore@@ref{student}{Article} neste período letivo no curso \emph{\tcdef@cover@course\ }, desta universidade, portador\tccore@@ref{student}{narticle} do cartão de identificação n$^o$ \tc@studentAID\ vem por meio deste solicitar matrícula na atividade de ensino} - - -\reqformdesc{\tcdef@forms@reqformdescgen\ \tcdef@forms@formstitle} - -\reqformdescTR{\tcdef@forms@reqformdescgen\ \tcdef@forms@formstitleTR} - -\formsinternshiptitle{Estágio Supervisionado Obrigatório}% em \tcdef@cover@course} - -\reqforminternshipdesc{\tcdef@forms@reqformdescgen\ \tcdef@forms@formsinternshiptitle} - -\supervisorsignature{Assinatura\ \ d\tccore@@ref{supervisor}{article}\ \ Supervisor\tccore@@ref{supervisor}{narticle}} -\tutorsignature{Assinatura\ \ d\tccore@@ref{tutor}{article}\ \ Tutor\tccore@@ref{tutor}{narticle}} -\internshipcoordsignature{Assinatura\ \ d\tccore@@ref{internshipcoord}{article}\ \ Coordenador\tccore@@ref{internshipcoord}{narticle}} - -\supervisorformtitle{Formulário de Avaliação do Supervisor (Pela Empresa)} -\tutorformtitle{Formulário de Avaliação do Tutor e Coordenador} - -\interntutorgrade{Avaliação d\tccore@@ref{tutor}{article} Prof\tccore@@ref{tutor}{narticle}. Tutor\tccore@@ref{tutor}{narticle}:\emptybox} - -\interncoordgrade{Avaliação d\tccore@@ref{internshipcoord}{article} Prof\tccore@@ref{internshipcoord}{narticle}. Coordenador\tccore@@ref{internshipcoord}{narticle}:\emptybox} - - -\reqforminternshipinfo{% - \tcdef@forms@formsstudentemaillabel : {\bf \tc@studentAemail} % -\vspace{2mm} - -Tutor : \tc@studentA@tutor% - -Email do Tutor: {\bf \tccore@@ref{tutor}{email}}% -\hfill Ramal: {\bf \tccore@@ref{tutor}{phone}}% -\vspace{2mm} - - -Empresa: {\bf \tccore@@ref{internship}{company}}% - -Área de Atividade: {\bf \tccore@@ref{internship}{field}}% -\vspace{2mm} - -Supervisor\tccore@@ref{supervisor}{narticle}: {\bf \tccore@@ref{supervisor}{}} \hfill CREA: {\bf \tccore@@ref{supervisor}{register}} - -Cargo: {\bf \tccore@@ref{supervisor}{office}}\hfill Email: {\bf \tccore@@ref{supervisor}{email}} \hfill Fone: {\bf \tccore@@ref{supervisor}{phone}} % -\vspace{2mm} - -Data de Início: {\bf \tccore@@ref{internship}{start}}\hfill Previsão de Término: {\bf \tccore@@ref{internship}{end}}\hfill Duração: {\bf \tccore@@ref{internship}{length}} -} - -\internshipreqformnotes{O prazo final de entrega do relatório é até 21 dias antes do término do período letivo posterior à inscrição na atividade. Relatórios não entregues até esta data serão considerados \textbf{\emph{Em Exame}}. Relatórios não entregues até 14 dias antes do término do período letivo considerado implicam a atribuição de \textbf{\emph{conceito FF}}, com o consequente encerramento do processo.} - -\internshipstudentinfo{ - Aluno: \textbf{\tccore@@ref{student}{}}\hfill Cartão:\textbf{\tccore@@ref{student}{ID}}% -} -\internshipcompanyinfo{% - Empresa: {\bf \tccore@@ref{internship}{company}}\\% -Área de Atividade: {\bf \tccore@@ref{internship}{field}}% -} -\internshipsupervisorinfo{ - Supervisor: \textbf{\tccore@@ref{supervisor}{}} \hfill crea:\textbf{\tccore@@ref{supervisor}{register}}% -} -\internshiptutorinfo{ -Tutor: \textbf{\tccore@@ref{tutor}{}}% -} -\internshipcoordinfo{ -Coordenador da Atividade: \textbf{\tccore@@ref{internshipcoord}{}}% -} - - -\internshipperiod{ - Período do Estágio de: {\bf \tccore@@ref{internship}{start}} até: {\bf \tccore@@ref{internship}{end}} -} - -\def\emptybox{\framebox[3em]{\color{white}W}} - -\internsupervisorgradesform{ -\begin{itemize}[tcc,nosep] - \item Grupo I - Aspectos Profissionais - \begin{enumerate}[tcc,nosep] - \item \textbf{Qualidade do Trabalho}:\emptybox\\ {\footnotesize considerar a qualidade do trabalho tendo em vista o que seria desejável} - \item \textbf{Engenhosidade}:\emptybox\\ {\footnotesize capacidade de sugerir, projetar ou executar modificações ou inovações.} - \item \textbf{Conhecimentos}:\emptybox\\ {\footnotesize conhecimento demonstrado no desenvolvimento das atividades programadas.} - \item \textbf{Cumprimentos das Tarefas}:\emptybox\\ {\footnotesize considerar o volume de atividades cumpridas dentro de um padrão razoável.} - \item \textbf{Iniciativa}:\emptybox\\ {\footnotesize iniciativa para desenvolver suas atividades sem dependências de outros.} - \end{enumerate} - \item Grupo II - Aspectos Humanos - \begin{enumerate}[tcc,nosep] - \item \textbf{Assiduidade}:\emptybox\\ {\footnotesize cumprimento do horário do estágio e ausência de falhas} -\item \textbf{Disciplina}:\emptybox\\ {\footnotesize observância das normas e regulamentos internos da empresa.} -\item \textbf{Sociabilidade}:\emptybox\\ {\footnotesize facilidade de se integrar com colegas e ambiente de trabalho.} -\item \textbf{Cooperação}:\emptybox\\ {\footnotesize disposição para cooperar com colegas e para atender a atividades..} -\item \textbf{Senso de Responsabilidade}:\emptybox\\ {\footnotesize zelo pelo material, equipamentos e bens da empresa.} - \end{enumerate} -\end{itemize} -} - -\internsupervisorcomments{Considerações Complementares:} -\internshiptutorcomments{Considerações do Prof. Tutor sobre o Estágio:} -\internshipcoordcomments{Considerações Finais do Prof. Coordenador sobre o Estágio:} - -\internsupervisornote{Favor utilizar a seguinte grade discreta: \begin{enumerate*}[start=0]\item Sofrível \item Regular \item Bom \item Muito Bom \item Excelente \end{enumerate*} -} -\coadvisorformtitle{Requerimento de Autorização de Co-Orientação} -\coadvisorformdesc{\tccore@@ref{student}{Article} alun\tccore@@ref{student}{article} \tc@studentA , REGULARMENTE MATRICULAD\tccore@@ref{student}{Article} na atividade de TCC neste período letivo, vem por meio deste solicitar autorização para registro de co-orientação de TCC, conforme justificativa abaixo.} - -\formsbrieflabel{Resumo} - -\formsstudentemaillabel{Email d\tccore@@ref{student}{article} Alun\tccore@@ref{student}{article}} - -\formsadvisoremaillabel{Email d\tccore@@ref{advisor}{article} Orientador\tccore@@ref{advisor}{narticle}} - -\formscoadvisoremaillabel{Email d\tccore@@ref{coadvisor}{article} Co-Orientador\tccore@@ref{coadvisor}{narticle}} - -\formsreasonlabel{Justificativa} - - -\examformtitle{Formul\'{a}rio de Avalia\c{c}\~{a}o} - -\examformdesc{A nota (variando de zero a dez) atribuída por cada membro da banca examinadora será dada considerando o desempenho d\tccore@@ref{student}{article} alun\tccore@@ref{student}{article} nos 3 pontos apresentados na tabela abaixo.} - -\examformnoteslabel{Observações} - -\examformnotes{\ \\Posteriormente, \tccore@@ref{TCCcoord}{article} professor\tccore@@ref{TCCcoord}{narticle} coordenador\tccore@@ref{TCCcoord}{narticle} calculará a nota final atribuída por cada membro da banca examinadora, de acordo com a seguinte ponderação:\\[2mm] {\bf Nota Final Banca = \tc@TCCpointAweight\ x \tc@TCCpointAlabel\ + \tc@TCCpointBweight\ x \tc@TCCpointBlabel\ + \tc@TCCpointCweight\ x \tc@TCCpointClabel\ } \\[2mm] A média final da atividade será dada pela média das notas finais (calculadas com a expressão acima) atribuidas por cada um dos membros da banca examinadora.} - -\examboardformtitle{Formulário de Aprovação da Banca Examinadora} - -\examboardformtitleTMP{Formulário de Aprovação do Relatório Parcial e Banca Examinadora} - -\examboardformdescTMP{Aprovo o Relatório Parcial e nominata da Banca Examinadora acima relacionada.} - -\examboardformdesc{Aprovo a nominata da Banca Examinadora acima relacionada.} - -\formsboardtitle{Banca Examinadora} - -\advisorapprovalformtitle{Formulário de Aprovação para Apresentação} - -\advisorapprovalformdesc{{\bf Parecer d\tccore@@ref{advisor}{article} Orientador\tccore@@ref{advisor}{narticle}}\footnote{Preenchimento Obrigatório}} - -%\advisorapprovalformdescB{Aprovo a versão final do trabalho submetido pel\tccore@@ref{student}{article} alun\tccore@@ref{student}{article} e considero \tccore@@ref{student}{article} mesm\tccore@@ref{student}{article} apt\tccore@@ref{student}{article} para apresentação.} -\advisorapprovalformdescB{} - -\rectifyapprovalformtitle{Formulário de Aprovação das Correções} - -\rectifyapprovalformdesc{\begin{description} -\item[Observação 1:] A nota final será a já atribuída pela Banca Examinadora no momento da Defesa. Caso a versão final corrigida do trabalho mais este formulário não sejam entregues até a data estipulada, o conceito do aluno passará a ser {\bf D}. -\item[Observação 2:] A assinatura d\tccore@@ref{advisor}{article} orientador\tccore@@ref{advisor}{narticle} é obrigatória, entretanto a assinatura dos membros da banca só é necessária caso o(a) mesmo(a) tenha marcado a opção ''$\Box$ Revisarei o trabalho depois de corrigido'' no \emph{Formulário de Correções}. -\end{description}} - -\rectifyapprovalTRformdesc{\begin{description} -\item[Observação 1:] A nota final será a já atribuída pela Banca Examinadora via o \emph{\tcdef@forms@formsTRtitle}. -Caso a versão final corrigida do trabalho mais este formulário não sejam entregues até a data estipulada, o conceito do aluno passará a ser {\bf D}. -\item[Observação 2:] A assinatura d\tccore@@ref{advisor}{article} orientador\tccore@@ref{advisor}{narticle} é obrigatória, -entretanto a assinatura dos membros da banca só é necessária caso o(a) mesmo(a) tenha marcado a opção ''$\Box$ Revisarei o trabalho depois de corrigido'' no \emph{\tcdef@forms@formsTRtitle}. -\end{description}} - - -\receiptformtitle{Recibo de entrega de cópia da versão final do Trabalho de Conclusão} - -\receiptformfootnote{Entregar a cada membro da banca juntamente com a cópia do trabalho final e após encaminhar ao \tcdef@cover@secretaryacronym .} - -\receiptformdesc{Declaro que encontra-se em minha posse cópia da versão final do Trabalho de Conclusão de Curso em \tcdef@cover@course\ d\tccore@@ref{student}{article} alun\tccore@@ref{student}{article} } - - -\reviewformtitle{Formulário de Correções} -\reviewformdesc{O texto submetido: - \parbox[t]{.75\textwidth}{ - \begin{itemize}[tcc,nosep] - \item[$\Box$] Está adequado, dispensando correções do texto. - \item[$\Box$] Está adequado, sendo necessário correções, conforme a - seguir (e anotações anexas). - \begin{description}[tcc,noitemsep] - \item[$\Box$] Ortográfica - \item[$\Box$] Regras de Escrita - \item[$\Box$] Equações - \item[$\Box$] Resumo - \item[$\Box$] Abstract - \item[$\Box$] Índice - \item[$\Box$] Introdução - \item[$\Box$] Conclusões - \item[$\Box$] Corpo do Trabalho - \item[$\Box$] Resultados - \item[$\Box$] Adicionar mais exemplos - \item[$\Box$] Figuras - \item[$\Box$] Tabelas - \end{description} - \item[$\Box$] Necessita ser revisto/re-escrito,\footnotemark[2] e: - \begin{itemize} - \item[$\Box$] basta a revisão final do texto pelo orientador, - \item[$\Box$] revisarei o trabalho depois de corrigido. - \end{itemize} - \item[$\Box$] Outras considerações (se necessário): \\ - \begin{tabular}{p{0.7\textwidth}} - ~\\\hline - ~\\\hline - ~\\\hline - ~\\\hline - \end{tabular}\\[-1mm] - \end{itemize}} -} - - -\formsTRtitle{Formulário de Avaliação do Trabalho} -\TRformfootnote{Entregar a cada revisor do texto, juntamente com uma cópia do trabalho.} - -\reviewformfootnoteB{Neste caso \tccore@@ref{student}{article} alun\tccore@@ref{student}{article} estará em EXAME e receberá conceito final C ou D, conforme revisão final do texto.} - -\reviewformfootnote{\tcdef@forms@formsfootnote\ Após a apresentação, retornar este à coordenação do TCC.} - -\formsrectifyOKdesc{Correções satisfatórias: \hspace*{1cm}$\Box$\ sim\hspace*{2cm}$\Box$\ não} - -\TCCpointsweight{0.35}{0.35}{0.3} -\TCCpointslabel{Conteúdo}{Trab. Escrito}{Apresentação} - -\TCCIpointsweight{2.0}{2.0}{2.0}{1.0} -\TCCIpointslabel{Tema}{Biblio.}{Plano Trab.}{Texto} diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-en.tex b/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-en.tex new file mode 100644 index 0000000000..04f3fa11d0 --- /dev/null +++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-en.tex @@ -0,0 +1,103 @@ +%%%============================================================================== +%% Copyright 2022-23 by Alceu Frigeri +%% +%% This work may be distributed and/or modified under the conditions of +%% +%% * The [LaTeX Project Public License](http://www.latex-project.org/lppl.txt), +%% version 1.3c (or later), and/or +%% * The [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html), +%% version 3 (or later) +%% +%% This work has the LPPL maintenance status *maintained*. +%% +%% The Current Maintainer of this work is Alceu Frigeri +%% +%% This is version {2.0} {2023/11/23} +%% +%% The list of files that compose this work can be found in the README.md file at +%% https://ctan.org/pkg/ufrgscca +%% +%%%============================================================================== +%% UFRGS stands for "Federal University of Rio Grande do Sul" in south Brazil +%% EE stands for "Engineering School" +%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym) +%%%============================================================================== + + +\SetHeadings{% + university = Federal University of Rio Grande do Sul , + acronym = UFRGS , + unit = Engineering School , + secretary = SACAD/EE , + course = Control and Automation Engineering , + course.title = Bachelor in Control and Automation Engineering , + department = {Dept. of Electrical Systems} , +} + + + +\ActivitySelect{course} +\ActivitySet{CCA}{Control and Automation Engineering} +\ActivitySetCoord{Nome Coordenador} +\ActivitySetCoordTitle{Head of Course} + +\ActivitySelect{tccI} +\ActivitySet{TCC~-~I}{Final Course Work I} +\ActivitySetCoord{Nome Coordenador} +\ActivitySetCoordTitle{Final Course Work Coordinator} + +\ActivitySelect{tccII} +\ActivitySet{TCC~-~II}{Final Course Work II} +\ActivitySetCoord{Nome Coordenador} +\ActivitySetCoordTitle{Final Course Work Coordinator} + +\ActivitySelect{internship} +\ActivitySet{Est.Ob.}{Estágio Supervisionado Obrigatório} +\ActivitySetCoord{Nome Coordenador} +\ActivitySetCoordTitle{Coordenador\ActivityCoord[internship]{narticle} da Atividade de Ensino de\newline Estágio Supervisionado Obrigatório} + + + +\SetTerms{% + title.tcc = Completions's Course Work , + title.tccI = Completions's Course Work I , + title.tccII = Completions's Course Work II , +} + + +\SetLabels{% + advisor = Advisor , + advisors = Advisors , + advisor.gen = Advisor , + advisor.email = Advisor's Email , + coadvisor = Co-advisor , + coadvisor.gen = Co-advisor , + coadvisor.email = Co-advisor's Email , + reviewer.base = Reviewer , + reviewer = Reviewer , + tutor = Tutor\DataFields{student.tutor}{narticle} , + tutor.gen = Tutor(a) , + tutor.email = Email d\DataFields{student.tutor}{article} Tutor\DataFields{student.tutor}{narticle} , + supervisor = Supervisor\DataFields{student.supervisor}{narticle} , + supervisor.gen = Supervisor(a) , + student = Student , + student.gen = Student , + student.email = Student's Email , + student.ID = Card N. , + board = Exam's Board , +} + +\SetTerms{% + tccI.text-descpage = { This work's proposal was submitted to COMGRAD/\Activity[course]{acronym}\ -- \UseHeading{acronym}\ + as part of the requirements to obtain the title of \emph{\UseHeading{course.title}.} + } , + tccI.text-approvalpage = { This work's proposal was considered adequate to finish the \emph{\Activity[tccI]{name}} and approved, in it's final form, by the + \studentCoadvCase{Advisors}{Advisor} and Exam's Board below. } , + tccII.text-descpage = { This work was submitted to COMGRAD/\Activity[course]{acronym}\ -- \UseHeading{acronym}\ + as part of the requirements to obtain the title of \emph{\UseHeading{course.title}.} + } , + tccII.text-approvalpage = { This work was considered adequate to finish the \emph{\Activity[tccII]{name}} and approved, in it's final form, by the + \studentCoadvCase{Advisors}{Advisor} and Exam's Board below. + } , +} + diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-ptBR.tex b/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-ptBR.tex new file mode 100644 index 0000000000..187a58ebf0 --- /dev/null +++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-ptBR.tex @@ -0,0 +1,267 @@ +%%%============================================================================== +%% Copyright 2022-23 by Alceu Frigeri +%% +%% This work may be distributed and/or modified under the conditions of +%% +%% * The [LaTeX Project Public License](http://www.latex-project.org/lppl.txt), +%% version 1.3c (or later), and/or +%% * The [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html), +%% version 3 (or later) +%% +%% This work has the LPPL maintenance status *maintained*. +%% +%% The Current Maintainer of this work is Alceu Frigeri +%% +%% This is version {2.0} {2023/11/23} +%% +%% The list of files that compose this work can be found in the README.md file at +%% https://ctan.org/pkg/ufrgscca +%% +%%%============================================================================== +%% UFRGS stands for "Federal University of Rio Grande do Sul" in south Brazil +%% EE stands for "Engineering School" +%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym) +%%%============================================================================== + + +\location{Porto~Alegre}{RS} + +\SetHeadings{% + university = Universidade Federal do Rio Grande do Sul , + acronym = UFRGS , + unit = Escola de Engenharia , + secretary = SACAD/EE , + course = Engenharia de Controle e Automação , + course.title = Bacharel em Engenharia de Controle e Automação , + ppc.comgrad = {COMISSÃO DE GRADUAÇÃO - COMGRAD/CCA} , + ppc.nde = {NÚCLEO DOCENTE ESTRUTURANTE - NDE/CCA} , + ppc.course = {DO CURSO EM ENGENHARIA DE CONTROLE E AUTOMAÇÃO} , + department = {Depto. de Sistemas Elétricos de Automação e Energia} , +} + + + +\ActivitySelect{course} +\ActivitySet{CCA}{Eng. de Controle e Automação} +\ActivitySetCoord{Nome Coordenador} +\ActivitySetCoordTitle{Coordenador\ActivityCoord[course]{narticle} de Curso} + +\ActivitySelect{tccI} +\ActivitySet{TCC~-~I}{Trabalho de Conclusão de Curso CCA - I} +\ActivitySetCoord{Nome Coordenador} +\ActivitySetCoordTitle{Coordenador\ActivityCoord[tccI]{narticle} da Atividade de Ensino de\break Trabalho de Conclusão de Curso} + +\ActivitySelect{tccII} +\ActivitySet{TCC~-~II}{Trabalho de Conclusão de Curso CCA - II} +\ActivitySetCoord{Nome Coordenador} +\ActivitySetCoordTitle{Coordenador\ActivityCoord[tccII]{narticle} da Atividade de Ensino de\break Trabalho de Conclusão de Curso} + +\ActivitySelect{internship} +\ActivitySet{Est.Ob.}{Estágio Supervisionado Obrigatório} +\ActivitySetCoord{Nome Coordenador} +\ActivitySetCoordTitle{Coordenador\ActivityCoord[internship]{narticle} da Atividade de Ensino de\newline Estágio Supervisionado Obrigatório} + +\ActivitySelect{internship} +\ActivitySet{Est.Ob.}{Estágio Supervisionado Não Obrigatório} +\ActivitySetCoord{Nome Coordenador} +\ActivitySetCoordTitle{Coordenador\ActivityCoord[internship]{narticle} da Atividade de Ensino de\newline Estágio Supervisionado Não Obrigatório} + + +\SetTerms{% + title.tcc = Trabalho de Conclusão de Curso , + title.tccI = Trabalho de Conclusão de Curso I , + title.tccII = Trabalho de Conclusão de Curso II , + title.internship = Estágio Supervisionado Obrigatório , + % + title.calendar = {Calendário - \UseTerm{semester}} , + title.requestform = Formulário de Requerimento de Matrícula , + title.coadvisorform = Requerimento de Autorização de Coorientação , + title.boardapproval = Formulário de Indicação da Banca Examinadora , + title.advisorsapproval-I = Formulário de Aprovação para Avaliação , + title.advisorsapproval-II = Formulário de Aprovação para Apresentação , + title.receipts = Recibo de entrega de cópia da versão final do Trabalho de Conclusão , + title.reviewersform = Formulário de Avaliação , + title.correctionsform = Formulário de Correções , + title.rectifyapproval = Formulário de Aprovação das Correções , + title.internsupervisorform = Formulário de Avaliação do Supervisor (Pela Empresa) , + title.interntutorform = Formulário de Avaliação do Tutor e Coordenador , + % + %footnote.reviewersform + footnote.reviewersform = {Entregar a cada membro da banca juntamente com a cópia do trabalho.} , %%% TCC I / II + footnote.receipts = {Entregar a cada membro da banca juntamente com a cópia do trabalho final e após encaminhar à coordenação de TCC.} , %%% TCC II + footnote.correctionsform = {Entregar a cada membro da banca juntamente com a cópia do trabalho. Após apresentação, retornar este à coordenação de TCC.} ,%%% TCC II + % + footnote.supervisorsform = {Favor utilizar a seguinte grade discreta: \begin{enumerate*}[start=0]\item Sofrível \item Regular \item Bom \item Muito Bom \item Excelente \end{enumerate*}} , + % + opening.requestform = { Ilm\ActivityCoord[course]{article}. Sr\ActivityCoord[course]{narticle}.\par + Coordenador\ActivityCoord[course]{narticle} da Comissão de Graduação do Curso em \Activity[course]{name}\ da \UseHeading{university}. } , + localdate = {\UseConst{publ.city},\hspace{4mm} de \hspace{1.2cm} de 20\hspace{4mm}.} , + % + % + % + % + footnote.requestform = { O resumo deve ser curto, i.e., não deve exceder este espaço. O texto deve ser escrito em parágrafo único, + e por se tratar de proposta, poderá utilizar tempo futuro e não necessita ter motivação ou justificativa.\break Deve conter: + \begin{enumerate*}[alpha)] + \item O QUE será feito - descrição e objetivos. + \item COMO será feito - metodologia. + \item Resultados esperados. + \end{enumerate*}% + } , %%% TCC I + desc.requestform = { \DataFields{student}{Article} alun\DataFields{student}{article} \DataFields{student}{name}, + REGULARMENTE MATRICULAD\DataFields{student}{Article} neste período letivo no curso \emph{\Activity[course]{name}}, desta universidade, + portador\DataFields{student}{narticle} do cartão de identificação n$^o$ \DataFields{student}{ID}, + vem por meio deste solicitar matrícula na atividade de ensino} , + desc.coadvisorform = {\DataFields{student}{Article} alun\DataFields{student}{article} \DataFields{student}{name}, + REGULARMENTE MATRICULAD\DataFields{student}{Article} na atividade de TCC neste período letivo, + vem por meio deste solicitar autorização para registro de coorientação de TCC, conforme justificativa abaixo.} , + desc.rectifyapproval = { \begin{description} + \item[Observação 1:] Caso a versão final corrigida do trabalho, mais este formulário, não sejam entregues até a data estipulada, o conceito final passará a ser {\bf D}. + \item[Observação 2:] Caso as correções sejam satisfatórias, a nota final será a já atribuída pela Banca Examinadora. + \item[Observação 3:] A assinatura d\DataFields{student.advisor}{article} orientador\DataFields{student.advisor}{narticle} é obrigatória, entretanto a assinatura dos membros da banca só é necessária caso tenham marcado a opção ''$\Box$ Revisarei o trabalho depois de corrigido'' no \emph{\UseTerm{temp.formrefname}}. + \end{description} + } , + desc.studentwork = { + \noindent\UseLabel{student}: {\bf \DataFields{student}{name}}\hfill \UseLabel{student.ID}: {\bf \DataFields{student}{ID}}\\% + \noindent\UseLabel{worktitle}: \DataFields{student}{worktitle} } , + desc.studentwork.full = {\UseTerm{desc.studentwork}\\[2.5mm]\UseTerm{desc.advisor}} , + desc.advisor = {\noindent\UseLabel{advisor}: \textbf{\DataFields{student.advisor}{name}}} , + desc.coadvisor = {\noindent\UseLabel{coadvisor}: \textbf{\DataFields{student.advisor}{name}}} , + desc.reviewer = {\noindent\UseLabel{reviewer}: \textbf{\DataFields{student.advisor}{name}}} , + desc.student = {\noindent\UseLabel{student}: {\bf \DataFields{student}{name}}\hfill + \UseLabel{student.ID}: {\bf \DataFields{student}{ID}}} , + desc.internshipperiod = {\noindent Período do Estágio: {\bf \DataFields{student.internship}{start}} até: {\bf \DataFields{student.internship}{end}}} , + desc.supervisor = {\UseLabel{supervisor}: \textbf{\DataFields{student.supervisor}{name}} \hfill CREA: \textbf{\DataFields{student.supervisor}{register}}} , + desc.sacad = {\noindent Ao\par\noindent SACAD da Escola de Engenharia} , + corrections.ok = {Correções satisfatórias: \hspace*{1cm}$\Box$\ sim\hspace*{2cm}$\Box$\ não} , +} + + + +\SetTerms{% + tccI.text-descpage = { Proposta de Trabalho de Conclusão de Curso submetida à + COMGRAD/\Activity[course]{acronym}\ da \UseHeading{acronym}\ como parte dos requisitos para a + obtenção do título de \emph{\UseHeading{course.title}.} + } , + tccI.text-approvalpage = { Esta Proposta de Trabalho de Conclusão de Curso foi julgada adequada para a + obtenção dos créditos da Atividade de \emph{\Activity[tccI]{name}} e aprovada em sua forma final + \studentCoadvCase{pelos Orientadores}{pel\DataFields{student.advisor}{article} Orientador\DataFields{student.advisor}{narticle}} + e Banca Examinadora abaixo. + } , + tccII.text-descpage = { Trabalho de Conclusão de Curso submetido à + COMGRAD/\Activity[course]{acronym}\ da \UseHeading{acronym}\ como parte dos requisitos para a + obtenção do título de \emph{\UseHeading{course.title}.} + } , + tccII.text-approvalpage = { Este Trabalho de Conclusão de Curso foi julgado adequado para a + obtenção dos créditos da Atividade de \emph{\Activity[tccII]{name}} e aprovado em sua forma final + \studentCoadvCase{pelos Orientadores}{pel\DataFields{student.advisor}{article} + Orientador\DataFields{student.advisor}{narticle}} e Banca Examinadora abaixo. + } , +} + + + + +%\SetTerms{% +% +%} + + +\SetLabels{% + advisor = Orientador\DataFields{student.advisor}{narticle} , + advisors = Orientadores , + advisor.gen = Orientador(a) , + advisor.email = Email d\DataFields{student.advisor}{article} Orientador\DataFields{student.advisor}{narticle} , + coadvisor = Coorientador\DataFields{student.coadvisor}{narticle} , + coadvisor.gen = Coorientador(a) , + coadvisor.email = Email d\DataFields{student.coadvisor}{article} Coorientador\DataFields{student.coadvisor}{narticle} , + reviewer.base = Avaliador , + reviewer = Avaliador\DataFields{student.reviewer}{narticle} , + altreviewer = Suplente , + altreviewer.sig = Avaliador\DataFields{student.altreviewer}{narticle} , + tutor = Tutor\DataFields{student.tutor}{narticle} , + tutor.gen = Tutor(a) , + tutor.email = Email d\DataFields{student.tutor}{article} Tutor\DataFields{student.tutor}{narticle} , + supervisor = Supervisor\DataFields{student.supervisor}{narticle} , + supervisor.gen = Supervisor(a) , + student = Alun\DataFields{student}{article} , + student.gen = Aluno(a) , + student.email = Email d\DataFields{student}{article} Alun\DataFields{student}{article} , + student.ID = Cartão , + signature.gen = Assinatura , + signature.student = Assinatura\ \ d\DataFields{student}{article}\ \ Alun\DataFields{student}{article} , + signature.student.gen = Assinatura\ \ do(a)\ \ Aluno(a) , + signature.advisor = Assinatura\ \ d\DataFields{student.advisor}{article}\ \ Orientador\DataFields{student.advisor}{narticle} , + signature.coadvisor = Assinatura\ \ d\DataFields{student.coadvisor}{article}\ \ Coorientador\DataFields{student.coadvisor}{narticle} , + signature.reviewer = Assinatura\ \ d\DataFields{student.reviewer}{article}\ \ Avaliador\DataFields{student.reviewer}{narticle} , + signature.board = Assinatura\ \ do\ \ Membro\ \ da\ \ Banca , + signature.gen = Assinatura , + signature.supervisor = Assinatura\ \ d\DataFields{student.supervisor}{article}\ \ Supervisor\DataFields{student.supervisor}{narticle} , + signature.tutor = Assinatura\ \ d\DataFields{student.tutor}{article}\ \ Tutor\DataFields{student.tutor}{narticle} , + signature.internshipcoord = Assinatura\ \ d\ActivityCoord[internship]{article}\ \ Coordenador\ActivityCoord[internship]{narticle} , + worktitle = Título do Trabalho , + worktitle.temp = Título Provisório , + email = Email , + phone = ramal , + board = Banca Examinadora , + board.member = Membro da Banca , + agree = De Acordo , + Nproc = SEI , + remarks = remarks , + boardtime.gen = Horário , +} + +\SetLabels{% + TCC-I.pointA = {Tema} , + TCC-I.pointB = {Biblio.} , + TCC-I.pointC = {Plano Trab.} , + TCC-I.pointD = {Texto} , + TCC-II.pointA = {Conteúdo} , + TCC-II.pointB = {Trab. Escrito} , + TCC-II.pointC = {Apresentação} , + Ngrade = {Nota} , + grade = {Conceito} , +} + +\SetConsts{% + TCC-I.weightA = {2} , + TCC-I.weightB = {2} , + TCC-I.weightC = {2} , + TCC-I.weightD = {1} , + TCC-II.weightA = {0.35} , + TCC-II.weightB = {0.35} , + TCC-II.weightC = {0.3} , + NgradeA = {9.0} , + NgradeB = {7.5} , + NgradeC = {6.0} , +} + + + +\SetConsts{% + report.tabA = {32mm} , + report.tabA* = {42mm} , + report.tabB = {42mm} , + report.tabB* = {62mm} , + report.tabC = {15mm} , + report.tabD = {15mm} , + report.tabE = {15mm} , + report.tabEx = {15mm} , + report.tabF = {8mm} , + report.tabG = {12mm} , +} + +\SetConsts{% + board.tabA = {38mm} , + board.tabB = {38mm} , + board.tabC = {60mm} , + board.tabD = {13mm} , +} + +\SetConsts{% + cover.winwidth = {95mm} , + cover.winheight = {64mm} , + cover.winvoffset = {112mm} , + form.winvoffset = {24mm} , +} + diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca.cls b/macros/latex/contrib/ufrgscca/latex/ufrgscca.cls index 53c6d33447..dd87d1ea35 100644 --- a/macros/latex/contrib/ufrgscca/latex/ufrgscca.cls +++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca.cls @@ -12,7 +12,7 @@ %% %% The Current Maintainer of this work is Alceu Frigeri %% -%% This is version 1.12 (2023/09/23) +%% This is version {2.0} {2023/11/23} %% %% The list of files that compose this work can be found in the README.md file at %% https://ctan.org/pkg/ufrgscca @@ -23,15 +23,49 @@ %% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym) %%%============================================================================== \NeedsTeXFormat{LaTeX2e}[2022/06/01] -\RequirePackage{expl3} -\def\tc@tmp@packname{ufrgscca} -\def\tc@tmp@altpackname{ufrgscca} -\def\tc@tmp@packdesc{UFRGS/CCA class} -\def\tc@tmp@packdate{2023/09/23} -\def\tc@tmp@packversion{1.12} -\let\@exp\expandafter -\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion} -\@exp\@exp\@exp\ProvidesPackage\@exp\@exp\@exp{\@exp\tc@tmp@packname\@exp}\@exp[\tc@tmp@packdate\space v\tc@tmp@packversion\space\tc@tmp@packdesc] + + +\ProvidesExplClass + {ufrgscca} + {2023/11/23} + {2.0} + {UFRGS/CCA class} + + +%%%%%%% +%%% +%%% Just an attempt of having my packages info in a regular way +%%% Idea being: { <pck-name> / pkg info } for each and all. +%%% +%%%%%%% +\keys_define:nn { ufrgscca / pkg info} + { + name .code:n = {ufrgscca} , + prefix .code:n = {ufrgscca} , + date .code:n = {2023/11/23}, + version .code:n = {2.0} , + description .code:n = {UFRGS/CCA~a~report~based~class~bundle} + } +\cs_if_exist:NF \__codedesc_pkg_info:nn + { + \cs_new_protected:Npn \__codedesc_pkg_info:nn #1#2 + { \keys_set:nn {#1 / pkg info}{#2} } + } +\cs_if_exist:NF \PkgInfo + { \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} } } +\cs_if_exist:NF \PkgDescription + { + \NewDocumentCommand \PkgDescription {m} + { + \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par + } + } +%%%%%%% +%%% End of cut-n-paste +%%%%%%% + + + \RequirePackage{etex} @@ -40,137 +74,226 @@ \RequirePackage[T1]{fontenc} \RequirePackage[utf8]{inputenc} +%%%%%%%%%%%%%%%%%%%%%% +%%% +%%% TODO: to be decided, where to leave that !! +%%% general purpose _propeties !! +%%% +%%%%%%%%%%%%%%%%%%%%%% + +\prop_new:N \l__ufrgscca_terms_prop + +\NewDocumentCommand{\SetHeadings}{m} + { + \prop_put_from_keyval:Nn \l__ufrgscca_terms_prop {#1} + } + + %% + %% No protection, so it can be used in a fully expandable context (like \MakeUppercase) +\cs_new:Npn \UseHeading #1 + { \prop_item:Nn \l__ufrgscca_terms_prop {#1} } + + +%\prop_new:N \l__ufrgscca_terms_prop + +\NewDocumentCommand{\SetTerms}{+m} + { + \prop_put_from_keyval:Nn \l__ufrgscca_terms_prop {#1} + } + + %% + %% No protection, so it can be used in a fully expandable context (like \MakeUppercase) +\cs_new:Npn \UseTerm #1 + { \prop_item:Nn \l__ufrgscca_terms_prop {#1} } + +\cs_new_protected:Npn \TermCase #1#2#3 + { + \prop_if_in:NnTF \l__ufrgscca_terms_prop {#1} {#2} {#3} + } + +%\prop_new:N \l__ufrgscca_labels_prop + + + +\NewDocumentCommand{\SetLabels}{m} + { + \prop_put_from_keyval:Nn \l__ufrgscca_terms_prop {#1} + } + + %% + %% No protection, so it can be used in a fully expandable context (like \MakeUppercase) +\cs_new:Npn \UseLabel #1 + { \prop_item:Nn \l__ufrgscca_terms_prop {#1} } + + +\prop_new:N \l__ufrgscca_const_prop + +\NewDocumentCommand{\SetConsts}{m} + { + \prop_put_from_keyval:Nn \l__ufrgscca_const_prop {#1} + } + +\cs_generate_variant:Nn \prop_item:Nn {Ne} + %% + %% No protection, so it can be used in a fully expandable context (like \MakeUppercase) +\cs_new:Npn \UseConst #1 + { \prop_item:Ne \l__ufrgscca_const_prop {#1} } + + +\bool_new:N \l__ufrgscca_repeatfields_bool +\bool_new:N \l__ufrgscca_timesroman_bool +\bool_new:N \l__ufrgscca_nolocal_bool %============================================================================== % Declaração de opções %============================================================================== -\DeclareKeys[tc]{ - tocdepth.usage = load, - tocdepth.code = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}}, - secdepth.usage = load, - secdepth.code = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}}, - - english.usage = load, - english.code = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}\OptionNotUsed}, - relnum.usage = load, - relnum.code = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}\PassOptionsToPackage{\CurrentOption}{ufrgscca-lists}\OptionNotUsed}, - - pretextontoc.usage = load, - pretextontoc.code = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}}, - timesroman.usage = load, - timesroman.if = tcif@timesroman, - yearsonly.usage = load, - yearsonly.code = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}}, - - oneside.usage = load, - oneside.code = {\AtEndOfClass{\@twosidefalse}\OptionNotUsed}, - strict-abnt.usage = load, - strict-abnt.code = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}}, - repeatfields.usage = load, - repeatfields.code = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}}, - chapternopagenum.usage = load, - chapternopagenum.code = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}}, - - nomicrotype.usage = load, - nomicrotype.code = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}}, - - showframes.usage = load, - showframes.code = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}}, - showlabes.usage = load, - showlabes.code = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}}, - - xlists.usage = load, - xlists.if = tc@xlists, - xpacks.usage = load, - xpacks.if = tc@xpacks, - - nolocal.usage = load, - nolocal.if = tcif@nolocal, - - nofontwarning.usage = load, - nofontwarning.if = @nofontwarning, - - report.usage = load, - report.code = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-cover}}, - internship.usage = load, - internship.code = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-cover}}, - nonrequired.usage = load, - nonrequired.code = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-cover}}, - - texlive.usage = load, - texlive.if = tcif@texlive, - overleaf.usage = load, - overleaf.if = tcif@overleaf, - miktex.usage = load, - miktex.if = tcif@miktex, - - article.usage = load, - article.if = tcif@article, - - nogeometry.usage = load, - nogeometry.if = tcif@nogeometry, -} - -\DeclareUnknownKeyHandler[tc]{\PassOptionsToClass{\CurrentOption}{report}} -\ProcessKeyOptions[tc]\relax - -\iftcif@timesroman - \RequirePackage[english,brazilian]{babel}% babel has to be loaded BEFORE newtx* +\keys_define:nn { ufrgscca } + { + tocdepth .usage:n = load, + tocdepth .code:n = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}}, + secdepth .usage:n = load, + secdepth .code:n = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}}, + +% english .usage:n = load, +% english .code:n = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}\OptionNotUsed}, + + english .usage:n = load , + english .bool_set:N = \l__ufrgscca_english_bool , + + relnum .usage:n = load, + relnum .code:n = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}\PassOptionsToPackage{\CurrentOption}{ufrgscca-lists}\OptionNotUsed}, + + pretextontoc .usage:n = load, + pretextontoc .code:n = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}}, + timesroman .usage:n = load, + timesroman .bool_set:N = \l__ufrgscca_timesroman_bool, + yearsonly .usage:n = load, + yearsonly .code:n = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}}, + + oneside .usage:n = load, + oneside .code:n = {\AtEndOfClass{\@twosidefalse}\OptionNotUsed}, + strict-abnt .usage:n = load, + strict-abnt .code:n = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}}, + repeatfields .usage:n = load, + repeatfields .code:n = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}}, + chapternopagenum .usage:n = load, + chapternopagenum .code:n = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}}, + + nomicrotype .usage:n = load, + nomicrotype .code:n = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}}, + + showframes .usage:n = load, + showframes .code:n = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}}, + showlabes .usage:n = load, + showlabes .code:n = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-abnt}}, + + xlists .usage:n = load, + xlists .bool_set:N = \l__ufrgscca_xlists_bool, + xpacks .usage:n = load, + xpacks .bool_set:N = \l__ufrgscca_xpacks_bool, + + nolocal .usage:n = load, + nolocal .bool_set:N = \l__ufrgscca_nolocal_bool, + + nofontwarning .usage:n = load, + nofontwarning .bool_set:N = \l__ufrgscca_nofontwarning_bool, + + report .usage:n = load, + report .code:n = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-cover}}, + internship .usage:n = load, + internship .code:n = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-cover}}, + nonrequired .usage:n = load, + nonrequired .code:n = {\PassOptionsToPackage{\CurrentOption}{ufrgscca-cover}}, + + texlive .usage:n = load, + texlive .bool_set:N = \l__ufrgscca_texlive_bool, + overleaf .usage:n = load, + overleaf .bool_set:N = \l__ufrgscca_overleaf_bool, + miktex .usage:n = load, + miktex .bool_set:N = \l__ufrgscca_miktex_bool, + + article .usage:n = load, + article .bool_set:N = \l__ufrgscca_article_bool, + + nogeometry .usage:n = load, + nogeometry .bool_set:N = \l__ufrgscca_nogeometry_bool, + + oldrenews .usage:n = load, + oldrenews .bool_set:N = \l__ufrgscca_oldrenews_bool, + + unknown .code:n = {\PassOptionsToClass{\CurrentOption}{report}}, + } +\ProcessKeyOptions[ufrgscca]\relax + + + +\bool_if:NTF \l__ufrgscca_timesroman_bool + { + \bool_if:NTF \l__ufrgscca_english_bool + { + \RequirePackage[brazilian,english]{babel}% babel has to be loaded BEFORE newtx* + } + { + \RequirePackage[english,brazilian]{babel}% babel has to be loaded BEFORE newtx* + } \RequirePackage{mathptmx} -% \RequirePackage[scale=1.05,looser]{newtxtext}% -% \RequirePackage[scale=1.05]{newtxmath}% -% \PackageWarning{ufrgscca}{Fonts newtxtext and newtxmath loaded. Those are free 'implementantion/interpletation' of the proprietary Times Roman (by Adobe) and Times New Roman (by Microsoft)} -% \PackageWarning{ufrgscca}{newtxtext and newtxmath are based on URW Nimbus Roman with some extra math support. Again, those are not real Times Roman nor Times New Roman} \PackageWarning{ufrgscca}{(obsolete) package mathptmx loaded. It loads a free 'implementantion/interpletation' of the proprietary Times Roman (by Adobe) and Times New Roman (by Microsoft)} \PackageWarning{ufrgscca}{package microtype is suppressed, resulting in a subpar layout. Again, the “Roman” font used isn't a true Times Roman nor Times New Roman} - -\else + } + { \RequirePackage{lmodern}% -\fi - -\iftcif@article + } +\bool_if:NTF \l__ufrgscca_article_bool + { \LoadClass[12pt]{article} -\else + } + { \LoadClass[12pt,twoside,openright]{report} -% \LoadClass[12pt]{report} -\fi - -\iftcif@miktex -% \def\BabelCaseHack{} - \ifcsdef{miktexHack}{\miktexHack}{} -\fi - -\iftcif@overleaf - \ifcsdef{overleafHack}{\overleafHack}{} -\fi - -\iftcif@texlive - \ifcsdef{texliveHack}{\texliveHack}{} -\fi + } + +\bool_if:NT \l__ufrgscca_miktex_bool + { + \ifcsdef{miktexHack}{\miktexHack}{} + } +\bool_if:NT \l__ufrgscca_overleaf_bool + { + \ifcsdef{overleafHack}{\overleafHack}{} + } +\bool_if:NT \l__ufrgscca_texlive_bool + { + \ifcsdef{texliveHack}{\texliveHack}{} + } %%%%%%%%%%%%%%%%%%%%% %%% Packages Loading %%%%%%%%%%%%%%%%%%%%% \RequirePackage{silence}% -\if@nofontwarning% + +\bool_if:NT \l__ufrgscca_nofontwarning_bool + { \WarningFilter{latexfont}{Font shape}% \WarningFilter{latexfont}{Size substitutions with differences}% \WarningFilter{latexfont}{Some font shapes were not available}% -\fi% + } \RequirePackage{ufrgscca-abnt} -\iftc@xlists\RequirePackage{ufrgscca-lists}\fi +\bool_if:NT \l__ufrgscca_xlists_bool + { + \RequirePackage{ufrgscca-lists} + } + -\RequirePackage{ufrgscca-gen} \RequirePackage{ufrgscca-cover} \RequirePackage{ufrgscca-core} -\iftc@xpacks +\bool_if:NT \l__ufrgscca_xpacks_bool + { + \ExplSyntaxOff \RequirePackage{relsize} \RequirePackage{keyval,graphicx} \RequirePackage{mathtools} @@ -193,31 +316,54 @@ \usetikzlibrary{shadows}% \usetikzlibrary{babel} \RequirePackage{steinmetz}% -\fi + \ExplSyntaxOn + } + + + \WarningFilter{hyperref}{Option `pdftex' has already} -\RequirePackage[hidelinks,hypertexnames=false]{hyperref}% +\RequirePackage[hidelinks,hypertexnames=false]{hyperref} + %% %% A few (hyperref related) commands %% -\NewDocumentCommand{\autonameref}{O{, }mO{\space}}{\autoref{#2}#1\nameref{#2}#3} +\NewDocumentCommand{\autonameref}{O{,\space}mO{}}{\autoref{#2}#1\nameref{#2}#3} \gdef\annexref#1{\hyperref[#1]{\defannexname\ \ref*{#1}}} -\NewDocumentCommand{\autoannexref}{O{, }mO{\space}}{\annexref{#2}#1\nameref{#2}#3} +\NewDocumentCommand{\autoannexref}{O{,~ }mO{}}{\annexref{#2}#1\nameref{#2}#3} + + +\NewActivity{course} % yeah, CCA as an activity... +\NewActivity{tccI} +\NewActivity{tccII} +\NewActivity{internship} +\NewActivity{internship-opt} + + + +\ExplSyntaxOff + \input{ufrgscca-terms-ptBR.tex} + \input{ufrgscca-cover-ptBR.tex} +\ExplSyntaxOn + + +\bool_if:NT \l__ufrgscca_english_bool + { + \AtBeginDocument{\input{ufrgscca-terms-en.tex}} + } -\iftcif@english% - \input{ufrgscca-en-core.def}% -\else% - \input{ufrgscca-ptBR-core.def}% -\fi% +\bool_if:NF \l__ufrgscca_nolocal_bool + { + \ExplSyntaxOff + \IfFileExists{local.tex} + { \AtBeginDocument{ \input{local.tex} } } + {}% + \ExplSyntaxOn + } -\iftcif@nolocal% -\else% - \IfFileExists{local.tex}{\input{local.tex}}{}% - \tccore@emptyfields% -\fi |