2163 lines
59 KiB
Plaintext
2163 lines
59 KiB
Plaintext
|
%% abntex2-alf.bst, v<VERSION> laurocesar
|
||
|
%% Copyright 2012-<COPYRIGHT_YEAR> by abnTeX2 group at http://www.abntex.net.br/
|
||
|
%%
|
||
|
%% 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 abnTeX2 team, led
|
||
|
%% by Lauro César Araujo. Further information are available on
|
||
|
%% http://www.abntex.net.br/
|
||
|
%%
|
||
|
%% Creator and original mantainer: Gerald Weber <gweber@codigolivre.org.br>
|
||
|
%% Copyright 2001-2002 by the abnTeX group at http://abntex.codigolivre.org.br
|
||
|
%%
|
||
|
%% This file is an *extensive* modification from a file generated with the docstrip utility.
|
||
|
%% The original source files were:
|
||
|
%% merlin.mbs (with options: `babel,nm-revf,aunm-semi,nmlm,x3,m3,dt-end,yr-com,xmth,vnum-x,volp-com,jwdpg,jwdvol,num-xser,btit-rm,bt-rm,pg-bk,add-pub,pub-date,pub-xpar,pre-pub,isbn,issn,pp,ed,abr,ednx,nfss')
|
||
|
%% These sourefiles are copyrighted by Patrick W Daly
|
||
|
|
||
|
ENTRY
|
||
|
{ address author
|
||
|
booktitle booksubtitle
|
||
|
chapter conference-number conference-year conference-location
|
||
|
edition editor editortype
|
||
|
dimensions furtherresp
|
||
|
howpublished illustrated institution
|
||
|
isbn issn journal key month note marginnote number organization
|
||
|
org-short pages pagename
|
||
|
publisher reprinted-from reprinted-text school
|
||
|
series subtitle section title type url urlaccessdate
|
||
|
volume year year-presented
|
||
|
abnt-and-type
|
||
|
abnt-doi abnt-dont-use-etal
|
||
|
abnt-etal-cite abnt-etal-list abnt-etal-text abnt-emphasize abnt-experimental
|
||
|
abnt-full-initials
|
||
|
abnt-last-names abnt-ldots-type
|
||
|
abnt-missing-year abnt-cite-style abnt-no-etal-label abnt-note
|
||
|
abnt-repeated-author-omit abnt-repeated-title-omit
|
||
|
abnt-show-options abnt-refinfo abnt-thesis-year abnt-url-package
|
||
|
abnt-title-command
|
||
|
abnt-verbatim-entry
|
||
|
iso-abbreviation iso-author-punctuation iso-date-place
|
||
|
}{}{ label extra.label year.label}
|
||
|
|
||
|
%revision string
|
||
|
STRINGS { abnt.bst.revision }
|
||
|
|
||
|
%general purpose strings
|
||
|
STRINGS { r s t }
|
||
|
|
||
|
%variables needed to implement the various abnt options
|
||
|
STRINGS {abnt.etal.text abnt.emphasize previous.author previous.title}
|
||
|
INTEGERS {abnt.alf abnt.cite.style abnt.doi
|
||
|
abnt.experimental abnt.etal.cite abnt.etal.list
|
||
|
abnt.full.initials
|
||
|
abnt.last.names abnt.ldots.type
|
||
|
abnt.missing.year
|
||
|
abnt.refinfo abnt.repeated.author.omit abnt.repeated.title.omit
|
||
|
abnt.show.options abnt.and.type
|
||
|
abnt.title.command
|
||
|
abnt.thesis.year
|
||
|
abnt.url.package abnt.verbatim.entry
|
||
|
iso.abbreviation iso.author.punctuation iso.date.place
|
||
|
repeated.author}
|
||
|
|
||
|
%needed for title formatting
|
||
|
INTEGERS { title.lenght title.pos first.word no.bracket}
|
||
|
STRINGS { title.char}
|
||
|
|
||
|
%needed for controlling the sentence position
|
||
|
INTEGERS {output.state before.all mid.sentence after.sentence after.block }
|
||
|
|
||
|
%needed for url identification
|
||
|
INTEGERS {url.type}
|
||
|
|
||
|
%static values for options
|
||
|
%values for abnt.doi
|
||
|
FUNCTION {abnt.doi.expand.to.url} {#0} %expands a doi address to its url correspondent
|
||
|
FUNCTION {abnt.doi.link} {#1} %links doi to its url correspondent
|
||
|
FUNCTION {abnt.doi.leave.as.is} {#2} %shows doi as is, external viewer will have
|
||
|
%to know what to do with a "doi:" document
|
||
|
|
||
|
%values for url types
|
||
|
FUNCTION {unknown.url} {#0}
|
||
|
FUNCTION {http.url} {#1}
|
||
|
FUNCTION {file.url} {#2}
|
||
|
FUNCTION {ftp.url} {#3}
|
||
|
FUNCTION {doi.url} {#4}
|
||
|
FUNCTION {mailto.url} {#5}
|
||
|
|
||
|
FUNCTION {init.state.consts}
|
||
|
{ #0 'before.all :=
|
||
|
#1 'mid.sentence :=
|
||
|
#2 'after.sentence :=
|
||
|
#3 'after.block :=
|
||
|
}
|
||
|
|
||
|
|
||
|
%output.nonnull decides what is written before the argument s, if a comma, period etc.
|
||
|
FUNCTION {output.nonnull}
|
||
|
{ 's := %the argument is written into s
|
||
|
output.state mid.sentence =
|
||
|
{ ", " * write$ } %mid.sentence first write comma
|
||
|
{ output.state after.block =
|
||
|
{ add.period$ write$ newline$ }
|
||
|
{ output.state before.all = 'write$
|
||
|
{ add.period$ " " * write$ }
|
||
|
if$}
|
||
|
if$
|
||
|
mid.sentence 'output.state := }
|
||
|
if$
|
||
|
s %now comes s
|
||
|
}
|
||
|
FUNCTION {output.nonnull.dash}
|
||
|
{ 's := %the argument is written into s
|
||
|
output.state mid.sentence =
|
||
|
{ " --- " * write$ } %mid.sentence first write comma
|
||
|
{ output.state after.block =
|
||
|
{ add.period$ write$ newline$ write$}
|
||
|
{ output.state before.all = 'write$
|
||
|
{ add.period$ " " * write$ }
|
||
|
if$}
|
||
|
if$
|
||
|
mid.sentence 'output.state := }
|
||
|
if$
|
||
|
s %now comes s
|
||
|
}
|
||
|
FUNCTION {output} %does nothing or calls output.nonull
|
||
|
{ duplicate$ empty$
|
||
|
'pop$
|
||
|
'output.nonnull
|
||
|
if$
|
||
|
}
|
||
|
FUNCTION {output.dash} %does nothing or calls output.nonull
|
||
|
{ duplicate$ empty$
|
||
|
'pop$
|
||
|
'output.nonnull.dash
|
||
|
if$
|
||
|
}
|
||
|
FUNCTION {output.check} %like ouput, but complains if t empty
|
||
|
{ 't :=
|
||
|
duplicate$ empty$
|
||
|
{ pop$ "campo " t * " vazio em " * cite$ * warning$ }
|
||
|
'output.nonnull
|
||
|
if$
|
||
|
}
|
||
|
|
||
|
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 {add.blank} { " " * before.all 'output.state :=}
|
||
|
|
||
|
FUNCTION {date.block} {new.block}
|
||
|
|
||
|
FUNCTION {not}
|
||
|
{ { #0 }
|
||
|
{ #1 }
|
||
|
if$
|
||
|
}
|
||
|
FUNCTION {and}
|
||
|
{ 'skip$
|
||
|
{ pop$ #0 }
|
||
|
if$
|
||
|
}
|
||
|
FUNCTION {or}
|
||
|
{ { pop$ #1 }
|
||
|
'skip$
|
||
|
if$
|
||
|
}
|
||
|
FUNCTION {new.block.checka}
|
||
|
{ empty$
|
||
|
'skip$
|
||
|
'new.block
|
||
|
if$
|
||
|
}
|
||
|
FUNCTION {new.block.checkb}
|
||
|
{ empty$
|
||
|
swap$ empty$
|
||
|
and
|
||
|
'skip$
|
||
|
'new.block
|
||
|
if$
|
||
|
}
|
||
|
FUNCTION {new.sentence.checka}
|
||
|
{ empty$
|
||
|
'skip$
|
||
|
'new.sentence
|
||
|
if$
|
||
|
}
|
||
|
FUNCTION {new.sentence.checkb}
|
||
|
{ empty$
|
||
|
swap$ empty$
|
||
|
and
|
||
|
'skip$
|
||
|
'new.sentence
|
||
|
if$
|
||
|
}
|
||
|
FUNCTION {field.or.null}
|
||
|
{ duplicate$ empty$
|
||
|
{ pop$ "" }
|
||
|
'skip$
|
||
|
if$
|
||
|
}
|
||
|
FUNCTION {emphasize}
|
||
|
{ duplicate$ empty$
|
||
|
{ pop$ "" }
|
||
|
{ abnt.emphasize "{" * swap$ * "}" * }
|
||
|
if$
|
||
|
}
|
||
|
|
||
|
|
||
|
FUNCTION {tie.or.space.prefix} %if text length less than 3 chars. uses a tie
|
||
|
{ duplicate$ text.length$ #5 <
|
||
|
{ "~" }
|
||
|
{ " " }
|
||
|
if$
|
||
|
swap$
|
||
|
}
|
||
|
|
||
|
FUNCTION {no.space} { { "" } swap$ }
|
||
|
|
||
|
|
||
|
FUNCTION {space.word} { " " swap$ * " " * }
|
||
|
|
||
|
FUNCTION {bbl.and}
|
||
|
{ abnt.and.type #0 = {" e "} 'skip$ if$
|
||
|
abnt.and.type #1 = {" \& "} 'skip$ if$}
|
||
|
FUNCTION {bbl.chapter} { "cap." }
|
||
|
FUNCTION {bbl.colon} {": "}
|
||
|
FUNCTION {bbl.editors} { "Ed." }
|
||
|
FUNCTION {bbl.editor} { "Ed." }
|
||
|
FUNCTION {bbl.edby} { "editado por" }
|
||
|
FUNCTION {bbl.edition} { "ed." }
|
||
|
FUNCTION {bbl.empty} {""}
|
||
|
FUNCTION {bbl.etal}{abnt.etal.text "" = {""} {" " abnt.etal.text *} if$}
|
||
|
FUNCTION {bbl.doi.url} {"http://dx.doi.org/"}
|
||
|
FUNCTION {bbl.in}{ "In" iso.abbreviation 'skip$ { bbl.colon *} if$}
|
||
|
FUNCTION {bbl.ldots} %#0 use nothing, #1 use \ldots, #2 use $\ldots$, 3# use {...}
|
||
|
{abnt.ldots.type
|
||
|
{abnt.ldots.type #1 = {"\ldots"} 'skip$ if$
|
||
|
abnt.ldots.type #2 = {"$\ldots$"} 'skip$ if$
|
||
|
abnt.ldots.type #3 = {"{...}"} 'skip$ if$}
|
||
|
{""} %for #0 use nothing
|
||
|
if$}
|
||
|
FUNCTION {bbl.master} { "Mestrado" }
|
||
|
FUNCTION {bbl.missing.year}
|
||
|
{abnt.missing.year
|
||
|
{"[s.d.]"} %#1
|
||
|
{""} %#0
|
||
|
if$}
|
||
|
FUNCTION {bbl.monography} { "Monografia" }
|
||
|
FUNCTION {bbl.mthesis} { "Disserta\c{c}\~{a}o" }
|
||
|
FUNCTION {bbl.no.address} {"[S.l.]"}
|
||
|
FUNCTION {bbl.no.address.no.publisher} {"[S.l.: s.n.]"}
|
||
|
FUNCTION {bbl.no.publisher} {"[s.n.]"}
|
||
|
FUNCTION {bbl.number} { iso.abbreviation {"no."} {"n."} if$ }
|
||
|
FUNCTION {bbl.nr} { "n." }
|
||
|
FUNCTION {bbl.of} { "de" }
|
||
|
FUNCTION {bbl.phd} { "Doutorado" }
|
||
|
FUNCTION {bbl.phdthesis} { "Tese" }
|
||
|
FUNCTION {bbl.pages}
|
||
|
{pagename empty$
|
||
|
{ "p." }
|
||
|
{pagename}
|
||
|
if$
|
||
|
}
|
||
|
FUNCTION {bbl.page} { bbl.pages }
|
||
|
FUNCTION {bbl.reprint} {"Separata de"}
|
||
|
FUNCTION {bbl.semicolon} { "; "}
|
||
|
FUNCTION {bbl.same.field} {"\underline{\ \ \ \ \ \ \ \ }"}
|
||
|
FUNCTION {bbl.techrep} { "Rel. Tec." }
|
||
|
FUNCTION {bbl.url.accessdate}
|
||
|
{iso.abbreviation { "Cited "} {"Acesso em: "} if$}
|
||
|
FUNCTION {bbl.url.available}
|
||
|
{ iso.abbreviation {"Available from Internet: "} {"Dispon{\'\i}vel em: "} if$}
|
||
|
FUNCTION {bbl.void} {""}
|
||
|
FUNCTION {bbl.volume} { iso.abbreviation {"vol."} {"v."} if$ }
|
||
|
|
||
|
|
||
|
MACRO {jan} {"jan."}
|
||
|
MACRO {feb} {"fev."}
|
||
|
MACRO {mar} {"mar."}
|
||
|
MACRO {apr} {"abr."}
|
||
|
MACRO {may} {"maio"}
|
||
|
MACRO {jun} {"jun."}
|
||
|
MACRO {jul} {"jul."}
|
||
|
MACRO {aug} {"ago."}
|
||
|
MACRO {sep} {"set."}
|
||
|
MACRO {oct} {"out."}
|
||
|
MACRO {nov} {"nov."}
|
||
|
MACRO {dec} {"dez."}
|
||
|
|
||
|
|
||
|
FUNCTION {is.num}
|
||
|
{ chr.to.int$
|
||
|
duplicate$ "0" chr.to.int$ < not
|
||
|
swap$ "9" chr.to.int$ > not and
|
||
|
}
|
||
|
FUNCTION {str.to.int}
|
||
|
{ duplicate$ is.num
|
||
|
{chr.to.int$ #48 -}
|
||
|
'skip$
|
||
|
if$
|
||
|
}
|
||
|
FUNCTION {bibinfo.check} %usage: field "field" bibinfo.check
|
||
|
{ swap$ duplicate$ missing$
|
||
|
{pop$ pop$ ""}
|
||
|
{ duplicate$ empty$
|
||
|
{swap$ pop$}
|
||
|
{swap$ pop$}
|
||
|
if$
|
||
|
}
|
||
|
if$
|
||
|
}
|
||
|
FUNCTION {bibinfo.warn}
|
||
|
{ swap$
|
||
|
duplicate$ missing$
|
||
|
{swap$ "faltando " swap$ * " em " * cite$ * warning$ pop$ ""}
|
||
|
{ duplicate$ empty$
|
||
|
{swap$ "vazio " swap$ * " em " * cite$ * warning$}
|
||
|
{swap$ pop$}
|
||
|
if$
|
||
|
}
|
||
|
if$
|
||
|
}
|
||
|
|
||
|
FUNCTION {write.field.verbatim}
|
||
|
{
|
||
|
duplicate$ missing$
|
||
|
{pop$ pop$}
|
||
|
{
|
||
|
s text.length$ #0 >
|
||
|
{s "," * newline$ write$ "" 's :=}
|
||
|
'skip$
|
||
|
if$
|
||
|
swap$
|
||
|
"={" * swap$ * "}" *
|
||
|
s swap$ * 's :=
|
||
|
}
|
||
|
if$
|
||
|
}
|
||
|
|
||
|
FUNCTION {write.entry.verbatim1}
|
||
|
{
|
||
|
"address" address write.field.verbatim
|
||
|
"author" author write.field.verbatim
|
||
|
"booktitle" booktitle write.field.verbatim
|
||
|
"booksubtitle" booksubtitle write.field.verbatim
|
||
|
"chapter" chapter write.field.verbatim
|
||
|
"conference-number" conference-number write.field.verbatim
|
||
|
"conference-year" conference-year write.field.verbatim
|
||
|
"conference-location" conference-location write.field.verbatim
|
||
|
"edition" edition write.field.verbatim
|
||
|
"editor" editor write.field.verbatim
|
||
|
"editortype" editortype write.field.verbatim
|
||
|
"dimensions" dimensions write.field.verbatim
|
||
|
"furtherresp" furtherresp write.field.verbatim
|
||
|
"howpublished" howpublished write.field.verbatim
|
||
|
"illustrated" illustrated write.field.verbatim
|
||
|
"institution" institution write.field.verbatim
|
||
|
"isbn" isbn write.field.verbatim
|
||
|
"issn" issn write.field.verbatim
|
||
|
"journal" journal write.field.verbatim
|
||
|
}
|
||
|
FUNCTION {write.entry.verbatim2}
|
||
|
{
|
||
|
"key" key write.field.verbatim
|
||
|
"month" month write.field.verbatim
|
||
|
"note" note write.field.verbatim
|
||
|
"marginnote" marginnote write.field.verbatim
|
||
|
"number" number write.field.verbatim
|
||
|
"organization" organization write.field.verbatim
|
||
|
"org-short" org-short write.field.verbatim
|
||
|
"pages" pages write.field.verbatim
|
||
|
"pagename" pagename write.field.verbatim
|
||
|
"publisher" publisher write.field.verbatim
|
||
|
"reprinted-from" reprinted-from write.field.verbatim
|
||
|
"reprinted-text" reprinted-text write.field.verbatim
|
||
|
"school" school write.field.verbatim
|
||
|
"series" series write.field.verbatim
|
||
|
"subtitle" subtitle write.field.verbatim
|
||
|
"section" section write.field.verbatim
|
||
|
"title" title write.field.verbatim
|
||
|
"type" type write.field.verbatim
|
||
|
}
|
||
|
FUNCTION {write.entry.verbatim3}
|
||
|
{
|
||
|
"url" url write.field.verbatim
|
||
|
"urlaccessdate" urlaccessdate write.field.verbatim
|
||
|
"volume" volume write.field.verbatim
|
||
|
"year" year write.field.verbatim
|
||
|
"abnt-emphasize" abnt-emphasize write.field.verbatim
|
||
|
"abnt-experimental" abnt-experimental write.field.verbatim
|
||
|
"abnt-doi" abnt-doi write.field.verbatim
|
||
|
"abnt-dont-use-etal" abnt-dont-use-etal write.field.verbatim
|
||
|
"abnt-full-initials" abnt-full-initials write.field.verbatim
|
||
|
"abnt-ldots-type" abnt-ldots-type write.field.verbatim
|
||
|
"abnt-missing-year" abnt-missing-year write.field.verbatim
|
||
|
"abnt-cite-style" abnt-cite-style write.field.verbatim
|
||
|
"abnt-no-etal-label" abnt-no-etal-label write.field.verbatim
|
||
|
%abnt-note
|
||
|
"abnt-repeated-author-omit" abnt-repeated-author-omit write.field.verbatim
|
||
|
"abnt-repeated-title-omit" abnt-repeated-title-omit write.field.verbatim
|
||
|
"abnt-show-options" abnt-show-options write.field.verbatim
|
||
|
"abnt-refinfo" abnt-refinfo write.field.verbatim
|
||
|
"abnt-thesis-year" abnt-thesis-year write.field.verbatim
|
||
|
"abnt-title-command" abnt-title-command write.field.verbatim
|
||
|
"abnt-url-package" abnt-url-package write.field.verbatim
|
||
|
"abnt-verbatim-entry" abnt-verbatim-entry write.field.verbatim
|
||
|
}
|
||
|
|
||
|
FUNCTION {write.entry.verbatim}
|
||
|
{"" 's := "" 't :=
|
||
|
abnt.verbatim.entry
|
||
|
{"{\footnotesize\begin{verbatim}" newline$ write$
|
||
|
"@" type$ * "{" * cite$ * 's :=
|
||
|
write.entry.verbatim1
|
||
|
write.entry.verbatim2
|
||
|
write.entry.verbatim3
|
||
|
s "" = {"}"} {s "}" *} if$
|
||
|
newline$ write$
|
||
|
"\end{verbatim}}" newline$ write$}
|
||
|
{newline$}
|
||
|
if$}
|
||
|
|
||
|
STRINGS { bibinfo}
|
||
|
INTEGERS { nameptr namesleft numnames }
|
||
|
|
||
|
FUNCTION {get.person} {"{vv }{ll}{, jj}{, ff}" format.name$}
|
||
|
FUNCTION {get.last.name} {#1 "{ll}" format.name$}
|
||
|
FUNCTION {get.first.name} {#1 "{ff}" format.name$}
|
||
|
FUNCTION {get.von} {#1 "{vv}" format.name$}
|
||
|
FUNCTION {get.jr} {#1 "{jj}" format.name$}
|
||
|
FUNCTION {is.composed.von}
|
||
|
{get.person
|
||
|
get.von duplicate$ empty$ {pop$ #0}
|
||
|
{duplicate$
|
||
|
get.first.name empty$ not
|
||
|
swap$ get.last.name empty$ not and
|
||
|
} if$
|
||
|
}
|
||
|
|
||
|
FUNCTION {recompose.name}
|
||
|
{get.person duplicate$ duplicate$ duplicate$
|
||
|
get.von #1 "{ll }" format.name$ swap$
|
||
|
get.last.name *
|
||
|
swap$ #1 "{, ff}" format.name$ *
|
||
|
swap$ get.von #1 "{ ff}" format.name$ *
|
||
|
}
|
||
|
|
||
|
|
||
|
FUNCTION {format.single.name}
|
||
|
{
|
||
|
s nameptr get.person 'r :=
|
||
|
abnt.last.names
|
||
|
{r #1 "{ll}{ jj}" format.name$ "u" change.case$
|
||
|
abnt.full.initials
|
||
|
{r #1 "{, ff}{ vv}" format.name$ *}
|
||
|
{r #1 "{, f.}{ vv}" format.name$ *}
|
||
|
if$}
|
||
|
{%r #1 is.composed.von {r #1 recompose.name 'r :=} 'skip$ if$
|
||
|
r #1 "{ll}" format.name$
|
||
|
#1 "{ll}" format.name$
|
||
|
r #1 "{ jj}" format.name$ * "u" change.case$
|
||
|
abnt.full.initials
|
||
|
{r #1 "{, ff}{ vv}" format.name$ *
|
||
|
r #1 "{ll}" format.name$
|
||
|
#1 "{ ff}{ vv}" format.name$ *}
|
||
|
{iso.author.punctuation
|
||
|
{r #1 "{, f{}}{ vv}" format.name$ *}
|
||
|
{r #1 "{, f.}{ vv}" format.name$ *} if$
|
||
|
r #1 "{ll}" format.name$
|
||
|
#1 "{ f.}{ vv}" format.name$ *}
|
||
|
if$}
|
||
|
|
||
|
if$
|
||
|
}
|
||
|
FUNCTION {format.names}
|
||
|
{ 'bibinfo := duplicate$ empty$ 'skip$
|
||
|
{'s :=
|
||
|
"" 't :=
|
||
|
#1 'nameptr := s num.names$ 'numnames :=
|
||
|
numnames 'namesleft :=
|
||
|
{ namesleft #0 > }
|
||
|
{ format.single.name
|
||
|
bibinfo bibinfo.check
|
||
|
't :=
|
||
|
nameptr #1 >
|
||
|
{nameptr #1 #1 + = numnames abnt.etal.list > and
|
||
|
{abnt.etal.list {"others" 't := #1 'namesleft :=} 'skip$ if$ }
|
||
|
'skip$
|
||
|
if$
|
||
|
namesleft #1 >
|
||
|
{ "; " * t * }
|
||
|
{ numnames #2 >
|
||
|
{ "" * }
|
||
|
'skip$
|
||
|
if$
|
||
|
s nameptr "{ll}" format.name$ duplicate$ "others" =
|
||
|
{ 't := }
|
||
|
{ pop$ }
|
||
|
if$
|
||
|
t "others" =
|
||
|
{ bbl.etal *}
|
||
|
{ "; " * t *}
|
||
|
if$ }
|
||
|
if$ }
|
||
|
't
|
||
|
if$
|
||
|
nameptr #1 + 'nameptr :=
|
||
|
namesleft #1 - 'namesleft := }
|
||
|
while$
|
||
|
} if$
|
||
|
}
|
||
|
|
||
|
%from plain.bst
|
||
|
FUNCTION {format.names.plain}
|
||
|
{ 's :=
|
||
|
#1 'nameptr :=
|
||
|
s num.names$ 'numnames :=
|
||
|
numnames 'namesleft :=
|
||
|
{ namesleft #0 > }
|
||
|
{ s nameptr "{ff }{vv }{ll}{ jj}" format.name$ 't :=
|
||
|
nameptr #1 >
|
||
|
{ namesleft #1 >
|
||
|
{ ", " * t * }
|
||
|
{ numnames #20 >
|
||
|
{ "," * }
|
||
|
'skip$
|
||
|
if$
|
||
|
t "others" =
|
||
|
{ bbl.etal * }
|
||
|
{ bbl.and * t * }
|
||
|
if$
|
||
|
}
|
||
|
if$
|
||
|
}
|
||
|
't
|
||
|
if$
|
||
|
nameptr #1 + 'nameptr :=
|
||
|
namesleft #1 - 'namesleft :=
|
||
|
}
|
||
|
while$
|
||
|
}
|
||
|
FUNCTION {format.names.ed} {format.names}
|
||
|
|
||
|
FUNCTION {format.authors}
|
||
|
{
|
||
|
author "author" format.names
|
||
|
}
|
||
|
|
||
|
FUNCTION {format.authors.plain}
|
||
|
{
|
||
|
author format.names.plain
|
||
|
}
|
||
|
|
||
|
FUNCTION {get.bbl.editor} { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
|
||
|
|
||
|
|
||
|
FUNCTION {format.book.pages}
|
||
|
{ pages "pages" bibinfo.check duplicate$ empty$
|
||
|
'skip$
|
||
|
{ "~" * bbl.pages * }
|
||
|
if$
|
||
|
}
|
||
|
FUNCTION {format.dimensions}
|
||
|
{ dimensions empty$
|
||
|
'skip$
|
||
|
{ dimensions output}
|
||
|
if$
|
||
|
}
|
||
|
FUNCTION {format.furtherresp}
|
||
|
{ furtherresp empty$
|
||
|
'skip$
|
||
|
{ furtherresp output}
|
||
|
if$
|
||
|
}
|
||
|
FUNCTION {format.illustrated}
|
||
|
{ illustrated missing$
|
||
|
'skip$
|
||
|
{illustrated empty$
|
||
|
{"il." output}
|
||
|
{illustrated output}
|
||
|
if$}
|
||
|
if$
|
||
|
}
|
||
|
FUNCTION {format.isbn}
|
||
|
{ isbn "isbn" bibinfo.check duplicate$ empty$
|
||
|
'skip$
|
||
|
{new.block "ISBN " swap$ *}
|
||
|
if$
|
||
|
}
|
||
|
|
||
|
FUNCTION {format.issn}
|
||
|
{ issn "issn" bibinfo.check
|
||
|
duplicate$ empty$ 'skip$
|
||
|
{new.block "ISSN " swap$ *}
|
||
|
if$
|
||
|
}
|
||
|
|
||
|
FUNCTION {format.note}
|
||
|
{ note empty$
|
||
|
{ "" }
|
||
|
{ note #1 #1 substring$
|
||
|
duplicate$ "{" =
|
||
|
'skip$
|
||
|
{ output.state mid.sentence =
|
||
|
{ "l" }
|
||
|
{ "u" }
|
||
|
if$
|
||
|
change.case$ }
|
||
|
if$
|
||
|
note #2 global.max$ substring$ * "note" bibinfo.check }
|
||
|
if$
|
||
|
}
|
||
|
|
||
|
FUNCTION {format.howpublished}
|
||
|
{ howpublished empty$
|
||
|
{ "" }
|
||
|
{ howpublished #1 #1 substring$
|
||
|
duplicate$ "{" =
|
||
|
'skip$
|
||
|
{ output.state mid.sentence =
|
||
|
{ "l" }
|
||
|
{ "u" }
|
||
|
if$
|
||
|
change.case$ }
|
||
|
if$
|
||
|
howpublished #2 global.max$ substring$ * "howpublished" bibinfo.check }
|
||
|
if$
|
||
|
}
|
||
|
|
||
|
|
||
|
%ABNT styles require that the title acts as an author if
|
||
|
%typical author fields are absent. In this case the first
|
||
|
%word is uppercase. Our main problem is to establish what
|
||
|
%the first word actually is since portuguese uses accents.
|
||
|
%For example: Fun{\c c}\ão (Função) is a whole word but contains a
|
||
|
%space, but if we write Fun\c{c}\ão \c is converted to uppercase...
|
||
|
%You get the problem, don't you?
|
||
|
FUNCTION {format.title.as.author}
|
||
|
{ 's := %holds the title
|
||
|
#1 'title.pos := %our position in the title
|
||
|
#1 'first.word := %boolean, true if we already have the first word
|
||
|
#1 'no.bracket := %boolean, false if we are inside a {}
|
||
|
"" 't := %holds the first title.pos characters of the title
|
||
|
{first.word}
|
||
|
{s title.pos #1 substring$ 'title.char :=
|
||
|
%checks if the character is a {
|
||
|
title.char "{" = {#0 'no.bracket :=} 'skip$ if$
|
||
|
%if we are in a bracket
|
||
|
no.bracket 'skip$ {title.char "}" = {#1 'no.bracket :=} 'skip$ if$} if$
|
||
|
type$ "journalpart" =
|
||
|
{title.char "." = title.char ":" = or title.char "!" = or
|
||
|
title.char "," = or title.char ";" = or title.char "?" = or}
|
||
|
{title.char " " =}
|
||
|
if$ s t = or no.bracket and
|
||
|
{#0 'first.word :=
|
||
|
t title.char * "u" change.case$
|
||
|
title.pos #1 + 'title.pos :=
|
||
|
s title.pos global.max$ substring$ * 's :=}
|
||
|
{title.pos #1 + 'title.pos := t title.char * 't :=}
|
||
|
if$
|
||
|
}
|
||
|
while$
|
||
|
s
|
||
|
}
|
||
|
|
||
|
|
||
|
%compares current title with the title of the previous entry
|
||
|
FUNCTION {compare.title}
|
||
|
{abnt.repeated.title.omit
|
||
|
{duplicate$ "" = 'skip$
|
||
|
{duplicate$ previous.title = repeated.author and
|
||
|
{duplicate$ 'previous.title := pop$ bbl.same.field}
|
||
|
{duplicate$ 'previous.title :=}
|
||
|
if$}
|
||
|
if$}
|
||
|
'skip$
|
||
|
if$
|
||
|
}
|
||
|
|
||
|
FUNCTION {apply.title.command}
|
||
|
{abnt.title.command
|
||
|
{duplicate$ empty$ 'skip$
|
||
|
{"\bibtextitlecommand{" type$ * "}{" * swap$ * "}" *}
|
||
|
if$}
|
||
|
'skip$ if$
|
||
|
}
|
||
|
|
||
|
FUNCTION {format.title}
|
||
|
{author empty$ editor empty$ and organization empty$ and
|
||
|
{title format.title.as.author}
|
||
|
{title duplicate$ empty$ {pop$ ""} {"t" change.case$} if$}
|
||
|
if$
|
||
|
subtitle empty$ 'skip$ {subtitle ": " swap$ * "t" change.case$ *} if$
|
||
|
apply.title.command
|
||
|
compare.title
|
||
|
}
|
||
|
|
||
|
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 {word.in} { bbl.in " " * }
|
||
|
|
||
|
FUNCTION {format.month}
|
||
|
{ month empty$ 'skip$
|
||
|
{month "month" bibinfo.check}
|
||
|
if$
|
||
|
}
|
||
|
|
||
|
FUNCTION {format.date}
|
||
|
{ year empty$
|
||
|
{ month empty$
|
||
|
{ bbl.missing.year }
|
||
|
{ "existe o campo month (mês) mas não o campo year (ano) em " cite$ * warning$ month}
|
||
|
if$}
|
||
|
{ month empty$
|
||
|
{ year n.dashify}
|
||
|
{ month " " * year * }
|
||
|
if$}
|
||
|
if$
|
||
|
}
|
||
|
FUNCTION {format.btitle}
|
||
|
{author empty$ editor empty$ and organization empty$ and
|
||
|
{title format.title.as.author "title" bibinfo.check duplicate$ empty$ 'skip$ {} if$
|
||
|
subtitle empty$ 'skip$ {subtitle ": " swap$ * "t" change.case$ *} if$}
|
||
|
{title "title" bibinfo.check emphasize duplicate$ empty$ 'skip$ {} if$
|
||
|
subtitle empty$ 'skip$ {subtitle ": " swap$ * "t" change.case$ *} if$}
|
||
|
if$
|
||
|
apply.title.command
|
||
|
compare.title
|
||
|
}
|
||
|
FUNCTION {either.or.check}
|
||
|
{ empty$
|
||
|
'pop$
|
||
|
{ "não posso usar ambos " swap$ * " os campos em " * cite$ * warning$ }
|
||
|
if$
|
||
|
}
|
||
|
|
||
|
FUNCTION {format.volume} %leaves formatted or empty volume on the stack
|
||
|
{volume duplicate$ empty$
|
||
|
'skip$
|
||
|
{volume #1 #1 substring$ is.num
|
||
|
{bbl.volume swap$ tie.or.space.prefix * *}
|
||
|
'skip$
|
||
|
if$}
|
||
|
if$
|
||
|
}
|
||
|
|
||
|
FUNCTION {format.number} %leaves formatted or empty number on the stack
|
||
|
{ number duplicate$ empty$
|
||
|
'skip$
|
||
|
{bbl.number swap$ tie.or.space.prefix * *}
|
||
|
if$
|
||
|
}
|
||
|
|
||
|
FUNCTION {format.patent.number}
|
||
|
{ number
|
||
|
}
|
||
|
|
||
|
FUNCTION {format.bvolume}
|
||
|
{ volume empty$
|
||
|
{ "" }
|
||
|
{ format.volume
|
||
|
number empty$ 'skip$ {output format.number} if$
|
||
|
series "series" bibinfo.check
|
||
|
duplicate$ empty$ 'pop$
|
||
|
{ swap$ bbl.of space.word * swap$
|
||
|
emphasize * }
|
||
|
if$
|
||
|
}
|
||
|
if$
|
||
|
}
|
||
|
|
||
|
FUNCTION {format.bvolume.if.no.series}
|
||
|
{ series empty$
|
||
|
{ format.bvolume }
|
||
|
{ "" }
|
||
|
if$
|
||
|
}
|
||
|
|
||
|
|
||
|
FUNCTION {format.number.or.volume}
|
||
|
{number empty$
|
||
|
{format.volume}
|
||
|
{number} %we use the pure number here without leading "n."
|
||
|
if$
|
||
|
}
|
||
|
|
||
|
FUNCTION {format.volume.and.number}
|
||
|
{format.volume output
|
||
|
format.number
|
||
|
}
|
||
|
|
||
|
FUNCTION {format.volume.number.series}
|
||
|
{ number empty$ volume empty$ and
|
||
|
{ series empty$
|
||
|
{ "" }
|
||
|
{" (" series "series" bibinfo.check * ")" *}
|
||
|
if$}
|
||
|
{ series empty$
|
||
|
{""} %{ format.number.or.volume }
|
||
|
{ " (" series "series" bibinfo.check * ", " *
|
||
|
format.number.or.volume * ")" * }
|
||
|
if$ }
|
||
|
if$
|
||
|
}
|
||
|
|
||
|
FUNCTION {extract.num}
|
||
|
{ duplicate$ 't :=
|
||
|
"" 's :=
|
||
|
{ t empty$ not }
|
||
|
{ t #1 #1 substring$
|
||
|
t #2 global.max$ substring$ 't :=
|
||
|
duplicate$ is.num
|
||
|
{ s swap$ * 's := }
|
||
|
{ pop$ "" 't := }
|
||
|
if$ }
|
||
|
while$
|
||
|
s empty$
|
||
|
'skip$
|
||
|
{ pop$ s }
|
||
|
if$
|
||
|
}
|
||
|
|
||
|
FUNCTION {format.edition}
|
||
|
{ edition duplicate$ empty$ 'skip$
|
||
|
{output.state mid.sentence = { "l" } { "t" } if$ change.case$
|
||
|
"edition" bibinfo.check
|
||
|
edition #1 #1 substring$ is.num {". " * bbl.edition * } 'skip$ 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 duplicate$ empty$ 'skip$
|
||
|
{ duplicate$ multi.page.check
|
||
|
{ n.dashify bbl.pages swap$}
|
||
|
{ bbl.page swap$ }
|
||
|
if$
|
||
|
tie.or.space.prefix "pages" bibinfo.check * * }
|
||
|
if$
|
||
|
}
|
||
|
FUNCTION {format.journal.pages}
|
||
|
{ pages empty$ {""}
|
||
|
{ pages n.dashify bbl.pages
|
||
|
swap$ tie.or.space.prefix "pages" bibinfo.check * *}
|
||
|
if$
|
||
|
}
|
||
|
|
||
|
FUNCTION {get.url.type}
|
||
|
{s #1 #5 substring$ "http:" = {http.url}
|
||
|
{s #1 #6 substring$ "https:" = {http.url}
|
||
|
{s #1 #5 substring$ "file:" = {file.url}
|
||
|
{s #1 #4 substring$ "ftp:" = {ftp.url}
|
||
|
{s #1 #4 substring$ "doi:" = {doi.url}
|
||
|
{s #1 #7 substring$ "mailto:" = {mailto.url} {unknown.url} if$}
|
||
|
if$}
|
||
|
if$}
|
||
|
if$}
|
||
|
if$}
|
||
|
if$
|
||
|
'url.type :=
|
||
|
}
|
||
|
|
||
|
FUNCTION {expand.doi}
|
||
|
{s
|
||
|
url.type doi.url =
|
||
|
{#5 global.max$ substring$ bbl.doi.url swap$ *}
|
||
|
'skip$ if$
|
||
|
}
|
||
|
|
||
|
INTEGERS {url.pos url.length}
|
||
|
FUNCTION {filter.url.tex}
|
||
|
{s text.length$ #1 + 'url.length :=
|
||
|
#1 'url.pos := "" 't :=
|
||
|
{url.pos url.length <}
|
||
|
{s url.pos #1 substring$
|
||
|
duplicate$ "_" = {pop$ "\underline{\ }" } 'skip$ if$
|
||
|
duplicate$ "%" = {pop$ "\%" } 'skip$ if$
|
||
|
duplicate$ "&" = {pop$ "\&" } 'skip$ if$
|
||
|
duplicate$ "~" = {pop$ "\~{}" } 'skip$ if$
|
||
|
duplicate$ "/" = {pop$ "\-/" } 'skip$ if$
|
||
|
duplicate$ "." = {pop$ "\-." } 'skip$ if$
|
||
|
duplicate$ "\" = {pop$ "{\textbackslash}" } 'skip$ if$
|
||
|
duplicate$ "#" = {pop$ "\#" } 'skip$ if$
|
||
|
duplicate$ "_" = {pop$ "\_" } 'skip$ if$
|
||
|
t swap$ * 't :=
|
||
|
url.pos #1 + 'url.pos :=
|
||
|
}
|
||
|
while$
|
||
|
t
|
||
|
}
|
||
|
FUNCTION {filter.url.html}
|
||
|
{s text.length$ #1 + 'url.length :=
|
||
|
#1 'url.pos := "" 't :=
|
||
|
{url.pos url.length <}
|
||
|
{s url.pos #1 substring$
|
||
|
duplicate$ "%" = {pop$ "\%" } 'skip$ if$
|
||
|
duplicate$ "#" = {pop$ "\#" } 'skip$ if$
|
||
|
duplicate$ "_" = {pop$ "\_" } 'skip$ if$
|
||
|
t swap$ * 't :=
|
||
|
url.pos #1 + 'url.pos :=
|
||
|
}
|
||
|
while$
|
||
|
t
|
||
|
}
|
||
|
|
||
|
FUNCTION {compose.url}
|
||
|
{'s :=
|
||
|
get.url.type
|
||
|
bbl.url.available
|
||
|
abnt.url.package #0 =
|
||
|
{ "$<$" *
|
||
|
abnt.doi abnt.doi.expand.to.url = 'expand.doi {s} if$
|
||
|
* "$>$" *} 'skip$ if$
|
||
|
abnt.url.package #1 =
|
||
|
{ "\url{" * filter.url.html * "}" *} 'skip$ if$
|
||
|
abnt.url.package #2 =
|
||
|
{url.type http.url =
|
||
|
{"\htmladdnormallink{$<$" * filter.url.tex * "$>$}{" * filter.url.html * "}" *}
|
||
|
'skip$ if$
|
||
|
url.type doi.url = url.type ftp.url = or url.type mailto.url = or
|
||
|
{"\htmladdnormallink{$<$" *
|
||
|
abnt.doi abnt.doi.expand.to.url = 'expand.doi {s} if$
|
||
|
* "$>$}{" *
|
||
|
abnt.doi abnt.doi.leave.as.is = {s} 'expand.doi if$
|
||
|
* "}" * }
|
||
|
'skip$ if$
|
||
|
url.type unknown.url =
|
||
|
{"$<$" * filter.url.tex * "$>$" *}
|
||
|
'skip$ if$} 'skip$ if$
|
||
|
}
|
||
|
FUNCTION {format.url}
|
||
|
{ url empty$ 'skip$
|
||
|
{url compose.url output new.sentence }
|
||
|
if$
|
||
|
urlaccessdate duplicate$ empty$ 'skip$
|
||
|
{ bbl.url.accessdate swap$ *}
|
||
|
if$
|
||
|
"urlaccessdate" bibinfo.check output new.sentence
|
||
|
}
|
||
|
|
||
|
FUNCTION {format.conference.info}
|
||
|
{ conference-number empty$
|
||
|
'skip$
|
||
|
{conference-number "." * output}
|
||
|
if$
|
||
|
conference-year empty$
|
||
|
'skip$
|
||
|
{conference-year output}
|
||
|
if$
|
||
|
conference-location empty$
|
||
|
'skip$
|
||
|
{conference-location output}
|
||
|
if$
|
||
|
new.sentence
|
||
|
}
|
||
|
|
||
|
|
||
|
FUNCTION {format.chapter.pages}
|
||
|
{ chapter empty$
|
||
|
'format.pages
|
||
|
{ type empty$
|
||
|
{ bbl.chapter }
|
||
|
{ type "l" change.case$
|
||
|
"type" bibinfo.check }
|
||
|
if$
|
||
|
chapter tie.or.space.prefix "chapter" bibinfo.check * *
|
||
|
pages empty$
|
||
|
'skip$
|
||
|
{ ", " * format.pages * }
|
||
|
if$ }
|
||
|
if$
|
||
|
}
|
||
|
|
||
|
FUNCTION {format.booktitle}
|
||
|
{author empty$ editor empty$ and organization empty$ and
|
||
|
{booktitle format.title.as.author "booktitle" bibinfo.check duplicate$ empty$ 'skip$ {} if$
|
||
|
booksubtitle empty$ 'skip$ {booksubtitle ": " swap$ * "t" change.case$ *
|
||
|
apply.title.command} if$}
|
||
|
{booktitle "booktitle" bibinfo.check emphasize duplicate$ empty$ 'skip$ {} if$
|
||
|
booksubtitle empty$ 'skip$ {booksubtitle ": " swap$ * "t" change.case$ *
|
||
|
apply.title.command} if$}
|
||
|
if$
|
||
|
}
|
||
|
FUNCTION {format.editors}
|
||
|
{ editor empty$
|
||
|
{"inbook" type$ = 'bbl.same.field 'skip$ if$}
|
||
|
{author empty$
|
||
|
{editor "editor" format.names " (" *
|
||
|
editortype empty$ {bbl.editor} {editortype} if$
|
||
|
")" * * }
|
||
|
{"inbook" type$ =
|
||
|
{bbl.same.field }
|
||
|
{editor "editor" format.names " (" *
|
||
|
editortype empty$ {bbl.editor} {editortype} if$
|
||
|
")" * *}
|
||
|
if$}
|
||
|
if$}
|
||
|
if$
|
||
|
}
|
||
|
FUNCTION {format.in.ed.booktitle}
|
||
|
{ editor empty$
|
||
|
{organization empty$ not author empty$ not and %if one of two not empty
|
||
|
{word.in organization "u" change.case$ * output
|
||
|
format.conference.info
|
||
|
booktitle empty$ {""} {new.sentence format.booktitle} if$}
|
||
|
{word.in
|
||
|
organization empty$ author empty$ and 'skip$
|
||
|
{"inbook" type$ = {bbl.same.field * output new.sentence ""}
|
||
|
'skip$ if$ } if$
|
||
|
booktitle empty$ 'skip$ {format.booktitle *} if$}
|
||
|
if$}
|
||
|
{word.in format.editors * output
|
||
|
booktitle empty$ {""} {new.sentence format.booktitle} if$}
|
||
|
if$
|
||
|
output
|
||
|
new.sentence
|
||
|
}
|
||
|
FUNCTION {empty.misc.check}
|
||
|
{ author empty$ title empty$ howpublished empty$
|
||
|
month empty$ year empty$ note empty$
|
||
|
and and and and and
|
||
|
key empty$ not and
|
||
|
{ "todos os campos relevantes estão vazios ou faltando em " cite$ * warning$ }
|
||
|
'skip$
|
||
|
if$
|
||
|
}
|
||
|
FUNCTION {format.type}
|
||
|
{ type "type" bibinfo.check
|
||
|
duplicate$ empty$ 'skip$
|
||
|
{new.block "" swap$ * }
|
||
|
if$
|
||
|
}
|
||
|
|
||
|
|
||
|
FUNCTION {format.year}
|
||
|
{year empty$
|
||
|
{ "campo year vazio ou faltando em " cite$ *
|
||
|
abnt.missing.year {" (vou colocar [s.d.])" *} 'skip$ if$ warning$
|
||
|
abnt.missing.year {", " } {""} if$ bbl.missing.year *}
|
||
|
{year n.dashify "year" bibinfo.check}
|
||
|
if$
|
||
|
}
|
||
|
|
||
|
FUNCTION {format.year.presented}
|
||
|
{year-presented empty$
|
||
|
{""}
|
||
|
{year-presented n.dashify}
|
||
|
if$
|
||
|
}
|
||
|
|
||
|
FUNCTION {format.field.address}
|
||
|
{ 't :=
|
||
|
address empty$ organization empty$ and url empty$ and t empty$ and
|
||
|
{bbl.no.address.no.publisher}
|
||
|
{address empty$
|
||
|
%if an url is present we don't give a missing address "[s.l.]" notice
|
||
|
{url empty$ {bbl.no.address ": "} {"" ""} if$}
|
||
|
{address ": "}
|
||
|
if$
|
||
|
t empty$
|
||
|
{%if an organization is present then it is OK not to have a publisher
|
||
|
organization empty$ {* bbl.no.publisher * } 'pop$ if$}
|
||
|
{* t * }
|
||
|
if$}
|
||
|
if$
|
||
|
}
|
||
|
|
||
|
FUNCTION {format.address}
|
||
|
{address empty$
|
||
|
{ bbl.no.address}
|
||
|
{ address}
|
||
|
if$
|
||
|
}
|
||
|
|
||
|
FUNCTION {format.publisher.address}
|
||
|
{ publisher "publisher" bibinfo.check format.field.address}
|
||
|
|
||
|
FUNCTION {format.publisher.address.relax}
|
||
|
{publisher empty$ address empty$ and {""}
|
||
|
{publisher "publisher" bibinfo.check format.field.address}
|
||
|
if$}
|
||
|
|
||
|
FUNCTION {format.organization.address}
|
||
|
{ organization "organization" bibinfo.check format.field.address}
|
||
|
|
||
|
%retains current authorship for future use
|
||
|
FUNCTION {compare.authorship}
|
||
|
{abnt.repeated.author.omit
|
||
|
{duplicate$ "" = 'skip$
|
||
|
{duplicate$ previous.author =
|
||
|
{duplicate$ 'previous.author :=
|
||
|
pop$ bbl.same.field
|
||
|
#1 'repeated.author :=}
|
||
|
{duplicate$ 'previous.author :=
|
||
|
#0 'repeated.author :=}
|
||
|
if$}
|
||
|
if$}
|
||
|
'skip$
|
||
|
if$
|
||
|
}
|
||
|
|
||
|
FUNCTION {format.author.or.organization}
|
||
|
{ author empty$
|
||
|
{ organization empty$ 'skip$
|
||
|
{ organization "u" change.case$ "organization" bibinfo.check output}
|
||
|
if$}
|
||
|
{ format.authors output.nonnull }
|
||
|
if$
|
||
|
compare.authorship
|
||
|
}
|
||
|
|
||
|
|
||
|
FUNCTION {format.editor.or.organization}
|
||
|
{ editor empty$
|
||
|
{ organization empty$ 'skip$
|
||
|
{ organization "u" change.case$ "organization" bibinfo.check output}
|
||
|
if$}
|
||
|
{ format.editors output.nonnull }
|
||
|
if$
|
||
|
compare.authorship
|
||
|
}
|
||
|
|
||
|
FUNCTION {format.author.or.editor.or.organization}
|
||
|
{ author empty$
|
||
|
{ editor empty$
|
||
|
{ organization empty$
|
||
|
'skip$
|
||
|
{ organization "u" change.case$ "organization" bibinfo.check output}
|
||
|
if$}
|
||
|
{ format.editors output.nonnull }
|
||
|
if$}
|
||
|
{ format.authors output.nonnull }
|
||
|
if$
|
||
|
compare.authorship
|
||
|
}
|
||
|
|
||
|
FUNCTION {format.reprint}
|
||
|
{ reprinted-text missing$
|
||
|
{""}
|
||
|
{reprinted-text empty$
|
||
|
{bbl.reprint} {reprinted-text} if$
|
||
|
bbl.colon *}
|
||
|
if$
|
||
|
}
|
||
|
|
||
|
FUNCTION {format.journal}
|
||
|
{
|
||
|
format.reprint
|
||
|
journal emphasize *
|
||
|
}
|
||
|
|
||
|
|
||
|
%generates the first label in \abntrefinfo to be used with \citeonline
|
||
|
FUNCTION {format.names.for.label1} %abnt-alf only
|
||
|
{ 's := "" 't :=
|
||
|
#1 'nameptr := s num.names$ 'numnames :=
|
||
|
numnames 'namesleft :=
|
||
|
{ namesleft #0 > }
|
||
|
{abnt.last.names
|
||
|
{s nameptr "{ll}{ jj}" format.name$}
|
||
|
{s nameptr "{ll}" format.name$ #1 "{ll}" format.name$
|
||
|
s nameptr "{ jj}" format.name$ *}
|
||
|
if$
|
||
|
't :=
|
||
|
nameptr #1 >
|
||
|
{namesleft #1 >
|
||
|
{ numnames abnt.etal.cite > abnt.etal.cite #0 = not and
|
||
|
{#0 'namesleft := abnt.etal.cite {bbl.etal *} 'skip$ if$}
|
||
|
{", " * t * } if$ }
|
||
|
{ t "others" =
|
||
|
{abnt.etal.cite {bbl.etal *} 'skip$ if$}
|
||
|
{numnames nameptr =
|
||
|
{bbl.and * t *}
|
||
|
'skip$ if$}
|
||
|
if$
|
||
|
}
|
||
|
if$ }
|
||
|
't
|
||
|
if$
|
||
|
nameptr #1 + 'nameptr :=
|
||
|
namesleft #1 - 'namesleft := }
|
||
|
while$
|
||
|
}
|
||
|
|
||
|
%generates the second label in \abntrefinfo to be used with \cite
|
||
|
FUNCTION {format.names.for.label2} %abnt-alf only
|
||
|
{ 's := "" 't :=
|
||
|
#1 'nameptr := s num.names$ 'numnames :=
|
||
|
numnames 'namesleft :=
|
||
|
{ namesleft #0 > }
|
||
|
{abnt.last.names
|
||
|
{s nameptr "{ll}{ jj}" format.name$}
|
||
|
{s nameptr "{ll}" format.name$ #1 "{ll}" format.name$
|
||
|
s nameptr "{ jj}" format.name$ *}
|
||
|
if$
|
||
|
abnt.cite.style #0 = {"u" change.case$} 'skip$ if$ 't :=
|
||
|
nameptr #1 >
|
||
|
{namesleft #1 >
|
||
|
{ numnames abnt.etal.cite >
|
||
|
{#0 'namesleft := abnt.etal.cite {bbl.etal *} 'skip$ if$}
|
||
|
{"; " * t * } if$ }
|
||
|
{ t "OTHERS" = t "others" = or
|
||
|
{abnt.etal.cite {bbl.etal *} 'skip$ if$}
|
||
|
{numnames nameptr = { bbl.semicolon * t *} 'skip$ if$}
|
||
|
if$
|
||
|
}
|
||
|
if$ }
|
||
|
't
|
||
|
if$
|
||
|
nameptr #1 + 'nameptr :=
|
||
|
namesleft #1 - 'namesleft := }
|
||
|
while$
|
||
|
}
|
||
|
|
||
|
FUNCTION {format.title.for.label}
|
||
|
{ 's :=
|
||
|
#1 'title.pos := #1 'first.word :=
|
||
|
"" 't :=
|
||
|
{first.word}
|
||
|
{s title.pos #1 substring$ 'title.char :=
|
||
|
title.char "." = title.char ":" = or title.char ";" = or
|
||
|
title.char "," = or title.char " " = or s t = or
|
||
|
{#0 'first.word :=
|
||
|
title.pos #1 + 'title.pos :=}
|
||
|
{title.pos #1 + 'title.pos := t title.char * 't :=}
|
||
|
if$
|
||
|
}
|
||
|
while$
|
||
|
s t = %title equals first word, dont use bbl.ldots
|
||
|
{t "}{" * t
|
||
|
abnt.cite.style #0 = {"u" change.case$ * } 'skip$ if$}
|
||
|
{t bbl.ldots * "}{" * t
|
||
|
abnt.cite.style #0 = {"u" change.case$} 'skip$ if$ * bbl.ldots *}
|
||
|
if$
|
||
|
}
|
||
|
|
||
|
%cvs keys have the general form $key: value $
|
||
|
INTEGERS {key.pos value.pos}
|
||
|
FUNCTION {extract.cvs.key} %we borrow the functionality of format.title.for.label
|
||
|
{ 's := %holds the entire cvs string
|
||
|
#1 'key.pos :=
|
||
|
#0 'value.pos := %0= between first $ and :, 1=between : and second $, 2= at the end
|
||
|
"" 't := %holds the resulting value
|
||
|
{value.pos #0 = value.pos #1 = or}
|
||
|
{ s key.pos #1 substring$ 'title.char :=
|
||
|
value.pos #0 =
|
||
|
{ title.char ":" = {#1 'value.pos := key.pos #1 + 'key.pos :=} 'skip$ if$}
|
||
|
{ title.char "$" =
|
||
|
{#2 'value.pos :=}
|
||
|
{t title.char * 't :=}
|
||
|
if$}
|
||
|
if$
|
||
|
key.pos #1 + 'key.pos :=
|
||
|
}
|
||
|
while$
|
||
|
t
|
||
|
}
|
||
|
|
||
|
%generates and extended label of type {Author}{AUTHOR}{YEAR}
|
||
|
%for abnt.cite.style=1 they will be of type {Author}{Author}{YEAR}
|
||
|
%final result is placed into variable label
|
||
|
FUNCTION {calc.extended.label}
|
||
|
{ "{"
|
||
|
author empty$ not
|
||
|
{author format.names.for.label1 * "}{" * author format.names.for.label2 *}
|
||
|
{editor empty$ not
|
||
|
{editor format.names.for.label1 * "}{" * editor format.names.for.label2 *}
|
||
|
{org-short empty$ not
|
||
|
{org-short * "}{" * org-short "u" change.case$ *}
|
||
|
{organization empty$ not
|
||
|
{organization * "}{" * organization "u" change.case$ *}
|
||
|
{title empty$ not
|
||
|
{title format.title.for.label *}
|
||
|
{"nada}{NADA" *}
|
||
|
if$}
|
||
|
if$}
|
||
|
if$}
|
||
|
if$}
|
||
|
if$
|
||
|
"}{" *
|
||
|
year empty$ 'skip$ {year *} if$
|
||
|
'label := %place the stack into label
|
||
|
% final } will be placed in reverse.pass
|
||
|
}
|
||
|
%generates and simple label of type "Author YEAR"
|
||
|
%final result is placed onto the stack
|
||
|
FUNCTION {calc.simple.label}
|
||
|
{ author empty$ not
|
||
|
{author format.names.for.label1}
|
||
|
{editor empty$ not
|
||
|
{editor format.names.for.label1}
|
||
|
{organization empty$ not
|
||
|
{organization}
|
||
|
{title empty$ not
|
||
|
{title}
|
||
|
{""}
|
||
|
if$}
|
||
|
if$}
|
||
|
if$}
|
||
|
if$
|
||
|
year empty$ 'skip$ {" " * year *} if$
|
||
|
}
|
||
|
|
||
|
FUNCTION {output.bibitem}
|
||
|
{ newline$
|
||
|
abnt.alf
|
||
|
{"\bibitem[" write$
|
||
|
calc.simple.label
|
||
|
write$ "]{"}
|
||
|
{"\bibitem{"}
|
||
|
if$
|
||
|
write$ cite$ write$ "}" write$ newline$
|
||
|
abnt.refinfo #1 = {"\abntrefinfo" write$ label write$ newline$} 'skip$ if$
|
||
|
"{" write$
|
||
|
"" before.all 'output.state :=
|
||
|
}
|
||
|
FUNCTION {output.hiddenbibitem}
|
||
|
{ newline$
|
||
|
abnt.alf
|
||
|
{"\hiddenbibitem[" write$
|
||
|
calc.simple.label
|
||
|
write$ "]{"}
|
||
|
{"\bibitem{"}
|
||
|
if$
|
||
|
write$ cite$ write$ "}" write$ newline$
|
||
|
abnt.refinfo #1 = {"\abntrefinfo" write$ label write$ newline$} 'skip$ if$
|
||
|
"{" write$
|
||
|
"" before.all 'output.state :=
|
||
|
}
|
||
|
FUNCTION {fin.entry}
|
||
|
{ add.period$ write$
|
||
|
reprinted-from empty$ 'skip$
|
||
|
{" " reprinted-text empty$
|
||
|
{bbl.reprint} {reprinted-text} if$ * bbl.colon *
|
||
|
"\abntreprintinfo{ " * reprinted-from * "}" * write$}
|
||
|
if$
|
||
|
abnt-note empty$ 'skip$
|
||
|
{"\footnote{" abnt-note * "}" * write$} if$
|
||
|
"}" write$
|
||
|
%newline$
|
||
|
write.entry.verbatim
|
||
|
}
|
||
|
|
||
|
FUNCTION { abnt.display.options}
|
||
|
{ 's := 't :=
|
||
|
abnt.show.options #1 = % "warn"
|
||
|
{"opção " t * " passou para " * s * warning$ } 'skip$ if$
|
||
|
|
||
|
abnt.show.options #2 = % "list"
|
||
|
{"Op\c c\~ao selecionada {\tt " t * "=}\verb+" * s * "+" * output new.sentence } 'skip$ if$
|
||
|
}
|
||
|
|
||
|
FUNCTION { abnt-options1 }
|
||
|
{
|
||
|
abnt-show-options empty$
|
||
|
'skip$
|
||
|
{abnt-show-options "no" =
|
||
|
{#0} {abnt-show-options "warn" =
|
||
|
{#1} {abnt-show-options "list" =
|
||
|
{#2 } {#0 } if$} if$} if$
|
||
|
'abnt.show.options :=} % #0 "no"; #1 "warn"; #2 "list"
|
||
|
if$
|
||
|
|
||
|
abnt.show.options #2 =
|
||
|
{output.bibitem "Mudan\c ca de estilo ap\'os este ponto com o comando \verb!\citeoption{"
|
||
|
cite$ * "}! " *
|
||
|
output new.sentence} 'skip$ if$
|
||
|
|
||
|
abnt-show-options empty$
|
||
|
'skip$ {"abnt-show-options" abnt-show-options abnt.display.options} if$
|
||
|
|
||
|
abnt-cite-style empty$
|
||
|
'skip$
|
||
|
{abnt-cite-style "(AUTHOR, YEAR)" =
|
||
|
{#0 'abnt.cite.style :=}
|
||
|
{abnt-cite-style "(Author, YEAR)" =
|
||
|
{#1 'abnt.cite.style :=}
|
||
|
{"opção " abnt-cite-style * " desconhecida" * warning$}
|
||
|
if$}
|
||
|
if$
|
||
|
"abnt-cite-style" abnt-cite-style abnt.display.options}if$
|
||
|
|
||
|
abnt-experimental empty$
|
||
|
'skip$ {abnt-experimental "yes" = 'abnt.experimental :=
|
||
|
"abnt-experimental" abnt-experimental abnt.display.options} if$
|
||
|
|
||
|
abnt-emphasize duplicate$ empty$
|
||
|
'pop$ {'abnt.emphasize :=
|
||
|
"abnt-emphasize" abnt.emphasize abnt.display.options
|
||
|
abnt-emphasize "\bf" = abnt-emphasize "\it" = or abnt-emphasize "\em" = or
|
||
|
abnt-emphasize "\bfseries" = or
|
||
|
{"não use " abnt-emphasize * " para abnt-emphasize em " * cite$ *
|
||
|
", isto alterará TODO o texto. Use \textbf ou \emph. Veja a documentação abnt-bibtex-doc para mais detalhes." * warning$}
|
||
|
'skip$ if$
|
||
|
} if$
|
||
|
|
||
|
abnt-doi empty$
|
||
|
'skip$
|
||
|
{abnt-doi "expand" =
|
||
|
{abnt.doi.expand.to.url 'abnt.doi :=}
|
||
|
{abnt-doi "link" =
|
||
|
{abnt.doi.link 'abnt.doi :=}
|
||
|
{abnt-doi "doi" =
|
||
|
{abnt.doi.leave.as.is 'abnt.doi :=}
|
||
|
{"opção " abnt-doi * " desconhecida" * warning$}
|
||
|
if$}
|
||
|
if$}
|
||
|
if$
|
||
|
"abnt-doi" abnt-doi abnt.display.options}if$
|
||
|
}
|
||
|
FUNCTION { abnt-options2 }
|
||
|
{
|
||
|
abnt-full-initials empty$
|
||
|
'skip$ {abnt-full-initials "yes" = 'abnt.full.initials :=
|
||
|
"abnt-full-initials" abnt-full-initials abnt.display.options} if$
|
||
|
|
||
|
abnt-last-names empty$
|
||
|
'skip$
|
||
|
{abnt-last-names "abnt" = {#0}
|
||
|
{abnt-last-names "bibtex" = {#1} {#0} if$} if$
|
||
|
'abnt.last.names :=
|
||
|
"abnt-last-names" abnt-last-names abnt.display.options}
|
||
|
if$
|
||
|
|
||
|
|
||
|
abnt-ldots-type empty$
|
||
|
'skip$
|
||
|
{abnt-ldots-type "none" = {#0}
|
||
|
{abnt-ldots-type "normal" = {#1}
|
||
|
{abnt-ldots-type "math" = {#2}
|
||
|
{abnt-ldots-type "text" = {#1} {#0}
|
||
|
if$} if$} if$} if$
|
||
|
'abnt.ldots.type :=
|
||
|
"abnt-ldots-type" abnt-ldots-type abnt.display.options}
|
||
|
if$
|
||
|
|
||
|
abnt-missing-year empty$
|
||
|
'skip$
|
||
|
{abnt-missing-year "void" = {#0}
|
||
|
{abnt-missing-year "sd" = {#1} {#0} if$}
|
||
|
if$
|
||
|
'abnt.missing.year :=
|
||
|
"abnt-missing-year" abnt-missing-year abnt.display.options}
|
||
|
if$
|
||
|
|
||
|
|
||
|
abnt-and-type empty$
|
||
|
'skip$ {abnt-and-type "e" =
|
||
|
{#0} {abnt-and-type "&" =
|
||
|
{#1} {#0} if$} if$
|
||
|
'abnt.and.type :=
|
||
|
"abnt-and-type" abnt-and-type abnt.display.options}
|
||
|
if$
|
||
|
|
||
|
abnt-thesis-year empty$
|
||
|
'skip$ {abnt-thesis-year "final" =
|
||
|
{#0} {abnt-thesis-year "title" =
|
||
|
{#1} {abnt-thesis-year "both" =
|
||
|
{#2} {#0} if$} if$} if$
|
||
|
'abnt.thesis.year :=
|
||
|
"abnt-thesis-year" abnt-thesis-year abnt.display.options}
|
||
|
if$
|
||
|
|
||
|
abnt-refinfo empty$
|
||
|
'skip$ {abnt-refinfo "yes" = 'abnt.refinfo :=
|
||
|
"abnt-refinfo" abnt-refinfo abnt.display.options} if$
|
||
|
}
|
||
|
FUNCTION { abnt-options3 }
|
||
|
{
|
||
|
|
||
|
abnt-dont-use-etal empty$
|
||
|
'skip$ {abnt-dont-use-etal "yes" = {#0 'abnt.etal.list :=} 'skip$ if$
|
||
|
"Uso da opção abnt-dont-use-etal se tornou obsoleto, usamos abnt-etal-list." warning$
|
||
|
"abnt-etal-list" abnt.etal.list int.to.str$ abnt.display.options} if$
|
||
|
|
||
|
abnt-etal-cite empty$
|
||
|
'skip$ {abnt-etal-cite str.to.int 'abnt.etal.cite :=
|
||
|
"abnt-etal-cite" abnt.etal.cite int.to.str$ abnt.display.options} if$
|
||
|
|
||
|
abnt-etal-list empty$
|
||
|
'skip$ {abnt-etal-list str.to.int 'abnt.etal.list :=
|
||
|
"abnt-etal-list" abnt.etal.list int.to.str$ abnt.display.options} if$
|
||
|
|
||
|
abnt-etal-text missing$
|
||
|
'skip$ {abnt-etal-text 'abnt.etal.text :=
|
||
|
"abnt-etal-text" abnt.etal.text abnt.display.options} if$
|
||
|
|
||
|
abnt-no-etal-label empty$
|
||
|
'skip$ {abnt-no-etal-label "yes" = {#0 'abnt.etal.cite :=} 'skip$ if$
|
||
|
"Uso da opção abnt-no-etal-label se tornou obsoleto, usamos abnt-etal-cite." warning$
|
||
|
"abnt-etal-cite" abnt.etal.cite int.to.str$ abnt.display.options} if$
|
||
|
|
||
|
abnt-repeated-author-omit empty$
|
||
|
'skip$ {abnt-repeated-author-omit "yes" =
|
||
|
{#1 'abnt.repeated.author.omit :=}
|
||
|
{#0 'abnt.repeated.author.omit := "" 'previous.author :=} if$
|
||
|
"abnt-repeated-author-omit" abnt-repeated-author-omit abnt.display.options} if$
|
||
|
|
||
|
abnt-repeated-title-omit empty$ 'skip$
|
||
|
{abnt-repeated-title-omit "yes" =
|
||
|
{#1 'abnt.repeated.title.omit :=}
|
||
|
{#0 'abnt.repeated.title.omit := "" 'previous.title :=} if$
|
||
|
"abnt-repeated-title-omit" abnt-repeated-title-omit abnt.display.options
|
||
|
abnt.repeated.author.omit not abnt.repeated.title.omit and
|
||
|
{"Use abnt-repeated-title-omit=yes junto com abnt-repeated-author-omit=yes"
|
||
|
warning$} 'skip$ if$} if$
|
||
|
|
||
|
abnt-title-command empty$
|
||
|
'skip$ {abnt-title-command "yes" =
|
||
|
{#1 'abnt.title.command :=}
|
||
|
{#0 'abnt.title.command :=} if$
|
||
|
"abnt-title-command" abnt-title-command abnt.display.options} if$
|
||
|
|
||
|
abnt-url-package empty$ 'skip$
|
||
|
{abnt-url-package "url" =
|
||
|
{#1 'abnt.url.package :=}
|
||
|
{abnt-url-package "hyperref" = {#2 'abnt.url.package :=} 'skip$ if$}
|
||
|
if$
|
||
|
"abnt-url-package" abnt-url-package abnt.display.options}
|
||
|
if$
|
||
|
|
||
|
abnt-verbatim-entry empty$
|
||
|
'skip$ {abnt-verbatim-entry "yes" = 'abnt.verbatim.entry :=
|
||
|
"abnt-verbatim-entry" abnt-verbatim-entry abnt.display.options} if$
|
||
|
|
||
|
abnt.show.options #2 = 'fin.entry 'skip$ if$
|
||
|
}
|
||
|
|
||
|
%we had to break this function in two parts because of the following message:
|
||
|
%Sorry---you've exceeded BibTeX's single function space 100
|
||
|
%(That was a fatal error)
|
||
|
FUNCTION { iso-options1 }
|
||
|
{
|
||
|
iso-abbreviation empty$
|
||
|
'skip$ {iso-abbreviation "standard" = 'iso.abbreviation :=
|
||
|
"iso-abbreviation" iso-abbreviation abnt.display.options} if$
|
||
|
iso-author-punctuation empty$
|
||
|
'skip$ {iso-author-punctuation "void" = 'iso.author.punctuation :=
|
||
|
"iso-author-punctuation" iso-author-punctuation abnt.display.options} if$
|
||
|
iso-date-place empty$
|
||
|
'skip$ {iso-date-place "ISO" = 'iso.date.place :=
|
||
|
"iso-date-place" iso-date-place abnt.display.options} if$
|
||
|
}
|
||
|
|
||
|
FUNCTION { abnt-options }
|
||
|
{
|
||
|
abnt-options1
|
||
|
abnt-options2
|
||
|
abnt-options3
|
||
|
iso-options1
|
||
|
}
|
||
|
|
||
|
FUNCTION { iso-options } { abnt-options }
|
||
|
|
||
|
FUNCTION { iso.year.label }
|
||
|
{ iso.date.place
|
||
|
{ abnt.alf
|
||
|
{year.label output new.sentence}
|
||
|
'skip$ if$}
|
||
|
'skip$ if$}
|
||
|
|
||
|
FUNCTION { iso.date }
|
||
|
{ iso.date.place
|
||
|
{ abnt.alf
|
||
|
'skip$
|
||
|
{year output new.sentence}
|
||
|
if$}
|
||
|
'skip$ if$}
|
||
|
|
||
|
FUNCTION { non.iso.date }
|
||
|
{iso.date.place 'skip$ {format.date output} if$}
|
||
|
|
||
|
FUNCTION {article}
|
||
|
{ output.bibitem
|
||
|
format.author.or.organization new.sentence
|
||
|
iso.year.label
|
||
|
format.title "title" output.check new.block
|
||
|
format.journal output
|
||
|
iso.date.place {format.year output} 'skip$ if$
|
||
|
%iso.date.place {format.date output} 'skip$ if$
|
||
|
%iso.date.place {abnt.alf 'skip$ {format.year output new.sentence} if$}
|
||
|
% {format.year output new.sentence} if$
|
||
|
section "section" bibinfo.check output.dash
|
||
|
publisher "publisher" bibinfo.check output
|
||
|
address "address" bibinfo.check output
|
||
|
format.volume output
|
||
|
format.number output
|
||
|
format.pages output
|
||
|
non.iso.date
|
||
|
format.issn output new.block
|
||
|
format.note output new.block
|
||
|
format.url
|
||
|
fin.entry
|
||
|
}
|
||
|
FUNCTION {book}
|
||
|
{ output.bibitem
|
||
|
format.author.or.editor.or.organization new.sentence
|
||
|
iso.year.label
|
||
|
format.type output new.sentence
|
||
|
format.btitle "title" output.check new.sentence
|
||
|
format.furtherresp new.sentence
|
||
|
format.edition output new.sentence
|
||
|
format.publisher.address output
|
||
|
iso.date.place {abnt.alf 'skip$ {format.year output new.sentence} if$}
|
||
|
{format.year output new.sentence} if$
|
||
|
format.volume output new.sentence
|
||
|
format.book.pages output
|
||
|
format.illustrated
|
||
|
format.dimensions new.sentence
|
||
|
format.howpublished output new.sentence
|
||
|
format.volume.number.series output new.sentence
|
||
|
format.note output
|
||
|
format.issn output %pode parecer curioso, mas revistas inteiras são tratadas como livro
|
||
|
format.isbn output new.sentence
|
||
|
format.url
|
||
|
fin.entry
|
||
|
}
|
||
|
FUNCTION {booklet}
|
||
|
{ output.bibitem
|
||
|
format.author.or.editor.or.organization new.sentence
|
||
|
iso.year.label
|
||
|
format.type output new.sentence
|
||
|
format.btitle "title" output.check new.sentence
|
||
|
format.edition output new.sentence
|
||
|
address "address" bibinfo.check output
|
||
|
format.bvolume output
|
||
|
%format.date output new.sentence
|
||
|
iso.date.place {abnt.alf 'skip$ {format.year output new.sentence} if$}
|
||
|
{format.year output new.sentence} if$
|
||
|
format.book.pages output new.sentence
|
||
|
format.volume.number.series output new.sentence
|
||
|
format.note output
|
||
|
format.isbn output new.sentence
|
||
|
format.url
|
||
|
fin.entry
|
||
|
}
|
||
|
|
||
|
FUNCTION {hidden}
|
||
|
{ output.hiddenbibitem
|
||
|
fin.entry}
|
||
|
|
||
|
FUNCTION {inbook}
|
||
|
{ output.bibitem
|
||
|
format.author.or.organization new.sentence
|
||
|
iso.year.label
|
||
|
format.title "title" output.check new.block
|
||
|
format.in.ed.booktitle
|
||
|
format.furtherresp new.sentence
|
||
|
format.edition output new.sentence
|
||
|
format.publisher.address output
|
||
|
%format.year output new.sentence
|
||
|
iso.date.place {abnt.alf 'skip$ {format.year output new.sentence} if$}
|
||
|
{format.year output new.sentence} if$
|
||
|
format.bvolume.if.no.series output
|
||
|
format.volume.number.series output
|
||
|
format.chapter.pages output new.sentence
|
||
|
format.isbn output new.block
|
||
|
format.note output new.block
|
||
|
format.url
|
||
|
fin.entry
|
||
|
}
|
||
|
|
||
|
FUNCTION {incollection}
|
||
|
{ output.bibitem
|
||
|
format.author.or.organization new.sentence
|
||
|
iso.year.label
|
||
|
format.title "title" output.check new.sentence
|
||
|
format.in.ed.booktitle
|
||
|
format.edition output new.sentence
|
||
|
format.publisher.address output
|
||
|
%format.year output
|
||
|
iso.date.place {abnt.alf 'skip$ {format.year output new.sentence} if$}
|
||
|
{format.year output} if$
|
||
|
format.volume.number.series output new.sentence
|
||
|
format.bvolume.if.no.series output
|
||
|
format.chapter.pages output new.sentence
|
||
|
format.isbn output new.block
|
||
|
format.note output new.block
|
||
|
format.url
|
||
|
fin.entry
|
||
|
}
|
||
|
FUNCTION {inproceedings}
|
||
|
{ output.bibitem
|
||
|
format.author.or.organization new.sentence
|
||
|
iso.year.label
|
||
|
format.title "title" output.check new.sentence
|
||
|
format.in.ed.booktitle
|
||
|
format.publisher.address output
|
||
|
%format.year output new.sentence
|
||
|
iso.date.place {abnt.alf 'skip$ {format.year output new.sentence} if$}
|
||
|
{format.year output new.sentence} if$
|
||
|
format.bvolume.if.no.series output
|
||
|
format.volume.number.series output
|
||
|
format.pages output
|
||
|
format.isbn output
|
||
|
format.issn output new.sentence
|
||
|
format.note output new.sentence
|
||
|
format.url
|
||
|
fin.entry
|
||
|
}
|
||
|
FUNCTION {journalpart}
|
||
|
{ output.bibitem
|
||
|
format.author.or.editor.or.organization new.sentence
|
||
|
iso.year.label
|
||
|
format.type output new.sentence
|
||
|
format.btitle "title" output.check new.sentence
|
||
|
format.furtherresp new.sentence
|
||
|
format.edition output new.sentence
|
||
|
format.publisher.address output
|
||
|
format.volume output
|
||
|
format.number output
|
||
|
%format.date output new.sentence
|
||
|
iso.date.place {abnt.alf 'skip$ {format.year output new.sentence} if$}
|
||
|
{format.date output new.sentence} if$
|
||
|
format.book.pages output
|
||
|
format.illustrated
|
||
|
format.dimensions new.sentence
|
||
|
format.note output
|
||
|
format.issn output %pode parecer curioso, mas revistas inteiras são tratadas como livro
|
||
|
format.isbn output new.sentence
|
||
|
format.url
|
||
|
fin.entry
|
||
|
}
|
||
|
FUNCTION {conference} { inproceedings }
|
||
|
FUNCTION {manual}
|
||
|
{ output.bibitem
|
||
|
format.author.or.editor.or.organization new.sentence
|
||
|
iso.year.label
|
||
|
format.btitle "title" output.check new.block
|
||
|
format.furtherresp new.sentence
|
||
|
format.edition output new.sentence
|
||
|
format.address output
|
||
|
%format.date output new.sentence
|
||
|
iso.date.place {abnt.alf 'skip$ {format.year output new.sentence} if$}
|
||
|
{format.year output new.sentence} if$
|
||
|
format.bvolume.if.no.series output
|
||
|
format.book.pages output new.sentence
|
||
|
format.volume.number.series output new.sentence
|
||
|
format.note output new.sentence
|
||
|
format.url
|
||
|
fin.entry
|
||
|
}
|
||
|
|
||
|
FUNCTION {misc}
|
||
|
{ output.bibitem
|
||
|
format.author.or.editor.or.organization new.sentence
|
||
|
iso.year.label
|
||
|
format.type output
|
||
|
format.btitle output new.sentence
|
||
|
format.furtherresp new.sentence
|
||
|
format.publisher.address.relax output
|
||
|
%format.date output new.block
|
||
|
iso.date.place {abnt.alf 'skip$ {format.year output new.sentence} if$}
|
||
|
{format.year output new.sentence} if$
|
||
|
format.book.pages output new.sentence
|
||
|
format.illustrated
|
||
|
format.dimensions new.sentence
|
||
|
format.howpublished output new.block
|
||
|
format.volume.number.series output new.sentence
|
||
|
format.note output new.block
|
||
|
format.url
|
||
|
fin.entry
|
||
|
empty.misc.check
|
||
|
}
|
||
|
|
||
|
FUNCTION {patent}
|
||
|
{ output.bibitem
|
||
|
format.editor.or.organization new.sentence
|
||
|
iso.year.label
|
||
|
format.authors.plain output new.sentence
|
||
|
format.btitle output new.sentence
|
||
|
format.furtherresp new.sentence
|
||
|
%format.date output new.block
|
||
|
iso.date.place {abnt.alf 'skip$ {format.year output new.sentence} if$}
|
||
|
{format.year output new.sentence} if$
|
||
|
format.patent.number output
|
||
|
format.howpublished output new.block
|
||
|
format.note output new.block
|
||
|
format.url
|
||
|
fin.entry
|
||
|
empty.misc.check
|
||
|
}
|
||
|
|
||
|
FUNCTION {format.thesis.type}
|
||
|
{ type$ "phdthesis" =
|
||
|
{bbl.phdthesis}
|
||
|
{type$ "mastersthesis" =
|
||
|
{bbl.mthesis}
|
||
|
{type$ "monography" =
|
||
|
{bbl.monography}
|
||
|
{bbl.void}
|
||
|
if$}
|
||
|
if$}
|
||
|
if$
|
||
|
type empty$
|
||
|
{type missing$
|
||
|
{type$ "phdthesis" =
|
||
|
{ " (" bbl.phd * ")" *}
|
||
|
{type$ "mastersthesis" = { " (" bbl.master * ")" *} {pop$ ""} if$}
|
||
|
if$}
|
||
|
{""}
|
||
|
if$}
|
||
|
{type$ "thesis" =
|
||
|
{type}
|
||
|
{" (" type * ")" * "type" bibinfo.check}
|
||
|
if$}
|
||
|
if$
|
||
|
* %joins first and second part of this function
|
||
|
}
|
||
|
FUNCTION {thesis}
|
||
|
{ output.bibitem
|
||
|
format.authors "author" output.check new.block
|
||
|
iso.year.label
|
||
|
format.btitle "title" output.check new.block
|
||
|
abnt.thesis.year #1 = abnt.thesis.year #2 = or
|
||
|
{format.date "year" output.check new.sentence} 'skip$ if$
|
||
|
format.year.presented output new.sentence
|
||
|
format.book.pages output new.sentence
|
||
|
format.thesis.type output.nonnull
|
||
|
school "school" bibinfo.warn output.dash
|
||
|
address "address" bibinfo.check output
|
||
|
abnt.thesis.year #0 = abnt.thesis.year #2 = or
|
||
|
{format.date "year" output.check new.sentence} 'skip$ if$
|
||
|
format.note output new.block
|
||
|
format.url
|
||
|
fin.entry
|
||
|
}
|
||
|
|
||
|
FUNCTION {phdthesis} { thesis }
|
||
|
FUNCTION {mastersthesis} { thesis }
|
||
|
FUNCTION {monography} { thesis }
|
||
|
|
||
|
FUNCTION {proceedings}
|
||
|
{ output.bibitem
|
||
|
iso.year.label
|
||
|
format.editor.or.organization
|
||
|
format.conference.info
|
||
|
format.btitle "title" output.check
|
||
|
format.bvolume output
|
||
|
format.volume.number.series output
|
||
|
editor empty$
|
||
|
{ publisher empty$
|
||
|
'skip$
|
||
|
{ new.sentence format.publisher.address output format.year output}
|
||
|
if$
|
||
|
}
|
||
|
{ publisher empty$
|
||
|
{ new.sentence
|
||
|
format.organization.address output format.year output}
|
||
|
{ new.sentence
|
||
|
organization "organization" bibinfo.check output
|
||
|
format.publisher.address output format.year output}
|
||
|
if$ }
|
||
|
if$
|
||
|
new.sentence format.book.pages output new.sentence
|
||
|
format.isbn output
|
||
|
format.issn output new.block
|
||
|
format.note output new.block
|
||
|
format.url
|
||
|
fin.entry
|
||
|
}
|
||
|
|
||
|
FUNCTION {techreport} {manual}
|
||
|
|
||
|
FUNCTION {unpublished}
|
||
|
{ output.bibitem
|
||
|
format.author.or.editor.or.organization new.sentence
|
||
|
iso.year.label
|
||
|
format.title "title" output.check new.sentence
|
||
|
format.note "note" output.check new.sentence
|
||
|
%format.date output new.sentence
|
||
|
iso.date.place {abnt.alf 'skip$ {format.year output new.sentence} if$}
|
||
|
{format.year output new.sentence} if$
|
||
|
format.url
|
||
|
fin.entry
|
||
|
}
|
||
|
|
||
|
FUNCTION {default.type} { misc }
|
||
|
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$
|
||
|
}
|
||
|
FUNCTION {sort.format.names}
|
||
|
{ 's :=
|
||
|
#1 'nameptr :=
|
||
|
""
|
||
|
s num.names$ 'numnames :=
|
||
|
numnames 'namesleft :=
|
||
|
{ namesleft #0 > }
|
||
|
{ format.single.name 't :=
|
||
|
nameptr #1 >
|
||
|
{
|
||
|
nameptr #3
|
||
|
#1 + =
|
||
|
numnames #3
|
||
|
> and
|
||
|
{ "others" 't :=
|
||
|
#1 'namesleft := }
|
||
|
'skip$
|
||
|
if$
|
||
|
" " *
|
||
|
namesleft #1 = t "others" = and
|
||
|
{ "zzzzz" * }
|
||
|
{ t sortify * }
|
||
|
if$
|
||
|
}
|
||
|
{ 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 {any.sort}
|
||
|
{ author empty$
|
||
|
{ organization empty$
|
||
|
{ editor empty$
|
||
|
{ title empty$
|
||
|
{ key empty$
|
||
|
{ "para ordenar, precisa dos campos author, organization, editor, title ou key in " cite$ * warning$ ""}
|
||
|
{ key sortify }
|
||
|
if$}
|
||
|
{ title sortify}
|
||
|
if$}
|
||
|
{ editor sort.format.names }
|
||
|
if$}
|
||
|
{ organization sortify }
|
||
|
if$}
|
||
|
{ author sort.format.names }
|
||
|
if$
|
||
|
}
|
||
|
|
||
|
FUNCTION {presort}
|
||
|
{
|
||
|
any.sort
|
||
|
" " * year field.or.null sortify * " " * title field.or.null
|
||
|
sort.format.title * #1 entry.max$ substring$
|
||
|
%for non-alpha style we drop a void sort.key such that SORT has no effect
|
||
|
abnt.alf 'skip$ {pop$ ""} if$ 'sort.key$ :=
|
||
|
year empty$ {""} {year} if$ 'year.label :=
|
||
|
calc.extended.label
|
||
|
}
|
||
|
|
||
|
FUNCTION {set.default.abnt.variables}
|
||
|
{ %if you change abnt-num to abnt-alf by hand you need also to change
|
||
|
%the name of RCSfile by hand, otherwise cvs takes care of it.
|
||
|
%
|
||
|
"$RCSfile: abnt-alf.bst,v $ " extract.cvs.key
|
||
|
%
|
||
|
"abnt-alf.bst,v " = 'abnt.alf := % #1 para abnt-alf #0 para abnt-num
|
||
|
"$Revision: v<VERSION> $" extract.cvs.key 'abnt.bst.revision :=
|
||
|
#0 'abnt.and.type := % #0 "e"; #1 "&"
|
||
|
"\emph" 'abnt.emphasize :=
|
||
|
#0 'abnt.cite.style := %default norm version for NBR10520
|
||
|
%#0 \cite=(AUTHOR, YEAR)
|
||
|
%#1 \cite=(Author, YEAR)
|
||
|
#0 'abnt.experimental :=
|
||
|
abnt.doi.expand.to.url 'abnt.doi :=
|
||
|
#3 'abnt.etal.cite :=
|
||
|
#3 'abnt.etal.list :=
|
||
|
"et al." 'abnt.etal.text :=
|
||
|
#0 'abnt.full.initials :=
|
||
|
#0 'abnt.last.names := %#0 abnt-style, #1 bibtex-style
|
||
|
#1 'abnt.ldots.type := %#0 use nothing, #1 use \ldots, #2 use $\ldots$, 3# use {...}
|
||
|
#0 'abnt.missing.year := %#0 "void"; #1 "[s.d.]"
|
||
|
#0 'repeated.author :=
|
||
|
#0 'abnt.repeated.author.omit :=
|
||
|
#0 'abnt.repeated.title.omit :=
|
||
|
#1 'abnt.refinfo :=
|
||
|
#0 'abnt.show.options := % #0 "no"; #1 "warn"; #2 "list"
|
||
|
#0 'abnt.thesis.year := % #0 "final"; #1 "title"; #2 "both"
|
||
|
#0 'abnt.title.command := % #0 "no"; #1 "yes"
|
||
|
#0 'abnt.url.package := % #0 "none"'; #2 "url"; #2 "hyperref"
|
||
|
#0 'abnt.verbatim.entry :=
|
||
|
}
|
||
|
FUNCTION {set.default.iso.variables}
|
||
|
{ #0 'iso.abbreviation := % #0 ABNT-style; #1 ISO-style
|
||
|
#0 'iso.author.punctuation := % #0 ABNT (Smith, A. B.); #1 ISO (Smith, AB)
|
||
|
#0 'iso.date.place := % #0 ABNT-sty; #1 ISO-style
|
||
|
}
|
||
|
EXECUTE {set.default.abnt.variables}
|
||
|
EXECUTE {set.default.iso.variables}
|
||
|
FUNCTION {process.early.abnt.options}
|
||
|
{%here we intercept all entries which need priority handling
|
||
|
%note: we cannot use type$ at this point
|
||
|
abnt-and-type missing$
|
||
|
abnt-experimental missing$ and
|
||
|
abnt-etal-cite missing$ and
|
||
|
abnt-etal-text missing$ and
|
||
|
abnt-ldots-type missing$ and
|
||
|
abnt-cite-style missing$ and
|
||
|
abnt-no-etal-label missing$ and
|
||
|
abnt-title-command missing$ and
|
||
|
'skip$ {call.type$} if$
|
||
|
}
|
||
|
ITERATE {process.early.abnt.options}
|
||
|
FUNCTION {search.reprinted}
|
||
|
{ reprinted-from missing$ 'skip$
|
||
|
{"\nocite{" reprinted-from * "}" * write$ newline$
|
||
|
}
|
||
|
if$
|
||
|
}
|
||
|
ITERATE {search.reprinted}
|
||
|
FUNCTION {abntreprintinfo}
|
||
|
{"\providecommand{\abntreprintinfo}[1]{%" write$ newline$
|
||
|
" \citeonline{#1}}" write$ newline$}
|
||
|
EXECUTE {abntreprintinfo}
|
||
|
ITERATE {presort}
|
||
|
SORT
|
||
|
STRINGS { last.label next.extra}
|
||
|
INTEGERS { 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 :=
|
||
|
year.label extra.label * 'year.label :=
|
||
|
extra.label 'next.extra :=
|
||
|
label "}" * 'label :=
|
||
|
}
|
||
|
ITERATE {forward.pass}
|
||
|
REVERSE {reverse.pass}
|
||
|
FUNCTION {begin.bib}
|
||
|
{
|
||
|
abnt.alf
|
||
|
{"\setlength{\labelsep}{0pt}" write$}
|
||
|
'skip$
|
||
|
if$
|
||
|
"\begin{thebibliography}{}" write$ newline$
|
||
|
preamble$ empty$
|
||
|
'skip$
|
||
|
{ preamble$ write$ newline$ }
|
||
|
if$
|
||
|
abnt.refinfo #1 =
|
||
|
{"\providecommand{\abntrefinfo}[3]{}" write$ newline$}
|
||
|
'skip$ if$
|
||
|
"\providecommand{\abntbstabout}[1]{}" write$ newline$
|
||
|
abnt.title.command
|
||
|
{"\providecommand{\bibtextitlecommand}[2]{#2}" write$ newline$}
|
||
|
'skip$ if$
|
||
|
"\abntbstabout{" abnt.bst.revision * "}" * write$ newline$
|
||
|
%Se você não usa abntcite e precisa que a margem direita não
|
||
|
%seja justificada, descomente a linha seguinte
|
||
|
%alternativamente coloque \bibliography{abnt-nrj,...
|
||
|
% "\setlength{\rightskip}{0pt plus 2cm}" write$ newline$
|
||
|
}
|
||
|
EXECUTE {begin.bib}
|
||
|
EXECUTE {init.state.consts}
|
||
|
FUNCTION {process.entry}{call.type$}
|
||
|
ITERATE {process.entry}
|
||
|
FUNCTION {end.bib}
|
||
|
{ newline$ "\end{thebibliography}" write$ newline$
|
||
|
}
|
||
|
EXECUTE {end.bib}
|
||
|
FUNCTION {apresentacao}
|
||
|
{ "+---------------------------------------------------------+"
|
||
|
"| http://www.abntex.net.br/ |"
|
||
|
"| Em caso de dúvidas ou problemas com este estilo procure |"
|
||
|
abnt.alf
|
||
|
{"| Estilo bibliográfico abntex2-alf.bst versão " abnt.bst.revision * " |" *}
|
||
|
{"| Estilo bibliográfico abntex2-num.bst versão " abnt.bst.revision * " |" *}
|
||
|
if$
|
||
|
"+---------------------------------------------------------+"
|
||
|
stack$
|
||
|
}
|
||
|
EXECUTE{apresentacao}
|