%%%============================================================================== %% Copyright 2022-present 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.13a} {2026/07/04} %% %% 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}[2026/06/01] %%%%%%% %%% %%% Just an attempt at having my package's info in a regular way %%% \pkginfograb_set:nn { } { props } sets package info %%% %%% \pkginfograbProvidesExplPackage { } { props } sets package info %%% and calls \ProvidesExplPackage %%% %%%%%%% \RequirePackage{pkginfograb} \pkginfograbProvidesExplPackage {ufrgscca-abnt} { name = {ufrgscca-abnt} , prefix = {ufrgscca} , date = {2026/07/04}, version = {2.13a} , description = {UFRGS/CCA abnt layout} } %%%%%%% %%% 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 %%%%%%%%%%%%%%%%%%%%% \bool_if:NTF \l__ufrgscca_english_bool { \RequirePackage[brazilian,main=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,main=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 }% \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 } \RequirePackage{ titletoc } \RequirePackage[inline]{ enumitem } \RequirePackage{ chngcntr } % % 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' %%% % \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 }{ \UseConst{ note.width }} { \parindent=-\the\noteindent\notename#1:\hspace{ 2.9pt }#2 } \end{ minipage } \end{ center } } }%% % % %%%%%%%%%%%%%%%%%%%%% %%% Packages Loading %%%%%%%%%%%%%%%%%%%%% \RequirePackage{ array } \RequirePackage{ nicematrix } \NiceMatrixOptions{ cell-space-limits = 1pt } \newcolumntype{ P }[1]{ >{ \raggedleft\arraybackslash }p{ #1 }} \newcolumntype{ B }[1]{ >{ \raggedleft\arraybackslash\bfseries }p{ #1 }} \newcolumntype{ C }[1]{ >{ \centering\arraybackslash }p{ #1 }} \newcolumntype{ R }[1]{ >{ \raggedleft\arraybackslash }p{ #1 }} \newcolumntype{ L }[1]{ >{ \raggedright\arraybackslash }p{ #1 }} \newcolumntype{ J }[1]{ >{ \arraybackslash }p{ #1 }} %%%%%%%%%%%%%%%%%%%%% %%% Packages Loading %%%%%%%%%%%%%%%%%%%%% \WarningFilter{ biblatex }{ File 'brazilian-abnt-abnt.lbx'}% \WarningFilter{ biblatex }{ Conflicting options }% \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 }% } %% %%% %%% typeset adjusting { package microtype } %%% \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 \pdfadjustspacing=2 %%% %%% \so \ul command { package soul }... contour is just to make a fancy underline %%% \RequirePackage{ contour } \RequirePackage{ soul } \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 }{ \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 }{ \l__ufrgscca_secdepth_tl } } \def\nonum#1#2{ \begin{ numberless }#1{ #2 }\end{ numberless }} %%% %%% Relative/Absolute numbering... argh !!! %%% \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 } } %%% %%% ToC definitions { package titletoc } %%% \def\tc@lblmargin{ 22mm } \contentsmargin{ 2.2em } \def\tc@dotspacing{ 0.5pc } %%%\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 } \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 }% \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 }} \makeatother %%% %%% 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 } \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 } %\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 } %%% \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 } } \pagestyle{ main } \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 }} \bool_if:NT \l__ufrgscca_pretextontoc_bool { \gappto{ \listoffigures }{ \addcontentsline{ toc }{ chapter }{ \textsc\listfigurename }} \gappto{ \listoftables }{ \addcontentsline{ toc }{ chapter }{ \textsc\listtablename }} } \newlength{ \l__ufrgscca_label_width_dim } \NewDocumentCommand{ \NewChapListEnv }{ mm }{ \NewDocumentEnvironment{ #1 }{ O{ }m }{ % \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 }} } \NewChapListEnv{ listofabbrv }{ \listabbrvname } \NewChapListEnv{ listofsymbols }{ \listsymbolname } %%% %%% lists formating { package enumitem } %%% \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=\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=\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{ ppctight }{ leftmargin=0pt,listparindent=5mm,labelwidth=5mm } \SetEnumitemKey{ arabic }{ label=\arabic*.} \SetEnumitemKey{ arabic)}{ label=\arabic*)} \SetEnumitemKey{ (arabic)}{ label=(\arabic*)} \SetEnumitemKey{ arabic*}{ label*=\arabic*.} \SetEnumitemKey{ arabic*)}{ label*=\arabic*)} \SetEnumitemKey{ roman }{ label=\roman*.} \SetEnumitemKey{ roman)}{ label=\roman*)} \SetEnumitemKey{ (roman)}{ label=(\roman*)} \SetEnumitemKey{ roman*}{ label*=\roman*.} \SetEnumitemKey{ roman*)}{ label*=\roman*)} \SetEnumitemKey{ Roman }{ label=\Roman*.} \SetEnumitemKey{ Roman)}{ label=\Roman*)} \SetEnumitemKey{ (Roman)}{ label=(\Roman*)} \SetEnumitemKey{ Roman*}{ label*=\Roman*.} \SetEnumitemKey{ Roman*)}{ label*=\Roman*)} \SetEnumitemKey{ alpha }{ label=\alph*.} \SetEnumitemKey{ alpha)}{ label=\alph*)} \SetEnumitemKey{ (alpha)}{ label=(\alph*)} \SetEnumitemKey{ alpha*}{ label*=\alph*.} \SetEnumitemKey{ alpha*)}{ label*=\alph*)} \SetEnumitemKey{ Alpha }{ label=\Alph*.} \SetEnumitemKey{ Alpha)}{ label=\Alph*)} \SetEnumitemKey{ (Alpha)}{ label=(\Alph*)} \SetEnumitemKey{ Alpha*}{ label*=\Alph*.} \SetEnumitemKey{ Alpha*)}{ label*=\Alph*)} \SetEnumitemKey{ bullet }{ label=\hfill\textopenbullet } %%% %%% tight underline { packages soul, countour } %%% \contourlength{ 0.17ex }% \contournumber{ 96 }% \NewDocumentCommand{ \tightul }{ m }{ % \setul{ 0.355ex }{ 0.075ex }% \ul{ { \phantom{ { #1 }}}}% \llap{ \contour{ white }{ #1 }}% } %%% %%% keyword command definition (for abstract) %%% \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 }% } %% %% if needed to be, double side. %% \cs_new_protected:Npn \__ufrgscca_clearpage: { \if@openright \cleardoublepage \else \clearpage %TODO: why \@openright test is (sometimes) failing ? \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) %==============================================================================% \NewDocumentCommand{ \pubdate }{ O{ \number\day }mm }{ % \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 } , } } }% \pubdate{ \monthname }{ \number\year }% \bool_if:NT \l__ufrgscca_oldrenews_bool { \RenewDocumentCommand{ \date }{ O{ \number\day }mm }{ \pubdate[#1]{ #2 }{ #3 }}% } \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 } \cs_new_protected:Npn \__ufrgscca_weekday:n #1 { \int_case:nnF { #1 } { { 0 }{ Monday } { 1 }{ Tuesday } { 2 }{ Wednsday } { 3 }{ Thursday } { 4 }{ Friday } { 5 }{ Saturday } { 6 }{ Sunday } } { -none-} } } { \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 } \cs_new_protected:Npn \__ufrgscca_weekday:n #1 { \int_case:nnF { #1 } { { 0 }{ Segunda } { 1 }{ Terça } { 2 }{ Quarta } { 3 }{ Quinta } { 4 }{ Sexta } { 5 }{ Sábado } { 6 }{ Domingo } } { -none-} } }