%\iffalse meta-comment
%
% Copyright 2018 Henrique Baron
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
% of this license or (at your option) any later version.
% The latest version of this license is in
%   http://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status `maintained'.
% 
% The Current Maintainer of this work is Henrique Baron.
%
% This work consists of the files ucsmonograph.dtx and ucsmonograph.ins
% and the derived file ucsmonograph.cls.
%
% Classe ucsmonograph
% Formata um documento da classe abnTeX2 para o padrão exigido pela Universidade de Caxias do Sul para
% monografias.
% 
% DUVIDAS E SUGESTOES: Abra uma issue na pagina do projeto:
% https://github.com/HenriqueBaron/ucsmonograph
%
%\fi
%
%\iffalse
%<*driver>
\ProvidesFile{ucsmonograph.dtx}
%</driver>
%<class>\NeedsTeXFormat{LaTeX2e}
%<class>\ProvidesClass{ucsmonograph}
%<*class>
	[2019/11/07 v1.3.0 Padrao de monografias da UCS]
%</class>
%
%<*driver>
\documentclass{ltxdoc}
\usepackage[brazil]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{hyperref}
\hypersetup{%
	colorlinks=true,
	linkcolor=black,
}
\EnableCrossrefs
\CodelineIndex
\RecordChanges
\begin{document}
	\DocInput{ucsmonograph.dtx}
\end{document}
%</driver>
%\fi

% \CheckSum{771}

% \CharacterTable
%  {Upper-case	\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\Z
%   Lower-case	\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\z
% 	Digits \0\1\2\3\4\5\6\7\8\9
% 	Exclamation \!	 Double quote \" Hash (number) \#
%	Dollar \$ Percent \% Ampersand \&
% 	Acute accent \' Left paren \( Right paren \)
% 	Asterisk \* Plus \+ Comma \,
% 	Minus \- Point \. Solidus \/
% 	Colon \: Semicolon \; Less than \<
% 	Equals \= Greater than \> Question mark \?
% 	Commercial at \@ Left bracket \[ Backslash \\
% 	Right bracket \] Circumflex \^ Underscore \_
% 	Grave accent \` Left brace \{ Vertical bar \|
% 	Right brace \} Tilde \~}
%
%\changes{v1.0.0}{2018/07/31}{Versão inicial}
%\changes{v1.1.0}{2018/08/16}{Configuração automática do pacote hyperref; correção na necessidade de chamar o pacote glossaries-extra; geração automática dos bookmarks do PDF}
%\changes{v1.2.0}{2018/11/22}{inclusão do pacote icomma; posicionamento vertical com raggedright}
%\changes{v1.2.1}{2018/12/10}{Correção de compatibilidade com o pacote substr}
%
%\GetFileInfo{ucsmonograph.dtx}
%
%\DoNotIndex{\newcommand,%
%\newenvironment,%
%\@oldcontentsline,%
%\@firstoftwo,%
%\@oldforeignlanguage,%
%\@olddedicatoria,%
%\@oldendedicatoria,%
%\@secondoftwo,%
%\\,%
%\',%
%\ABNTEXsubsubsectionfont,%
%\ABNTEXsubsubsectionfontsize,%
%\ABNTEXsubsubsubsectionfont,%
%\ABNTEXsubsubsubsectionfontsize,%
%\addto,%
%\addtocounter,%
%\adjustimage,%
%\allowdisplaybreaks,%
%\AtBeginDocument,%
%\begin,%
%\bfseries,%
%\boolean,%
%\centering,%
%\citebrackets,%
%\contentsline,%
%\contentsname,%
%\counterwithout,%
%\csname,%
%\CurrentOption,%
%\DeclareOption,%
%\DeclareStringOption,%
%\def,%
%\documentclass,%
%\else,%
%\emph,%
%\end,%
%\endcsname,%
%\equal,%
%\expandafter,%
%\fboxsep,%
%\fi,%
%\fill,%
%\footnotesize,%
%\hfill,%
%\hspace,%
%\ifluatex,%
%\ifthenelse,%
%\ifx,%
%\ignorespaces,%
%\itshape,%
%\l@section,%
%\let,%
%\linewidth,%
%\listfigurename,%
%\listtablename,%
%\LoadClass,%
%\makeevenhead,%
%\makeoddhead,%
%\makepagestyle,%
%\MakeTextUppercase,%
%\mdseries,%
%\newboolean,%
%\newlength,%
%\newlistentry,%
%\noindent,%
%\normalsize,%
%\OR,%
%\par,%
%\PassOptionsToClass,%
%\PassOptionsToPackage,%
%\pdfbookmark,%
%\ProcessKeyvalOptions,%
%\ProcessOptions,%
%\raggedright,%
%\relax,%
%\renewcommand,%
%\RequirePackage,%
%\restylefloat,%
%\rule,%
%\setboolean,%
%\setfloatadjustement,%
%\setfloatlocations,%
%\setlength,%
%\SingleSpacing,%
%\space,%
%\su@ExpandTwoArgs,%
%\su@IfSubStringInString,%
%\textbf,%
%\textendash,%
%\textwidth,%
%\uppercase,%
%\vfill,%
%\vspace,%
%\WithSuffix,%
%}
%
%\title{Classe \textsf{ucsmonograph}\thanks{Esse documento corresponde a \textsf(ucsmonograph)~\fileversion, de \filedate.}}
%\author{Henrique Baron \\ \texttt{henrique.baron@gmail.com}}
%
%\maketitle
%
%\section{Introdução}
% Esta classe foi desenvolvida para formatar monografias segundo o Guia para Elaboração de Trabalhos Acadêmicos da Universidade de Caxias do Sul.
% Este código foi desenvolvido tendo por base a versão 2018 do documento, e tem por objetivo simplificar o uso do \LaTeX\ por alunos da UCS que têm pouca experiencia na linguagem, abstraindo algumas configurações de formatação e comandos mais complexos.
%
% A classe |ucsmonograph| é baseada na classe |abntex2|, que formata documentos acadêmicos segundo as normas ABNT.
% O código desenvolvido realiza alterações em algumas macros e expõe outros que são necessários para antender requisitos da UCS, mas que não são oferecidos pela classe |abntex2| por padrão.
%
%\subsection{Se seu documento possui fórmulas}
% Pode ser necessário compilar o trabalho com Lua\LaTeX.
% Mesmo para iniciantes no \LaTeX, essa não é uma mudança complicada, e pode ser necessária para atender uma exigência da UCS.
% Isso porque o padrão da universidade diz que a fonte deve ser a mesma em \emph{todo} o documento, inclusive nas fórmulas, onde o \LaTeX\ e até mesmo outros editores como o Microsoft Word utilizam uma fonte diferente.
% Isso serve para deixar o documento de fato mais legível e mais ''bonito'', e é possível negociar com os responsáveis se existe margem para manter essa diferença de fontes entre texto e equações.
%
% Caso não seja permitido, é o ponto onde o Lua\LaTeX~entra.
% No pdf\LaTeX~não é possível alterar a fonte do texto matemático.
% Por conta disso, a classe |ucsmonograph| é preparada para carregar conjuntos de caracteres e a fonte Latin Modern automaticamente se o documento estiver sendo compilado com o Lua\LaTeX.
% 
%\section{Instalação}
%
%\subsection{Editores \LaTeX\ off-line}
% Se você está utilizando um editor \LaTeX\ off-line, basta buscar pela classe |ucsmonograph| no seu \emph{package manager}.
% A classe |ucsmonograph| integra as distribuições do MiK\TeX\ e do \TeX Live. 
%
%\subsection{Editores \LaTeX\ on-line}
% Para editores \LaTeX\ on-line como o Share\LaTeX\ ou o Overleaf, você precisa fazer o download dos arquivos compilados da classe |ucsmonograph|.
% Para isso, vá até a página de lançamentos (\emph{releases}) do projeto no GitHub em \url{https://github.com/HenriqueBaron/ucsmonograph/releases}.
% Faça o \emph{download} da última versão da classe, baixando tanto o arquivo |.cls| como o arquivo |.pdf|.
% O arquivo |.cls| pode ser carregado para o seu projeto online e utilizado normalmente.
%
%\section{Utilização}
% Para utilizar a classe |ucsmonograph|, é recomendado consultar os manuais da classe |abntex2| e do pacote |abntex2cite|, que é utilizado para as referências bibliográficas.
% Este manual descreve apenas os comandos desenvolvidos na própria classe |ucsmonograph| e outras redefinições de comandos que podem ser pertinentes ao usuário.
%
%\subsection{Chamada da classe e opções}\label{sec:chamada-classe}
%\DescribeMacro{\documentclass}
% A classe pode ser chamada com as opções-padrão que são nativas do \LaTeX~e são encaminhadas para a classe |abntex2|.
% Um exemplo típico para chamar a classe ao iniciar o documento pode ser
%\begin{verbatim}
%	\documentclass[12pt,oneside,english,brazil]{ucsmonograph}
%\end{verbatim}
% Outras opções que podem ser alteradas ou acrescentadas a essa chamada são exibidas abaixo.
%
%\DescribeMacro{oneside}
% Essa opção pode ser substituída por |twoside| para que o documento seja impresso em frente-e-verso.
% Embora seja permitido pelo Guia da UCS, isso é vedado pela especificação de alguns cursos, como em engenharias.
%
%\DescribeMacro{english,brazil}
% As opções de idiomas podem ser alteradas, de modo que \emph{o idioma principal seja sempre o último}.
% Ou seja, outros exemplos para este par de opções seriam |spanish,brazil| ou |german,brazil|.
%
%\DescribeMacro{lmodern}
% Habilita a fonte Latin Modern -- que é uma ''evolução'' à fonte Computer Modern, tradicional do \LaTeX~-- e é equivalente a chamar o seguinte código no preâmbulo do trabalho: |\usepackage{lmodern}|.
%
%\DescribeMacro{cite=}
% Define como é o tipo de citação no documento.
% O valor dado a essa chave é passado diretamente para a classe |abntex2cite|, e ela pode ser preenchida como: |cite=alf|, que é o valor-padrão, para citações do tipo ''(AUTOR, 2018)''; ou |cite=num| para citações numéricas, no estilo de artigos científicos, que \emph{são permitidas pelo guia da UCS.}
%
%\DescribeMacro{siglas}
% Habilita a produção automática da lista de siglas através de um arquivo |.bib|, semelhante ao de bibliografia.
% Isso é feito através da chamada do pacote |glossaries-extra| com a opção |record|, e é preciso rodar o script |bib2gls| para que a lista seja gerada.
% Mais informações sobre o uso do |glossaries-extra| com o |bib2gls| podem ser encontradas na documentação deste pacote.
% Cabe ressaltar que, pela necessidade de uso desse script, essa opção \emph{não é compatível com editores \LaTeX~on-line}.
%
% Para o caso dos editores online, a lista de siglas deve ser criada manualmente com o ambiente |siglas|, documentado no manual da classe |abntex2|.
%
%\DescribeMacro{simbolos}
% De maneira semelhante à opção |siglas|, habilita a geração automática da lista de símbolos.
% Essa opção também \emph{não é compatível com editores \LaTeX~on-line}.
%
% Também para o caso dos editores online, a lista de símbolos pode ser feita manualmente no ambiente |simbolos|, documentado no manual da classe |abntex2|.
%
%\subsection{Exemplo básico}
% Para o desenvolvimento de uma monografia com a classe |ucsmonograph|, algumas propriedades do documento devem ser definidas, como o autor, título, entre outros.
% Existem macros implementadas nesta classe e na classe |abntex2| (que é utilizada como base) disponibilizadas para atribuir estas propriedades,
% e que devem ser chamadas no começo do documento.
% Seja neste manual ou no manual da classe |abntex2|, estas funções estão documentadas.
% De toda forma, um exemplo básico da chamada destas, para servir como ponto de partida, é exibido abaixo:
%\begin{verbatim}
% \documentclass[12pt,oneside,english,brazil,lmodern,cite=num]{ucsmonograph}
% \usepackage[utf8]{inputenc}
% \usepackage[T1]{fontenc}
%
% \titulo{Modelagem numérica de vibração em rolamentos defeituosos}
% \autor{Henrique Baron}
% \data{2018}
% \instituicao{Universidade de Caxias do Sul}
% \local{Caxias do Sul}
% \preambulo{Trabalho de conclusão de curso apresentado à Universidade de Caxias do Sul
% como requisito parcial à obtenção do grau de Engenheiro Mecânico.}
% \areadoconhecimento{Área do conhecimento de ciências exatas e engenharias}
% \orientador{Prof. Me. Pedro da Silva} % Orientador do trabalho
% \avaliadori{Prof. Me. Paulo Oliveira} % Avaliador da banca, da instituição
% \avaliadorii{Profa. Dra. Maria Pereira} % Avaliador da banca, da instituição
% \avaliadorext[Empresa X]{Cristiane Silveira} % Avaliaodr da banca, de instituição externa
% % Palavras-chave que aparecem no resumo em português
% \palavraschave{Vibra\c{c}\~ao. Modelagem. Defeito. Rolamento.} 
% % Palavras-chave em idioma estrangeiro (o mesmo configurado nas opções da classe!) 
% \palavraschave[english]{Vibration. Modelling. Defect. Bearing.} 
%
% \begin{document}
% \imprimircapa
% \imprimirfolhaderosto
% \imprimirfolhadeaprovacao{29/11/2018}
%
% \end{document}
%\end{verbatim} 
%
%\subsection{Quadros e lista de quadros}
% Por padrão, o \LaTeX~já oferece meios de criar tabelas e a lista de tabelas.
% Para o caso dos quadros, que são um elemento obrigatório pelo Guia da UCS, não há nenhum recurso desenvolvido, nem na classe |abntex2|.
% Para isso, o ambiente |quadro| foi criado na classe |ucsmonograph|.
%
%\DescribeEnv{quadro}
% É um ambiente flutuante semelhante a |figure| ou |table|.
% Dentro dele pode ser inserida a imagem de um quadro diretamente, com a macro |\incluirimagem|, ou pode ser criado manualmente o quadro com o ambiente |tabular| e utilizando a macro |caption| para definir uma legenda.
%
%\DescribeMacro{\listofquadros}
% Gera a lista de quadros, inserindo a entrada para a Lista de Quadros no sumário.
% É recomendado utilizar a macro |\listofquadros*|, que não insere a Lista de Quadros no sumário, conforme prescreve o Guia da UCS.
%
%\DescribeMacro{\listofquadros*}
% Gera a lista de quadros, sem colocar essa entrada no sumário.
%
%\section{Macros redefinidas e implementadas}
% As subseções seguintes descrevem macros e ambientes que foram implementados na classe |ucsmonograph|,
% ou redefinições de comandos da classe |abntex2| que foram realizadas nesta classe.
%
%\subsection{Redefinições da classe abn\TeX 2}
% Alguns comandos e ambientes expostos pela classe |abntex2| foram redefinidos ou modificados na classe |ucsmonograph|, e essas alterações são apresentadas a seguir.
%
%\DescribeMacro{\autor}
% A função macro |\autor|\marg{nome} foi estendida para incluir o nome do autor automaticamente nas propriedades do PDF.
% Isso elimina a necessidade de utilizar a macro |\hypersetup| do pacote |hyperref| e alterar a chave |pdfauthor|.
%
% Na verdade, essa alteração, em conjunto com as modificações realizadas nas macros |\titulo|, |\preambulo|, |\orientador| e a criação da macro |\palavraschave| eliminam a necessidade de configuração do pacote |hyperref| com a macro |\hypersetup|.
%
%\DescribeMacro{\titulo}
% A função da macro |\titulo|\marg{nome} foi estendida de maneira semelhante à macro |\autor|.
%
%\DescribeMacro{\preambulo}
% A função da macro |\preambulo|\marg{assunto} foi estendida de maneira semelhante à macro |\autor|.
%
%\DescribeMacro{\orientador}
% A função da macro |\orientador|\marg{nome} foi estendida de maneira semelhante à macro |\autor|.
%
%\DescribeEnv{resumo}
% O ambiente |resumo| foi totalmente redefinido na classe |ucsmonograph|.
% Ele continua recebendo um parâmetro opcional, no entanto, agora este parâmetro deve receber o nome da língua em que o resumo será escrito,
% caso seja diferente do idioma padrão do documento.
% Com isso, o padrão de hifenização do idioma selecionado é aplicado a todo o texto contido no ambiente.
%
% Conforme a norma ABNT, o resumo do trabalho deve ser apresentado no idioma vernáculo (no caso da UCS, o português brasileiro),
% e em um idioma estrangeiro.
% Dessa maneira, o ambiente |resumo| deve ser utilizado duas vezes no documento: uma delas não leva o argumento opcional,
% enquanto a outra deve receber o idioma em que o resumo é apresentado.
% Um exemplo com as duas chamadas do ambiente é mostrado abaixo:
%\begin{verbatim}
% \begin{resumo}
% O presente trabalho demonstra a aplicação da Teoria da Relatividade...
% \end{resumo}
%
% \begin{resumo}[english]
% The present work demonstrates the application of the Relativity Theory...
% \end{resumo}
%\end{verbatim}
% Com isso, o título \emph{RESUMO} e a expressão \emph{Palavras-chave} também são adaptados ao idioma escolhido.
% É importante que o idioma estrangeiro selecionado tenha sido incluído \emph{também nas opções da classe},
% como é mostrado na Seção \ref{sec:chamada-classe}.
%
% Por fim, as palavras-chave do documento, definidas com a macro\\
%|\palavraschave|\oarg{idioma}\marg{palavras},
% são incluídas automaticamente no fim do resumo.
% As palavras-chave também devem ser definidas para os dois idiomas do resumo, o que fará com que o conjunto certo
% de palavras-chave seja exibido.
%
%\DescribeEnv{dedicatoria}
% O ambiente |dedicatoria| foi modificado para que não seja necessário aplicar qualquer formatação, nem escrever dentro de um ambiente |minipage|, como sugere o manual da classe |abntex2|.
% Dessa maneira, a dedicatória pode ser escrita simplesmente como:
%\begin{verbatim}
% \begin{dedicatoria}
%      Dedico este trabalho a minha família etc.
% \end{dedicatoria}
%\end{verbatim}
%
%\DescribeEnv{epigrafe}
% O ambiente |epigrafe| foi modificado da mesma forma que o ambiente |dedicatoria|, para que o posicionamento do texto seja feito automaticamente como pede o Guia da UCS.
% Portanto, o ambiente pode ser utilizado da seguinte maneira:
%\begin{verbatim}
% \begin{epigrafe}
%      ''Uma mente que se abre a uma nova ideia nunca mais volta ao tamanho 
%		original.''
%      \vspace{12pt}
%
%      \textbf{Albert Einstein}
% \end{epigrafe}
%\end{verbatim}
%
% O guia solicita que o nome do autor seja destacado em negrito.
% A mudança desta parte e o espaçamento do nome para o resto do texto devem ser feitos manualmente, como mostrado no exemplo acima.
%
%\DescribeMacro{\fonte}
% Essa macro foi redefinida para que o texto seja alinhado à esquerda -- e não centralizado como na definição original na classe |abntex2| -- e para que o texto ''Fonte'' seja separado do argumento passado pelo usuário por dois pontos, e não por um travessão.
%
% A função do parâmetro opcional desta macro também foi modificada.
% Agora a sua chamada é feita como |\fonte|\oarg{largura}\marg{fonte}.
% O parâmetro opcional \meta{largura} é utilizado para definir a lagura da linha em que o texto da fonte será escrito.
% Se essa macro for utilizada depois de um ambiente |tabular|, a |ucsmonograph| detectará a largura da tabela, fazendo com que o texto da fonte fique alinhado corretamente à esquerda.
% Se um valor apropriado não puder ser determinado, o texto da fonte terá a largura da linha (fornecido pela macro |\linewidth|).
% O parâmetro opcional permite, enfim, que o usuário defina uma largura customizada para a linha onde a fonte será escrita.
%
% A função do argumento opcional para a classe |abntex2| é a de mudar o texto ''Fonte''.
% Essa mudança não é possível na classe |ucsmonograph|.
%
%\subsection{Outras redefinições}
% Macros fornecidas por outros pacotes ou classes e que foram alteradas na classe |ucsmonograph| são descritas aqui.
%
%\DescribeMacro{\foreignlanguage}
% Foi alterada para colocar em itálico o texto em idioma estrangeiro.
% Como essa macro considera o padrão de hifenização da linguagem definida no parâmetro obrigatório \marg{language}, é recomendado utilizá-la sempre que se desejar digitar conteúdo em um idioma diferente do padrão do documento.
%
%\subsection{Comandos específicos}
% A classe |ucsmonograph| define alguns comandos próprios, que são detalhados aqui.
%
%\DescribeMacro{\palavraschave}
% Define quais são as palavras-chave do trabalho, que aparecerão no resumo e também nas propriedades do PDF gerado.
% Esta macro foi criada para ser utilizada de maneira similar às macros |\autor|, |\titulo|, |\preambulo| e |\orientador| que são fornecidas pela classe |abntex2|.
% Ela deve ser chamada, portanto, \emph{no preâmbulo do seu código}, isto é, antes de |\begin{document}|.
%
% A macro |\palavraschave| recebe também um argumento opcional, que define o idioma das palavras-chave fornecidas.
% Como as palavras-chave são exibidas no \emph{resumo}, que deve ser incluído em dois idiomas,
% esta macro também deve ser chamada duas vezes: uma sem o parâmetro opcional,
% que indica que são as palavras-chave no idioma principal do documento;
% e outra com o nome do idioma estrangeiro que é utilizado no resumo do trabalho.
% A chamada duplicada desta macro é exibida no exemplo abaixo:
%\begin{verbatim}
% \palavraschave{Vibração. Modelagem. Defeito. Rolamento.}
% \palavraschave[english]{Vibration. Modelling. Defect. Bearing.}
%\end{verbatim}
%
% É importante que o segundo idioma que é passado como parâmetro para a macro tenha sido declarado como opção ao chamar a classe,
% como é mostrado na Seção \ref{sec:chamada-classe}.
%
%\DescribeMacro{\imprimirpalavraschave}
% Esta macro simplesmente exibe as palavras-chave configuradas com o comando\\
% |\palavraschave|\oarg{idioma}\marg{palavras},
% precedidas da expressão \emph{Palavras-chave}, destacada em negrito,
% conforme especificado pelo guia da UCS.
%
%\DescribeMacro{\aredoconhecimento}
% Define a área do conhecimento do trabalho desenvolvido, que é impressa na capa do trabalho.
% Esta macro possui apenas um argumento.
%
%\DescribeMacro{\avaliadori}
% Esta macro também tem apenas um argumento, e define o primeiro avaliador da banca avaliadora.
% O nome desse avaliador é impresso na folha de aprovação com a macro |\imprimirfolhadeaprovacao|.
%
%\DescribeMacro{\avaliadorii}
% É semelhante à macro |\avaliadori|, e define o segundo avaliador da banca examinadora, para ser impresso na folha de aprovação.
% A instituição deste avaliador é preenchida automaticamente nessa folha com o conteúdo da macro |\instituicao|.
%
% Portanto, se o segundo avaliador for de uma instituição externa ou empresa, a macro |\avaliadorext| deve ser utilizada.
%
%\DescribeMacro{\avaliadorext}
% É semelhante às macros anteriores de avaliadores, definindo o avaliador de instituição externa, se ele existir.
% A instituição que este avaliador representa é definida diretamente como argumento opcional da macro |\imprimirfolhadeaprovacao|.
%
%\DescribeMacro{\imprimirfolhadeaprovacao}
% Gera a folha de aprovação no padrão solicitado pela UCS, e recebe um ou dois argumentos:
%\begin{verbatim}
%	\imprimirfolhadeaprovacao[inst.aval.ext.]{data aprov.}
%\end{verbatim}
% O parâmetro opcional \meta{inst. aval. ext.} define a instituição ou empresa de onde vem o avaliador convidado.
% Caso não preenchida, a instituição é definida automaticamente com o conteúdo da macro |\instituicao|.
% O nome da instituição impresso abaixo do nome dos outros avaliadores é sempre preenchido com o nome da instituição definido na macro |\instituicao|.
%
% O parâmetro obrigatório define a data de aprovação que é impressa na folha, que corresponde à data de defesa do trabalho.
%
% Para a banca examinadora, são impressos os nomes definidos com as macros |\orientador|, |\avaliadori|, |\avaliadorii| e |\avaliadorext|.
% Se algum destes nomes não tiver sido definido nas macros, a macro |\imprimirfolhadeaprovacao| não gerará erros, apenas reajustará a página sem exibi-los.
% Isso permite que seja impressa a folha de aprovação com diferentes números de avaliadores, com ou sem um avaliador de instituição externa.
%
%\DescribeMacro{\incluirimagem}
% Encapsula o comando |\includegraphics|, padrão do \LaTeX, acrescentando alguns elementos gráficos.
% Esta macro deve ser utilizada dentro de um ambiente |figure| e é chamada da seguinte forma:
%\begin{verbatim}
%	\incluirimagem[escala]{caminho}{descrição}{fonte e ano}
%\end{verbatim}
% O parâmetro opcional \meta{escala} é um valor decimal que define a escala de aumento ou redução da imagem.
% O valor padrão é 1.
% Os outros parâmetros indicam o caminho para o arquivo de imagem, a descrição -- que aparecerá acima da imagem, após o número -- e o nome da fonte e ano da imagem, que aparecem abaixo da ilustração, em fonte reduzida.
%
%\DescribeMacro{\incluirimagem*}
% Possui a mesma função da macro |\incluirimagem|, porém não adiciona uma legenda na parte superior da imagem e não a inclui na lista de figuras.
% Ela tem, portanto, um argumento a menos na sua chamada:
%\begin{verbatim}
%	\incluirimagem*[escala]{caminho}{fonte e ano}	
%\end{verbatim}
% Deve-se atentar que o uso dessa macro \emph{não} está de acordo com a especificação do guia da UCS.
% Ela tem a função de auxiliar a inclusão de imagens em partes do documento como anexos ou apêndices, cujo conteúdo interno não deve ser referenciado no sumário.
%
%\DescribeMacro{\incluirsiglas}
% Faz a chamada para o arquivo |.bib| que contém as definições de siglas.
% Essa macro só é definida se a opção |siglas| estiver habilitada, e leva o parâmetro obrigatório \marg{caminho}, que dá o caminho para o arquivo |.bib|.
%
%\DescribeMacro{\listofsiglas*}
% Gera a lista de siglas.
% O nome da macro foi deixado parcialmente em inglês para ficar de acordo com o padrão de macros de listas como |\listoffigures| ou |\listoftables|, e ela não tem versão sem asterisco.
% Este comando só é definido se a opção |siglas| estiver habilitada.
% Caso contrário, a lista de siglas deve ser construída manualmente com o ambiente |siglas|, descrito no manual da classe |abntex2|.
%
%\DescribeMacro{\incluirsimbolos}
% Faz a chamada para o arquivo |.bib| que contém as definições de símbolos.
% Essa macro só é definida se a opção |simbolos| estiver habilitada, e leva o parâmetro obrigatório \marg{caminho}, de maneira similar à macro |\incluirsiglas|.
%
%\DescribeMacro{\listofsimbolos*}
% Gera a lista de símbolos.
% O nome desta macro é parte em inglês também para manter o padrão de outras macros de listas do \LaTeX, e não tem versão sem asterisco.
% Este comando só é definido se a opção |simbolos| estiver habilitada.
% Caso contrário, a lista de símbolos deve ser construída manualmente com o ambiente |simbolos|, descrito no manual da classe |abntex2|.
%
%\StopEventually{}
%
%\section{Implementação}
% Esta seção descreve a implementação do código.
% É utilizada apenas como registro comentado do código produzido, e não é necessário ao usuário lê-la.
%\subsection{Inicialização}
%
%\begin{macro}{Variaveis}
% Declaração das variáveis: pacote |lmodern| (para uso da fonte Latin Modern) habilitado; criação automática da lista de siglas ativa; e criação automática da lista de símbolos ativa.
%    \begin{macrocode}
\RequirePackage{ifthen}

\newboolean{@lmodernAtivo}
\setboolean{@lmodernAtivo}{false}

\newboolean{@siglasAtivo}
\setboolean{@siglasAtivo}{false}

\newboolean{@simbolosAtivo}
\setboolean{@simbolosAtivo}{false}

%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{Opcoes}
% Declaração de opções do tipo par key-value, trazidas pelo pacote |kvoptions|.
%    \begin{macrocode}
\RequirePackage{kvoptions}
\DeclareStringOption[alf]{cite}
\ProcessKeyvalOptions*
%    \end{macrocode}
% Declaração de outras opções, e carregamento da classe-base |abntex2|.
%    \begin{macrocode}
\DeclareOption{lmodern}{%
	\setboolean{@lmodernAtivo}{true}%
}

\DeclareOption{siglas}{%
	\setboolean{@siglasAtivo}{true}%
}

\DeclareOption{simbolos}{%
	\setboolean{@simbolosAtivo}{true}%
}

%    \end{macrocode}
% Para a classe |abntex2| são passadas as configurações |openright|, para que o documento seja folheado da direita para a esquerda; |a4paper|, para impressão em folha A4; |chapter=TITLE| e |section=TITLE|, para que os títulos de |chapter| e |section| sejam passados para letra maiúscula, como pede o padrão da UCS.
%    \begin{macrocode}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{abntex2}}
\ProcessOptions\relax
\LoadClass[openright,a4paper,chapter=TITLE,section=TITLE]{abntex2}%

%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{Pacotes}
% Inclusão e configuração de pacotes.\\
% Se o documento está sendo compilado com LuaLaTeX, altera-se a fonte do modo matemático para ser igual à fonte do texto, e não ser em itálico.
%    \begin{macrocode}
\RequirePackage{ifluatex}
\ifluatex
	\RequirePackage[math-style=upright]{unicode-math}
	\setboolean{@lmodernAtivo}{true}
\fi

%    \end{macrocode}
% Referências a bibliografia no padrão ABNT.
% Opções: substituir listas com mais de dois autores por "et al." e escrever o "et al." em itálico.\\
%Se estiver configurada citação numérica, configura para que as citações sejam feitas entre colchetes e permite as citações múltiplas como [8-11], por exemplo.
%    \begin{macrocode}
\RequirePackage[\ucsmonograph@cite,abnt-etal-list=3,abnt-etal-text=it,%
	abnt-full-initials=no]{abntex2cite}

\ifthenelse{\equal{\ucsmonograph@cite}{num}}{%
	\citebrackets[]%
	\RequirePackage{cite}%
}{}

%    \end{macrocode}
% Código necessário para evitar conflito no pacote substr pelo uso dele por ambos os pacotes abntex2cite e glossaries.
%    \begin{macrocode}
\let\su@ExpandTwoArgs\relax 
\let\IfSubStringInString\relax 
\let\su@IfSubStringInString\relax

%    \end{macrocode}
% Configurações gerais do pacote |hyperref|.
%    \begin{macrocode}
\hypersetup{%
	unicode=true,
	pdfcreator={LaTeX with ucsmonograph},
	colorlinks=true,
	linkcolor=black,
	citecolor=black,
}

%    \end{macrocode}
% Chamada de outros pacotes.
%    \begin{macrocode}
\ifthenelse{\boolean{@lmodernAtivo}}{%
	\RequirePackage{lmodern}
}{}

\RequirePackage{caption}

\RequirePackage[top=3cm,left=3cm,bottom=2cm,right=2cm]{geometry}
\raggedbottom

\RequirePackage{etoolbox}
\RequirePackage{indentfirst}
\RequirePackage[absolute]{textpos}
\RequirePackage{calc}

\RequirePackage{amsmath}
\allowdisplaybreaks

\RequirePackage{xparse}
\RequirePackage{graphicx}
\RequirePackage{float}
\RequirePackage{icomma}

\RequirePackage{adjustbox}
\newlength\larguraimagem
\newlength\larguratabular
\newlength\largurafonte

\RequirePackage{chngcntr}
\counterwithout{equation}{chapter}

\RequirePackage{suffix}

%    \end{macrocode}
% Carregamento e configuração condicional do pacote |glossaries-extra| de acordo com o uso de qualquer uma das opções |simbolos| ou |siglas|.
% Configura, para esse pacote, um novo estilo de abreviação para siglas em outros idiomas, além de definir a largura da linha de descrição na lista a exibir
% Passagem das opções para o pacote |glossaries-extra| em função das opções |siglas| ou |simbolos|.
%    \begin{macrocode}
\ifthenelse{\boolean{@siglasAtivo}}{%
	\PassOptionsToPackage{acronyms}{glossaries-extra}%
}

\ifthenelse{\boolean{@simbolosAtivo}}{%
	\PassOptionsToPackage{symbols}{glossaries-extra}%
}

\ifthenelse{\boolean{@siglasAtivo} \OR \boolean{@simbolosAtivo}}{%
	\PassOptionsToPackage{record,toc=false,nonumberlist,style=long}{glossaries-extra}%
}{}

\RequirePackage{glossaries-extra}
\setlength\glsdescwidth\linewidth%

%    \end{macrocode}
% Configura no pacote |glossaries-extra| um novo estilo de abreviação para siglas em outros idiomas.
%    \begin{macrocode}
\ifthenelse{\boolean{@siglasAtivo}}{%
	\setabbreviationstyle[acronym]{long-short}%
	\setabbreviationstyle[foreignabbreviation]{long-short-user}%
}{}

%    \end{macrocode}
%\end{macro}
%
%\subsection{Definição de constantes}
%Declaração das constantes de texto da classe.
%\begin{macro}{\palavraschavename}
% Constante que armazena a expressão \textit{Palavras-chave}, no idioma em que o texto estiver sendo escrito.
%    \begin{macrocode}
\newcommand{\palavraschavename}{Palavras-chave:}
\addto\captionsenglish{
    \renewcommand\palavraschavename{Keywords:}
}
\addto\captionsgerman{
    \renewcommand\palavraschavename{Stichw\"orter:}
}
\addto\captionsspanish{
    \renewcommand\palavraschavename{Palabras-llave:}
}

%    \end{macrocode}
%\end{macro}
%
%\subsection{Lista de quadros}
% Mostra a implementação da lista de quadros, que é um elemento obrigatório em monografias da UCS, mas não é implementado na classe |abntex2|.
%\begin{macro}{Quadros}
% Macros para os nomes e criação do novo float |quadro|.
%    \begin{macrocode}
\newcommand{\quadroname}{Quadro}
\newcommand{\listquadroname}{Lista de quadros}

\newfloat{quadro}{\quadroname}{loq}[chapter]
%    \end{macrocode}
% Redefine o estilo e configura que não é o package float o responsável pela sua formatação.
%    \begin{macrocode}
\restylefloat*{quadro}
%    \end{macrocode}
% Ajuste do posicionamento do quadro e atribuição do arquivo de extensão .LOQ.
%    \begin{macrocode}
\setfloatadjustment{quadro}{\centering}
\setfloatlocations{quadro}{hbtp}

\newlistof{listofquadros}{loq}{\listquadroname}
\newlistentry{quadro}{loq}{0}
%    \end{macrocode}
% Configurações de exibição e numeração nas listas e no corpo do trabalho.
%    \begin{macrocode}
\renewcommand{\cftquadroname}{\quadroname\space}
\renewcommand*{\cftquadroaftersnum}{\hfill\textendash\hfill}

\renewcommand{\fnum@quadro}{\quadroname\ \thequadro}

\counterwithout{quadro}{chapter}

%    \end{macrocode}
% Estende o conteúdo da macro |\listofquadros| para criar o bookmark no PDF automaticamente.
%    \begin{macrocode}
\let\@oldlistofquadros\listofquadros
\def\listofquadros{%
	\pdfbookmark[0]{\listquadroname}{loq}
	\@oldlistofquadros
}

%    \end{macrocode}
%\end{macro}
%
%\subsection{Modificações sobre a classe abnTeX2}
% Aqui, as alterações de medidas e redefinições de comandos oferecidos pela classe |abntex2| são exibidos.
% Essas mudanças foram realizadas para adequar os padrões dessa classe à especificação da UCS.
%
%\begin{macro}{abntheadings}
% Redefinição do estilo abntheadings, que coloca no cabeçalho das páginas o nome do capítulo/seção e uma linha horizontal, além do número de página.
% O padrão da UCS pede somente o número de página.
%    \begin{macrocode}
\makepagestyle{abntheadings}
\makeevenhead{abntheadings}{\ABNTEXfontereduzida\thepage}{}{}
\makeoddhead{abntheadings}{}{}{\ABNTEXfontereduzida\thepage}

%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\list...name}
%\changes{v1.1.1}{2018/09/18}{Correção do nome da lista de símbolos}
% Nomes de elementos pré-textuais que precisam ser alterados
%    \begin{macrocode}
\addto\captionsbrazil{%
	\renewcommand{\listfigurename}{Lista de figuras}%
	\renewcommand{\listadesimbolosname}{Lista de s\'{i}mbolos}%
}

%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\ABNTEX...font}
% Redefinição de fontes e tamanhos para os capítulos e seções, para o corpo do documento.
%    \begin{macrocode}
\renewcommand{\ABNTEXchapterfont}{\bfseries}
\renewcommand{\ABNTEXchapterfontsize}{\normalsize}

\renewcommand{\ABNTEXsectionfont}{\ABNTEXchapterfont\mdseries}
\renewcommand{\ABNTEXsectionfontsize}{\normalsize}

\renewcommand{\ABNTEXsubsectionfont}{\ABNTEXsectionfont\bfseries}
\renewcommand{\ABNTEXsubsectionfontsize}{\normalsize}

\renewcommand{\ABNTEXsubsubsectionfont}{\ABNTEXsubsectionfont\mdseries}
\renewcommand{\ABNTEXsubsubsectionfontsize}{\normalsize}

\renewcommand{\ABNTEXsubsubsubsectionfont}{\ABNTEXsubsubsectionfont\itshape}
\renewcommand{\ABNTEXsubsubsubsectionfontsize}{\normalsize}

%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\cft...font}
% Redefinição de fontes e tamanhos para os capítulos e seções, NO SUMÁRIO.
% Como o guia da UCS solicita que a apresentação dos títulos seja idêntica no sumário e no texto, as fontes declaradas acima são utilizadas, o que não é o padrão da classe abnTeX2.
%    \begin{macrocode}
\renewcommand{\cftchapterfont}{\ABNTEXchapterfont}
\renewcommand{\cftsectionfont}{\ABNTEXsectionfont}
\renewcommand{\cftsubsectionfont}{\ABNTEXsubsectionfont}
\renewcommand{\cftsubsubsectionfont}{\ABNTEXsubsubsectionfont}
\renewcommand{\cftparagraphfont}{\ABNTEXsubsubsubsectionfont}

%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\linespread}
%\changes{v1.1.2}{2018/09/28}{Corrigido espaçamento entre linhas para o equivalente a 1.5 do MS Word}
% Espaçamento entre linhas e entre parágrafos.
% Para 12pt, o espaçamento equivalente a 1.5 (do MS Word) é 1.4, obtido experimentalmente.
%    \begin{macrocode}
\linespread{1.4}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\parskip}
%    \begin{macrocode}
\setlength\parskip{0pt}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\parindent}
%\changes{v1.1.2}{2018/09/28}{Aumentada indentação}
% Recuo da primeira linha do parágrafo em 1.5 cm.
%    \begin{macrocode}
\setlength\parindent{1.5cm}

%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\afterchapskip}
%\changes{v1.1.0}{2018/08/16}{Corrigido espaçamento abaixo}
%\changes{v1.1.2}{2018/09/28}{Corrigido espaçamento abaixo}
% Alteração do espaçamento entre o título dos capítulos e das seções e o corpo do texto.
%    \begin{macrocode}
\setlength\afterchapskip\baselineskip
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\setaftersecskip}
%\changes{v1.1.2}{2018/09/28}{Corrigido espaço abaixo}
%    \begin{macrocode}
\setaftersecskip\baselineskip
\setaftersubsecskip\baselineskip
\setaftersubsubsecskip\baselineskip
\setafterparaskip\baselineskip

%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\textfloatsep}
%\changes{v1.1.2}{2018/09/28}{Corrigido o valor de espaçamento}
% Modificação no espaçamento entre os floats e o texto.
%    \begin{macrocode}
\setlength\textfloatsep{1.5\baselineskip}
\setlength\floatsep{1.5\baselineskip}
\setlength\intextsep{1.5\baselineskip}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\abovedisplayskip}
%\changes{v1.1.2}{2018/09/28}{Corrigido o espaçamento acima e abaixo de equações}
% Ajusta os espaçamentos verticais acima e abaixo das equações.
%    \begin{macrocode}
\AtBeginDocument{%
	\setlength\abovedisplayskip{1\baselineskip plus 5pt minus 5pt}
	\setlength\belowdisplayskip{1\baselineskip plus 5pt minus 5pt}
	\setlength\abovedisplayshortskip{1\baselineskip plus 5pt minus 5pt}
	\setlength\belowdisplayshortskip{1\baselineskip plus 5pt minus 5pt}
	\setlength\jot{2ex}
}

%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{enumerate}
%\changes{v1.1.2}{2018/09/28}{Ajustar parâmetros de acordo com o padrão da UCS}
%\changes{v1.2.1}{2018/12/10}{Criar um length para configurar os enumerates}
% Configuração das listas para atender ao padrão da UCS.
%    \begin{macrocode}
\newlength\@enumerateindent
\setlength\@enumerateindent{\parindent+0.6cm}
\setlist[enumerate,1]{labelindent=\parindent,leftmargin=\@enumerateindent,nosep,label=\alph*)}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{itemize}
%    \begin{macrocode}
\setlist[itemize,1]{nosep,label=--}

%    \end{macrocode}
%\end{macro}
%
%\begin{environment}{thebibliography}
%\changes{v1.1.2}{2018/09/28}{Corrigido o espaçamento entre as referências}
% Modificação do espaçamento entre cada referência na bibliografia.
%    \begin{macrocode}
\let\@oldthebibliography\thebibliography
\def\thebibliography#1{%
	\@oldthebibliography{#1}
	\setlength\parskip{0pt}
	\setlength\itemsep\baselineskip
}

%    \end{macrocode}
%\end{environment}
%
%\begin{macro}{\printchapternum}
%\changes{v1.1.2}{2018/09/28}{Corrigir o espaçamento após o número de seção}
% As macros que escreve o número do capítulo e da seção no corpo do trabalho foram levemente modificadas para reduzir o espaçamento entre o número do capítulo/seção e o seu título.
%    \begin{macrocode}
\renewcommand{\printchapternum}{%
	\tocprintchapter
	\setboolean{abntex@innonumchapter}{false}
	\chapnumfont%
	\space\thechapter%
	\ifthenelse{\boolean{abntex@apendiceousecao}}{%
		\tocinnonumchapter
		\ABNTEXcaptiondelim%
	}{}
}

%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\@seccntformat}
%    \begin{macrocode}
\renewcommand{\@seccntformat}[1]{\csname the#1\endcsname\  }

%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\imprimircapa}
%\changes{v1.1.2}{2018/09/28}{Mudar o conteúdo para negrito}
%\changes{v1.2.0}{2018/11/22}{Mudança do layout gerado}
% O comando que gera a capa precisou ser completamente reescrito para atender ao padrão requisitado pela UCS.
%    \begin{macrocode}
\renewcommand{\imprimircapa}{%
	\pdfbookmark[0]{Capa}{Capa}%
	\begin{capa}%
		\bfseries\centering%
		\expandafter\uppercase\expandafter{\imprimirinstituicao}\\%
		\expandafter\uppercase\expandafter{\@areadoconhecimento}
		\vfill
%    \end{macrocode}
% Nome em uma caixa de texto, posicionada da seguinte maneira:\\
% largura: largura A4 - margens = 210-30-20 = 160mm\\
% posição horizontal: começo da margem esquerda = 30mm\\
% posição vertical: altura A4/4 + margem superior / 2 = 294mm/4 + 15mm\\
%    \begin{macrocode}
		\begin{textblock*}{160mm}(30mm, 297mm/4+15mm)%
			\expandafter\uppercase\expandafter{\theauthor}%
		\end{textblock*}%
%    \end{macrocode}
% Título em uma caixa de texto, posicionada no centro vertical da folha (297mm/2)
%    \begin{macrocode}
		\begin{textblock*}{160mm}(30mm, 297mm/2)%
			\expandafter\uppercase\expandafter{\thetitle}%
		\end{textblock*}%
		\vfill
		\expandafter\uppercase\expandafter{\imprimirlocal}\\
		\expandafter\uppercase\expandafter{\thedate}%
	\end{capa}%
}

%    \end{macrocode}
%\end{macro}
%
%\begin{environment}{folhaderosto}
%\changes{v1.3.0}{2019/08/29}{Redefinir os ambientes internos de folha de rosto}
% Os ambientes |folhaderosto| e |folhaderosto*| da classe |abntex2| foram redefinidos para corrigir um erro provocado por comandos frágeis.
% Um erro era gerado se não fosse deixada uma linha em branco (quebra de parágrafo) após o comando |imprimirfolhadefosto|.
%    \begin{macrocode}
\renewenvironment{folhaderosto}[1]{\clearpage\PRIVATEbookmarkthis{#1}}{\cleardoublepage}
\renewenvironment{folhaderosto*}[1]{\clearpage\PRIVATEbookmarkthis{#1}}{\newpage}

%    \end{macrocode}
%\end{environment}
%
%\begin{macro}{\imprimirfolhaderosto}
%\changes{v1.3.0}{2019/08/29}{Redefinir o comando para imprimir a folha de rosto}
% O comando |\imprimirfolhaderosto| da classe |abntex2| foi redefinido para corrigir um erro provocado por comando frágil.
% Um erro era gerado se não fosse deixada uma linha em branco após o comando.
%    \begin{macrocode}
\renewcommand{\imprimirfolhaderosto}[1][\folhaderostoname]{%
	\@ifstar{\imprimirfolhaderostostar#1}{%
	\imprimirfolhaderostonostar#1}
}

%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\folhaderostocontent}
%\changes{v1.1.1}{2018/09/18}{Corrigir justificação do nome do orientador}
%\changes{v1.1.2}{2018/09/28}{Mudar o conteúdo para negrito}
%\changes{v1.2.0}{2018/11/22}{Mudança do layout gerado}
% Da mesma forma, a macro interna da classe |abntex2| que gera o conteúdo da folha de rosto precisou ser redefinida para ficar semelhante à capa, também remodelada.
%    \begin{macrocode}
\renewcommand{\folhaderostocontent}{%
	\bfseries\centering%
	\expandafter\uppercase\expandafter{\theauthor}%
	\vfill
	\vfill
%    \end{macrocode}
% Título em uma caixa de texto, posicionada no centro vertical da folha (297mm/2)
%    \begin{macrocode}
	\begin{textblock*}{160mm}(30mm, 297mm/2)%
		\expandafter\uppercase\expandafter{\thetitle}%
	\end{textblock*}%
	\vfill
	\abntex@ifnotempty{\imprimirpreambulo}{%
		\hspace{.45\textwidth}%
		\begin{minipage}{.5\textwidth}%
			\mdseries%
			\SingleSpacing%
			\imprimirpreambulo%
			\vspace{\onelineskip}%
			
			\imprimirorientadorRotulo~\imprimirorientador%
		\end{minipage}%
	}%
	\vfill
	\bfseries
	\expandafter\uppercase\expandafter{\imprimirlocal}\\
	\expandafter\uppercase\expandafter{\thedate}%
}

%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\fonte}
%\changes{v1.1.1}{2018/09/18}{Reimplementada para justificar texto à esquerda}
%\changes{v1.1.2}{2018/09/28}{Corrigido o espaçamento vertical antes da fonte}
% Modificação para permitir que a fonte seja alinhada à esquerda.
% Como o texto deve ficar alinhado com a imagem ou a tabela/quadro, um parâmetro opcional com a largura do texto foi criado.
% O valor padrão para este parâmetro é a largura da linha.
% O parâmetro opcional na definição original deste comando, que altera o texto ''Fonte'' não é mais utilizado.
%    \begin{macrocode}
\renewcommand{\ABNTEXcaptionfontedelim}{: }
\renewcommand{\fonte}[2][\larguratabular]{%
	\ifthenelse{\equal{\strip@pt#1}{0}}{%
		\setlength\largurafonte\linewidth
	}{%
		\setlength\largurafonte{#1}
	}
	\centering%
	\begin{minipage}[h]{\largurafonte}
		\vspace{2pt}
		\raggedright\footnotesize\fontename%
		\ABNTEXcaptionfontedelim\ignorespaces #2
	\end{minipage}
}

%    \end{macrocode}
%\end{macro}
%
%\begin{environment}{dedicatoria}
%\changes{v1.1.0}{2018/08/16}{Aplicação de melhorias}
% Extensão da macro |dedicatoria| para isentar o usuário da necessidade de formatar manualmente a posição do texto.
%    \begin{macrocode}
\let\@olddedicatoria\dedicatoria
\let\@oldenddedicatoria\enddedicatoria
\def\dedicatoria{%
	\@olddedicatoria%
	\vspace*{\fill}%
	\hspace{.5\textwidth}%
	\begin{minipage}[b]{.45\textwidth}%
	\SingleSpacing%
}
\def\enddedicatoria{%
	\end{minipage}%
	\@oldenddedicatoria%
}

%    \end{macrocode}
%\end{environment}
%
%\begin{environment}{epigrafe}
%\changes{v1.3.0}{2019/08/29}{Redefinição do ambiente de epígrafe}
% Extensão do ambiente |epigrafe| para isentar o usuário da necessidade de formatar manualmente a posição do texto.
%    \begin{macrocode}
\let\@oldepigrafe\epigrafe
\let\@oldendepigrafe\endepigrafe
\def\epigrafe{%
	\@oldepigrafe %
	\vspace*{\fill}%
	\hspace{0.5\textwidth}%
	\begin{minipage}[b]{.45\textwidth}%
		\SingleSpacing\itshape\raggedleft%
}
\def\endepigrafe{%
	\end{minipage}%
	\@oldendepigrafe
}

%    \end{macrocode}
%\end{environment}
%
%\begin{environment}{resumo}
%\changes{v1.3.0}{2019/09/02}{Redefinição do ambiente resumo}
% O ambiente |resumo| foi totalmente redefinido para que o idioma do resumo seja selecionado como um argumento opcional.
%    \begin{macrocode}
\renewcommand\abstractnamefont\chaptitlefont
\newboolean{@abstractotherlanguage}
\setboolean{@abstractotherlanguage}{false}
\DeclareRobustCommand\resumo{\@ifnextchar[{\@@resumo}{\@resumo}}
\def\@resumo{%
	\let\@oldabstractname\abstractname
	\PRIVATEbookmarkthis{\abstractname}
	\def\abstractname{\MakeUppercase{\@oldabstractname}}
	\begin{abstract}
	\SingleSpacing
}
\def\@@resumo[#1]{%
	\begin{otherlanguage}{#1}
	\setboolean{@abstractotherlanguage}{true}
	\let\@oldabstractname\abstractname
	\PRIVATEbookmarkthis{\abstractname}
	\def\abstractname{\MakeUppercase{\@oldabstractname}}
	\begin{abstract}
	\SingleSpacing
}
\def\endresumo{%
	\vspace{\onelineskip}\par
	\imprimirpalavraschave
	\end{abstract}
	\PRIVATEclearpageifneeded
	\ifthenelse{\boolean{@abstractotherlanguage}}{\end{otherlanguage}}{}
	\setboolean{@abstractotherlanguage}{false}
	\def\abstractname\@oldabstractname
}

%    \end{macrocode}
%\end{environment}
%
%\begin{macro}{\imprimirpalavraschave}
%\changes{v1.3.0}{2019/11/07}{Criação do comando}
% O comando |\imprimirpalavraschave| foi criado para formatar o texto que contém as palavras-chave do documento.
%    \begin{macrocode}
\newcommand\imprimirpalavraschave{%
	\textbf{\palavraschavename}\ \@palavraschavecontent}

%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\autor}
% Extensão da macro que define o nome do título, para que isso seja automaticamente passado para o pacote |hyperref|.
%    \begin{macrocode}
\let\@oldtitulo\titulo
\renewcommand{\titulo}[1]{%
	\@oldtitulo{#1}
	\hypersetup{%
		pdftitle={#1}
	}
}
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\autor}
% Extensão da macro para o autor, semelhante à macro |\titulo|.
%    \begin{macrocode}
\let\@oldautor\autor
\renewcommand{\autor}[1]{%
	\@oldautor{#1}
	\hypersetup{%
		pdfauthor={#1}
	}
}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\preambulo}
% Extensão da macro para o preâmbulo (assunto), semelhante à macro |\titulo|.
%    \begin{macrocode}
\let\@oldpreambulo\preambulo
\renewcommand{\preambulo}[1]{%
	\@oldpreambulo{#1}
	\hypersetup{%
		pdfsubject={#1}
	}
}

%    \end{macrocode}
%\end{macro}
%
%\subsection{Outras redefinições}
% Aqui modificações e redefinições de outros comandos que não pertencem à classe |abntex2| são redefinidos.
%
%\begin{environment}{tabular}
% Extensão do ambiente |tabular| para incluir o conteúdo dentro de uma |adjustbox| e armazenar a largura do quadro ou tabela.
% Essa medida pode ser utilizada pela macro |\fonte| para formatação da largura.
%    \begin{macrocode}
\let\@oldtabular\tabular
\let\@oldendtabular\endtabular
\def\tabular{%
	\begin{adjustbox}{gstore width=\larguratabular}
	\@oldtabular
}
\def\endtabular{%
	\@oldendtabular
	\end{adjustbox}
}

%    \end{macrocode}
%\end{environment}
%
%\begin{macro}{\listoffigures}
% Estende a macro da lista de figuras para incluir o bookmark no PDF automaticamente.
%    \begin{macrocode}
\let\@oldlistoffigures\listoffigures
\def\listoffigures{%
	\pdfbookmark[0]{\listfigurename}{lof}
	\@oldlistoffigures
}

%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\listoftables}
% Estende a macro da lista de tabelas para incluir o bookmark no PDF automaticamente.
%    \begin{macrocode}
\let\@oldlistoftables\listoftables
\def\listoftables{%
	\pdfbookmark[0]{\listtablename}{lot}
	\@oldlistoftables
}

%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\tableofcontents}
% Estende a macro do sumário para incluir o bookmark no PDF automaticamente.
%    \begin{macrocode}
\let\@oldtableofcontents\tableofcontents
\def\tableofcontents{%
	\pdfbookmark[0]{\contentsname}{toc}
	\@oldtableofcontents
}

%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\glsxtruserparen}
% Essa macro, trazida pelo pacote |glossaries-extra| define o conteúdo entre parênteses quando a key |user1| estiver preenchida.
% Essa redefinição só acontece se a geração de lista de siglas estiver ativa.
%    \begin{macrocode}
\ifthenelse{\boolean{@siglasAtivo}}{%
	\renewcommand{\glsxtruserparen}[2]{%
		\glsxtrfullsep{#2}%
		\glsxtrparen
		{#1\ifglshasfield{\glsxtruserfield}{#2}{, \emph{\glscurrentfieldvalue}}{}}%
	}%
%    \end{macrocode}
%\begin{macro}{\glsuserdescription}
% Define o texto longo (descrição) que será exibido na lista de siglas
%    \begin{macrocode}
	\renewcommand{\glsuserdescription}[2]{%
		\ifglshasfield{\glsxtruserfield}{#2}{\emph{\glscurrentfieldvalue}}{#1}%
	}
}{}

%    \end{macrocode}
%\end{macro}
%\end{macro}
%
%\begin{macro}{\contentsline}
% Macro responsável por definir o conteúdo da linha no sumário, é redefinida para que os nomes das seções no sumário sejam escritos em letra maiúscula.
%    \begin{macrocode}
\let\@oldcontentsline\contentsline
\def\contentsline#1#2{%
	\expandafter\ifx\csname l@#1\endcsname\l@section
	\expandafter\@firstoftwo
	\else
	\expandafter\@secondoftwo
	\fi
	{%
		\@oldcontentsline{#1}{\MakeTextUppercase{#2}}%
	}{%
		\@oldcontentsline{#1}{#2}%
	}%
}

%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\foreignlanguage}
% Extensão da macro que inicia um texto em língua estrangeira, alterando-a para que o conteúdo seja destacado em itálico.
%    \begin{macrocode}
\let\@oldforeignlanguage\foreignlanguage 
\renewcommand{\foreignlanguage}[2]{\@oldforeignlanguage{#1}{\emph{#2}}}

%    \end{macrocode}
%\end{macro}
%
%\subsection{Comandos específicos desta classe}
% No final do código são definidos os comandos produzidos pela classe |ucsmonograph| propriamente dita.
%
%\begin{macro}{\@palavraschavecontent}
% É uma macro utilizada como variável, que armazena as palavras-chave definidas pelo usuário.
%    \begin{macrocode}
\newcommand{\@palavraschavecontent}{}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\palavraschave}
%\changes{v1.3.0}{2019/11/07}{Adicionar parâmetro opcional de idioma ao comando}
% Redefine o conteúdo da macro |\@palavraschavecontent| e configura também esse conteúdo no pacote |hyperref|.
% Se o parâmetro opcional for utilizado, o conteúdo é armazenado para ser utilizado no resumo em outros idiomas,
% e o hyperref não é configurado neste caso.
%    \begin{macrocode}
\DeclareRobustCommand\palavraschave{\@ifnextchar[{\@@palavraschave}{\@palavraschave}}
\def\@palavraschave#1{%
	\renewcommand\@palavraschavecontent{#1}
	\hypersetup{%
		pdfkeywords={#1}
	}
}
\def\@@palavraschave[#1]#2{
	\expandafter\addto\csname captions#1\endcsname{
		\renewcommand\@palavraschavecontent{#2}
	}
}

%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\@areadoconhecimento}
% É uma macro utilizada como variável, que armazena o texto da área do conhecimento que deve aparecer na folha de rosto.
%    \begin{macrocode}
\newcommand\@areadoconhecimento{}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\areadoconhecimento}
%\changes{v1.2.0}{2018/11/22}{Nova macro}
% Redefine o conteúdo da macro |\@areadoconhecimento|, cujo conteúdo é exibido na folha de rosto do trabalho.
%    \begin{macrocode}
\newcommand\areadoconhecimento[1]{%
	\renewcommand\@areadoconhecimento{#1}
}

%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\@avaliadori}
% Macro utilizada como variável que contém o nome do primeiro avaliador da banca, exibido na folha de aprovação.
%    \begin{macrocode}
\newcommand\@avaliadori{}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\avaliadori}
%\changes{v1.2.0}{2018/11/22}{Nova macro}
% Redefine o conteúdo da macro |\@avaliadori|, cujo conteúdo é exibido na folha de aprovação.
%    \begin{macrocode}
\newcommand\avaliadori[1]{%
	\renewcommand\@avaliadori{#1}
}

%    \end{macrocode}
%\end{macro}]
%
%\begin{macro}{\@avaliadorii}
% Macro utilizada como variável que contém o nome do segundo avaliador da banca, exibido na folha de aprovação.
%    \begin{macrocode}
\newcommand\@avaliadorii{}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\avaliadorii}
%\changes{v1.2.0}{2018/11/22}{Nova macro}
% Redefine o conteúdo da macro |\@avaliadorii|, cujo conteúdo é exibido na folha de aprovação.
%    \begin{macrocode}
\newcommand\avaliadorii[1]{%
	\renewcommand\@avaliadorii{#1}
}

%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\@avaliadorext}
% Macro utilizada como variávei que contém o nome do avaliador externo da banca, se houver.
%    \begin{macrocode}
\newcommand\@avaliadorext{}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\avaliadorext}
%\changes{v1.2.0}{2018/11/22}{Nova macro}
% Redefine o conteúdo da macro |\@avaliadorext|, cujo conteúdo é exibido na folha de aprovação, se a macro contiver algum texto.
%    \begin{macrocode}
\newcommand\avaliadorext[1]{%
	\renewcommand\@avaliadorext{#1}
}

%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\imprimirfolhadeaprovacao}
%\changes{v1.1.2}{2018/09/28}{Removido o nome do orientador abaixo da natureza do trabalho}
%\changes{v1.2.0}{2018/11/22}{Modificados os argumentos da função e o layout gerado}
% Imprime a folha de aprovação.
%    \begin{macrocode}
\newcommand{\imprimirfolhadeaprovacao}[2][\imprimirinstituicao]{%
	\begin{folhadeaprovacao}%
		\begin{center}%
			\bfseries %
			\ABNTEXchapterfont %
			\expandafter\uppercase\expandafter{\theauthor} \par %
			\vfill
			\expandafter\uppercase\expandafter{\thetitle}\par %
		\end{center}
		\abntex@ifnotempty{\imprimirpreambulo}{%
			\hspace{.45\textwidth} %
			\begin{minipage}{.5\textwidth}%
				\mdseries%
				\SingleSpacing%
				\imprimirpreambulo%
				\vspace{24pt} \par %
				\bfseries Aprovado(a) em #2 %
			\end{minipage}%
		}
		\vfill		
		\flushbottom
		\noindent\textbf{Banca Examinadora} %
		\begin{SingleSpace} %
			\vspace*{\ABNTEXsignskip}%
			\noindent%
			\imprimirorientador\\
			\imprimirinstituicao
			\ifthenelse{\not\equal{\@avaliadori}{}}{%
				\par
				\vspace*{\ABNTEXsignskip}%
				\noindent\@avaliadori\\
				\imprimirinstituicao
			}{}
			\ifthenelse{\not\equal{\@avaliadorii}{}}{%
				\par
				\vspace*{\ABNTEXsignskip}%
				\noindent\@avaliadorii\\
				\imprimirinstituicao
			}{}
			\ifthenelse{\not\equal{\@avaliadorext}{}}{%
				\par
				\vspace*{\ABNTEXsignskip}
				\noindent\@avaliadorext\\
				#1 %
			}{}
		\end{SingleSpace} %
	\end{folhadeaprovacao} %
}

%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\incluirimagem}
% Inserção de uma figura com descrição e fonte.
%    \begin{macrocode}
\newcommand{\incluirimagem}[4][1]{%
	\caption{#3}%
	\adjustimage{scale=#1,fbox=1.5pt {\fboxsep} 1pt,gstore width=\larguraimagem,center}{#2}
	\fonte[\larguraimagem-14pt]{#4}
}

%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\incluirimagem*}
%\changes{v1.2.0}{2018/11/22}{Nova macro}
% Inserção de uma figura sem descricão, apenas com fonte.
%    \begin{macrocode}
\WithSuffix\newcommand\incluirimagem*[3][1]{%
	\adjustimage{scale=#1,fbox=1.5pt {\fboxsep} 1pt,gstore
	width=\larguraimagem,center}{#2}
	\fonte[\larguraimagem-14pt]{#3}
}

%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\incluirsiglas}
% Inclusão do arquivo para a lista de siglas.
% A macro só é definida se a opção |siglas| tiver sido habilitada.
%    \begin{macrocode}
\ifthenelse{\boolean{@siglasAtivo}}{%
	\newcommand{\incluirsiglas}[1]{%
	\GlsXtrLoadResources[%
		src  = {#1},
		sort = {pt-BR},
		type = {acronym},
		entry-type-aliases={% make @foreignabbreviation act like @abbreviation
			foreignabbreviation=abbreviation},
		field-aliases={%
			foreignlong=user1,
			nativelong=long},
		category={same as original entry}% requires bib2gls v1.4+
		]
	}%
%    \end{macrocode}
%\begin{macro}{\listofsiglas*}
% Exibição da lista de siglas.
% Também só é definida com a opção |siglas| habilitada.\\
% Por algum motivo, o comando |\printunsrtglossary| incrementa o contador table em uma unidade.
% Por isso foi preciso utilizar a instrução para decrementá-lo logo em seguida.\\
% O comando foi criado com * para manter o padrão dos outros comandos de lista utilizados.
%    \begin{macrocode}
	\WithSuffix\newcommand\listofsiglas*{%
		\pdfbookmark[0]{\listadesiglasname}{loa}
		\printunsrtglossary[type=acronym,title=\listadesiglasname]%
		\addtocounter{table}{-1}%
	}%
}{}

%    \end{macrocode}
%\end{macro}
%\end{macro}
%
%\begin{macro}{\incluirsimbolos}
% Inclusão do arquivo para a lista de símbolos.
% A macro só é definida se a opção |simbolos| tiver sido habilitada.
%    \begin{macrocode}
\ifthenelse{\boolean{@simbolosAtivo}}{%
	\newcommand{\incluirsimbolos}[1]{%
		\GlsXtrLoadResources[%
		src = {#1},
		sort = {use},
		type = {symbols}
		]%
	}%
%    \end{macrocode}
%\begin{macro}{\listofsimbolos*}
% Exibição da lista de símbolos.
% Também só é definida com a opção |simbolos| habilitada.\\
% Por algum motivo, o comando |\printunsrtglossary| incrementa o contador table em uma unidade.
% Por isso foi preciso utilizar a instrução para decrementá-lo logo em seguida.\\
% O comando foi criado com * para manter o padrão dos outros comandos de lista utilizados.
%    \begin{macrocode}
	\WithSuffix\newcommand\listofsimbolos*{%
		\pdfbookmark[0]{\listadesimbolosname}{los}
		\printunsrtglossary[type=symbols,title=\listadesimbolosname]%
		\addtocounter{table}{-1}% 
	}%
}{}
%    \end{macrocode}
%\end{macro}
%\end{macro}
%
%\Finale
%\PrintChanges
%\PrintIndex
