From d40b6d2118ee2c14ba8e5d7dce260f2d43e494ef Mon Sep 17 00:00:00 2001
From: Carlos Maziero <maziero@inf.ufpr.br>
Date: Fri, 13 Oct 2017 17:45:18 -0300
Subject: [PATCH] Versao 0.9.4

---
 0-preambulo/acronimos.tex |    4 +-
 0-preambulo/simbolos.tex  |    4 +-
 Makefile                  |    3 +
 apalike-ptbr.bst          | 1107 +++++++++++++++++++++++++++++++++++++
 leia-me.txt               |    2 +-
 main.tex                  |   36 +-
 packages.tex              |   47 +-
 ppginf.cls                |   94 +---
 8 files changed, 1170 insertions(+), 127 deletions(-)
 create mode 100644 apalike-ptbr.bst

diff --git a/0-preambulo/acronimos.tex b/0-preambulo/acronimos.tex
index bc93518..aa06562 100644
--- a/0-preambulo/acronimos.tex
+++ b/0-preambulo/acronimos.tex
@@ -4,11 +4,11 @@
 
 \begin{listaacron}
 
-\begin{tabular}{ll}
+\begin{longtable}{ll}
 DINF & Departamento de Informática\\
 PPGINF & Programa de Pós-Graduação em Informática\\
 UFPR & Universidade Federal do Paraná\\
-\end{tabular}
+\end{longtable}
 
 \end{listaacron}
 
diff --git a/0-preambulo/simbolos.tex b/0-preambulo/simbolos.tex
index 49b7cc9..6f25666 100644
--- a/0-preambulo/simbolos.tex
+++ b/0-preambulo/simbolos.tex
@@ -4,7 +4,7 @@
 
 \begin{listasimb}
 
-\begin{tabular}{ll}
+\begin{longtable}{ll}
 $\alpha$ & alfa, primeira letra do alfabeto grego\\
 $\beta$ & beta, segunda letra do alfabeto grego\\
 $\gamma$ & gama, terceira letra do alfabeto grego\\
@@ -12,7 +12,7 @@ $\omega$ & ômega, última letra do alfabeto grego\\
 $\pi$ & pi \\
 $\tau$ & Tempo de resposta do sistema\\
 $\theta$ & Ângulo de incidência do raio luminoso\\
-\end{tabular}
+\end{longtable}
 
 \end{listasimb}
 
diff --git a/Makefile b/Makefile
index 2b9bf38..5412e0c 100644
--- a/Makefile
+++ b/Makefile
@@ -25,3 +25,6 @@ clean:
 	@find . -xdev -name $(MAIN).bbl -print -delete
 	@find . -xdev -name $(MAIN).blg -print -delete
 
+purge: clean
+	@rm -f $(MAIN)_$(USER).pdf
+
diff --git a/apalike-ptbr.bst b/apalike-ptbr.bst
new file mode 100644
index 0000000..75c512a
--- /dev/null
+++ b/apalike-ptbr.bst
@@ -0,0 +1,1107 @@
+% BibTeX `apalike' bibliography style (version 0.99a, 8-Dec-10), adapted from
+% the `alpha' style, version 0.99a; for BibTeX version 0.99a.
+%
+% Copyright (C) 1988, 2010 Oren Patashnik.
+% Unlimited copying and redistribution of this file are permitted as long as
+% it is unmodified.  Modifications (and redistribution of modified versions)
+% are also permitted, but only if the resulting file is renamed.
+%
+% 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  (OP)  Original version by Oren Patashnik, ideas from Susan King.
+%   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.
+%    8-dec-10  (OP)  Still version 0.99a, as the code itself was unchanged;
+%                    this release clarified the license.
+%   14-may-16  (CM)  Translation to Brazilian Portuguese by Carlos Maziero,
+%                    DINF/UFPR.
+
+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." * }
+                { " e " * 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 >
+        { ", editores" * }
+        { ", 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$
+        { " de " * series emphasize * }
+      if$
+      "volume e n\'umero" number either.or.check
+    }
+  if$
+}
+
+FUNCTION {format.number.series}
+{ volume empty$
+    { number empty$
+        { series field.or.null }
+        { output.state mid.sentence =
+            { "n\'umero" }
+            { "N\'umero" }
+          if$
+          number tie.or.space.connect
+          series empty$
+            { "there's a number but no series in " cite$ * warning$ }
+            { " em " * 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
+        { "p\'aginas" pages n.dashify tie.or.space.connect }
+        { "p\'agina" 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$
+        { "cap\'{\i}tulo:" }
+        { 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$
+        { "Em " booktitle emphasize * }
+        { "Em " 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$
+    { "Relat\'orio T\'ecnico" }
+    'type
+  if$
+  number empty$
+    { "t" change.case$ }
+    { number tie.or.space.connect }
+  if$
+}
+
+FUNCTION {format.article.crossref}
+{ "Em"                                                  % this is for apalike
+  " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.book.crossref}
+{ volume empty$
+    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+      "Em "
+    }
+    { "Volume" volume tie.or.space.connect
+      " de " *
+    }
+  if$
+  "\cite{" * crossref * "}" *                           % this is for apalike
+}
+
+FUNCTION {format.incoll.inproc.crossref}
+{ "Em"                                                  % 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
+  "Disserta\c{c}\~ao de Mestrado" 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
+  "Tese de doutorado" 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} {"Janeiro"}
+
+MACRO {feb} {"Fevereiro"}
+
+MACRO {mar} {"Mar\c{c}o"}
+
+MACRO {apr} {"Abril"}
+
+MACRO {may} {"Maio"}
+
+MACRO {jun} {"Junho"}
+
+MACRO {jul} {"Julho"}
+
+MACRO {aug} {"Agosto"}
+
+MACRO {sep} {"Setembro"}
+
+MACRO {oct} {"Outubro"}
+
+MACRO {nov} {"Novembro"}
+
+MACRO {dec} {"Dezembro"}
+
+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." * }
+            { " e " * 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}
diff --git a/leia-me.txt b/leia-me.txt
index 3f615b4..f19748f 100644
--- a/leia-me.txt
+++ b/leia-me.txt
@@ -1,5 +1,5 @@
 Modelo LaTeX de dissertação/tese do PPGInf/UFPR
-Versão 0.9.3, novembro de 2015
+Versão 0.9.4, Maio de 2016
 Autor: prof. Carlos A. Maziero
 
 Este modelo é composto pelos seguintes arquivos:
diff --git a/main.tex b/main.tex
index d319af6..f59a220 100644
--- a/main.tex
+++ b/main.tex
@@ -29,7 +29,7 @@
 % Principais dados, usados para gerar as páginas iniciais.
 % Campos não utilizados podem ser removidos ou comentados.
 
-\title{Um modelo para dissertações e teses (escrevi um título mais longo para ver como se comporta a quebra de linhas e o espaçamento entre elas)}
+\title{Um modelo para dissertações e teses \\ (escrevi um título mais longo para ver como se comporta a quebra de linhas e o espaçamento entre elas)}
 
 % Estas devem ser definidas aqui para poder incorporar nos metadados do PDF
 \pchave{palavra-chave 1, palavra-chave 2, palavra-chave 3}
@@ -39,7 +39,7 @@
 \advisor{Donald Knuth}
 \coadvisor{Leslie Lamport}
 
-\field{Ciência da Computação}	% default do PPGInf, não mudar
+\field{Ciência da Computação}		% default do PPGInf, não mudar
 
 \date{2015}
 \local{Curitiba PR}
@@ -68,11 +68,11 @@
 % capa e folha de rosto
 \titlepage
 
-% páginas que só aparecem na versão final (seleção automática)
-\include{0-preambulo/ficha}	% ficha catalográfica
-\include{0-preambulo/aprovacao}	% folha de aprovação
-\include{0-preambulo/dedica}	% dedicatória
-\include{0-preambulo/agradece}	% agradecimentos
+% páginas que só aparecem na versão final (inclusão automática)
+\include{0-preambulo/ficha}		% ficha catalográfica
+\include{0-preambulo/aprovacao}		% folha de aprovação
+\include{0-preambulo/dedica}		% dedicatória
+\include{0-preambulo/agradece}		% agradecimentos
 
 % resumo e abstract
 \include{0-preambulo/resumo}
@@ -82,8 +82,8 @@
 \tableofcontents
 \listoffigures
 \listoftables
-\include{0-preambulo/acronimos}	% ainda deve ser preenchida à mão
-\include{0-preambulo/simbolos}	% idem
+\include{0-preambulo/acronimos}		% ainda deve ser preenchida à mão
+\include{0-preambulo/simbolos}		% idem
 
 %=====================================================
 
@@ -91,19 +91,19 @@
 \mainmatter
 \pagestyle{mainmatter}
 
-% inclusao de cada capítulo, alterar a gosto (do professor de Metodologia)
-\include{1-intro/intro}		% introdução
-\include{2-fundam/fundam}	% fundamentação teórica
-\include{3-revbib/revbib}	% revisão bibliográfica (estado da arte)
-\include{4-proposta/proposta}	% proposta
-\include{5-valida/valida}	% experimentação e validação
-\include{6-conclusao/conclusao}	% conclusão
+% inclusao de cada capítulo, alterar a gosto (do professor de Metodologia...)
+\include{1-intro/intro}			% introdução
+\include{2-fundam/fundam}		% fundamentação teórica
+\include{3-revbib/revbib}		% revisão bibliográfica (estado da arte)
+\include{4-proposta/proposta}		% proposta
+\include{5-valida/valida}		% experimentação e validação
+\include{6-conclusao/conclusao}		% conclusão
 
 %=====================================================
 
 % Estilos de bibliografia recomendados (só descomentar um estilo!)
-\bibliographystyle{apalike}	% [Maziero, 2007], [Maziero et al., 2006]
-%\bibliographystyle{plain}	% [1], [1, 2]
+\bibliographystyle{apalike-ptbr}	% [Maziero et al., 2006]
+%\bibliographystyle{plain}		% [1], [1, 2]
 
 % base de bibliografia (BibTeX)
 \bibliography{refs}
diff --git a/packages.tex b/packages.tex
index 6868fdb..cd3460b 100644
--- a/packages.tex
+++ b/packages.tex
@@ -3,6 +3,9 @@
 % seleção de línguas do texto (a última é a principal/default)
 \usepackage[english,brazilian]{babel}
 
+% ------------------------------------------------------------------------------
+% Definição de fontes
+
 % formato dos arquivos-fonte (utf8 no Linux e latin1 no Windows)
 \usepackage[utf8]{inputenc}	% arquivos LaTeX em Unicode (UTF8)
 
@@ -24,10 +27,18 @@
 \usepackage[scaled=0.9]{helvet}		% Sans Serif
 \usepackage{courier}			% Verbatim, Listings, etc
 
+% ------------------------------------------------------------------------------
+
 % inclusão de figuras
 \usepackage{graphicx}			% incluir figuras em PDF, PNG, PS, EPS
 
-% pacote para formatação de código-fonte (programas)
+% subfiguras (subfigure is deprecated, don't use it)
+\usepackage[labelformat=simple]{subcaption}
+\renewcommand\thesubfigure{(\alph{subfigure})}
+
+% ------------------------------------------------------------------------------
+
+% inclusão/formatação de código-fonte (programas)
 \usepackage{listings}
 \lstset{language=c}
 \lstset{basicstyle=\ttfamily\footnotesize,commentstyle=\textit,stringstyle=\ttfamily}
@@ -36,24 +47,30 @@
 \lstset{columns=flexible,mathescape=true}
 \lstset{frame=single}
 \lstset{inputencoding=utf8,extendedchars=true}
-\lstset{literate={á}{{\'a}}1 {ã}{{\~a}}1 {à}{{\`a}}1 {â}{{\^a}}1
-                 {Á}{{\'A}}1 {Ã}{{\~A}}1 {À}{{\`A}}1 {Â}{{\^A}}1
-                 {é}{{\'e}}1 {ê}{{\^e}}1
-                 {É}{{\'E}}1 {Ê}{{\^E}}1
-                 {í}{{\'\i}}1
-                 {Í}{{\'I}}1
-                 {ó}{{\'o}}1 {õ}{{\~o}}1 {ô}{{\^o}}1
-                 {Ó}{{\'O}}1 {Õ}{{\~O}}1 {Ô}{{\^O}}1
-                 {ú}{{\'u}}1
-                 {Ú}{{\'U}}1
+\lstset{literate={á}{{\'a}}1  {ã}{{\~a}}1 {à}{{\`a}}1 {â}{{\^a}}1
+                 {Á}{{\'A}}1  {Ã}{{\~A}}1 {À}{{\`A}}1 {Â}{{\^A}}1
+                 {é}{{\'e}}1  {ê}{{\^e}}1 {É}{{\'E}}1  {Ê}{{\^E}}1
+                 {í}{{\'\i}}1 {Í}{{\'I}}1
+                 {ó}{{\'o}}1  {õ}{{\~o}}1 {ô}{{\^o}}1
+                 {Ó}{{\'O}}1  {Õ}{{\~O}}1 {Ô}{{\^O}}1
+                 {ú}{{\'u}}1  {Ú}{{\'U}}1
                  {ç}{{\c{c}}}1 {Ç}{{\c{C}}}1 }
 
-% pacote para formatação de algoritmos
+% formatação de algoritmos
 \usepackage{algorithm,algorithmic}
 \floatname{algorithm}{Algoritmo}
 \renewcommand{\algorithmiccomment}[1]{~~~// #1}
 %\algsetup{linenosize=\footnotesize,linenodelimiter=.}
 
+% ------------------------------------------------------------------------------
+
+% outros pacotes
+\usepackage{alltt,moreverb}	% mais comandos no modo verbatim
+\usepackage{lipsum}		% gera texto aleatório (para os exemplos)
+\usepackage{currfile}		% infos sobre o arquivo/diretório atual
+\usepackage[final]{pdfpages}	% inclusão de páginas em PDF
+\usepackage{longtable}		% tabelas multi-páginas (tab símbolos/acrônimos)
+
 % listas de símbolos e de abreviações (a fazer)
 %\usepackage[titles]{tocloft}
 %\newlistof[part]{symb}{los}{Lista de Símbolos}
@@ -62,9 +79,3 @@
 %\refstepcounter{symb}
 %\addcontentsline{los}{symb}{\protect #1 :#2}\par}
 
-% outros pacotes
-\usepackage{alltt,moreverb}	% mais comandos no modo verbatim
-\usepackage{lipsum}		% gera texto aleatório (para os exemplos)
-\usepackage{currfile}		% infos sobre o arquivo/diretório atual
-\usepackage[final]{pdfpages}	% inclusão de páginas em PDF
-
diff --git a/ppginf.cls b/ppginf.cls
index b505192..1fc26cd 100644
--- a/ppginf.cls
+++ b/ppginf.cls
@@ -30,91 +30,11 @@
 %
 % Software fornecido sob a licença GNU GPL. Pode ser usada e modificada
 % livremente, desde que mantidas as informações deste cabeçalho.
-%
-% Histórico:
-%
-% 2007/06/01 V0.1
-% - versão inicial, por Carlos Maziero (maziero@ppgia.pucpr.br). 
-%
-% 2007/06/15
-% - comando \keywords
-% - mais comentários explicativos
-% - ajustes para evitar linhas órfãs e viúvas
-%
-% 2007/08/08 V0.2
-% - mudei fontenc para T1, para acertar acentos no PDF
-% - mudei package de "txfonts" para "times"
-%
-% 2007/08/08 V0.3
-% - coloquei flag -tA4 no dvips (Makefile e instruções de uso)
-%
-% 2007/09/02 V0.4
-% - listasimb e listabrev
-% - resumo, abstract e agradecimentos em negrito
-%
-% 2008/03/12 V0.5
-% - ajustei a ordem das paginas iniciais (resumo, sumário, etc)
-%
-% 2008/06/03 V0.6
-% - substituição do Makefile pelo script build (mais completo)
-% - inclusão da opção "final" para gerar a versão final
-% - estilo "apalike" para bibliografia
-%
-% 2008/06/11 V0.7
-% - inclusão automatica da ficha catalográfica, agradecimentos
-%   e dedicatória na versão final do documento
-% - ficha catalográfica no verso da segunda capa
-%
-% 2008/07/16 V0.8
-% - removidos packages obsoletos (vide documento l2tabuen.pdf)
-% - dimensões da página definidas com package "geometry"
-% - espaçamento: troca de \baselinestretch por \linespread
-% - indentação de parágrafo mudou de 12.7mm para 4em
-% - trocados \bf e \sc por \textbf e \textsc
-% - adotado o package setspace para espaçamento entre linhas
-% - linhas do título mais espaçadas sempre, mesmo no modo "final"
-% - fontes ajustados para o padrão LaTeX2e
-% - ajustada fonte default do package listings para tt footnotesize
-% - retirados alguns acentos ISO deste arquivo (compatibilidade UTF8)
-% - acentos \'i modificados para \'{\i}
-%
-% 2008/11/17 V0.9
-% - opções "draft" e "final" conflitam com opções de documentclass, 
-%   opçõo "draft" vira default e opção "final" renomeada para "aprovada"
-% - corrigida ortografia errada em "Abreviações"
-%
-% 2009/06/03 V0.9.1
-% - incluso exemplo de citação bibliográfica contendo URL
-% - ajustes no texto do modelo Cap 1 e 2
-%
-% 2014/03/18 V0.9.2
-% - versão para o PPGCA/UTFPR
-% - adicionada opção "defesa"
-% - reorganização do texto dos capítulos de exemplo
-%
-% 2015/11/30 V0.9.3
-% - versão para o PPGINF/UFPR
-% - todos os arquivos em UTF8
-% - descrição genérica, ajustável para qualquer tipo de monografia
-% - usuário pode optar oneside/twoside
-% - usuário pode escolher formato de bibliografia
-% - reorganização dos arquivos em diretórios
-% - criação de Makefile mínimo
-% - pacote ifthen substituido por comandos TeX
-% - ajustes para ficar mais próximo do formato da Bib UFPR (pero no mucho)
-% - opções do pacote listings ajustadas para aceitar UTF8
-
-% Ainda por fazer:
-% - melhorar lista de símbolos e abreviações (usar package para listas)
-% - automatizar geração da ficha catalográfica
-% - ajustes para permitir documento em inglês
-% - traduzir o modelo de bibliografia apalike
-% - usar o modelo de bibliografia natbib (\citep e \citet)
 
 %------------------------------------------------------------------------------
 
 % definição da classe
-\ProvidesClass{ppginf}[2015/11/30 V0.9.3 (Carlos Maziero)]
+\ProvidesClass{ppginf}[2016/05/16 V0.9.4 (Carlos Maziero)]
 
 %------------------------------------------------------------------------------
 
@@ -384,7 +304,7 @@
 % lista de símbolos
 \newenvironment{listasimb}
 {
-  \chapter*{Lista de S\'imbolos}
+  \chapter*{Lista de S\'{\i}mbolos}
 %  \phantomsection
 %  \addcontentsline{toc}{chapter}{Lista de S\'{\i}mbolos}
 }{
@@ -422,6 +342,7 @@
         \textsc{\Large\@author}
         \\
         \vfill
+        \DeclareRobustCommand\\{\linebreak}
         \textsc{\Large\@title}
         \vfill
         \textsc{\Large\@local\\\@date}
@@ -444,11 +365,12 @@
   \vfill\vfill
 
   % título
-  \begin{center}
-    \begin{doublespace}
+  \begin{doublespace}
+    \begin{center}
+      \DeclareRobustCommand\\{\linebreak }
       \textsc{\Large\@title}
-    \end{doublespace}
-  \end{center}
+    \end{center}
+  \end{doublespace}
 
   \vspace{1cm}
 
-- 
GitLab