UFFS Computer Science undergraduate thesis (uffstex)
The uffstex class of UFFS's Computer Science course for undergraduate final papers (TCC), abnTeX2-based, in Portuguese.
- Category
- Thesis
- Document class
uffstex(uffstex.cls) — ships with TeX Live- Workflow
- Thesis / dissertation — submissions and revision rounds
- Author
- Federal University of Fronteira Sul, Computer Science course (uffstex)
- Source
- Federal University of Fronteira Sul, Computer Science course (uffstex)
- Licence
- uffstex.cls: LaTeX Project Public License. The sample text is Federal University of Fronteira Sul, Computer Science course (uffstex)'s, provided for authors preparing a submission.
These are the publisher’s own files. This project starts from Federal University of Fronteira Sul, Computer Science course (uffstex)’s package for this publication — their manuscript, their uffstex.cls, their bibliography style — so what compiles here is what they would have given you.
Federal University of Fronteira Sul, Computer Science course (uffstex) serves this exact file to Federal University of Fronteira Sul. Check Federal University of Fronteira Sul, Computer Science course (uffstex)’s author pages for the current instructions.
What you get
LICENSE· 19 KBexemplos/refs.bib· 582 Blogo.png· 68 KBsbc.bst· 21 KBtcc.tex— the file that is compiled · 11 KBuffstex.cls· 21 KB
These become your files. Editing them afterwards changes your project and nothing else — a project owns its files from the moment it is made.
Source
LICENSE — binary, 19 KB
exemplos/refs.bib · 582 B
@book{halim3rd,
author={Steven Halim and Felix Halim},
title={Competitive Programming},
subtitle={The New Lower Bound of Programming Contests},
edition={3},
pagetotal={447},
year={2013},
publisher={Lulu},
url={https://cpbook.net}
}
@book{exupery15,
author={Antoine de Saint-Exupéry},
title={O Pequeno Príncipe},
origtitle={Le Petit Prince},
language={brazilian},
origlanguage={french},
translator={Ivone C. Benedetti},
publisher={L\&PM},
edition={1},
location={Porto Alegre},
date={2015-01-15},
year={2013},
pagetotal={96},
isbn={9788525432193}
}logo.png — binary, 68 KB
sbc.bst · 21 KB
%% copy of "apalike" for SBC (no comma before year in citation label)
% BibTeX `apalike' bibliography style (24-Jan-88 version)
% Adapted from the `alpha' style, version 0.99a; for BibTeX version 0.99a.
% Copyright (C) 1988, all rights reserved.
% Copying of this file is allowed, provided that if you make any changes at all
% you name it something other than `apalike.bst'.
% This restriction helps ensure that all copies are identical.
% Differences between this style and `alpha' are generally heralded by a `%'.
% The file btxbst.doc has the documentation for alpha.bst.
%
% This style should be used with the `apalike' LaTeX style (apalike.sty).
% \cite's come out like "(Jones, 1986)" in the text but there are no labels
% in the bibliography, and something like "(1986)" comes out immediately
% after the author. Author (and editor) names appear as last name, comma,
% initials. A `year' field is required for every entry, and so is either
% an author (or in some cases, an editor) field or a key field.
%
% Editorial note:
% Many journals require a style like `apalike', but I strongly, strongly,
% strongly recommend that you not use it if you have a choice---use something
% like `plain' instead. Mary-Claire van Leunen (A Handbook for Scholars,
% Knopf, 1979) argues convincingly that a style like `plain' encourages better
% writing than one like `apalike'. Furthermore the strongest arguments for
% using an author-date style like `apalike'---that it's "the most practical"
% (The Chicago Manual of Style, University of Chicago Press, thirteenth
% edition, 1982, pages 400--401)---fall flat on their face with the new
% computer-typesetting technology. For instance page 401 anachronistically
% states "The chief disadvantage of [a style like `plain'] is that additions
% or deletions cannot be made after the manuscript is typed without changing
% numbers in both text references and list." LaTeX sidesteps the disadvantage.
%
% History:
% 15-sep-86 (SK,OP) Original version, by Susan King and Oren Patashnik.
% 10-nov-86 (OP) Truncated the sort.key$ string to the correct length
% in bib.sort.order to eliminate error message.
% 24-jan-88 (OP) Updated for BibTeX version 0.99a, from alpha.bst 0.99a;
% apalike now sorts by author, then year, then title;
% THIS `apalike' VERSION DOES NOT WORK WITH BIBTEX 0.98i.
ENTRY
{ address
author
booktitle
chapter
edition
editor
howpublished
institution
journal
key
% month not used in apalike
note
number
organization
pages
publisher
school
series
title
type
volume
year
}
{}
{ label extra.label sort.label }
INTEGERS { output.state before.all mid.sentence after.sentence after.block }
FUNCTION {init.state.consts}
{ #0 'before.all :=
#1 'mid.sentence :=
#2 'after.sentence :=
#3 'after.block :=
}
STRINGS { s t }
FUNCTION {output.nonnull}
{ 's :=
output.state mid.sentence =
{ ", " * write$ }
{ output.state after.block =
{ add.period$ write$
newline$
"\newblock " write$
}
{ output.state before.all =
'write$
{ add.period$ " " * write$ }
if$
}
if$
mid.sentence 'output.state :=
}
if$
s
}
FUNCTION {output}
{ duplicate$ empty$
'pop$
'output.nonnull
if$
}
FUNCTION {output.check}
{ 't :=
duplicate$ empty$
{ pop$ "empty " t * " in " * cite$ * warning$ }
'output.nonnull
if$
}
% apalike needs this function because
% the year has special punctuation;
% apalike ignores the month
FUNCTION {output.year.check}
{ year empty$
{ "empty year in " cite$ * warning$ }
{ write$
" (" year * extra.label * ")" *
mid.sentence 'output.state :=
}
if$
}
FUNCTION {output.bibitem}
{ newline$
"\bibitem[" write$
label write$
"]{" write$
cite$ write$
"}" write$
newline$
""
before.all 'output.state :=
}
FUNCTION {fin.entry}
{ add.period$
write$
newline$
}
FUNCTION {new.block}
{ output.state before.all =
'skip$
{ after.block 'output.state := }
if$
}
FUNCTION {new.sentence}
{ output.state after.block =
'skip$
{ output.state before.all =
'skip$
{ after.sentence 'output.state := }
if$
}
if$
}
FUNCTION {not}
{ { #0 }
{ #1 }
if$
}
FUNCTION {and}
{ 'skip$
{ pop$ #0 }
if$
}
FUNCTION {or}
{ { pop$ #1 }
'skip$
if$
}
FUNCTION {new.block.checkb}
{ empty$
swap$ empty$
and
'skip$
'new.block
if$
}
FUNCTION {field.or.null}
{ duplicate$ empty$
{ pop$ "" }
'skip$
if$
}
FUNCTION {emphasize}
{ duplicate$ empty$
{ pop$ "" }
{ "{\em " swap$ * "}" * }
if$
}
INTEGERS { nameptr namesleft numnames }
FUNCTION {format.names}
{ 's :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr "{vv~}{ll}{, jj}{, f.}" format.name$ 't := % last name first
nameptr #1 >
{ namesleft #1 >
{ ", " * t * }
{ numnames #2 >
{ "," * }
'skip$
if$
t "others" =
{ " et~al." * }
{ " and " * t * }
if$
}
if$
}
't
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}
FUNCTION {format.authors}
{ author empty$
{ "" }
{ author format.names }
if$
}
FUNCTION {format.key} % this function is just for apalike
{ empty$
{ key field.or.null }
{ "" }
if$
}
FUNCTION {format.editors}
{ editor empty$
{ "" }
{ editor format.names
editor num.names$ #1 >
{ ", editors" * }
{ ", editor" * }
if$
}
if$
}
FUNCTION {format.title}
{ title empty$
{ "" }
{ title "t" change.case$ }
if$
}
FUNCTION {n.dashify}
{ 't :=
""
{ t empty$ not }
{ t #1 #1 substring$ "-" =
{ t #1 #2 substring$ "--" = not
{ "--" *
t #2 global.max$ substring$ 't :=
}
{ { t #1 #1 substring$ "-" = }
{ "-" *
t #2 global.max$ substring$ 't :=
}
while$
}
if$
}
{ t #1 #1 substring$ *
t #2 global.max$ substring$ 't :=
}
if$
}
while$
}
FUNCTION {format.btitle}
{ title emphasize
}
FUNCTION {tie.or.space.connect}
{ duplicate$ text.length$ #3 <
{ "~" }
{ " " }
if$
swap$ * *
}
FUNCTION {either.or.check}
{ empty$
'pop$
{ "can't use both " swap$ * " fields in " * cite$ * warning$ }
if$
}
FUNCTION {format.bvolume}
{ volume empty$
{ "" }
{ "volume" volume tie.or.space.connect
series empty$
'skip$
{ " of " * series emphasize * }
if$
"volume and number" number either.or.check
}
if$
}
FUNCTION {format.number.series}
{ volume empty$
{ number empty$
{ series field.or.null }
{ output.state mid.sentence =
{ "number" }
{ "Number" }
if$
number tie.or.space.connect
series empty$
{ "there's a number but no series in " cite$ * warning$ }
{ " in " * series * }
if$
}
if$
}
{ "" }
if$
}
FUNCTION {format.edition}
{ edition empty$
{ "" }
{ output.state mid.sentence =
{ edition "l" change.case$ " edition" * }
{ edition "t" change.case$ " edition" * }
if$
}
if$
}
INTEGERS { multiresult }
FUNCTION {multi.page.check}
{ 't :=
#0 'multiresult :=
{ multiresult not
t empty$ not
and
}
{ t #1 #1 substring$
duplicate$ "-" =
swap$ duplicate$ "," =
swap$ "+" =
or or
{ #1 'multiresult := }
{ t #2 global.max$ substring$ 't := }
if$
}
while$
multiresult
}
FUNCTION {format.pages}
{ pages empty$
{ "" }
{ pages multi.page.check
{ "pages" pages n.dashify tie.or.space.connect }
{ "page" pages tie.or.space.connect }
if$
}
if$
}
FUNCTION {format.vol.num.pages}
{ volume field.or.null
number empty$
'skip$
{ "(" number * ")" * *
volume empty$
{ "there's a number but no volume in " cite$ * warning$ }
'skip$
if$
}
if$
pages empty$
'skip$
{ duplicate$ empty$
{ pop$ format.pages }
{ ":" * pages n.dashify * }
if$
}
if$
}
FUNCTION {format.chapter.pages}
{ chapter empty$
'format.pages
{ type empty$
{ "chapter" }
{ type "l" change.case$ }
if$
chapter tie.or.space.connect
pages empty$
'skip$
{ ", " * format.pages * }
if$
}
if$
}
FUNCTION {format.in.ed.booktitle}
{ booktitle empty$
{ "" }
{ editor empty$
{ "In " booktitle emphasize * }
{ "In " format.editors * ", " * booktitle emphasize * }
if$
}
if$
}
FUNCTION {format.thesis.type}
{ type empty$
'skip$
{ pop$
type "t" change.case$
}
if$
}
FUNCTION {format.tr.number}
{ type empty$
{ "Technical Report" }
'type
if$
number empty$
{ "t" change.case$ }
{ number tie.or.space.connect }
if$
}
FUNCTION {format.article.crossref}
{ "In" % this is for apalike
" \cite{" * crossref * "}" *
}
FUNCTION {format.book.crossref}
{ volume empty$
{ "empty volume in " cite$ * "'s crossref of " * crossref * warning$
"In "
}
{ "Volume" volume tie.or.space.connect
" of " *
}
if$
"\cite{" * crossref * "}" * % this is for apalike
}
FUNCTION {format.incoll.inproc.crossref}
{ "In" % this is for apalike
" \cite{" * crossref * "}" *
}
FUNCTION {article}
{ output.bibitem
format.authors "author" output.check
author format.key output % special for
output.year.check % apalike
new.block
format.title "title" output.check
new.block
crossref missing$
{ journal emphasize "journal" output.check
format.vol.num.pages output
}
{ format.article.crossref output.nonnull
format.pages output
}
if$
new.block
note output
fin.entry
}
FUNCTION {book}
{ output.bibitem
author empty$
{ format.editors "author and editor" output.check
editor format.key output
}
{ format.authors output.nonnull
crossref missing$
{ "author and editor" editor either.or.check }
'skip$
if$
}
if$
output.year.check % special for apalike
new.block
format.btitle "title" output.check
crossref missing$
{ format.bvolume output
new.block
format.number.series output
new.sentence
publisher "publisher" output.check
address output
}
{ new.block
format.book.crossref output.nonnull
}
if$
format.edition output
new.block
note output
fin.entry
}
FUNCTION {booklet}
{ output.bibitem
format.authors output
author format.key output % special for
output.year.check % apalike
new.block
format.title "title" output.check
new.block
howpublished output
address output
new.block
note output
fin.entry
}
FUNCTION {inbook}
{ output.bibitem
author empty$
{ format.editors "author and editor" output.check
editor format.key output
}
{ format.authors output.nonnull
crossref missing$
{ "author and editor" editor either.or.check }
'skip$
if$
}
if$
output.year.check % special for apalike
new.block
format.btitle "title" output.check
crossref missing$
{ format.bvolume output
format.chapter.pages "chapter and pages" output.check
new.block
format.number.series output
new.sentence
publisher "publisher" output.check
address output
}
{ format.chapter.pages "chapter and pages" output.check
new.block
format.book.crossref output.nonnull
}
if$
format.edition output
new.block
note output
fin.entry
}
FUNCTION {incollection}
{ output.bibitem
format.authors "author" output.check
author format.key output % special for
output.year.check % apalike
new.block
format.title "title" output.check
new.block
crossref missing$
{ format.in.ed.booktitle "booktitle" output.check
format.bvolume output
format.number.series output
format.chapter.pages output
new.sentence
publisher "publisher" output.check
address output
format.edition output
}
{ format.incoll.inproc.crossref output.nonnull
format.chapter.pages output
}
if$
new.block
note output
fin.entry
}
FUNCTION {inproceedings}
{ output.bibitem
format.authors "author" output.check
author format.key output % special for
output.year.check % apalike
new.block
format.title "title" output.check
new.block
crossref missing$
{ format.in.ed.booktitle "booktitle" output.check
format.bvolume output
format.number.series output
format.pages output
address output % for apalike
new.sentence % there's no year
organization output % here so things
publisher output % are simpler
}
{ format.incoll.inproc.crossref output.nonnull
format.pages output
}
if$
new.block
note output
fin.entry
}
FUNCTION {conference} { inproceedings }
FUNCTION {manual}
{ output.bibitem
format.authors output
author format.key output % special for
output.year.check % apalike
new.block
format.btitle "title" output.check
organization address new.block.checkb
organization output
address output
format.edition output
new.block
note output
fin.entry
}
FUNCTION {mastersthesis}
{ output.bibitem
format.authors "author" output.check
author format.key output % special for
output.year.check % apalike
new.block
format.title "title" output.check
new.block
"Master's thesis" format.thesis.type output.nonnull
school "school" output.check
address output
new.block
note output
fin.entry
}
FUNCTION {misc}
{ output.bibitem
format.authors output
author format.key output % special for
output.year.check % apalike
new.block
format.title output
new.block
howpublished output
new.block
note output
fin.entry
}
FUNCTION {phdthesis}
{ output.bibitem
format.authors "author" output.check
author format.key output % special for
output.year.check % apalike
new.block
format.btitle "title" output.check
new.block
"PhD thesis" format.thesis.type output.nonnull
school "school" output.check
address output
new.block
note output
fin.entry
}
FUNCTION {proceedings}
{ output.bibitem
format.editors output
editor format.key output % special for
output.year.check % apalike
new.block
format.btitle "title" output.check
format.bvolume output
format.number.series output
address output % for apalike
new.sentence % we always output
organization output % a nonempty organization
publisher output % here
new.block
note output
fin.entry
}
FUNCTION {techreport}
{ output.bibitem
format.authors "author" output.check
author format.key output % special for
output.year.check % apalike
new.block
format.title "title" output.check
new.block
format.tr.number output.nonnull
institution "institution" output.check
address output
new.block
note output
fin.entry
}
FUNCTION {unpublished}
{ output.bibitem
format.authors "author" output.check
author format.key output % special for
output.year.check % apalike
new.block
format.title "title" output.check
new.block
note "note" output.check
fin.entry
}
FUNCTION {default.type} { misc }
MACRO {jan} {"January"}
MACRO {feb} {"February"}
MACRO {mar} {"March"}
MACRO {apr} {"April"}
MACRO {may} {"May"}
MACRO {jun} {"June"}
MACRO {jul} {"July"}
MACRO {aug} {"August"}
MACRO {sep} {"September"}
MACRO {oct} {"October"}
MACRO {nov} {"November"}
MACRO {dec} {"December"}
MACRO {acmcs} {"ACM Computing Surveys"}
MACRO {acta} {"Acta Informatica"}
MACRO {cacm} {"Communications of the ACM"}
MACRO {ibmjrd} {"IBM Journal of Research and Development"}
MACRO {ibmsj} {"IBM Systems Journal"}
MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
MACRO {ieeetc} {"IEEE Transactions on Computers"}
MACRO {ieeetcad}
{"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
MACRO {ipl} {"Information Processing Letters"}
MACRO {jacm} {"Journal of the ACM"}
MACRO {jcss} {"Journal of Computer and System Sciences"}
MACRO {scp} {"Science of Computer Programming"}
MACRO {sicomp} {"SIAM Journal on Computing"}
MACRO {tocs} {"ACM Transactions on Computer Systems"}
MACRO {tods} {"ACM Transactions on Database Systems"}
MACRO {tog} {"ACM Transactions on Graphics"}
MACRO {toms} {"ACM Transactions on Mathematical Software"}
MACRO {toois} {"ACM Transactions on Office Information Systems"}
MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
MACRO {tcs} {"Theoretical Computer Science"}
READ
FUNCTION {sortify}
{ purify$
"l" change.case$
}
INTEGERS { len }
FUNCTION {chop.word}
{ 's :=
'len :=
s #1 len substring$ =
{ s len #1 + global.max$ substring$ }
's
if$
}
% There are three apalike cases: one person (Jones),
% two (Jones and de~Bruijn), and more (Jones et~al.).
% This function is much like format.crossref.editors.
%
FUNCTION {format.lab.names}
{ 's :=
s #1 "{vv~}{ll}" format.name$
s num.names$ duplicate$
#2 >
{ pop$ " et~al." * }
{ #2 <
'skip$
{ s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
{ " et~al." * }
{ " and " * s #2 "{vv~}{ll}" format.name$ * }
if$
}
if$
}
if$
}
FUNCTION {author.key.label}
{ author empty$
{ key empty$
{ cite$ #1 #3 substring$ }
'key % apalike uses the whole key
if$
}
{ author format.lab.names }
if$
}
FUNCTION {author.editor.key.label}
{ author empty$
{ editor empty$
{ key empty$
{ cite$ #1 #3 substring$ }
'key % apalike uses the whole key
if$
}
{ editor format.lab.names }
if$
}
{ author format.lab.names }
if$
}
FUNCTION {editor.key.label}
{ editor empty$
{ key empty$
{ cite$ #1 #3 substring$ }
'key % apalike uses the whole key, no organization
if$
}
{ editor format.lab.names }
if$
}
FUNCTION {calc.label}
{ type$ "book" =
type$ "inbook" =
or
'author.editor.key.label
{ type$ "proceedings" =
'editor.key.label % apalike ignores organization
'author.key.label % for labeling and sorting
if$
}
if$
" " % these three lines are
* % for apalike, which
year field.or.null purify$ #-1 #4 substring$ % uses all four digits
*
'label :=
}
FUNCTION {sort.format.names}
{ 's :=
#1 'nameptr :=
""
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ nameptr #1 >
{ " " * }
'skip$
if$ % apalike uses initials
s nameptr "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" format.name$ 't := % <= here
nameptr numnames = t "others" = and
{ "et al" * }
{ t sortify * }
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}
FUNCTION {sort.format.title}
{ 't :=
"A " #2
"An " #3
"The " #4 t chop.word
chop.word
chop.word
sortify
#1 global.max$ substring$
}
FUNCTION {author.sort}
{ author empty$
{ key empty$
{ "to sort, need author or key in " cite$ * warning$
""
}
{ key sortify }
if$
}
{ author sort.format.names }
if$
}
FUNCTION {author.editor.sort}
{ author empty$
{ editor empty$
{ key empty$
{ "to sort, need author, editor, or key in " cite$ * warning$
""
}
{ key sortify }
if$
}
{ editor sort.format.names }
if$
}
{ author sort.format.names }
if$
}
FUNCTION {editor.sort}
{ editor empty$
{ key empty$
{ "to sort, need editor or key in " cite$ * warning$
""
}
{ key sortify }
if$
}
{ editor sort.format.names }
if$
}
% apalike uses two sorting passes; the first one sets the
% labels so that the `a's, `b's, etc. can be computed;
% the second pass puts the references in "correct" order.
% The presort function is for the first pass. It computes
% label, sort.label, and title, and then concatenates.
FUNCTION {presort}
{ calc.label
label sortify
" "
*
type$ "book" =
type$ "inbook" =
or
'author.editor.sort
{ type$ "proceedings" =
'editor.sort
'author.sort
if$
}
if$
#1 entry.max$ substring$ % for
'sort.label := % apalike
sort.label % style
*
" "
*
title field.or.null
sort.format.title
*
#1 entry.max$ substring$
'sort.key$ :=
}
ITERATE {presort}
SORT % by label, sort.label, title---for final label calculation
STRINGS { last.label next.extra } % apalike labels are only for the text;
INTEGERS { last.extra.num } % there are none in the bibliography
FUNCTION {initialize.extra.label.stuff} % and hence there is no `longest.label'
{ #0 int.to.chr$ 'last.label :=
"" 'next.extra :=
#0 'last.extra.num :=
}
FUNCTION {forward.pass}
{ last.label label =
{ last.extra.num #1 + 'last.extra.num :=
last.extra.num int.to.chr$ 'extra.label :=
}
{ "a" chr.to.int$ 'last.extra.num :=
"" 'extra.label :=
label 'last.label :=
}
if$
}
FUNCTION {reverse.pass}
{ next.extra "b" =
{ "a" 'extra.label := }
'skip$
if$
label extra.label * 'label :=
extra.label 'next.extra :=
}
EXECUTE {initialize.extra.label.stuff}
ITERATE {forward.pass}
REVERSE {reverse.pass}
% Now that the label is right we sort for real,
% on sort.label then year then title. This is
% for the second sorting pass.
FUNCTION {bib.sort.order}
{ sort.label
" "
*
year field.or.null sortify
*
" "
*
title field.or.null
sort.format.title
*
#1 entry.max$ substring$
'sort.key$ :=
}
ITERATE {bib.sort.order}
SORT % by sort.label, year, title---giving final bibliography order
FUNCTION {begin.bib}
{ preamble$ empty$ % no \etalchar in apalike
'skip$
{ preamble$ write$ newline$ }
if$
"\begin{thebibliography}{}" write$ newline$ % no labels in apalike
}
EXECUTE {begin.bib}
EXECUTE {init.state.consts}
ITERATE {call.type$}
FUNCTION {end.bib}
{ newline$
"\end{thebibliography}" write$ newline$
}
EXECUTE {end.bib}
tcc.tex — the file that is compiled · 11 KB
% Opção global de idioma "brazilian"
% (mesmo que uffstex ou abntex2 façam algo do tipo).
% Para escrever em inglês, colocar "english"
% (o último idioma é o padrão).
% Esta opção é informada aos pacotes importados
% com \usepackage (por exemplo, cleveref ao
% nomear os links das referências) e para as
% regras de hifenização.
% A opção "serif" estiliza os títulos com a versão
% serifada da fonte escolhida (abntex2 utiliza
% estilo sem serifa por padrão).
\documentclass[serif, english, brazilian]{uffstex}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
% \usepackage[
% % Estilo numérico é preferível e é
% % permitido pela ABNT e pela UFFS :)
% style=abnt-numeric,
% % Para o estilo autor-data:
% % style=abnt
% % Ordenação:
% % sorting=nty % por nome, título e ano
% % (a NBR 6023 não especifica desempate de ordenação...)
% ]{biblatex}
% adicionado suporte ao pacote datetime2 para a macro \imprimirdata,
% possibilitando a customização da formatação das datas
\usepackage[useregional=num]{datetime2}
\usepackage{xcolor}
\usepackage{booktabs}
\usepackage{csquotes}
% O abnTeX2 e o uffstex não obrigam
% a utilização de alguma fonte, então, se
% nenhuma for especificada, a padrão do
% LaTeX é utilizada (Computer Modern).
% As fontes do pacote newtx são recomendadas
% para quem deseja utilizar Times New Roman.
\usepackage{newtxtext}
\usepackage{newtxmath}
% cleveref deve ser carregado após hyperref
% (que é carregado automaticamente pelo abntex2)
% e amsmath (pacote newtxmath aparentemente
% carrega amsmath).
\usepackage{cleveref}
\usepackage[
linesnumbered,
lined,
boxed,
commentsnumbered
]{algorithm2e}
% verde padrão da UFFS segundo a identidade visual
\providecolor{uffsgreen}{RGB}{0, 105, 62}
% Adiciona arquivo de referências para o biblatex
% \addbibresource{refs.bib}
% Comandos de dados
\autor{CC UFFS}
\titulo{\uffstex}
\subtitulo{Classe de trabalhos acadêmicos da UFFS}
\curso{Ciência da Computação}
\cidade{Chapecó}
\uf{SC}
% datetime2 não funciona com \today porque ambos formatam a data
\data{\hoje}
\orientador{Fulano da Computação}
\coorientador{Beltrano da Computação}
\tipotrabalho{Trabalho de conclusão de curso (graduação)}
\palavrachave{Primeira palavra}
\palavrachave{Segunda palavra}
\palavrachave{Terceira palavra}
\palavrachave{Quarta palavra}
\palavrachave{Quinta palavra}
\begin{document}
% Ainda precisamos selecionar o idioma aqui
% para imprimir os rótulos no idioma correto,
% caso não seja português do Brasil.
% \selectlanguage{english}
% Início da parte pré-textual
% (opcional, abnTeX2 faz automaticamente).
\pretextual%
\imprimircapa%
% comando com '*' caso imprimir com twoside (opção padrão do uffstex)
% para a CIP ser impressa no verso.
\imprimirfolhaderosto*%
% ficha catalográfica (Cataloging in Publication (CIP))
% com copyright em "nota de rodapé"
\imprimircip[[email protected]]
\imprimirfolhadeaprovacao{\imprimircoorientador\ -- ABCD}
{Ciclano da Computação -- UFFS}
% \imprimirfolhadeaprovacao[<data de defesa, opcional>]
% {<2o membro>}{<3o membro>}[<4o membro, opcional>][<5o membro, opcional>]
\begin{resumo}
Escreva aqui seu resumo de 150 a 500 palavras.
Infelizmente não encontrei, se é que existe, uma maneira de automatizar
a criação de resumos para outras línguas que não a do documento.
Então é preciso fazê-lo manualmente, especificando o título do resumo
(\enquote{Resumo} na língua a ser escrita) e também escrever o texto dentro
do ambiente \texttt{otherlanguage*}. Além disso, para escrever em uma língua
diferente da do documento, também é preciso especificá-la para o Babel
(feito globalmente neste exemplo).
\vspace{\baselineskip}
Palavras-chave: \imprimirpcs
\end{resumo}
\begin{resumo}[Abstract]
\begin{otherlanguage*}{english}
Your abstract in English.
\vspace{\baselineskip}
Keywords: Keyword 1. Keyword 2. Keyword 3. Keyword 4. Keyword 5.
\end{otherlanguage*}
\end{resumo}
\pdfbookmark{\listfigurename}{lof}
\listoffigures*
\cleardoublepage%
\pdfbookmark{\listalgoritmoname}{\algoritmoext}
\listofalgoritmos*
\cleardoublepage%
\pdfbookmark{\listtablename}{lot}
\listoftables*
\cleardoublepage%
% Coloca o sumário no "sumário do PDF"
% (chamado de bookmark do PDF).
\pdfbookmark{\contentsname}{toc}
% Versão com * não coloca o próprio sumário no sumário
\tableofcontents*
\cleardoublepage%
% Início da parte textual
\textual%
\chapter{Seção primária}
Conteúdo da seção primária.
\section{Seção secundária}
Conteúdo da seção secundária.
\subsection{Seção terciária}
Conteúdo da seção terciária.
\subsubsection{Seção quaternária}
Conteúdo da seção quaternária.
\subsubsubsection{Seção quinária}
Conteúdo da seção quinária.
\section[Título curto]{Uma seção que possui um título longo
pode conter um título curto para o sumário}
É importante notar que não há nenhuma regra nas normas da ABNT ou da UFFS
sobre esta prática.
\chapter{Citações}
\section{Indiretas}
% Para citar com número de página, basta
% informá-la como parâmetro opcional.
Segundo \cite{halim3rd}, codar um array de sufixos é mais fácil que uma árvore de sufixos. Ou então: codar um array de sufixos é mais fácil que uma árvore de sufixos~\cite[253]{halim3rd}.
\section{Diretas}
Um dos trechos mais famosos do livro O Pequeno Príncipe é \enquote{O essencial é invisível aos olhos}~\cite[58]{exupery15}.
\subsection{Com mais de três linhas}
\begin{citacao}
\textit{A Léon Werth.}
Peço perdão às crianças por ter dedicado este livro a um adulto. Tenho uma boa desculpa: esse adulto é o meu melhor amigo no mundo. Tenho outra desculpa: esse adulto pode entender tudo, até livros para crianças. Tenho uma terceira desculpa: esse adulto mora na França, onde sente fome e frio. Também precisa ser consolado. Se todas essas desculpas não bastarem, então quero dedicar este livro à criança que esse adulto foi um dia. Todos os adultos primeiro foram crianças. (Mas poucos se lembram disso.) Portanto, corrijo minha dedicatória:
\textit{A Léon Werth quando era pequeno.}~\cite{exupery15}
\end{citacao}
\chapter{Alíneas}
A ABNT NBR 6024:2012 define que o texto que antecede as alíneas deve terminar com dois pontos; cada alínea deve iniciar com letra minúscula e terminar com ponto e vírgula, exceto a última, finalizada com ponto final, e a alínea que anteceder uma subalínea, finalizada com dois pontos:
\begin{alineas}
\item item 1;
\item item 2;
\item item 3:
\begin{alineas} % ou \begin{subalineas} ou \begin{incisos}
\item item 3.1;
\item item 3.2;
\end{alineas}
\item item 4.
\end{alineas}
Note que se a última alínea for uma subalínea, ela será finalizada com ponto final. Além disso, a ABNT define o ponto e vírgula para terminar uma subalínea, enquanto a normalização de trabalhos da UFFS determina o uso da vírgula neste caso. Como desconhecemos se a ABNT define alguma flexibilidade na customização desta regra, deixamos exemplificado o uso da regra original.
\chapter{Tabelas}
Exemplos de tabelas\footnote{Todas as seções devem conter algum texto entre elas, segundo o manual de normalização de trabalhos da UFFS.}.
\section{Tabelas comuns}
% Tabelas comuns do LaTeX, com um pouco
% de beleza graças ao pacote booktabs.
\begin{table}[h]
\centering
% \caption é o rótulo (título, identificação), que deve estar
% acima do elemento (tabelas, figuras, etc).
\caption{Países, capitais e população total aproximada}%
\label{tab:paises}
% @{} remove o espaço nas laterais.
\begin{tabular}{@{}llr@{}}
\toprule % linha superior
% Notas de rodapé não se dão bem com tabelas, então
% precisa usar \footnotemark com \footnotetext ao
% invés de apenas \footnote{<texto>}.
País & Capital & População\footnotemark\\
\midrule % linha do meio
Brasil & Brasília & 208 milhões\\
Itália & Roma & 61 milhões\\
Canadá & Ottawa & 37 milhões\\
China & Pequim & 1.4 bilhões\\
\bottomrule % linha inferior
\end{tabular}
\fonte{elaborado pelos autores com dados do Google}
\nota{Outras informações, se necessário.}
% Etiqueta para referenciar o elemento no texto.
\end{table}
\section{Tabelas do padrão IBGE}
\begin{table}[htb]
% \ibgetab{<rótulo e etiqueta>}{<conteúdo>}{<legenda(s)>}
\ibgetab{%
\caption{Um Exemplo de tabela conforme o padrão IBGE}%
\label{tabela-ibge}
}{
\begin{tabular}{@{}llr@{}}
\toprule
País & Capital & População\\
\midrule
Brasil & Brasília & 208 milhões\\
Itália & Roma & 61 milhões\\
Canadá & Ottawa & 37 milhões\\
China & Pequim & 1.4 bilhões\\
\bottomrule
\end{tabular}
}{
\fonte{elaborado pelos autores, com dados do Google e comandos retirados do manual do \abnTeX}
\nota{Uma nota.}
\nota[Anotações]{Outra nota, mas com prefixo diferente.}
}
\end{table}
\footnotetext{População do país, não da capital!}
\chapter{Imagens}
Na \autoref{fig:logo_uffs} podemos ver a nova assinatura visual da \imprimirinstituicao.
\begin{figure}[h]
\centering
\caption{Nova assinatura visual da UFFS}%
\label{fig:logo_uffs}
\includegraphics[scale=0.5]{logo.png}
\fonte{UFFS}
\end{figure}
Na \cref{fig:logo_uffs_ibge} podemos ver a nova assinatura visual da \imprimirinstituicao\ reaproveitando o ambiente das tabelas do IBGE:
\begin{figure}[h]
\ibgetab{
\caption{Nova assinatura visual da UFFS}%
\label{fig:logo_uffs_ibge}
}{
\includegraphics[scale=0.5]{logo.png}
}{
\fonte{UFFS}
}
\end{figure}
\chapter{Miscelânea}
\section{Cores}
\textcolor{uffsgreen}{Podemos utilizar a cor verde oficial da UFFS através
do pacote \texttt{xcolor} e do comando:}
\begin{verbatim}
\providecolor{uffsgreen}{RGB}{0, 105, 62}
\end{verbatim}
\section{Algoritmos }
Por ora, o único pacote que funcionou com o ambiente \texttt{ibgetab} foi o
\texttt{algorithm2e}.
\postextual%
% Para imprimir as referências,
% se utilizar o pacote biblatex (recomendado),
% como neste exemplo:
\bibliographystyle{sbc} % estilo bibliográfico da Sociedade Brasileira de Computação (SBC)
%\renewcommand{\bibname}{REFERÊNCIAS BIBLIOGRÁFICAS} %Define o Caption da seção de bibliografia
%\addcontentsline{toc}{chapter}{REFERÊNCIAS BIBLIOGRÁFICAS}
%não pode ter espaço entre os nomes dos arquivos bib
\bibliography{exemplos/refs}
% E se utilizar o abntex2cite, consultar a documentação:
% https://www.abntex.net.br/#manuais-do-abntex2
% ou
% https://ctan.org/pkg/abntex2
% (item "Citation support package documentation")
\apendices%
\chapter{Um apêndice}
Conteúdo do apêndice.
\anexos%
\chapter{Um anexo}\label[anexo]{umanexo}
Conteúdo do anexo.
Aparentemente o \LaTeX\ não diferencia apêndice de anexo, então é preciso
explicitar o tipo do rótulo do anexo como \texttt{anexo} caso for referenciá-lo:
\verb|\label[anexo]{<rótulo>}|.
Isso só funciona com o \texttt{cleveref}.
Compare:
\autoref{umanexo} (com \verb|\autoref|) e \cref{umanexo} (com \verb|\cref|).
\end{document}uffstex.cls · 21 KB
%%
%% Customizações do abnTeX2 (https://www.abntex.net.br/)
%% para a Universidade Federal da Fronteira Sul (UFFS).
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
%% 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.3 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 the ccuffs team.
%%
%% This work consists of the file uffstex.cls.
%%
%% Further information about abnTeX2 is available on https://www.abntex.net.br/.
%% Further information about ccuffs is available on https://ccuffs.github.io/.
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{uffstex}[2018/12/01 v0.10.5]
% ==============================================================================
% Carregando pacotes necessários
% ==============================================================================
\RequirePackage{xparse}
\RequirePackage{xpatch}
\RequirePackage{graphicx}
\RequirePackage{lastpage}
% pacote indentfirst certifica que sempre haverá
% identação de parágrafo na 1a linha de um novo parágrafo
\RequirePackage{indentfirst}
% ==============================================================================
% Opções padrão para o abntex2
% ==============================================================================
% para controlar onde um capítulo pode iniciar: openleft, openright, openany
% para indicar impressão apenas em anverso ou anverso e verso: oneside, twoside
\PassOptionsToClass{
12pt,
a4paper,
openright,
twoside,
brazil,
chapter=TITLE, % capitaliza títulos primários no texto
section=TITLE % capitaliza títulos secundários no texto
}{abntex2}
% ==============================================================================
% Declaração das opções da classe
% ==============================================================================
% \AtEndOfClass é utilizado para adiar a execução
% do código até o final do processamento desta classe
% pois o comando \ABNTEXchapterfont é definido pelo
% abntex2, a qual não está carregada neste momento
%
% opção "serif" para redefinir o estilo dos variados
% títulos do abntex2 com família de fontes serifadas
\DeclareOption{serif}{
\AtEndOfClass{\renewcommand{\ABNTEXchapterfont}{\rmfamily\bfseries}}
}
% \DeclareOption* lida com os comandos não explicitamente
% especificados nesta classe e então os repassa para a
% classe abntex2
\DeclareOption*{
\PassOptionsToClass{\CurrentOption}{abntex2}
}
\ProcessOptions\relax
\LoadClass{abntex2}
% ==============================================================================
% "Constantes"
% ==============================================================================
\providecommand*{\algoritmoext}{loalg}
% ==============================================================================
% Patches
% ==============================================================================
% patch pra deixar seções em caixa alta no sumário
% (cortesia de Lars Andersen, da classe Memoir)
\xpatchcmd{\H@old@sectm@m}{\fi#7}{%
\fi\ifnum#2=1\relax\texorpdfstring{\MakeTextUppercase{#7}}{#7}\else#7\fi%
}{%
\ClassInfo{uffstex}{patch para seções secundárias em caixa alta no
sumário aplicado com sucesso}%
}{%
\ClassWarning{uffstex}{patch para seções secundárias em caixa alta no
sumário falhou}%
}
% patch para deixar apenas o número da página no cabeçalho
\xpatchcmd{\textual}{\pagestyle{abntheadings}}{\pagestyle{simple}}{%
\ClassInfo{uffstex}{patch para cabeçalho simples de página
aplicado com sucesso}%
}{%
\ClassWarning{uffstex}{patch para cabeçalho simples de página falhou}%
}
% ==============================================================================
% Configurações de tamanhos e comprimentos
% ==============================================================================
% tamanho da indentação de novo parágrafo
\setlength{\parindent}{1.25cm}
% espaçamento entre títulos e texto (até seção quinária)
\setlength{\afterchapskip}{\baselineskip}
\setlength{\aftersecskip}{\baselineskip}
\setlength{\aftersubsecskip}{\baselineskip}
\setlength{\aftersubsubsecskip}{\baselineskip}
% (abnTeX2 define \subsubsubsection como \paragraph)
\setlength{\afterparaskip}{\baselineskip}
% remove espaço vertical que antecede uma seção primária no sumário
\setlength{\cftbeforechapterskip}{0cm}
% ==============================================================================
% Localização
% ==============================================================================
% português do Brasil
% por mais que especifiquemos "brazilian" como opção global,
% o abntex2 passa a opção "brazil" pro babel...
\addto\captionsbrazil{
\providecommand*{\campusname}{campus de}
\providecommand*{\cursoname}{curso de}
\renewcommand*{\orientadorname}{Orientador}
\renewcommand*{\coorientadorname}{Coorientador}
\providecommand*{\bacharelname}{Bacharel}
\providecommand*{\licenciaturaname}{Licenciatura}
\providecommand*{\bancaname}{banca avaliadora}
\providecommand*{\declaracaoaprovacao}{Este trabalho de conclus\~ao de curso
foi defendido e aprovado pela \bancaname\ em:}
\providecommand*{\algoritmoname}{Algoritmo}
\providecommand*{\listalgoritmoname}{Lista de \algoritmoname{}s}
\providecommand*{\cipfolhas}{f}
\providecommand*{\cipiii}{T\'itulo}
\providecommand*{\notacopia}{Todos os direitos autorais reservados
a \imprimirautor. A reprodu\c{c}\~ao de partes ou do todo deste trabalho s\'o
poder\'a ser feita mediante a cita\c{c}\~ao da fonte.}
% abntex2 já utiliza 'anexoname' e 'anexosname'...
\providecommand*{\annexname}{Anexo}
\providecommand*{\annexesname}{Anexos}
}
\addto\extrasbrazil{
\instituicao{Universidade Federal da Fronteira Sul}
% texto "natureza do trabalho"; está um pouco diferente
% do modelo da normalização de trabalhos da universidade...
% como fica o título de quem fez licenciatura?
\preambulo{Trabalho de conclus\~ao de curso apresentado %
como requisito para obten\c{c}\~ao do grau de \imprimirgrau\ em %
\imprimircurso\ da \imprimirinstituicao.}
}
% inglês
\addto\captionsenglish{
\renewcommand*{\campusname}{campus of}
\renewcommand*{\cursoname}{course of}
\renewcommand*{\orientadorname}{Advisor}
\renewcommand*{\coorientadorname}{Co-advisor}
\renewcommand*{\bacharelname}{Bachelor}
% "Licenciate" foi o mais próximo que encontrei,
% mas pode não significar a mesma coisa que no Brasil:
% https://www.merriam-webster.com/dictionary/licentiate
% https://en.oxforddictionaries.com/definition/licentiate
% https://en.wikipedia.org/wiki/Licentiate_(degree)
\renewcommand*{\licenciaturaname}{Licenciate}
\renewcommand*{\folhadeaprovacaoname}{Approval sheet}
\renewcommand*{\bancaname}{examination committee}
\renewcommand*{\declaracaoaprovacao}{This final undergraduate work
was defended and approved by the \bancaname\ on:}
\renewcommand*{\algoritmoname}{Algorithm}
\renewcommand*{\listalgoritmoname}{List of \algoritmoname{}s}
\renewcommand*{\cipfolhas}{pp}
\renewcommand*{\cipiii}{Title}
\renewcommand*{\notacopia}{All rights reserved to \imprimirautor.
This work or any portion thereof may not be reproduced
without citing the source.}
% abntex2 já utiliza 'anexoname' e 'anexosname'...
\renewcommand*{\annexname}{Annex}
\renewcommand*{\annexesname}{Annexes}
}
\addto\extrasenglish{
\instituicao{Federal University of Fronteira Sul}
\preambulo{Final undergraduate work submitted as %
requirement to obtain a \imprimirgrau's degree in %
\imprimircurso\ from the \imprimirinstituicao.}
}
% ==============================================================================
% Comandos de dados
% ==============================================================================
% Versões com * das definições de comandos são recomendadas
% quando os parâmetros não são parágrafos inteiros
\newcommand*{\uffstex}{UFFS\TeX}
\providecommand*{\hoje}{\the\year-\the\month-\the\day}
\newcommand*{\imprimircampusRotulo}{\campusname}
\providecommand*{\imprimirgrau}{\bacharelname}
\providecommand*{\licenciatura}{\renewcommand*{\imprimirgrau}{\licenciaturaname}}
\newcommand*{\grau}[1]{\renewcommand*{\imprimirgrau}{#1}}
\newcommand*{\imprimircursoRotulo}{\cursoname}
\providecommand*{\imprimircurso}{}
\newcommand*{\curso}[1]{\renewcommand*{\imprimircurso}{#1}}
\providecommand*{\imprimirsubtitulo}{}
\newcommand*{\subtitulo}[1]{\renewcommand*{\imprimirsubtitulo}{#1}}
\ExplSyntaxOn
\regex_const:Nn \g__dados_divnome_regex {(?:(.+)\ )?(.+)}
\cs_new_protected:Npn \dados_divnome:NNn #1#2#3
{
\regex_extract_once:NnN \g__dados_divnome_regex {#3} \l_tmpa_rslt
\seq_pop_right:NN \l_tmpa_rslt #2
\seq_pop_right:NN \l_tmpa_rslt #1
% se não há sobrenome na entrada, #1 está vazia e o nome foi parar em #2
\ifthenelse{\equal{#1}{} \and \not\equal{#2}{}}
{
% então seta #1 = #2 e depois limpa #2
\tl_gset_eq:NN #1 #2
\tl_gclear:N #2
}{}
}
\RenewDocumentCommand \autor { m }
{
\author{#1}
\dados_divnome:NNn\autorinicio\autorultnome{#1}
}
\RenewDocumentCommand \orientador { O{\orientadorname} m }
{
\RenewDocumentCommand \imprimirorientadorRotulo{}{#1:}
\RenewDocumentCommand \imprimirorientador{}{#2}
\dados_divnome:NNn\orientadorinicio\orientadorultnome{#2}
}
\RenewDocumentCommand \coorientador { O{\coorientadorname} m }
{
\RenewDocumentCommand \imprimircoorientadorRotulo{}{#1:}
\RenewDocumentCommand \imprimircoorientador{}{#2}
\dados_divnome:NNn\coorientadorinicio\coorientadorultnome{#2}
}
\ExplSyntaxOff
\providecommand*{\imprimircidade}{}
\ProvideDocumentCommand \cidade { m }
{
\renewcommand*{\imprimircidade}{#1}
}
\providecommand*{\imprimiruf}{}
\ProvideDocumentCommand \uf { m }
{
\renewcommand*{\imprimiruf}{#1}
}
% =======================================
% Palavras-chave (funcionalidade baseada na classe mdtuffs)
% =======================================
\ExplSyntaxOn
\tl_const:Nn \c_kw_csprefix_tl {palavrach}
\int_const:Nn \c_kw_max_int {5}
\int_zero_new:N \g_kw_count_int
\cs_new:Npn \kw_add:n #1
{
\cs_new:cpn {\c_kw_csprefix_tl\int_to_alph:n{\g_kw_count_int}} {#1}
}
\NewDocumentCommand \palavrachave { m }
{
\int_compare:nTF {\g_kw_count_int < \c_kw_max_int}
{
\int_incr:N \g_kw_count_int
\kw_add:n {#1}
}
{
\ClassWarning{uffstex}{Voc\^e~excedeu~o~limite~de~
\int_to_arabic:n {\c_kw_max_int}~palavras-chave.~Apenas~
\int_to_arabic:n {\c_kw_max_int}~ser\~ao~exibidas}
}
}
\NewDocumentCommand \imprimirpc { m }
{
\int_compare:nTF {1 <= #1 <= \c_kw_max_int}
{
\use:c {\c_kw_csprefix_tl\int_to_alph:n{#1}}
}
{
\ClassError{uffstex}{Palavra-chave~#1~n\~ao~existe}
{Verifique~o~n\'umero~que~voc\^e~passou~como~par\^ametro~
para~o~comando~\imprimirpc~e~quantas~palavras-chave~voc\^e~definiu.}
}
}
\NewDocumentCommand \imprimirpcs { s O{\@.} }
{
\int_zero_new:N \l_kw_count_int
\int_while_do:nn {\l_kw_count_int < \g_kw_count_int}
{
\int_incr:N \l_kw_count_int
% se usar comando com *, enumera as palavras-chave
\IfBooleanT{#1}{\int_to_arabic:n {\l_kw_count_int}.\nobreakspace}
\imprimirpc{\l_kw_count_int}#2
% se o contador ainda é menor que o valor máximo, coloca um espaço
% (ou seja, coloca um espaço entre as palavras-chave)
\int_compare:nTF {\l_kw_count_int < \c_kw_max_int}{~}{}
}
}
\ExplSyntaxOff
% ==============================================================================
% Fontes padrões dos títulos até seção quinária (texto e sumário)
% ==============================================================================
% controle de caixa alta é feito aparte
% capítulo no texto (negrito e caixa alta)
\renewcommand{\ABNTEXchapterfont}{\sffamily\bfseries}
\renewcommand{\ABNTEXchapterfontsize}{\normalsize}
% capítulo no sumário
\renewcommand{\cftchapterfont}{\ABNTEXchapterfont}
\renewcommand{\cftchapterpagefont}{\cftchapterfont}
% seção no texto (normal e caixa alta)
\renewcommand{\ABNTEXsectionfont}{\ABNTEXchapterfont\mdseries}
\renewcommand{\ABNTEXsectionfontsize}{\normalsize}
% seção no sumário
\renewcommand{\cftsectionfont}{\ABNTEXsectionfont}
\renewcommand{\cftsectionpagefont}{\cftsectionfont}
% subseção no texto (negrito e caixa baixa; reutiliza fonte do capítulo)
\renewcommand{\ABNTEXsubsectionfont}{\ABNTEXchapterfont}
\renewcommand{\ABNTEXsubsectionfontsize}{\normalsize}
% subseção no sumário
\renewcommand{\cftsubsectionfont}{\ABNTEXsubsectionfont}
\renewcommand{\cftsubsectionpagefont}{\cftsubsectionfont}
% sub-subseção no texto (normal e caixa baixa; reutiliza fonte da seção)
\renewcommand{\ABNTEXsubsubsectionfont}{\ABNTEXsectionfont}
\renewcommand{\ABNTEXsubsubsectionfontsize}{\normalsize}
% sub-subseção no sumário
\renewcommand{\cftsubsubsectionfont}{\ABNTEXsubsubsectionfont}
\renewcommand{\cftsubsubsectionpagefont}{\cftsubsubsectionfont}
% sub-sub-subseção no texto (itálico e caixa baixa; reutiliza fonte da seção)
\renewcommand{\ABNTEXsubsubsubsectionfont}{\ABNTEXsectionfont\itshape}
\renewcommand{\ABNTEXsubsubsubsectionfontsize}{\normalsize}
% sub-sub-subseção no sumário
\renewcommand{\cftparagraphfont}{\ABNTEXsubsubsubsectionfont}
\renewcommand{\cftparagraphpagefont}{\cftparagraphfont}
% ==============================================================================
% Capa
% ==============================================================================
\renewcommand{\imprimircapa}{
\begin{capa}
\centering
\ABNTEXchapterfont
% a logo deveria ser 20mm x 20mm, mas
% daí vai distorcer... colocando só
% altura, o LaTeX escala a largura
\includegraphics[height=20mm]{logo.png}
\vspace{\baselineskip}
\MakeTextUppercase{\imprimirinstituicao}\\
\MakeTextUppercase{\imprimircampusRotulo\ \imprimircidade}\\
\MakeTextUppercase{\imprimircursoRotulo\ \imprimircurso}
\vspace{3cm}
\MakeTextUppercase{\imprimirautor}
\vspace{4.5cm}
\MakeTextUppercase{\imprimirtitulo}
\abntex@ifnotempty{\imprimirsubtitulo}{
\\\textmd{\MakeTextUppercase{\imprimirsubtitulo}}
}
\vspace{\fill}
\MakeTextUppercase{\imprimircidade}\\
\the\year
\end{capa}
}
% ==============================================================================
% Folha de rosto
% ==============================================================================
\renewcommand{\folhaderostocontent}{
\centering
\ABNTEXchapterfont
\MakeTextUppercase{\imprimirautor}
\vspace{7cm}
\MakeTextUppercase{\imprimirtitulo}
\abntex@ifnotempty{\imprimirsubtitulo}{
\\\textmd{\MakeTextUppercase{\imprimirsubtitulo}}
}
\vspace{3cm}
\abntex@ifnotempty{\imprimirpreambulo}{
\hspace*{0.49\textwidth}
\begin{minipage}{0.5\textwidth}
\mdseries
\footnotesize
\SingleSpacing
\imprimirpreambulo
\imprimirorientadorRotulo\ \imprimirorientador
\abntex@ifnotempty{\imprimircoorientador}{
\\\imprimircoorientadorRotulo\ \imprimircoorientador
}
\end{minipage}
}
\vfill
\textbf{\MakeTextUppercase{\imprimircidade}}\\
\textbf{\the\year}
}
% ==============================================================================
% Ficha catalográfica (funcionalidade baseada na classe mdtuffs)
% ==============================================================================
\ProvideDocumentEnvironment{cip}{}
{\thispagestyle{empty}\begin{SingleSpace}}
{\end{SingleSpace}}
\ProvideDocumentCommand
\imprimircip{ o }{
\imprimircipframe
\IfValueT{#1}{
\vspace{4ex}
\nominata{#1}
}
\clearpage%
}
\ProvideDocumentCommand
\imprimircipframe{}{
\vspace*{\fill}
\begin{cip}
\noindent
\framebox[14cm]{
\begin{minipage}[c]{12cm}
\setlength{\parindent}{2em}
\setlength{\parskip}{1.4ex}
\vspace*{2ex}
\noindent
\abntex@ifnotempty{\autorultnome}{\autorultnome, }\autorinicio
\imprimirtitulo\abntex@ifnotempty{\imprimirsubtitulo}
{: \imprimirsubtitulo} / \imprimirautor. -- \the\year.\\
\indent\pageref*{LastPage}~\cipfolhas.: il.
\imprimirorientadorRotulo\ \imprimirorientador.\\
\abntex@ifnotempty{\imprimircoorientador}{
\indent\imprimircoorientadorRotulo\ \imprimircoorientador.\\
}
\indent\imprimirtipotrabalho\ -- \imprimirinstituicao,
\imprimircursoRotulo\ \imprimircurso,
\imprimircidade, \abntex@ifnotempty{\imprimiruf}{\imprimiruf,}{}
\the\year.
\imprimirpcs*
I.~\abntex@ifnotempty{\orientadorultnome}
{\orientadorultnome, }{}\orientadorinicio,
\MakeTextLowercase{\orientadorname}.
\ifthenelse{\equal{\imprimircoorientador}{}}
{
% se não há coorientador, pula pra instituição
II.~\imprimirinstituicao.
III.~\cipiii.
}
{
II.~\abntex@ifnotempty{\coorientadorultnome}
{\coorientadorultnome, }{}\coorientadorinicio,
\MakeTextLowercase{\coorientadorname}.
III.~\imprimirinstituicao.
IV.~\cipiii.
}
\vspace{4ex}
\end{minipage}
}
\end{cip}
}
\ProvideDocumentCommand \nominata{ m }{
\begin{SingleSpace}
\hrule
\vspace{6pt}
\noindent\copyright\ \the\year\\
\noindent\notacopia\\
\noindent E-mail: {#1}
\end{SingleSpace}
}
% ==============================================================================
% Folha de aprovação
% ==============================================================================
% o regulamento de TCC de CC exige pelo menos 3 membros pra banca
% (orientador e mais dois). Este comando, portanto, exige dois membros
% (o orientador é impresso automaticamente) e suporta mais dois opcionais,
% totalizando 5 membros. O coorientador não é impresso automaticamente pois
% o manual de elaboração de TCC quer a sigla da instituição após o nome
% abaixo da linha da assinatura e o coorientador não é obrigado a ser da UFFS.
% O primeiro parâmetro, opcional, é a data da defesa.
% O valor padrão para a data de defesa é a data configurada no documento com
% a macro \data.
\ProvideDocumentCommand
\imprimirfolhadeaprovacao{ O{\imprimirdata} m m o o }{
\begin{folhadeaprovacao}
\OnehalfSpacing
\begin{center}
\ABNTEXchapterfont%
\MakeTextUppercase{\imprimirautor}
\vspace{\baselineskip}
\MakeTextUppercase{\imprimirtitulo}
\abntex@ifnotempty{\imprimirsubtitulo}{
\\\textmd{\MakeTextUppercase{\imprimirsubtitulo}}
}
\end{center}
\vspace{\baselineskip}
\noindent\imprimirpreambulo%
\vspace{\baselineskip}
\noindent\imprimirorientadorRotulo\ \imprimirorientador
\abntex@ifnotempty{\imprimircoorientador}{
\\\imprimircoorientadorRotulo\ \imprimircoorientador
}
\vspace{2\baselineskip}
\noindent\declaracaoaprovacao\ #1.
\vspace{2\baselineskip}
\noindent\MakeTextUppercase{\bancaname}
\assinatura{\imprimirorientador\ -- UFFS}
\assinatura{#2}
\assinatura{#3}
\IfValueT{#4}{
\assinatura{#4}
}
\IfValueT{#5}{
\assinatura{#5}
}
\end{folhadeaprovacao}
}
% ==============================================================================
% Ambiente `algoritmo` e definição da lista de algoritmos
% ==============================================================================
\newfloat{algoritmo}{\algoritmoext}{\algoritmoname}
\newlistof{listofalgoritmos}{\algoritmoext}{\listalgoritmoname}
\newlistentry{algoritmo}{\algoritmoext}{0}
\renewcommand*{\cftalgoritmoname}{\algoritmoname\space}
\renewcommand*{\cftalgoritmoaftersnum}{\hfill\textendash\hfill}
\AtBeginDocument{
\@ifpackageloaded{cleveref}{
% \crefname é definido automaticamente com \MakeLowercase do \Crefname
\Crefname{algoritmo}{\algoritmoname}{\algoritmoname{}s}
\Crefname{anexo}{\annexname}{\annexesname}
\if@cref@capitalise%
\crefname{algoritmo}{\algoritmoname}{\algoritmoname{}s}%
\fi%
}{}
\@ifpackageloaded{datetime2}{
\renewcommand*{\imprimirdata}{\DTMdate{\thedate}}
}{}
}
% ==============================================================================
% Correção do título da seção das referências
% ==============================================================================
\AtBeginDocument{
\@ifpackageloaded{biblatex}{
% definição do título baseada no abnTeX2
% (https://github.com/abntex/abntex2/blob/master/tex/latex/abntex2/abntex2.cls#L537,
% que por sua vez é baseada na definição
% padrão do Memoir), mas utilizando o
% comando \defbibheading como recomendado
% pela documentação do BibLaTeX quando
% ele for carregado
\defbibheading{abnt}[\refname]{
\chapter*{#1}
\bibmark
\ifmemoirbibintoc{ % front-end do BibLaTeX
\phantomsection
\addcontentsline{toc}{chapter}{\texorpdfstring{\MakeTextUppercase{#1}}{#1}}
}{}
\prebibhook
}
}{}
}
The first page, as this template compiles today. Click it to enlarge, and again to shrink. Open the file ↗