eletrotupi / tcc/ monografia/textsi.cls3a9bb1a4b14edcfdaa020cfe24a371c731f83cc0
34.0 KB | 1009 lines Raw
1
%==============================================================================
2
% Identificação
3
%==============================================================================
4
\def\currversion{3/5/2014}
5

6
\typeout{^^J^^J
7
--------------------------------------------------^^J
8
CLASSE textsi^^J
9
Formatação de Documentos LaTeX do TSI^^J
10
--------------------------------------------------^^J
11
Agradecimentos^^J
12
Marilton Aguiar, pela Classe de Formatação de Documentos LaTeX da UFPEL^^J
13
Rafael Krolow, pelo esqueleto de Template para o Documento LaTeX par o TSI^^J
14
--------------------------------------------------^^J
15
Desenvolvimento por Giovane de Oliveira Torres (ggiovaneotorres@gmail.com)^^J
16
--------------------------------------------------^^J
17
Versão: \currversion^^J
18
--------------------------------------------------^^J^^J}
19

20
\NeedsTeXFormat{LaTeX2e}
21
\ProvidesClass{textsi}[\currversion]
22

23
%==============================================================================
24
% Declaração de opções
25
%==============================================================================
26

27
% Órgãos para o cabeçalho do título.
28

29
\newcommand{\ministerio}[1]{\gdef\@ministerio{#1}}
30
\ministerio{Minist{\'e}rio da Educa\c c{\~a}o}
31

32
\newcommand{\secretaria}[1]{\gdef\@secretaria{#1}}
33
\secretaria{Secretaria de Educa\c c{\~a}o Profissional e Tecnol{\'o}gica}
34

35
\newcommand{\instituto}[1]{\gdef\@instituto{#1}}
36
\instituto{Instituto Federal Sul-Rio-Grandense}
37

38
\newcommand{\campus}[1]{\gdef\@campus{#1}}
39
\campus{C{\^a}mpus Pelotas}
40

41
\newcommand{\thecurso}[1]{\gdef\@thecurso{#1}}
42
\thecurso{Curso Superior de Tecnologia em Sistemas para Internet}
43

44
\newcommand{\documento}[1]{\gdef\@documento{#1}}
45
\newcommand{\tipodocumento}[1]{\gdef\@tipodocumento{#1}}
46
\newcommand{\descricaodocumento}[1]{\gdef\@descricaodocumento{#1}}
47

48
% Para a folha de aprovação
49

50
\newcommand{\instituicaoadvisor}[1]{\gdef\@instituicaoadvisor{#1}}
51

52
\newcommand{\membroi}[1]{\gdef\@membroi{#1}}
53
\newcommand{\membroii}[1]{\gdef\@membroii{#1}}
54
\newcommand{\membroiii}[1]{\gdef\@membroiii{#1}}
55

56
\newcommand{\instituicaomembroi}[1]{\gdef\@instituicaomembroi{#1}}
57
\newcommand{\instituicaomembroii}[1]{\gdef\@instituicaomembroii{#1}}
58
\newcommand{\instituicaomembroiii}[1]{\gdef\@instituicaomembroiii{#1}}
59

60
% Para o texto
61

62
\newcommand{\source}[1]{\\ Fonte: #1}
63

64
\newcommand{\sourcecode}[1]{%
65
  \smallskip
66
  {\centering Fonte: #1\par}%
67
}
68

69
% Opções
70

71
\DeclareOption{tcc}{
72
\documento{Trabalho de Conclus{\~a}o de Curso}
73
\tipodocumento{Trabalho de Conclus{\~a}o de Curso (\@nomecurso) -- \@unidade}
74
\descricaodocumento{Trabalho de Conclus{\~a}o de Curso apresentado como requisito parcial {\`a} obten\c c{\~a}o ao t{\'i}tulo de tecn{\'o}logo em Sistemas para Internet do Instituto Federal Sul-Rio-Grandense}
75
}
76

77
\newcommand{\capa}[1]{\gdef\@capa{#1}}
78
\DeclareOption{capa}{\capa{1}}
79

80
\newcommand{\nocipinfo}[1]{\gdef\@nocipinfo{#1}}
81
\DeclareOption{nocipinfo}{\nocipinfo{1}}
82

83
\DeclareOption{english}{\@englishtrue\OptionNotUsed}\newif\if@english
84
\DeclareOption{oneside}{\AtEndOfClass{\@twosidefalse}\OptionNotUsed}
85
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{report}}
86
\ProcessOptions
87
\relax
88

89
%==============================================================================
90
% Herança da classe `report' e inclusão de pacotes e arquivos necessários
91
%==============================================================================
92
\LoadClass[12pt,a4paper,oneside]{report}
93

94
\RequirePackage[english,brazilian]{babel}
95
\RequirePackage{ulem}
96
\RequirePackage{lastpage}
97
\RequirePackage{indentfirst}
98
\RequirePackage{natbib}
99
\RequirePackage{chngcntr}
100
\RequirePackage{eso-pic}
101
\RequirePackage{xcolor}
102
\RequirePackage{setspace}
103
\RequirePackage{geometry}
104
\RequirePackage{listings}
105

106
\geometry{top=3cm,right=2cm,left=3cm,bottom=2cm}
107

108
\definecolor{laranjaufpel}{rgb}{1,0.6,0}
109
\definecolor{verdeufpel}{rgb}{0.09,0.7,0.44}
110
\definecolor{azulufpel}{rgb}{0.07,0.49,0.72}
111
\definecolor{cinzaufpel}{rgb}{0.85,0.85,0.85}
112

113
%==============================================================================
114
% Configuração de listagens de código (pacote listings)
115
%==============================================================================
116
\lstdefinelanguage{yaml}{
117
  keywords={image,build,context,file,ports,environment,volumes,depends_on,
118
            condition,healthcheck,test,interval,timeout,retries,start_period,
119
            restart,command,shm_size,user,push,tags,labels,services,options},
120
  sensitive=false,
121
  comment=[l]{\#},
122
  morestring=[b]",
123
  morestring=[b]',
124
}
125

126
\lstdefinelanguage{javascript}{
127
  keywords={async,await,break,case,catch,class,const,continue,debugger,default,
128
            delete,do,else,export,extends,false,finally,for,function,if,import,
129
            in,instanceof,let,new,null,of,return,static,super,switch,this,throw,
130
            true,try,typeof,var,void,while,with,yield},
131
  otherkeywords={=>},
132
  sensitive=true,
133
  comment=[l]{//},
134
  morecomment=[s]{/*}{*/},
135
  morestring=[b]",
136
  morestring=[b]',
137
  morestring=[b]`,
138
}
139

140
\lstdefinelanguage{typescript}{
141
  keywords={abstract,any,as,async,await,boolean,break,case,catch,class,const,
142
            continue,debugger,declare,default,delete,do,else,enum,export,
143
            extends,false,finally,for,from,function,get,if,implements,import,
144
            in,infer,instanceof,interface,keyof,let,module,namespace,never,
145
            new,null,number,object,of,override,private,protected,public,readonly,
146
            return,set,static,string,super,switch,symbol,this,throw,true,try,
147
            type,typeof,undefined,unique,unknown,var,void,while,with,yield},
148
  otherkeywords={=>,:},
149
  sensitive=true,
150
  comment=[l]{//},
151
  morecomment=[s]{/*}{*/},
152
  morecomment=[s]{/**C@}{*/},
153
  morestring=[b]",
154
  morestring=[b]',
155
  morestring=[b]`,
156
}
157

158
\lstset{
159
  language=yaml,
160
  basicstyle=\ttfamily\small,
161
  keywordstyle=\color{azulufpel}\bfseries,
162
  commentstyle=\color{verdeufpel}\itshape,
163
  stringstyle=\color{laranjaufpel},
164
  backgroundcolor=\color{cinzaufpel!35},
165
  rulecolor=\color{azulufpel},
166
  frame=single,
167
  framerule=0.6pt,
168
  numbers=left,
169
  numberstyle=\tiny\color{black!60},
170
  numbersep=8pt,
171
  showstringspaces=false,
172
  breaklines=true,
173
  columns=fullflexible,
174
  captionpos=t,
175
  tabsize=2,
176
}
177

178
\renewcommand*{\l@lstlisting}{\@dottedtocline{1}{0em}{5.5em}}
179

180
%
181
% definições para textos em português
182
%
183
\@namedef{captionsbrazilian}{%
184
  \def\bibname{Refer{\^e}ncias}%
185
  \def\abstractname{Resumo}%
186
  \def\appendixname{Ap{\^e}ndice}%
187
  \def\appendicesname{Ap{\^e}ndices}%
188
  \def\contentsname{Sum{\'a}rio}%
189
  \def\listfigurename{Lista de Ilustra\c{c}{\~o}es}%
190
  \def\listtablename{Lista de Tabelas}%
191
  \def\figurename{Figura}%
192
  \def\tablename{Tabela}%
193
  \def\advisorname{Orientador}%
194
  \def\coadvisorname{Coorientador}%
195
  \def\collaboratorname{Colaborador}%
196
  \def\listabbrvname{Lista de Abreviaturas e Siglas}%
197
  \def\listsymbolname{Lista de S{\'\i}mbolos}%
198
  \def\annexname{Anexo}%
199
  \def\annexesname{Anexos}%
200
  \def\keywordsname{Palavras-chave}%
201
  \def\lstlistingname{C{\'o}digo}%
202
  \def\lstlistlistingname{Lista de C{\'o}digos}%
203
}
204

205
\@namedef{datebrazilian}{%
206
  \def\monthname{%
207
    \ifcase\month\or%
208
    janeiro\or fevereiro\or mar{\c{c}}o\or abril\or maio\or junho\or
209
    julho\or agosto\or setembro\or outubro\or novembro\or dezembro%
210
    \fi%
211
  }%
212
  \def\ei@date{\@publyear}%
213
  % \def\ei@date{\@publmonth\ de~\@publyear}%
214
}
215

216
%
217
% definições para textos em inglês
218
%
219
\@namedef{captionsenglish}{%
220
  \def\bibname{References}%
221
  \def\abstractname{Abstract}%
222
  \def\appendixname{Appendix}%
223
  \def\appendicesname{Appendices}%
224
  \def\contentsname{Contents}%
225
  \def\listfigurename{List of Figures}%
226
  \def\listtablename{List of Tables}%
227
  \def\figurename{Figure}%
228
  \def\tablename{Table}%
229
  \def\advisorname{Advisor}%
230
  \def\coadvisorname{Coadvisor}%
231
  \def\collaboratorname{Collaborator}%
232
  \def\listabbrvname{List of Abbreviations and Acronyms}%
233
  \def\listsymbolname{List of Symbols}%
234
  \def\annexname{Annex}%
235
  \def\annexesname{Annexes}%
236
  \def\keywordsname{Keywords}%
237
  \def\lstlistingname{Listing}%
238
  \def\lstlistlistingname{List of Listings}%
239
}
240

241
\@namedef{dateenglish}{%
242
  \def\monthname{%
243
    \ifcase\month\or%
244
    January\or February\or March\or April\or May\or June\or July\or
245
    August\or September\or October\or November\or December%
246
    \fi%
247
  }%
248
  \def\ei@date{\@publyear}%
249
  % \def\ei@date{\@publmonth~\@publyear}%
250
}
251

252
\if@english%
253
\selectlanguage{english}%
254
\AtBeginDocument{\selectlanguage{english}}%
255
\fi
256

257
%==============================================================================
258
% O uso de fonte Arial, 12 pt, é mandatório
259
%==============================================================================
260
\renewcommand*\familydefault{\sfdefault}%
261
\renewcommand{\rmdefault}{phv}%
262
\renewcommand{\sfdefault}{phv}
263

264
% Definição do espaçamento de texto
265
\setlength{\baselineskip}{1.5cm}
266

267
%----------------------------------------
268
% PARÁGRAFOS
269
%----------------------------------------
270
% Tamanho da endentação do parágrafo
271
\setlength{\parindent}{1.3cm}
272
% Espaçamento entre um parágrafo e outro
273
\setlength{\parskip}{1.5pt}
274

275

276
%==============================================================================
277
% Numeração das páginas
278
%==============================================================================
279
\def\ps@texufpel{%
280
  \let\@oddfoot\@empty%
281
  \let\@evenfoot\@empty%
282
  \def\@oddhead{\hspace*{\fill}{\small\thepage}}%
283
  \def\@evenhead{\hspace*{\fill}{\small\thepage}}%
284
}
285

286
\pagestyle{empty}%
287
\let\ps@plain\ps@empty
288

289
%==============================================================================
290
% Definição de autor(es), orientador e co-orientador
291
%==============================================================================
292
\newcounter{ei@authorcount}
293
\renewcommand{\author}[2]{
294
        \addtocounter{ei@authorcount}{1}
295
        \expandafter\gdef\csname @author\alph{ei@authorcount}last\endcsname{#1}
296
        \expandafter\gdef\csname @author\alph{ei@authorcount}first\endcsname{#2}
297
        \expandafter\gdef\csname @author\alph{ei@authorcount}\endcsname{#2 #1}
298
}
299

300
\newcounter{ei@advisorcount}
301
\DeclareRobustCommand{\advisor}[3][]{
302
        \addtocounter{ei@advisorcount}{1}
303
        \expandafter\gdef\csname @advisor\alph{ei@advisorcount}last\endcsname{#2}
304
        \expandafter\gdef\csname @advisor\alph{ei@advisorcount}first\endcsname{#3}
305
        \expandafter\gdef\csname @advisor\alph{ei@advisorcount}\endcsname{#1~#3 #2}
306
}
307

308
\newcounter{ei@coadvisorcount}
309
\DeclareRobustCommand{\coadvisor}[3][]{
310
        \addtocounter{ei@coadvisorcount}{1}
311
        \expandafter\gdef\csname @coadvisor\alph{ei@coadvisorcount}last\endcsname{#2}
312
        \expandafter\gdef\csname @coadvisor\alph{ei@coadvisorcount}first\endcsname{#3}
313
        \expandafter\gdef\csname @coadvisor\alph{ei@coadvisorcount}\endcsname{#1~#3 #2}
314
}
315

316
\newcounter{ei@collaboratorcount}
317
\DeclareRobustCommand{\collaborator}[3][]{
318
        \addtocounter{ei@collaboratorcount}{1}
319
        \expandafter\gdef\csname @collaborator\alph{ei@collaboratorcount}last\endcsname{#2}
320
        \expandafter\gdef\csname @collaborator\alph{ei@collaboratorcount}first\endcsname{#3}
321
        \expandafter\gdef\csname @collaborator\alph{ei@collaboratorcount}\endcsname{#1~#3 #2}
322
}
323

324

325
%==============================================================================
326
% Definição das palavras-chave (máx. 10)
327
%==============================================================================
328
\newcounter{kwcounter}
329
\newcommand{\keyword}[1]{
330
        \addtocounter{kwcounter}{1}
331
        \expandafter\gdef\csname keyw\alph{kwcounter}\endcsname{#1}
332
}
333

334
\newcommand{\@cipkw}{%
335
        \@ifundefined{keywa}{}{1.~\expandafter\MakeUppercase\keywa\@. }%
336
        \@ifundefined{keywb}{}{2.~\expandafter\MakeUppercase\keywb\@. }%
337
        \@ifundefined{keywc}{}{3.~\expandafter\MakeUppercase\keywc\@. }%
338
        \@ifundefined{keywd}{}{4.~\expandafter\MakeUppercase\keywd\@. }%
339
        \@ifundefined{keywe}{}{5.~\expandafter\MakeUppercase\keywe\@. }%
340
        \@ifundefined{keywf}{}{6.~\expandafter\MakeUppercase\keywf\@. }%
341
        \@ifundefined{keywg}{}{7.~\expandafter\MakeUppercase\keywg\@. }%
342
        \@ifundefined{keywh}{}{8.~\expandafter\MakeUppercase\keywh\@. }%
343
        \@ifundefined{keywi}{}{9.~\expandafter\MakeUppercase\keywi\@. }%
344
        \@ifundefined{keywj}{}{10.~\expandafter\MakeUppercase\keywj\@. }%
345
}
346

347
\newcommand{\@abstractkw}{%
348
        \@ifundefined{keywa}{}{\expandafter\MakeUppercase\keywa}%
349
        \@ifundefined{keywb}{}{, \keywb}%
350
        \@ifundefined{keywc}{}{, \keywc}%
351
        \@ifundefined{keywd}{}{, \keywd}%
352
        \@ifundefined{keywe}{}{, \keywe}%
353
        \@ifundefined{keywf}{}{, \keywf}%
354
        \@ifundefined{keywg}{}{, \keywg}%
355
        \@ifundefined{keywh}{}{, \keywh}%
356
        \@ifundefined{keywi}{}{, \keywi}%
357
        \@ifundefined{keywj}{}{, \keywj}%
358
}
359

360
%==============================================================================
361
% Redefinição da data (para ter mês e ano separados)
362
%==============================================================================
363
\renewcommand{\date}[2]{
364
        \gdef\@publmonth{#1}
365
        \gdef\@publyear{#2}
366
}
367
\date{\monthname}{\number\year}
368

369
%==============================================================================
370
% Definição padrão da folha de rosto.
371
% Os dados específicos do tipo de trabalho (dissertação, tese, etc.) são
372
% informados definindo-se o comando \titlepagespecificinfo. Veja os
373
% arquivos .def incluídos com a classe.
374
%==============================================================================
375

376
\newlength{\titlepagewinwidth}\setlength{\titlepagewinwidth}{95mm}
377
\newlength{\titlepagewinheight}\setlength{\titlepagewinheight}{64mm}
378
\newlength{\titlepagewinvoffset}\setlength{\titlepagewinvoffset}{112mm}
379

380
\newcommand{\location}[2]{
381
        \gdef\@city{#1}
382
        \gdef\@state{#2}
383
}
384

385
\location{Pelotas}{RS}
386

387
\renewcommand{\maketitle}{
388
\@ifundefined{@capa}{%
389
\begin{titlepage}
390
\thetitlepage
391
\end{titlepage}
392
\clearpage
393
\setcounter{page}{1}
394
}{%
395
\begin{titlepage}
396
\thecoverpage
397
\newpage
398
\thetitlepage
399
\end{titlepage}
400
\clearpage
401
\setcounter{page}{2}
402
}
403
}
404

405
\newcommand{\thecoverpage}{%
406
  \noindent%
407
  \parbox[b]{0.1\textwidth}{%
408
    \hspace{-2cm}%
409
    \includegraphics[width=3cm]{if}%
410
  }%
411
  \noindent%
412
    \parbox[b]{0.8\textwidth}{%
413
      \centering%
414
      \vskip 1cm%
415
      \MakeUppercase{\textbf{\@ministerio}}\\%
416
      \MakeUppercase{\textbf{\@secretaria}}\\%
417
      \MakeUppercase{\textbf{\@instituto}}\\%
418
      \MakeUppercase{\textbf{\@campus}}\\%
419
      \MakeUppercase{\textbf{\@thecurso}}\\%
420
      %\@unidade\\%
421
      %\@ifundefined{@nomecurso}{\@programa}{Curso de \@nomecurso}\\%
422
      \vskip 1cm%
423
      %\@documento\\%
424
      %\vskip 1cm%
425
    }%
426
  \parbox[b][][t]{0.1\textwidth}{%
427
    \includegraphics[scale=0.175]{tsi.png}%
428
  }%
429
  \noindent%
430
  \vskip 1cm%
431
  \noindent%
432
    \parbox[b]{\textwidth}{%
433
      \centering%
434
      \vskip .5cm%
435
      \textbf{{\@authora}\\
436
      \@ifundefined{@authorb}{}{\@authorb\\}%
437
      \@ifundefined{@authorc}{}{\@authorc\\}%
438
      \@ifundefined{@authord}{}{\@authord\\}}%
439
      \vskip .5cm%
440
    }%
441
  \vskip 3cm%
442
  \noindent%
443
    \parbox[b]{\textwidth}{%
444
      \centering%
445
      \vskip .5cm%
446
      \textbf{\@title}
447
      \vskip .5cm%
448
    }%
449
  \vskip 3cm%
450
  \noindent%
451
    \parbox[b]{\textwidth}{%
452
      \centering%
453
      \vskip .5cm%
454
      \textbf{\@documento}
455
      \vskip .5cm%
456
    }%
457
  \vfill%
458
  \noindent%
459
    \parbox[b]{\textwidth}{%
460
      \centering%
461
      \vskip .1cm%
462
      \textbf{\@city}\\
463
      \textbf{\ei@date}%
464
      \vskip .1cm%
465
    }%
466
}
467

468
\newcommand{\thetitlepage}{%
469
  \noindent%
470
  \parbox[b]{\textwidth}{%
471
    \centering%
472
    \@authora\\
473
    \@ifundefined{@authorb}{}{\@authorb\\}%
474
    \@ifundefined{@authorc}{}{\@authorc\\}%
475
    \@ifundefined{@authord}{}{\@authord\\}%
476
    \vskip 5cm%
477
    {\textbf{\@title}}%
478
  }
479
  \vskip 8cm%
480
  %\@ifundefined{titlepagespecificinfo}{}{%
481
    \hspace*{\fill}\makebox[.5\textwidth][l]{%
482
      \parbox[b]{8.5cm}{%
483
        \@descricaodocumento%
484
        \@ifundefined{@advisora}{}{%
485
          \vskip 1cm%
486
          \hspace{-0.25cm}
487
          \begin{tabular}{lp{.3675\textwidth}}
488
            \@ifundefined{@advisora}{}{
489
              \@ifundefined{@advisorb}{\advisorname:}{\advisorname es:} &
490
              \@ifundefined{@advisora}{}{\@advisora\\}
491
              \@ifundefined{@advisorb}{}{\ &}
492
              \@ifundefined{@advisorb}{}{\@advisorb\\}
493
              \@ifundefined{@advisorc}{}{\ &}
494
              \@ifundefined{@advisorc}{}{\@advisorc\\}
495
              \@ifundefined{@advisord}{}{\ &}
496
              \@ifundefined{@advisord}{}{\@advisord\\}}
497
            \@ifundefined{@coadvisora}{}{
498
               \@ifundefined{@coadvisorb}{\coadvisorname:}{\coadvisorname es:} &
499
               \@ifundefined{@coadvisora}{}{\@coadvisora\\}
500
              \@ifundefined{@coadvisorb}{}{\ &}
501
              \@ifundefined{@coadvisorb}{}{\@coadvisorb\\}
502
              \@ifundefined{@coadvisorc}{}{\ &}
503
              \@ifundefined{@coadvisorc}{}{\@coadvisorc\\}
504
              \@ifundefined{@coadvisord}{}{\ &}
505
              \@ifundefined{@coadvisord}{}{\@coadvisord\\}}
506
            \@ifundefined{@collaboratora}{}{
507
              \@ifundefined{@collaboratorb}{\collaboratorname:}{\collaboratorname es:} &
508
              \@ifundefined{@collaboratora}{}{\@collaboratora\\}
509
              \@ifundefined{@collaboratorb}{}{\ &}
510
              \@ifundefined{@collaboratorb}{}{\@collaboratorb\\}
511
              \@ifundefined{@collaboratorc}{}{\ &}
512
              \@ifundefined{@collaboratorc}{}{\@collaboratorc\\}
513
              \@ifundefined{@collaboratord}{}{\ &}
514
              \@ifundefined{@collaboratord}{}{\@collaboratord\\}}
515
          \end{tabular}
516
        }
517
      }
518
    }%
519
    \vfill%
520
  %}%
521
  \vfill%
522
  \centerline{\@city}%
523
  \centerline{\ei@date}%
524
}
525

526
\newcommand{\folhadeaprovacao}{%
527
  \clearpage%
528
  \noindent%
529
  \parbox[b]{\textwidth}{%
530
    \centering%
531
    \MakeUppercase{\@authora}\\%
532
    \vskip 5cm%
533
    \textbf{\MakeUppercase{\@title}}\\%
534
    \vskip 4cm%
535
  }
536
  \hspace*{\fill}\makebox[.5\textwidth][l]{%
537
    \parbox[b]{8.5cm}{%
538
      \@descricaodocumento%
539
      \@ifundefined{@advisora}{}{%
540
        \vskip 1cm%
541
        \hspace{-0.3cm}
542
        \begin{tabular}{lp{.3675\textwidth}}
543
          \@ifundefined{@advisora}{}{
544
            \@ifundefined{@advisorb}{\advisorname:}{\advisorname es:} &
545
            \@ifundefined{@advisora}{}{\@advisora\\}
546
            \@ifundefined{@advisorb}{}{\ &}
547
            \@ifundefined{@advisorb}{}{\@advisorb\\}
548
            \@ifundefined{@advisorc}{}{\ &}
549
            \@ifundefined{@advisorc}{}{\@advisorc\\}
550
            \@ifundefined{@advisord}{}{\ &}
551
            \@ifundefined{@advisord}{}{\@advisord\\}}
552
          \@ifundefined{@coadvisora}{}{
553
             \@ifundefined{@coadvisorb}{\coadvisorname:}{\coadvisorname es:} &
554
             \@ifundefined{@coadvisora}{}{\@coadvisora\\}
555
            \@ifundefined{@coadvisorb}{}{\ &}
556
            \@ifundefined{@coadvisorb}{}{\@coadvisorb\\}
557
            \@ifundefined{@coadvisorc}{}{\ &}
558
            \@ifundefined{@coadvisorc}{}{\@coadvisorc\\}
559
            \@ifundefined{@coadvisord}{}{\ &}
560
            \@ifundefined{@coadvisord}{}{\@coadvisord\\}}
561
          \@ifundefined{@collaboratora}{}{
562
            \@ifundefined{@collaboratorb}{\collaboratorname:}{\collaboratorname es:} &
563
            \@ifundefined{@collaboratora}{}{\@collaboratora\\}
564
            \@ifundefined{@collaboratorb}{}{\ &}
565
            \@ifundefined{@collaboratorb}{}{\@collaboratorb\\}
566
            \@ifundefined{@collaboratorc}{}{\ &}
567
            \@ifundefined{@collaboratorc}{}{\@collaboratorc\\}
568
            \@ifundefined{@collaboratord}{}{\ &}
569
            \@ifundefined{@collaboratord}{}{\@collaboratord\\}}
570
        \end{tabular}
571
      }
572
    }
573
  }
574
  \vskip 1cm%
575
  \hspace{-0.75cm}
576
  \parbox[b]{\textwidth}{%
577
    \centering
578
    Aprovado pela banca examinadora em: \uline{\hspace{0.75cm}}/\uline{\hspace{0.75cm}}/\uline{\hspace{1.5cm}}
579
  }
580
  \vfill%
581
  \hspace{-0.75cm}
582
  \parbox[b]{\textwidth}{%
583
    \centering%
584
    ~\uline{\hspace{0.75\textwidth}}~\\%
585
    \@advisora~-~\@instituicaoadvisor\\%
586
    \@ifundefined{orientadora}{Prof.\textordmasculine}{Prof.\textordfeminine}~\advisorname%
587
    \@ifundefined{@membroi}{}{
588
      \vskip 0.5cm%
589
      ~\uline{\hspace{0.75\textwidth}}~\\%
590
      \@membroi~-~\@instituicaomembroi\\%
591
      Membro titular\\%
592
    }
593
    \@ifundefined{@membroii}{}{
594
      \vskip 0.5cm%
595
      ~\uline{\hspace{0.75\textwidth}}~\\%
596
      \@membroii~-~\@instituicaomembroii\\%
597
      Membro titular\\%
598
    }
599
    \@ifundefined{@membroiii}{}{
600
      \vskip 0.5cm%
601
      ~\uline{\hspace{0.75\textwidth}}~\\%
602
      \@membroiii~-~\@instituicaomembroiii\\%
603
      Membro titular\\%
604
    }
605
  }
606
}
607

608
%==============================================================================
609
% Ajuste do sumário (nada indentado)
610
%==============================================================================
611

612
% Nível do sumário
613
\setcounter{tocdepth}{4}
614

615
\newlength{\ei@chapnumindent}\setlength{\ei@chapnumindent}{1.8em}
616

617
\renewcommand*{\l@chapter}[2]{
618
        \addpenalty{-\@highpenalty}
619
        \vskip -1ex \@plus\p@
620
        \setlength\@tempdima{1.5em}
621
        \begingroup
622
        \parindent \z@ \rightskip \@pnumwidth
623
        \parfillskip -\@pnumwidth
624
        \leavevmode\bfseries\sffamily
625
        \advance\leftskip\@tempdima
626
        \hskip -\leftskip
627
        \@dottedtocline{0}{0em}{\ei@chapnumindent}{\MakeUppercase{#1}}{#2}
628
        \penalty\@highpenalty
629
        \endgroup
630
}
631
\renewcommand*{\l@section}[2]
632
              {\@dottedtocline{1}{0em}{1.8em}{\MakeUppercase{#1}}{\hss #2}}
633

634
\renewcommand*{\l@subsection}[2]{\@dottedtocline{2}{0em}{2.5em}{\textbf{#1}}{#2}}
635

636
\renewcommand*{\l@subsubsection}[2]{\@dottedtocline{3}{0em}{3.5em}{\textit{#1}}{#2}}
637

638
\renewcommand*{\l@paragraph}[2]{\@dottedtocline{4}{0em}{4.25em}{\uline{#1}}{#2}}
639

640
\newif\if@aftertoc
641
\@aftertocfalse
642
\renewcommand{\tableofcontents}{%
643
        \chapter*{\contentsname}
644
        \@starttoc{toc}\@aftertoctrue%
645
}
646

647
%
648
% Anexos e apêndices
649
%
650

651
% Seção anexo
652
\newcounter{annex}% add counter
653
\renewcommand\theannex{\annexname~\@Alph\c@annex \space --}
654

655
\newcommand*\l@annex[2]{
656
        \addpenalty{-\@highpenalty}
657
        \vskip -1ex \@plus\p@
658
        \setlength\@tempdima{1.5em}
659
        \begingroup
660
        \parindent \z@ \rightskip \@pnumwidth
661
        \parfillskip -\@pnumwidth
662
        \leavevmode\bfseries\sffamily
663
        \advance\leftskip\@tempdima
664
        \hskip -\leftskip
665
        \@dottedtocline{0}{0em}{5.75em}{\MakeUppercase{#1}}{#2}
666
        \penalty\@highpenalty
667
        \endgroup
668
}
669

670
\newcommand\annexmark[1]{} % define header/footer
671
\newcommand\annex{
672
  \clearpage%
673
  \vspace*{50pt}%
674
  \@startsection{annex}{0}{0pt}{0pt}{42pt}{\centering\reset@font\ei@chapterfont\sffamily\bfseries\MakeUppercase}%
675
}
676

677
% Seção apêndice
678
\newcounter{append}% add counter
679
\renewcommand\theappend{\appendixname~\@Alph\c@append \space --}
680

681
\newcommand*\l@append[2]{
682
        \addpenalty{-\@highpenalty}
683
        \vskip -1ex \@plus\p@
684
        \setlength\@tempdima{1.5em}
685
        \begingroup
686
        \parindent \z@ \rightskip \@pnumwidth
687
        \parfillskip -\@pnumwidth
688
        \leavevmode\bfseries\sffamily
689
        \advance\leftskip\@tempdima
690
        \hskip -\leftskip
691
        \@dottedtocline{0}{0em}{7.25em}{\MakeUppercase{#1}}{#2}
692
        \penalty\@highpenalty
693
        \endgroup
694
}
695

696
\newcommand\appendmark[1]{} % define header/footer
697
\newcommand\append{
698
  \clearpage%
699
  \vspace*{50pt}%
700
  \@startsection{append}{0}{0pt}{0pt}{42pt}{\centering\reset@font\ei@chapterfont\sffamily\bfseries\MakeUppercase}%
701
}
702

703
%==============================================================================
704
% Folha de abertura de Anexos/Apêndices
705
%------------------------------------------------------------------------------
706
% A ABNT NBR 14724 pede que o conjunto de anexos (ou de apêndices) seja
707
% precedido por uma folha simples, contendo apenas "ANEXOS" ou "APÊNDICES"
708
% centralizado e em negrito, sem mais nada, distinta da folha de cada
709
% anexo/apêndice individual (que já leva "ANEXO A -- Título", produzida por
710
% \annex/\append). Use \annexescover ou \appendicescover uma vez, antes
711
% do primeiro \annex ou \append do grupo
712
%==============================================================================
713
\newcommand{\@ei@dividerpage}[1]{%
714
  \clearpage%
715
  \thispagestyle{empty}%
716
  \vspace*{\fill}%
717
  \begin{center}
718
    \reset@font\ei@chapterfont\sffamily\bfseries\MakeUppercase{#1}%
719
  \end{center}
720
  \vspace*{\fill}%
721
  \clearpage%
722
}
723

724
\newcommand{\annexescover}{\@ei@dividerpage{\annexesname}}
725
\newcommand{\appendicescover}{\@ei@dividerpage{\appendicesname}}
726

727
%==============================================================================
728
% Definição das listas de abreviaturas e siglas e de símbolos
729
%==============================================================================
730
\newenvironment{listofabbrv}[1]{
731
  \chapter*{\listabbrvname}
732
  \begin{list}{\textbf{??}}{%
733
      \settowidth{\labelwidth}{#1}%
734
      \setlength{\labelsep}{1em}%
735
      \setlength{\itemindent}{0mm}%
736
      \setlength{\leftmargin}{\labelwidth}%
737
      \addtolength{\leftmargin}{\labelsep}%
738
      \setlength{\rightmargin}{0mm}%
739
      \setlength{\itemsep}{.1\baselineskip}%
740
      \renewcommand{\makelabel}[1]{\makebox[\labelwidth][l]{##1}}%
741
    }
742
  }{
743
  \end{list}
744
}
745

746
\newenvironment{listofsymbols}[1]{
747
  \chapter*{\listsymbolname}
748
  \begin{list}{\textbf{??}}{%
749
      \settowidth{\labelwidth}{#1}%
750
      \setlength{\labelsep}{1em}%
751
      \setlength{\itemindent}{0mm}%
752
      \setlength{\leftmargin}{\labelwidth}%
753
      \addtolength{\leftmargin}{\labelsep}%
754
      \setlength{\rightmargin}{0mm}%
755
      \setlength{\itemsep}{.1\baselineskip}%
756
      \renewcommand{\makelabel}[1]{\makebox[\labelwidth][l]{##1}}%
757
    }
758
  }{
759
  \end{list}
760
}
761

762
%==============================================================================
763
% Resumo (abstract) e Abstract (englishabstract)
764
%==============================================================================
765
\renewenvironment{abstract}{%
766
  \chapter*{\abstractname}
767
}{%
768
  \par\vskip 0.5cm%
769
  \noindent\textbf{\keywordsname:} \@abstractkw.
770
}
771

772
\newenvironment{englishabstract}[1]{%
773
  \if@openright\cleardoublepage\else\clearpage\fi%
774
  \gdef\@englishkeywords{#1}%
775
  \iflanguage{english}{
776
    \begin{otherlanguage}{brazilian}
777
    }{
778
      \begin{otherlanguage}{english}
779
      }
780
      \chapter*{\abstractname}
781
    }{
782
      \par\vskip 0.5cm%
783
      \noindent\textbf{\keywordsname:} \@englishkeywords.
784
    \end{otherlanguage}
785
}
786

787
%==============================================================================
788
% Formatação dos capítulos.
789
% Os comandos \@chapter e \@schapter são redefinidos para que a
790
% numeração de páginas seja correta (deve aparecer somente a partir do
791
% primeiro capítulo do texto, mas não nas páginas iniciais de
792
% capítulos).
793
% Os comandos \@makechapterhead e \@makeschapterhead fazem a
794
% formatação dos títulos propriamente ditos.
795
%==============================================================================
796
\newcommand{\ei@chapterfont}{\@setfontsize\Large{16}{20}}
797
\def\@chapapp{}
798

799
\def\@chapter[#1]#2{%
800
	\onehalfspacing
801
  \refstepcounter{chapter}%
802
  \addcontentsline{toc}{chapter}{\protect\numberline{\@chapapp\thechapter}#1}%
803
  % Standard LaTeX chapter-grouping spacing in LoF/LoT: commented out to keep
804
  % uniform spacing between all entries regardless of chapter boundaries, since I
805
  % dunno if these are from TSI's guidelines or just copy-pasted from somewhere
806
  %\addtocontents{lof}{\protect\addvspace{10\p@}}%
807
  %\addtocontents{lot}{\protect\addvspace{10\p@}}%
808
  \pagestyle{texufpel}\let\ps@plain\ps@texufpel%
809
  \@makechapterhead{#2}\@afterheading%
810
}
811

812
\def\@makechapterhead#1{%
813
  \vspace*{50pt}%
814
  \reset@font\noindent{\ei@chapterfont\sffamily\textbf{\@chapapp\thechapter\hspace{1em}\MakeUppercase{#1}}\par}%
815
  \addvspace{42pt}%
816
  \thispagestyle{empty}%
817
}
818

819
\def\@schapter#1{%
820
  \if@aftertoc\addcontentsline{toc}{chapter}{#1}\fi%
821
  % Standard LaTeX chapter-grouping spacing in LoF/LoT: commented out to keep
822
  % uniform spacing between all entries regardless of chapter boundaries, since I
823
  % dunno if these are from TSI's guidelines or just copy-pasted from somewhere
824
  %\addtocontents{lof}{\protect\addvspace{10\p@}}%
825
  %\addtocontents{lot}{\protect\addvspace{10\p@}}%
826
  \@makeschapterhead{#1}\@afterheading%
827
}
828

829
\def\@makeschapterhead#1{%
830
  \vspace*{50pt}%
831
  \reset@font\centerline{\ei@chapterfont\sffamily\textbf{\MakeUppercase{#1}}}%
832
  \addvspace{42pt}%
833
}
834

835
%==============================================================================
836
% Formatação das seções
837
%==============================================================================
838
\setcounter{secnumdepth}{4}
839

840
\renewcommand{\section}{%
841
  \@startsection{section}{1}{0pt}{18pt}{9pt}{\reset@font\large\MakeUppercase}
842
}
843

844
\renewcommand{\subsection}{%
845
  \@startsection{subsection}{2}{0pt}{12pt}{6pt}{\reset@font\bfseries}
846
}
847

848
\renewcommand{\subsubsection}{%
849
  \@startsection{subsubsection}{3}{0pt}{12pt}{6pt}{\reset@font\itshape}
850
}
851

852
\renewcommand{\paragraph}{%
853
  \@startsection{paragraph}{4}{0pt}{12pt}{6pt}{\reset@font\uline}
854
}
855

856
\renewcommand{\subparagraph}{%
857
  \@startsection{subparagraph}{5}{0pt}{1ex}{-1em}{\reset@font\bfseries}
858
}
859

860
%==============================================================================
861
% Formatação das legendas
862
%==============================================================================
863
\renewcommand{\thefigure}{\@arabic\c@figure}
864
\renewcommand{\thetable}{\@arabic\c@table}
865

866
\counterwithout{figure}{chapter}
867
\counterwithout{equation}{chapter}
868
\counterwithout{table}{chapter}
869
% O pacote listings só cria o contador "lstlisting" dentro de um
870
% \AtBeginDocument próprio (ele decide o formato de numeração nesse
871
% momento verificando se a classe tem capítulos). Por isso o
872
% \counterwithout também precisa ser adiado da mesma forma, e registrado
873
% depois de \RequirePackage{listings} para entrar na fila após o hook
874
% do próprio pacote.
875
\AtBeginDocument{\counterwithout{lstlisting}{chapter}}
876

877
%==============================================================================
878
% Redefinição do conteúdo das listas de figuras e tabelas
879
%------------------------------------------------------------------------------
880
% Empacotado em \AtBeginDocument: o pacote hyperref redefine \@caption
881
% incondicionalmente e imediatamente no momento em que é carregado (não
882
% em seu próprio \AtBeginDocument), descartando o prefixo "Figura"/"Tabela"
883
% especificamente na entrada da Lista de Ilustrações/Tabelas (mas não na
884
% legenda visível, que continua correta) -- daí a legenda no corpo do texto
885
% aparecer certa ("Figura 1: ...") mas a entrada na lista aparecer sem o
886
% prefixo. Adiando nossa redefinição para \AtBeginDocument garante que ela
887
% seja a última a rodar, independentemente de onde \usepackage{hyperref}
888
% aparece no preâmbulo do documento.
889
%==============================================================================
890
\newif\if@captionlisting\@captionlistingtrue
891
\AtBeginDocument{%
892
\long\def\@caption#1[#2]#3{%
893
  \par
894
  \if@captionlisting%
895
    \addcontentsline{\csname ext@#1\endcsname}{#1}%
896
        {\protect\numberline{\csname fnum@#1\endcsname}{\ignorespaces #2}}%
897
  \fi%
898
  \begingroup
899
    \@parboxrestore
900
    \if@minipage
901
      \@setminipage
902
    \fi
903
    \normalsize
904
    \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
905
  \endgroup%
906
}%
907
}
908

909
\renewcommand*{\l@figure}{\@dottedtocline{1}{0em}{5.5em}}
910
\let\l@table\l@figure
911
\let\l@lstlisting\l@figure
912

913
%==============================================================================
914
% Compatibilização do "longtable" com a Lista de Tabelas
915
%------------------------------------------------------------------------------
916
% O pacote longtable define seu próprio mecanismo de legenda (\LT@c@ption),
917
% que grava a entrada na Lista de Tabelas usando \thetable (só o número),
918
% em vez de \fnum@table ("Tabela"~+~número), diferentemente do \@caption
919
% padrão usado pelo ambiente "table" (redefinido acima). É por isso que uma
920
% "tabela normal" mostra o prefixo "Tabela" na lista, mas uma "longtable"
921
% mostra só o número, criando alinhamento/espaçamento diferente entre as
922
% entradas. O trecho abaixo corrige isso, trocando \thetable por
923
% \fnum@table para igualar ao comportamento das tabelas normais.
924
%==============================================================================
925
\RequirePackage{longtable}
926
\def\LT@c@ption#1[#2]#3{%
927
  \LT@makecaption#1\fnum@table{#3}%
928
  \def\@tempa{#2}%
929
  \ifx\@tempa\@empty\else
930
     {\let\\\space
931
     \addcontentsline{\ext@table}{table}{\protect\numberline{\fnum@table}{\ignorespaces #2}}}%
932
  \fi}
933

934
%==============================================================================
935
% Compatibilização do "listings" com a Lista de Códigos
936
%------------------------------------------------------------------------------
937
% Pelo mesmo motivo acima: o pacote listings grava sua própria entrada na
938
% Lista de Códigos usando apenas \thelstlisting (o número puro), sem passar
939
% pelo \@caption customizado da classe, então o prefixo "Código" definido em
940
% \lstlistingname nunca aparece nessa lista (só no corpo do texto). Aqui
941
% forçamos o prefixo também na lista, análogo ao que já ocorre com Figura/
942
% Tabela.
943
%==============================================================================
944
\let\oldlstlistoflistings\lstlistoflistings
945
\renewcommand{\lstlistoflistings}{%
946
  \begingroup
947
    \let\oldnumberline\numberline
948
    \renewcommand{\numberline}[1]{\oldnumberline{\lstlistingname\space##1}}%
949
    %\renewcommand{\numberline}[1]{\lstlistingname\space\oldnumberline{##1}}%
950
    \oldlstlistoflistings
951
  \endgroup
952
}
953

954
%==============================================================================
955
% Redefinição do formato de citações longas
956
%==============================================================================
957
\renewenvironment{quote}{%
958
  \small%
959
  \begin{list}{}{\setlength{\leftmargin}{40mm}\item\relax}
960
  }{%
961
  \end{list}
962
}
963

964
%==============================================================================
965
% Ajuste do formato das citações e referências
966
%==============================================================================
967
\setlength{\bibhang}{0pt}
968
\let\cite\citep
969

970
%
971
% Definições de seções restantes.
972
%
973

974
% Ficha catalográfica: Uma página temporária, somente indicando que é necessário ter a ficha catalográfica
975

976
\newcommand{\fichacatalografica}{%
977
  \clearpage%
978
  \mbox{}%
979
  \vfill
980
  \begin{center}
981
    \textbf{Insira AQUI a ficha catalogr\'afica\\(solicitada na p\'agina da biblioteca)}
982
\end{center}
983
\vfill%
984
}
985

986
% Seção de agradecimentos
987

988
\newenvironment{agradecimentos}{%
989
  \chapter*{Agradecimentos}%
990
}{%
991
}
992

993
% Seção de dedicatória
994

995
\newenvironment{dedicatoria}{%
996
  \clearpage%
997
  \mbox{}\vfill\begin{flushright}%
998
  }{%
999
  \end{flushright}%
1000
}
1001

1002
% Seção de epígrafe
1003

1004
\newenvironment{epigrafe}{%
1005
  \clearpage%
1006
  \mbox{}\vfill\begin{flushright}%
1007
  }{%
1008
  \end{flushright}%
1009
}