Something went wrong on our end
-
Carlos Maziero authoredCarlos Maziero authored
ppginf.cls 13.16 KiB
%------------------------------------------------------------------------------
% EM USO NORMAL, ESTE ARQUIVO NÃO DEVE SER MODIFICADO!
% Esta classe define o padrão para dissertações, teses e documentos
% correlatos produzidos no Programa de Pós-Graduação em Informática
% da Universidade Federal do Paraná, em Curitiba PR.
%
% Esta classe segue o modelo da classe "book" e aceita todas as suas opções.
% Ela também define as seguintes opções específicas:
%
% defesa: versão prévia (só frente, espaçamento 1.5,)
% final: versão final (frente/verso, espaçamento 1, páginas complementares)
% Os seguintes ambientes e comandos também são definidos:
%
% \descr{...} : descrição do documento na folha de rosto
% \instit{short}{long} : instituição (abreviado e por extenso)
% \advisor{Nome} : define o orientador
% \coadvisor{Nome} : define o coorientador, se houver
% \field{Área} : define a área de concentração da pesquisa
% \local{Cidade} : define o local da defesa
% \keywords{}{}... : define três palavras-chave e três keywords
% \coverimage{} : define a imagem de fundo da capa
% \begin{resumo} : define a página de resumo
% \begin{abstract} : define a página de abstract
% \begin{agradece} : define a página de agradecimentos
% \begin{dedica} : define a página de dedicatória
% \begin{ficha} : define a ficha catalográfica
% \begin{aprovacao} : define a folha de aprovação
%
% Software fornecido sob a licença GNU GPL. Pode ser usada e modificada
% livremente, desde que mantidas as informações deste cabeçalho.
%
% Autoria: prof. Carlos A. Maziero, DInf/UFPR (maziero@inf.ufpr.br)
%------------------------------------------------------------------------------
% definição da classe e versão
\ProvidesClass{ppginf}[2017/10/15 Manuscript class for PPGInf/UFPR]
\def\@classversion{0.9.7}
%------------------------------------------------------------------------------
% opções desta classe
% define flag de versão final do documento
\newif\iffinalmode
% defesa: só frente, espaçamento 1,5 e menos páginas iniciais
\DeclareOption{defesa}{\finalmodefalse}
% aprovada: frente/verso, espaçamento 1 e mais páginas iniciais
\DeclareOption{final}{\finalmodetrue}
% demais opções devem ser encaminhadas à classe de base (book)
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{book}}
% processa as opcoes definidas acima
\ProcessOptions
%------------------------------------------------------------------------------
%% Carregar a classe de base
\iffinalmode
\if@twoside
\LoadClass[12pt,a4paper,twoside]{book} % twoside na final
\else%
\LoadClass[12pt,a4paper,oneside]{book} % oneside na final
\fi
\else
\if@twoside
\LoadClass[12pt,a4paper,twoside]{book} % twoside na defesa
\else%
\LoadClass[12pt,a4paper,oneside]{book} % oneside na defesa
\fi
\fi
%------------------------------------------------------------------------------
%% Ajustes no layout geral do texto
% dimensões da página e margens
\RequirePackage{geometry}
\geometry{a4paper}
\geometry{right=2cm,left=2cm,top=3cm,bottom=2cm}
\geometry{bindingoffset=1cm}
% para mudar o título dos capítulos para "1. Introdução", etc
% ATENCAO: https://tex.stackexchange.com/questions/299969/titlesec-loss-of-section-numbering-with-the-new-update-2016-03-15
%\RequirePackage{titlesec}
%\titleformat{\chapter}[hang]
%{\huge\bfseries}{\thechapter.}{1em}{\Huge\bfseries}
% indentar o primeiro parágrafo (português) em 15mm
\RequirePackage{indentfirst}
\setlength{\parindent}{15mm}
% indentar listas de itens alinhadas aos parágrafos
\usepackage{enumitem}
\setlist[1]{leftmargin=\parindent}
\setlist[2]{leftmargin=0.5\parindent}
% corrigir recuos nos ambientes quote e quotation
\renewenvironment{quotation}{%
\list{}{%
\leftmargin=\parindent%
\rightmargin=\parindent%
\listparindent 0.5\parindent%
\itemindent \listparindent
\rightmargin \leftmargin
\parsep \z@ \@plus\p@}%
\item\relax}
{\endlist}
\renewenvironment{quote}{%
\list{}{%
\leftmargin=\parindent%
\rightmargin=\parindent%
\rightmargin\leftmargin%
}%
\item\relax}%
{\endlist}
% aumentar o espaço entre a legenda e a tabela
\usepackage{caption}
\captionsetup[table]{skip=10pt}
% espaçamento entre linhas
\RequirePackage{setspace}
\iffinalmode
\singlespacing % final: espaçamento 1
\else
\onehalfspacing % default: espaçamento 1.5
\fi
% relaxar o espaçamento entre caracteres
\sloppy
% impedir linhas órfãs/viúvas (linhas isoladas no início/fim de uma página)
\clubpenalty=10000
\widowpenalty=10000
\displaywidowpenalty 10000
\raggedbottom
% sumário: adiciona entrada para bibliografia e remove entradas
% de sumário, lista de figuras e lista de tabelas.
\RequirePackage[nottoc,notlot,notlof]{tocbibind}
% usar URLs na bibliografia (precisa ficar aqui pois conflita com outros pacotes)
\usepackage[obeyspaces,hyphens]{url}
% para adicionar imagem de fundo à capa
\RequirePackage{wallpaper}
%------------------------------------------------------------------------------
% CONTROLE DE NUMERAÇÃO DE PÁGINAS
% formatação de cabeçalho e rodapé
\RequirePackage{fancyhdr}
\setlength{\headheight}{15pt}
% sem linhas separadoras para cabeçalho e rodapé
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
% Contra todas as normas tipográficas, a biblioteca da UFPR exige que a numeração
% da introdução leve em conta as páginas preliminares (ou seja, não comece em 1).
% Caso as regras de sua universidade sejam "normais", comente as linhas abaixo.
\renewcommand\pagenumbering[1]{%
%\global\c@page\@ne % this resets the counter
\gdef\thepage{\csname @#1\endcsname\c@page}%
}
% define o estilo de página do preâmbulo (páginas iniciais) do documento
\fancypagestyle{frontmatter}{
\fancyhf{}
}
% define o estilo de página do corpo do documento (capítulos)
\fancypagestyle{mainmatter}{
\fancyhf{}
\if@twoside
\fancyhead[LE,RO]{\thepage}
\else
\fancyhead[R]{\thepage}
\fi
}
% define o estilo default "plain" como nulo nas páginas iniciais (frontmatter)
% e igual a mainmatter no corpo do documento (para por números de página na
% primeira página de cada capítulo).
\fancypagestyle{plain}{
\fancyhf{}
\if@mainmatter
\if@twoside
\fancyhead[LE,RO]{\thepage}
\else
\fancyhead[R]{\thepage}
\fi
\fi
}
%------------------------------------------------------------------------------
% CONTROLE DO PDF GERADO
% pacotes para gerar um arquivo PDF "rico" (bookmarks, links, metadados)
\RequirePackage[plainpages,pdfpagelabels]{hyperref} % PDF com links, metadados
\RequirePackage{bookmark} % cria um índice no PDF
% ajustar metadados e propriedades do PDF gerado
\hypersetup{
% pdftitle, author, etc definidos mais abaixo
% bookmarks = true,
% pageanchor = false,
hypertexnames = false,
% bookmarkstype = page,
pdfview = Fit,
pdfborder = {0 0 0},
colorlinks = false,
linkcolor = blue,
anchorcolor = blue,
citecolor = blue,
filecolor = blue,
% pagecolor = blue,
urlcolor = blue
}
\RequirePackage{microtype} % melhorar a qualidade da tipografia no PDF
%------------------------------------------------------------------------------
% COMANDOS PARA DEFINIÇÕES FEITAS NO MAIN.TEX
% definição de autor, orientador, local, área, palavras-chave, etc
% valores default (não mudá-los, pois poderão ser testados em macros)
\def\@advisor{} % orientador
\def\@coadvisor{} % coorientador
\def\@field{} % área de concentração
\def\@local{} % local
\def\@descr{} % descrição do documento
\def\@instshort{undef} % instituição (abreviação)
\def\@instlong{undef} % instituição (por extenso)
\def\@pcs{} % palavras-chave
\def\@kws{} % keywords
\def\@coverimg{} % imagem de fundo da capa
% instituição
\newcommand{\instit}[2]{
\def\@instshort{#1}
\def\@instlong{#2}
}
% descrição do documento na folha de rosto
\newcommand{\descr}[1]{\def\@descr{#1}}
% orientadores
\newcommand{\advisor}[1]{\def\@advisor{#1}}
\newcommand{\coadvisor}[1]{\def\@coadvisor{#1}}
% área/tema do texto
\newcommand{\field}[1]{\def\@field{#1}}
% local (cidade)
\newcommand{\local}[1]{\def\@local{#1}}
% palavras-chave em português e inglês
\newcommand{\pchave}[1]{\def\@pcs{#1}}
\newcommand{\keyword}[1]{\def\@kws{#1}}
% imagem de fundo da capa
\newcommand{\coverimage}[1]{\def\@coverimg{#1}}
%------------------------------------------------------------------------------
% AMBIENTES DA PARTE INICIAL DO DOCUMENTO
% ambiente resumo
\newenvironment{resumo}
{
\clearpage
% \phantomsection
% \addcontentsline{toc}{chapter}{Resumo}
\begin{center}
{\huge\textbf{Resumo}}
\end{center}
\vspace{0.5ex}
}{
% somente mostrar palavras-chave se estiverem definidas
\ifx\@pcs\@empty
\else
\vspace{4ex}
\noindent\textbf{Palavras-chave:} {\@pcs}.
\fi
\vfill
\cleardoublepage
}
% ambiente abstract
\newenvironment{abstract}
{
\clearpage
% \phantomsection
% \addcontentsline{toc}{chapter}{Abstract}
\begin{center}
{\huge\textbf{Abstract}}
\end{center}
\vspace{0.5ex}
}{
% somente mostrar keywords se estiverem definidas
\ifx\@kws\@empty
\else
\vspace{4ex}
\noindent\textbf{Keywords:} {\@kws}.
\fi
\vfill
\cleardoublepage
}
% ambientes agradecimentos e dedicatória (só na versão aprovada)
\iffinalmode
% ambiente da ficha catalográfica
\newenvironment{ficha}{}{\cleardoublepage}
% ambiente da folha de aprovação
\newenvironment{aprovacao}{}{\cleardoublepage}
% ambiente de agradecimentos
\newenvironment{agradece}
{
\begin{center}
{\huge\textbf{Agradecimentos}}
\end{center}
\vspace{0.5ex}
}{
\vfill
\cleardoublepage
}
% ambiente de dedicatória
\newenvironment{dedica}
{
\vspace*{\fill}
\hfill
\begin{minipage}[t]{6cm}
\em
}{
\end{minipage}
\cleardoublepage
}
\else
% Na versão de defesa, esses ambientes não geram nada
\newenvironment{ficha}{\comment}{\endcomment}
\newenvironment{agradece}{\comment}{\endcomment}
\newenvironment{dedica}{\comment}{\endcomment}
\newenvironment{aprovacao}{\comment}{\endcomment}
\fi
% lista de acrônimos (siglas e abreviações)
\newenvironment{listaacron}
{
\chapter*{Lista de Acr\^onimos}
% \phantomsection
% \addcontentsline{toc}{chapter}{Lista de Acr\^onimos}
}{
\vfill
\cleardoublepage
}
% lista de símbolos
\newenvironment{listasimb}
{
\chapter*{Lista de S\'{\i}mbolos}
% \phantomsection
% \addcontentsline{toc}{chapter}{Lista de S\'{\i}mbolos}
}{
\vfill
\cleardoublepage
}
%------------------------------------------------------------------------------
% CONSTRUÇÃO DAS PÁGINAS INICIAIS
\renewcommand{\titlepage}
{
% ajustar tags do PDF final (só funciona bem se estiver aqui)
\hypersetup{
pdftitle = {\@title},
pdfauthor = {\@author},
pdfsubject = {\@field},
pdfproducer = {\@instshort\ - \@instlong},
pdfcreator = {LaTeX, using PPGInf class V. \@classversion},
pdfkeywords = {\@pcs, \@kws}
}
% PRIMEIRA CAPA (SÓ NA VERSÃO APROVADA)
\iffinalmode
% \phantomsection
% \thispagestyle{empty}
% imagem de fundo da capa, se estiver definida em main.tex
\ifx\@coverimg\@empty
\else
\ThisCenterWallPaper{1.0}{\@coverimg}
\fi
% conteúdo da capa
\begin{center}
\begin{doublespace}
\textsc{\Large\@instlong}
\\
\vspace{3cm}
\textsc{\Large\@author}
\\
\vfill
\DeclareRobustCommand\\{\linebreak}
\textsc{\Large\@title}
\vfill
\textsc{\Large\@local\\\@date}
\end{doublespace}
\end{center}
\cleardoublepage
% reiniciar numeração de páginas, para não contar a capa;
% segundo a bib@UFPR a capa final não deve contar como página
\setcounter{page}{1}
\fi
% FOLHA DE ROSTO
\clearpage
% \phantomsection
% \addcontentsline{toc}{chapter}{Rosto}
% \thispagestyle{empty}
% autor
\begin{center}
\textsc{\Large\@author}
\end{center}
\vfill\vfill
% título
\begin{doublespace}
\begin{center}
\DeclareRobustCommand\\{\linebreak }
\textsc{\Large\@title}
\end{center}
\end{doublespace}
% na versão de defesa, indicar data de compilação do documento
\iffinalmode
\else
\begin{small}
\begin{center}
(\emph{vers\~ao pr\'e-defesa, compilada em \today})
\end{center}
\end{small}
\fi
\vspace{1cm}
% construção do selo descritivo
\hfill
\begin{minipage}{9cm}
% descrição do documento, se estiver definida em main.tex
\ifx\@descr\@empty
\else
\@descr.
\fi
% área de concentração, se estiver definida em main.tex
\ifx\@field\@empty
\else
\vspace{1em}
\'Area de concentra\c{c}\~ao: \emph{\@field}.
\fi
% orientador, se estiver definido em main.tex
\ifx\@advisor\@empty
\else
\vspace{1em}
Orientador: \@advisor.
\fi
% coorientador, se estiver definido em main.tex
\ifx\@coadvisor\@empty
\else
\vspace{1em}
Coorientador: \@coadvisor.
\fi
\end{minipage}
\vfill
% local e data
\begin{center}
\begin{doublespace}
\textsc{\Large\@local\\\@date}
\end{doublespace}
\end{center}
% that's all, folks!
\cleardoublepage
}
%------------------------------------------------------------------------------